Dobrý den,
velké díky za poučný článek. Dovolím si trošku odbočit a doufat, že mi osvětlíte (ne)používání (EC)DSA v OpenSSH.
DSA i ECDSA využívají obtížnosti diskrétního logaritmu, liší se použitými grupami. V obou případech je k podpisu hashe H nutné vygenerovat náhodné k, z něhož se odvodí r (závisí pouze na k) a s (závisí na k a privátním klíči x), podpis tvoří dvojice (r, s). Pokud se jedno k použije na různé hashe H1 a H2, lze (v případě DSA i ECDSA) dopočítat k a z něj privátní klíč.
To se v praxi stalo u DSA i ECDSA. Řešením je 'Deterministic Usage of the Digital Signature Algorithm (DSA) and Elliptic Curve Digital Signature Algorithm (ECDSA)' definované v RFC 6979. Zjednodušeně řečeno, namísto náhodného k vezmu "k = hash_function(x, H)" - to mi zajistí, že pro jeden podepisovaný hash H daným klíčem x nedostanu různá k.
A teď ta otázka: proč to u DSA vadí (vyhozena z OpenSSH) a pro ECDSA ne (dál se používá)?
Taky neumím odpovědět "proč se používá", ale na mnoha místech se doporučuje nepoužívat, není k tomu důvod.
Another important disadvantage of DSA and ECDSA is that it uses randomness for each signature. If the random numbers are not the best quality, then it is possible to recover the secret key.
https://stribika.github.io/2015/01/04/secure-secure-shell.html
https://security.stackexchange.com/questions/5096/rsa-vs-dsa-for-ssh-authentication-keys/46781#46781
https://fahrplan.events.ccc.de/congress/2010/Fahrplan/attachments/1780_27c3_console_hacking_2010.pdf
Asi rada k nicemu, ale doporucuji si zaplatit analyzu nebo kryptoanalitika a pak jeste analyzu kodu konkretni implementace.
Na podobny problem jsem narazil asi měsíc zpátky kdy mi nikdo nebyl schopen zdůvodnit a kolega analytik je na dovolené.
Dost dobře je možné že zdroje kopírují jednu lež mezi sebou.