Parola karmaları için rastgele olmayan tuz


89

GÜNCELLEME: Geçenlerde bu sorudan aşağıdaki tartışmanın tamamında benim (ve diğerlerinin de yaptığından eminim) biraz kafa karıştırıcı olduğunu öğrendim: Gökkuşağı tablosu dediğim şeye aslında karma tablo deniyor. Gökkuşağı masaları daha karmaşık yaratıklardır ve aslında Hellman Hash Chains'in bir çeşididir. Cevabın hala aynı olduğuna inanıyorum (kriptanalize gelmediği için), tartışmanın bir kısmı biraz çarpık olabilir.
Soru: " Gökkuşağı tabloları nedir ve nasıl kullanılır? "


Tipik olarak, Rainbow Table saldırılarına karşı koruma gibi karma işlevlerle (örneğin parolalar için) kullanılmak üzere tuz olarak kriptografik açıdan güçlü bir rastgele değeri her zaman kullanmanızı öneririm.

Ancak tuzun rastgele olması aslında kriptografik olarak gerekli midir? Bu bağlamda herhangi bir benzersiz değer (kullanıcı başına benzersiz, örneğin kullanıcı kimliği) yeterli olur mu? Aslında, sistemdeki tüm (veya çoğu) şifreleri kırmak için tek bir Gökkuşağı Tablosunun kullanılmasını engeller ...
Fakat entropi eksikliği, hash fonksiyonlarının kriptografik gücünü gerçekten zayıflatır mı?


Not, tuzun neden kullanıldığını, nasıl korunacağını (olması gerekmiyor), tek bir sabit karma (yapma) kullanarak veya ne tür bir karma işlevi kullanacağımı sormuyorum.
Sadece tuzun entropiye ihtiyacı olup olmadığı.


Şimdiye kadarki cevaplar için hepinize teşekkürler, ancak (biraz) daha az aşina olduğum alanlara odaklanmak istiyorum. Temelde kriptanaliz için çıkarımlar - eğer herhangi biri kripto-matematiksel PoV'den bir bilgi alırsa çok memnun olurum.
Ayrıca, dikkate alınmamış ek vektörler varsa, bu da harika bir girdidir (çoklu sistemlerde @Dave Sherohman noktasına bakın).
Bunun ötesinde, herhangi bir teoriniz, fikriniz veya en iyi uygulamanız varsa - lütfen bunu ya kanıt, saldırı senaryosu ya da ampirik kanıtlarla destekleyin. Ya da kabul edilebilir değiş-tokuşlar için geçerli mülahazalar ... Konuyla ilgili En İyi Uygulamaya (büyük B büyük P) aşinayım, bunun gerçekte hangi değeri sağladığını kanıtlamak istiyorum.


