One Way Hash Function – Tek Yönlü Hash Fonksiyonları ve Length Extansion Attack

Kriptografinin temel yapı taşını one way hash fonksiyonları oluşturmaktadır. One way hash fonksiyonlarının temel özelliği One Way(tek yönlü) ve collision resistant (çarpışmaya dayanıklı) olmasıdır.

Tek yönlü olması hash işlemine giren verinin (özet) hash değerinden geri dönük olarak verinin kendisinin hesaplanamamasıdır.

hash(m) = h,  m’i bulmak zordur.

Çarpışmaya dayanıklı olması ise bir hash değerinin sadece bir veriye ait olmasıdır. Yani bir hash değeri iki farklı veri için ortak olamaz.

Aynı hash’i veren m1 ve m2’i bulmak zor.    hash(m1) = hash(m2)

One Way Hash fonksiyonlarının özelleride genel olarak aşağıdaki gibidir.

  • Password authentication (Şifre Doğrulama)
  • Integrity preservation (Bütünlüğün Korunması)
  • Blockchain (Blok Zincir)

One way hash fonksiyonlarının işlevini bozmaya yönelik yapılan saldırılar;

  • Length Extension Saldırısı
  • Collision (Çarpışma) Saldırısı

Yaygın One-way Hash Fonksiyonlar : MD serileri ve SHA serileri hash fonksiyonlarıdır.

MD One-Way Hash Fonksiyonlar

MD (Message Digest) Mesaj Özeti anlamına gelir. Ron Rivest tarafından geliştirilmiştir. MD2, MD4, MD5 ve MD6’ı içerir

Algoritmaların Durumları:

  • MD2, MD4 – ciddi şekilde kırılmış (modası geçmiş eski)
  • MD5 – collision resistance (çarpışma direnci) özelliği kırılmış, one-way özelliği ise kırılmamıştır
  • MD6 – NIST tarafından yapılan öneriye yanıt olarak geliştirilmiştir

 

SHA

NIST tarafından yayınlanmıştır. SHA-0, SHA-1, SHA-2, and SHA-3’ü içermektedir.

Algoritmaların Durumları:

  • SHA-0: kusur nedeniyle geri çekilmiştir.
  • SHA-1: NSA tarafından tasarlandı; 2017 yılında Collision attack bulunmuştur.
  • SHA-2: NSA tarafından tasarlandı; SHA-256 ve SHA-512 içerir
  • SHA-3: 2015 yılında yayınlandı; Farklı yapı planına sahiptir (SHA-1 ve SHA-2’e göre)

 

MD5 hash hesaplanırken veri belirli parçalara ayrılır  md5 algoritması göre işlenere 128 bitlik bir özet veri oluşturulur.

One Way Hash Fonksiyonların Uygulama Alanları

  • Integrity Verification(Bütünlük Doğrulaması)
  • Committing a Secret Without Telling It (Bir sırrı söylemden işlemek)
  • Password Verification (Şifre Doğrulama)
  • Trusted Timestamping (Güvenilir Zaman Damgası)

Integrity Verification (Bütünlük Doğrulaması): Bir dosyanın değiştirilip değiştirilmediğini  yada bozulma olup omadığını öğrenmekte kullanılmaktadır.  Örneği bir siteden dosya indirilirken bize verilen hash değeri ile bizim indiriğimiz dosyadan ürettiğimiz hash değeri aynı ise iki dosyanında birebir aynı olduğunu tespit ederiz. Çünkü doyasdaki bir bitlik değişim olması durumunda bile çok farklı bir hash değeri çıkmaktadır.

Kali Linux dağıtımı indirme sayfasındaki checksum değeri

https://www.kali.org/downloads/

Bir sırrı söylemeden işlemek (Committing a Secret Without Telling It) : One hash fonksiyonlarından en büyük faydalarından biride bir sırrın ortaya çıkmadan işlenmesini sağlamasıdır. Bir hash değerinin açığa çıkması bir anlam ifade etmez çünkü bu hash değerinden özeti çıkarılan orjinal veriye ulaşılamaz. Ancak bu hash değeri bir şeyleri ispatlamak için kullanılabilir.

