SHA-1 şifre saklama için güvenli midir?


148

Sonuç: SHA-1, preimage saldırılarına karşı herhangi bir şey kadar güvenlidir, ancak hesaplanması kolaydır, yani bir kaba kuvvet veya sözlük saldırısı monte etmek daha kolaydır. (Aynı durum SHA-256 gibi halefler için de geçerlidir.) Koşullara bağlı olarak, hesaplamalı olarak pahalı olacak şekilde tasarlanmış bir karma işlevi (bcrypt gibi) daha iyi bir seçim olabilir.


Bazı insanlar "SHA-1 bozuldu" gibi ifadeleri çok fazla atıyor, bu yüzden bunun tam olarak ne anlama geldiğini anlamaya çalışıyorum. Diyelim ki SHA-1 şifre karmaları bir veritabanım var ve son teknoloji SHA-1 kırma algoritması ve 100.000 makineli bir botnet ile bir saldırgan buna erişiyor. (100 binden fazla ev bilgisayarını kontrol etmek, saniyede yaklaşık 10 ^ 15 işlem yapabildikleri anlamına gelir.) Ne kadar zamana ihtiyaç duyacakları anlamına gelir.

  1. herhangi bir kullanıcının şifresini bulmak?
  2. belirli bir kullanıcının şifresini bulmak?
  3. tüm kullanıcıların şifresini öğrenmek?
  4. kullanıcılardan biri olarak giriş yapmanın bir yolunu mu arıyorsunuz?
  5. Belirli bir kullanıcı olarak giriş yapmanın bir yolunu mu arıyorsunuz?

Parolalar tuzlanırsa bu nasıl değişir? Tuzlama yöntemi (önek, postfix, her ikisi veya xoring gibi daha karmaşık bir şey) önemli mi?

İşte bazı googling sonra benim mevcut anlayış. Bir şeyi yanlış anladıysam lütfen cevapları düzeltin.

  • Tuz yoksa, gökkuşağı saldırısı hemen tüm şifreleri bulur (çok uzun olanlar hariç).
  • Yeterince uzun bir rastgele tuz varsa, şifreleri bulmanın en etkili yolu kaba bir kuvvet veya sözlük saldırısıdır. Ne çarpışma ne de preimage saldırıları gerçek şifreyi bulmada herhangi bir yardımcı değildir, bu nedenle SHA-1'e yönelik kriptografik saldırılar burada yardımcı değildir. Hangi algoritmanın kullanıldığı önemli değildir - MD5 veya MD4 bile kullanılabilir ve şifreler de aynı derecede güvenli olacaktır (bir SHA-1 karma hesaplaması daha yavaş olduğu için küçük bir fark vardır).
  • "Ne kadar güvenli" nin ne kadar güvenli olduğunu değerlendirmek için, tek bir sha1 çalıştırmasının 1000 işlem gerektirdiğini ve parolaların büyük harf, küçük harf ve rakam içerdiğini varsayalım (yani 60 karakter). Bu, saldırganın günde 10 15 * 60 * 60 * 24/1000 ~ = 10 17 potansiyel şifre test edebileceği anlamına gelir . Bir kaba kuvvet saldırısı için bu, 9 karaktere kadar tüm şifrelerin 3 saatte, haftada 10 karaktere, yılda 11 karaktere kadar test edilmesi anlamına gelir. (Her ek karakter için 60 kat daha fazla zaman alır.) Sözlük saldırısı çok, çok daha hızlıdır (tek bir bilgisayara sahip bir saldırgan bile saat içinde çekebilir), ancak yalnızca zayıf parolalar bulur.
  • Kullanıcı olarak oturum açmak için saldırganın tam şifreyi bulması gerekmez; aynı karma ile sonuçlanan bir dize bulmak yeterlidir. Buna ilk ön saldırı saldırısı denir. Bulabildiğim kadarıyla SHA-1'e karşı bir ön saldırı yok. (Bir kaba kuvvet saldırısı 2 alacaktı 160 bizim teorik saldırganın 10 gerekir, yani operasyonlar 30 çekip yıl arası. Teorik olasılık sınırları yaklaşık 2 olan 60 operasyonları, saldırı birkaç yıl alacağını hangi.) Vardır öngörüntü saldırılar ihmal edilebilir etkili SHA-1 versiyonlarına karşı (80 yerine 44 adım kullanan azaltılmış SHA-1 için saldırı süresi 2 160 operasyondan 2 157'ye düşürüldü). SHA-1'e karşı teorik olasılık dahilinde olan çarpışma saldırıları vardır ( bulduğum en iyi zaman 2 80'den 2 52'ye indirir ), ancak bunlar tuzsuz bile olsa şifre karmaşasına karşı işe yaramaz.

