2. AES (Advanced Encryption
Standart)• AES (Advanced Encryption Standard; Gelişmiş Şifreleme
Standardı), elektronik verinin şifrelenmesi için sunulan bir
standarttır.
• Amerikan hükûmeti tarafından kabul edilen AES,
uluslararası alanda da defacto şifreleme (kripto) standardı
olarak kullanılmaktadır.
• DES'in (Data Encryption Standard - Veri Şifreleme
Standardı) yerini almıştır.
• 2010 yılı itibariyle en popüler simetrik
algoritmalardan biridir.
3. AES TARİHÇE
• AES, ABD Ulusal Standart ve Teknoloji Enstitüsü (NIST) tarafından 26 Kasım
2001 tarihinde US FIPS PUB 197 kodlu dokümanla duyurulmuştur.
• Standartlaştırma 5 yıl süren bir zaman zarfında tamamlanmıştır. Bu süreçte
AES adayı olarak 15 tasarım sunulmuş, tasarımlar güvenlik ve performans
açısından değerlendirildikten sonra en uygun tasarım standart şifreleme
algoritması olarak seçilmiştir. Federal hükûmetin Ticaret Müsteşarı'nın
onayının ardından 26 Mayıs 2002 tarihinde resmî olarak etkin hâle gelmiştir.
Hâlihazırda birçok şifreleme paketinde yer alan algoritma Amerikan Ulusal
Güvenlik Teşkilatı (NSA - National Security Agency) tarafından çok gizli
bilginin şifrelenmesinde kullanımı onaylanan kamuya açık ilk şifreleme
algoritmasıdır.
• AES ile standartlaştırılan algoritma, esas olarak
Vincent Rijmen ve Joan Daemen tarafından geliştirilen Rijndael algoritmasında
bazı değişiklikler yapılarak oluşturulmuştur. Rijndael, geliştiricilerin isimleri
kullanılar
elde edilen bir isimdir: RIJmen aNd DAEmen.
4. Algoritmanın Genel Yapısı
• AES, Değiştirme-Karıştırma (Substitution-Permutation) olarak
bilinen tasarım temeline dayanır.
• 128-bit girdi bloğu, 128, 192 ve 256 bit anahtar uzunluğuna
sahiptir.
• AES'in temel alındığı Rijndael ise 128-256 bit arasında 32'nin katı
olan girdi blok uzunluklarını ve 128 bitten uzun anahtar
uzunluklarını desteklemektedir. Dolayısıyla, standartlaşma
sürecinde anahtar ve girdi blok uzunluklarında kısıtlamaya
gidilmiştir.
• AES, durum (state) denilen 4x4 sütun-öncelikli bayt matrisi üzerinde
çalışır.
• Algoritma belirli sayıda tekrar eden girdi açık metni, çıktı şifreli
metne dönüştüren özdeş dönüşüm çevrimlerinden (round)
oluşmaktadır. Her çevrim, son çevrim hariç, dört adımdan
oluşmaktadır. Şifreli metni çözmek için bu çevrimler ters sıra ile
uygulanır.
5. • AES algoritması, 128 bit veri bloklarını 128, 192
veya 256 bit anahtar seçenekleri ile şifreleyen bir
blok şifre algoritmasıdır.
• Anahtar uzunluğu bit sayıları arasındaki
farklılık AES tur döngülerinin sayısını
değiştirmektedir.
Kelime Uzunluğu Tur Sayısı
AES-128 4 10
AES-192 6 12
AES-256 8 14
6. NEDEN AES-256
• Güvenlik
• Hızlı çalışması
• Daha Az Hafıza İle Çalışması
• Donanım ve Yazılıma Uygun Olabilmesi
• Esneklik
9. Döngü Yapısı
• Her döngü tersi alınabilir dönüşümler kullanır.
• Her döngü, son döngü hariç, 4 dönüşüm kullanır: SubBytes, ShiftRows, MixColumns ve
AddRoundKey.
• Son döngüde MixColumns dönüşümü göz ardı edilir.
• Her döngüde farklı anahtar materyali kullanılır.
• Farklı anahtar materyalleri anahtar planlama evresinde gelen anahtarlardır. Master
anahtardan farklı anahtarlar elde edilerek şifrede kullanılır.
• Deşifreleme kısmında ters dönüşümler kullanılır: InvSubByte, InvShiftRows,
InvMixColumns ve AddRounKey (tersi kendisidir- XOR işlemi).
10. CİPHER KEY(Şifreli Anahtar)
-Girişten gelen metin 128 bitlik
parçalara bölünür.
-Her parça durum matrisine
yerleştirilir.
-Durum matrisi oluşturulduktan
sonra, artık üzerinde tüm işlemler
yapılabilir duruma gelmiş demektir.
-Aynı şekilde önceden alınan 128
bitlik anahtarda bu durum matrisi
halinde işlem görür.
-Giriş metninin yazıldığı durum
matrisi ilk olarak anahtar ile toplanır.
11. • İlk işlem algoritmanın tek doğrusal olmayan işlemi olan bayt
değiştirmedir. Durum matrisinin her elemanı, değerleri önceden
hesaplanarak oluşturulmuş
• BaytDeğiştir adımında, matristeki her baytın değeri, 8 bitlik bir değişim
kutusu (substitution box) kullanılarak güncellenir.
• Bu adım algoritmanın doğrusallığını bozar ve doğrusal-olmayan
(non-linear) bir dönüşüm hâline gelmesini sağlar.
• Kullanılan değişim kutusu yüksek doğrusal-olmayanlık (nonlinearity)
özelliğine sahip olduğu bilinen, sonlu cisim GF (28) üzerinde ters
alma işleminden elde edilmiştir.
• Cebirsel özellikler kullanan saldırılara karşı dayanıklı olası için
sonlu cisim üzerinde ters alma işlemine tersi olan doğrusal bir
dönüşüm daha eklenmiştir.
• Ayrıca değişim kutusu herhangi bir sabit nokta veya ters sabit
nokta olmayacak şekilde seçilmiştir.
SubByte(Bayt Değiştirme)
12.
13. Matrisin satırları üzerinde çalışan bu işlem her satırdaki bayt değerlerini
belirli sayıda kaydırır.
AES'de
• Yani ilk satır değiştirilmez.
• 2., 3. ve 4. satırlar sırası ile 1, 2 ve 3 bayt sola kaydırılır.
Rijndael algoritmasında ise
∙256-bit için bu değerler, ilk satır sabit kalacak şekilde 1, 3 ve 4 bayttır.
ShiftRows (Satır Kaydırma)
14. • Bu adımda her sütundaki dört bayt değeri tersi olan doğrusal bir dönüşüm
kullanılarak birbirleriyle karıştırılır. SütunKarıştır fonksiyonu 4 bayt girdi alıp 4
bayt çıktı verir ve girdideki her baytın çıktıdaki her bayt değerini etkilemesini
sağlar. SütunKarıştır işlemi, her sütunun sabit bir matrisle çarpılması işleminden
oluşur.
• Matris çarpması işlemi sonlu cisim GF (28) üzerinde yapılmaktadır. Her bayt bu
sonlu cisim üzerinde bir polinom tanımlayacak şekilde, mod x4+1'de c(x) = 0x03 ·
x3 + x2 + x + 0x02 polinomu ile çarpılır. SütunKarıştır adımındaki sabit matris
bir MDS matristir ve SatırKaydır adımı ile birlikte şifrede karmaşıklık (diffusion)
sağlar.
MixColumns (Sütun Karıştırma)
• Her turda daha önce saydığımız işlemlerle birlikte bir de tur
anahtarı oluşturma işlemi yapılmaktadır ve her turda sonuçta
oluşan durum ile o tur için hazırlanmış olan yeni anahtar toplama
işlemine tabi tutulur. Bu işlem sonlu alanlarda yapılan toplama
işlemidir ve bit mertebesinde özel veya (XOR) işlemine karşılık
düşer.
AddRoundKey (Tur Anahtarıyla Toplama)
15.
16. Anahtar OluşumuŞekilde de görüldüğü üzere, yeni anahtarın oluşmasındaki temel işlem bir
önceki sütun ile dört önceki sütunun toplanmasıdır. Ancak bir istisna nokta
var ki o da her 4′ün katı olan sütunda toplamadan önce bir dizi işlemden (T
İşlemi) daha geçirilir. Bu işlemler öteleme, S kutusundan geçirme ve Rc(x)
vektörü ile toplama işlemidir.
17. AES 256 NE KADAR GÜVENLİ?
• Kriptografların bakış açısından bir algoritmanın kriptografik olarak kırılması,
anahtarın ya da anahtarın bazı parçalarının olası tüm anahtarların denendiği kaba
kuvvet saldırısından daha hızlı bir şekilde elde edilmesi anlamına gelir. Bu açıdan,
256-bit anahtar uzunluğuna sahip AES algoritması için 2200 işlem gerektiren bir
saldırı algoritmanın kırılması olarak kabul edilirken 2200 mertebesindeki bir işlem,
şu an için, evrenin yaşından daha uzun bir süre gerektirmektedir.
• AES algoritmasının bütün anahtar boylarının (128, 192 ve 256 bit) tasarımı ve
dayanıklılığı "GİZLİ" mertebesine kadar bütün verilerin korunması için uygundur.
"ÇOK GİZLİ" veriler 192 ya da 256-bit anahtar kullanımını gerektirmektedir. Ulusal
güvenlik sistemlerinin ya da bilgilerinin korunması amacını taşıyan ürünlerdeki
AES uygulamaları, bu ürünlerin alımı ve kullanımından önce NSA tarafından
incelenip sertifikalandırılmalıdır.
18. BİLİNEN SALDIRILAR
• 2002 yılında AES'in sade ve basit cebirsel yapısını değerlendiren Nicolas Courtois ve
Josef Pieprzyk "XSL Attack" isimli bir teorik saldırı duyurmuşlardır. Ancak daha sonra,
duyurulan hâliyle atağın çalışmadığını gösteren bilimsel yayınlar yapılmıştır. Blok
şifrelere XSL saldırısı.
• AES süreci sırasında diğer tasarımcılar Rijndael'in kritik uygulamalarda kullanımına ilişkin
endişelerini dile getirdilerse de yarışmadan sonra Twofish algoritmasının
tasarımcılarından güvenlik uzmanı Bruce Schneier Rijndael'e başarılı teorik saldırılar
yapılabileceğini ancak bu saldırıların pratik hâle gelebileceğine inanmadığını belirtmiştir.
• 1 Temmuz 2009 tarihinde Bruce Schneier blogunda 192-bit ve 256-bit AES
versiyonlarına Alex Biryukov ve Dmitry Khovratovich tarafından 2119 işlem karmaşıklığı
ile uygulanabilen ve AES'in basit anahtar oluşturma algoritmasından faydalanan bir
ilişkili-anahtar (related-key) saldırısını duyurmuştur. Aralık 2009'da bu saldırının işlem
karmaşıklığı 299.5e düşürülmüştür. Ardından Alex Biryukov, Orr Dunkelman, Nathan
Keller, Dmitry Khovratovich ve Adi Shamir 9 çevrim AES-256'ya sadece iki ilişkili-anahtar
kullanarak 239 zamanda anahtarın tamamının elde edildiği saldırıyı yayımlamışlardır. Bu
saldırı 245 zaman karmaşıklığı ile 10 çevrime, 277 zaman karmaşıklığı ile 11 çevrime
genişletilmiştir ancak tam çevrim AES bu ataktan etkilenmemiştir.
19. • Kasım 2009'da 8 çevrimlik AES-128'e bilinen anahtarlı ayırt etme
(distinguishing) saldırısı yayımlanmıştır. Bu saldırı AES-benzeri
permütasyonlara uygulanan rebound (ya da ortadan-başla)
saldırılarının geliştirilmiş bir hâlidir. Bu saldırının zaman karmaşıklığı
248, hafıza karmaşıklığı ise 232dir.
• 2010 yılının Temmuz ayında ise tasarımcılardan Vincent Rijmen,
AES'e yapılan ve kriptografi camiasında da taşıdığı anlam tartışmalı
olan ilişkili-anahtar saldırıları ile ilgili olarak bu saldırıları tiye alan bir
makale yayımlamış, bu tür ilişkilerin her algoritmada bulunduğunu
savunmuştur.
• Tam çevrim AES'e yapılan ilk başarılı anahtar elde etme saldırısı
Andrey Bogdanov, Dmitry Khovratovich ve Christian Rechberger
tarafından yapılmıştır. Atak, biclique adı verilen yapılar kullanarak
128-bit anahtarı 2126.1, 192-bit anahtarı 2189.7 ve 256-bit anahtarı
2254.4 işlem karmaşıklığı ile elde etmektedir.
20. Yan Kanal Saldırıları
• Yan kanal saldırıları, kullanılan şifreleme algoritmalarının güvenlikleri ya da açıklarıyla
ilgilenmek yerine, algoritmaların gerçeklendiği donanımlara saldırarak buradan veri
sızdırmaya çalışır. Bazı AES gerçeklemelerine yapılan başarılı yan kanal saldırıları ile
anahtarın elde edilmesi mümkün olmuştur.
• 2005 yılında D.J. Bernstein OpenSSL'in AES uygulamasını kullanan bir sunucuya ön
bellek-zamanlama (cache-timing) saldırısı yapmıştır. 200 milyon civarında seçilmiş
açıkmetin kullanılarak yapılan saldırıda, sunucu şifreli metinle birlikte şifrele işleminin
kaç işlemci saati sürdüğünü de alıcıya göndermekteydi. Bernstein, bu saldırının başarılı
olması için, şifreleme süresinin sunucudan gelen kadar kesin olmasına gerek olmadığını
göstermiştir.
• Aynı yıl Dag Arne Osvik, Adi Shamir ve Eran Tromer, yine ön bellek-zamanlama saldırıları
ile AES anahtarını 65 milisaniyede elde eden bir yöntem geliştirmiştir. Bu yöntemin
başarılı olması için saldırganın, saldırdığı platformda AES ile şifreleme yapabilme
imkânının olması gerekiyordu.
• 2009 yılında ise FPGA kullanan bir platformda, 232 zorlukla anahtar elde edilmiştir.
• Endre Bangerter, David Gullasch ve Stephan Krenn, 2010 yılında açık metin ya da şifreli
metin kullanmadan OpenSSL gibi sıkıştırma tabloları kullanan uygulamalardan AES-128
gizli anahtarını elde etmeye yarayan bir saldırı yayımlamışlardır. Bu saldırı da saldırganın,
saldırılan sistemde kod çalıştırabilmesini gerektirmektedir.
21. Performans
• AES seçim sürecinde NIST'in performans kriterleri yüksek hız ve
düşük RAM gereksinimi olarak belirlenmişti. Bu kriterler göz önünde
bulundurularak tasarlanan AES, 8-bit akıllı kartlardan yüksek
performanslı bilgisayarlara kadar birçok değişik donanım üzerinde
yüksek performansla çalışır.
• Pentium Pro işlemci üzerinde bir AES şifrelemesi bayt başına 18 saat
çevrimi gerektirir. Bu da 200 MHz saat frekansına sahip bir işlemci
için yaklaşık olarak saniyede 11 MiB veri büyüklüğüne denk gelir.
AES'in kullandığı işlemlerin işlemcilerin komut setine dâhil edilmesi
ile şifreleme işleminin gerektirdiği saat çevrimi bayt başına 3,5'e[1],
yüksek ara bellekli (buffer) sistemlerde ise 1,3'e[2] kadar düşmüştür.