AES (Advanced Encryption Standard) Gelişmiş Şifreleme Standardı, elektronik verilerin şifrelemesinde kullanılan, modern bir simetrik şifreleme yöntemidir.
Bir önceki yazıda DES şifreleme yönteminden ve yöntemin kırılması ile yerini 3DES’in aldığından bahsetmiştik. 3DES güvenliğini koruyor lakin verimlilik konusunda bazı zaafiyetleri bulunmakta. Bunun yerine alternatif olarak AES şifreleme yöntemi geliştirilmiştir.
DES şifreleme yöntemine alternatif olarak geliştirildiği üzere AES aynı şekilde blok şifreleme yöntemi ile şifreleme yapar.
AES Şifreleme Özellikleri
- 3DES Şifreleme Yönteminden daha hızlı olması.
- Simetrik blok şifreleme yapısına sahip olması.
- Blok büyüklükleri 128 bit.
- 128, 192 ve 256 bit büyüklüklerinde anahtarları desteklemesi.
Giriş kısmında Secret Key yani şifreleme anahtarımıza göre round sayısı belirleniyor. Burada Round Sayısından kastımız DES şifreleme yazısını okuduysanız orada bir blok içerisinde birden fazla kez şifreleme yaptığımızdan ve her şifrelemede yeni bir anahtar ürettiğimizden bahsetmiştik. Buradaki round kısmını oradaki döngü ile bağdaştırabiliriz.( Round sayımız anahtarımızın kaç bit uzunlukta olduğuna göre değişiyor. ) Her Round’da yeni bir round key üretiyoruz.
Yukarıdaki şemada dikkat ettiyseniz ilk olarak bir anahtar üretiyoruz ardından roundlarımız başlıyor ve final bölümünde SubBytes, ShiftRows ve AddRoundKey kısımları uygulanarak şirelenmiş metni çıktı olarak alıyoruz. Final bölümünde işlediğimiz bu üç terim round kısımlarında da varlar. Bu kısımları tek tek anlatacağım ve sonrasında her Round’da nasıl RoundKey üretildiğine bakacağız.
Substitute Bytes (Byte Değiştirme)
İ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ş S-kutusundaki değerlerle değiştirilir
Burada bir örnek vermemiz gerekirse elimizdeki bölmenin değeri {54} olsun. Bu durumda dikeyde 5 yatayda 4 konumuna sahip veri ile yer değiştirme işlemi gerçekleşecektir. Yani veri {82} olacaktır.
Shift Rows (Satır Kaydırma)
Satır kaydırma işleminde satırlar sırasıyla çevrimsel şekilde kaydırılırlar. Yani ilk satır değiştirilmez, ikinci satır da sola 1 ötelenir, üçüncü satır sola 2 ötelenir ve son satır sola 3 ötelenir. Taşan bölmeler kaydırmanın başına eklenir.
Mix Columns (Kolon Karıştırma)
Bu işlemde eski sütunun elemanları kullanı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. Yapılan hesap çarpma ve toplama işleminden oluşur. Çarpma işleminde belirli bir sabit sayı (a(x)) kullanılır.
-> a(x)={03}x3+{01}x2+{01}x+{02}
Add RoundKey
Artık bu kısımda elimizdeki datayı roundkey ile xor işlemine tabii tutuyoruz.
Bu işlemlerin tamamı döngümüzün içerisinde yer alan işlemlerdir. Sonrasında bu işlemleri bir kez daha tekrarlıyoruz lakin bu sefer mix columns adımını gerçekleştirmiyoruz ve şifreli metnimiz hazır bir hale geliyor. AES simetrik bir yapıda olduğu için tek bir anahtar ile hem şifrelenebilir hemde şifre çözülenebilir.
Buraya kadar okuduğunuz için teşekkür ediyorum, bir sonraki yazıda görüşmek üzere kendinize iyi bakın 🙂
Kaynak :
http://bilgisayarkavramlari.com/2009/06/03/aes-ve-rijndeal-sifreleme/