Anahtar germe - Key stretching

İçinde kriptografi, anahtar germe teknikler muhtemelen zayıf bir anahtar, tipik olarak bir parola veya parola, a karşı daha güvenli kaba kuvvet saldırısı kaynakları (zaman ve muhtemelen alan) artırarak olası her anahtarı test etmek gerekir. İnsanlar tarafından oluşturulan parolalar veya parolalar genellikle kısadır veya izin verecek kadar öngörülebilirdir. şifre kırma ve anahtar genişletme, tek bir şifre adayını denemenin temel adımını karmaşıklaştırarak bu tür saldırıları daha zor hale getirmeyi amaçlamaktadır. Anahtar genişletme ayrıca, bir kaba kuvvet saldırganının bakış açısından daha uzun bir anahtar uzunluğunu taklit ederek, anahtar uzunluğunun kısıtlandığı bazı gerçek dünya uygulamalarında güvenliği artırır.[1]

Anahtar uzatmayı gerçekleştirmenin birkaç yolu vardır. Bir yol uygulamaktır kriptografik karma işlevi veya a blok şifreleme bir döngüde tekrar tekrar. Örneğin, anahtarın bir şifre, anahtar program Şifrede, gerçekleştirilmesi belirli bir süre alacak şekilde değiştirilebilir. Diğer bir yol, büyük bellek gereksinimlerine sahip kriptografik karma işlevler kullanmaktır - bunlar, belleğe bağlı düşmanların saldırılarından rahatsız olmada etkili olabilir.

İşlem

Anahtar genişletme algoritmaları, bir giriş anahtarı alan ve daha sonra uzatılmış bir şifre oluşturmak için önemli ölçüde çaba sarf eden bir algoritmaya bağlıdır ( geliştirilmiş anahtar[kaynak belirtilmeli ]) rastgeleliği ve daha uzun anahtar uzunluğunu taklit eder. Algoritmanın bilinen bir kısayolu olmamalıdır, bu nedenle girişi ve şifreyi ilişkilendirmenin en etkili yolu, anahtar genişletme algoritmasının kendisini tekrar etmektir. Bu, kaba kuvvet saldırganlarını her girişim için aynı çabayı harcamaya zorlar. Bu ek çaba, belirli bir anahtar uzunluğuna sahip tüm tuşların kaba kuvvetli tuş aramasıyla karşılaştırılırsa, giriş anahtarı şu şekilde tanımlanabilir: gergin aynı uzunlukta.[1]

Anahtar genişletme, bir saldırganı iki seçenekle bırakır:

  • Gelişmiş anahtarın olası kombinasyonlarını deneyin, ancak gelişmiş anahtar yeterince uzunsa ve öngörülemezse bu mümkün değildir (yani,algoritma rastgeleliği yeterince iyi taklit eder ve saldırganın tüm genişletilmiş anahtar alanını denemesi gerekir)
  • Daha zayıf olan ilk anahtarın olası kombinasyonlarını deneyin, potansiyel olarak bir sözlük saldırısı İlk anahtar bir parola veya parola ise, ancak saldırganın her deneme için ek çabası, daha maliyetli hesaplama ve bellek tüketiminin beklenen kârdan daha ağır basması durumunda saldırıyı ekonomik olmayacaktır.

Saldırgan, kullanıcıyla aynı donanım sınıfını kullanıyorsa, her tahmin, kullanıcının işlenmesi için aynı süreyi alır (örneğin, bir saniye). Saldırgan, kullanıcıdan çok daha fazla bilgi işlem kaynağına sahip olsa bile, anahtar genişletme, herhangi bir yasal kullanıcı için sistemin kullanılabilirliğini ciddi bir şekilde etkilemeyecek şekilde saldırganı yavaşlatmaya devam edecektir. Bunun nedeni, kullanıcının bilgisayarının genişletme işlevini, kullanıcı parolasını girdikten sonra yalnızca bir kez hesaplamak zorunda kalması, saldırganın ise saldırıdaki her tahmin için hesaplaması gerektiğidir.

Bu süreç, orijinal anahtar-uzay entropisini değiştirmez. Anahtar germe algoritması belirleyici zayıf bir girdinin her zaman aynı geliştirilmiş anahtarı üretmesine izin verir, ancak bu nedenle geliştirilmiş anahtarı, giriş anahtarı alanından daha fazla olası kombinasyonla sınırlamaz. Sonuç olarak, bu saldırı, belirli türlere karşı korumasızsa savunmasız kalır. zaman hafızası değiş tokuşları geliştirmek gibi gökkuşağı masaları paralel olarak geliştirilmiş anahtar alanının birden çok örneğini hedeflemek için (etkin bir şekilde kısayol algoritmayı tekrarlamak için). Bu nedenle, anahtar genişletme genellikle tuzlama.[1]

