SORU
29 EKİM 2009, PERŞEMBE


Tuz Üretimi ve açık kaynak yazılım

Anladığım kadarıyla tuzları oluşturmak için en iyi uygulama bazı gizli formül (ya da büyü) sabit kaynak kodunda saklı kullanmaktır.

Üzerinde çalışıyorum bir proje planı üzerinde serbest olarak açık kaynak, ama sorun şu ki kaynak geliyor gizli formülünü üreten tuzları, ve bu nedenle yeteneği çalıştırmak gökkuşağı tablo saldırı sitemizde.

Pek çok insan bana daha önce bu sorun hakkında düşünmüş ben de düşündüm ve en iyi uygulama nedir merak ediyorum. Eğer kodu tuzları kolayca ters mühendislik olabilir, çünkü açık kaynak, bir noktada bütün bir tuz olan yok gibi geliyor bana.

Düşünceler?

CEVAP
29 EKİM 2009, PERŞEMBE


Sağlamalarının oldukça düzenli olarak gelip tuzlama ve konu hakkında epey bir karışıklık var gibi görünüyor ilgili sorularınız beri, bu cevap uzattım.

Tuz nedir?

Bir tuzrastgelekarma bir algoritma giriş için eklenen sabit bir uzunluğu bayt olarak ayarlayın.

Neden tuzlama (veya) tohum bir karma yararlıdır?

Karma için rastgele bir tuz eklemek aynı parolayı pek çok farklı sağlamalarının üretmesini sağlıyor. Tuz genellikle birlikte hash fonksiyonu sonucu ile veritabanında saklanır. Karma tuzlama nedenlerle bir dizi için iyi olur

  1. Tuzlama büyük ölçüde precomputated saldırıları zorluk/maliyet (rainbow tables dahil) artar
  2. Tuzlama aynı şifre aynı hash sonucu kesinleştirir. Eğer bu iki kullanıcı aynı şifre belirleyemiyor. Ve,daha da önemlisiz belirleyemiyor aynı kişi farklı sistemlerde aynı şifreyi kullanır.
  3. Tuzlama şifre karmaşıklığı, böylece önemli ölçüde her iki etkinliği azalan artarDictionary-veBirthday attacks.(Bu tuzu geçerlidirkarma) saklı ayrı.
  4. Uygun tuzlamabüyük ölçüdeartık pratik olduğu depolama precomputation saldırılar için gereken noktaya kadar artar. (Büyük küçük harf duyarlı bir alfa-sayısal şifre 16 bit tuz, 128 bit bir değer sağlaması, 8 karakter gökkuşağı azalma olmadanjust under 200 exabytes kaplardı).

Tuz sır olmaya gerek yok.

Bir tuz gizli bir anahtar, bir tuz 'çalışır' her örnek için karma işlevi özel hale getirerek. yerine değil Tuzlu hash ile, yokbirişlevi, ama mümkün olan her tuz değer bir karma. Bu saldıran saldırganın önlemekNdaha karma şifreleriNbir kez şifre saldıran maliyeti. Bu tuz noktasıdır.
"Gizli tuz" tuz değil, bir denir "anahtar" ve artık, bir karma bilgisayar olduğu anlamına gelir, ama bir Message Authentication Code (MAC). Bilgi işlem MAC zor iş (sadece birlikte bir anahtar tokat ve karma işlev bir değer daha zor) ve çok farklı bir konu tamamen.

Tuzrastgele olmalıdırher örneği için kullanılır. Bu, saldırganın her tuzlu hash ayrı saldırı olduğunu sağlar.
Eğer tuz (ya da tuzlama algoritma) gizli olmak güveniyorsanız, Security Through Obscurity (bir işe yaramaz) krallıkları girin. Büyük olasılıkla, tuz gizlilik ek bir güvenlik yok; sadece güvenlik sıcak bulanık hissi. Böylece sistem daha güvenli yapmak yerine, sadece sizi gerçeklikten koparıyor.

