Özetleme Algoritmaları ve Kullanım Alanları

Günümüzde verinin bütünlüğünü (ve gizliliğini) sağlamak önemli bir konudur. Bu yazıda verinin bütünlüğünü sağlamak amacı ile kulanılan özeetleme (hashing) algoritmaları ve temel kullanım alanları incelenecektir.

Özetleme (hashing), temel olarak verinin bütünlüğünü sağlamak için kullanılan bir yöntemdir. Orijinal veriyi ve özetini alan kullanıcının orijinal metnin değiştirilmediğinin anlaşılması hedeflenmektedir. Özeti alınmış veri geri döndürülemeyecek şekilde karşı tarafa gönderilir.Özet alma fonksiyonları, temel olarak iki amaçla kullanılır:

  • Verinin bütünlüğü kontrol edilir. Böylece verinin bir şekilde değişmediğinden emin olunur.
  • Büyük boyutlardaki verinin boyutu sabit uzunlukta olan daha küçük boyuta indirgenir. Böylece hedefe gönderilecek verinin boyutu düşürülmektedir.

“MERHABA” kelimesi için basit bir özet alma fonksiyonu aşağıdaki gibi tanımlanabilir:

  • Tüm harflerin Türkçe alfabeye göre sayısal değeri hesaplanır. Bu sayısal değerler “M=16”, “E=6”, “R=21”, “H=10”, “A=1”, “B=2”, “A=1” olarak bulunabilir.
  • Tüm değerler toplanır. Sonuç olarak 16+6+21+10+1+2+1=57 olarak bulunur.
  • Sonuç değeri olarak bulunan 57 özet fonksiyonunun sonucudur.

Kısacası ÖzetFonsksiyonu(“MERHABA”)=57’dir. 57 değerinden “MERHABA” ifadesi elde edilemez. Ancak “MERHABA” ifadesi aynı özetleme algoritmasına işleme sokulduğunda her defasında 57 değerini verir.

Özetleme algoritmaları ile ilgili bazı önemli noktalar şunlardır:

  • Özetleme algoritmaları için simetrik / asimetrik gibi bir sınıflandırma yoktur. Özetleme algoritmaları anahtar kullanmazlar.
  • Özetleme fonksiyonları, tek yönlüdür. Bu sebeple, özetlenen veriden, asıl veri elde edilemez. Geri dönüştürülememenin garanti edilebilmesi için güçlü algoritmalar kullanılmalıdır.
  • Aynı metin, aynı özetleme algoritması ile işleme koyulursa her defasında aynı sonuç ortaya çıkar. Bu sebeple bütünlük kontrolü gerçekleştirilebilir.
  • Güçlü bir özetleme algoritması ile metin üzerindeki küçük bir değişiklik, çıktıda büyük değişikliğe sebep olur.
  • Blok uzunluğu ne kadar fazla olursa o kadar güvenilirdir.
  • Güvenilir bir özetleme fonksiyonunda çakışma ihtimali oldukça az olmalıdır; çakışmaya dayanıklı olmalıdır. Aksi halde özellikle kimlik doğrulama işlemlerinde zafiyet ortaya çıkar. Örneğin “Aa123456!qwerty.asdfgh?” şeklindeki karmaşık bir parolanın özeti ile “Test123” gibi bir parolanın özeti aynı çıkar ise; kaba kuvvet veya sözlük saldırıları ile deneme yapıldığında, Test123 şeklindeki bir parola ile karmaşık şekilde parola kullanan bir kişinin oturumu açılabilir.

Özetleme algoritmaları sayısal imzalama sırasında kullanılmaktadır. Verinin kendisi imzalanarak gönderilmez, bunun yerine verinin özeti imzalanır böylece hem operasyonel maliyet, hem de iletişim maliyeti düşürülür. En yaygın kullanılan özetleme algoritmaları SHA-1, SHA-2, CBC-MAC algoritmalarıdır.

Özet alma işlemleri birçok alanda kullanılmaktadır. Özetleme fonksiyonlarının en çok kullanıldığı alanlar aşağıdaki gibidir.

 

1) Mesaj Doğrulama Kodu (Message Authentication Code – MAC)

Mesaj Doğrulama Kodu’nda bir veri ve özeti hedefe beraber gönderilir. Alıcı taraf, veriyi özetleyerek, kendisine gelen özet değeri ile karşılaştırır. Özet değerleri aynı ise veri değişmeden ulaşmış demektir. Bu yöntem Şekil – 1’de gösterilmektedir.

Şekil - 1: Mesaj Doğrulama Kodu

Şekil – 1: Mesaj Doğrulama Kodu

 

2) Parolaların Saklanması

Parolaların saklanması amacı ile de özet fonksiyonları kullanılır. Böylece parola özeti kaybedilse bile, parolanın kendisinin elde edilememesi amaçlanır. Parola özetleri aşağıdaki durumlarda kullanılabilir.

