Pytanie:
ECDSA vs ECDH vs Ed25519 vs Curve25519
Omar
2014-02-04 15:53:50 UTC
view on stackexchange narkive permalink

Wśród algorytmów ECC dostępnych w openSSH (ECDH, ECDSA, Ed25519, Curve25519), które oferują najwyższy poziom bezpieczeństwa i (najlepiej) dlaczego?

To dość dziwny sposób ujęcia tego. Krzywa25519 to jedna specyficzna krzywa, na której można wykonać Diffie-Hellman (ECDH). Diffie-Hellman służy do wymiany klucza. Ed25519 i ECDSA to algorytmy podpisu.
powiązane: [Klucz SSH: Ed25519 vs RSA] (http://security.stackexchange.com/questions/90077/ssh-key-ed25519-vs-rsa)
Zobacz także [Curve25519: new Diffe-Hellman speed records] Bernsteina (https://cr.yp.to/ecdh/curve25519-20060209.pdf).Wydaje się, że wykonuje całkiem niezłą robotę i odpowiada na wiele twoich pytań.
Pięć odpowiedzi:
Tom Leek
2014-02-04 18:32:23 UTC
view on stackexchange narkive permalink

W SSH używane są dwa algorytmy: algorytm wymiany kluczy (Diffie-Hellman lub wariant krzywej eliptycznej zwany ECDH) i algorytm podpisu. Wymiana kluczy daje tajny klucz, który będzie używany do szyfrowania danych w tej sesji. Podpis jest taki, że klient może upewnić się, że rozmawia z właściwym serwerem (inny podpis, obliczony przez klienta, może być użyty, jeśli serwer wymusza uwierzytelnianie klienta oparte na kluczach).

ECDH używa krzywa ; większość programów korzysta ze standardowej krzywej NIST P-256. Curve25519 to kolejna krzywa, której „skok sprzedaży” polega na tym, że jest szybszy, a nie silniejszy niż P-256. Różnica w wydajności jest bardzo mała w kategoriach ludzkich: mówimy o mniej niż milisekundach obliczeń na małym komputerze i dzieje się to tylko raz na sesję SSH. Nie zauważysz tego. O żadnej krzywej nie można powiedzieć, że jest „silniejsza” od drugiej, ani praktycznie (obie są dość daleko w sferze „nie mogą tego złamać”) ani naukowo (obie mają „128-bitowy poziom bezpieczeństwa”).

Nawet jeśli do wymiany kluczy jest używane ECDH, większość serwerów i klientów SSH będzie używać kluczy DSA lub RSA do podpisów. Jeśli potrzebujesz algorytmu podpisu opartego na krzywych eliptycznych, to jest to ECDSA lub Ed25519; z powodów technicznych, ze względu na precyzyjną definicję równania krzywej, jest to ECDSA dla P-256, Ed25519 dla Curve25519. Znowu żadna z nich nie jest silniejsza od drugiej, a różnica prędkości jest zbyt mała, aby mogła zostać wykryta przez człowieka. Jednak większość przeglądarek (w tym Firefox i Chrome) nie obsługuje już ECDH (także dh).

Korzystanie z P-256 powinno teraz zapewnić lepszą interoperacyjność, ponieważ Ed25519 jest znacznie nowszy i nie tak rozpowszechniony. Ale dla danego serwera, który konfigurujesz i do którego chcesz uzyskać dostęp z własnych maszyn, współdziałanie nie ma większego znaczenia: kontrolujesz zarówno oprogramowanie klienta, jak i serwera.

Zasadniczo wybór zależy od estetyki, tj. całkowicie od ciebie, bez racjonalnego powodu. Taki wybór i tak nie spowoduje problemów z bezpieczeństwem; algorytmy kryptograficzne są najsilniejszą częścią całego systemu, a nie najsłabszą.

„Skok sprzedażowy” dla 25519 to coś więcej: to nie jest NIST, więc to nie jest NSA. Nie prędkość.
Właściwie to też bardzo szybko. Dobrze skonstruowane krzywe Edwards / Montgomery mogą być wielokrotnie szybsze niż te ustalone przez NIST. Https://www.imperialviolet.org/2010/12/21/eccspeed.html
W rzeczywistości, jeśli naprawdę chcesz szybkości na nowym komputerze PC, zatwierdzone przez NIST binarne krzywe Koblitz są jeszcze szybsze (dzięki kodowi operacyjnemu „mnożenie bez przenoszenia”, który jest dostarczany z instrukcją x86 AES); do około 40000 cykli dla ogólnego mnożenia punktów w K-233, ponad dwa razy szybciej niż w Curve25519 - ale znalezienie scenariusza, w którym ta dodatkowa prędkość faktycznie robi zauważalną różnicę, jest trudne.
Więcej „propozycji sprzedaży” pochodzi z [tej wersji roboczej IETF] (https://tools.ietf.org/html/draft-ietf-ipsecme-safecurves-03#section-4): _Podczas gdy krzywe NIST są reklamowane jako wybrane w sposób weryfikowalny losowo, nie ma wyjaśnienia dla nasion użytych do ich wygenerowania.Natomiast proces wybierania tych krzywych jest w pełni udokumentowany i wystarczająco sztywny, aby przeprowadzono niezależną weryfikację.Jest to powszechnie postrzegane jako zaleta w zakresie bezpieczeństwa, ponieważ zapobiega złośliwemu manipulowaniu parametrami przez stronę generującą.
Według strony internetowej DJB http://safecurves.cr.yp.to/, krzywa NIST może nie być tak bezpieczna i niezawodna jak Curve25519.
W rzeczywistości istnieją trzy algorytmy.Algorytm klucza hosta (i klienta) (uwierzytelnianie), algorytm wymiany kluczy (kex) oraz szyfr.
@MartinSchröder, Enigma też nie została wymyślona przez Amerykanów ...
Doceniam, że klucz publiczny z ed25519 jest znacznie krótszy niż 4096-bitowy RSA do użytku z SSH.
Brian Minton
2014-03-14 20:53:08 UTC
view on stackexchange narkive permalink

Od wprowadzenia do Ed25519, są pewne korzyści związane z szybkością i pewne korzyści w zakresie bezpieczeństwa. Jedną z bardziej interesujących korzyści w zakresie bezpieczeństwa jest to, że jest odporny na kilka ataków kanału bocznego:

  • Brak indeksów tablicy tajnej. Oprogramowanie nigdy nie czyta ani nie zapisuje danych z tajnych adresów w pamięci RAM; wzorzec adresów jest całkowicie przewidywalny. Oprogramowanie jest więc odporne na ataki związane z synchronizacją pamięci podręcznej, ataki typu hyperthreading i inne ataki typu side-channel, które polegają na wycieku adresów przez pamięć podręczną procesora.
  • Brak tajnych warunków gałęzi. Oprogramowanie nigdy nie wykonuje rozgałęzień warunkowych na podstawie tajnych danych; wzór skoków jest całkowicie przewidywalny. Oprogramowanie jest zatem odporne na ataki typu side-channel polegające na wycieku informacji przez jednostkę predykcji rozgałęzień.

Dla porównania, na różnych algorytmach zademonstrowano kilka ataków na czas w pamięci podręcznej w świecie rzeczywistym. http://en.wikipedia.org/wiki/Timing_attack

* „Jedną z bardziej interesujących korzyści w zakresie bezpieczeństwa jest to, że jest odporny na kilka ataków z kanału bocznego” * - Aby stwierdzić, co oczywiste, zależy to od implementacji.Kod zespołu Bernsteina, kod Adama Langleya, kod Andrew Moona (i in.) Powinny być OK.Ale nie sądzę, że można powiedzieć to samo o dowolnej implementacji.
Myślę, że dokładniej byłoby powiedzieć, że konstrukcja algorytmu umożliwia jego implementację bez używania tajnych indeksów tablicy lub warunków rozgałęzienia.Oczywiście masz rację, że nadal można by go słabo zaimplementować.
Jednorazowe podkładki nie są bezpieczne, ponieważ zależy to od implementacji.
lxgr
2014-12-01 17:53:29 UTC
view on stackexchange narkive permalink

Ed25519 ma ważną praktyczną przewagę nad (EC) DSA: ta ostatnia rodzina algorytmów całkowicie się łamie, gdy jest używana do podpisów razem z uszkodzonym generatorem liczb losowych. Taka awaria RNG zdarzyła się wcześniej i może się zdarzyć ponownie.

Teoretycznie implementacje mogą chronić przed tym konkretnym problemem, ale jest to znacznie trudniejsze aby zweryfikować, czy oba końce używają poprawnej implementacji, a nie tylko preferować lub wymuszać (w zależności od potrzeb zgodności) algorytm, który wyraźnie określa bezpieczne zachowanie (Ed25519).

zenith
2014-02-08 03:27:41 UTC
view on stackexchange narkive permalink

Miałem wrażenie, że Curve25519 JEST faktycznie bezpieczniejszy niż krzywe NIST ze względu na kształt krzywej, który czyni ją mniej podatną na różne ataki kanału bocznego, a także na błędy implementacji. Zobacz: http://safecurves.cr.yp.to

Ed25519 ma tę zaletę, że można użyć tego samego klucza do podpisania umowy klucza (normalnie nie Zrób to). Nie jestem dobrze zaznajomiony z matematyką na tyle, aby powiedzieć, czy jest to właściwość tego, że jest krzywą Edwardsa, chociaż wiem, że jest ona przekształcana na układ współrzędnych Montgomery (efektywnie w Curve25519) dla uzyskania kluczowego porozumienia ... Ed25519 jest bardziej niż krzywa, określa także między innymi deterministyczne generowanie kluczy (np. haszowanie), o czym warto pamiętać. Jest to frustrujące w przypadku implementacji DJB, ponieważ tak się dzieje, ponieważ muszą być traktowane inaczej, aby zachować interoperacyjność.

Mecki
2019-06-07 18:04:24 UTC
view on stackexchange narkive permalink

Coś, na co do tej pory nie ma bezpośredniej odpowiedzi, to fakt, że Twoje pytania są połączeniem kilku mniej lub bardziej niezwiązanych ze sobą nazw, tak jakby były one równoważnymi alternatywami, co tak naprawdę nie jest prawdą.

ECDH i ECDSA to tylko nazwy metod kryptograficznych.

ECDH to metoda wymiany kluczy, której dwie strony mogą użyć do wynegocjowania bezpiecznego klucza na niezabezpieczonym kanał komunikacyjny. Jest to odmiana metody wymiany kluczy DH (Diffie-Hellman). ECDH to skrót od Elliptic-curve Diffie – Hellman . Jednak ECDH to tylko metoda, co oznacza, że ​​nie można jej używać tylko z jedną określoną krzywą eliptyczną, można jej używać z wieloma różnymi krzywymi eliptycznymi.

ECDSA to algorytm podpisu, który może być użyty do podpisania fragmentu danych w taki sposób, że jakakolwiek zmiana danych spowodowałaby niepowodzenie weryfikacji podpisu, a mimo to atakujący nie byłby w stanie poprawnie ponownie podpisać danych po takiej zmianie. Jest to odmiana DSA (Digital Signature Algorithm). ECDSA to skrót od Elliptic Curve Digital Signature Algorithm . Ponadto ECDSA opisuje tylko metodę, której można używać z różnymi krzywymi eliptycznymi.

Bezpieczeństwo ECDH i ECDSA zależy zatem od dwóch czynników:

  1. Jak bezpieczna jest sama metoda ? Jeśli metoda nie jest bezpieczna, najlepsza krzywa w słowie tego nie zmieni.
  2. Jak bezpieczna jest używana krzywa? Jeśli krzywa nie jest bezpieczna, nie będzie odgrywać roli, jeśli metoda teoretycznie tak jest.

Krzywa25519 to nazwa konkretnej krzywej eliptycznej. Inne krzywe noszą nazwy Curve448, P-256, P-384 i P-521.

Ed25519 to nazwa konkretnej odmiany EdDSA . Podczas wykonywania EdDSA przy użyciu SHA-512 i Curve25519 , ta odmiana nosi nazwę Ed25519. EdDSA to algorytm podpisu, podobnie jak ECDSA.

Więc jeśli implementacja mówi tylko, że używa ECDH do wymiany kluczy lub ECDSA do podpisywania danych, bez wspominania o żadnej konkretnej krzywej, zwykle można założyć, że będzie używać krzywych NIST (P-256, P-384 lub P- 512), ale w rzeczywistości implementacja powinna zawsze wyraźnie nazwać używaną krzywą.

Aby odpowiedzieć na twoje pytanie dotyczące bezpieczeństwa: ECDH i ECDSA okazały się być koncepcyjnymi bezpiecznymi metodami wymiany kluczy i podpisywania, a zatem bezpieczeństwo ECDH i ECDSA w dużej mierze zależy od tego, czy ktoś znajdzie sposób, jak ogólnie złamać kryptografię eliptyczną (mało prawdopodobne, ale nie niemożliwe) lub znaleźć błąd w używanych krzywych (bardziej prawdopodobne).

Powodem, dla którego niektórzy ludzie wolą Curve25519 od standardowych krzywych NIST jest fakt, że NIST nie udokumentował jasno, dlaczego wybrał te krzywe na korzyść istniejących alternatyw. Ogólne stwierdzenie „ Krzywe zostały rzekomo wybrane ze względu na optymalne bezpieczeństwo i wydajność implementacji ” brzmi jak marketingowy banał i nie przekona ekspertów kryptograficznych.

NIST również ustandaryzował kryptografię krzywej eliptycznej opartej na generatorze liczb losowych (Dual_EC_DRB) w 2006 roku, a czasy nowojorskie twierdziły (po przejrzeniu notatek ujawnionych przez Edwarda Snowdena), że to NSA wpływała na NIST w celu standaryzacji ten konkretny generator liczb losowych. Odkryto ogromne słabości tego generatora i uważa się, że jest to celowy backdoor umieszczony przez NSA w celu złamania szyfrowania TLS opartego na tym generatorze. ANSI najwyraźniej odkrył słabość, gdy Dual_EC_DRB został im po raz pierwszy przesłany, ale pomimo świadomości, jak tego uniknąć, nie ulepszyli algorytmu ani nie opublikowali słabości, więc uważa się, że nie wolno im było (rozkaz kneblowania ). Kiedy słabość stała się publicznie znana, standard został wycofany w 2014 roku.

Mając tę ​​podstawową wiedzę, oczywiście, ludzie zaczęli się zastanawiać, czy może źródłem tajemniczych parametrów krzywej NIST jest w rzeczywistości także NSA, ponieważ być może te krzywe mają również ukryte słabości, które nie są jeszcze publicznie znane, ale NSA może wiedzieć o nich, a tym samym być w stanie złamać kryptografię w oparciu o te krzywe. Nie ma na to żadnych dowodów, nawet domniemanych, ale z pewnością wydaje się to możliwe i bardziej realistyczne niż bajka. Dlatego ludzie stracili zaufanie do tych krzywych i przeszli na alternatywy, w przypadku których jest bardzo mało prawdopodobne, że były one pod wpływem jakichkolwiek tajnych służb na całym świecie.

Curve25519 została opublikowana przez niemiecko-amerykańskiego matematyka i kryptologa Daniela J. Bernstein w 2005 roku, który zaprojektował również słynny szyfr strumieniowy Salsa20 i obecnie szeroko stosowany jego wariant ChaCha20. Wynalazł również uwierzytelnianie wiadomości Poly1305. Google zdecydował, że ChaCha20 w połączeniu z Poly1305 jest bezpieczną alternatywą do użycia w TLS po usunięciu RC4, ponieważ algorytm został uszkodzony. Wymaga znacznie mniej mocy obliczeniowej niż użycie chipera blokowego AES (bardzo przydatne w urządzeniach mobilnych, ponieważ oszczędza czas pracy baterii), ale uważa się, że zapewnia porównywalne bezpieczeństwo. ChaCha20 / Poly1305 jest znormalizowany w RFC 7905 i od dziś szeroko stosowany w komunikacji klient-serwer TLS. Więc gdyby Bernstein był szpiegiem NSA, co jest bardzo mało prawdopodobne, wszyscy bylibyśmy już skazani na zagładę, ponieważ TLS, jak jest często używany dzisiaj, prawdopodobnie byłby bezużyteczny do ochrony danych przed oczami tajnych służb.

Chociaż ECDSA może być używana z wieloma krzywymi, w rzeczywistości nie jest używana z krzywymi Bernsteina.Ed25519 i Ed448 to instancje EdDSA, który jest innym algorytmem z pewnymi zaletami technicznymi.A w OpenSSH (zgodnie z pytaniem) opcja polecenia `ssh-keygen -t ecdsa` i domyślna nazwa pliku` id_ecdsa * `nie określają krzywej, ale rzeczywisty klucz (zawartość), w tym w sieci i w` znanych_hostach` etc _do_;zobacz rfc5656.W tym nistP-521, nie P-512, który nie istnieje.
@dave_thompson_085 Nigdy nie twierdziłem, że ECDSA jest używane z Bernsteinem.Nigdy nie twierdziłem, że openSSH określa krzywą.Więc proszę powstrzymaj się od komentowania rzeczy, których nigdy nie napisałem.A P-512 był najwyraźniej literówką, podobnie jak ECDSA dla EdDSA, w końcu napisałem dużo tekstu, więc literówki po prostu się zdarzają.
Chciałem tylko zaznaczyć, że masz literówkę w opisie rewizji, w której błędnie wpisałeś „irytujące nitkowce”.


To pytanie i odpowiedź zostało automatycznie przetłumaczone z języka angielskiego.Oryginalna treść jest dostępna na stackexchange, za co dziękujemy za licencję cc by-sa 3.0, w ramach której jest rozpowszechniana.
Loading...