ecdsa ######### malleability ========================================================== (r, s) , (r, -s) 均可校验成功,签名构造。 low-s value 可修复该漏洞。 Verification Without Hash Pre-Image ========================================================== 可根据public key 任意构造(r, s, h) 因此,校验必须带原message,而非只校验h=hash(message) Deterministic ECDSA ========================================================== RFC6979: Deterministic Usage of the Digital Signature Algorithm (DSA) and Elliptic Curve Digital Signature Algorithm (ECDSA) sony ps3 的案例是没有按算法要求生成随机数k。 RFC6979 的处理是,用SP800-90A的HMAC_DRBG随机数生成器生成k,其中,熵值用私钥(x),nonce用hash(message)。 RFC8032 EdDSA的做法也类似。 Deterministic ECDSA/EdDSA + Randomness ========================================================== 完全确定的签名,又容易被side-channel and fault injection attacks,又把random加回去 思路是 random + private key + message 三者结合,搞出随机数,或者签名参数 doc ======= - `ECDSA Malleability `_ - `The Exact Security of ECDSA `_ - `Elliptic Curve Cryptography: ECDH and ECDSA `_ - `How Not to Use ECDSA `_ - `FIPS PUB 186-3 Digital Signature Standard (DSS) `_ - `Deterministic ECDSA and EdDSA Signatures with Additional Randomness `_ - `ECDSA: Handle with Care `_ - `BreakingECDSAwithLLL `_