Kısacası, şifreleri SHA-1 ile depolamak son derece güvenli görünüyor. Bir şey mi kaçırdım?

Güncelleme: Marcelo , 2 106 operasyonda ikinci bir ön saldırı düzenleyen bir makaleye dikkat çekti . ( Düzenleme: As Thomas açıklıyor , bu saldırı gerçek hayat senaryoları için geçerli değildir varsayımsal bir yapıdır.) Hala nasıl bir anahtar türetme işlevi olarak SHA-1 kullanımı için bu büyü tehlike olsa görmüyorum. Bir çarpışma saldırısının veya ikinci bir ön saldırı saldırısının sonunda ilk ön saldırıya dönüştürülebileceğini düşünmek için genellikle iyi nedenler var mı?


Bu şimdi 7 yaşında ve son düzenlendiğinden beri çok şey oldu. SHA-1'in artık şifre
karmaşası

@GordonM ne oldu? Hesaplama gücünün büyümesiyle birlikte, SHA-1 çarpışma saldırıları giderek daha pratik hale geliyor, ancak burada gerçekten alakalı değiller. SHA-1 şifre karmaşası için hiçbir zaman gerçekten güvenli olmamıştır (genellikle hızlı karma değildir), ancak olduğu ölçüde hala AFAIK'tir.
Tgr

SHA-1 asla şifre
karmaşası

Yanıtlar:


209

Sorunuzun kısa cevabı: SHA-1 alabileceğiniz kadar güvenlidir. MD5 de iyi olurdu, MD4 bile; ancak bazı yatırımcıları tedirgin edebilir. İçin halkla ilişkiler , bu örneğin SHA-256, sen 160 veya 128 bit etmek çıkışını kesmek bile (saklama de maliyetten tasarruf) "daha iyi" karma işlevi kullanmak en iyisidir. Bazı SHA-3 2. tur adaylarının tartışmasız "daha güvenli" olmalarının yanı sıra SHA-1'den daha hızlı olduğu görülüyor; yine de biraz yeniler, bu yüzden SHA-256 veya SHA-512'ye yapışmak şu anda daha güvenli bir rota olacaktır. Profesyonel ve ihtiyatlı görünmenizi sağlar, bu da iyidir.

"Alabildiğiniz kadar güvenli" ifadesinin "mükemmel derecede güvenli" ile aynı olmadığını unutmayın. Oldukça uzun açıklamalar için aşağıya bakın.

Bilinen saldırılar hakkında:

MD4, MD5 ve SHA-1'e yapılan bilinen saldırılar, preimage direncini etkilemeyen çarpışmalarla ilgilidir. MD4'ün HMAC / MD4'ü kırmaya çalışırken (yalnızca teorik olarak) kullanılabilecek birkaç zayıflığı olduğu gösterilmiştir, ancak bu sorununuz için geçerli değildir. Kesley ve Schneier'in makaledeki 2 106 saniyelik ön saldırı, sadece çok uzun girdiler için geçerli olan genel bir değiş tokuş (2 60 bayt; bu bir milyon terabayt - 106 + 60'ın 160'ı nasıl aştığını fark edin; işte burada değiş tokuşun içinde sihir yoktur).