Neden tuz rastgele olmak zorunda mı?

Teknik olarak, tuz olmalıdırbenzersiz. Tuz noktası sağlaması her şifre için farklı olacak. Bu içindirdünya çapında. Beri orada merkezi bir organizasyon olan dağıtır benzersiz tuz ihtiyacını biz güvenmek için bir sonraki en iyi şey, rastgele seçimi ile bir öngörülemeyen rastgele, tercihen içinde bir tuz alanı yeterince büyük yapmak imkansız çarpışmalar (iki örneğini kullanarak aynı tuz değeri).

Bazı verilerden bir tuz elde etmek için denemek için cazip olduğunu "muhtemelen", kullanıcı KİMLİĞİ gibi, ama bu planlar genellikle başarısız bazı kötü ayrıntılar nedeniyle: . benzersiz

  1. Eğer kullanırsanızörneğin, kullanıcı KİMLİĞİbazı kötü adamlar, saldıran, farklı sistemlerin, sadece kendi kaynakları havuzu ve kullanıcı Kimlikleri için önceden hesaplanan Tablo 1 50 oluşturabilir. Kullanıcı KİMLİĞİ tektirsistem genelindeama değildünya çapında.

  2. Aynı için de geçerlidirkullanıcı adı: bir "kök" Unıx sistem, ama dünyanın pek çok kökleri vardır. başına var İçin bir gökkuşağı tablo "kök" milyonlarca sistemleri için uygulanabilir beri bu kadar zahmete değer olacaktır. Daha kötüsü de "orada, ve birçok sysadmin eğitim yok: parolalarını oldukça zayıf olabilir." bob çok var

  3. Teklik de geçici. Bazen, kullanıcıların parolalarını değiştirmek. Her biri içinyeni şifrebiryeni tuzseçili olmalıdır. Aksi takdirde, bir saldırganın eski parola karma elde edilen ve yeni karma ikisi de aynı anda saldırmayı deneyebilir.

Rastgele bir tuz şifreli olarak güvenli, öngörülemeyen bir PRNG elde kullanarak overkill, ama en azından bir tür olabilirispat edilebilirtüm bu tehlikelere karşı korur. Ne bilen saldırgan engelleyen bir şey değilbireyseltuz, onlara potansiyel hedefler önemli sayıda kullanılan büyük, şişman bir hedef vermek değil. Rasgele seçim hedefleri pratik olarak ince yapar.

Sonuç olarak:

Düzenli olarak dağıtılmış, yüksek entropi rastgele bir tuz kullanın. Yeni bir parola oluşturduğunuzda, yeni bir tuz kullanın veya bir parola değişikliği. Karma şifre ile birlikte tuz deposu. Büyük tuzları (en az 10 bayt, tercihen bir veya daha fazla 16) iyilik.

Bir tuz iyi bir şifre içine kötü bir şifre açılmıyor. Sadece saldırgan en azından sözlük saldırısı bedel ödeyecek olmasını sağlarherkötü kırdı şifreyi.

Yararlı kaynaklar:
stackoverflow.com: Non-random salt for password hashes
Bruce Schneier: Practical Cryptography (kitap)
Matasano Security: Enough with the Rainbow Tables
usenix.org: Unix crypt used salt since 1976
owasp.org: Why add salt
openwall.com: Salts

Yasal Uyarı:
Bir güvenlik uzmanı değilim. Bu cevap Thomas Pornin tarafından yapılmıştır olmasına rağmen)
Eğer orada güvenlik uzmanları herhangi yanlış bir şey bulursanız, lütfen yorum ya da bu wiki cevabı düzenleyin.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Doug Bernards

    Doug Bernard

    7 Kasım 2007
  • iMasterful

    iMasterful

    11 EYLÜL 2009
  • The White House

    The White Ho

    21 Ocak 2006