Özetleme Algoritmaları ve Kullanım Alanları - SİBER GÜVENLİK PORTALİ
Blue Team Cryptography Ö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
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
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
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
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
Önceki YazıAçık Anahtar Altyapısı (PKI) Temelleri
Sonraki YazıOpenSSL Aracı ile CSR Dosyası Oluşturulması ve CSR Dosyasının İmzalanarak Sertifikanın Hazırlanması