ECC in HIPL
Affects | Status | Importance | Assigned to | Milestone | |
---|---|---|---|---|---|
HIPL |
Fix Committed
|
Medium
|
Henrik Ziegeldorf |
Bug Description
It would be fairly simple to implement ECC support in HIPL and some preliminary comparisons using the openssl suite indicate that ECDSA has a significant (4x) performance improvement over DSA (signatures).
Verifications seem to be the same, though.
As a first step, we could implement ECDSA and ECDH in HIPv1 style. Just add another HIT type and expect that the other side implements the necessary curves.
The curves implemented in openssl are certainly low-hanging fruits for doing this. All one needs to do is add anther cipher suite, and provide the right parameter lengths and openssl parameters.
In HIPv2 we will have ECDSA support anyway but that requires some changes to the handshake as well.
Some numbers coming from openssl speed
openssl speed ecdsap160
Doing 160 bit sign ecdsa's for 10s: 42411 160 bit ECDSA signs in 9.96s
Doing 160 bit verify ecdsa's for 10s: 9610 160 bit ECDSA verify in 9.94s
openssl speed ecdsap160
Doing 160 bit sign ecdsa's for 10s: 42546 160 bit ECDSA signs in 9.99s
Doing 160 bit verify ecdsa's for 10s: 9813 160 bit ECDSA verify in 9.98s
openssl speed ecdsab163
Doing 163 bit sign ecdsa's for 10s: 12296 163 bit ECDSA signs in 9.98s
Doing 163 bit verify ecdsa's for 10s: 4476 163 bit ECDSA verify in 9.99s
openssl speed ecdsap256
Doing 256 bit sign ecdsa's for 10s: 25054 256 bit ECDSA signs in 9.91s
Doing 256 bit verify ecdsa's for 10s: 5400 256 bit ECDSA verify in 9.98s
openssl speed dsa1024
Doing 1024 bit sign dsa's for 10s: 10264 1024 bit DSA signs in 9.99s
Doing 1024 bit verify dsa's for 10s: 8528 1024 bit DSA verify in 9.94s
openssl speed dsa2048
Doing 2048 bit sign dsa's for 10s: 3139 2048 bit DSA signs in 9.86s
Doing 2048 bit verify dsa's for 10s: 2618 2048 bit DSA verify in 9.83s
These numbers were generated on a 2.1 GHz Intel Core 2 Duo.
Related branches
- René Hummen: Approve
- Diego Biurrun: Pending requested
- Stefan Götz: Pending requested
-
Diff: 2627 lines (+1682/-105)27 files modifiedMakefile.am (+4/-1)
firewall/conntrack.c (+11/-0)
firewall/rule_management.c (+43/-2)
hipd/cert.c (+25/-2)
hipd/cookie.c (+3/-0)
hipd/hadb.c (+30/-5)
hipd/hidb.c (+56/-2)
hipd/init.c (+3/-3)
lib/core/builder.c (+61/-5)
lib/core/builder.h (+6/-1)
lib/core/certtools.c (+4/-0)
lib/core/conf.c (+48/-28)
lib/core/crypto.c (+272/-7)
lib/core/crypto.h (+26/-7)
lib/core/hostid.c (+451/-26)
lib/core/hostid.h (+17/-4)
lib/core/protodefs.h (+13/-2)
lib/tool/pk.c (+71/-1)
lib/tool/pk.h (+7/-5)
test/auth_performance.c (+24/-1)
test/check_lib_core.c (+3/-1)
test/check_lib_tool.c (+2/-1)
test/lib/core/crypto.c (+255/-0)
test/lib/core/hostid.c (+105/-0)
test/lib/core/test_suites.h (+3/-1)
test/lib/tool/pk.c (+138/-0)
test/lib/tool/test_suites.h (+1/-0)
Changed in hipl: | |
importance: | Undecided → Medium |
Changed in hipl: | |
status: | In Progress → Fix Committed |
I have recently started implementing ECC in HIPv1 style in branch hipl-core/hipl/ecc.
So far, the implementation is finished for everything concerning the BEX, i.e. host identities, signing and signature verification.
What remains to do is the ECDH.