SORU
3 HAZİRAN 2013, PAZARTESİ


En iyi Uygulamalar: Tuzlama & atmaya şifreleri?

Karşı karşıya yaptığımı aslında şifreleri tuzlama ama onları atmaya olmadığını öğrendim bir tartışma geldim, ve o zamandan beri gibi bir işlevi de yapmaya başladım:

hash_function($salt.hash_function($pepper.$password)) [multiple iterations]

Görmezden seçilmiş karma algoritması (istiyorum bu bir tartışma tuz ve biber ve özel algoritmalar ama ben kullanarak bir güvenli bir), bu güvenli bir seçenek yoksa ben bir şeyler farklı mı? Şartları ile aşina olmayanlar için

  • Birtuzrasgele bir değer genellikle veritabanı imkansız hash tabloları şifreleri kırmak için kullanılmasını sağlamak için tasarlanmış bir dize ile saklanır. Her şifre kendi tuz, olmalılar kadar kaba zorla tek tek sipariş için çatlak; ancak, tuz olarak depolandığı veritabanı ile şifre karma, bir veritabanı taviz anlamına gelir kaybediyor.

  • Birbibersitedeki statik bir değer ayrı bir sır olarak tasarlanmış veritabanı (genellikle kodlanmış uygulamanın kaynak kod) depolanır. Veritabanının bir uzlaşma tüm uygulama şifresi tablo kaba forceable neden olmasın diye kullanılır.

Ve tuzlama & atmaya. kaçırdığım bir şey benim şifreleri en iyi seçenek benim kullanıcı güvenliğini korumak için var mı? Bunu bu şekilde yapmak için herhangi bir potansiyel güvenlik açığı var mı?

Not: tartışma amaçlı Kabul uygulama ve veritabanı ayrı makinelerde depolanan parolalar paylaşıyoruz vb. veritabanı sunucusu ihlali otomatik olarak uygulama sunucusu ihlali anlamına gelmez.

CEVAP
3 HAZİRAN 2013, PAZARTESİ


Tamam. over over, ben bu konuda yazmaya arıyorken biber üzerine son bir kurallı cevap yalnız yapacağım.

Biber Görünen Tarafı

Biber hash fonksiyonları daha güvenli hale getirmek gerektiğini oldukça açık gözüküyor. Eğer saldırgan sadece veritabanı alırsa, o zaman kullanıcıların şifreleri güvenli olsun, değil mi? Mantıklı görünüyor, değil mi?

O kadar çok insan biber iyi bir fikir olduğunu düşünüyorum. "Mantıklı".

Biber Gerçeği

Güvenlik ve şifreleme alemlerde, "anlam" yeterli değil. Kanıtlanabilir bir şey olmalıvegüvenli kabul olması için mantıklı. Ayrıca, sürdürülebilir bir şekilde uygulanabilir olması gerekiyor. Korunabilir mi ki en güvenli sistem güvensiz eğer bu güvenlik herhangi bir parçası bozulursa, bütün sistem çöker çünkü) olarak kabul edilir.

Ve biber ne kanıtlanabilir ya da sürdürülebilir modelleri uygun...

Biber İle Teorik Sorunları

O aşamayı geçtik, hadi biber nesi var bak.

  • Başka bir karma beslemek tehlikeli olabilir.

    Örnek, hash_function($salt . hash_function($pepper . $password)).

    "Besleme" başka bir hash fonksiyonu içine bir karma sonucu genel güvenliğini azaltabilir. sadece geçmiş deneyim olduğunu biliyoruz Nedeni, her iki hash fonksiyonları saldırının hedefi haline gelir.

    O PBKDF2 gibi algoritmalar Özel Harekat onları birleştirmek için (bu durumda hmac) kullanın.

    Bu noktada büyük bir anlaşma değil, aynı zamanda sadece etrafında atmak için önemsiz bir şey değildir. Şifreleme sistemleri "" durumlarda, odaklanmak yerine "dizayn" durumlarda. işe çalışmalıdır önlemek için tasarlanmıştır

    Bu tamamen teorik görünse de, aslında değil. Örneğin, Bcrypt cannot accept arbitrary passwords için. Yani bcrypt(hash(pw), salt) geçen gerçekten eğer hash() ikili bir dize döndürürse bcrypt(pw, salt) çok daha zayıf bir karma neden olabilir.

  • Tasarım Karşı Çalışıyor

    Yol bcrypt (ve diğer şifre karma algoritmalar) bir tuz ile birlikte çalışmak üzere tasarlanmıştır. Pepper kavramı asla tanıtıldı. Bu bir saçmalığında gibi görünebilir, ama değil. Bu nedenle salt bir sır değildir. Saldırgan bilinen edilebilir bir değerdir. Diğer yandan biber, çok, tanımı gereği, bir şifreleme gizli.

    Geçerli parola karma algoritmalar (bcrypt, pbkdf2, vb.) sadece bir gizli değer (şifre) almak için tasarlanmıştır. Algoritma içine başka bir sır ekleyerek hiç araştırma yok.

    Bu güvenli olmadığı anlamına gelmez. Eğer güvenli olup olmadığını bilmiyoruz demektir. Ve güvenlik ve şifreleme ile genel bir öneri olmadığını bilmiyoruz eğer mi, değil mi.

    Yani algoritmalar ve gizli değerleri ile kullanmak için cryptographers (biber) tarafından tasarlanan onaylanıp kadar geçerli algoritmaları onlarla birlikte kullanılmamalıdır.

  • Karmaşıklık Güvenlik Düşmanıdır

    İster inanın ister inanmayın, 10* *değil. Karmaşık görünen bir algoritma yapmak güvenli olabilir veya olmayabilir. Ama şansını güvenli değil, son derece önemli.

