
"Most readers are surely aware that a fundamental ingredient in the design of Bitcoin is public-key cryptography and more specifically digital signatures, which are essential to prove ownership without needing a central entity. Probably less well-known is what piece of software is under the hood to make that elliptic curve math work and what efforts are involved to ensure that this happens in the most secure and performant way, with continuous improvements."
"Relying on a third-party library sounds like a reasonable approach from a software engineering perspective (even more so if it is something as domain-specific and complex as elliptic-curve cryptography), but this choice turned out to be problematic later due to inconsistencies in the signature parsing code. In the worst case, this could even lead to unintended chain splits."
"One lesson from that time period was that OpenSSL is not a suitable library for a consensus-critical system like Bitcoin. The issue was later fixed by BIP66, which ensured a strict encoding of ECDSA signatures. After that, the OpenSSL dependency was replaced with libsecp256k1 in Bitcoin Core v0.12, released in early 2016."
Bitcoin's security relies on public-key cryptography and digital signatures to prove ownership without central authorities. The secp256k1 elliptic curve was chosen by Satoshi for this purpose. Initially, Bitcoin used OpenSSL for signature operations, but inconsistencies in its signature parsing code created risks of unintended chain splits. This demonstrated that third-party libraries unsuitable for consensus-critical systems required replacement. BIP66 standardized ECDSA signature encoding, and libsecp256k1 replaced OpenSSL in Bitcoin Core v0.12 in early 2016. This library evolved from a small hobby project into essential infrastructure protecting Bitcoin's network.
#libsecp256k1 #elliptic-curve-cryptography #bitcoin-consensus #digital-signatures #openssl-vulnerability
Read at Bitcoin Magazine
Unable to calculate read time
Collection
[
|
...
]