Yazan : Şadi Evren ŞEKER

Veri güvenliği konusunda kullanılan blok şifreleme algoritmaları oldukça ilginç bir problemi de beraberinde getirir. Ne yazık ki şifrelenecek olan mesajın boyutu her zaman blok boyutunun tam katı değildir. Yani blok boyutunun 5 harf olduğu bir algoritmada 12 harflik bir mesajı şifrelemek istersek sona kalan 2 harf bir blok oluşturmak için yetersizdir. Bu eksik bloğun tam bir blok haline getirilmesine tamamlama (padding) ismi verilir.

Sıkça kullanılan tamamlama yöntemlerinden birisi mesajın sonuna, mesajın başındaki harflerden gerekli miktarda tamamlamaktır.

Örneğin yollamak istediğimiz mesaj:

“alibaba”

olsun. Blok uzunluğumuzun 3 harf olduğunu düşünelim bu durumda bloklarımız:

ali – bab – a

şeklinde olacaktır. Ancak sondaki blok, blok boyutu olan 3’ten az eleman içermektedir. Bir çözüm olarak mesajın ilk bloğundan eksik harf kadar harf sona taşınır:

ali – bab – aal

şekline getirilerek şifrelenir.

Diğer bir yöntem rast gele harfler getirilmesidir:

ali – bab – afs

şeklinde blok tamamlanarak şifrelenir.

Diğer bir yöntem ise sondaki harfin tekrarlanmasıdır:

ali – bab – aaa

şeklinde blok tamamlanarak şifreleme gerçekleştirilir.

Son olarak ikilik tabanda (Binary) sayıları kullanarak şifreleme yapan sistemlerde kullanılan PKCS#5 algoritmasını anlatalım. Bu yöntemde son blokta eksik olan blok değeri kadar bilgi boş bitlerde tekrarlanır.

Yukarıdaki şekilde görüldüğü üzere son blokta ne kadar byte boş kaldıysa bu sayı kadar değer sonda tekrarlanmaktadır.

Yukarıdaki şekilde dikkat çekebilecek bir nokta dolan bit olmayınca tamamlama algoritmasına ihtiyaç olmasıdır.

Normalde bir blok şifrelemesinde, mesaj blok boyutunun tam katıysa blok sayımız yeterli olacak ve dolayısıyla tamamlamaya ihtiyaç olmayacak gibi düşünülebilir. Bu yaklaşım farklı tamamlama algoritmaları için doğru olabilir ancak PKCS#5 algoritması için doğru değildir. Çünkü tesadüfen son 3byte’ı 3 olan bir mesaj düşünün. Bu mesajın sonundaki 3 byte’in tamamlama sonucu mu yoksa mesajın orijinal değeri olarak mı eklendiği karmaşası yaşanacaktır.

Çözüm olarak mesaj boyutu blok boyutunun tam katı olsa bile sonda bir boş blok şifrelenir.

Tamamlama algoritmaları genel olarak bilinen açık mesaj saldırısı (known plain text attack) açısından zafiyet oluştururlar. Örneğin pkcs#5 algoritması bu açıdan sonda boş blok bulunduğu durumlarda mesajın muhteviyatı bilindiğinden bir zafiyet oluşturabilir.

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir