2011-09-17 14 views
5

Widziałem zalecenia, aby używać bcrypt do haseł hash ze względu na jego zdolność do nadążania za prawem Moore'a.W jaki sposób bcrypt nadąża za prawem Moore'a?

Najwyraźniej powodem tego jest fakt, że atakujący musiałby zająć znacznie więcej czasu niż hash wygenerowany przez funkcję skrótu ogólnego przeznaczenia, taką jak SHA256.

Jak to możliwe? Jak algorytm może być celowo wolny pomimo prawa Moore'a?

+1

Wierzę, że Bcrypt stosuje czynnik roboczy, który można zwiększyć, aby zwiększyć koszt generowania skrótu, ponieważ procesory są szybsze. –

Odpowiedz

5

bcrypt można konfigurować za pomocą parametru o nazwie "współczynnik roboczy". Wewnętrznie wykona operację podobną do haszowania, wielokrotnie sukcesywnie. "Wiele" to część, którą można skonfigurować, do kilku miliardów. Tak więc, aby poradzić sobie z prawem Moore'a, po prostu rozwiąż to ustawienie. Inną funkcją, która może być ustawiona tak wolno, jak chciał, jest PBKDF2 (patrz parametr "liczba iteracji").

Należy pamiętać, że powolnym hasłem jest utrudnianie atakującemu, ale także mechanicznie czyni to wolnym dla "uczciwych systemów"; to kompromis. Aby uzyskać więcej informacji, zobacz this answer (na security.stackexchange).

+0

Twój wkład w to pytanie byłby bardzo mile widziany: http://stackoverflow.com/questions/7479442/high-quality-simple-random-password-generator/ – quantumSoup

5

Osoba atakująca będzie chciała spróbować wszystkich 216,553 english words.

Kolejne 12 bitów wysiłku dla the common variations, co pozwala powiedzieć, możliwe jest podanie 887 001,088 (2) możliwych haseł.

BCrypt ma około 4,342,912 (i.e. 222) operations to calculate one hash (at cost=12).

Rdzeń dzisiaj zapewnia około 2 cykli/sek; stan techniki wynosi 8 = 2 rdzeni na procesor w sumie 2 * 231 = 2 cykli/sek. Serwer zazwyczaj ma 4 procesory, zwiększając łączną liczbę cykli do 2 * 2 = 2 10/s. cykli obliczania jednego hash * 2 możliwych (wspólnych) haseł = 2 cykli do uruchamiania przez wszystkie (zwykłe) hasła.

Oznacza to, że potrzeba 4-procesora, octo-rdzeń, serwer około 2/2 = 2 sekund (do 9 godzin), aby przejść przez wszystkie wspólne hasło.

W rzeczywistości moje hasło nie jest powszechne i używa około 44-bitów. 2 haseł * 2 cykli na hasło = 2 cykli do wypróbowania wszystkich nietypowych haseł. 2 /2 cykli/sekundę = 2 sekund (34 lata), aby znaleźć moje hasło.

Prawo Moore'a mówi, że moc obliczeniowa podwaja się co 18 miesięcy.

  • dzisiaj: 34 lat, by znaleźć swoje rzadkością hasło
  • 1,5 roku: 17 lat
  • 3 lat: 8,5 roku
  • 4.5: 4.25 lat
  • 6 lat: 2,125 lat
  • 7.5 lat: 1 rok
  • 9 lat: 6 miesięcy
  • 10,5 lat: 3 miesiące
  • 12 lat: 6 tygodni
  • 13,5 lat: 3 tygodni
  • 15 lat: 10 dni
  • 17,5 lat: 5 dni
  • 19 lat: 63 godzin
  • 20,5 lat: 31 godzin

To jest teraz bcrypt trzyma przeciwko prawo Moore'a.

Zwiększ czynnik kosztów z do i że będzie podwójne czasy zaangażowany.