Bu iletinin geri kalanında, kullandığınız karma işlevinin (ör. SHA-1), saldırganın kullanabileceği özel bir özelliği olmayan bir "kara kutu" olduğunu varsayar. MD5 ve SHA-1 "kırık" hash fonksiyonları ile bile şu anda sahip olduğunuz şey budur.

Rainbow tabloları hakkında:

"Gökkuşağı saldırısı" aslında bir sözlük veya kaba kuvvet saldırısının maliyet paylaşımıdır. Bu bir türevi olan zaman-bellek trade-off öncelikle sen olduğunu varsayarsak 1980 yılında Hellman tarafından açıklanan N Sözlüğünüze büyüklüğü ya da 2 olduğunu (mümkünse şifreleri n dikkate eğer zorlaması bir çıkış ile bir karma işlev n bit), N karma şifreleri önceden hesaplayıp bunları büyük bir tabloda sakladığınız bir zaman paylaşma saldırısı vardır . Karma çıktıları sıralarsanız, şifrenizi tek bir aramada alabilirsiniz. Bir gökkuşağı tablo daha düşük boşluk ile bu tablosunu depolamak için bir akıllı bir yöntemdir. Yalnızca N / t karma parolalarını depolarsınız ve O (t 2 ) aramalar. Gökkuşağı tabloları, önceden hesaplanmış tabloları gerçekçi bir şekilde depolayabileceğinizden çok daha büyük bir şekilde işlemenizi sağlar.

Ancak, gökkuşağı olsun ya da olmasın, saldırgan hala tam saldırıyı en az bir kez yapmak zorundadır. Bu, birbirini izleyen birkaç optimizasyon katmanı olarak görülebilir:

  1. Kaba kuvvet / sözlük saldırısının her şifreyi kırmak için N maliyeti vardır .
  2. Önceden hesaplanmış bir tabloyla, saldırgan N maliyetini bir kez öder ve daha sonra şifre başına çok küçük ekstra maliyetle birçok şifreye saldırabilir .
  3. Önceden hesaplanmış tablo gökkuşağı tablosuysa, depolama maliyeti azaldığı için N biraz daha büyük olabilir . N üzerindeki darboğaz , saldırganın sabit disklerinin boyutunu değil toplayabileceği CPU gücü haline gelir.

Eğer N karma CPU ekonomik olduğunu yeterince büyük olan , N şifreler saçma, daha sonra bu tür bir saldırının bağımsız gökkuşağı tabloları kullanılmaktadır olsun veya olmasın, mümkün değildir. Bu, kaba kuvvet saldırısını mümkün kılmak için 80 bit veya daha fazla çıkışa sahip (önleme dayanıklı) bir hash işlevinin yeterli olduğu anlamına gelir.

Tuzlar hakkında:

Tuzlar, ön hesaplamaları yenmenin bir yoludur. Yukarıdaki açıklamada, tuz, saldırganı 1. adıma geri getirir: tuzlama, saldırganın birçok saldırı şifresi arasında O ( N ) maliyetini paylaşmasını önler . Önceden hesaplanmış tablolar, bir fortiori gökkuşağı tabloları artık mümkün değildir.

Tuzlamak istiyorsunuz çünkü karma veriler parolalardan oluştuğunda , yani rastgele bir insanın beynine uyan bir şey olduğunda, N oldukça düşük olabilir: insanlar parolaları seçmek ve hatırlamakta gerçekten kötüdür. "Sözlük saldırıları" bununla ilgilidir: bu, birçok kullanıcı şifresinin özel olarak seçilen alanda olacağı varsayımı altında, potansiyel şifrelerin azaltılmış alanını ("sözlük") kullanır.

Bu nedenle tuzlama en azından saldırganın önceden hesaplanmış tabloları, özellikle önceden hesaplanmış gökkuşağı tablolarını kullanmasını önleyecektir. Bu saldırgan varsayar olacak bir şifre veya ikisini kırmak mümkün; fazladan ek yükü olan 1000 şifreyi kırmasını istemiyoruz.

