Upload
burkay-oezdemir
View
1.253
Download
1
Embed Size (px)
DESCRIPTION
Introduction to Rijndael AES Encryption and Implementation of Algorithm
Citation preview
Specification for RijndaelThe AES algorithm
AES’in Ortaya Çıkışı 97 yılının Ocak ayında U.S National Institute of
Standards And Technology (N.I.S.T) yaptığı bir duyuruyla Advanced Encryption Standard’ın geliştirilmek üzere olduğunu açıkladı ve topluma açık bir yarışma düzenledi.Bu yarışma için dünyanın farklı yerlerinden 15 tane block chiper uygulaması ön elemelerden geçebildi. Ancak iki rounddan oluşan asıl elemelerin ilk round’unda bu algoritmalardan 10 tanesi daha elenerek geriye 5 block chiper adayı kaldı.
Elemeler İkinci round elemelerine kalan 5 algoritmanın
adları ve geliştiricileri şöyleydi; IBM’in geliştirdiği MARS (Multiplication,
Addition, Rotation and Substitution), Ronald Riverst’in geliştirdiği RC6, Belçikalı takım tarafından geliştirilen Rijndael, İngiltere, İsrail ve Norveç’ten üyeleri olan bir
takımın ortak olarak geliştirdiği Serpent, Bruce Schneier tarafından geliştirilen Twofish.
Elemeler AES in yapımları sırasında yapılan
cryptoanalizlerde ölçülen Efektiflik Uygulanabilirlik Gerektirdiği efor Ve C dili üzerindeki implementasyonlarıyla
sabit işlemciler üzerinde performans testleri arasında,diğerlerine oranla öne çıkan Belçikalı geliştiricilerin öne sürdüğü “Rijndael” adlı block chiper uygululam AES olarak kabul edildi.
Arkaplanda AES(Advanced Encryption Standard) AES block dataları gizli bir anahtar aracılığıyla
encrypt ve decrypt edebilen bir block chiperdır. DES ve Triple DES standardlarının yerine geçmesi amacıyla üretilmiştir
AES felsefe olarak Shannon’un “diffusion,confusion” felsefesini temel almaktadır.
Diffusion :block chiper girdi parçalarının ( plaint text ve key) etkilerini outputun parçaları ( chiptext )’ na yaymak
Confusion:plaintext,chiper text ve key arasındaki ilişkinin karmaşıklaştırılmasıdır
AES’in Tanımı
AES block büyüklüğü 128 bit ve key genişliğide 128,192 veya 256 bit olan bir block chiperdır.
AES-128 AES-192 AES-256
AES’in Genel Yapısı İşleyiş biçimi standard olarak üzerinde 128
bitlik giriş ve çıkışlardan oluşan, plain text’in cipher text çevrilmesi yada tersi için uygulanan operasyonlar serisidir.
Operasyonlar ‘Rijndael durumu’ yada ‘durum’ denen iki boyutlu byte dizileriyle yapılır.
Durum dizisi 4 satır Nb/32 Sütun ( Nb=input boyutu) dan oluşur.
Dizilere s[r,c] veya sr,c referansları ile erişilir.
İnput Dizisinin Durum Dizisine Aktarılması
Encryption; S[r,c] = in[r+4c] 0<= r < 4 ve 0 <= c < Nb Inverse; Out[r+4c] = r[r,c] 0 <= r < 4 ve 0 <= c < Nb
AES Operasyon Tur Sayısı
Inputlar Durum dizisine aktarıldıktan sonra bir dizi operasyondan geçirilirler. Bu operasyonların kaç turda tamamlanacaklarının sayısı key uzunluğuna göre değişmektedir.
Aes Operasyonları Encryption
Encryption işlemi dört aşamadan oluşur. SubBytes : Dizinin bytelarını bağımsız
olarak değişime uğratır eder. ShiftRows : Dört satırı bağımsız olarak
shifte eder. MixColumns : Dizideki sütunları
bağımsız olarak karıştırır AddRoundKey : Round key in bytelarını
diziye ekler.
AES Operasyonları
First Step AddRoundKey Input = 3243f6a8885a308d313198a2r0370734 Key = 2b7e151628aed2a6abf7158809cf4f3c
Input ve key alındıktan sonra ilk işlem bunların XOR’lanması ile ekleme işlemidir. Bu işlem sonucunda 1.tur için başlangıç durum’unu elde ederiz.
Subbytes(S Tablosu transformasyonu)
Tur döngüsündeki ilk 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ş S-kutusundaki değerlerle değiştirilir.
Subbytes
ShiftRows
Satır kaydırma işleminde satırlar sırasıyla cyclic olarak şu formüle göre shift edilirler.
S’r,c = Sr,(c+h[r,Nb])modNb 0 <= c < Nb ve 0<r<4 için
Bu formülde kullanılan h dizisi aşağıdaki gibidir;
Aşağıda Shift işlemi gösterilmiştir.
MixColumns
Bu işlemde eski sütun elemanları ile sabit hesaplanmış bir matris çarpım ve XOR işlemi yapılarak yeni sütun elde edilmektedir. Bu yapılırken yeni sütunun elemanları eski sütunun her elemanı hesaba katılarak tek tek hesaplanır. Çarpma işleminde;(a(x)) =)={03}x3+{01}x2+{01}x+{02} kullanılır.
Çarpma işleminde kullanılacak matris aşağıdaki gibidir.
MixColumns
AddRoundKey (veya XORRoundKey)
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 işlemine karşılık düşer. 128 bitlik durum matrisi ile 128 bitlik ara anahtar değeri bit bit özel veya elamanı ile toplanır.
Anahtar Üretme
AES algoritması anahtarı alır ve bir dizi işlemden geçirerek işlem sayısı kadar anahtar oluşturur. Bu sayı 128 bitlik uzunluk için 10′dur. 10 farklı anahtar oluşturulur ve oluşan son anahtar şifreyi çözmede kullanılan ilk anahtar haline gelir.
Yeni anahtarın oluşmasındaki temel işlem bir önceki sütun ile dört önceki sütunun toplanmasıdır. Ancak buradaki istisna nokta her 4′ün katı olan sütunda(mod4 = 0 yada ilk sütunlarda) 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
Anahtar Üretme
Sonuç
Aynı operasyonların 9 kere tekrarlanması, son adımda da MixColumns operasyonu hariç diğer işlemlerin yapılmasının ardından elimizde oluşan 128 bit boyutundaki iki boyutlu durum dizisi inputumuzun şifrelenmiş halidir.