Örneğin borsada bazı hisselerin gelecekteki değerleri ile ilgili tahmin yaptınız ve bu tahmin dosyasını hash değerini alıp iddianızı ispatlamak istediğiniz kişiler ile paylaştınız. Ama bu kişilerin tahmin değelerini önceden öğrenip hisseleri almasını istemiyorsunuz. Bu yüzden sadece hash değeri paylaşıldı. Hisse senetlerinde belirlenen süre geçtiğinde iddiamızı ispatlamak için paylaştığımız kişilere hisse değelerini içeren dosyayı veririz. Bu dosyanın hash değeri üretirler ve önceden kendilerine verilen hash değeri ile kontrol ederler bu sayede  önceden tahminleri yazılı dosya olduğunu doğrularlar.

Password Verification (Şifre Doğrulama): Bir hesaba girmek için kullanıcının şifre girmesi gerekir. Bu şifrelerin güvenlik açısından plaintext olarak kriptolanmamış şekilde saklanmaması gerekir. Bunun için şifrelerin hashi alınır ve veri tabanında bu şekilde saklanır. Kullanıcı giriş yapacağı zaman yine girilen şifrenin hashi alınır ve veri tabanındaki hash ile kontrol edilirek şifre doğrulaması sağlanır. Linux’ta şifrelerrds in the /etc/shadow dosyasında hashli şekilde saklanır.

Linux’taki saklana hash resimdeki gibidir. En baştaki $6 değeri hash türünü ifade eder.  Sonraki salt kısmı mevcut hash değerine artı bir hash değeri ekleyerek brute force saldırını yavaşlatmaya yöneliktir.

$1 = MD5 hashing algorithm.

$5 =SHA-256 Algorithm

$6 =SHA-512 Algorithm

Salt’ın Amacı: Salt kullanıldığında aynı girdi farklı hashlerle sonuçlanabilir.

  • Password hash = one-way hash rounds (password || random string) -> hash değeri oluşturulurken rastgele bir string değeri ile oluşturulur.
  • Salt bir rastgele string değeridir.

Salt değerinin her kullanıcı için  farklı olması ve hashlenip saklanması gerekmektedir.

Salt İle Önlenen Saldırılar

  • Sözlük Saldırısı (Dictionary Attack): Muhtemel şifrele (yaygın kullanılan parolalar, isim, soy isim, telefon numaraları vb. ) bir dosyada saklanır ve her kelime için hash değeri alınır, password hashi ile karşılaştırılarak şifre çözülmeye çalışılır.
  • Gökkuşağı Tablosu Saldırısı (Rainbow Table Attack): Olası parolaların önceden hazırlanmış hash değerleriyle birlikte tabloda tutulur. Dictionary saldırısından farkı dosyada olası kelimelerin hashlari hasaplanmış şekilde bulunur ve direkt dosyadaki hash ile password hashi kontrol edilir. Bu sayede her parola için kontrol sırasında hash değeri hesaplanmaz işlem gücünden tasarruf edilir ve küçük boyutlu işlerde etkilidir.

 

Salt Bu Saldırıları Nasıl Engelliyor?

  • Eğer Hedef şifre önceden hesaplanmış verilerle aynıysa, hash de aynı olacaktır.
  • Eğer bu özellik (hashlerin aynı olması) geçerli değilse, önceden hesaplanmış tüm veriler işe yaramaz
  • Salt hash değerine ekstra veri eklemesi sayesinde bu hash değerlerinin aynı olması özelliğini yok eder.

 