Ayrıca, tuzlama halkla ilişkiler için iyidir.

SHA-1 maliyeti hakkında:

SHA-1'in temel maliyeti 64 baytlık bir bloğun hashlanması ile ilgilidir. SHA-1 böyle çalışır: veriler doldurulur, daha sonra 64 baytlık bloklara bölünür. Tek bir bloğu işlemenin maliyeti Intel Core2 sisteminde yaklaşık 500 saat döngüsüdür ve bu tek bir çekirdek içindir. MD5 ve MD4 daha hızlıdır, sırasıyla yaklaşık 400 ve 250 döngü sayılır. Çoğu modern CPU'nun birkaç çekirdeğe sahip olduğunu unutmayın, bu nedenle buna göre çarpın.

Bazı tuzlama şemaları büyük tuzlar reçete eder; örneğin hash fonksiyonuna giren tek bir 128-bit tuzun ardışık 40000 kopyası ve ardından şifrenin kendisidir. Bu, hem yasal kullanıcı hem de saldırgan için parola karma işlemini daha pahalı hale getirir (örneğimle 10000 faktörü). Bunun iyi bir fikir olup olmadığı kuruluma bağlıdır. Bir masaüstü sistemine giriş yapmak için, bu iyi: kullanıcı, 1µs yerine parolasını hash etmek için 10ms bile aldığını fark etmeyecek; ancak saldırganın maliyeti çok belirgin bir faktör 10000 tarafından artmıştır. Saniyede binlerce istemcinin olduğu paylaşılan sunucularda, toplam maliyet engelleyici olabilir. Kavramsal olarak, meşru kullanıcı ve saldırgan için çıtayı aynı faktörle yükseltmek sonuçta iyi bir güvenlik değildir; ancak bazı özel durumlarda faydalı bir fikir olabilir.

Çevrimiçi saldırılar hakkında:

Yukarıdakilerin tümü çevrimdışı saldırıları yenmekle ilgilidir . Çevrimdışı saldırı, saldırganın parolaları "sınamak" için gereken tüm verilere sahip olduğu bir saldırıdır; örneğin, saldırgan karma şifreleri içeren veritabanının bir kopyasını alabilir. Çevrimdışı bir saldırıda, saldırgan yalnızca hesaplama kaynakları ile sınırlıdır. Tersine, çevrimiçi saldırı, saldırgan tarafından yapılan her tahminin dürüst bir doğrulayıcıdan geçmesi gereken bir saldırıdır (örneğin, saldırgan saldırıya uğrayan sistemde oturum açmaya çalışır). Çevrimiçi saldırılar, saniyede kaç şifre denenebileceğine ilişkin sınırlamalar uygulanarak engellenir. Bunun en iyi örnekleri, üç yanlış PIN'in ardından kapanan akıllı kartlardır.

Genellikle, parola güvenliği için, sistemi bir saldırganın çevrimdışı bir saldırı oluşturmasına izin vermemesi için düzenlemek çok daha fazlasını yapar. Unix sistemlerinin yaptığı da budur: eskiden dünya tarafından okunabilen /etc/passworddosyada bulunan karma parolalar, /etc/shadowbirkaç ayrıcalıklı uygulama dışında okuma erişimine karşı korunan dosyadadır. Buradaki varsayım, eğer saldırgan okuyabilirse /etc/shadow, muhtemelen sistem üzerinde artık gerçekten parolalara ihtiyaç duymadığı konusunda yeterince kontrole sahip olduğu ...


5
Mükemmel cevap. Kabul etmediğim tek şey, "Kavramsal olarak, meşru kullanıcı için aynı faktörle çıtayı yükseltmek ve saldırgan nihayetinde iyi bir güvenlik değildir" - saldırgan bir kullanıcının yapması gereken işlemlerin çoğunu yapmak zorundadır. Bir kullanıcı oturum açma işlemi için bir saat döngüsü eklemek saldırgana milyonlarca kişi ekler.
Nick Johnson