Karma tabanlı

Birçok kitaplık, işlevlerinin bir parçası olarak anahtar genişletmeyi gerçekleştiren işlevler sağlar; görmek crypt (3) Örneğin. PBKDF2 bir paroladan bir şifreleme anahtarı oluşturmak içindir ve mutlaka parola kimlik doğrulaması için değildir. PBKDF2, çıktı bitlerinin sayısı, genellikle PBKDF2'de kullanılan dahili hash algoritmasından az veya ona eşitse, her ikisi için de kullanılabilir. SHA-2 (512 bit'e kadar) veya statik verileri şifrelemek için bir şifreleme anahtarı olarak kullanılır.

Güç ve zaman

Bu örnekler, bir kişisel bilgisayar yaklaşık 65.000 yapabilir SHA-1 bir saniyede karmalar. Böylece, anahtar genişletmeyi kullanan bir program 65.000 tur karma kullanabilir ve kullanıcıyı en fazla bir saniye geciktirebilir. Bir Temmuz 2019'dan itibaren 700 USD GPU bir saniyede 10 milyardan fazla SHA-1 karması yapabilir.[2]

Deneme parolasını veya parolasını test etmek genellikle bir karma işlem gerektirir. Ancak anahtar genişletme kullanılıyorsa, saldırganın test ettiği her anahtar için güçlendirilmiş bir anahtar hesaplaması gerekir, yani test başına hesaplanacak 65.000 karma vardır. Bu, saldırganın iş yükünü yaklaşık 2 olmak üzere 65.000 kat artırır16bu, geliştirilmiş anahtarın anahtar gücünde yaklaşık 16 ek bit değerinde olduğu anlamına gelir.

Moore yasası bilgisayar hızının her 1,5 yılda bir ikiye katlandığını iddia ediyor. Bu varsayıma göre, her 1,5 yılda bir, bir parça anahtar güç daha makul bir şekilde kaba kuvvettir. Bu, 16 ekstra güç bitinin yaklaşık 16 × 1,5 = 24 yıl sonra çatlama değerinde olduğu anlamına gelir, ancak aynı zamanda aynı güvenlik seviyesini korumak için bir sistemin kullandığı anahtar germe turlarının sayısının her 1,5 yılda iki katına çıkarılması gerektiği anlamına gelir (çünkü Çoğu anahtar gerekenden daha güvenlidir, tutarlı deterministik anahtar üretimi gerektiren sistemler, anahtar genişletmede kullanılan yineleme sayısını muhtemelen güncellemeyecektir. Böyle bir durumda, tasarımcı anahtar türetme sisteminin ne kadar süre devam etmesini istediklerini dikkate almalıdır. değiştirilmez ve sistemin ömrü için uygun sayıda karma seçmelidir).

CPU'ya bağlı hash işlevleri hala donanım uygulamaları. SHA-1'in bu tür uygulamaları, 5.000 kapı ve 400 saat döngüsü kadar az kullanılarak mevcuttur.[3] Multi-milyon kapılı FPGA'lar 100 dolardan daha düşük maliyetli,[4] bir saldırgan tamamen kaydedilmemiş yaklaşık 5.000 $ için donanım kırıcı.[kaynak belirtilmeli ] 100 MHz'de saat hızına sahip böyle bir tasarım, saniyede yaklaşık 300.000 anahtarı test edebilir. Saldırgan, iyi bir fiyat / hız uzlaşması seçmekte özgürdür, örneğin 2.500 $ karşılığında 150.000 anahtar / saniye tasarım.[kaynak belirtilmeli ] Anahtar germe, böyle bir durumda saldırganı yine de yavaşlatır; Düz bir SHA-1 hashına saldıran 5.000 $ 'lık bir tasarım 300.000 ÷ 2'yi deneyebilir16 ≈ 4,578 anahtar / saniye.[kaynak belirtilmeli ]

Donanım yaklaşımına karşı savunmak için, belleğe bağlı kriptografik fonksiyonlar geliştirilmiştir. Bunlar büyük miktarda belleğe öngörülemeyen bir şekilde erişir, öyle ki önbellekler etkisizdir. Büyük miktarlarda düşük gecikmeli bellek pahalı olduğu için, olası saldırganlar önemli ölçüde caydırılır.