İşletim sistemlerinde: Windows istemci bilgisayarlarında (SAM ve SYSTEM dosyalarında) LM veya NTLM özetleri, Microsoft etki alanı denetleyicisinde (NTDS.dit ve SYSTEM dosyalarında) LM veya NTLM özetleri, Linux işletim sistemlerinde (/etc/shadow) MD5 gibi özetler kullanılır.

Şekil - 2: Etki Alanı Denetleyicisi Üzerindeki Parola Özetleri

Şekil – 2: Etki Alanı Denetleyicisi Üzerindeki Parola Özetleri

 

Uygulamalarda: Veritabanı (Oracle, MS SQL gibi) kullanıcı hesapları, uygulama kullanıcıları,… parolaları saklanılırken özetleme algoritmaları kullanılır.

Şekil - 3: MS SQL Veritabanı Üzerindeki Parola Özetleri

Şekil – 3: MS SQL Veritabanı Üzerindeki Parola Özetleri

 

 

3) Sayısal İmza

Veri transferi sırasında, göndericinin kimliğini kanıtlamasını sağlama ve verinin değişmediğini göstermek için sayısal imza kullanılır. Sayısal imzalama işlemi 2 aşamadan oluşur:

  • Veri bir özetleme algoritması ile özetlenir.
  • Özetlenmiş veri göndericinin özel anahtarı ile imzalanır.

Gönderici taraf, özetleyip imzaladığı veriyi ve verinin asıl halini gönderir. Bunu alan taraf verinin özetini alır; imzalanmış veriyi göndericinin genel anahtarı ile doğrular ve bu iki veriyi karşılaştırır. Aynı ise gönderici tarafın doğruluğu ve verinin bütünlüğü ispatlanmış olur. Sayısal imzalama işlemi Şekil – 4’te gösterilmiştir.

Şekil - 4: Sayısal İmzalama

Şekil – 4: Sayısal İmzalama

 

Bunun yanında Açık Anahtar Altyapısı (Public Key Infrastructure – PKI) ile güvenli bir altyapı oluşturulurken de özetleme fonksiyonları kullanılır.

Not: Mesaj Doğrulama Kodu ile Sayısal İmza arasındaki en büyk fark; sayısal imzanın İnkar Edilememezlik sağlamasıdır.

 

4) Veri Gizliliğini Sağlama

Özetleme fonksiyonlarının kullanım alanlarından biri de verilerin gizliliğinin sağlanmasıdır. Raporlardaki veya veritabanlarındaki verilerin çıktıları üzerinde karşılaştırılma yapılması, analiz işlemlerinin gerçekleştirilmesi gibi bir ihtiyaç olabilmektedir. Örneğin birbiri ile ilişkili olmayan iki veritabanındaki TCKN, kredi kartı numarası gibi tekil bir alan ortak kullanılıyor ancak bu alanın üçüncü şahsın eline geçmesi istenmiyorsa, bu alan iki veritabanında aynı şekilde özetlenerek, üçüncü şahıslara verilebilir. Böylece ortak tekil bir veri oluşturulmuş olur. Verinin (kredi kartı numarası gibi) geri döndürülemeyecek şekilde saklanmasını isteyen PCI-DSS gibi bazı standartlar için özetleme algoritmaları kullanılabilir.

 

5) Veri Boyutunun Küçültülmesi

Antivirüs gibi bir çok imza tabanlı güvenlik sistemi, zararlı aktivite tespit etmeye çalıştıklarında, bu aktivitenin kaynağının zararlı olup olmadığını veritabanlarındaki bazı bilgiler ile karşılaştırmaya çalışırlar. Eğer karşılaştırılacak veri çok büyük olursa, bu veriyi saklama maliyeti de yüksek olur. Bu sebeple verinin kendisi değili verinin özeti ile karşılaştırma yapılır. Bir çok zararlı yazılım da kaynağında küçğk değişiklikler yaparak özet değerinin değişmesini sağlar ve antivirüsleri atlatır.

 

6) Verinin Değiştirilmediğinin Kontrolü

Bir çok konuda ele geçirilen verinin değiştirilmediğinden emin olmak için özetleme algoritmaları kullanılabilir. Bu veriler aşağıdaki gibi olabilir:

  • Adli bilişim konularında forensics verileri (bir disk imajı, bir dosya veya klasör)
  • Sistem (C:\Windows\System32 dizini altındaki) veya kritik dosyalarda (özel anahtarların, gizli verilerin tutulduğu dizinlerde)
  • Bir uygulama dosyası veya kod (apk, sürücü, java kodu, ActiveX…)
  • Bitlocker, PGP, Truecrypt gibi araçlarla şifrelenen diskler veya dosyalar

 

 

 

Yazarın Bilgileri

Ertuğrul BAŞARANOĞLU
Ertuğrul BAŞARANOĞLU

Bir Cevap Yazın

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

Kullanabileceğiniz HTLM etiketleri ve özellikleri: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code class="" title="" data-url=""> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong> <pre class="" title="" data-url=""> <span class="" title="" data-url="">

Bu sayfada incelenen konulardan doğacak sorunlar kişinin kendi sorumluluğundadır.