1
@Tomlar Bu doğru kalır ve muhtemelen belirsiz öngörülebilir gelecek için doğru kalır. Bilgisayar korsanları, yaygın parolaların kalitesinin düşük olması nedeniyle, gerçek parolaları her türlü karma işlemle tahmin edebilir . "123456" sanırım ve her zaman birkaç hit alırsınız. Hangi şifre deposunu kullanırsanız kullanın, bu geçerli kalacaktır.
tylerl

1
Sadece benim bakış açım, ancak daha güçlü parola şifrelemesi zaten yaygın olarak mevcut olduğunda neden SHA1'e sadık kalıyorsunuz? Bir yıl önce, MD5 "güvenli" olarak kabul edildi ve şimdi değil - bildiğimiz her şey için aynı şey SHA1'e her gün olabilir. Şahsen, bu noktadan itibaren Blowfish'e bahse gireceğim - daha iyi bir temsilcisi ve kripto topluluğunda daha az ilgili uzman var gibi görünüyor, neredeyse her yerde mevcut, bu yüzden SHA1 ile kumar oynamak için bir neden yok.
mindplay.dk

1
@ThomasPornin'den gelen ve MD5'in şifre saklama için güvenli olduğunu söyleyen bir cevapta karşılaşmak için çekirdeğime şok oldum. MD5 iyi ise, HER ŞEY neden kullanmayın, bcrypt kullanın ?? Onlar aşırı temkinli mi? Ben her şeyi okudum ve anladım ve MD5 çok kötü olduğu izlenimi altındaydım çünkü kaba kuvvete karşı savunmasız. Son zamanlarda olarak bir yıl önce olduğu gibi Yorumlar cevabı çelişmeyen ...
temporary_user_name

1
@Aerovistae: güvenlik üzerine bu cevaba bir göz atmak isteyebilirsiniz . daha fazla analiz ve şifre karma hakkında son ayrıntıları içerir.
Thomas Pornin

30

Önceki cevaplar, şifreler tuzlanmış olsa bile, tüm veritabanının artık günler veya haftalar yerine dakikalar veya saatler içinde kaba olarak zorlanabileceği ölçüde SHA-1 karma işlemine paralel olabilecek GPU'lardan bahsetmemektedir.

