2. TARİHÇE
• 2006 Yılında NIST, yeni bir karma standart SHA 3 oluşturmak için NIST karma işlev yarışması
düzenleyeceğini duyurdu.
• 2008 ve 2009 yıllarında Keccak adaylardan biri olarak seçildi ve2010 yılında son tura yükseldi.
• 2012 Yılında Keccak, SHA-3 yarışmasının galibi seçildi.
• 2015 Yılında NIST, SHA-3'ün karma bir standart haline geldiğini açıkladı.
3. SHA-3
NIST, SHA-2'ye yapılan önemli bir saldırı ortaya çıkmadığı için SHA-2'yi SHA-3 ile değiştirmek istemedi.
SHA-1'e yapılan teorik saldırı olan MD-5 ve SHA-0 algoritmalarının kırılması nedeniyle NIST, SHA-2'den farklı
olarak alternatif olarak güvenli bir karma bulmaya çalıştı ve bu da SHA-3 algoritması oldu.
5. SÜNGER YAPISI
SHA-3 algoritmasının temeli sünger yapısı olarak adlandırılan yapıya dayanmaktadır.
Sünger Yapısı:
• F: Her giriş bloğunu işlemek için kullanılan fonksiyon.
• R: Bit hızı olarak adlandırılan giriş bloğunun bit boyutu.
• Pad: Dolgu algoritması
6. SÜNGERYAPISI
N bitlik bir giriş, her biri r bitinin k sabit boyutlu
bloklarına bölünecektir.
Örneğin:
Input = P0||P1||...||Pk−1
where Pi is r-bit, Input is n-bit, and so n = r × k
7. SÜNGER YAPISI
SHA-3'te her zaman bir dolgu eklenir, n mod r = 0 durumunda, bir r bit dolgu bloğu eklenir.
Sünger yapısında iki dolgu algoritması sağlanır.
• Basit Dolgu: Elde edilen r x k bit olacak şekilde M mesajına 10* ekler.
• Çok Oranlı Dolgu: Elde edilen r x k bit olacak şekilde M mesajına 10*1 ekler.
İşlemden sonra, Sünger işlevi Z0, Z1, blok dizisini oluşturur..., Çıkış olarak Zj−1, burada j, istenen çıkış l bit
ise (j − 1) × r <l ≤ j × r olacak şekilde çıkış bloklarının sayısıdır.
9. SÜNGER YAPISI
Sünger yapısının her yinelemesinde, sünger, tüm sıfırlara başlatılan b = r + c bitlerinin bir durum değişkeni s
üzerinde çalışır.
R'nin bit hızı olduğunu ve c'nin ulaşılabilir güvenlik seviyesi olan kapasite olarak adlandırılır.
Sünger yapısı iki aşamadan oluşmaktadır:
• Emici faz
• Sıkma fazı
10. SÜNGER YAPISI
SHA-3 için varsayılan değerlerde c=1024 r=576’dır ve dolayısıyla b= r+c ‘den b=1600 olur.
11. SHA-3Keccak-fFonksiyonu
- Her b-bit tamsayısı bijektif bir şekilde bir b-bit tamsayısına eşlenmektedir.
- Buradaki -f ikinci ismini almasının ardındaki olay, fonksiyon 2^b giriş değerlerini değiş tokuş(permüte)
etmektedir.
- Burada fonksiyon 𝑛𝑟 adet turdan oluşmaktadır. Her bir tur b = r + c bitlerinden oluşan girişe sahiptir.
Tur sayısı “l” parametresine bağlıdır:
- 𝑛𝑟 = 12 + 2𝑙 𝑏 = 25 ∗ 2𝑙
l= 0,1,2,3,4,5,6
12. SHA-3 Keccak-fFonksiyonu
- f-fonksiyonu az önce 2^b dediğimiz giriş değerleri alır.
Bunu s olarak ifade edersek;
- SHA-3 için bu state array 5*5*64 bitlik bir dizidir.
- A[x,y,z] = state arraydeki tek bir biti temsil etmektedir.
- L[x,y] = her girişin 64-bitlik şerit olduğu 5*5 matris.
- s ile a arasındaki ilişkiyi kurmak istersek;
- s[64(5y + x) + z] = a[x; y; z]
14. SHA-3 Keccak-fFonksiyonu
- f fonksiyonu girdi olarak 1600-bitlik
bir durum değişkeni alır ve bunu
64-bitlik şeritlerden oluşan 5*5’lik matrise
dönüştürür.
- Bu matris daha sonra her turu 5 adımdan
oluşan 24 işlem turundan geçer.
- Bir tura R dersek;
15. θ (theta) Adımı
- 11 bitin toplamı orijinal bit ile XOR’a girmektedir.
- ⊕ bitin solundaki 5 bitlik kolon
- ⊕ bitin sağındaki 5 bitlik kolon ve 1 adım önündeki bit
16. θ (theta) Adımı
- C[x] = 𝑖=0
4
𝐿[𝑥, 𝑖] olsun.
- 𝑦=0
4
𝑎[(𝑥 − 1), 𝑦, 𝑧] : Söz dizisinin solundaki XOR işlemi
- 𝑦=0
4
𝑎[(𝑥 + 1), 𝑦, (𝑧 − 1)] : Söz dizisinin sağındaki ve 1 pozisyon önündeki bit için XOR
işlemi
- Sonrasında ROT(C[x + 1], 1) kadar döndürülmesi
18. ρ (rho) ve π (pi) Adımları
- B[i,j] söz dizisi bit cinsinden ve A state array’den oluşturulmaktadır.
- r[x,y] ise döndürme sabitleri matrisi
- b=200 yani l=3 için ρ (rho)
19. ρ (rho) ve π (pi) Adımları
- Tek Bir Dilime Uygulanan π gösterimi
20. ρ (rho) ve π (pi) Adımları
- Pi ve rho adımlarını anlatacak olursak: A state arrayinin 25 şeridinin her birini
alırlar ki bu da w bitli sözcüklere karşılık gelmektedir ve sabit sayıda
konumda döndürürler (Rho Adımı). Sonrasında döndürülmüş olan şerit yeni B
dizisinde farklı bir konuma yerleştirilir (pi Adımı). (3,1) konumundaki şeridi
ele alacak olursak yani w-bit kelimesi A[3,1] demektir bu. Dönme sabitleri
tablosuna baktığımızda sözcük 55 bitlik konumlarla döndürülür. Döndürülen
sözcük daha sonra B[1, 2.3 + 3.1] = B[1,4] konumuna yerleştirilir. Buradaki 4
değeri mod 5 olduğu için elde edilir.
21. χ (chi) Adımı
- Yalnızca SHA-3 ‘ e ait bir non-linear mapping işlemidir.
- Chi adımında, önceki adımda hesaplanmış olan B dizisi manipüle edilir ve sonuç state array
A’ya yerleştirilir. Chi adımı şeritler(w-bit kelimeler) üzerinde çalışmaktadır.
- Burada B¯[i, j] değeri [i,j] konumundaki şeridin bit düzeyinde tümleyenini gösterir ve ∧, iki
işlenenin bit düzeyinde AND işlemidir.
- Diğer tüm adımlarda olduğu gibi, endeksler mod 5 alınmaktadır.
- İşlemi açıklayacak olursak, χ Adımlarının şeridi [x,y] konumundaki durumuyla, şeridin
[x+2,y] konumunun yine şeridin [x+1,y] konumuyla mantıksal AND işleminde sonra XOR
yapması olarak ifade edilebilir.
22. χ (chi) Adımı
Üst sıra B dizisinin beş şeridini temsil ederken, alt sıra A state arrayinin beş şeridini
göstermektedir.
23. ι (IOTA) Adımı
- Iota Adımı en basit adım olarak nitelendirilmektedir. A’nın [0,0] konumundaki şeridine
önceden tanımlı bir w-bit sabiti eklemektedir.
- Tur sabiti RC[i], yürütülmekte olan i turuna göre farklılık göstermektedir. SHA-3 için 𝑛𝑟 24
turdur.