Kriptografik karma işlevi - Cryptographic hash function

[Hash Algorithms]
Kavramlar
karma işlevler  · SHA  · DSA
Ana standartlar
SHA-0  · SHA-1  · SHA-2  · SHA-3
Bir kriptografik karma işlevi (özellikle SHA-1 ) işte. Girişteki küçük bir değişiklik ("over" kelimesinde) çıktıyı (özet) büyük ölçüde değiştirir. Bu sözde çığ etkisi.

Bir kriptografik karma işlevi (CHF) matematikseldir algoritma o haritalar rastgele boyuttaki verileri (genellikle "mesaj" olarak adlandırılır) bir bit dizisi sabit boyutta ("karma değeri", "karma" veya "ileti özeti"). Bu bir tek yönlü işlev yani, tersine çevirmek pratik olarak mümkün olmayan bir fonksiyondur.[1] İdeal olarak, belirli bir hash üreten bir mesajı bulmanın tek yolu, kaba kuvvet arama bir eşleşme oluşturup oluşturmadıklarını veya bir gökkuşağı masa eşleşen karmalar. Kriptografik hash fonksiyonları, modern kriptografinin temel bir aracıdır.[2]

İdeal kriptografik hash fonksiyonu aşağıdaki ana özelliklere sahiptir:

  • bu belirleyici yani aynı mesaj her zaman aynı hash ile sonuçlanır
  • herhangi bir mesajın hash değerini hesaplamak hızlıdır
  • belirli bir karma değeri veren bir mesaj oluşturmak mümkün değildir (yani, verilen karma değerini oluşturan işlemi tersine çevirmek)
  • aynı hash değerine sahip iki farklı mesaj bulmak mümkün değildir
  • Bir mesajdaki küçük bir değişiklik, karma değerini o kadar büyük ölçüde değiştirmelidir ki, yeni karma değeri eski karma değerle ilintisiz görünür (çığ etkisi )[3]