Bcrypt veya scrypt gibi modern parola karma algoritmaları, çok daha yüksek bellek gereksinimlerine sahip blok şifreler olmaları (ve GPU'daki bellek erişimi aynı ölçüde paralelleştirilememesi) nedeniyle GPU'larda çalıştırılması zor olacak şekilde tasarlanmıştır. Ayrıca teknoloji geliştikçe çalışmalarını yavaşlatmalarını sağlayan bir "çalışma fonksiyonu" da var.

Kısacası, sadece iş için en iyi araçları kullanmalısınız. Ve SHA-1, en son teknolojinin çok altındadır.

Daha fazla okuma için:


2
"Bcrypt veya PBKDF2 gibi modern parola karma algoritmaları GPU'larda çalıştırılması zor olacak şekilde tasarlanmıştır" - "bcrypt veya scrypt" demek mi? PBKDF2 sadece yinelenen karmadır, içinde bir GPU için sorunlu olacak hiçbir şey yoktur.
Tgr

4
Lütfen kullandığınız GPU'yu bana bildirin, aynı olanı satın alacağım. "Dakika" içinde 2 ^ 160 SHA-1 hesaplaması yapabiliyorsanız ("saat" ten daha az, yani en fazla 59 dakika), saniyede 10 ^ 44'ten fazla işlem yapabilmeniz gerekir. PCIe, kapağı yaklaşık 128GT / s'de aktardığından, GPU'nuzda harika bir yerleşik bellek olması gerekir. Onu istiyorum.
Damon

3
@Damon: Kullanıcıların "önemsiz" şifreleri (<8 bit entropi) veya "kırılmaz" şifreleri (> 60 bit entropi) olduğunu varsayıyorsunuz. Şifre entropisi 10-60 bit aralığında olan herkesi tamamen görmezden geliyorsunuz. Bunlar, bcrypt, rainbow tabloları ve GPU'ların bulunduğu kullanıcılardır ve tipik bir kullanıcı tabanının yaklaşık% 80'ini oluştururlar.
jammycakes

1
(ayy ...
demeliydim

3
Bazı istatistikler ve analizler için bkz. Troyhunt.com/2011/06/brief-sony-password-analysis.html - kullanıcıların% 36'sı şifre sözlüklerinde görünen şifreleri seçerken, yalnızca% 2-3'ü en yaygın olanları seçer.
jammycakes

7

Açıklamanız son teknoloji için doğru görünüyor.

Bununla birlikte, herhangi bir karma işlevinin tek bir yinelemesini kullanmamalısınız: En azından, birçok kez yinelemelisiniz (karmaın 1000 yinelemesi saldırganın çalışmasını 1000 kat arttırır, işinizi aynı miktarda artırır, ancak olduklarından çok daha az şifre karması yapıyorsunuz).

Ancak, ideal olarak, burada açıklananlar gibi mevcut bir şifre depolama ilkelini kullanmanız gerekir .


Binlerce kez yinelemek düşündüğünüz kadar iyi bir fikir değildir. Karma çarpışma riskini artırır. yorickpeterse.com/articles/use-bcrypt-fool
jammycakes

1
Bu makale tamamen karışık görünüyor. Güvenli bir karma işlevi, yinelemeli karma işlem yoluyla kayda değer entropiyi kaybetmez ve yinelemeli karma işlem, PBKDF2 ve scrypt gibi anahtar germe şemalarının temel bileşenidir. Yazarın önerdiği bcrypt bile benzer bir yapı kullanır. Onun 'saldırısı' bir karma öneklemesi bulmaya dayanır - bu durumda, bu hash kullanan yapıların çoğu zaten tamamen kırılmıştır. Son olarak, insanların yinelemeli karmaşayı doğrudan kullanmasını önermiyorum - sorumu söylediğim gibi, amaç için tasarlanmış mevcut bir ilkel kullanmalısınız.
Nick Johnson

7

SHA1 bir mesaj özetidir , asla parola karma (veya anahtar türevi) işlevi olması amaçlanmamıştır. (Her ne kadar HMAC-SHA1 ile PBKDF2 gibi bir KDF için bir yapı taşı kullanılabilir.)

Parola karma işlevi sözlük saldırılarına ve gökkuşağı tablolarına karşı korunmalıdır. Bu amaca ulaşmak için çeşitli algoritmalar tasarlanmıştır.

Şu anda, en iyi seçim muhtemelen Argon2 . Bu şifre hash fonksiyonları ailesi 2015 yılında Şifre Karma Yarışmasını kazandı.

Eğer Argon2 kullanılamaz, sadece diğer standart şifre karma veya anahtar türetme fonksiyonudur PBKDF2 oldish NIST standardıdır. Standart kullanmak gerekli değilse diğer seçenekler arasında bcrypt ve scrypt yer alır .

Wikipedia'nın bu işlevler için sayfaları vardır:


4

SHA-1'de aramayı kaba kuvvetten çok daha hızlı yapan ciddi güvenlik açıkları keşfedilmiştir. Hala büyük ölçüde inatçı değil, ama bunun çok daha uzun sürmesi beklenmiyor; paranoyak programcılar SHA-2 ailesinden bir şey tercih ederler.

Gönderen Bu yazıda asıl 2005 Sonuç ilişkin:

"Ateşin çıkışına doğru yürümenin ama koşmamanın zamanı. Duman görmüyorsunuz ama yangın alarmları yok."

Mevcut kriptanalizin SHA-1'i güvensiz hale getirmesi değil, daha ziyade kripto topluluğunun daha kötü haberlerin köşede olabileceğinden endişe duyması. Bu korku, SHA-1 ile aynı kusurları sergileyen SHA-2 için de geçerlidir, ancak çok daha geniş bir arama alanı olsa da, devam eden SHA-3 arayışı .

Kısacası, SHA-1 şu anda güvende ve muhtemelen bir süre gelecek, ancak kripto topluluğu prognozdan rahatsız.


Bir bağlantı verebilir misiniz? Söylediğim gibi, bulabildiğim en iyi preimage saldırısı, aramayı 8 kat daha hızlı hale getiriyor ve bunun için bile SHA-1'in adımlarının yarısını atlamanız gerekiyor. (Ayrıca, bu parola karmalarına karşı yararsız olan ikinci bir ön saldırı olduğunu düşünüyorum.)
Tgr

Ayrıca son haberler ışığında NSA'dan gelen bir şeyden şüpheliyim :)
Alex W

4

Şubat 2017'den itibaren SHA-1 artık güvenli kabul edilmemelidir. Google, tam, indirgenmemiş yuvarlak SHA-1'e ( rapor bağlantısı ) çarpışma saldırılarıyla başarılı olduğunu bildirdi . Google'ın duyurusu için burayı tıklayın .

Düzenleme: Başkaları tarafından işaret edildiği gibi, şifreler karma çarpışma saldırılarına karşı savunmasız değildir. Ancak genel bir kılavuz olarak, güvenlikle ilgili uygulamalar için SHA-1'i seçmem. Orada daha iyi alternatifler var.


Tamam, bir SHA-1 çarpışması bulmak yaklaşık 6.500 CPU yılı ve 100 GPU yılı aldı , bu bir üretim saldırısı değil. Bir şifreyi kırmak tüm olası girdilere karşı değil, 10.000.000 sık şifre listelerine karşı kaba bir güçtür. İşte kağıt .
zaph

1
Kusur, şifreleri korumak için yalnızca herhangi bir sağlama işlevini kullanıyor. Sadece bir hash fonksiyonu kullanmak yeterli değildir ve sadece bir tuz eklemek güvenliği arttırmak için çok az şey yapar, kriptografik hashlar çok hızlıdır. Bunun yerine yaklaşık 100 ms süreyle rastgele bir tuz ile bir HMAC üzerinde tekrarlayın ve tuzu karma ile saklayın. Gibi kullanın fonksiyonları PBKDF2(aka Rfc2898DeriveBytes), password_hash/ password_verify, Bcryptve benzeri fonksiyonlar. Mesele, saldırganın kaba kuvvetle şifreleri bulmak için çok zaman harcamasını sağlamaktır. Kullanıcılarınızı korumak önemlidir, lütfen güvenli şifre yöntemlerini kullanın.
zaph

Çarpışma preimage değildir ve şifreler imza değildir. Çarpışma saldırıları parolalara karşı çalışmaz, çünkü orijinal düz metin hakkında bilgi gerektirirler.
Tgr

Tgr: Kabul etti, teşekkürler. Zaph: Evet, gökkuşağı saldırılarına karşı korunmak ve yavaş kripto karmaları kullanmak için tuzlama, bu cevapta özellikle ele almadığım önerilen uygulamalar arasında.
Aaron

3

Tuzlanmış şifreyi saklarsanız, SHA-1 pratik amaçlar için uygundur. SHA-2 daha güvenli kabul edilir, ancak gerçekten paranoyak olmak için bir nedeniniz yoksa SHA-1 bir sorun değildir.

NIST'in söyledikleri :

Şimdiye kadar SHA-1'de sunulan sonuçlar güvenliğini sorgulamıyor. Bununla birlikte, teknolojideki ilerlemeler nedeniyle NIST, 2010 yılına kadar daha büyük ve daha güçlü hash fonksiyonları (SHA-224, SHA-256, SHA-384 ve SHA-512) lehine SHA-1'den çıkmayı planlamaktadır.


Bu, 2004 tarihli bir NIST yorumu. 2010 taslak önerileri , SHA-1'in 2010 dışındaki tüm dijital olmayan imza oluşturma uygulamaları için onaylandığını söylüyor.
Tgr
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.