SHA-2: Revizyonlar arasındaki fark
[kontrol edilmemiş revizyon] | [kontrol edilmiş revizyon] |
İçerik silindi İçerik eklendi
A.aycaacet (mesaj | katkılar) İcerik Etiketler: Mobil değişiklik Mobil ağ değişikliği |
A.aycaacet tarafından yapılan 18472540 sayılı değişiklik geri alınıyor. |
||
7. satır: | 7. satır: | ||
[[Kategori:Kriptografik algoritmalar]] |
[[Kategori:Kriptografik algoritmalar]] |
||
[[Kategori:Hash fonksiyonları]] |
[[Kategori:Hash fonksiyonları]] |
||
SHA-2 |
|||
SHA-2 (Güvenli Hash Algoritması 2), Birleşik Devletler Ulusal Güvenlik Ajansı (NSA) tarafından tasarlanan bir şifreleme hash fonksiyonları kümesidir. [3] Şifreleme hash fonksiyonları, dijital veriler üzerinde çalışan matematiksel işlemlerdir; Hesaplanmış "hash" (algoritmanın yürütülmesinden elde edilen çıktı) ile bilinen ve beklenen bir hash değeri karşılaştırılarak, bir kişi verilerin bütünlüğünü belirleyebilir. Örneğin, indirilen bir dosyanın hash değerini hesaplamak ve sonucu önceden yayınlanmış bir hash değeri sonucuyla karşılaştırmak, indirmenin değiştirildiğini veya müdahale edilip edilmediğini gösterebilir. [4] Şifreleme hash fonksiyonlarının önemli yönü çarpışma direncidir: kimse aynı hash değeri çıktısına sahip iki farklı giriş değeri bulamaz. SHA-2, öncülü SHA-1'den önemli değişiklikler içeriyor. SHA-2 ailesi, 224, 256, 384 veya 512 bit olan digest (hash değerler) ile altı hash fonksiyoninden oluşur: SHA-224, SHA-256, SHA-384, SHA-512, SHA-512/224, SHA -512/256. SHA-256 ve SHA-512 sırasıyla 32-bit ve 64-bit kelimelerle hesaplanan yeni hash fonksiyonlardır. Farklı kayma miktarları ve katkı sabitleri kullanıyorlar, ancak yapıları aksi takdirde hemen hemen aynıdır, yalnızca mermi sayıları farklıdır. SHA-224 ve SHA-384, ilk değerlerin farklı başlangıç değerleriyle hesaplanan kesilmiş versiyonlarıdır. SHA-512/224 ve SHA-512/256 da SHA-512'nin kesilmiş versiyonlarıdır, ancak başlangıç değerleri Federal Bilgi İşleme Standartları (FIPS) PUB 180-4'te açıklanan yöntem kullanılarak oluşturulmuştur. SHA-2 2001'de Ulusal Standartlar ve Teknoloji Enstitüsü (NIST) tarafından bir ABD federal standardı (FIPS) tarafından yayınlandı. SHA-2 algoritma ailesi, ABD patenti 6829355'de patentlenmiştir. [5] Amerika Birleşik Devletleri patenti telif ücretsiz lisansıyla yayımladı. [6] 2005 yılında, SHA-1 çarpışmalarını, daha önce düşündüğünden daha az adımla yaklaşık 2.000 kez bulma algoritması ortaya çıkmıştır. [7] 2017'de bir SHA-1 çarpışma örneği yayınlandı. [8] SHA-1 tarafından bırakılan güvenlik marjı, amaçlanandan daha zayıf ve kullanımı dijital imza gibi çarpışma direncine bağımlı olan uygulamalar için artık önerilmiyor. SHA-2, SHA-1 algoritmasına bir miktar benzerlik taşımasına rağmen, bu saldırılar SHA-2'ye başarılı bir şekilde genişletilmemiştir. Şu anda, en iyi halka açık saldırılar, aşağıdaki şifreleme analizi ve doğrulama bölümünde gösterildiği gibi, 52 tur SHA-256 veya 57 SHA-512 sürüşü için preimage direncini ve 46 tur SHA-256 için çarpışma direncini kırmaktadır. [1] [2] ]] |
|||
ÖZET STANDARTI |
|||
NIPS, FIPS PUB 180-2 yayınıyla SHA ailesinde üç ek hash fonksiyonu fonksiyonleri ekledi. Algoritmalar, toplu olarak SHA-2 olarak bilinir ve bunların uzunlukları (bit olarak) adlandırır: SHA-256, SHA-384 ve SHA-512. Algoritmalar ilk olarak 2001'de FIPS PUB 180-2 taslağı içinde yayınlandı ve bu arada kamuoyu incelemesi ve yorumları kabul edildi. Ağustos 2002'de, FIPS PUB 180-2, Nisan 1995'te piyasaya sürülen FIPS PUB 180-1'in yerini alan yeni Güvenli Hash Standardı oldu. Güncellenmiş standart, güncellenmiş teknik notasyonla orijinal SHA-1 algoritmasını içeriyordu; SHA-2 ailesinin iç işleyişleri. [9] Şubat 2004'te, iki anahtarlı Üçlü DES'nin anahtar uzunluğuyla eşleşecek şekilde tanımlanan ilave bir varyant olan SHA-224'ü belirterek, FIPS PUB 180-2 için bir değişiklik bildirimi yayınlandı. [10] Ekim 2008'de standart, değişiklik bildiriminde yer alan SHA-224 dahil olmak üzere FIPS PUB 180-3'te güncellendi, ancak aksi takdirde standartta köklü değişiklikler yapılmadı. Standart güncelleme için birincil motivasyon, hash algoritmalarla ilgili güvenlik bilgilerini ve Özel Yayınlar 800-107 ve 800-57'ye yönelik kullanım önerilerini yerleştirmekti. [11] [12] [13] Ayrıntılı test verileri ve örnek ileti özetleri de standarttan kaldırılmış ve ayrı belgeler olarak sunulmuştur. [14] Ocak 2011'de NIST, 2013 yılının sonuna kadar federal hükümet kullanımına izin verebilen 80 bit'lik (SHA-1 tarafından sağlanan) minimum güvenlikten 112 bitlik bir güvenlikle (SHA tarafından sağlanan) bir değişiklik belirtti. SP800-131A yayınladı -2) bundan sonra minimum gereksinim olanı ve yayın tarihinden itibaren önerilen güvenlik seviyesidir. [15] Mart 2012'de standart, SHA-512/224 ve SHA-512/256 hash fonksiyonlerini ekleyerek ve SHA-512'nin kesik sürümleri için başlangıç değerlerini üretmek için bir yöntem açıklayan FIPS PUB 180-4'te güncellendi. Buna ek olarak, hash verilerden önce girdi verilerini doldurma konusunda bir kısıtlama kaldırıldı; hash verilerin, gerçek zamanlı bir video veya ses yayını gibi eşzamanlı olarak içerik üretme ile eşzamanlı olarak hesaplanmasına izin verilmektedir. Nihai veri bloğunun doldurulması hala hash değeri, çıktıdan önce yapılmalıdır. [16] Temmuz 2012'de NIST, kriptografik anahtar yönetimi için rehberlik sağlayan SP800-57'yi revize etti. Yayın, 2013'ten sonra 112 bit'den daha düşük bir hash güvenliği olan dijital imzaların oluşturulmasını yasaklıyor. 2007'den önceki önceki gözden geçirme, kesimin 2010'un sonu olacağını belirtti. [13] Ağustos 2012'de NIST aynı şekilde SP800-107'yi revize etti. [12] NIST hash fonksiyonu yarışması 2012'de SHA-3 yeni hash fonksiyonunu seçti. [17] SHA-3 algoritması SHA-2'den türetilemez. |
|||
UYGULAMA |
|||
SHA-2 hash fonksiyonu, TLS ve SSL, PGP, SSH, S / MIME ve IPSec de dahil olmak üzere yaygın olarak kullanılan güvenlik uygulamalarında ve protokollerde uygulanmaktadır. SHA-256, Debian yazılım paketlerini [18] ve DKIM mesaj imzalama standardında kimlik doğrulama sürecinde yer alır; SHA-512, Ruanda soykırımı Uluslararası Ceza Mahkemesinden arşiv videosunun kimliğini doğrulayan bir sistemin parçasıdır. [19] DNSSEC'de SHA-256 ve SHA-512 kullanımı önerilmiştir. [20] Unix ve Linux üreticileri, güvenli şifre hash değeri için 256 ve 512 bit SHA-2'yi kullanmaya yöneliyor. [21] Bitcoin gibi birkaç kripto para birimi işlemleri doğrulamak ve istihkam kanıtını veya hissenin kanıtını hesaplamak için SHA-256 kullanır. ASIC SHA-2 hızlandırıcı yongalarının yükselişi, kripto tabanlı çalışma kanıtı şemalarının kullanılmasına yol açtı. SHA-1 ve SHA-2 hassas olmayan sınıflandırılmış bilgilerin korunması için diğer şifreleme algoritmaları ve protokolleri dahil olmak üzere bazı ABD Hükümeti uygulamalarında kullanılmak üzere yasalarca gerekli olan güvenli hash algoritmalarıdır. FIPS PUB 180-1, özel ve ticari kuruluşlar tarafından SHA-1'in benimsenmesini ve kullanılmasını da teşvik etti. SHA-1 hükümet kullanımlarının çoğunda artık kullanımdan kalkmıştır; ABD Ulusal Standartlar ve Teknoloji Enstitüsü "Federal ajanslar, SHA-1'i pratik olarak en kısa sürede çarpışma direnci gerektiren uygulamalar için kullanmayı bırakmalı ve 2010'dan sonra bu uygulamalarda SHA-2 ailesi hash fonksiyonları kullanmalıdır" diyor (Orijinal vurgu). [22] NIST, ABD devlet kurumlarının 2010'dan sonra SHA-1 kullanımlarını durdurması gerektiği yönünde [23] SHA-1'den göçü hızlandırmayı umuyordu. SHA-2 fonksiyonları başlangıçta, SHA-1'den daha iyi güvenlik olmasına rağmen hızlı bir şekilde uygulanmadı. Nedenleri arasında, Windows XP SP2 veya daha üstü [24] çalıştıran sistemlerde SHA-2 için eksiklik ve SHA-1 çarpışmaları henüz bulunmadığından acil olarak algılanamamaları olabilir. Google Chrome ekibi, web tarayıcısının 2014'ün sonlarından 2015'in başlarına kadar bir süre boyunca SHA-1'e bağlı TLS sertifikalarını kademeli olarak reddetmesini planlayan bir plan yaptığını duyurdu. [25] [26] [27] Benzer şekilde Microsoft, İnternet Explorer ve Edge'in Şubat 2017'den itibaren genel SHA-1 imzalı TLS sertifikalarını onaylamayacağını açıkladı [28]. |
|||
ŞİFRELEME ANALİZi VE DOĞRULAMA |
|||
L, ileti özet akışındaki bitlerin sayısı olduğu bir hash fonksiyon için belirli bir ileti özetine karşılık gelen bir ileti bulmak daima 2L değerlendirmelerinde brute force araması kullanılarak yapılabilir. Buna bir pre-image saldırısı denir ve L'ye ve belirli bilgi işlem ortamına bağlı olarak pratik olmayabilir veya olmayabilir. Aynı mesaj özetini üreten ve çarpışma olarak bilinen iki farklı mesaj bulma ikinci kriter, doğum günü paradoxu kullanan ortalama sadece 2L / 2 değerlendirmeyi gerektirir. Şifre saklama gibi şifreleme hashları kullanan bazı uygulamalar yalnızca bir çarpışma saldırısından en az etkilenir. Belirli bir hesap için çalışan bir şifrenin oluşturulması, pre-image atağının yanı sıra önemsiz olabilen veya olmayabilecek orijinal şifrenin hash değerine (genellikle gölge dosyasında) erişilmesini gerektirir. Ters çevrilen şifre şifrelemesi (ör. Bir kullanıcının hesabına karşı başka bir yerde denemek için bir şifre elde etmek), saldırılar tarafından mümkün değildir. (Bununla birlikte, güvenli parola hash değeri bile zayıf parolaları brute force saldırılarını engelleyemez.) Belge imzalamada, bir saldırgan mevcut bir belgenin imzasını basitçe taklit edemez; saldırganın zararsız ve zarar verici bir çift belge üretmesi ve gizli anahtar sahibinin zararsız belgeyi imzalamasını istemek gerekir. Bunun mümkün olduğu pratik koşullar vardır; 2008'in sonuna kadar, yaygın olarak kullanılan web tarayıcıları tarafından kabul edilecek bir MD5 çarpışması kullanarak sahte SSL sertifikaları oluşturmak mümkündü. [29] SHA-3 yarışması sırasında kriptografik hash analizine olan ilginin artması, SHA-2 ailesinde birkaç yeni saldırı ortaya çıkardı; bunların en iyileri aşağıdaki tabloda verilmiştir. Sadece çarpışma saldırıları pratik bir karmaşıklığa sahiptir; Saldırıların hiçbiri tam tur hash fonksiyonuna kadar uzanmaz. FSE 2012'de Sony araştırmacıları, sözde çarpışma saldırılarının, SHA-256 üzerinde 52 tur ve SHAR-512 üzerinde 57 turda uzatılabileceğini düşündüren bir sunum yaptılar. |
|||
Yayınlanan |
|||
Yıl |
|||
Saldırı Metodu |
|||
Saldırı |
|||
Varyant |
|||
Yuvarlar |
|||
Karmaşıklık |
|||
Karşı Yeni Çarpışma Saldırıları 24 adete kadar SHA-2'ye kadar [31][31] |
|||
2008 |
|||
Deterministik |
|||
Çarpışma |
|||
SHA-256 |
|||
24/64 |
|||
228.5 |
|||
SHA-512 |
|||
24/80 |
|||
232.5 |
|||
Adım azaltılmış SHA-2 için ön imgeler [32] |
|||
2009 |
|||
Ortak noktada buluşmak |
|||
Ön imge |
|||
SHA-256 |
|||
42/64 |
|||
2251.7 |
|||
43/64 |
|||
2254.9 |
|||
SHA-512 |
|||
42/80 |
|||
2502.3 |
|||
46/80 |
|||
2511.5 |
|||
İleri düzey buluşma öncesi saldırı önleme saldırıları [33] |
|||
2010 |
|||
Ortak noktada buluşmak |
|||
Ön imge |
|||
SHA-256 |
|||
42/64 |
|||
2248.4 |
|||
SHA-512 |
|||
42/80 |
|||
2494.6 |
|||
İndirgenmiş SHA-256 Üzerinde Yüksek Düzeyli Diferansiyel Saldırı [2] |
|||
2011 |
|||
Diferansiyel |
|||
Sözde çarpışma |
|||
SHA-256 |
|||
46/64 |
|||
2178 |
|||
33/64 |
|||
246 |
|||
Ön imgeler için çiftler: Skein-512 ve SHA-2 ailesine saldırılar [1] |
|||
2011 |
|||
Çiftler |
|||
Ön imge |
|||
SHA-256 |
|||
45/64 |
|||
2255.5 |
|||
SHA-512 |
|||
50/80 |
|||
2511.5 |
|||
Sözde ön imge |
|||
SHA-256 |
|||
52/64 |
|||
2255 |
|||
SHA-512 |
|||
57/80 |
|||
2511 |
|||
Yerel Çatışmaları Geliştirme: Azaltılmış SHA-256'ya Yeni Saldırılar [34] |
|||
2013 |
|||
Diferansiyel |
|||
Çarpışma |
|||
SHA-256 |
|||
31/64 |
|||
265.5 |
|||
Sözde çarpışma |
|||
SHA-256 |
|||
38/64 |
|||
237 |
|||
SHA-512 Uygulamaları ile Diferansiyel Çarpışma Araştırmasında Dallanma Sezgiselleri |
|||
2014 |
|||
Sezgisel Diferansiyel |
|||
Sözde çarpışma |
|||
SHA-512 |
|||
38/80 |
|||
240.5 |
|||
SHA-512/224 ve SHA-512 / 256'nın analizi [36] |
|||
2016 |
|||
Diferansiyel |
|||
Çarpışma |
|||
SHA-256 |
|||
28/64 |
|||
practical |
|||
SHA-512 |
|||
27/80 |
|||
practical |
|||
Sözde çarpışma |
|||
SHA-512 |
|||
39/80 |
|||
practical |
|||
RESMİ DOĞRULAMA |
|||
Tüm FIPS onaylı güvenlik fonksiyonlarının uygulamaları, Ulusal Standartlar ve Teknikler Enstitüsü (NIST) ve Communications Security Establishment (CSE) ortaklaşa yürütülen CMVP programı aracılığıyla resmen doğrulanabilir. Gayrı resmi doğrulama için, çok sayıda test vektörü üretmek için bir paket, NIST sitesinde indirilebilir; Bununla birlikte, sonuçta ortaya çıkan doğrulama, bazı uygulamalar için kanun tarafından gerekli görülen resmi CMVP doğrulamasının yerine geçmez. Aralık 2013'ten itibaren, SHA-256'nın 900'den fazla geçerliliği olan ve yalnızca 5 tanesi, her iki türe de destek olmakla birlikte sekiz kat fazla olmayan bir bit uzunluğundaki mesajları işleyebilecek durumda olan 13'den fazla geçerliliği vardır (bkz. SHS Doğrulama Listesi). |
|||
TEST VEKTÖRLERİ |
|||
Boş bir dizenin hash değerleri (yani, sıfır uzunluklu bir girdi metni). |
|||
SHA224("") |
|||
0x d14a028c2a3a2bc9476102bb288234c415a2b01f828ea62ac5b3e42f |
|||
SHA256("") |
|||
0x e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855 |
|||
SHA384("") |
|||
0x 38b060a751ac96384cd9327eb1b1e36a21fdb71114be07434c0cc7bf63f6e1da274edebfe76f65fbd51ad2f14898b95b |
|||
SHA512("") |
|||
0x cf83e1357eefb8bdf1542850d66d8007d620e4050b5715dc83f4a921d36ce9ce47d0d13c5d85f2b0ff8318d2877eec2f63b931bd47417a81a538327af927da3e |
|||
SHA512/224("") |
|||
0x 6ed0dd02806fa89e25de060c19d3ac86cabb87d6a0ddd05c333b84f4 |
|||
SHA512/256("") |
|||
0x c672b8d1ef56ed28ab87c3622c5114069bdd3ad7b8f9737498d0c01ecef0967a |
|||
Mesajdaki ufak bir değişiklik bile (çok büyük olasılıkla), çığ etkisi nedeniyle çoğunlukla farklı hash sonucunu doğuracaktır. Örneğin, bu cümlenin sonuna bir periyot eklemek hash bitlerinin neredeyse yarısını (224'ün 111'ü) değiştirir: |
|||
SHA224("The quick brown fox jumps over the lazy dog") |
|||
0x 730e109bd7a8a32b1cb9d9a09aa2325d2430587ddbc0c38bad911525 |
|||
SHA224("The quick brown fox jumps over the lazy dog.") |
|||
0x 619cba8e8e05826e9b8c519c0a5c68f4fb653e8a3d8aa04bb2c8cd4c |
|||
SÖZDE KOD |
|||
SHA-256 algoritması için sözde kod aşağıdaki gibidir. W [16..63] kelimelerinin bitleri arasındaki karıştırmada SHA-1'e kıyasla büyük bir artış olduğuna dikkat edin. |
|||
Not 1: Tüm değişkenler 32 bitlik işaretlenmeyen tamsayılardır ve ekleme modulo 232 olarak hesaplanır |
|||
Not 2: Her tur için bir yuvarlak sabit k [i] ve mesaj planlaması dizisinde w [i], 0 ≤ i ≤ 63 bir giriş var |
|||
Not 3: Sıkıştırma fonksiyoni, a ile h |
|||
Not 4: Bu sözde kodda sabitler ifade edilirken big-endian kongresi kullanılır, |
|||
Ve mesaj blok verilerini bayttan kelimelere ayrıştırırken, örneğin, |
|||
Doldurma işleminden sonra "abc" giriş mesajının ilk kelimesi 0x61626380'dir |
|||
Hash değerlerini başlatır: |
|||
(Ilk 8 basamağın 2..19'unun kareköklerinin kesirli kısımlarının ilk 32 biti): |
|||
H0: = 0x6a09e667 |
|||
H1: = 0xbb67ae85 |
|||
H2: = 0x3c6ef372 |
|||
H3: = 0xa54ff53a |
|||
H4: = 0x510e527f |
|||
H5: = 0x9b05688c |
|||
H6: = 0x1f83d9ab |
|||
H7: = 0x5be0cd19 |
|||
Yuvarlak sabitler dizisini başlatır: |
|||
(Ilk 64 asal 2..311'in küp köklerinin kesirli kısımlarının ilk 32 biti): |
|||
K [0..63]: = |
|||
0x428a2f98, 0x71374491, 0xb5c0fbcf, 0xe9b5dba5, 0x3956c25b, 0x59f111f1, 0x923f82a4, 0xab1c5ed5, |
|||
0xd807aa98, 0x12835b01, 0x243185be, 0x550c7dc3, 0x72be5d74, 0x80deb1fe, 0x9bdc06a7, 0xc19bf174, |
|||
0xe49b69c1, 0xefbe4786, 0x0fc19dc6, 0x240ca1cc, 0x2de92c6f, 0x4a7484aa, 0x5cb0a9dc, 0x76f988da, |
|||
0x983e5152, 0xa831c66d, 0xb00327c8, 0xbf597fc7, 0xc6e00bf3, 0xd5a79147, 0x06ca6351, 0x14292967, |
|||
0x27b70a85, 0x2e1b2138, 0x4d2c6dfc, 0x53380d13, 0x650a7354, 0x766a0abb, 0x81c2c92e, 0x92722c85, |
|||
0xa2bfe8a1, 0xa81a664b, 0xc24b8b70, 0xc76c51a3, 0xd192e819, 0xd6990624, 0xf40e3585, 0x106aa070, |
|||
0x19a4c116, 0x1e376c08, 0x2748774c, 0x34b0bcb5, 0x391c0cb3, 0x4ed8aa4a, 0x5b9cca4f, 0x682e6ff3, |
|||
0x748f82ee, 0x78a5636f, 0x84c87814, 0x8cc70208, 0x90bekfffa, 0xa4506ceb, 0xbef9a3f7, 0xc67178f2 |
|||
Ön-işleme: |
|||
Uzunluk L bitlerinin orijinal mesajıyla başlayın |
|||
Tek bir '1' biti ekleyin |
|||
K '0' bitlerini ekleyin, burada K, L + 1 + K + 64'ün 512'nin bir katı olduğu şekilde> = 0 minimum sayıdır |
|||
L'yi 64 bitlik bir big-endian tamsayı olarak ekleyin, toplam işlem sonrası uzunluğu 512 bitin katına çıkarır |
|||
İletiyi ardışık 512-bit parçalar halinde işleyin: |
|||
Iletiyi 512-bit parçalar halinde kesme |
|||
Her parça için |
|||
64 girişli ileti dizisi dizisi w [0..63] 32 bitlik sözcükler oluştur |
|||
(W [0..63] 'deki başlangıç değerleri önemli değil, pek çok uygulama bunları sıfırlar) |
|||
Parçayı ilk 16 kelimeye w [0..15] mesaj planlaması dizisine kopyala |
|||
İlk 16 kelimeyi, mesaj planı dizisinin kalan 48 kelimeye w [16..63] uzatın: |
|||
I için 16'dan 63'e |
|||
S0: = (w [i-15] sağa döner 7) xor (w [i-15] sağa döner 18) xor (w [i-15] haklar değiştirme 3) |
|||
S1: = (w [i-2] sağa döndür 17) xor (w [i-2] sağa döndür 19) xor (w [i-2] haklar değiştirme 10) |
|||
W [i]: = w [i-16] + s0 + w [i-7] + s1 |
|||
Çalışma değişkenlerini geçerli hash değere başlat: |
|||
A: = h0 |
|||
B: = h1 |
|||
C: = h2 |
|||
D: = h3 |
|||
E: = h4 |
|||
F: = h5 |
|||
G: = h6 |
|||
H: = h7 |
|||
Sıkıştırma fonksiyoni ana döngü: |
|||
I için 0'dan 63'e |
|||
S1: = (e sağ sinyal 6) xor (e sağ sinyali 11) xor (e sağ sinyal 25) |
|||
Ch: = (e ve f) xor ((e değil) ve g) |
|||
Temp1: = h + S1 + ch + k [i] + w [i] |
|||
S0: = (sağa dönüş 2) xor (sağa dönüş 13) xor (sağ rota 22) |
|||
Maj: = (a ve b) xor (a ve c) xor (b ve c) |
|||
Temp2: = S0 + maj |
|||
H: = g |
|||
G: = f |
|||
F: = e |
|||
E: = d + temp1 |
|||
D: = c |
|||
C: = b |
|||
B: = a |
|||
A: = temp1 + temp2 |
|||
Sıkıştırılmış parçayı geçerli hash değerine ekleyin: |
|||
H0: = h0 + a |
|||
H1: = h1 + b |
|||
H2: = h2 + c |
|||
H3: = h3 + d |
|||
H4: = h4 + e |
|||
H5: = h5 + f |
|||
H6: = h6 + g |
|||
H7: = h7 + saat |
|||
Son hash değerini (big-endian) üretin: |
|||
Digest: = hash: = h0 ekleme h1 ekleme h2 ekleme h3 ekleme h4 ekleme h5 ekleme h6 ekleme h7 |
|||
Ch ve maj değerlerinin hesaplanması, SHA-1 için anlatılanla aynı şekilde optimize edilebilir. SHA-224, SHA-256 ile aynıdır, ancak: Ilk hash değerleri h0 ile h7 farklıdır ve Çıktı h7 atlanarak oluşturulmuştur. |
|||
SHA-224 ilk hash değerlerini (büyük endian olarak): |
|||
(9'dan 16. asal kareler köklerinin kesirli kısımlarının ikinci 32 biti 23..53) |
|||
H [0..7]: = |
|||
0xc1059ed8, 0x367cd507, 0x3070dd17, 0xf70e5939, 0xffc00b31, 0x68581511, 0x64f98fa7, 0xbefa4fa4 |
|||
SHA-512 yapıda SHA-256 ile aynıdır, ancak: Mesaj 1024 bit parçalara bölünür, Ilk hash değerler ve yuvarlak sabitler 64 bit'e genişletilir, 64 yerine 80 tur var, Mesaj planlama dizisi w, 64 32-bit kelime yerine 80 64-bit kelime, Ileti dizisi dizisi w'yi genişletmek için, döngü 16 ile 63 arasında değil, 16'dan 79'a, Yuvarlak sabitler ilk 80 asal 2.409, Hesaplamalar için kullanılan kelime boyutu 64 bit uzunluğundadır, Mesajın bitişik olarak eklenmiş uzunluğu (ön işleme tabi tutulmadan önce), 128 bitlik bir big-endian tamsayıdır ve Kullanılan kaydırma ve döndürme miktarı farklıdır. |
|||
SHA-512 başlangıç özet değeri (büyük endian olarak): |
|||
h[0..7] := 0x6a09e667f3bcc908, 0xbb67ae8584caa73b, 0x3c6ef372fe94f82b, 0xa54ff53a5f1d36f1, |
|||
0x510e527fade682d1, 0x9b05688c2b3e6c1f, 0x1f83d9abfb41bd6b, 0x5be0cd19137e2179 |
|||
SHA-512 yuvarlama sabiti: |
|||
k[0..79] := [ 0x428a2f98d728ae22, 0x7137449123ef65cd, 0xb5c0fbcfec4d3b2f, 0xe9b5dba58189dbbc, 0x3956c25bf348b538, |
|||
0x59f111f1b605d019, 0x923f82a4af194f9b, 0xab1c5ed5da6d8118, 0xd807aa98a3030242, 0x12835b0145706fbe, |
|||
0x243185be4ee4b28c, 0x550c7dc3d5ffb4e2, 0x72be5d74f27b896f, 0x80deb1fe3b1696b1, 0x9bdc06a725c71235, |
|||
0xc19bf174cf692694, 0xe49b69c19ef14ad2, 0xefbe4786384f25e3, 0x0fc19dc68b8cd5b5, 0x240ca1cc77ac9c65, |
|||
0x2de92c6f592b0275, 0x4a7484aa6ea6e483, 0x5cb0a9dcbd41fbd4, 0x76f988da831153b5, 0x983e5152ee66dfab, |
|||
0xa831c66d2db43210, 0xb00327c898fb213f, 0xbf597fc7beef0ee4, 0xc6e00bf33da88fc2, 0xd5a79147930aa725, |
|||
0x06ca6351e003826f, 0x142929670a0e6e70, 0x27b70a8546d22ffc, 0x2e1b21385c26c926, 0x4d2c6dfc5ac42aed, |
|||
0x53380d139d95b3df, 0x650a73548baf63de, 0x766a0abb3c77b2a8, 0x81c2c92e47edaee6, 0x92722c851482353b, |
|||
0xa2bfe8a14cf10364, 0xa81a664bbc423001, 0xc24b8b70d0f89791, 0xc76c51a30654be30, 0xd192e819d6ef5218, |
|||
0xd69906245565a910, 0xf40e35855771202a, 0x106aa07032bbd1b8, 0x19a4c116b8d2d0c8, 0x1e376c085141ab53, |
|||
0x2748774cdf8eeb99, 0x34b0bcb5e19b48a8, 0x391c0cb3c5c95a63, 0x4ed8aa4ae3418acb, 0x5b9cca4f7763e373, |
|||
0x682e6ff3d6b2b8a3, 0x748f82ee5defb2fc, 0x78a5636f43172f60, 0x84c87814a1f0ab72, 0x8cc702081a6439ec, |
|||
0x90befffa23631e28, 0xa4506cebde82bde9, 0xbef9a3f7b2c67915, 0xc67178f2e372532b, 0xca273eceea26619c, |
|||
0xd186b8c721c0c207, 0xeada7dd6cde0eb1e, 0xf57d4f7fee6ed178, 0x06f067aa72176fba, 0x0a637dc5a2c898a6, |
|||
0x113f9804bef90dae, 0x1b710b35131c471b, 0x28db77f523047d84, 0x32caab7b40c72493, 0x3c9ebe0a15c9bebc, |
|||
0x431d67c49c100d4c, 0x4cc5d4becb3e42b6, 0x597f299cfc657e2a, 0x5fcb6fab3ad6faec, 0x6c44198c4a475817] |
|||
SHA-512 Sum & Sigma: |
|||
S0 := (a rightrotate 28) xor (a rightrotate 34) xor (a rightrotate 39) |
|||
S1 := (e rightrotate 14) xor (e rightrotate 18) xor (e rightrotate 41) |
|||
s0 := (w[i-15] rightrotate 1) xor (w[i-15] rightrotate 8) xor (w[i-15] rightshift 7) |
|||
s1 := (w[i-2] rightrotate 19) xor (w[i-2] rightrotate 61) xor (w[i-2] rightshift 6) |
|||
SHA-384, SHA-512 ile aynıdır, ancak: H0 ila h7 arasındaki ilk hash değerler farklıdır (9'dan 16. asallara kadar alınmıştır) ve Çıktı h6 ve h7 atlanarak oluşturulmuştur. |
|||
SHA-384 başlangıç özet değeri (büyük endian olarak): |
|||
h[0..7] := 0xcbbb9d5dc1059ed8, 0x629a292a367cd507, 0x9159015a3070dd17, 0x152fecd8f70e5939, |
|||
0x67332667ffc00b31, 0x8eb44a8768581511, 0xdb0c2e0d64f98fa7, 0x47b5481dbefa4fa4 |
|||
SHA-512 / t, SHA-512 ile aynıdır: Ilk hash değerleri h0 ila h7, SHA-512 / t IV üretim fonksiyonu tarafından verilir, Çıktı, t0 bitlerinde h0 ile h7 arasındaki birleşmeyi keserek oluşturulur, T 384'e eşit değildir, bunun yerine SHA-384 belirtildiği gibi kullanılmalıdır ve T değerleri 224 ve 256 özellikle onaylanmış olarak belirtilmektedir. SHA-512 / t IV nesil fonksiyonu, t'nin ondalık gösterimi ile değiştirilen ASCII "SHA-512 / t" dizesindeki bir değiştirilmiş SHA-512'yi değerlendirir. Modifiye edilmiş SHA-512, SHO-512 ile aynıdır, ancak başlangıç değerleri h0 ila h7 her biri 0xa5a5a5a5a5a5a5a5 onaltılık sabitiyle XOR yapılır. SHA-2 ailesi hash fonksiyonları için örnek C uygulaması RFC 6234'de bulunabilir. |
|||
SHA FONKSİYONUNUN KARŞILAŞTIRILMASI |
|||
Aşağıdaki tabloda iç durum, bir veri bloğunun her sıkıştırılmasından sonra "dahili hash toplam" anlamına gelir. |
|||
Daha fazla bilgi: Merkle-Damgård |
|||
Bitwise operations sütununda, "Rot" döndürme yok taşımayı, "Shr" ise sağ mantık kaymasını ifade eder. Bu algoritmaların hepsi, SHA-3 haricinde modüler ekleme uygular. Yukarıdaki performans numaraları, 64-bit modunda Linux altında 2.2 GHz hızında çalışan ve yalnızca genel karşılaştırma için kaba bir nokta olarak sunulan bir AMD Opteron 8354'ün tek parçalı bir uygulaması içindir. Modern işlemci mimarileri üzerinde daha ayrıntılı performans ölçümleri aşağıdaki tabloda verilmektedir. |
|||
'X86' etiketli performans numaraları, 64-bit işlemcilerde 32-bit kod kullanırken, 'x86-64' sayıları doğal 64-bit koddu. SHA-256, 32-bit hesaplamalar için tasarlanmışken x86 mimarisinde 64-bit işlemciler için optimize edilmiş koddan yararlanır. SHA-512'nin 32-bit uygulamaları 64-bit'lik eşyalarından önemli ölçüde daha yavaştır. Her iki algoritmanın farklı çıktı boyutlarına sahip varyantları, mesaj genişletme ve sıkıştırma fonksiyonları aynı olduğundan ve yalnızca başlangıç hash değerleri ve çıktı boyutları farklı olduğu için benzer şekilde performans gösterecektir. MD5 ve SHA-1'in en iyi uygulamaları, modern işlemcilerde bayt başına 4,5 ila 6 devir arasında performans gösterir. Deneme Illinois Chicago Üniversitesi tarafından 3.5 GHz saat hızında bir Intel Xeon E3-1275 V2 çalıştıran hidra8 sistemi ve 3.8 GHz hızında bir AMD A10-5800K çalışan hydra9 sisteminde test edildi. [ 43] Yukarıdaki bayt hızları için atıfta bulunulan döngüler, SUPERCOP şifreleme kıyaslama yazılımını kullanarak 4,096 baytlık bir mesajı sindiren bir algoritmanın medyan performansıdır. [44] MiB / s performansı tek bir çekirdekteki CPU saat hızından çıkarılır; Gerçek dünya performansı, çeşitli faktörlere bağlı olarak değişecektir. |
|||
Ayrıca bakınız; |
|||
Comparison of cryptographic hash functions |
|||
Hash-based message authentication code |
|||
Hashcash |
|||
International Association for Cryptologic Research (IACR) |
|||
sha1sum (sha224sum, sha256sum, sha384sum and sha512sum) commands |
|||
Trusted timestamping |
Sayfanın 15.02, 24 Nisan 2017 tarihindeki hâli
Bu madde hiçbir kaynak içermemektedir. (Bu şablonun nasıl ve ne zaman kaldırılması gerektiğini öğrenin) |
SHA-2, ABD Ulusal Güvenlik Ajansı (NSA) tarafından dizayn edilen bir kriptografik özet fonksiyonudur.
SHA-2'nin SHA'nın önceki versiyonlarından en büyük farkı farklı uzunluklarda çıktı verebilen ve farklı blok uzunluğu kullanan türlerinin bulunması. SHA ve SHA-1'de çıktı uzunluğunu metni 512 bitlik bloklara bölerek yapılan işlemler sonucu elde ediyordu. SHA-2'de ise metin 1024 ve 512 bitlik bloklara bölünebilerek, 224, 256, 384 ve 512 bitlik çıktı alınabiliyordu.