DÜZENLEME: Burada gerçekten iyi cevaplar var, ama bence @ Dave'in dediği gibi, ortak kullanıcı adları için Rainbow Tablolarına geliyor ... ve olası daha az yaygın isimler de. Ancak, kullanıcı adlarım küresel olarak benzersizse ne olur? Sistemim için mutlaka benzersiz değil, ancak her kullanıcı için - örneğin e-posta adresi.
Tek bir kullanıcı için bir RT oluşturmak için herhangi bir teşvik olmayacaktır (@Dave'in vurguladığı gibi, tuz gizli tutulmamaktadır) ve bu yine de kümelenmeyi engelleyecektir. Tek sorun, farklı bir sitede aynı e-posta ve şifreye sahip olabileceğim olabilir - ancak tuz zaten bunu engellemez.
Öyleyse, kriptanalize geri dönüyor - Entropi gerekli mi, değil mi? (Şu anki düşüncem, kriptanaliz açısından gerekli değil, ancak diğer pratik nedenlerden kaynaklanıyor.)


Aşağıdaki cevapların çoğunun kafamın karıştığını söylemeliyim. Tuz kullanmanın ana amacı, gökkuşağı sofra saldırısını önlemektir, böylece kullanıcıya özgü herhangi bir şey, saldırganı her tuz için bir gökkuşağı tablosu oluşturmaya zorlarken yapmalıdır. benim 2c.
Goran

Örneğin tuz gerekliyse. site, genellikle url’lerde kimlikleriniz olur. Saldırgan, şifrenin kullanıcı kimliği + kullanıcı adı olduğunu biliyorsa (ve bildiğini varsayarsak), tuz değerini önlemek için saldırıyı değiştirmek oldukça kolaydır.
dmajkic

@dmajkic, salt RT saldırılarını önlemek ve aynı parolaları farklı kullanıcılar için farklılaştırmak için tasarlanmıştır. Bu, kullanıcı adlarıyla bile verilir.
AviD

@AviD: Bu doğru. Ancak karmamı geçiş için tanıyorsam ve tuzun kullanıcı adım olduğunu bilirsem, herhangi bir sözlük sözcüğü için kolayca karma geçiş değeri oluşturabilir ve bunu başka birisinin karma geçirdiği ile karşılaştırabilirim. Bu yüzden zaman kullanıcı adından daha iyidir.
dmajkic

1
PHP Güvenlik Konsorsiyumu web sitesinde, örneğinde tuz olarak bir md5 karma rasgele sayı kullanan bir makale buldum phpsec.org/articles/2005/password-hashing.html
helloworlder

Yanıtlar:


156

Salt, geleneksel olarak karma şifrenin ön eki olarak saklanır. Bu, şifre karmasına erişimi olan herhangi bir saldırgan tarafından zaten biliniyor. Kullanıcı adını tuz olarak kullanmak veya kullanmamak bu bilgiyi etkilemez ve bu nedenle tek sistem güvenliği üzerinde hiçbir etkisi olmayacaktır.

Ancak, aynı şifre karma algoritmasını kullanan birden çok sistemde aynı kullanıcı adı ve şifreye sahip olan bir kullanıcı, aynı şifre karma işlemine sahip olacağından, kullanıcı adını veya kullanıcı tarafından kontrol edilen başka bir değeri tuz olarak kullanmak, sistemler arası güvenliği azaltır. bu sistemlerin her biri. Bunu önemli bir sorumluluk olarak görmüyorum çünkü bir saldırgan olarak, hesabı tehlikeye atmanın başka yollarını denemeden önce, hedef hesabın diğer sistemlerde kullandığı bilinen parolaları deneyeceğim. Özdeş karmalar bana yalnızca önceden bilinen parolanın işe yarayacağını söylerdi, gerçek saldırıyı daha kolay hale getirmezdi. (Yine de, hesap veritabanlarının hızlı bir şekilde karşılaştırılmasının, bana kimin şifreleri tekrar kullanıp kullanmadığını söyleyeceğinden, daha yüksek öncelikli hedeflerin bir listesini sağlayacağını unutmayın.)

Bu fikrin en büyük tehlikesi, kullanıcı adlarının yaygın olarak yeniden kullanılmasıdır - hemen hemen ziyaret etmek istediğiniz her sitenin, örneğin "Dave" adında bir kullanıcı hesabı olacaktır ve "yönetici" veya "kök" daha da yaygındır - bu ortak isimlerle kullanıcıları hedefleyen gökkuşağı tablolarının oluşturulması çok daha kolay ve daha etkili.

Bu kusurların her ikisi de, şifrelemeden önce şifreye ikinci bir tuz değeri (sabit veya gizli veya standart tuz gibi açıkta) eklenerek etkili bir şekilde giderilebilir, ancak bu noktada, bunun yerine yine de standart entropik tuz kullanıyor olabilirsiniz. kullanıcı adı üzerinde çalışmak.

Eklemek için Düzenlendi: Pek çok insan entropi ve tuzdaki entropinin önemli olup olmadığı hakkında konuşuyor. Öyle, ama hakkındaki yorumların çoğunun düşündüğü için değil.

Genel düşünce, tuzun bir saldırganın tahmin etmesini zorlaştıracak şekilde entropinin önemli olduğu gibi görünüyor. Bu yanlış ve aslında tamamen alakasız. Çeşitli kişilerin birkaç kez işaret ettiği gibi, tuzdan etkilenecek saldırılar yalnızca şifre veri tabanına sahip biri tarafından yapılabilir ve şifre veri tabanına sahip biri her bir hesabın tuzunun ne olduğunu görmek için bakabilir. Tahmin edilebilir olup olmadığı, ne zaman önemsiz bir şekilde bakabileceğiniz önemli değil.

Entropinin önemli olmasının nedeni, tuz değerlerinin kümelenmesini önlemektir. Tuz kullanıcı adına dayanıyorsa ve çoğu sistemin "kök" veya "yönetici" adında bir hesaba sahip olacağını biliyorsanız, bu iki tuz için bir gökkuşağı tablosu yapabilirsiniz ve çoğu sistemi kıracaktır. Öte yandan, rastgele 16 bitlik bir tuz kullanılıyorsa ve rastgele değerler kabaca eşit dağılıyorsa, tüm 2 ^ 16 olası tuzlar için bir gökkuşağı tablosuna ihtiyacınız vardır.

Bu, saldırganın bireysel bir hesabın tuzunun ne olduğunu bilmesini engellemekle ilgili değil, onlara potansiyel hedeflerin önemli bir kısmında kullanılacak tek bir tuzun büyük, yağlı hedefini vermemekle ilgili.


Kabul. Kullanıcı adını tuz olarak kullanan varsayımsal sistemlere karşı başarılı olma olasılığı en yüksek olan saldırının rastgele tuz kullanan bir sisteme karşı başarısız olacağını düşündüğümden, kullanıcı adlarının yeniden kullanımına daha fazla önem verdim.
Steve Jessop

Sistemler arası güvenlik konusundaki düşüncenizi takdir ediyorum. Ayrıca, gelecekte kullanıcıya özgü gökkuşağı tablolarının görülmesinin pek olası olmadığını tahmin ediyorum ...
AviD

@AviD: Öyle mi düşünüyorsun? Bu oldukça spesifik bir saldırı vektörü.
David Grant

2
Tuz üretmek için değil, hayır. Tuzdan etkilenen tek saldırılar, doğrudan karma şifrelere karşı yapılan saldırılardır. Saldırı, tuzları da içerecek olan parola veritabanınızın bir kopyasına sahip olmadıkça bu tür saldırıları gerçekleştiremez. Saldırgan zaten tuzlara sahip olacağından, yalnızca herhangi bir temel (P) RNG'nin sağlayacağı aynı tuzla birden fazla parolanın karma hale getirilmesini önlemek için yeterli entropiye ihtiyaç duyarlar.
Dave Sherohman

3
@ acidzombie24: Tüm parolalar için tek bir sabit tuz kullanmak (genellikle benim deneyimime göre "nonce" olarak adlandırılır), her parola için benzersiz bir rastgele tuz kullanmaktan daha az güvenlidir, çünkü bir saldırganın iki veya daha fazla hesabın paylaşıp paylaşmadığını önemsiz bir şekilde belirlemesine izin verir aynı şifre. Öte yandan, nonce büyük olasılıkla veritabanında değil kodunuzda depolanır, bu nedenle yalnızca veritabanınıza sahip olan bir saldırgan ona erişemez; Bu nedenle, en güvenli seçenek, hem sistem genelinde bir nonce (kodda depolanır) hem de parola başına tuz (veritabanında depolanır) kullanmaktır.
Dave Sherohman

29

Parolaları güvenli bir şekilde saklamak için yüksek entropi tuzunun kullanılması kesinlikle gereklidir.

Kullanıcı adımı 'gs' al ve şifremi ekle 'MyPassword' gsMyPassword verir. Bu, gökkuşağı tablosu kullanılarak kolayca kırılabilir, çünkü kullanıcı adı yeterli entropiye sahip değilse, bu değer, özellikle kullanıcı adı kısaysa, gökkuşağı tablosunda zaten depolanmış olabilir.

Diğer bir sorun, bir kullanıcının iki veya daha fazla hizmete katıldığını bildiğiniz saldırılardır. Çok sayıda yaygın kullanıcı adı vardır, muhtemelen en önemlileri admin ve root'tur. Biri, en yaygın kullanıcı adlarına sahip tuzları içeren bir gökkuşağı tablosu oluşturduysa, bunları hesaplardan ödün vermek için kullanabilirdi.

Eskiden 12 bitlik tuzları vardı . 12 bit, 4096 farklı kombinasyondur. Bu yeterince güvenli değildi, çünkü günümüzde bu kadar çok bilgi kolayca saklanabiliyor . Aynı durum en çok kullanılan 4096 kullanıcı adı için de geçerlidir. Muhtemelen birkaç kullanıcınız en yaygın kullanıcı adlarına ait bir kullanıcı adı seçecektir.

Parolanızın entropisini belirleyen bu parola denetleyiciyi buldum . Parolalarda daha küçük entropiye sahip olmak (kullanıcı adlarını kullanmak gibi) gökkuşağı masalarını en azından düşük entropili tüm parolaları kapsamaya çalıştıkları için çok daha kolay hale getirir, çünkü bunlar daha olasıdır.


İyi bir nokta için 1, ancak, olan potansiyel söz masif gökkuşağı masaya. GsMyPassword uzunluğunun tüm değerlerini kapatmak için (büyük / küçük harflerin karışık olduğu varsayılarak) tabloda 36 ^ 12 satır gerekir!
David Grant

Bir takip olarak: Dağıtılmış gökkuşağı tablosu projesinde 63.970 kırık karma var, ancak 36 ^ 12, 4.738.381.338.321.616.896'dır!
David Grant

Teşekkürler ve bu mantıklı - ancak Bay PatatoHead'in belirttiği gibi, alanınızı RT ile makul kırılma olasılığının ötesine genişletiyorsunuz. Ayrıca, kullanıcı adlarımın en az 6-8 karakter olduğunu varsayarsak - entropi hangi ek gerekli değeri sağlar?
AviD

@Potato: olası tüm alfanümerik karakter kombinasyonlarını içeren bir gökkuşağı tablosu varsayarsınız. Durum böyle olmak zorunda değildir, etkili bir gökkuşağı tablosu, ortak şifreler / karmalar için karmalar içerecektir. Tuz, sözlük saldırılarına veya birleşik gökkuşağı / sözlüğe karşı korumak için vardır.
Guillaume

3
Kullanıcı adını tuz olarak kullanmak, tahmin edilebileceği gibi yüksek ayrıcalıklı bir hesabın olduğu sistemler için de kötü bir fikirdir: Windows'ta "Yönetici", * nix'te "kök", MSSQL'de "sa" vb.
kimse

8

İnsanlar kullanıcı adlarını farklı web siteleri arasında paylaşabileceğinden kullanıcı adının tek başına sorunlu olabileceği doğrudur. Ancak, kullanıcıların her web sitesinde farklı bir isme sahip olması oldukça problemsiz olacaktır. Öyleyse neden her web sitesinde onu benzersiz kılmıyorsunuz? Parolayı şöyle bir şekilde özetleyin

hashfunction ("www.yourpage.com /" + kullanıcı adı + "/" + şifre)

Bu sorunu çözmelidir. Ben bir kriptanaliz ustası değilim, ancak yüksek entropi kullanmamamızın hash'i daha da zayıflatacağından eminim.


Bunun yeterli olduğuna inanıyorum. Bununla birlikte, hash'lerin karmaşık bir matematiksel alan olduğu ve düşük entropili tuzların gelecekte hash'leri daha kolay tahmin etmesini sağlaması (özellikle hash'ler kırıldıkça) çok iyi olasıdır, kanıtlandığı zaman güvenlik konusunda bahse girmezdim. daha güvenli çözüm çok daha pahalı değil.
Georg Schölly

7

Her ikisini de kullanmayı seviyorum: yüksek entropili, rastgele kayıt başına tuz, artı kaydın kendisinin benzersiz kimliği.

Bu, sözlük saldırılarına vb. Karşı güvenliğe fazla bir şey katmasa da, birisinin kendi tuzunu ve karmasını başka bir kayda, parolayı kendi parolasıyla değiştirmek amacıyla kopyaladığı uç durumu ortadan kaldırır.

(Kuşkusuz bunun geçerli olduğu bir durumu düşünmek zor, ancak güvenlik söz konusu olduğunda kemer ve diş tellerinde hiçbir zarar göremiyorum.)


Şifreyi kullanıcıya bağlama fikrini seviyorum. Ancak saldırgan şifreyi değiştirebilirse, kesinlikle kimliği de değiştirebilir.
Georg Schölly

Kimliğin ne olduğuna bağlıdır: Tablonun birincil anahtarını kullanıyorum, ki bunu istediğinizde gerçekten değiştiremezsiniz. TBH, hacker veritabanınıza yazıyorsa, zaten büyük bir
başınız

3
Hayır, beğendim. Saldırgan genellikle "içeriden" biridir. Veritabanında peşinde olduğu şeyin olmadığı senaryolar hayal edebilirim, ancak veritabanındaki kimlik bilgilerinin üzerine yazabilirse, istediğini yapmak için kimliğini doğrulayabilir.
erickson

1
İyi bir nokta. İlk kullanıcıyı yeni bir veritabanına eklemenin gittikçe zorlaştığını görüyoruz: Uygulamalarımızı o kadar güvenli hale getirdik ki, onları zar zor kendi başımıza hackleyebiliyoruz. [Ayrıca, kimlik bilgilerini bir veritabanından diğerine kopyalayamamak için uygulamaya özel bir tuz kullanın.]
teedyay

Sonunda şunu söyleyen birini buldum: tuza kullanıcıya özel bir şey eklemek. Bu, bir saldırganın bazı kimlik bilgilerini başka bir kullanıcıya kopyalamasını ve ayrıca bir bilgisayar korsanının tablodaki karma ve tuz alanınıza ulaşmayı başarırsa herhangi bir şifreyi tahmin etmesini önler. Yapmaktan hoşlandığım bir şey daha var: karma işlemde yuvarlak sayıda yineleme kullanmamak. 10k veya 20k için gitmeyin, bunun yerine 19835 gibi bir şey yapın.
Andrew

3

Tuz biliniyorsa veya kolayca tahmin edilebiliyorsa, sözlük saldırısının zorluğunu artırmamışsınız demektir. "Sabit" bir tuzu hesaba katan değiştirilmiş bir gökkuşağı tablosu oluşturmak bile mümkün olabilir.

Benzersiz tuzların kullanılması, TOPLU sözlük saldırılarının zorluğunu artırır.

Benzersiz, kriptografik olarak güçlü tuz değerine sahip olmak ideal olacaktır.


2
Gökkuşağı tablosunun bütün noktası, değerlerin önceden oluşturulmuş olmasıdır ve bir değer için tablo oluşturuyorsanız (örneğin parola) ARTI belirli bir sabit ise, bu tamamen farklı bir tablodur ve siz de Hash sonucunu doğrudan deneyin. :)
David Grant

1
Sabit bir hash hiçbir şeye değmez. Tüm parolalar tek bir gökkuşağı tablosu kullanılarak kırılabilir. Tuzun amacı, bir gökkuşağı masası oluşturmanın imkansız olmasıdır.
Georg Schölly

1
@gs - Neden sabit bir tuzun etkilerini "içeren" bir gökkuşağı tablosu oluşturamadığınızı anlamıyorum. Saldırı alanı (şifre) değişmeyecektir, bu nedenle tablonun büyümesine gerek kalmayacak, sadece yeniden hesaplanmalıdır.
HUAGHAGUAH

@Potato - değiş tokuşa bağlıdır. Şirketinizin 20 bin girişinin tümü aynı sabit tuzla karma hale getirilmişse, yeni bir gökkuşağı tablosunu hesaplamak, tek tek sözlüğe saldırmaktan daha ucuz olabilir. Bu nedenle "TOPLU" vurgum.
HUAGHAGUAH

3

Her şifre için tuz farklı olduğu sürece muhtemelen iyi olacaksınız. Tuzun amacı, veritabanındaki her şifreyi çözmek için standart gökkuşağı tablosunu kullanamamanızdır. Dolayısıyla, her şifreye farklı bir tuz uygularsanız (rastgele olmasa bile), saldırganın temelde her şifre için yeni bir gökkuşağı tablosu hesaplaması gerekir, çünkü her şifre farklı bir şifre kullanır.

Daha fazla entropiye sahip bir tuz kullanmak pek yardımcı olmaz çünkü bu durumda saldırganın veritabanına zaten sahip olduğu varsayılır. Hash'i yeniden yaratabilmeniz gerektiğinden, tuzun ne olduğunu zaten bilmelisiniz. Yani tuzu veya tuzu oluşturan değerleri zaten dosyanızda saklamanız gerekir. Linux gibi sistemlerde, tuzu elde etme yöntemi bilinir, bu nedenle gizli bir tuza sahip olmanın bir faydası yoktur. Karma değerlerinizi alan saldırganın muhtemelen sizin tuz değerlerinizi de bildiğini varsaymalısınız.


3
"Tuzun amacı, veritabanındaki her şifreyi çözmek için standart gökkuşağı tablosunu kullanamamanızdır". Katılmıyorum. Mesele şu ki, herhangi bir şifreyi çözmek için standart bir gökkuşağı tablosu kullanamazsınız . Kullanıcı adı tuz ise, gökkuşağı tablosu "kök" için kökün pw'sini kırabilir.
Steve Jessop

Muhtemelen gerçekten önemli olan tek kural budur. Temel olarak parolanın sisteminizde benzersiz olmasını istersiniz, ancak ne olduğu önemli değildir. Yine de basit bir şey olabilir. Çok fazla entropiye ihtiyacınız yok.
Kibbee

Bu benim de düşüncemdi - ama "muhtemelen iyidir" diye takılıp kaldım. Hala bu teorinin kanıtlandığını veya en azından kriptanalizle ilgili herhangi bir sonuç olmadığının doğrulandığını görmüyorum.
AviD

@onebyone: Eğer tuz, kullanıcı adı + sabit yerel değerden oluşuyorsa (sık sık ':' kullanıyorum), o zaman bu, ortak kullanıcı adları ve ortak statik tuz değerlerini içeren bir dizi olmadıkça, standartlaştırılmış RT'leri mahveder. Durumun bu olmadığından şüpheleniyorum.
nsayer

Nsayer ile birlikte. # (D83d8, kullanıcı adıyla birlikte tuz olarak kullanıcı adı ile birlikte önceden oluşturulmuş bir RT olmayacak ve olasılıkla herhangi bir gökkuşağı tablosu saldırılarını önleyebilecek, sistem genelinde sabit bir dize kullanabilirsiniz.
Kibbee

3

Bir hash fonksiyonunun gücü girdisi tarafından belirlenmez!

Saldırganın bildiği bir tuzu kullanmak, açıkça bir gökkuşağı tablosu oluşturmayı (özellikle kök gibi sabit kodlu kullanıcı adları için ) daha çekici hale getirir , ancak karmayı zayıflatmaz . Saldırgan tarafından bilinmeyen bir tuzun kullanılması, sistemin saldırılmasını zorlaştıracaktır.

Bir kullanıcı adı ve parolanın birleştirilmesi yine de akıllı bir gökkuşağı tablosu için bir giriş sağlayabilir, bu nedenle karma parolayla depolanan bir dizi sözde rastgele karakterin tuzunu kullanmak muhtemelen daha iyi bir fikirdir. Örnek olarak, kullanıcı adım "patates" ve şifre "bira" olsaydı, hash'iniz için birleştirilmiş girdi gökkuşağı tablosu için makul bir giriş olan "patates birası" olur.

Kullanıcı şifresini her değiştirdiğinde tuzun değiştirilmesi, örneğin karışık harf, noktalama, minimum uzunluk, n hafta sonra değişiklik gibi makul bir şifre politikasının uygulanmasında olduğu gibi uzun süreli saldırıların önlenmesine yardımcı olabilir .

Ancak, sindirim algoritması seçiminizin daha önemli olduğunu söyleyebilirim. Örneğin, SHA-512 kullanımı, gökkuşağı tablosu oluşturan biri için MD5'ten daha çok acı verici olacaktır.


Fonksiyonun gücü değişmez, ancak çıktı kesinlikle değişir. Girdi etkilenebilir veya bilinebilirse, hash değeri hakkında belki bir şey çıkarılabilir. Risk bu.
Martin Carpenter

@Martin: Bir eşleşme olup olmadığına dair hash değerinden çıkarabileceğin tek şey! Bir hash işlevine "roota" veya "rootb" ("a" ve "b" nin parolayı temsil ettiği yerlerde) koymak size tamamen farklı bir çıktı verecektir.
David Grant

Tuzlar, gökkuşağı tabloları kullanan bir saldırgan tarafından bilinir.
Georg Schölly

Sunucunun şifrelenmemiş tuzu bilmesi gerekir (şifreyi hash'e karşı kontrol etmek için), bu nedenle bir saldırganın tuza erişimi olduğu ya da çok kolay bir şekilde elde edebileceği varsayılabilir.
Georg Schölly

Doğru, doğru, bu bir veridir - daha spesifik olmak gerekirse, genel şifreleme sisteminin (veya-alt sistem, wrt karmaları) gücünü kastettim.
AviD

1

Tuz, belirli bir girdi değerinin birden çok kez karma hale getirilmesi durumunda, elde edilebilecek en yakın hash değerinin her zaman farklı olmasını sağlamak için olabildiğince fazla entropiye sahip olmalıdır.

Tuzda mümkün olduğunca fazla entropi ile sürekli değişen tuz değerlerini kullanmak, karma oluşturma olasılığının (örneğin, parola + tuz) tamamen farklı karma değerler üretmesini sağlayacaktır.

Tuzdaki entropi ne kadar azsa, aynı tuz değerini üretme şansınız o kadar artar, çünkü aynı hash değerini üretme şansınız o kadar artar.

Giriş bilindiğinde "sabit" ve sözlük saldırılarının veya gökkuşağı tablolarının çok etkili olmasına izin veren "sabit" olan hash değerinin doğasıdır. Elde edilen hash değerini olabildiğince değiştirerek (yüksek entropi tuzu değerleri kullanarak), aynı girdi + rasgele tuzun hash hale getirilmesinin birçok farklı hash değeri sonucu üretmesini ve böylece gökkuşağı tablosunu yenmesini (veya en azından etkinliğini büyük ölçüde azaltmasını) sağlar. saldırılar.


Yine, tek bir sabit tuzdan bahsetmiyorum - daha çok rastgele olmayan, ancak kullanıcıya özgü bir değer. Örneğin, userId.
AviD

Bütün mesele, tuz değerinizin asla sabit olmaması gerektiğidir. Karıştırdığınız her şeyin, aynı "giriş" değerinin farklı bir tuzu olsun veya olmasın. Dave Sherohman, her bir hash hesaplamasında temelde aynı kalan, kullanıcıya özgü değerleri bile kullanmanın olumsuz yanlarını açıklıyor.
CraigTP

-1

Entropi, Tuz değerinin noktasıdır.

Tuzun arkasında basit ve tekrarlanabilir bir "matematik" varsa, tuzun orada olmamasıyla aynıdır. Sadece zaman değeri eklemek iyi olmalı.


Bu yorumu anlamıyorum. "Entropi kullan" diyorsun ve sonra: "zamanı kullan" ??
Martin Carpenter

Kullanıcı adı salt için kullanılıyorsa, yeterince entropik değildir. Ancak kullanıcı adı + geçerli tarih saatini kullanırsanız - bu, salt tam olarak ne zaman oluşturulduğunu tahmin etmek zor olduğundan öyledir.
dmajkic

"yeterince entropik" özneldir; bu senin standardın. Bu değeri zamana dayandırmak yeterli olmayabilir.
Martin Carpenter

"Mutlak gerçek rastgelelik" diye bir şey yoktur. "Yeterince iyi" olduğunda söylemek bize düşüyor. Bu durumda zamanın yeterince iyi olmadığını düşünüyorsanız, başka bir şey kullanın. stackoverflow.com/questions/84556/…
dmajkic

Aslında, asıl önemli nokta, (a) gökkuşağı tablosu saldırılarını ve (b) aynı şifre tanımlamasını önlemek için her bir hash sonucunun benzersiz olmasına neden olmaktır. Soru şu ki, entropi için başka ne gerekiyor?
AviD
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.