Trusted Timestamping (Güvenilir Zaman Damgası):Belli bir tarihten önce bir belgenin var olduğu nasıl kanıtlama ihtiyacından ortaya çıkmıştır.

  • Timestamping Approaches(Zaman Damgası Yaklaşımları): 3 Yaklaşım türü vardır.
  • Yaklaşım# 1: Bir gazete veya dergide One-Way Hashi (belge yerine) yayınlamasıyla.
  • Yaklaşım # 2: Zaman Damgası Yetkilisi (TSA –Time Stamping Authority-KamuSM-TÜBİTAK ), özel anahtar kullanarak hash belgesini imzalayabilir. Zaman damgası Türkiyede hukuki delil olarak kabul edilmektedir. Teklif hakkı içeren dosyalarda zaman damgası ile kayıt altına alınarak telif ispatında kanıtlayıcı belge olarak kullanılabilir.
  • Yaklaşım # 3:
  • Blockchain kullanın, yani büyüyen bir kayıt listesi (bloklar)
  • Hash belgesini bir blokta yayınlayın
  • Blockchain, tek yönlü hash’e bağlıdır

Message Authentication Code (MAC- Mesaj Doğrulama Kodu)

  • Ağ iletişimi MITM(Man-in-the-middle) saldırılarıyla karşılaşabilir. MITM saldırısında üçüncü bir kişi haberleşen iki taraf arasına girerek haberleşmeyi kendi üzerinden geçirir ve bu sayede haberleşmeyi dinler değiştirerek manipule edebilir.
  • MITM verileri yakalayabilir ve değiştirebilir
  • Alıcının verilerin bütünlüğünü (verilerin değiştirilip değiştirilmediğini)doğrulaması gerekmektedir.
  • Verilere etiket ekleyin
  • One-way hash’i etiket olarak kullanmak işe yaramaz çünkü MITM hash’i yeniden hesaplayabilir.
  • Hash’de gönderen ve alıcı arasında paylaşılan bir sır (anahtar) kullanılmalıdır.
  • MITM, gizli anahtar olmadan hash’i hesaplayamaz

 

MAC’de Length Extension Saldırısı

Hash işlemi yapılırken bir blokta işlenen hash değeri diğer hash işleminde kullanılmaktadır.(length extension).

Length extension özelliği kullanılarak gizli anahtar (secret key) bilinmeden geçerli bir MAC oluşturulabilmektedir.

Anahtarlı HASH MAC (HMAC)

  • Hash fonksiyonu H (sıkıştırma fonksiyonu blok boyutu B) ve bir gizli anahtar K kullanır.
  • Herhangi bir one-way hash fonksiyonuyla kullanılabilir

HMAC gönderilmek istenen mesajı şifrelemez. Bunun işlem yerine  mesaj  HMAC özeti beraber iletilir. Secret key bilen taraf, mesajın yeniden hashini alıp, bunu mesajla birlikte gönderilen hash ile karşılaştırır. Elde edilen yeni hash mesajla birlikte gönderilen hash ile eşleşirse mesaj doğrulanmış olur.

Blockchain and Bitcoins

  • Blok adı verilen, sürekli büyüyen kayıt listesidir
  • Peer-to-peer network’deki defterler(kayıtlar) tarafından yönetilir
  • Kabul edilen defter bloğunun değiştirilmesi zordur çünkü sonraki tüm blokların değiştirilmesini gerektirir
  • Popüler uygulama Bitcoin’dir
  • Ele alacağımız konular:
  • Hash Zinciri ve Blockchain
  • Zincirlemeyi Zorlaştırın
  • Incentives(Teşvik-Özendirme) ve Bitcoin Ekleme

Hash Chain(Hash Zinciri)

  • Bir veri parçasına One-way hash fonksiyonu art arda uygulanır.
  • Eğer Bir blok değiştirilirse , zincirden düşecek ve zincirin bir parçası olarak kabul edilmeyecektir
  • Orijinal veriler değiştirilirse, tüm zincirin yeniden oluşturulması gerekir