Tarih

İlk kasıtlı olarak yavaş parola tabanlı anahtar türetme işlevi "MEZAR ODASI" 1978'de tarafından Robert Morris şifrelemek için Unix şifreler.[5] 25'lik bir yineleme sayısı, 12 bitlik bir tuz ve DES alt işlev olarak. (Standart DES donanımı kullanarak saldırıları engelleme girişiminde DES uygun önlendi.) Parolalar maksimum sekiz ile sınırlandırıldı. ASCII karakterler. Kendi dönemi için büyük bir gelişme olsa da, CRYPT (3) artık yetersiz görülüyor. Yineleme sayısı, PDP-11 çağ, çok düşük, 12 bitlik tuz bir rahatsızlıktır ancak önceden hesaplanmış sözlük saldırılarını durdurmaz ve 8 karakter sınırı daha güçlü kullanılmasını engeller parolalar.

Modern parola tabanlı anahtar türetme işlevleri, örneğin PBKDF2, bir kriptografik karma kullanın, örneğin SHA-2, daha uzun bir tuz (örneğin 64 bit) ve yüksek bir yineleme sayısı. ABD Ulusal Standartlar ve Teknoloji Enstitüsü (NIST), minimum 10.000 yineleme sayısını önermektedir.[6]:5.1.1.2 "Özellikle kritik anahtarlar için veya kullanıcı tarafından algılanan performansın kritik olmadığı çok güçlü sistemler veya sistemler için 10.000.000 yineleme sayısı uygun olabilir."[7]:5.2

2009'da, bellek yoğun bir anahtar güçlendirme algoritması, şifrelemek, anahtar testlerini hızlandırmak için özel, son derece paralel donanım kullanımını sınırlama amacıyla tanıtıldı.[8][9]

2013 yılında Şifre Karma Yarışması grafik işlemcilerinden ve özel amaçlı donanımlardan gelen saldırılara direnecek gelişmiş bir anahtar genişletme standardı seçmek için yapıldı. Kazanan, Argon2, 1 Temmuz 2015 tarihinde seçilmiştir.[10]

Anahtar genişletmeyi kullanan bazı sistemler

Ayrıca bakınız

Referanslar

  1. ^ a b c Kelsey J, Schneier B, Hall C, Wagner D (1998). Okamoto E, Davida G, Mambo M (editörler). "Düşük entropili anahtarların güvenli uygulamaları". Bilgisayar Bilimlerinde Ders Notları. Springer. 1396 (cilt 1936, Bilgi Güvenliği: First International Workshop, ISW'97, Japonya): 121–134. doi:10.1007 / BFb0030415. ISBN  978-3-540-64382-1.
  2. ^ [1] 1.000 yineleme ile PBKDF2-HMAC-SHA1, saniyede 10.340.129.800 SHA-1 karma değerine ulaşan 5.164.9 kH / s hızında 2.002 SHA-1 karma maliyetine sahiptir.
  3. ^ http://events.iaik.tugraz.at/RFIDSec08/Papers/Publication/04%20-%20ONeill%20-%20Low%20Cost%20SHA-1%20-%20Slides.pdf
  4. ^ "Arşivlenmiş kopya". Arşivlenen orijinal 2011-07-16 tarihinde. Alındı 2010-08-08.CS1 Maint: başlık olarak arşivlenmiş kopya (bağlantı)
  5. ^ Morris, Robert; Thompson, Ken (1978-04-03). "Şifre Güvenliği: Bir Durum Geçmişi". Bell Laboratuvarları. Arşivlenen orijinal 2003-03-22 tarihinde. Alındı 2011-05-09.
  6. ^ 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.
  7. ^ Meltem Sönmez Turan, Elaine Barker, William Burr ve Lily Chen (Aralık 2010). SP 800-132 - Parola Tabanlı Anahtar Türetme Önerisi, Bölüm 1: Depolama Uygulamaları. NIST. doi:10.6028 / NIST.SP.800-132.CS1 bakimi: birden çok ad: yazarlar listesi (bağlantı)
  8. ^ Scrypt
  9. ^ scrypt: Yeni bir anahtar türetme işlevi, Colin Percival, BSDCan 2009, erişim tarihi 2011-2-1
  10. ^ Şifre Karma Yarışması
  11. ^ Drepper, Ulrich. "SHA-256 ve SHA-512 kullanan Unix crypt".