AES(Advanced Encryption Standart) Algoritması

AES(Advanced Encryption Standart) Algoritması
AES(Advanced Encryption Standard) algoritması gelişmiş şifreleme standardı anlamına gelir.FIPS tarafından başarılı bulunmuş ve onaylanmış bir şifreleme algoritmasıdır.Yapısı ve güvenilirliği çok gelişmiştir.TribalDES algoritmasından altı kat,DES algoritmasından ü. Kat daha hızlı çalışır. AES,128,192 ve 256 byte uzunluklarda anahtarlama özelliğine sahiptir ve 128 byte lık kod bloklarını şifreleme ve deşifreleme yapısını taşıyan simetrik bir algoritmaya sahiptir.
AES algoiritmasında tüm bayt lar birer eleman olarak kabul edilir ve iki bayt ın birbiri ile karşılıklı işlemleri

bayt=x dersek à x-or işlemine tabi tutulur.

Algoritma iki ana temel üzerine oturtulmuştur.Birincisi şifreleyici ve çözücü, ikincisi ise anahtar üretici.Algoritma her şifreleme üreticisinde bir tur döner ve tur sayısı anahtar uzunluğuna göre değişir.

Örn: 128 bit lik AES 4 kelimelik anahtar uzunluğunda 10 tur atar.

AES algoritmasının sözsel işleyişini aşağıda göreceğiz.

AESşifreleme(GirişDurumu, Anahtar)

{

TurAnahtarı[Nr : 1] = AnahtarÜreteci(Anahtar);

Durum[0] = İlkAnahtarToplaması(GirişDurumu, Anahtar);

for(i = 1; i < Nr ; i++)

Tur(Durum[i-1], TurAnahtarı[i])

FinalTuru(Durum[Nr-1], Tur Anahtarı[Nr])

}

AES algoritmasında tur dönümü için sözsel işleyiş ise aşağıdadır.

Tur(GirişDurumu, TurAnahtarı[i])                                                              (3.5)

{

Durum1 = BaytDeğişimi(GirişDurumu);

Durum2 = SatırKaydırma(Durum1);

Durum3 = SütunKarıştırma(Durum2);

ÇıkışDurumu = TurAnahtarınıTopla(Durum3, Tur Anahtarı[i])

}

SonTur(GirişDurumu, TurAnahtarı[Nr])                                                     (3.6)

{

Durum1 = BaytDeğişimi(GirişDurumu);

Durum2 = SatırKaydırma(Durum1);

ÇıkışDurumu = TurAnahtarınıTopla(Durum2, Tur Anahtarı[Nr])

}

AES her tur dönüşünde dört adım izler;

1.) Bayt-değiştirme,

2.) Satırları Kaydırma,

3.) Sütunları Karıştırma,

4.) Tur Anahtarının Toplanması.

Bu denli teorik bilgiden sonra .net platformu açısından bakalım.

AES algoritmasını namespace i yine aşağıdaki hiyerarşiyi takip eder.

—System.Object
–System.Security.Cryptography.
SymmetricAlgorithm
– System.Security.Cryptography.Aes

* System.Security.Cryptography.AesCryptoServiceProvider
*System.Security.Cryptography.AesManaged
Algoritmanın syntax ini inceleyecek olursak;

VB <HostProtectionAttribute(SecurityAction.LinkDemand, MayLeakOnAbort := True)>
_Public MustInherit Class Aes _
Inherits SymmetricAlgorithm

Dim instance As Aes

C#

[HostProtectionAttribute(SecurityAction.LinkDemand, MayLeakOnAbort = true)]

public abstract class Aes : SymmetricAlgorithm

Visual C++

[HostProtectionAttribute(SecurityAction::LinkDemand, MayLeakOnAbort = true)]

public ref class Aes abstract : public SymmetricAlgorithm

JScript

public abstract class Aes extends SymmetricAlgorithm

AES in bulunduğu ikinci bir hiyerarşi ise webservices üzerindedir.

System.Object
Microsoft.Web.Services2.Security.Cryptography.KeyAlgorithm
Microsoft.Web.Services2.Security.Cryptography.SymmetricKeyAlgorithm
Microsoft.Web.Services2.Security.Cryptography.AES
Microsoft.Web.Services2.Security.Cryptography.AES128
Microsoft.Web.Services2.Security.Cryptography.AES192
Microsoft.Web.Services2.Security.Cryptography.AES256

Bu hiyerarşi içinde syntax örneği vermek gerekirse….128 bit lik için;

C#

public sealed class AES128 : AES

VB

NotInheritable Public Class AES128 Inherits AES Dim aES1281 As New AES128() C++.NET public sealed ref class AES128 : public AES J#.NET public final class AES128 extends AES şeklinde olacaktır. SON SÖZ Gerçekten güzel ve özel bir algoritma olduğu için teorisinin çok üstünde durarak anlattım.AES algoritması içerisinde birçok varyasyonu getiren bir algoritmadır.Algoritma bir nevi en uygun sürüm bulunması için AES algoritması üzerinden farklı algoritmalar çıkarıldı.En iyi seçilen 5 algoritma tekrar elendi ve en iyi AES algoritması Rijndael algoritması oldu.Uygulaması ile beraber Rijndael makalemi önümüzdeki zamanlar içerisinde yazacağım….

“Alıntıdır”