Blockchain

  • Hash zincirine benzer, ancak her blokta ek bilgi içerir
  • Bitcoin örneği: bloklarda bitcoin işlemleri hakkında bilgi var
  • Zincir Oluşturma : Bir bloğun Hash değeri bir sonraki bloğun içindedir
  • Eğer Bir blok değiştirilirse :
  • Bu bloktan sonraki tüm zincirler kırıldı

Sonraki tüm blokları yeniden zincirleme ihtiyacı gerektirir

Blockchain: Zincirlemeyi Zorlaştırın

  • Nonce(Number Only Used Once) her bloğa eklenir
  • Blok hash gereksinimi karşılamalıdır (ör. Önde gelen 20 sıfır)
  • Hesaplama gücü zamanla artacağından, önde gelen sıfırların sayısı zaman içinde kasıtlı olarak artar.

 

Blockchain Teşvikleri(Özendirme) ve Bitcoin

  • Zincir bloklarında nonce bulabilen herkese bitcoin sağlayın
  • nonce’yi arayan kişiler/şirketler “madenciler(miners)” dir

Collision Saldırılarının Güvenlik Etkisi

  • Açık anahtar(public-key) sertifikalarında sahtecilik
  • www.example.com ve www.attacker.com için iki sertifika isteğinin çakışma nedeniyle aynı hash sahip olduğunu varsayın
  • İki istekten birinin CA(certificate authority ) imzası eşdeğer olacaktır
  • Saldırgan, sahibi olmadan www.example.com için imzalanmış sertifikayı alabilir
  • Programların Bütünlüğü
  • CA’dan yasal bir programın hash’ini imzalamasını isteyin
  • Saldırgan aynı hash ile kötü amaçlı bir program oluşturur
  • Meşru program sertifikası kötü amaçlı sürüm için de geçerlidir
  • Bu iki örnek teoriktir ve uygulanabilirliği sorgulanabilir

 

Aynı MD5 Hash ile İki Farklı Dosya Oluşturma

  • md5collgen aracı aynı öneke (prefix ) sahip iki dosya oluşturur

Bu saldırıda, aynı MD5 hash değerlerine sahip iki farklı dosya oluşturacağız. Bunların başlangıç ​​kısımları iki dosyanın aynı olması gerekir, yani aynı öneki paylaşırlar. Bunu md5collgen kullanarak başarabiliriz program, herhangi bir rastgele içeriğe sahip bir önek dosyası sağlamamıza izin verir.

Aşağıdaki komut, out1.bin ve out2.bin olmak üzere iki çıktı dosyası oluşturur,

belirli bir önek dosyası için prefix.txt:

Çıktı dosyalarının farklı olup olmadığını diff komutunu kullanarak kontrol edebiliriz. Ayrıca kullanabiliriz

Her çıktı dosyasının MD5 karmasını kontrol etmek için md5sum komutu.

$ md5sum out1.bin

$ md5sum out2.bin

Out1.bin ve out2.bin ikili olduğu için, bunları bir metin görüntüleme programı kullanarak görüntüleyemiyoruz,

Hex dökümden, prefix.txt verilerinin önce sıfırlarla doldurulduğu görülüyor ve  ardından rastgele görünen veriler buna eklenir. Out2.bin dosyası aynı başlığa sahiptir ancak kalan baytlarda biraz farklılık gösterir.

*bu sayfaki bilgiler hazırlanırlen https://www.handsonsecurity.net/resources.html adresindeki slayt ve dosyalardaki bilgilerden yararlanılarak hazırlanılmıştır. Daha detaylı bilgi ve ingilizce kaynak için ilgili adrese bakabilirsiniz.

Bir cevap yazın

E-Posta adresiniz yayınlanmayacaktır.

This site uses Akismet to reduce spam. Learn how your comment data is processed.

Siteyi kullanmaya devam ederek çerezlerin kullanılmasını kabul etmiş olursunuz.. daha fazla bilgi

The cookie settings on this website are set to "allow cookies" to give you the best browsing experience possible. If you continue to use this website without changing your cookie settings or you click "Accept" below then you are consenting to this.

Close