In this talk we will discuss the security of concrete instantiations of EdDSA by identifying exploitable inconsistencies between standardization recommendations and Ed25519 implementations. We will mainly focus on current ambiguity regarding signature verification equations, binding and malleability guarantees, and incompatibilities between randomized batch and single verification. Based on our work that appeared at SSR 2020, we will give a formulation of the Ed25519 signature scheme that achieves the highest level of security, explaining how each step of the algorithm links with the formal security properties.
We will also discuss optimizations that allow for more efficient secure implementations. Moreover, we explain how we designed the set of edge-case test-vectors and run them by some of the most popular Ed25519 libraries. The results allowed us to understand the security level of those implementations and showed that most libraries do not comply with the latest standardization recommendations. The methodology allows to test compatibility of different Ed25519 implementations which is of practical importance for consensus-driven applications.
Finally, we will present another set of potential attack vectors related to misuse of Ed25519 APIs during key generation, storage and signing based on work that exposed a potential vulnerability that could effectively leak Ed25519 private keys, due to how public keys are provided or computed in the signing function; this vulnerability affected more than 50 Ed25519 libs.