AES (Advanced Encryption Standard; Gelişmiş Şifreleme Standardı), verinin şifrelenmesi için sunulan simetrik-anahtarlı bir algoritmadır. 1997 yıllarında (Ulusal Standart ve Teknoloji Enstitüsü) NIST, düzenlenen yarışmada yeni bir şifreleme algoritması geliştirilmesi için bir çalışma başlatılmıştır. AES, Vincent Rijmen ve Joan Daemen tarafından geliştirilen Rijndael algoritmasında bazı değişiklikler yapılarak oluşturulmuştur. 2010 yılı itibariyle en popüler simetrik şifreleme algoritmalarından biridir.
Algoritmanın Genel Yapısı
AES algoritması 128 bit veriyi şifrelemek ve çözmek için oluşturulmuş simetrik veri kodlama standardıdır. AES algoritmasında giriş, çıkış ve matrisler 128 bitliktir. Matris 4 satır, 4 sütun (4×4), 16 bölmeden oluşur. 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.
Tur sayısının anahtar uzunluğuna göre belirlenmesi
Metin uzunluğu : 128, 192, 256 bit olabilir.
Anahtar uzunluğu : 128, 192, 256 bit olabilir.
Döngü sayısı : Anahtar uzunluğu ve metin uzunluğuna göre değişiklik göstermektedir.
Nasıl Çalışır ?
AES orijinal veriyi 128 bitlik bloklara bölüyor ve her bloğu 4×4’lük bir matris halinde düzleniyor. Böylece 16 matris hücresi,iki basamaklı onataltılık bir sayıya denk düşen 8 bit ya da 1 byte içeriyor.
AES algoritması sırasıyla bayt değiştirme, satır kaydırma, sütun karıştırma ve tur anahtarı ile toplama işlemlerini gerçeklemesiyle şifrelenmiş veriyi elde eder ve tekrar bayt değiştirme adımına döner. Döngü sayısı anahtar uzunluğuna göre değişir. Sadece son döngüde sütun karıştırma işlemi yapılmaz, tur anahtarı ile toplama işlemi yapılır ve şifrelenmiş blok elde edilir. Şifrelenmiş veriyi çözerken de bu alt işlemlerin tersi uygulanır.
Döngüler durum matrislerinde 4 dönüşüm uygular.
Bayt Değiştir (SubBytes) Adımı
Bayt Değiştir adımında, matristeki her baytın değeri, 8 bitlik bir değişim kutusu kullanılarak güncellenir.
Satır Kaydır (ShiftRows) Adımı
Matrisin satırları üzerinde çalışan bu işlem her satırdaki bayt değerlerini belirli sayıda kaydırır.
Sütun Karıştır (MixColumn) Adımı
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.
Anahtar Ekle (AddRoundKey) Adımı
Bu adımda çevrim anahtarı durum matrisi ile kaynaştırılır. Çevrim anahtarı baytlara bölündükten sonra sıra ile matrisin elemanları ile XOR’lanır.
Her döngüde işleme farklı anahtar materyali sokulur. Bu farklı anahtarlar, başlangıçta belirlenen anahtardan anahtar oluşumu işlemleri sırasında üretilirler.
AES - 256 BIT (PHP KODU)
AES - 256 BIT (PHP KODU)
Kaynaklar ve daha fazlası :
https://en.wikipedia.org/wiki/Advanced_Encryption_Standard_process https://tr.wikipedia.org/wiki/AES http://www.bitzipper.com/aes-encryption.html http://www.andrew-kirkpatrick.com/2013/01/aes-encryption-with-php-256-bit-using-iv/ http://poincare.matf.bg.ac.rs/~ezivkovm/nastava/rijndael_animacija.swf