2011-08-08 20 views
5

Wiem wystarczająco dużo o kryptologii, aby utrudnić życie początkującemu programiście i zostać roześmianymi przez ekspertów od bezpieczeństwa. Biorąc to pod uwagę, pytam: jak bezpieczny jest javax.crypto.Cipher? Zdaję sobie sprawę, że wszystko może być złamane przez kogoś z wolą i sposobem, ale nadal chciałbym poznać względne szczegóły.Jak bezpieczne jest javax.crypto.Cipher?

Powodem, dla którego pytam, jest chęć zapisania nazw kont i haseł, które zostaną wysłane przez moją klasę Cryptor, która je encrpytuje, i chciałbym się dowiedzieć, czy to się spełni. Jeśli ktokolwiek ma jakąkolwiek literaturę, którą mógłbym przeczytać, byłby bardzo doceniany.

Dzięki ~ aedon

+0

Przejrzyj dokumentację [Jasypt] (http://www.jasypt.org/). Tam jest dużo dobrych linków. – Jeremy

Odpowiedz

4

Jeśli masz zamiar bezpiecznie przechowywać hasła, to Twoje wymagania różnią się od zwykłych "komunikowania się bezpiecznie/prywatnie". A Cipher samo w sobie nie wystarcza, aby cię chronić. Należy użyć jednego z tych

w tej sytuacji. Here to niektóre argumenty i linki dotyczące bezpieczeństwa haseł.

Punchlina jest taka, że ​​"normalne" szyfrowanie (lub mieszanie) również jest zbyt szybkie, aby powstrzymać poważnych napastników. Chcesz sztucznie spowolnić cały proces, aby był jak najtrudniejszy dla kogoś systematycznie atakującego twoją aplikację. Pojedynczy użytkownik nie zauważy różnicy między 1 a 500 milisekund podczas wpisywania hasła, ale dla atakującego oznacza to, że w celu złamania schematu będzie to średnio 500 razy dłuższa niż przeciętnie - tak więc, gdyby zajęło to mniej więcej 1 miesiąc, aby znaleźć prawidłowe hasło przed, teraz zajmie to 500 miesięcy.

+0

Dziękujemy za szczegółowe wyjaśnienie. – AedonEtLIRA

6

Szyfr jest klasą ogólną stosującą algorytm szyfrowania/odszyfrowywania. Jego bezpieczeństwo zależy od rzeczywistego algorytmu szyfrowania (DES, potrójny DES, AES itd.), Rozmiaru klucza i wybranego rodzaju łączenia bloków.

+0

Ah, rozumiem. Jak zmienić rozmiar klucza? Otrzymałem ogromną ilość wyjątku flak, gdy próbowałem użyć klucza 32-bajtowego dla moich 'SercretKeySpec' i' IvParameterSpec'? Przeglądałem dokumenty, ale nie było to jasne. – AedonEtLIRA

+0

DES ma klucz 64-bitowy, z którego korzysta tylko 56 bitów. AES ma 128 lub 256-bitowy klucz. Jeśli szyfrujecie nazwy kont i hasła, sugerowałbym używanie AES-128 w trybie CTR, w ten sposób nie rozszerzysz danych o dopełnienie. Tryb CTR nie wymaga dopełnienia w trybie CBC. – rossum

Powiązane problemy