Elliptic Curve Cryptography (ECC)
Elliptic curve cryptography (ECC) is a class of cryptographic algorithms that uses elliptic curves for generating public and private key pairs.
- sometimes referred to as if it were a single algorithm
- named by the type of math problem it is based on
- An elliptic curve is the set of points that satisfy a specific mathematical equation
- can use shorter keys while maintaining a higher cryptographic strength than other discrete logarithm algorithms (e.g., RSA or D-H)
- fast and efficient
- good for hardware with low processing power
- security is based on the difficulty of solving Elliptic Curve Discrete Logarithm Problem (ECDLP)
- provides the same level of security as RSA but with smaller key sizes
- more computationally efficient than RSA
- used in resource-limited devices
- E.g.
- Secure Hash Algorithm 2 (SHA-2)
- Elliptic Curve Digital Signature Algorithm (ECDSA)
- used in
- TOR project
- part of proof of ownership for Bitcoin
- Apple’s iMessage
- DNS as part of DNSCurve to secure DNS information
Elliptic Curve-based Algorithms
- categories:
- key-agreement
- message signature
- message encryption
Security Strength of EC Algorithms
- level of security is measured in bits
- represents the capacity of the EC algorithms to resist attacks
- each extra bit of security doubles the amount of computation needed to compromise
- ECC standards specify 4 security strength levels:
is the order of the base point
- 112:
- 128:
- 192:
- 256:
EC Key-Agreement
EC Diffie-Hellman (ECDH) Key-Agreement Protocol
Elliptic curve Diffie-Hellman (ECDH) is a key-agreement protocol that enables two parties to generate a shared secret, while using an elliptic curve.
- recommended as a standard for key-agreement protocol by NIST
- small-subgroup attack focuses on domain parameter selection of ECDH
- not the design directly
EC Menezes-Qu-Vanstone (ECMQV) Key-Agreement Protocol
MQV (Menezes-Qu-Vanstone) key-agreement is one of the numerous extensions to the original Diffie-Hellman key-exchange protocol.
- designed to work in an arbitrary finite group and, in particular, elliptic curve groups
- recommended by NIST
- MQV makes use of two key-pairs for each party:
- a static key-pair
- i.e., long-term
- and an ephemeral key-pair
- i.e., a key-pair used only in the key-agreement transaction
- a static key-pair
- ECMQV provides a countermeasure to some attacks against the ECDH, including the small group attack
EC Message Signature Algorithms
- Elliptic Curve Digital Signature Algorithm (ECDSA)
- newer and more performant than RSA-based signatures
- Edwards Curve Digital Signature Algorithm (EdDSA)
- digital signature is produced using an Edwards curve
- efficient compared to ECDSA
EC Encryption Algorithms
EC encryption algorithms provide public-key-based mechanisms to encrypt messages exchanged over an insecure network.
Elliptic Curve Integrated Encryption Scheme (ECIES)
- best known EC encryption scheme
- provides encryption, key exchange, and digital signature
- exist different versions depending on the standards
- e.g. ANSI X9-63, IEEE 1363, ISO 18033-2
- considered secure when used with a large base point
- as secure as solving EC discrete logarithm problem
How It Works
- two parties share elliptic curve domain parameters
- then, each party generates a key pair
- from the key pairs and the base point
, both parties calculate the shared secret - then, from the shared secret, the same key derivation function is used to generate two keys
- one for symmetric encryption
- one for authentication
- thus, ECIES is a hybrid scheme that uses a public key system to transport a session key to be used by a symmetric cipher
ElGammal Encryption Using Elliptic Curve (EEEC)
The ElGamal Encryption using elliptic curve (EEEC) is an adaptation of the original ElGamal encryption scheme to the elliptic curve context.
- core of the EEEC is that the message to encrypt is hidden in an EC point coordinate
- fully-based on public key cryptography
- breaking EEEC is equivalent to solving the EC discrete logarithm problem
- thus considered secure when used with a large size fields