Kriptografik hash fonksiyonlarının birçok bilgi Güvenliği uygulamalar, özellikle dijital imzalar, mesaj doğrulama kodları (MAC'ler) ve diğer formlar kimlik doğrulama. Sıradan olarak da kullanılabilirler karma işlevler, verileri dizine eklemek için karma tablolar, için parmak izi, yinelenen verileri algılamak veya dosyaları benzersiz şekilde tanımlamak için ve sağlama toplamları yanlışlıkla veri bozulmasını tespit etmek için. Aslında, bilgi güvenliği bağlamlarında, kriptografik karma değerler bazen (dijital) parmak izleri, sağlama toplamları, ya da sadece karma değerlerTüm bu terimler, oldukça farklı özelliklere ve amaçlara sahip daha genel işlevler anlamına gelse de.

Özellikleri

Çoğu kriptografik hash işlevi, bir dizi girdi olarak herhangi bir uzunlukta ve sabit uzunlukta bir hash değeri üretir.

Bir kriptografik hash işlevi, bilinen her şeye dayanabilmelidir. kriptanalitik saldırı türleri. Teorik kriptografide, bir kriptografik karma fonksiyonun güvenlik seviyesi aşağıdaki özellikler kullanılarak tanımlanmıştır:

  • Ön görüntü direnci
    Bir hash değeri verildiğinde h herhangi bir mesajı bulmak zor olmalı m öyle ki h = karma (m). Bu kavram, bir tek yönlü işlev. Bu özelliğe sahip olmayan işlevler, ön görüntü saldırıları.
  • İkinci ön görüntü direnci
    Bir girdi verildiğinde m1farklı bir girdi bulmak zor olmalı m2 öyle ki karma (m1) = karma (m2). Bu özellik bazen şu şekilde anılır: zayıf çarpışma direnci. Bu özelliğe sahip olmayan işlevler, ikinci ön görüntü saldırıları.
  • Çarpışma direnci
    İki farklı mesaj bulmak zor olmalı m1 ve m2 öyle ki karma (m1) = karma (m2). Böyle bir çifte kriptografik denir karma çarpışma. Bu özellik bazen şu şekilde anılır: güçlü çarpışma direnci. Görüntü öncesi direnç için gerekenden en az iki kat daha uzun bir karma değer gerektirir; aksi takdirde çarpışmalar bir tarafından bulunabilir doğum günü saldırısı.[4]

Çarpışma direnci, ikinci görüntü öncesi direnci ifade eder, ancak ön görüntü direnci anlamına gelmez.[5] Daha zayıf varsayım, teorik kriptografide her zaman tercih edilir, ancak pratikte, yalnızca ikinci görüntü öncesi dirençli bir karma işlevi güvensiz kabul edilir ve bu nedenle gerçek uygulamalar için önerilmez.

Gayri resmi olarak, bu özellikler şu anlama gelir: kötü niyetli düşman özetini değiştirmeden giriş verilerini değiştiremez veya değiştiremez. Bu nedenle, iki dizge aynı özete sahipse, aynı olduklarından çok emin olabilirsiniz. İkinci ön görüntü direnci, bir saldırganın kontrol edemediği bir belgeyle aynı karmaya sahip bir belge oluşturmasını engeller. Çarpışma direnci, bir saldırganın aynı hash ile iki farklı belge oluşturmasını engeller.

Bu kriterleri karşılayan bir işlev, yine de istenmeyen özelliklere sahip olabilir. Şu anda popüler kriptografik hash işlevleri, uzunluk uzatma saldırılar: verilen karma (m) ve len (m) Ama değil muygun olanı seçerek m bir saldırgan hesaplayabilir karma (mm), burada ∥ gösterir birleştirme.[6] Bu özellik, karma işlevlere dayalı olarak saf kimlik doğrulama şemalarını kırmak için kullanılabilir. HMAC inşaat bu sorunlar etrafında çalışır.

Pratikte, birçok pratik kullanım için çarpışma direnci yetersizdir. Çarpışma direncine ek olarak, bir düşmanın büyük ölçüde benzer özlere sahip iki mesaj bulması imkansız olmalıdır; veya sadece özeti verildiğinde, veriler hakkında herhangi bir yararlı bilgiyi çıkarmak için. Özellikle, bir hash işlevi mümkün olduğu kadar bir rastgele işlev (genellikle bir rastgele oracle güvenlik kanıtlarında) belirleyici ve verimli bir şekilde hesaplanabilirken. Bu, aşağıdaki gibi işlevleri dışlar SWIFFT ideal kafeslerdeki bazı problemlerin hesaplama açısından zor olduğu, ancak doğrusal bir fonksiyon olarak bu ek özellikleri karşılamadığı varsayıldığında çarpışmaya dirençli olduğu kesin olarak kanıtlanabilen fonksiyon.[7]

Sağlama toplamı algoritmaları, örneğin CRC32 ve diğeri döngüsel artıklık denetimleri, çok daha zayıf gereksinimleri karşılamak üzere tasarlanmıştır ve genellikle kriptografik karma işlevler olarak uygun değildir. Örneğin, mesaj bütünlüğü için bir CRC kullanıldı. WEP şifreleme standardı, ancak sağlama toplamının doğrusallığından yararlanan bir saldırı kolayca keşfedildi.

Zorluk derecesi

Kriptografik uygulamada, "zor" genellikle "sistemin güvenliği önemli görüldüğü sürece sistemi kırması engellenmesi gereken herhangi bir düşmanın erişemeyeceği neredeyse kesin" anlamına gelir. Kötü niyetli bir ajanın göreve koyabileceği çaba genellikle beklenen kazancıyla orantılı olduğundan, terimin anlamı bu nedenle uygulamaya biraz bağlıdır. Bununla birlikte, ihtiyaç duyulan çaba genellikle özet uzunluğu ile çoğaldığından, işlem gücündeki bin katlık bir avantaj bile, ikincisine birkaç düzine bit eklenerek etkisiz hale getirilebilir.

Sınırlı bir mesaj kümesinden seçilen mesajlar için, örneğin şifreler veya diğer kısa mesajlar, setteki tüm olası mesajları deneyerek bir karmayı tersine çevirmek mümkün olabilir. Kriptografik hash işlevleri genellikle hızlı bir şekilde hesaplanacak şekilde tasarlandığından, özel anahtar türetme işlevleri daha büyük bilgi işlem kaynakları gerektiren kaba kuvvet saldırıları daha zor.

Bazılarında teorik analizler "zor" ifadesinin belirli bir matematiksel anlamı vardır, örneğin "çözülemez asimptotik polinom zamanı ". Bu tür yorumlar zorluk çalışmasında önemlidir kanıtlanabilir güvenli kriptografik hash fonksiyonları ancak genellikle pratik güvenlikle güçlü bir bağlantısı yoktur. Örneğin, bir üstel zaman algoritma bazen yine de uygun bir saldırı yapacak kadar hızlı olabilir. Tersine, bir polinom zaman algoritması (örneğin, n20 adımlar n-digit anahtarlar) herhangi bir pratik kullanım için çok yavaş olabilir.

İllüstrasyon

Kriptografik bir hash'in potansiyel kullanımının bir örneği aşağıdaki gibidir: Alice zor bir matematik problemi yaratır Bob ve çözdüğünü iddia ediyor. Bob bunu kendisi denemek istiyor ama yine de Alice'in blöf yapmadığından emin olmak istiyor. Bu nedenle, Alice çözümünü yazar, hash değerini hesaplar ve Bob'a hash değerini söyler (çözümü gizli tutarken). Ardından, Bob birkaç gün sonra çözümü kendisi bulduğunda, Alice çözüme sahip olduğunu daha önce ortaya çıkararak ve Bob'a hash yaptırarak kanıtlayabilir ve daha önce kendisine verilen hash değeriyle eşleşip eşleşmediğini kontrol edebilir. (Bu basit bir örnektir. taahhüt şeması; fiili uygulamada, Alice ve Bob genellikle bilgisayar programları olacak ve sır, iddia edilen bir bulmaca çözümünden daha az kolayca aldatılan bir şey olacaktır.)

Başvurular

Mesajların ve dosyaların bütünlüğünü doğrulama

Güvenli hash'lerin önemli bir uygulaması, mesaj bütünlüğü. İletimden önce ve sonra hesaplanan ileti özetlerinin (ileti üzerindeki karma özetler) karşılaştırılması, iletide herhangi bir değişiklik yapılıp yapılmadığını belirleyebilir. dosya.

MD5, SHA-1 veya SHA-2 karma özetler bazen indirilen dosyaların bütünlüğünün doğrulanmasına izin vermek için web sitelerinde veya forumlarda yayınlanır,[8] kullanılarak alınan dosyalar dahil dosya paylaşımı gibi yansıtma. Bu uygulama, bir güven zinciri karmalar güvenilir bir sitede (genellikle kaynak site) yayınlandığı sürece HTTPS. Bir kriptografik karma ve bir güven zinciri kullanmak, dosyadaki kötü niyetli değişiklikleri algılar. Diğer hata tespit kodları gibi döngüsel artıklık denetimleri yalnızca dosyanın kötü niyetli olmayan değişikliklerine karşı engelleyin.

İmza oluşturma ve doğrulama

Neredeyse hepsi elektronik imza şemalar, mesaj üzerinden hesaplanacak bir kriptografik hash gerektirir. Bu, imza hesaplamasının nispeten küçük, statik boyutlu karma özet üzerinde gerçekleştirilmesine izin verir. İmza ve mesaj üzerinde yeniden hesaplanan karma özet verildiğinde imza doğrulaması başarılı olursa, mesaj gerçek olarak kabul edilir. Dolayısıyla, kriptografik karmanın mesaj bütünlüğü özelliği, güvenli ve verimli dijital imza şemaları oluşturmak için kullanılır.

şifre doğrulama

Parola doğrulama genellikle kriptografik karmalara dayanır. Tüm kullanıcı şifrelerinin saklanması açık metin şifre dosyası ele geçirilirse büyük bir güvenlik ihlaline neden olabilir. Bu tehlikeyi azaltmanın bir yolu, her parolanın yalnızca karma özetini saklamaktır. Bir kullanıcının kimliğini doğrulamak için, kullanıcı tarafından sunulan şifre karma hale getirilir ve depolanan karma ile karşılaştırılır. Parola hashing işlemi gerçekleştirildiğinde bir parola sıfırlama yöntemi gereklidir; orijinal şifreler saklanan karma değerden yeniden hesaplanamaz.

Standart kriptografik hash fonksiyonları, hızlı bir şekilde hesaplanacak şekilde tasarlanmıştır ve sonuç olarak, tahmin edilen şifreleri yüksek oranlarda denemek mümkündür. Yaygın grafik işleme birimleri her saniye milyarlarca olası şifreyi deneyebilir. Gerçekleştiren parola karma işlevleri anahtar germe - gibi PBKDF2, şifrelemek veya Argon2 - gerçekleştirmek için gereken süreyi (ve bazı durumlarda bilgisayar belleğini) artırmak için yaygın olarak kriptografik bir karmanın tekrarlanan çağrılarını kullanın kaba kuvvet saldırıları depolanmış parola karma özetlerinde. Bir parola karması, büyük bir rastgele, gizli olmayan tuz parola karması ile saklanabilen değer. Tuz, parola karmasının çıktısını rastgele hale getirerek, bir düşmanın parola tablolarını depolamasını ve önceden hesaplanmış şifre karma özetinin karşılaştırılabileceği karma değerler.

Bir parola karma işlevinin çıktısı, bir şifreleme anahtarı olarak da kullanılabilir. Bu nedenle parola karmaları, parola tabanlı olarak da bilinir anahtar türetme işlevleri (PBKDF'ler).

İşin kanıtı

İş kanıtı sistemi (veya protokolü veya işlevi) caydırıcı bir ekonomik önlemdir. hizmet reddi saldırıları ve hizmet talebinde bulunan kişiden bir miktar çalışma gerektirerek bir ağdaki istenmeyen posta gibi diğer hizmet suistimalleri, genellikle bir bilgisayarın işlem süresi anlamına gelir. Bu planların temel bir özelliği asimetrisidir: iş, talep eden tarafında orta derecede zor (ancak uygulanabilir), ancak servis sağlayıcı tarafından kontrol edilmesi kolay olmalıdır. Popüler bir sistem - kullanılan Bitcoin madenciliği ve Hashcash - İşin yapıldığını kanıtlamak, Bitcoin'de bir madencilik ödülünün kilidini açmak için ve Hashcash'te bir e-posta göndermek için iyi niyet belirteci olarak kısmi hash inversions kullanır. Gönderenin, hash değeri bir dizi sıfır bit ile başlayan bir mesaj bulması gerekir. Gönderenin geçerli bir mesajı bulmak için yapması gereken ortalama iş, karma değerde gerekli olan sıfır bit sayısında üsseldir, alıcı ise tek bir hash fonksiyonu yürüterek mesajın geçerliliğini doğrulayabilir. Örneğin, Hashcash'te, bir gönderenden 160 bitlik SHA-1 hash değerinin ilk 20 biti sıfır olan bir başlık oluşturması istenir. Gönderen ortalama olarak 2 denemek zorunda kalacak19 kez geçerli bir başlık bulmak için.

Dosya veya veri tanımlayıcı

Bir ileti özeti, bir dosyayı güvenilir bir şekilde tanımlamanın bir yolu olarak da hizmet edebilir; birkaç kaynak kodu yönetimi sistemler dahil Git, Mercurial ve Monoton, kullan sha1sum onları benzersiz şekilde tanımlamak için çeşitli içerik türleri (dosya içeriği, dizin ağaçları, soy bilgileri, vb.). Hashes, üzerindeki dosyaları tanımlamak için kullanılır. Eşler arası dosya paylaşımı ağlar. Örneğin, bir ed2k bağlantısı, bir MD4 -variant hash, dosya boyutuyla birleştirilerek dosya kaynaklarını bulmak, dosyayı indirmek ve içeriğini doğrulamak için yeterli bilgi sağlar. Mıknatıs bağlantıları başka bir örnek. Bu tür dosya karmaları genellikle bir karma liste veya a karma ağaç ek faydalar sağlar.

A'nın ana uygulamalarından biri Özet fonksiyonu hızlı veri aramasına izin vermektir. karma tablo. Belirli bir türden hash fonksiyonları olan kriptografik hash fonksiyonları da bu uygulamaya iyi bir şekilde katkıda bulunur.

Bununla birlikte, standart karma işlevlerle karşılaştırıldığında, kriptografik karma işlevler hesaplama açısından çok daha pahalı olma eğilimindedir. Bu nedenle, kullanıcıların potansiyel olarak kötü niyetli katılımcılar tarafından sahtecilik (beklenen verilerle aynı özetle veri oluşturma) olasılığına karşı kendilerini korumalarının gerekli olduğu bağlamlarda kullanılma eğilimindedirler.

Blok şifrelere dayalı karma işlevler

Kullanmanın birkaç yöntemi vardır. blok şifreleme kriptografik bir hash işlevi oluşturmak için, özellikle bir tek yönlü sıkıştırma işlevi.

Yöntemler benzer şifreleme işlem modlarını engelle genellikle şifreleme için kullanılır. Dahil olmak üzere birçok iyi bilinen hash işlevi MD4, MD5, SHA-1 ve SHA-2 amaç için tasarlanmış blok-şifre benzeri bileşenlerden oluşturulmuştur ve sonuçta ortaya çıkan işlevin tersine çevrilememesini sağlamak için geri bildirim sağlanır. SHA-3 finalistler, blok-şifre benzeri bileşenlere sahip işlevler içeriyordu (ör. Skein, BLAKE ) işlev sonunda seçilmiş olsa da, Keccak üzerine inşa edildi kriptografik sünger yerine.

Gibi standart bir blok şifresi AES bu özel blok şifrelerinin yerine kullanılabilir; bu yararlı olabilir yerleşik sistem minimum kod boyutu veya donanım alanıyla hem şifreleme hem de hashing uygulaması gerekir. Ancak, bu yaklaşımın verimlilik ve güvenlik açısından maliyetleri olabilir. Hash fonksiyonlarındaki şifreler, hashing için oluşturulmuştur: büyük anahtarlar ve bloklar kullanırlar, anahtarları her blokta verimli bir şekilde değiştirebilirler ve direnç için tasarlanmış ve incelenmişlerdir. ilgili anahtar saldırılar. Genel amaçlı şifrelerin farklı tasarım hedefleri olma eğilimindedir. Özellikle, AES, uzun hash değerleri oluşturmak için kullanılmasını önemsiz kılan anahtar ve blok boyutlarına sahiptir; Anahtar her bloğu değiştirdiğinde AES şifrelemesi daha az verimli hale gelir; ve ilgili anahtar saldırıları, bir karma işlevde kullanım için şifrelemeden potansiyel olarak daha az güvenli hale getirir.

Hash fonksiyonu tasarımı

Merkle-Damgård inşaatı

Merkle-Damgård hash yapısı.

Bir karma işlevi, rastgele uzunluktaki bir mesajı sabit uzunluklu bir çıktıya işleyebilmelidir. Bu, girişi bir dizi eşit boyutlu bloğa bölerek ve bunlar üzerinde sırayla bir tek yönlü sıkıştırma işlevi. Sıkıştırma işlevi, hashing için özel olarak tasarlanabilir veya bir blok şifresinden oluşturulabilir. Merkle-Damgård yapısıyla oluşturulan bir hash işlevi, sıkıştırma işlevi kadar çarpışmalara da dayanıklıdır; tam hash işlevi için herhangi bir çarpışma, sıkıştırma işlevindeki bir çarpışmaya kadar izlenebilir.

Son işlenen blok da açık bir şekilde olmalıdır uzunluk yastıklı; bu, bu yapının güvenliği için çok önemlidir. Bu yapıya Merkle-Damgård inşaatı. Dahil olmak üzere en yaygın klasik karma işlevleri SHA-1 ve MD5, bu formu al.

Dar boruya karşı geniş boru

Karma çıktının boyutunun dahili durum boyutuna eşit olduğu Merkle-Damgård yapısının basit bir uygulaması (her sıkıştırma adımı arasında), dar boru karma tasarım. Bu tasarım, aşağıdakiler dahil birçok doğal kusura neden olur: uzunluk uzatma, çoklu birleşimler,[9] uzun mesaj saldırıları,[10] üret ve yapıştır saldırıları,[kaynak belirtilmeli ] ve paralelleştirilemez. Sonuç olarak, modern hash işlevleri, geniş boru Merkle-Damgård yapısının ince ayarlarından daha büyük iç durum boyutuna sahip yapılar[9] gibi yeni yapılara sünger yapımı ve HAIFA yapımı.[11] Katılımcılardan hiçbiri NIST karma işlevi rekabeti klasik bir Merkle – Damgård yapısını kullanın.[12]

Bu arada, SHA-512 / 256'da kullanıldığı gibi daha uzun bir karmanın çıktısını kesmek de bu saldırıların çoğunu yener.[13]

Diğer kriptografik ilkelleri oluşturmada kullanın

Karma işlevler, diğer kriptografik ilkelleri oluşturmak için kullanılabilir. Bu diğer ilkellerin kriptografik olarak güvenli olması için onları doğru bir şekilde oluşturmaya özen gösterilmelidir.

Mesaj kimlik doğrulama kodları (MAC'ler) (anahtarlı karma işlevler olarak da adlandırılır) genellikle karma işlevlerden oluşturulur. HMAC böyle bir MAC.

Tıpkı blok şifreleri hash fonksiyonları oluşturmak için kullanılabilir, hash fonksiyonları blok şifreleri oluşturmak için kullanılabilir. Luby-Rackoff Karma işlevlerin kullanıldığı yapılar, temeldeki karma işlevi güvenliyse kanıtlanabilir şekilde güvenli olabilir. Ayrıca, birçok karma işlevi (dahil SHA-1 ve SHA-2 ) özel amaçlı bir blok şifresi kullanılarak oluşturulur. Davies-Meyer veya başka bir yapı. Bu şifre, aynı güvenlik garantileri olmadan geleneksel bir çalışma modunda da kullanılabilir. Görmek SHACAL, AYI ve ASLAN.

Sözde rasgele sayı üreteçleri (PRNG'ler), karma işlevler kullanılarak oluşturulabilir. Bu, rastgele (gizli) bir tohumu bir sayaçla birleştirip hashing yaparak yapılır.

Gibi bazı hash fonksiyonları Skein, Keccak, ve RadioGatún keyfi olarak uzun bir akış çıktılar ve bir kesintisiz şifreleme ve akış şifreleri, sabit uzunlukta özet karma işlevlerinden de oluşturulabilir. Genellikle bu, önce bir kriptografik olarak güvenli sözde rasgele sayı üreteci ve sonra rastgele bayt akışını kullanarak anahtar akışı. MÜHÜR kullanan bir akış şifresidir SHA-1 daha sonra karma algoritma ile aşağı yukarı ilgisiz bir anahtar akışı oluşturucuda kullanılan dahili tablolar oluşturmak için. SEAL'in SHA-1 kadar güçlü (veya zayıf) olması garanti edilmez. Benzer şekilde, temel genişletme HC-128 ve HC-256 akış şifreleri yoğun bir şekilde SHA-256 Özet fonksiyonu.

Birleştirme

Birleştirme Birden çok karma işlevden gelen çıktılar, birleştirilmiş sonuçta bulunan algoritmaların en güçlüsü kadar iyi çarpışma direnci sağlar.[kaynak belirtilmeli ] Örneğin, eski sürümleri Aktarım Katmanı Güvenliği (TLS) ve Güvenli Yuva Katmanı (SSL) sıralı kullanılmış MD5 ve SHA-1 toplamlar.[14][15] Bu, karma işlevlerden birinde çarpışmaları bulmaya yönelik bir yöntemin, her iki karma işlevi tarafından korunan verileri bozmamasını sağlar.[kaynak belirtilmeli ]

İçin Merkle-Damgård inşaatı Hash fonksiyonları, birleştirilmiş fonksiyon, en güçlü bileşeni kadar çarpışmaya dayanıklıdır, ancak çarpışmaya daha dayanıklı değildir.[kaynak belirtilmeli ] Antoine Joux 2 çarpışmanın yol açtığı gözlemlendi n-Çarpışmalar: Bir saldırganın aynı MD5 hash değerine sahip iki mesaj bulması mümkünse, saldırgan daha fazla zorluk çekmeden aynı MD5 karmalarıyla istediği kadar mesaj bulabilir.[16] Aynı MD5 karma değerine sahip n mesaj arasında, SHA-1'de bir çakışma olması muhtemeldir. SHA-1 çarpışmasını bulmak için gereken ek çalışma (üstel doğum günü aramasının ötesinde) yalnızca polinom zamanı.[17][18]

Kriptografik karma algoritmalar

Birçok kriptografik karma algoritma vardır; bu bölüm, nispeten sık başvurulan birkaç algoritmayı listeler. Daha kapsamlı bir liste, aşağıdakileri içeren sayfada bulunabilir: kriptografik hash fonksiyonlarının karşılaştırılması.

MD5

MD5, 1991 yılında Ronald Rivest tarafından daha önceki bir hash fonksiyonu MD4'ün yerini alacak şekilde tasarlandı ve 1992'de şu şekilde belirtildi: RFC 1321. MD5'e karşı çarpışmalar saniyeler içinde hesaplanabilir ve bu da algoritmayı kriptografik bir hash gereken çoğu kullanım durumu için uygunsuz kılar. MD5, 128 bitlik (16 bayt) bir özet üretir.

SHA-1

SHA-1, ABD Hükümeti'nin bir parçası olarak geliştirilmiştir. Bitirme taşı proje. Algoritmanın orijinal spesifikasyonu - şimdi genellikle SHA-0 olarak adlandırılır - 1993 yılında Secure Hash Standard, FIPS PUB 180, ABD hükümeti standartlar kurumu NIST (Ulusal Standartlar ve Teknoloji Enstitüsü) tarafından yayınlandı. Yayınlandıktan kısa bir süre sonra NSA tarafından geri çekilmiş ve 1995 yılında FIPS PUB 180-1'de yayınlanan ve genel olarak SHA-1 olarak adlandırılan revize edilmiş versiyonun yerini almıştır. Tam SHA-1 algoritmasına karşı çarpışmalar, parçalanmış saldırı ve hash işlevi bozuk kabul edilmelidir. SHA-1, 160 bitlik (20 bayt) bir karma özet üretir.

SHA-0, SHA-2 ve SHA-3 gibi diğer Standart Karma Algoritmalar ile çelişse bile, dokümanlar SHA-1'e sadece "SHA" olarak başvurabilir.

RIPEMD-160

RIPEMD (RACE Integrity Primitives Evaluation Message Digest) Katholieke Universiteit Leuven'deki COSIC araştırma grubunda Hans Dobbertin, Antoon Bosselaers ve Bart Preneel tarafından Belçika, Leuven'de geliştirilen ve ilk olarak 1996'da yayınlanan bir kriptografik hash fonksiyonları ailesidir. RIPEMD MD4'te kullanılan tasarım ilkelerine dayanıyordu ve performans açısından daha popüler SHA-1'e benzer. RIPEMD-160 ancak kırılmadı. Adından da anlaşılacağı gibi, RIPEMD-160, 160 bitlik (20 bayt) bir karma özet üretir.

Girdap

Whirlpool, Vincent Rijmen ve 2000 yılında ilk kez tanımlayan Paulo S. L. M. Barreto tarafından tasarlanan bir şifreleme hash fonksiyonudur. Whirlpool, Gelişmiş Şifreleme Standardının (AES) büyük ölçüde değiştirilmiş bir versiyonuna dayanmaktadır. Whirlpool, 512 bitlik (64 bayt) bir karma özet üretir.

SHA-2

SHA-2 (Secure Hash Algorithm 2), ilk olarak 2001 yılında yayınlanan, Amerika Birleşik Devletleri Ulusal Güvenlik Ajansı (NSA) tarafından tasarlanan bir dizi kriptografik karma işlevidir. Tek yönlü sıkıştırma işlevinden Merkle-Damgård yapısı kullanılarak oluşturulmuştur. kendisi (sınıflandırılmış) özel bir blok şifresinden Davies-Meyer yapısı kullanılarak oluşturulmuştur.

SHA-2 temelde iki hash algoritmasından oluşur: SHA-256 ve SHA-512. SHA-224, farklı başlangıç ​​değerlerine ve kesilmiş çıktıya sahip bir SHA-256 varyantıdır. SHA-384 ve daha az bilinen SHA-512/224 ve SHA-512/256, SHA-512'nin varyantlarıdır. SHA-512, SHA-256'dan daha güvenlidir ve genellikle aşağıdaki gibi 64 bit makinelerde SHA-256'dan daha hızlıdır: AMD64.

Bit cinsinden çıktı boyutu "SHA" adı uzantısıyla verilir, bu nedenle SHA-224, 224 bit (28 bayt) çıktı boyutuna sahiptir, SHA-256 32 bayt üretir, SHA-384 48 bayt üretir ve son olarak SHA -512 64 bayt üretir.

SHA-3

SHA-3 (Secure Hash Algorithm 3), 5 Ağustos 2015'te NIST tarafından piyasaya sürüldü. SHA-3, daha geniş kriptografik ilkel Keccak ailesinin bir alt kümesidir. Keccak algoritması Guido Bertoni, Joan Daemen, Michael Peeters ve Gilles Van Assche'nin eseridir. Keccak, akış şifresi gibi diğer kriptografik ilkelleri oluşturmak için de kullanılabilen bir sünger yapısına dayanıyor. SHA-3, SHA-2: 224, 256, 384 ve 512 bit ile aynı çıktı boyutlarını sağlar.

Yapılandırılabilir çıktı boyutları, SHAKE-128 ve SHAKE-256 işlevleri kullanılarak da elde edilebilir. Burada ismin -128 ve -256 uzantıları, bit cinsinden çıktı boyutundan ziyade işlevin güvenlik gücünü ifade eder.

BLAKE2

BLAKE'nin BLAKE2 adlı geliştirilmiş bir sürümü 21 Aralık 2012'de duyuruldu. Yaygın olarak kullanılan ancak bozuk MD5 ve SHA'nın yerini almak amacıyla Jean-Philippe Aumasson, Samuel Neves, Zooko Wilcox-O'Hearn ve Christian Winnerlein tarafından oluşturuldu. -1 algoritma. 64 bit x64 ve ARM mimarilerinde çalıştırıldığında, BLAKE2b; SHA-3, SHA-2, SHA-1 ve MD5'ten daha hızlıdır. BLAKE ve BLAKE2, SHA-3 gibi standartlaştırılmamış olsa da, BLAKE2, aşağıdakiler dahil birçok protokolde kullanılmıştır. Argon2 Modern CPU'larda sunduğu yüksek verimlilik için parola karması. BLAKE, SHA-3 için bir aday olduğundan, BLAKE ve BLAKE2, yapılandırılabilir bir çıktı boyutu da dahil olmak üzere SHA-3 ile aynı çıktı boyutlarını sunar.

BLAKE3

BLAKE2'nin geliştirilmiş bir versiyonu olan BLAKE3, 9 Ocak 2020'de duyuruldu. Jack O'Connor, Jean-Philippe Aumasson, Samuel Neves ve Zooko Wilcox-O'Hearn tarafından oluşturuldu. BLAKE3, birden çok değişkeni olan algoritma aileleri olan BLAKE ve BLAKE2'nin aksine tek bir algoritmadır. BLAKE3 sıkıştırma işlevi yakından BLAKE2'lerinkine dayanmaktadır, en büyük fark, mermi sayısının 10'dan 7'ye düşürülmesidir. Dahili olarak, BLAKE3 bir Merkle ağacı ve BLAKE2'den daha yüksek paralellik derecelerini destekler.

Kriptografik hash algoritmalarına saldırılar

Kriptografik hash işlevlerinin uzun bir listesi vardır, ancak çoğunun savunmasız olduğu ve kullanılmaması gerektiği bulunmuştur. Örneğin, NIST 51 karma işlevi seçti[19] SHA-3 hash yarışmasının 1. turu için aday olarak, bunlardan 10'u bozuk kabul edildi ve 16'sı önemli zayıflıklar gösterdi ve bu nedenle bir sonraki tura geçemedi; ana makalede daha fazla bilgi bulunabilir. NIST karma işlevi yarışmaları.

Bir karma işlevi hiç kırılmamış olsa bile, başarılı saldırı zayıflatılmış bir varyanta karşı uzmanların güvenini zayıflatabilir. Örneğin, Ağustos 2004'te, MD5 dahil, o zamanlar popüler olan birkaç karma işlevde çarpışmalar bulundu.[20] Bu zayıflıklar, zayıf hash işlevlerinden türetilen daha güçlü algoritmaların güvenliğini sorguladı - özellikle, SHA-1 (SHA-0'ın güçlendirilmiş bir sürümü), RIPEMD-128 ve RIPEMD-160 (RIPEMD'nin her ikisi de güçlendirilmiş sürümleri).[kaynak belirtilmeli ]

12 Ağustos 2004'te Joux, Carribault, Lemuel ve Jalby, tam SHA-0 algoritması için bir çarpışma duyurdu.[kaynak belirtilmeli ] Joux vd. bunu Chabaud ve Joux saldırısının bir genellemesini kullanarak gerçekleştirdi. Çarpışmanın karmaşıklığı olduğunu buldular 251 ve yaklaşık 80.000 CPU saati aldı. Süper bilgisayar 256 ile Itanium 2 işlemciler - süper bilgisayarın 13 günlük tam zamanlı kullanımına eşdeğerdir.[kaynak belirtilmeli ]

Şubat 2005'te, SHA-1'e yapılan bir saldırı yaklaşık 2'de çarpışmayı bulacaktı.69 2 yerine hashing işlemleri80 160 bitlik bir hash işlevi için bekleniyordu. Ağustos 2005'te, SHA-1'e 2'de çarpışmalar bulacak başka bir saldırı bildirildi.63 operasyonlar. SHA-1'in diğer teorik zayıflıkları bilinmektedir:[21][22] ve Şubat 2017'de Google, SHA-1'de bir çarpışma duyurdu.[23] Güvenlik araştırmacıları, yeni uygulamaların SHA ailesinin sonraki üyelerini kullanarak bu sorunları önleyebileceğini önermektedir. SHA-2 veya rastgele hash oluşturma gibi teknikler kullanma[24][1] çarpışma direnci gerektirmeyen.

Başarılı, pratik bir saldırı, sertifikalarda kullanılan MD5'i kırdı. taşıma katmanı Güvenliği 2008 yılında.[25]

Birçok kriptografik karma, Merkle-Damgård inşaatı. Bir Merkle-Damgård yapısının tam çıktısını doğrudan kullanan tüm kriptografik karmalar, uzunluk uzatma saldırıları. Bu, MD5, SHA-1, RIPEMD-160, Whirlpool ve SHA-256 / SHA-512 karma algoritmalarını bu özel saldırıya karşı savunmasız hale getirir. SHA-3, BLAKE2, BLAKE3 ve kesilmiş SHA-2 varyantları bu tür saldırılara karşı savunmasız değildir.[kaynak belirtilmeli ]

Hashing uygulanmış parolalara yapılan saldırılar

Karma değerlerin yaygın bir kullanımı, parola kimlik doğrulama verileri. Kullanıcı şifrelerinin düz metnini saklamak yerine, kontrollü erişim sistemi her kullanıcının şifresinin karmasını bir dosya veya veri tabanında saklar. Birisi erişim istediğinde, gönderdiği parola karma hale getirilir ve saklanan değerle karşılaştırılır. Veritabanı çalınırsa (çok sık karşılaşılan bir olay)[26]), hırsız şifrelere değil, yalnızca hash değerlerine sahip olacaktır.

Ancak çoğu insan şifreleri tahmin edilebilir şekillerde seçer. Yaygın şifrelerin listeleri geniş çapta dağıtılır ve birçok şifre yeterince kısadır, hızlı karmalar kullanıldığında tüm olası kombinasyonlar test edilebilir.[27] Kullanımı kriptografik tuz ön hesaplama karma değerlerinden dosyalar oluşturmak gibi bazı saldırıları önler, örn. gökkuşağı masaları. Ancak saniyede 100 milyar test düzeyinde arama yapmak, üst düzey grafik işlemcileri tuzla bile doğrudan saldırıları mümkün kılar.[28][29] Birleşik Devletler Ulusal Standartlar ve Teknoloji Enstitüsü adı verilen özel karmalar kullanılarak parolaların saklanmasını önerir anahtar türetme işlevleri (KDF'ler) kaba kuvvet aramalarını yavaşlatmak için oluşturulmuştur.[30]:5.1.1.2 Yavaş karmalar şunları içerir: pbkdf2, bcrypt, şifrelemek, argon2, Balon ve bazı yeni modlar Unix şifresi. Yürütmeyi yavaşlatmak için birden çok karma gerçekleştiren KSF'ler için NIST, 10.000 veya daha fazla yineleme sayısı önerir.[30]:5.1.1.2

Ayrıca bakınız

Referanslar

Alıntılar

  1. ^ a b Shai Halevi ve Hugo Krawczyk, Randomize Hashing ve Dijital İmzalar
  2. ^ Schneier, Bruce. "MD5 ve SHA'nın Kriptanalizi: Yeni Bir Standart Zamanı". Bilgisayar Dünyası. Arşivlenen orijinal 2016-03-16 tarihinde. Alındı 2016-04-20. Tek yönlü karma işlevler, şifreleme algoritmalarından çok daha fazlası, modern kriptografinin temel unsurlarıdır.
  3. ^ Al-Kuwari, Saif; Davenport, James H .; Bradford, Russell J. (2011). "Şifreleme Karma İşlevleri: Son Tasarım Eğilimleri ve Güvenlik Kavramları". Alıntı dergisi gerektirir | günlük = (Yardım Edin)
  4. ^ Katz ve Lindell 2014, s. 155-157, 190, 232.
  5. ^ Rogaway ve Karides 2004, Sec. 5. Çıkarımlar.
  6. ^ Duong, Thai; Juliano, Rizzo. "Flickr'ın API İmza Sahteciliği Güvenlik Açığı".
  7. ^ Lyubashevsky vd. 2008, s. 54–72.
  8. ^ Perrin, Çad (5 Aralık 2007). "Yazılım indirmelerini doğrulamak için MD5 karmalarını kullanın". TechRepublic. Alındı 2 Mart, 2013.
  9. ^ a b Lucks, Stefan (2004). "Yinelenen Karma İşlevleri için Tasarım İlkeleri" - Cryptology ePrint Archive, Report 2004/253 aracılığıyla. Alıntı dergisi gerektirir | günlük = (Yardım Edin)
  10. ^ Kelsey ve Schneier 2005, s. 474–490.
  11. ^ Biham, Eli; Dunkelman, Orr (24 Ağustos 2006). Yinelemeli Karma İşlevleri İçin Çerçeve - HAIFA. İkinci NIST Şifreleme Karma Çalıştayı - Kriptoloji ePrint Arşivi aracılığıyla: Rapor 2007/278.
  12. ^ Nandi ve Paul 2010.
  13. ^ Dobraunig, Christoph; Eichlseder, Maria; Mendel, Florian (Şubat 2015). "SHA-224, SHA-512/224 ve SHA-512 / 256'nın Güvenlik Değerlendirmesi" (PDF). Alıntı dergisi gerektirir | günlük = (Yardım Edin)
  14. ^ Mendel vd., s. 145: Birleştirme ... genellikle uygulayıcılar tarafından hash işlevlerinde "bahisleri korumak" için kullanılır. MD5 formunun bir birleştiricisi
  15. ^ Harnik vd. 2005, s. 99: TLS'de önerildiği gibi hash işlevlerinin birleştirilmesinin ... güvenli kalan aday kadar güvenli olacağı garanti edilir.
  16. ^ Joux 2004, s. 306–316.
  17. ^ Finney, Hal (20 Ağustos 2004). "Karma İşlevlerle İlgili Daha Fazla Sorun". Kriptografi Posta Listesi. Arşivlenen orijinal Nisan 9, 2016. Alındı 25 Mayıs 2016.
  18. ^ Hoch ve Shamir 2008, s. 616-630.
  19. ^ Andrew Regenscheid, Ray Perlner, Shu-Jen Chang, John Kelsey, Mridul Nandi, Souradyuti Paul, SHA-3 Kriptografik Karma Algoritma Yarışmasının Birinci Turu Durum Raporu
  20. ^ XiaoyunWang, Dengguo Feng, Xuejia Lai, Hongbo Yu, Hash Fonksiyonları MD4, MD5, HAVAL-128 ve RIPEMD için Çakışmalar
  21. ^ Xiaoyun Wang, Yiqun Lisa Yin ve Hongbo Yu, Tam SHA-1'de Çarpışmaları Bulma
  22. ^ Bruce Schneier, SHA-1'in kriptanalizi (Wang ve diğerlerinin sonuçlarını ve sonuçlarını özetler)
  23. ^ Fox-Brewster, Thomas. "Google Eski Bir Kripto Algoritmasını 'Parçaladı' - İşte Web Güvenliği Açısından Neden Büyük Bu". Forbes. Alındı 2017-02-24.
  24. ^ Shai Halevi, Hugo Krawczyk, Randomize Hashing ile İlgili Güncelleme
  25. ^ Alexander Sotirov, Marc Stevens, Jacob Appelbaum, Arjen Lenstra, David Molnar, Dag Arne Osvik, Benne de Weger, MD5 bugün zararlı kabul edildi: Sahte bir CA sertifikası oluşturma, 29 Mart 2009'da erişildi.
  26. ^ Swinhoe, Dan (17 Nisan 2020). "21. yüzyılın en büyük 15 veri ihlali". CSO Magazine.
  27. ^ Goodin, Dan (2012-12-10). "25 GPU kümesi, her standart Windows şifresini 6 saatten kısa sürede kırar". Ars Technica. Alındı 2020-11-23.
  28. ^ Claburn, Thomas (14 Şubat 2019). "8 karakterli bir Windows NTLM şifresi kullanın mı? Yapmayın. Her biri 2,5 saatin altında kırılabilir". www.theregister.co.uk. Alındı 2020-11-26.
  29. ^ "Akıllara durgunluk veren GPU performansı". Improsec. 3 Ocak 2020.
  30. ^ a b Grassi Paul A. (Haziran 2017). SP 800-63B-3 - Dijital Kimlik Yönergeleri, Kimlik Doğrulama ve Yaşam Döngüsü Yönetimi. NIST. doi:10.6028 / NIST.SP.800-63b.

Kaynaklar

Dış bağlantılar