SHACAL-2 şifreleri nasıl hesaplanır?
Farklı hash işlevlerinin (şu anda SHA) temelindeki işlevselliği öğrenmeye çalışıyorum ve bununla ilgili bir Stanford videosu izledikten sonra bile oldukça takılıp kaldım.
Bir hashing yöntemi, David Meyers işlevi ve SHACAL-2 blok şifreleri ile Merkel-Damgård yapısını kullanmaktır.
Anladığım kadarıyla MD, önceki blok değerini veya IV'ü (karma işlevi veya özel bir tuz anahtarı tarafından tanımlanan başlangıç vektörü) içeren 64 bitlik bloklardan oluşan bir zincire bölünmüş mesajdır. Mevcut blok değeri ve bazı x bit anahtarları ile birlikte blok değeri veya IV, SHACAL-2 işlevinden geçtikten sonra yeni şifreden geçer.
Bu doğru anlaşıldı mı? Öyleyse: SHACAL işlevinin içinde ne olur? Matematik nedir?
Bunu buldum ama sorumu gerçekten cevaplamıyor: SHA-256'da SHACAL
Yanıtlar
MD yapısı bir sıkıştırma işlevi kullanır $C$ ($F$ şekillerde) öyle ki iki girişi vardır.
$$h_i = C(h_{i-1},m_i)$$
ve ilk $h_{-1} = IV$ ve son $H = h_{2^k-1}$ hash değeridir.
Sıkıştırma işlevi, blok şifresine gönderilen mesajın önceki karma değer olduğu ve anahtarın mesaj olduğu bir blok şifresi kullanabilir. $h_i = E_{m}(h_{i-1})$
Sıkıştırma işlevi için bir blok şifreleme kullanmanın ilk açıklaması Merkle'nin 11. sayfadaki tezinde mevcuttur . Bu yapı, mevcut blok şifrenin doğrudan zincirlenmesi nedeniyle tamamen güvensizdir ve sahip olduğu gösterilebilir.$\mathcal{O}(2^{n/2})$ yerine ikinci ön görüntü direnci $\mathcal{O}(2^{n})$.
AES ve DES gibi bazı blok şifrelerde ilgili anahtar saldırıların olmasını istemiyoruz . Anahtarlar rastgele tek tip olarak seçildiğinden, bu şifreleme için bir sorun yaratmaz, ancak ilgili anahtarlar karma işlevine saldırmak için kullanılabilir. Bu, Mannik ve Preenel tarafından kapsamlı bir şekilde tartışılmaktadır.
Sıkıştırma işlevlerine [1] yapılan çarpışma saldırıları nedeniyle büyük girdiler ve dolayısıyla işlenecek daha fazla tur istiyoruz. Böylece tasarımcılar mevcut olanları kullanmak yerine MD yapıları için yeni bir blok şifresi oluşturur. SHA-1 için SHACAL ve SHA-2 için SHACAL-2 olarak adlandırılır.
Bölme değeri sıkıştırma işlevine bağlıdır, MD5, SHA-1 ve SHA256, 512 bit mesaj blokları kullanır, SHA512 1024 bit mesaj blokları kullanır. Mesajlar blok boyutunun katları olacak şekilde doldurulur ve mesaj boyutu sonunda kodlanır.
Örneğin NIST FIPS 180-4'te SHA-512 dolgusu
Mesajın uzunluğunun, $M$, dır-dir $\ell$bitler. Biti
1
mesajın sonuna ekleyin , ardından$k$ sıfır bit, nerede $k$ denklemin en küçük, negatif olmayan çözümüdür $$\ell + 1 + k \equiv 896 \bmod 1024$$ Ardından sayıya eşit olan 128 bitlik bloğu ekleyin $\ell$ ikili gösterim kullanılarak ifade edilir
Keyfi blok boyutu için biçimlendirin $b$ ve $d$-bit kodlanmış mesaj boyutu (SHA-1 ve SHA256 için 64, SHA512 için 128.
$$\ell + 1 + k \equiv b-d \bmod b$$
Dolayısıyla tasarım kriterleri, çok sayıda tur içeren bir blok şifrelemeye sahip, SHACAL 80'e, SHA-256'da 64'e ve SHA512'de 80 tura sahipken yuvarlak işlevi basit tutuyor.
Ve blok şifresi, tek yönlü bir sıkıştırma fonksiyonu oluşturmak için Davies-Meyer olarak kullanılır .
Örneğin, SHA256 için matematik
- $\operatorname{Ch}(E,F,G) = (E \land F) \oplus (\neg E \land G)$
- $\operatorname{Ma}(A,B,C) = (A \land B) \oplus (A \land C) \oplus (B \land C)$
- $\Sigma_0(A) = (A\!\ggg\!2) \oplus (A\!\ggg\!13) \oplus (A\!\ggg\!22)$
- $\Sigma_1(E) = (E\!\ggg\!6) \oplus (E\!\ggg\!11) \oplus (E\!\ggg\!25)$
Bitsel döndürme, SHA-512 için farklı sabitler kullanır. Verilen numaralar SHA-256 içindir.
Kırmızı$\boxplus$ anlamına gelmek $ c = a + b \mod 2^{32}$yani modulo ilavesi.
Gördüğümüz gibi, CPU'ların kaldırabileceği basit işlemler, hafif yuvarlak işlev, biraz bozulmuş dengesiz Feistel yapısı.
Ve Tiny Encryption algoritmasından , basit turların bile 32 turdan sonra güvenli olabileceğini öğrendik .