Biber İle Önemli Sorunlar

  • Sürdürülebilir Değil

    Biber uygulamanız biber anahtarı döndürmek için yeteneği engellemektedir. Biber bir şekilde çalışması için giriş kullanılmaktadır beri, hiç değeri ömür boyu biber değiştirebilirsiniz. Bu biraz bitkin kesmek ile anahtar rotasyon destek almak için sahip olmanız gerekiyor. anlamına gelir.

    Buson dereceşifreleme sırları saklamak ve gerektiğinde o kadar da önemli. Anahtar (periyodik olarak, ve bir güvenlik ihlalinden sonra) döndürmek için bir mekanizma olmaması büyük bir güvenlik açığı.

    Ve geçerli biber yaklaşımınız her kullanıcı kendi şifre tamamen bir dönme tarafından geçersiz ya da döndürmek için bir sonraki oturum açma asla olabilir) kadar beklemek gerekir...

    Temelde yaklaşım hemen imkansız kılıyor.

  • Kendi Kripto Rulo Gerektirir

    Geçerli bir algoritma biber kavramını destekler beri, algoritmalar oluşturmak veya yenilerini biber desteklemek için icat da gerektirir. Ve hemen o gerçekten neden kötü bir şey görebilirsiniz:

    Herkes, en bilgisiz en iyi kriptolog amatör, kendisi kırabilir mi bir algoritma oluşturabilirsiniz.

    ASLAkendi kripto rulo...

Daha İyi Bir Yol

Bu yüzden, tüm sorunları yukarıda ayrıntılı dışı durum işleme için iki yol vardır.

  • Sadece Bunlar Kayıtlı Algoritmalar Kullanır

    Bcrypt kullanın veya doğru (yüksek maliyetli) scrypt, zayıf sözlük şifreleri ama istatistiksel olarak güvenli olmalıdır. Maliyeti 5 bcrypt karma için geçerli kaydı saniyede 71k karıştırır. Bu gidişle 6 karakter bile rasgele bir parola çatlamak yıl sürer. Ve en az benim önerilen maliyeti göz önüne alındığında 32 kat saniyede karma azaltır 10. Saniyede yaklaşık 2200 karma konuşuyor olacaktık. Bu gidişle, hatta bazı cümleleri veya sözlük modificaitons güvenli olabilir.

    Ayrıca, kapıda şifre ve onlara izin vermiyor, o zayıf dersleri için kontrol etmeliyiz. Şifre kırma daha gelişmiş hale geldikçe, bu yüzden kalite gereksinimleri şifre gerekir. Hala istatistiksel bir oyun. ama uygun bir depolama tekniği ve güçlü bir şifre ile, herkes hemen hemen çok güvenli

  • Şifrelemek Çıkış Depolama Önce Karma

    Güvenlik alanında bir algoritma yukarıda söylediğimiz her şeyi işlemek için tasarlanmış vardır. Bir blok şifre. Anahtar (yay! döndürün, böylece eski haline dönebilir, çünkü iyi. idame!). Dizayn olarak kullanılıyor çünkü. Kullanıcı herhangi bir bilgi verir, çünkü bu iyi.

    Hadi o satırı tekrar bakın. Hadi bir saldırganın algoritması (güvenlik için gerekli olan, aksi takdirde bilinmezlik yoluyla güvenlik) bilgisi olduğunu söyleyebiliriz. Geleneksel biber bir yaklaşımla, saldırgan sentinel bir şifre oluşturabilir ve tuz ve çıktı biliyor beri, kaba kuvvet biber edebilir. Tamam, çok küçük bir ihtimal, ama mümkün. Bir şifre ile, saldırganın hiçbir şey alamaz. Ve tuz rasgele olduğundan, sentinel bir şifre bile ona yardım edemez. Kalırlar en iyisi şifreli saldırıdır. Onlar ilk şifreleme anahtarı kurtarmak için şifrelenmiş karma saldırı ve karma saldırıdan sonra dönmesi gerekiyor. Ama bir şey varçokşifreleri ve saldıran bir araştırma, güvenmek istiyoruz.

/DR TL

Biber kullanmayın. Orada bir bilgisayar sorunları ile onları, ve iki iyi yolu vardır: kullanarak herhangi bir sunucu tarafı gizli (Evet, Tamam) ve şifreleme çıktı esrar kullanan bir blok şifreleme önce depolama.

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

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Call Me Howard

    Call Me Howa

    18 AĞUSTOS 2012
  • Easy Learn Tutorial

    Easy Learn T

    10 Kasım 2012
  • Julian Smith

    Julian Smith

    31 EKİM 2006