SORU
25 AĞUSTOS 2010, ÇARŞAMBA


Neden tuzları sözlük saldırıları 'imkansız'?

Olası Çoğalt:
Need some help understanding password salt

Güncelleme: Lütfen bir tuz ne olduğunu sormuyorum not, gökkuşağı tablosu nedir, sözlük saldırısı ya da bir tuz amacı nedir. Eğer kullanıcılar tuz ve karma, çok kolay şifre hesaplamak için değil biliyorsanız? sorgulama yapıyorum:

İşlemi biliyorum ve benim bazı projelerinde kendim uygulamak.

s =  random salt
storedPassword = sha1(password   s)

Veritabanında saklamak:

username | hashed_password | salt

Gördüğüm tuzlama her uygulama ya da şifre sonunda, ya da başında: tuz ekler

hashed_Password = sha1(s   password )
hashed_Password = sha1(password   s)

Bakimdan, onun tuz değerinde bir hacker (ha ha) sözlük saldırısı Sadece ortak kombinasyonları yukarıda listelenen depolanan tuzlar karşı her anahtar kelime çalışır.

Kesinlikle uygulanması yukarıda açıklanan basit aslında temel sorun çözülmeden hacker için bir adım daha ekler? Alternatifler bu soruna yanımda, ya da benim sorunum ne yanlış anlaşılması var mı?

Tek şey benim bunu bir sır karıştırma algoritması dantel, tuz ve şifre birlikte rastgele bir desen, ya da ekler diğer kullanım alanları sağlama süreci anlamı hacker olmalı erişmek için veritabanı VE kod için dantel onlar için bir sözlük saldırısı kanıtlamak verimli. (En iyi hacker bu muhtemelen en iyi değil, dolayısıyla tüm bilgilere erişimi vardır varsaymak yanlış olmaz yorumlarda belirttiği gibi Update).

Ben bir hacker şifreleri ve karma bir liste ile veritabanı: kullanıcı hack cekti önermek bir örnek vereyim

Hack bizim veritabanından veri:

RawPassword (not stored)  |  Hashed   |     Salt
--------------------------------------------------------
letmein                       WEFLS...       WEFOJFOFO...

Ortak parola sözlük:

   Common Password
   --------------
   letmein
   12345
   ...

Her kullanıcı kayıt, ortak şifreler döngü ve onları karma için:

for each user in hacked_DB

    salt = users_salt
    hashed_pw = users_hashed_password

    for each common_password

        testhash = sha1(common_password   salt)
        if testhash = hashed_pw then
           //Match!  Users password = common_password
           //Lets visit the webpage and login now.
        end if

    next

next

Bu benim açımdan çok daha iyi gösterir umarım.

10,000 ortak şifre ve 10,000 kullanıcı kayıtları dikkate alındığında, 100,000,000 sağlamalarının şifreleri mümkün olduğunca çok keşfetmek için hesaplamak gerekiyor. Birkaç saat sürebilir, ama gerçekten bir sorun değil.

Çatlama Teori üzerinde güncellemek

Onları karıştırmak için kendi algoritması ile birlikte SHA1 sağlamalarının ve tuzu bir veritabanına erişimi olan bozuk bir host, biz kabul edeceğiz. Veritabanı 10,000 kullanıcı kayıtları vardır.

This site saniyede 2,300,000,000 SHA1 sağlamalarının hesaplamak mümkün GPU kullanarak olduğunu iddia ediyor. (Durum muhtemelen daha yavaş olacaktır, ama şimdi kullanacağımız için gerçek dünya, tırnak şekil).

(((95^4)/2300000000)/2)= *10000 177 saniye

Verilen bir dizi 95 yazdırılabilir ASCII karakterler ile en fazla uzunluğu 4 karakter, bölü oranının hesaplanması (değişken), bölü 2 (varsayarak ortalama zaman keşfetmek şifre olacak ortalama gerektirir P permütasyon) için 10.000 kullanıcılar alacak 177 saniye için çalışmak ve tüm kullanıcıların şifreleri nereye uzunluğu <= 4.

Hadi gerçekçilik için biraz ayarlayın.

(((36^7)/1000000000)/2)= *10000 2 gün

Farz olmayan büyük / küçük harf duyarlılığı ile bir parola uzunluğu <= 7, yalnızca alfasayısal karakter, alacak 4 gün çözmek için 10.000 kullanıcı kayıtları ve yaptım yarıya hız algoritma yansıtmak yükü olmayan ideal bir durum.

Önemli olan bu doğrusal kaba kuvvet saldırısı olduğunu kabul etmek, tüm hesaplamaları birbirinden bağımsız, birden çok bakimdan sistemleri için mükemmel bir görev çözmek için. (Kolay exectution zaman yarım, 2 bilgisayar farklı yerden saldırı koşu kurmak için YANİ).

Özyinelemeli olarak şifre 1,000 kez bu görevi daha fazla hesaplama yapmak için karma pahalı: duruma verilen

(((36^7) 000 000 000/ 1 ) 2/ ) 1000* = 10.8839117 saat saniye

Bunun için teklif edilen rakamın yarısından daha az bir hız yürütme-sayısal alpha 7 karakter uzunluğu temsil ederbir kullanıcı.

Özyinelemeli olarak 1000 kat karma etkin bir battaniye saldırı, engeller, ancak kullanıcı veri hedefli saldırılar hala açıktır.

CEVAP
25 AĞUSTOS 2010, ÇARŞAMBA


Sözlük saldırıları durmuyor.

Ne şifreleri sağlamalarının ne olduğunu anlamaya rainbow table kullanarak şifre dosyasının bir kopyasını almak için yöneten birisi " dur.

Sonunda, kaba-zorla olabilir. O kısma cevap kullanıcılarınızın şifreleri (en az bir sayı veya özel karakter, Örneğin minimum gereksinimleri) gibi sözlük kelimeleri kullanmamaya zorlamak için.

Güncelleme:

Bu daha önce, ama bazı (çoğu?) bahsetmiştim şifre sistemleri her şifre için farklı bir tuz, büyük olasılıkla parola kendisi ile saklı kullanın. Bu tek bir gökkuşağı tablo işe yaramaz hale getirir. Bu crypt kütüphane UNIX nasıl işliyor, ve Linux gibi modern İşletim sistemleri yeni bir karma algoritmalar ile bu kütüphane artırdık.

SHA-256 ve SHA-512 için destek GNU crypt daha yeni sürümlerinde eklenen bir gerçeği biliyorum.

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

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • bunliu

    bunliu

    2 Mayıs 2007
  • MandMEvangelists

    MandMEvangel

    28 Ocak 2008
  • SuppressedStorm

    SuppressedSt

    11 AĞUSTOS 2013