• 20 HAZİRAN 2020
  • Okunma Sayısı: 2195

Ülkü GÜNEŞ - Karaelmas Kriptoloji Takımı

Zonguldak Bülent Ecevit Üniversitesi - [email protected]

 

GİRİŞ

AES (Advanced Encryption Standard) Gelişmiş Şifreleme Standardı, elektronik verilerin şifrelemesinde kullanılan, modern bir şifreleme standardıdır. Modern kriptoloji simetrik ve asimetrik şifreleme yöntemleri olmak üzere ikiye ayrılır. Asimetrik şifrelemede açık mesaj (plain text), herkesçe bilinen bir anahtar (key) ile şifrelenir ve karşı tarafın şifreyi çözmek için gizli anahtarı kullanır. Simetrik yöntemde ise şifrelemede de (encrytion) şifre çözmede de (decryption) aynı ve tek bir anahtar kullanılır. AES, simetrik bir blok şifreleme standardıdır ve DES’in yerini almıştır.

AES TARİHİ

AES’ten önceki standart kabul edilen DES’in (Data Encryption Standard) güvenlik, hafıza ve hız problemi dolayısıyla 1997’de NIST (Ulusal Standart ve Teknoloji Enstitüsü) yeni bir standart bulunması amacıyla bir duyuru yayınlamıştır. Temelde bazı değişiklikler yapılarak Vincent Rijmen ve Joan Daemen’in geliştirdiği RINJDAEL algoritması bu duyuru üzerine başvuruda bulunmuştur. Bu amaçla düzenlenen yarışmaya başvuruda bulunan 15 aday algoritma arasından her iki turu da geçerek 26 Mayıs 2000’de AES, yeni standart şifreleme algoritması kabul edilmiştir. AES adı aslında şifreleme standardının adıdır ve pratikte de bu şekilde kullanılır.

Yeni Algoritma Gereksinimleri

  • Simetrik blok şifrelemeye dayalı
  • Güvenilir
  • Açık algoritma tasarımı
  • Esnek anahtar uzunlukları (128, 192,256 bit)
  • Şifreli blok boyutu 128 bit
  • Yazılım ve donanım olarak iyi uygulanabilir (iyi bellek kullanımı)

Rijndael Algoritmasının Özellikleri

  • Simetrik blok şifreleme algoritmasıdır.
  • 128, 192, 256 bit anahtar uzunluklarını destekler.
  • Anahtar uzunluğu ve blok boyutu bağımsız olarak seçilebilir.
  • AES ile anahtar uzunluğu belirlenir. Anahtar uzunluğuna bakılarak AES 3 farklı sayıda tur döngüsüne girer. AES -128, AES -192 ve AES -256.

  • Her rauntta farklı bir dâhili anahtar kullanılır. ( yuvarlak anahtar olarak adlandırılır )
  • Şifreleme ikame ve permütasyon işlemlerini içerir.

 

AES (ADVENCED ENCRYPTION STANDARD) ALGORİTMASI

AES, girişler, çıkışlar ve matrisler 128 bit uzunluğundadır. 4x4 lük 16 bölmeden oluşan bu matrislere ‘durum’ denir. Her duruma 1 baytlık veri vardır.

            Algoritma adımları genel olarak şu şekildedir.

  • Anahtar oluşturma (Key Expansion)
  1. Başlangıç
  • Anahtar ekle (Add Round Key) : şifreleme anahtarı ile ilk durumlar arasında XOR uygulanır.
  1. Her tur
  • Bayt değiştirme (sub bytes) : S-box ile baytları değiştirme.
  • Satır kaydırma (shift rows): dairesel olarak satırlar belli sayılarda kaydırılır.
  • Sütun karıştırma (mix columns) : sütundaki 4 baytlık değerler birbiriyle karıştırılır.
  • Turdaki anahtar ile toplama (add round key) : Mevcut durumlar ve yuvarlak anahtar arasında XOR işlemi. 
  1. Son tur
  • Bayt değiştirme (sub bytes)
  • Satır kaydırma (shift rows)
  • Turdaki anahtar ile toplama (add round key)

 

