najlepszy publiczny i prywatny algorytm Keygen-i dlaczego
co jest gorsze od pozostawienia kluczy prywatnych bez nadzoru? Posiadanie kluczy publicznych, które można brutalnie wymuszać.
“secure” w “secure shell” pochodzi z połączenia haszowania, szyfrowania symetrycznego i szyfrowania asymetrycznego. Razem SSH używa kryptograficznych prymitywów do bezpiecznego łączenia klientów i serwerów. W ciągu 25 lat od założenia, moc obliczeniowa i prędkość zgodnie z prawem Moore ‘ a wymagały coraz bardziej skomplikowanych algorytmów niskiego poziomu.
według stanu na 2020 r.najczęściej stosowanymi asymetrycznymi algorytmami kryptograficznymi w świecie PKI są RSA, DSA, ECDSA i EdDSA. Który jest najlepszy?
więc czego użyć?
wybór odpowiedniego algorytmu zależy od kilku kryteriów:
- wdrożenie: czy eksperci mogą sobie z tym poradzić, czy trzeba go zwijać?
- kompatybilność: czy istnieją klienci SSH, którzy nie obsługują metody?
- wydajność: ile czasu zajmie wygenerowanie wystarczająco bezpiecznego klucza?
- Bezpieczeństwo: czy klucz publiczny może być pochodną klucza prywatnego? (Wykorzystanie komputerów kwantowych do złamania szyfrowania nie jest omówione w tym artykule.)
RSA
implementacja | biblioteki RSA można znaleźć dla wszystkich głównych języków, w tym dogłębnych bibliotek
(js, Python, Go, Rust, C). |
kompatybilność | użycie SHA-1 (OpenSSH) lub kluczy publicznych poniżej 2048-bitów może być nieobsługiwane. |
wydajność | większe klucze wymagają więcej czasu na wygenerowanie. |
bezpieczeństwo | istnieją wyspecjalizowane algorytmy, takie jak sito kwadratowe i Sito pola liczb ogólnych, do dzielenia liczb całkowitych o określonych cechach. |
czas był największym sprzymierzeńcem i największym wrogiem RSA. Po raz pierwszy opublikowany w 1977 r., RSA ma najszersze wsparcie dla wszystkich klientów i języków SSH i naprawdę przetrwał próbę czasu jako niezawodna metoda generowania kluczy. Następnie od dziesięcioleci podlega również prawu Moore ‘ a, a długość klucza wzrosła. Według standardów NIST osiągnięcie 128-bitowego bezpieczeństwa wymaga klucza o długości 3072 bitów, podczas gdy inne algorytmy używają mniejszych kluczy. Bit security mierzy liczbę prób wymaganych do brutalnego wymuszenia klucza. 128-bitowe zabezpieczenia oznaczają złamanie 2128 prób.
DSA
implementacja | DSA została przyjęta przez FIPS-184 w 1994 roku. Ma wystarczającą reprezentację w głównych bibliotekach kryptograficznych, podobnie jak RSA. |
kompatybilność | podczas gdy DSA obsługuje klientów opartych na PuTTY, OpenSSH 7.0 domyślnie wyłącza DSA. |
wydajność | znaczna poprawa czasu generowania kluczy w celu osiągnięcia porównywalnych mocnych stron zabezpieczeń, chociaż zalecana długość bitów jest taka sama jak w przypadku RSA. |
bezpieczeństwo | DSA wymaga użycia losowo wygenerowanej nieprzewidywalnej i tajnej wartości, która, jeśli zostanie odkryta, może ujawnić klucz prywatny. |
tym, co odróżnia DSA od RSA, jest to, że DSA używa innego algorytmu. Rozwiązuje zupełnie inny problem, znany jako dyskretny problem logarytmu, używając innego zestawu równań, elementów i kroków.
algorytm ten polega na wykorzystaniu losowo wygenerowanej liczby m, która jest używana przy podpisywaniu wiadomości wraz z kluczem prywatnym, K. ta liczba m musi być utrzymywana prywatnie. Wartość mis oznacza nonce, która jest unikalną wartością zawartą w wielu protokołach kryptograficznych. Jednak dodatkowe warunki nieprzewidywalności i tajemnicy sprawiają, że nonce jest bardziej zbliżona do klucza, a zatem niezwykle ważna.
nie tylko trudno jest zapewnić prawdziwą losowość w maszynie, ale niewłaściwa implementacja może złamać szyfrowanie. Na przykład:
- Android Java SecureRandom klasa była znana do tworzenia kolizji wartości R. Innymi słowy, Klasa ponownie użyła losowo wygenerowanych liczb. To naraziło wiele różnych portfeli Bitcoin opartych na Androidzie na kradzież kluczy prywatnych. Wymagania nonce m oznaczają, że dowolne dwie instancje o tej samej wartości nonce mogą zostać poddane inżynierii odwrotnej i ujawnić klucz prywatny używany do podpisywania transakcji.
- idąc o krok dalej, firma fail0verflow odkryła klucz prywatny używany do podpisywania aktualizacji oprogramowania sprzętowego Sony Playstation 3. Innymi słowy, programiści mogli napisać własny kod, podpisać go ujawnionym kluczem prywatnym i uruchomić go na PS3. Jak się okazuje, Sony używało tej samej liczby do podpisywania każdej wiadomości.
ECDSA i EdDSA
dwa powyższe przykłady nie są do końca szczere. Zarówno Sony, jak i protokół Bitcoin wykorzystują ECDSA, a nie DSA. ECDSA jest implementacją krzywej eliptycznej DSA. Funkcjonalnie, gdy RSA i DSA wymagają długości klucza 3072 bitów, aby zapewnić 128 bitów bezpieczeństwa, ECDSA może osiągnąć to samo z kluczami tylko 256-bitowymi. Jednak ECDSA opiera się na tym samym poziomie losowości co DSA, więc jedynym zyskiem jest szybkość i długość, a nie bezpieczeństwo.
W odpowiedzi na pożądane prędkości krzywych eliptycznych i niepożądane zagrożenia bezpieczeństwa, inna klasa krzywych zyskała pewien rozgłos. EdDSA rozwiązuje ten sam problem logarytmu dyskretnego, co DSA/ECDSA, ale używa innej rodziny krzywych eliptycznych znanych jako krzywa Edwardsa (EdDSA używa skręconej krzywej Edwardsa). Chociaż oferuje niewielkie korzyści w szybkości w stosunku do ECDSA, jego popularność wynika z poprawy bezpieczeństwa. Zamiast polegać na losowej liczbie dla wartości nonce, EdDSA generuje nonce deterministycznie jako hash, dzięki czemu jest odporny na kolizje.
cofając się o krok, użycie krzywych eliptycznych nie gwarantuje automatycznie pewnego poziomu bezpieczeństwa. Nie wszystkie krzywe są takie same. Tylko kilka krzywych przeszło rygorystyczne testy. Na szczęście przemysł PKI powoli zaczął przyjmować Curve25519-w szczególności dla EdDSA. Razem, który sprawia, że algorytm podpisu klucza publicznego, Ed25519.
implementacja | EdDSA jest dość nowa. Crypto++ i cryptlib nie obsługują obecnie EdDSA. |
kompatybilność | kompatybilny z nowszymi klientami, Ed25519 był najbardziej popularny wśród krzywych Edwarda; chociaż NIST zaproponował również Ed448 w swoim ostatnim projekcie SP 800-186. |
wydajność | Ed25519 to najszybciej działający algorytm ze wszystkich wskaźników. Podobnie jak w przypadku ECDSA, klucze publiczne są dwa razy dłuższe od żądanego zabezpieczenia bitowego. |
bezpieczeństwo | EdDSA zapewnia najwyższy poziom bezpieczeństwa w porównaniu do długości klucza. Poprawia również niepewność występującą w ECDSA. |
zasadniczo RSA lub EdDSA
jeśli chodzi o to, wybór należy do RSA 2048/4096 i Ed25519, a kompromis dotyczy wydajności i kompatybilności. RSA jest powszechnie obsługiwany przez klientów SSH, podczas gdy EdDSA działa znacznie szybciej i zapewnia ten sam poziom bezpieczeństwa przy znacznie mniejszych kluczach. Peter Ruppel zwięźle przedstawia odpowiedź:
” krótka odpowiedź brzmi: dopóki kluczowa siła jest wystarczająco dobra w przewidywalnej przyszłości, nie ma to znaczenia. Ponieważ tutaj rozważamy podpis do uwierzytelniania w ramach sesji SSH. Siła kryptograficzna podpisu musi tylko wytrzymać obecne, najnowocześniejsze ataki.”- Ed25519 dla SSH
po prostu nie używaj ECDSA/DSA!
obraz funkcji via .
nowy stos jest w całości własnością spółki zależnej Insight Partners, inwestora w następujących spółkach wymienionych w tym artykule: Bit.
Leave a Reply