Not: İlk tur için kullanılan anahtar en başta belirttiğimiz anahtardır. Diğer tüm turlarda ise yeni üretilen anahtarlar kullanılır.

Rijndael algoritmasının 3 parametresi vardır:

1. Düz metin: Girdi verilerini içeren 16 baytlık dizi.

2. Şifreli metin: Şifreleme sonuçlarını içeren 16 baytlık dizi.

3. Anahtar:  Şifreleme için 16 bayt uzunluğunda bir dizi.

           

AES İLE ŞİFRELEME

 

Şifreli Metin Oluşturma

Şifrelemek istediğimiz metni ilk olarak 128 bitlik bloklara ayırırız. Bu parçalar durum matrisine yerleştirilerek durum matrisi oluşturulur. Ardından anahtarımıza da aynı işlemi uygularız. Bu iki matris daha sonra ise toplanır. 

  1. Bayt Değiştirme (Sub bytes)

Mesaj şifrelere bölündükten sonra s-kutusunda (s-box, substituon box) yeni değerlerle değiştirilir. Bloklar tekrar oluşturulmuş olur.

S-kutusu temelde bir tabloya benzetilebilir, hexadecimal değerler ile satır ve sütün oluşturulmuştur. (16x16)

Bayt değiştirme işleminde, bloktaki değer alınır yine hexadecimal şeklinde bir değerdir. Bu değerin soldan ilk basamağı satırdan, ikinci basamağı sütundan seçilir ve kesişim noktası baytı değiştirilmiş bloğumda aynı yere eklenir.

 

  1. Satır Kaydırma (Shift Rows)

İkinci turda satır kaydırma işlemi vardır. Satırların kendi arasında gerçekleşir. Satırların kendi içindeki baytlarını sola kaydırılması, satır sıra sayısı ile orantılıdır. Satırlar sırasıyla 0, 1, 2, 3 bayt sola kaydırılır. Dairesel bir kaydırma söz konusu olduğundan soldan taşan değerler baştan eklenerek kaydırma yapılır. Yani ilk değer sabit kalır.

 

  1. Sütun Karıştırma (Mix Columns)

            Bir önceki aşamada satırlar üzerinde işlem yapılmıştı, şimdi ise bu aşamada sütunlar karıştırılacak. Bu tur daha karışık bir tur olmakta beraber çapma ve toplama işlemleriyle yapılır. Burada bir matris çarpımı vardır. Buradaki işleme bir difüzyon işlemi de denir.

Başlangıçta elimizde sabit bir 4x4’lük başlangıç matrisi (a) vardır. 4x1’lik elimizdeki kolon (sütun) ile bu matris çarpılarak yeni matrisimiz oluşur.

 

 

  1. Turdaki anahtar ile toplama (add round key)

Her adımda yapılan işlemlerden sonuncusu, her tur için üretilen anahtar ile mesaj bloğunun XOR (özel veya) işlemidir. Her adımda 128 bitlik bir anahtar üretiliyor. Burada oluşan anahtar matrisi ve şifrelenecek blok matrisinin ilk sütunları XOR işlemine girer ve yeni bloğun sütunlarını sırasıyla oluşturur.

 

 

 

SONUÇ

            Standart algoritma on adımdan oluşur. Dolayısıyla yukarıdaki adımlar on kez tekrarlanır ancak son adımda sütunları karıştırma (mix columns) adımı yapılmamaktadır.

 

 

ANAHTAR ÜRETME

            Şifreleme adımlarından bir diğer önemli olan ise anahtar tasarlama aşamasıdır. Şifrelemede kullanılmak üzere farklı anahtarlara ihtiyaç vardır. Anahtar üretiminde:

  • İlk olarak son sütun alınır bir fonksiyondan geçirilir, bir kez sondaki eleman ile üstteki yer değişir.
  • Her değer s-kutusundan geçirilir.
  • Elimizdeki sütun, matrisin ilk sütunu ve sabit değer matrisinin ilk sütunu XOR işlemine girer. Ve ilk değer (ilk sütun değeri) bulunur.
  • Bir sonraki sütunda ise bir önce bulunan değer ile XOR yapılarak adımlar 10 kez tekrarlanır.

 

KAYNAKÇA

TÜM MAKALELER