SLIDE 1 The security impact
- f a new cryptographic library
- D. J. Bernstein, U. Illinois Chicago
& T. U. Eindhoven Tanja Lange, T. U. Eindhoven Joint work with: Peter Schwabe, R. U. Nijmegen http://xkcd.com/538/ AES-128, RSA-2048, etc. are widely accepted standards. Obviously infeasible to break by best attacks in literature. Implementations are available in public cryptographic libraries such as OpenSSL. Common security practice is to use those implementations.
SLIDE 2 The security impact
- f a new cryptographic library
- D. J. Bernstein, U. Illinois Chicago
& T. U. Eindhoven Tanja Lange, T. U. Eindhoven Joint work with: Peter Schwabe, R. U. Nijmegen http://xkcd.com/538/ AES-128, RSA-2048, etc. are widely accepted standards. Obviously infeasible to break by best attacks in literature. Implementations are available in public cryptographic libraries such as OpenSSL. Common security practice is to use those implementations. But cryptography is still a disaster! Complete failures
- f confidentiality and integrity.
SLIDE 3 security impact new cryptographic library Bernstein, U. Illinois Chicago
Lange, T. U. Eindhoven
Schwabe, R. U. Nijmegen http://xkcd.com/538/ AES-128, RSA-2048, etc. are widely accepted standards. Obviously infeasible to break by best attacks in literature. Implementations are available in public cryptographic libraries such as OpenSSL. Common security practice is to use those implementations. But cryptography is still a disaster! Complete failures
- f confidentiality and integrity.
We have a new cryptographic NaCl (“salt”), the underlying nacl.cr.yp.to and extensive Acknowledgments: code contributions Matthew Media), Emilia K Adam Langley Bo-Yin Y
SLIDE 4 impact cryptographic library
Eindhoven
- U. Eindhoven
- R. U. Nijmegen
http://xkcd.com/538/ AES-128, RSA-2048, etc. are widely accepted standards. Obviously infeasible to break by best attacks in literature. Implementations are available in public cryptographic libraries such as OpenSSL. Common security practice is to use those implementations. But cryptography is still a disaster! Complete failures
- f confidentiality and integrity.
We have designed+implemented a new cryptographic NaCl (“salt”), to address the underlying problems. nacl.cr.yp.to: source and extensive docum Acknowledgments: code contributions Matthew Dempsky Media), Niels Duif Emilia K¨ asper (Leuven), Adam Langley (Go Bo-Yin Yang (Academia
SLIDE 5 rary Chicago
egen AES-128, RSA-2048, etc. are widely accepted standards. Obviously infeasible to break by best attacks in literature. Implementations are available in public cryptographic libraries such as OpenSSL. Common security practice is to use those implementations. But cryptography is still a disaster! Complete failures
- f confidentiality and integrity.
We have designed+implemented a new cryptographic library, NaCl (“salt”), to address the underlying problems. nacl.cr.yp.to: source and extensive documentation Acknowledgments: code contributions from Matthew Dempsky (Mochi Media), Niels Duif (Eindhoven), Emilia K¨ asper (Leuven), Adam Langley (Google), Bo-Yin Yang (Academia Sinica).
SLIDE 6 AES-128, RSA-2048, etc. are widely accepted standards. Obviously infeasible to break by best attacks in literature. Implementations are available in public cryptographic libraries such as OpenSSL. Common security practice is to use those implementations. But cryptography is still a disaster! Complete failures
- f confidentiality and integrity.
We have designed+implemented a new cryptographic library, NaCl (“salt”), to address the underlying problems. nacl.cr.yp.to: source and extensive documentation. Acknowledgments: code contributions from Matthew Dempsky (Mochi Media), Niels Duif (Eindhoven), Emilia K¨ asper (Leuven), Adam Langley (Google), Bo-Yin Yang (Academia Sinica).
SLIDE 7
AES-128, RSA-2048, etc. widely accepted standards. Obviously infeasible to break est attacks in literature. Implementations are available public cryptographic libraries as OpenSSL. Common security practice is those implementations. cryptography is still disaster! Complete failures confidentiality and integrity. We have designed+implemented a new cryptographic library, NaCl (“salt”), to address the underlying problems. nacl.cr.yp.to: source and extensive documentation. Acknowledgments: code contributions from Matthew Dempsky (Mochi Media), Niels Duif (Eindhoven), Emilia K¨ asper (Leuven), Adam Langley (Google), Bo-Yin Yang (Academia Sinica). Most of is cryptographically Primary Main task: authenticated Alice has Uses Bob’s Alice’s sec authenticated Sends c Bob uses and Bob’s to verify
SLIDE 8
RSA-2048, etc. accepted standards. infeasible to break in literature. are available cryptographic libraries enSSL. y practice is implementations. cryptography is still Complete failures and integrity. We have designed+implemented a new cryptographic library, NaCl (“salt”), to address the underlying problems. nacl.cr.yp.to: source and extensive documentation. Acknowledgments: code contributions from Matthew Dempsky (Mochi Media), Niels Duif (Eindhoven), Emilia K¨ asper (Leuven), Adam Langley (Google), Bo-Yin Yang (Academia Sinica). Most of the Internet is cryptographically Primary goal of NaCl: Main task: public-k authenticated encryption Alice has a message Uses Bob’s public Alice’s secret key to authenticated ciphertext Sends c to Bob. Bob uses Alice’s public and Bob’s secret k to verify and recover
SLIDE 9
standards. reak literature. available raries is implementations. failures integrity. We have designed+implemented a new cryptographic library, NaCl (“salt”), to address the underlying problems. nacl.cr.yp.to: source and extensive documentation. Acknowledgments: code contributions from Matthew Dempsky (Mochi Media), Niels Duif (Eindhoven), Emilia K¨ asper (Leuven), Adam Langley (Google), Bo-Yin Yang (Academia Sinica). Most of the Internet is cryptographically unprotected. Primary goal of NaCl: Fix this. Main task: public-key authenticated encryption. Alice has a message m for Bob. Uses Bob’s public key and Alice’s secret key to compute authenticated ciphertext c. Sends c to Bob. Bob uses Alice’s public key and Bob’s secret key to verify and recover m.
SLIDE 10
We have designed+implemented a new cryptographic library, NaCl (“salt”), to address the underlying problems. nacl.cr.yp.to: source and extensive documentation. Acknowledgments: code contributions from Matthew Dempsky (Mochi Media), Niels Duif (Eindhoven), Emilia K¨ asper (Leuven), Adam Langley (Google), Bo-Yin Yang (Academia Sinica). Most of the Internet is cryptographically unprotected. Primary goal of NaCl: Fix this. Main task: public-key authenticated encryption. Alice has a message m for Bob. Uses Bob’s public key and Alice’s secret key to compute authenticated ciphertext c. Sends c to Bob. Bob uses Alice’s public key and Bob’s secret key to verify and recover m.
SLIDE 11
ve designed+implemented cryptographic library, (“salt”), to address underlying problems. nacl.cr.yp.to: source extensive documentation. wledgments: contributions from Matthew Dempsky (Mochi Media), Niels Duif (Eindhoven), K¨ asper (Leuven), Langley (Google), Yang (Academia Sinica). Most of the Internet is cryptographically unprotected. Primary goal of NaCl: Fix this. Main task: public-key authenticated encryption. Alice has a message m for Bob. Uses Bob’s public key and Alice’s secret key to compute authenticated ciphertext c. Sends c to Bob. Bob uses Alice’s public key and Bob’s secret key to verify and recover m. Alice using typical cryptogra Generate Use AES Hash encrypted Read RSA Use key Read Bob’s Use key Convert Plus more allocate handle erro
SLIDE 12
designed+implemented cryptographic library, to address roblems. : source cumentation. wledgments: contributions from ky (Mochi Duif (Eindhoven), (Leuven), (Google), (Academia Sinica). Most of the Internet is cryptographically unprotected. Primary goal of NaCl: Fix this. Main task: public-key authenticated encryption. Alice has a message m for Bob. Uses Bob’s public key and Alice’s secret key to compute authenticated ciphertext c. Sends c to Bob. Bob uses Alice’s public key and Bob’s secret key to verify and recover m. Alice using a typical cryptographic Generate random AES Use AES key to encrypt Hash encrypted pack Read RSA key from Use key to sign hash. Read Bob’s key from Use key to encrypt Convert to wire format. Plus more code: allocate storage, handle errors, etc.
SLIDE 13
designed+implemented ry, ion. chi (Eindhoven), Sinica). Most of the Internet is cryptographically unprotected. Primary goal of NaCl: Fix this. Main task: public-key authenticated encryption. Alice has a message m for Bob. Uses Bob’s public key and Alice’s secret key to compute authenticated ciphertext c. Sends c to Bob. Bob uses Alice’s public key and Bob’s secret key to verify and recover m. Alice using a typical cryptographic library: Generate random AES key. Use AES key to encrypt pack Hash encrypted packet. Read RSA key from wire format. Use key to sign hash. Read Bob’s key from wire fo Use key to encrypt signature Convert to wire format. Plus more code: allocate storage, handle errors, etc.
SLIDE 14
Most of the Internet is cryptographically unprotected. Primary goal of NaCl: Fix this. Main task: public-key authenticated encryption. Alice has a message m for Bob. Uses Bob’s public key and Alice’s secret key to compute authenticated ciphertext c. Sends c to Bob. Bob uses Alice’s public key and Bob’s secret key to verify and recover m. Alice using a typical cryptographic library: Generate random AES key. Use AES key to encrypt packet. Hash encrypted packet. Read RSA key from wire format. Use key to sign hash. Read Bob’s key from wire format. Use key to encrypt signature etc. Convert to wire format. Plus more code: allocate storage, handle errors, etc.
SLIDE 15
cryptographically unprotected. ry goal of NaCl: Fix this. task: public-key authenticated encryption. has a message m for Bob. Bob’s public key and secret key to compute authenticated ciphertext c. c to Bob. uses Alice’s public key Bob’s secret key verify and recover m. Alice using a typical cryptographic library: Generate random AES key. Use AES key to encrypt packet. Hash encrypted packet. Read RSA key from wire format. Use key to sign hash. Read Bob’s key from wire format. Use key to encrypt signature etc. Convert to wire format. Plus more code: allocate storage, handle errors, etc. Alice using c = crypto_box(m,n,pk,sk)
SLIDE 16
Internet cryptographically unprotected. NaCl: Fix this. public-key encryption. message m for Bob. public key and ey to compute ciphertext c. public key ecret key recover m. Alice using a typical cryptographic library: Generate random AES key. Use AES key to encrypt packet. Hash encrypted packet. Read RSA key from wire format. Use key to sign hash. Read Bob’s key from wire format. Use key to encrypt signature etc. Convert to wire format. Plus more code: allocate storage, handle errors, etc. Alice using NaCl: c = crypto_box(m,n,pk,sk)
SLIDE 17
rotected. this. encryption. Bob. compute . y Alice using a typical cryptographic library: Generate random AES key. Use AES key to encrypt packet. Hash encrypted packet. Read RSA key from wire format. Use key to sign hash. Read Bob’s key from wire format. Use key to encrypt signature etc. Convert to wire format. Plus more code: allocate storage, handle errors, etc. Alice using NaCl: c = crypto_box(m,n,pk,sk)
SLIDE 18
Alice using a typical cryptographic library: Generate random AES key. Use AES key to encrypt packet. Hash encrypted packet. Read RSA key from wire format. Use key to sign hash. Read Bob’s key from wire format. Use key to encrypt signature etc. Convert to wire format. Plus more code: allocate storage, handle errors, etc. Alice using NaCl: c = crypto_box(m,n,pk,sk)
SLIDE 19
Alice using a typical cryptographic library: Generate random AES key. Use AES key to encrypt packet. Hash encrypted packet. Read RSA key from wire format. Use key to sign hash. Read Bob’s key from wire format. Use key to encrypt signature etc. Convert to wire format. Plus more code: allocate storage, handle errors, etc. Alice using NaCl: c = crypto_box(m,n,pk,sk) 32-byte secret key sk. 32-byte public key pk. 24-byte nonce n. c is 16 bytes longer than m. All objects are C++ std::string variables represented in wire format, ready for storage/transmission. C NaCl: similar, using pointers; no memory allocation, no failures.
SLIDE 20
using a ypical cryptographic library: Generate random AES key. AES key to encrypt packet. encrypted packet. RSA key from wire format. ey to sign hash. Bob’s key from wire format. ey to encrypt signature etc. Convert to wire format. more code: cate storage, errors, etc. Alice using NaCl: c = crypto_box(m,n,pk,sk) 32-byte secret key sk. 32-byte public key pk. 24-byte nonce n. c is 16 bytes longer than m. All objects are C++ std::string variables represented in wire format, ready for storage/transmission. C NaCl: similar, using pointers; no memory allocation, no failures. Bob verifying, m=crypto_box_open(c,n,pk,sk) Initial key pk = crypto_box_keypair(&sk)
SLIDE 21
phic library: AES key. encrypt packet. packet. from wire format. hash. from wire format. encrypt signature etc. format. etc. Alice using NaCl: c = crypto_box(m,n,pk,sk) 32-byte secret key sk. 32-byte public key pk. 24-byte nonce n. c is 16 bytes longer than m. All objects are C++ std::string variables represented in wire format, ready for storage/transmission. C NaCl: similar, using pointers; no memory allocation, no failures. Bob verifying, decryptin m=crypto_box_open(c,n,pk,sk) Initial key generation: pk = crypto_box_keypair(&sk)
SLIDE 22
ry: . packet. format. format. signature etc. Alice using NaCl: c = crypto_box(m,n,pk,sk) 32-byte secret key sk. 32-byte public key pk. 24-byte nonce n. c is 16 bytes longer than m. All objects are C++ std::string variables represented in wire format, ready for storage/transmission. C NaCl: similar, using pointers; no memory allocation, no failures. Bob verifying, decrypting: m=crypto_box_open(c,n,pk,sk) Initial key generation: pk = crypto_box_keypair(&sk)
SLIDE 23
Alice using NaCl: c = crypto_box(m,n,pk,sk) 32-byte secret key sk. 32-byte public key pk. 24-byte nonce n. c is 16 bytes longer than m. All objects are C++ std::string variables represented in wire format, ready for storage/transmission. C NaCl: similar, using pointers; no memory allocation, no failures. Bob verifying, decrypting: m=crypto_box_open(c,n,pk,sk) Initial key generation: pk = crypto_box_keypair(&sk)
SLIDE 24
Alice using NaCl: c = crypto_box(m,n,pk,sk) 32-byte secret key sk. 32-byte public key pk. 24-byte nonce n. c is 16 bytes longer than m. All objects are C++ std::string variables represented in wire format, ready for storage/transmission. C NaCl: similar, using pointers; no memory allocation, no failures. Bob verifying, decrypting: m=crypto_box_open(c,n,pk,sk) Initial key generation: pk = crypto_box_keypair(&sk) Can instead use signatures for public messages: pk = crypto_sign_keypair(&sk) 64-byte secret key, 32-byte public key. sm = crypto_sign(m,sk) 64 bytes overhead. m = crypto_sign_open(sm,pk)
SLIDE 25 using NaCl: crypto_box(m,n,pk,sk) yte secret key sk. yte public key pk. yte nonce n. bytes longer than m.
std::string variables resented in wire format, for storage/transmission. NaCl: similar, using pointers; memory allocation, no failures. Bob verifying, decrypting: m=crypto_box_open(c,n,pk,sk) Initial key generation: pk = crypto_box_keypair(&sk) Can instead use signatures for public messages: pk = crypto_sign_keypair(&sk) 64-byte secret key, 32-byte public key. sm = crypto_sign(m,sk) 64 bytes overhead. m = crypto_sign_open(sm,pk) “This sounds Don’t applications
SLIDE 26
NaCl: crypto_box(m,n,pk,sk) ey sk. ey pk. . longer than m. C++ riables wire format, rage/transmission. using pointers; cation, no failures. Bob verifying, decrypting: m=crypto_box_open(c,n,pk,sk) Initial key generation: pk = crypto_box_keypair(&sk) Can instead use signatures for public messages: pk = crypto_sign_keypair(&sk) 64-byte secret key, 32-byte public key. sm = crypto_sign(m,sk) 64 bytes overhead. m = crypto_sign_open(sm,pk) “This sounds too simple! Don’t applications
SLIDE 27 crypto_box(m,n,pk,sk) . rmat, rage/transmission.
failures. Bob verifying, decrypting: m=crypto_box_open(c,n,pk,sk) Initial key generation: pk = crypto_box_keypair(&sk) Can instead use signatures for public messages: pk = crypto_sign_keypair(&sk) 64-byte secret key, 32-byte public key. sm = crypto_sign(m,sk) 64 bytes overhead. m = crypto_sign_open(sm,pk) “This sounds too simple! Don’t applications need more?”
SLIDE 28
Bob verifying, decrypting: m=crypto_box_open(c,n,pk,sk) Initial key generation: pk = crypto_box_keypair(&sk) Can instead use signatures for public messages: pk = crypto_sign_keypair(&sk) 64-byte secret key, 32-byte public key. sm = crypto_sign(m,sk) 64 bytes overhead. m = crypto_sign_open(sm,pk) “This sounds too simple! Don’t applications need more?”
SLIDE 29
Bob verifying, decrypting: m=crypto_box_open(c,n,pk,sk) Initial key generation: pk = crypto_box_keypair(&sk) Can instead use signatures for public messages: pk = crypto_sign_keypair(&sk) 64-byte secret key, 32-byte public key. sm = crypto_sign(m,sk) 64 bytes overhead. m = crypto_sign_open(sm,pk) “This sounds too simple! Don’t applications need more?” Examples of applications using NaCl’s crypto_box: DNSCurve and DNSCrypt, high-security authenticated encryption for DNS queries; deployed by OpenDNS. QUIC, Google’s TLS replacement. MinimaLT in Ethos OS, faster TLS replacement. Threema, encrypted-chat app.
SLIDE 30 verifying, decrypting: m=crypto_box_open(c,n,pk,sk) key generation: crypto_box_keypair(&sk) instead use signatures public messages: crypto_sign_keypair(&sk) yte secret key, yte public key. crypto_sign(m,sk) ytes overhead. crypto_sign_open(sm,pk) “This sounds too simple! Don’t applications need more?” Examples of applications using NaCl’s crypto_box: DNSCurve and DNSCrypt, high-security authenticated encryption for DNS queries; deployed by OpenDNS. QUIC, Google’s TLS replacement. MinimaLT in Ethos OS, faster TLS replacement. Threema, encrypted-chat app. No secre 2005 Osvik–Shamir–T 65ms to used for Attack p but without Almost all use fast Kernel’s influences influencing influencing
65ms to
SLIDE 31 ecrypting: m=crypto_box_open(c,n,pk,sk) generation: crypto_box_keypair(&sk) signatures messages: crypto_sign_keypair(&sk) ey, ey. crypto_sign(m,sk)
crypto_sign_open(sm,pk) “This sounds too simple! Don’t applications need more?” Examples of applications using NaCl’s crypto_box: DNSCurve and DNSCrypt, high-security authenticated encryption for DNS queries; deployed by OpenDNS. QUIC, Google’s TLS replacement. MinimaLT in Ethos OS, faster TLS replacement. Threema, encrypted-chat app. No secret load addresses 2005 Osvik–Shamir–T 65ms to steal Linux used for hard-disk Attack process on but without privileges. Almost all AES implementations use fast lookup tables. Kernel’s secret AES influences table-load influencing CPU cache influencing measurable
65ms to compute influence
SLIDE 32 m=crypto_box_open(c,n,pk,sk) crypto_box_keypair(&sk) signatures crypto_sign_keypair(&sk) crypto_sign_open(sm,pk) “This sounds too simple! Don’t applications need more?” Examples of applications using NaCl’s crypto_box: DNSCurve and DNSCrypt, high-security authenticated encryption for DNS queries; deployed by OpenDNS. QUIC, Google’s TLS replacement. MinimaLT in Ethos OS, faster TLS replacement. Threema, encrypted-chat app. No secret load addresses 2005 Osvik–Shamir–Tromer: 65ms to steal Linux AES key used for hard-disk encryption. Attack process on same CPU but without privileges. Almost all AES implementations use fast lookup tables. Kernel’s secret AES key influences table-load addresses, influencing CPU cache state, influencing measurable timings
65ms to compute influence−
SLIDE 33 “This sounds too simple! Don’t applications need more?” Examples of applications using NaCl’s crypto_box: DNSCurve and DNSCrypt, high-security authenticated encryption for DNS queries; deployed by OpenDNS. QUIC, Google’s TLS replacement. MinimaLT in Ethos OS, faster TLS replacement. Threema, encrypted-chat app. No secret load addresses 2005 Osvik–Shamir–Tromer: 65ms to steal Linux AES key used for hard-disk encryption. Attack process on same CPU but without privileges. Almost all AES implementations use fast lookup tables. Kernel’s secret AES key influences table-load addresses, influencing CPU cache state, influencing measurable timings
65ms to compute influence−1.
SLIDE 34 sounds too simple! applications need more?” Examples of applications NaCl’s crypto_box: DNSCurve and DNSCrypt, high-security authenticated encryption for DNS queries; ed by OpenDNS. Google’s TLS replacement. MinimaLT in Ethos OS, TLS replacement. Threema, encrypted-chat app. No secret load addresses 2005 Osvik–Shamir–Tromer: 65ms to steal Linux AES key used for hard-disk encryption. Attack process on same CPU but without privileges. Almost all AES implementations use fast lookup tables. Kernel’s secret AES key influences table-load addresses, influencing CPU cache state, influencing measurable timings
65ms to compute influence−1. Most cryptographic still use secret but add intended upon the Not confidence- likely to
SLIDE 35
applications need more?” applications crypto_box: DNSCrypt, authenticated DNS queries; enDNS. TLS replacement. Ethos OS, lacement. encrypted-chat app. No secret load addresses 2005 Osvik–Shamir–Tromer: 65ms to steal Linux AES key used for hard-disk encryption. Attack process on same CPU but without privileges. Almost all AES implementations use fast lookup tables. Kernel’s secret AES key influences table-load addresses, influencing CPU cache state, influencing measurable timings
65ms to compute influence−1. Most cryptographic still use secret load but add “countermeasures” intended to obscure upon the CPU cache Not confidence-ins likely to be breakable.
SLIDE 36 more?” : DNSCrypt, authenticated queries; replacement. app. No secret load addresses 2005 Osvik–Shamir–Tromer: 65ms to steal Linux AES key used for hard-disk encryption. Attack process on same CPU but without privileges. Almost all AES implementations use fast lookup tables. Kernel’s secret AES key influences table-load addresses, influencing CPU cache state, influencing measurable timings
65ms to compute influence−1. Most cryptographic libraries still use secret load addresses but add “countermeasures” intended to obscure influence upon the CPU cache state. Not confidence-inspiring; likely to be breakable.
SLIDE 37 No secret load addresses 2005 Osvik–Shamir–Tromer: 65ms to steal Linux AES key used for hard-disk encryption. Attack process on same CPU but without privileges. Almost all AES implementations use fast lookup tables. Kernel’s secret AES key influences table-load addresses, influencing CPU cache state, influencing measurable timings
65ms to compute influence−1. Most cryptographic libraries still use secret load addresses but add “countermeasures” intended to obscure influence upon the CPU cache state. Not confidence-inspiring; likely to be breakable.
SLIDE 38 No secret load addresses 2005 Osvik–Shamir–Tromer: 65ms to steal Linux AES key used for hard-disk encryption. Attack process on same CPU but without privileges. Almost all AES implementations use fast lookup tables. Kernel’s secret AES key influences table-load addresses, influencing CPU cache state, influencing measurable timings
65ms to compute influence−1. Most cryptographic libraries still use secret load addresses but add “countermeasures” intended to obscure influence upon the CPU cache state. Not confidence-inspiring; likely to be breakable. NaCl systematically avoids all loads from addresses that depend on secret data. Eliminates this type of disaster. 2010 Langley ctgrind: verify this automatically.
SLIDE 39
ret load addresses Osvik–Shamir–Tromer: to steal Linux AES key for hard-disk encryption. process on same CPU without privileges. Almost all AES implementations fast lookup tables. Kernel’s secret AES key influences table-load addresses, influencing CPU cache state, influencing measurable timings attack process. to compute influence−1. Most cryptographic libraries still use secret load addresses but add “countermeasures” intended to obscure influence upon the CPU cache state. Not confidence-inspiring; likely to be breakable. NaCl systematically avoids all loads from addresses that depend on secret data. Eliminates this type of disaster. 2010 Langley ctgrind: verify this automatically. No secre 2011 Brumley–T minutes machine’s Secret branch influence Most cryptographic has many variations e.g., memcmp
SLIDE 40 addresses Osvik–Shamir–Tromer: Linux AES key rd-disk encryption.
rivileges. implementations tables. AES key table-load addresses, cache state, measurable timings cess. compute influence−1. Most cryptographic libraries still use secret load addresses but add “countermeasures” intended to obscure influence upon the CPU cache state. Not confidence-inspiring; likely to be breakable. NaCl systematically avoids all loads from addresses that depend on secret data. Eliminates this type of disaster. 2010 Langley ctgrind: verify this automatically. No secret branch conditions 2011 Brumley–Tuveri: minutes to steal another machine’s OpenSSL Secret branch conditions influence timings. Most cryptographic has many more small-scale variations in timing: e.g., memcmp for IPsec
SLIDE 41
romer: ey encryption. CPU implementations addresses, state, timings influence−1. Most cryptographic libraries still use secret load addresses but add “countermeasures” intended to obscure influence upon the CPU cache state. Not confidence-inspiring; likely to be breakable. NaCl systematically avoids all loads from addresses that depend on secret data. Eliminates this type of disaster. 2010 Langley ctgrind: verify this automatically. No secret branch conditions 2011 Brumley–Tuveri: minutes to steal another machine’s OpenSSL ECDSA Secret branch conditions influence timings. Most cryptographic software has many more small-scale variations in timing: e.g., memcmp for IPsec MACs.
SLIDE 42
Most cryptographic libraries still use secret load addresses but add “countermeasures” intended to obscure influence upon the CPU cache state. Not confidence-inspiring; likely to be breakable. NaCl systematically avoids all loads from addresses that depend on secret data. Eliminates this type of disaster. 2010 Langley ctgrind: verify this automatically. No secret branch conditions 2011 Brumley–Tuveri: minutes to steal another machine’s OpenSSL ECDSA key. Secret branch conditions influence timings. Most cryptographic software has many more small-scale variations in timing: e.g., memcmp for IPsec MACs.
SLIDE 43
Most cryptographic libraries still use secret load addresses but add “countermeasures” intended to obscure influence upon the CPU cache state. Not confidence-inspiring; likely to be breakable. NaCl systematically avoids all loads from addresses that depend on secret data. Eliminates this type of disaster. 2010 Langley ctgrind: verify this automatically. No secret branch conditions 2011 Brumley–Tuveri: minutes to steal another machine’s OpenSSL ECDSA key. Secret branch conditions influence timings. Most cryptographic software has many more small-scale variations in timing: e.g., memcmp for IPsec MACs. NaCl systematically avoids all branch conditions that depend on secret data. Eliminates this type of disaster.
SLIDE 44
cryptographic libraries use secret load addresses add “countermeasures” intended to obscure influence the CPU cache state. confidence-inspiring; to be breakable. systematically avoids loads from addresses depend on secret data. Eliminates this type of disaster. Langley ctgrind: this automatically. No secret branch conditions 2011 Brumley–Tuveri: minutes to steal another machine’s OpenSSL ECDSA key. Secret branch conditions influence timings. Most cryptographic software has many more small-scale variations in timing: e.g., memcmp for IPsec MACs. NaCl systematically avoids all branch conditions that depend on secret data. Eliminates this type of disaster. No padding 1998 Bleichenbacher: Decrypt by observing to ≈106 SSL first then checks (which many Subsequent more serious Server resp pattern of pattern reveals
SLIDE 45 cryptographic libraries load addresses rmeasures”
cache state. inspiring; reakable. ally avoids addresses secret data. ype of disaster. ctgrind: automatically. No secret branch conditions 2011 Brumley–Tuveri: minutes to steal another machine’s OpenSSL ECDSA key. Secret branch conditions influence timings. Most cryptographic software has many more small-scale variations in timing: e.g., memcmp for IPsec MACs. NaCl systematically avoids all branch conditions that depend on secret data. Eliminates this type of disaster. No padding oracles 1998 Bleichenbacher: Decrypt SSL RSA by observing server to ≈106 variants of SSL first inverts RSA, then checks for “PK (which many forgeries Subsequent processing more serious integrit Server responses re pattern of PKCS fo pattern reveals plaintext.
SLIDE 46
ries addresses rmeasures” influence state. data. disaster. No secret branch conditions 2011 Brumley–Tuveri: minutes to steal another machine’s OpenSSL ECDSA key. Secret branch conditions influence timings. Most cryptographic software has many more small-scale variations in timing: e.g., memcmp for IPsec MACs. NaCl systematically avoids all branch conditions that depend on secret data. Eliminates this type of disaster. No padding oracles 1998 Bleichenbacher: Decrypt SSL RSA ciphertext by observing server responses to ≈106 variants of ciphertext. SSL first inverts RSA, then checks for “PKCS padding” (which many forgeries have). Subsequent processing applies more serious integrity checks. Server responses reveal pattern of PKCS forgeries; pattern reveals plaintext.
SLIDE 47
No secret branch conditions 2011 Brumley–Tuveri: minutes to steal another machine’s OpenSSL ECDSA key. Secret branch conditions influence timings. Most cryptographic software has many more small-scale variations in timing: e.g., memcmp for IPsec MACs. NaCl systematically avoids all branch conditions that depend on secret data. Eliminates this type of disaster. No padding oracles 1998 Bleichenbacher: Decrypt SSL RSA ciphertext by observing server responses to ≈106 variants of ciphertext. SSL first inverts RSA, then checks for “PKCS padding” (which many forgeries have). Subsequent processing applies more serious integrity checks. Server responses reveal pattern of PKCS forgeries; pattern reveals plaintext.
SLIDE 48
ret branch conditions Brumley–Tuveri: minutes to steal another machine’s OpenSSL ECDSA key. branch conditions influence timings. cryptographic software many more small-scale riations in timing: memcmp for IPsec MACs. systematically avoids ranch conditions depend on secret data. Eliminates this type of disaster. No padding oracles 1998 Bleichenbacher: Decrypt SSL RSA ciphertext by observing server responses to ≈106 variants of ciphertext. SSL first inverts RSA, then checks for “PKCS padding” (which many forgeries have). Subsequent processing applies more serious integrity checks. Server responses reveal pattern of PKCS forgeries; pattern reveals plaintext. Typical defense try to hide between subsequent But hard BEAST,
SLIDE 49
conditions uveri: another enSSL ECDSA key. conditions timings. cryptographic software small-scale timing: IPsec MACs. ally avoids conditions secret data. ype of disaster. No padding oracles 1998 Bleichenbacher: Decrypt SSL RSA ciphertext by observing server responses to ≈106 variants of ciphertext. SSL first inverts RSA, then checks for “PKCS padding” (which many forgeries have). Subsequent processing applies more serious integrity checks. Server responses reveal pattern of PKCS forgeries; pattern reveals plaintext. Typical defense strategy: try to hide differences between padding checks subsequent integrit But hard to get this BEAST, Lucky 13,
SLIDE 50
conditions ECDSA key. re Cs. data. disaster. No padding oracles 1998 Bleichenbacher: Decrypt SSL RSA ciphertext by observing server responses to ≈106 variants of ciphertext. SSL first inverts RSA, then checks for “PKCS padding” (which many forgeries have). Subsequent processing applies more serious integrity checks. Server responses reveal pattern of PKCS forgeries; pattern reveals plaintext. Typical defense strategy: try to hide differences between padding checks and subsequent integrity checks. But hard to get this right: see BEAST, Lucky 13, POODLE,
SLIDE 51
No padding oracles 1998 Bleichenbacher: Decrypt SSL RSA ciphertext by observing server responses to ≈106 variants of ciphertext. SSL first inverts RSA, then checks for “PKCS padding” (which many forgeries have). Subsequent processing applies more serious integrity checks. Server responses reveal pattern of PKCS forgeries; pattern reveals plaintext. Typical defense strategy: try to hide differences between padding checks and subsequent integrity checks. But hard to get this right: see BEAST, Lucky 13, POODLE, etc.
SLIDE 52
No padding oracles 1998 Bleichenbacher: Decrypt SSL RSA ciphertext by observing server responses to ≈106 variants of ciphertext. SSL first inverts RSA, then checks for “PKCS padding” (which many forgeries have). Subsequent processing applies more serious integrity checks. Server responses reveal pattern of PKCS forgeries; pattern reveals plaintext. Typical defense strategy: try to hide differences between padding checks and subsequent integrity checks. But hard to get this right: see BEAST, Lucky 13, POODLE, etc. NaCl does not decrypt unless message is authenticated. Verification procedure rejects all forgeries in constant time. Attacks are further constrained by per-nonce key separation and standard nonce handling.
SLIDE 53 padding oracles Bleichenbacher: Decrypt SSL RSA ciphertext
- bserving server responses
106 variants of ciphertext. first inverts RSA, checks for “PKCS padding” many forgeries have). Subsequent processing applies serious integrity checks. responses reveal pattern of PKCS forgeries; pattern reveals plaintext. Typical defense strategy: try to hide differences between padding checks and subsequent integrity checks. But hard to get this right: see BEAST, Lucky 13, POODLE, etc. NaCl does not decrypt unless message is authenticated. Verification procedure rejects all forgeries in constant time. Attacks are further constrained by per-nonce key separation and standard nonce handling. Centralizing 2008 Bello: OpenSSL had only Debian develop a subtle randomness-generating
SLIDE 54
racles Bleichenbacher: RSA ciphertext server responses riants of ciphertext. RSA, “PKCS padding” rgeries have). cessing applies integrity checks. reveal forgeries; plaintext. Typical defense strategy: try to hide differences between padding checks and subsequent integrity checks. But hard to get this right: see BEAST, Lucky 13, POODLE, etc. NaCl does not decrypt unless message is authenticated. Verification procedure rejects all forgeries in constant time. Attacks are further constrained by per-nonce key separation and standard nonce handling. Centralizing randomness 2008 Bello: Debian/Ubuntu OpenSSL keys for had only 15 bits of Debian developer had a subtle line of Op randomness-generating
SLIDE 55 ciphertext
ciphertext. padding” have). applies hecks. rgeries; Typical defense strategy: try to hide differences between padding checks and subsequent integrity checks. But hard to get this right: see BEAST, Lucky 13, POODLE, etc. NaCl does not decrypt unless message is authenticated. Verification procedure rejects all forgeries in constant time. Attacks are further constrained by per-nonce key separation and standard nonce handling. Centralizing randomness 2008 Bello: Debian/Ubuntu OpenSSL keys for 1.5 years had only 15 bits of entropy. Debian developer had removed a subtle line of OpenSSL randomness-generating code.
SLIDE 56
Typical defense strategy: try to hide differences between padding checks and subsequent integrity checks. But hard to get this right: see BEAST, Lucky 13, POODLE, etc. NaCl does not decrypt unless message is authenticated. Verification procedure rejects all forgeries in constant time. Attacks are further constrained by per-nonce key separation and standard nonce handling. Centralizing randomness 2008 Bello: Debian/Ubuntu OpenSSL keys for 1.5 years had only 15 bits of entropy. Debian developer had removed a subtle line of OpenSSL randomness-generating code.
SLIDE 57
Typical defense strategy: try to hide differences between padding checks and subsequent integrity checks. But hard to get this right: see BEAST, Lucky 13, POODLE, etc. NaCl does not decrypt unless message is authenticated. Verification procedure rejects all forgeries in constant time. Attacks are further constrained by per-nonce key separation and standard nonce handling. Centralizing randomness 2008 Bello: Debian/Ubuntu OpenSSL keys for 1.5 years had only 15 bits of entropy. Debian developer had removed a subtle line of OpenSSL randomness-generating code. NaCl uses /dev/urandom, the OS random-number generator. Reviewing this kernel code is much more tractable than reviewing separate RNG code in every security library.
SLIDE 58
ypical defense strategy: hide differences een padding checks and subsequent integrity checks. rd to get this right: see BEAST, Lucky 13, POODLE, etc. does not decrypt message is authenticated. erification procedure rejects rgeries in constant time. ttacks are further constrained er-nonce key separation standard nonce handling. Centralizing randomness 2008 Bello: Debian/Ubuntu OpenSSL keys for 1.5 years had only 15 bits of entropy. Debian developer had removed a subtle line of OpenSSL randomness-generating code. NaCl uses /dev/urandom, the OS random-number generator. Reviewing this kernel code is much more tractable than reviewing separate RNG code in every security library. Centralization merge many pool feeding Merging auditable. bad/failing/malicious if there is
SLIDE 59 strategy: differences checks and integrity checks. this right: see 3, POODLE, etc. decrypt is authenticated. edure rejects constant time. further constrained ey separation nonce handling. Centralizing randomness 2008 Bello: Debian/Ubuntu OpenSSL keys for 1.5 years had only 15 bits of entropy. Debian developer had removed a subtle line of OpenSSL randomness-generating code. NaCl uses /dev/urandom, the OS random-number generator. Reviewing this kernel code is much more tractable than reviewing separate RNG code in every security library. Centralization allows merge many entrop pool feeding many Merging is deterministic
bad/failing/malicious if there is one good
SLIDE 60 and checks. see POODLE, etc. authenticated. rejects time. constrained ration handling. Centralizing randomness 2008 Bello: Debian/Ubuntu OpenSSL keys for 1.5 years had only 15 bits of entropy. Debian developer had removed a subtle line of OpenSSL randomness-generating code. NaCl uses /dev/urandom, the OS random-number generator. Reviewing this kernel code is much more tractable than reviewing separate RNG code in every security library. Centralization allows OS to merge many entropy sources pool feeding many applications. Merging is deterministic and
- auditable. Can survive many
bad/failing/malicious sources if there is one good source.
SLIDE 61 Centralizing randomness 2008 Bello: Debian/Ubuntu OpenSSL keys for 1.5 years had only 15 bits of entropy. Debian developer had removed a subtle line of OpenSSL randomness-generating code. NaCl uses /dev/urandom, the OS random-number generator. Reviewing this kernel code is much more tractable than reviewing separate RNG code in every security library. Centralization allows OS to merge many entropy sources into pool feeding many applications. Merging is deterministic and
- auditable. Can survive many
bad/failing/malicious sources if there is one good source.
SLIDE 62 Centralizing randomness 2008 Bello: Debian/Ubuntu OpenSSL keys for 1.5 years had only 15 bits of entropy. Debian developer had removed a subtle line of OpenSSL randomness-generating code. NaCl uses /dev/urandom, the OS random-number generator. Reviewing this kernel code is much more tractable than reviewing separate RNG code in every security library. Centralization allows OS to merge many entropy sources into pool feeding many applications. Merging is deterministic and
- auditable. Can survive many
bad/failing/malicious sources if there is one good source. Huge step backwards: Intel’s RDRAND in applications. Single entropy source; no backup; likely to be poorly cloned; backdoorable (CHES 2013); non-auditable. Not used in NaCl.
SLIDE 63 Centralizing randomness Bello: Debian/Ubuntu enSSL keys for 1.5 years
developer had removed subtle line of OpenSSL randomness-generating code. uses /dev/urandom, random-number generator. Reviewing this kernel code much more tractable than reviewing separate RNG code every security library. Centralization allows OS to merge many entropy sources into pool feeding many applications. Merging is deterministic and
- auditable. Can survive many
bad/failing/malicious sources if there is one good source. Huge step backwards: Intel’s RDRAND in applications. Single entropy source; no backup; likely to be poorly cloned; backdoorable (CHES 2013); non-auditable. Not used in NaCl. Avoiding 2010 Bushing–Ma Sven: Sony requirement for each leaked PS3
SLIDE 64 randomness Debian/Ubuntu for 1.5 years
er had removed OpenSSL randomness-generating code. /dev/urandom, random-number generator. ernel code tractable than rate RNG code library. Centralization allows OS to merge many entropy sources into pool feeding many applications. Merging is deterministic and
- auditable. Can survive many
bad/failing/malicious sources if there is one good source. Huge step backwards: Intel’s RDRAND in applications. Single entropy source; no backup; likely to be poorly cloned; backdoorable (CHES 2013); non-auditable. Not used in NaCl. Avoiding unnecessa 2010 Bushing–Marcan–Segher– Sven: Sony ignored requirement of new for each signature. leaked PS3 code-signing
SLIDE 65 Debian/Ubuntu rs y. removed de. , generator. than code Centralization allows OS to merge many entropy sources into pool feeding many applications. Merging is deterministic and
- auditable. Can survive many
bad/failing/malicious sources if there is one good source. Huge step backwards: Intel’s RDRAND in applications. Single entropy source; no backup; likely to be poorly cloned; backdoorable (CHES 2013); non-auditable. Not used in NaCl. Avoiding unnecessary randomness 2010 Bushing–Marcan–Segher– Sven: Sony ignored ECDSA requirement of new randomness for each signature. ⇒ Signatures leaked PS3 code-signing key.
SLIDE 66 Centralization allows OS to merge many entropy sources into pool feeding many applications. Merging is deterministic and
- auditable. Can survive many
bad/failing/malicious sources if there is one good source. Huge step backwards: Intel’s RDRAND in applications. Single entropy source; no backup; likely to be poorly cloned; backdoorable (CHES 2013); non-auditable. Not used in NaCl. Avoiding unnecessary randomness 2010 Bushing–Marcan–Segher– Sven: Sony ignored ECDSA requirement of new randomness for each signature. ⇒ Signatures leaked PS3 code-signing key.
SLIDE 67 Centralization allows OS to merge many entropy sources into pool feeding many applications. Merging is deterministic and
- auditable. Can survive many
bad/failing/malicious sources if there is one good source. Huge step backwards: Intel’s RDRAND in applications. Single entropy source; no backup; likely to be poorly cloned; backdoorable (CHES 2013); non-auditable. Not used in NaCl. Avoiding unnecessary randomness 2010 Bushing–Marcan–Segher– Sven: Sony ignored ECDSA requirement of new randomness for each signature. ⇒ Signatures leaked PS3 code-signing key. NaCl has deterministic crypto_box and crypto_sign. Randomness only for keypair. Eliminates this type of disaster. Also simplifies testing. NaCl uses automated test battery from eBACS (ECRYPT Benchmarking
- f Cryptographic Systems).
SLIDE 68 Centralization allows OS to many entropy sources into feeding many applications. Merging is deterministic and
- auditable. Can survive many
bad/failing/malicious sources there is one good source. step backwards: RDRAND in applications. entropy source; no backup; to be poorly cloned; backdoorable (CHES 2013); non-auditable. Not used in NaCl. Avoiding unnecessary randomness 2010 Bushing–Marcan–Segher– Sven: Sony ignored ECDSA requirement of new randomness for each signature. ⇒ Signatures leaked PS3 code-signing key. NaCl has deterministic crypto_box and crypto_sign. Randomness only for keypair. Eliminates this type of disaster. Also simplifies testing. NaCl uses automated test battery from eBACS (ECRYPT Benchmarking
- f Cryptographic Systems).
Avoiding 2008 Stevens–Sotirov– Appelbaum–Lenstra–Molna Osvik–de MD5 ⇒
SLIDE 69 allows OS to entropy sources into many applications. deterministic and survive many bad/failing/malicious sources
ards: in applications. source; no backup; rly cloned; (CHES 2013); Not used in NaCl. Avoiding unnecessary randomness 2010 Bushing–Marcan–Segher– Sven: Sony ignored ECDSA requirement of new randomness for each signature. ⇒ Signatures leaked PS3 code-signing key. NaCl has deterministic crypto_box and crypto_sign. Randomness only for keypair. Eliminates this type of disaster. Also simplifies testing. NaCl uses automated test battery from eBACS (ECRYPT Benchmarking
- f Cryptographic Systems).
Avoiding pure crypto 2008 Stevens–Sotirov– Appelbaum–Lenstra–Molna Osvik–de Weger exploited MD5 ⇒ rogue CA
SLIDE 70 to sources into applications. and many sources source. applications. backup; 2013); in NaCl. Avoiding unnecessary randomness 2010 Bushing–Marcan–Segher– Sven: Sony ignored ECDSA requirement of new randomness for each signature. ⇒ Signatures leaked PS3 code-signing key. NaCl has deterministic crypto_box and crypto_sign. Randomness only for keypair. Eliminates this type of disaster. Also simplifies testing. NaCl uses automated test battery from eBACS (ECRYPT Benchmarking
- f Cryptographic Systems).
Avoiding pure crypto failures 2008 Stevens–Sotirov– Appelbaum–Lenstra–Molnar– Osvik–de Weger exploited MD5 ⇒ rogue CA cert.
SLIDE 71 Avoiding unnecessary randomness 2010 Bushing–Marcan–Segher– Sven: Sony ignored ECDSA requirement of new randomness for each signature. ⇒ Signatures leaked PS3 code-signing key. NaCl has deterministic crypto_box and crypto_sign. Randomness only for keypair. Eliminates this type of disaster. Also simplifies testing. NaCl uses automated test battery from eBACS (ECRYPT Benchmarking
- f Cryptographic Systems).
Avoiding pure crypto failures 2008 Stevens–Sotirov– Appelbaum–Lenstra–Molnar– Osvik–de Weger exploited MD5 ⇒ rogue CA cert.
SLIDE 72 Avoiding unnecessary randomness 2010 Bushing–Marcan–Segher– Sven: Sony ignored ECDSA requirement of new randomness for each signature. ⇒ Signatures leaked PS3 code-signing key. NaCl has deterministic crypto_box and crypto_sign. Randomness only for keypair. Eliminates this type of disaster. Also simplifies testing. NaCl uses automated test battery from eBACS (ECRYPT Benchmarking
- f Cryptographic Systems).
Avoiding pure crypto failures 2008 Stevens–Sotirov– Appelbaum–Lenstra–Molnar– Osvik–de Weger exploited MD5 ⇒ rogue CA cert. 2012 Flame: new MD5 attack.
SLIDE 73 Avoiding unnecessary randomness 2010 Bushing–Marcan–Segher– Sven: Sony ignored ECDSA requirement of new randomness for each signature. ⇒ Signatures leaked PS3 code-signing key. NaCl has deterministic crypto_box and crypto_sign. Randomness only for keypair. Eliminates this type of disaster. Also simplifies testing. NaCl uses automated test battery from eBACS (ECRYPT Benchmarking
- f Cryptographic Systems).
Avoiding pure crypto failures 2008 Stevens–Sotirov– Appelbaum–Lenstra–Molnar– Osvik–de Weger exploited MD5 ⇒ rogue CA cert. 2012 Flame: new MD5 attack. Fact: By 1996, a few years after the introduction of MD5, Preneel and Dobbertin were calling for MD5 to be scrapped. NaCl pays attention to cryptanalysis and makes very conservative choices
- f cryptographic primitives.
SLIDE 74 Avoiding unnecessary randomness Bushing–Marcan–Segher– Sony ignored ECDSA requirement of new randomness h signature. ⇒ Signatures PS3 code-signing key. has deterministic crypto_box and crypto_sign. Randomness only for keypair. Eliminates this type of disaster. simplifies testing. NaCl uses automated test battery from (ECRYPT Benchmarking Cryptographic Systems). Avoiding pure crypto failures 2008 Stevens–Sotirov– Appelbaum–Lenstra–Molnar– Osvik–de Weger exploited MD5 ⇒ rogue CA cert. 2012 Flame: new MD5 attack. Fact: By 1996, a few years after the introduction of MD5, Preneel and Dobbertin were calling for MD5 to be scrapped. NaCl pays attention to cryptanalysis and makes very conservative choices
- f cryptographic primitives.
Speed Crypto p
cryptographic
Example used RSA-1024 Security Analyses that RSA-1024 e.g., 2003 estimated RSA Labs Move to
SLIDE 75 unnecessary randomness Bushing–Marcan–Segher– red ECDSA new randomness
de-signing key. deterministic and crypto_sign.
ype of disaster.
battery from CRYPT Benchmarking Systems). Avoiding pure crypto failures 2008 Stevens–Sotirov– Appelbaum–Lenstra–Molnar– Osvik–de Weger exploited MD5 ⇒ rogue CA cert. 2012 Flame: new MD5 attack. Fact: By 1996, a few years after the introduction of MD5, Preneel and Dobbertin were calling for MD5 to be scrapped. NaCl pays attention to cryptanalysis and makes very conservative choices
- f cryptographic primitives.
Speed Crypto performance
cryptographic securit
- r give up on cryptography
Example 1: Google used RSA-1024 until Security note: Analyses in 2003 concluded that RSA-1024 was e.g., 2003 Shamir–T estimated 1 year, ≈ RSA Labs and NIST Move to RSA-2048
SLIDE 76 randomness rcan–Segher– ECDSA randomness Signatures ey. crypto_sign. keypair. disaster. NaCl uses from Benchmarking ms). Avoiding pure crypto failures 2008 Stevens–Sotirov– Appelbaum–Lenstra–Molnar– Osvik–de Weger exploited MD5 ⇒ rogue CA cert. 2012 Flame: new MD5 attack. Fact: By 1996, a few years after the introduction of MD5, Preneel and Dobbertin were calling for MD5 to be scrapped. NaCl pays attention to cryptanalysis and makes very conservative choices
- f cryptographic primitives.
Speed Crypto performance problems
- ften lead users to reduce
cryptographic security levels
- r give up on cryptography.
Example 1: Google SSL used RSA-1024 until 2013. Security note: Analyses in 2003 concluded that RSA-1024 was breakable; e.g., 2003 Shamir–Tromer estimated 1 year, ≈107 USD. RSA Labs and NIST response: Move to RSA-2048 by 2010.
SLIDE 77 Avoiding pure crypto failures 2008 Stevens–Sotirov– Appelbaum–Lenstra–Molnar– Osvik–de Weger exploited MD5 ⇒ rogue CA cert. 2012 Flame: new MD5 attack. Fact: By 1996, a few years after the introduction of MD5, Preneel and Dobbertin were calling for MD5 to be scrapped. NaCl pays attention to cryptanalysis and makes very conservative choices
- f cryptographic primitives.
Speed Crypto performance problems
- ften lead users to reduce
cryptographic security levels
- r give up on cryptography.
Example 1: Google SSL used RSA-1024 until 2013. Security note: Analyses in 2003 concluded that RSA-1024 was breakable; e.g., 2003 Shamir–Tromer estimated 1 year, ≈107 USD. RSA Labs and NIST response: Move to RSA-2048 by 2010.
SLIDE 78 Avoiding pure crypto failures Stevens–Sotirov– elbaum–Lenstra–Molnar– Osvik–de Weger exploited ⇒ rogue CA cert. Flame: new MD5 attack. By 1996, a few years the introduction of MD5, Preneel and Dobbertin were for MD5 to be scrapped. pays attention to cryptanalysis and makes conservative choices cryptographic primitives. Speed Crypto performance problems
- ften lead users to reduce
cryptographic security levels
- r give up on cryptography.
Example 1: Google SSL used RSA-1024 until 2013. Security note: Analyses in 2003 concluded that RSA-1024 was breakable; e.g., 2003 Shamir–Tromer estimated 1 year, ≈107 USD. RSA Labs and NIST response: Move to RSA-2048 by 2010. Example until 2013 Example 1024: “tradeoff risk of key performance Example to use secret Example
https://sourceforge.net/account
is protected
https://sourceforge.net/develop
turns off
http://sourceforge.net/develop
SLIDE 79 crypto failures Stevens–Sotirov– elbaum–Lenstra–Molnar– exploited CA cert. new MD5 attack. a few years duction of MD5, Dobbertin were to be scrapped. attention to and makes conservative choices primitives. Speed Crypto performance problems
- ften lead users to reduce
cryptographic security levels
- r give up on cryptography.
Example 1: Google SSL used RSA-1024 until 2013. Security note: Analyses in 2003 concluded that RSA-1024 was breakable; e.g., 2003 Shamir–Tromer estimated 1 year, ≈107 USD. RSA Labs and NIST response: Move to RSA-2048 by 2010. Example 2: Tor use until 2013 switch to Example 3: DNSSEC 1024: “tradeoff bet risk of key compromise performance: : : ” Example 4: OpenSSL to use secret AES Example 5:
https://sourceforge.net/account
is protected by SSL
https://sourceforge.net/develop
turns off crypto: redirects
http://sourceforge.net/develop
SLIDE 80 failures elbaum–Lenstra–Molnar– attack. rs MD5, ere pped. rimitives. Speed Crypto performance problems
- ften lead users to reduce
cryptographic security levels
- r give up on cryptography.
Example 1: Google SSL used RSA-1024 until 2013. Security note: Analyses in 2003 concluded that RSA-1024 was breakable; e.g., 2003 Shamir–Tromer estimated 1 year, ≈107 USD. RSA Labs and NIST response: Move to RSA-2048 by 2010. Example 2: Tor used RSA-1024 until 2013 switch to Curve25519. Example 3: DNSSEC uses RSA- 1024: “tradeoff between the risk of key compromise and performance: : : ” Example 4: OpenSSL continues to use secret AES load addre Example 5:
https://sourceforge.net/account
is protected by SSL but
https://sourceforge.net/develop
turns off crypto: redirects to
http://sourceforge.net/develop
SLIDE 81 Speed Crypto performance problems
- ften lead users to reduce
cryptographic security levels
- r give up on cryptography.
Example 1: Google SSL used RSA-1024 until 2013. Security note: Analyses in 2003 concluded that RSA-1024 was breakable; e.g., 2003 Shamir–Tromer estimated 1 year, ≈107 USD. RSA Labs and NIST response: Move to RSA-2048 by 2010. Example 2: Tor used RSA-1024 until 2013 switch to Curve25519. Example 3: DNSSEC uses RSA- 1024: “tradeoff between the risk of key compromise and performance: : : ” Example 4: OpenSSL continues to use secret AES load addresses. Example 5:
https://sourceforge.net/account
is protected by SSL but
https://sourceforge.net/develop
turns off crypto: redirects to
http://sourceforge.net/develop.
SLIDE 82
performance problems lead users to reduce cryptographic security levels up on cryptography. Example 1: Google SSL RSA-1024 until 2013. Security note: Analyses in 2003 concluded RSA-1024 was breakable; 2003 Shamir–Tromer estimated 1 year, ≈107 USD. Labs and NIST response: to RSA-2048 by 2010. Example 2: Tor used RSA-1024 until 2013 switch to Curve25519. Example 3: DNSSEC uses RSA- 1024: “tradeoff between the risk of key compromise and performance: : : ” Example 4: OpenSSL continues to use secret AES load addresses. Example 5:
https://sourceforge.net/account
is protected by SSL but
https://sourceforge.net/develop
turns off crypto: redirects to
http://sourceforge.net/develop.
NaCl has e.g. crypto_box encrypts e.g. no RSA-1024; not
SLIDE 83 rmance problems to reduce security levels cryptography.
until 2013. concluded was breakable; Shamir–Tromer r, ≈107 USD. NIST response: RSA-2048 by 2010. Example 2: Tor used RSA-1024 until 2013 switch to Curve25519. Example 3: DNSSEC uses RSA- 1024: “tradeoff between the risk of key compromise and performance: : : ” Example 4: OpenSSL continues to use secret AES load addresses. Example 5:
https://sourceforge.net/account
is protected by SSL but
https://sourceforge.net/develop
turns off crypto: redirects to
http://sourceforge.net/develop.
NaCl has no low-securit e.g. crypto_box alw encrypts and e.g. no RSA-1024; not even RSA-2048.
SLIDE 84 roblems levels cryptography. 2013. concluded ble; USD.
2010. Example 2: Tor used RSA-1024 until 2013 switch to Curve25519. Example 3: DNSSEC uses RSA- 1024: “tradeoff between the risk of key compromise and performance: : : ” Example 4: OpenSSL continues to use secret AES load addresses. Example 5:
https://sourceforge.net/account
is protected by SSL but
https://sourceforge.net/develop
turns off crypto: redirects to
http://sourceforge.net/develop.
NaCl has no low-security options. e.g. crypto_box always encrypts and authenticates. e.g. no RSA-1024; not even RSA-2048.
SLIDE 85
Example 2: Tor used RSA-1024 until 2013 switch to Curve25519. Example 3: DNSSEC uses RSA- 1024: “tradeoff between the risk of key compromise and performance: : : ” Example 4: OpenSSL continues to use secret AES load addresses. Example 5:
https://sourceforge.net/account
is protected by SSL but
https://sourceforge.net/develop
turns off crypto: redirects to
http://sourceforge.net/develop.
NaCl has no low-security options. e.g. crypto_box always encrypts and authenticates. e.g. no RSA-1024; not even RSA-2048.
SLIDE 86 Example 2: Tor used RSA-1024 until 2013 switch to Curve25519. Example 3: DNSSEC uses RSA- 1024: “tradeoff between the risk of key compromise and performance: : : ” Example 4: OpenSSL continues to use secret AES load addresses. Example 5:
https://sourceforge.net/account
is protected by SSL but
https://sourceforge.net/develop
turns off crypto: redirects to
http://sourceforge.net/develop.
NaCl has no low-security options. e.g. crypto_box always encrypts and authenticates. e.g. no RSA-1024; not even RSA-2048. Remaining risk: Users find NaCl too slow ⇒ switch to low-security libraries
- r disable crypto entirely.
SLIDE 87 Example 2: Tor used RSA-1024 until 2013 switch to Curve25519. Example 3: DNSSEC uses RSA- 1024: “tradeoff between the risk of key compromise and performance: : : ” Example 4: OpenSSL continues to use secret AES load addresses. Example 5:
https://sourceforge.net/account
is protected by SSL but
https://sourceforge.net/develop
turns off crypto: redirects to
http://sourceforge.net/develop.
NaCl has no low-security options. e.g. crypto_box always encrypts and authenticates. e.g. no RSA-1024; not even RSA-2048. Remaining risk: Users find NaCl too slow ⇒ switch to low-security libraries
- r disable crypto entirely.
How NaCl avoids this risk: NaCl is exceptionally fast. Much faster than other libraries. Keeps up with the network.
SLIDE 88 Example 2: Tor used RSA-1024 2013 switch to Curve25519. Example 3: DNSSEC uses RSA- “tradeoff between the key compromise and rmance: : : ” Example 4: OpenSSL continues secret AES load addresses. Example 5:
https://sourceforge.net/account
rotected by SSL but
https://sourceforge.net/develop
http://sourceforge.net/develop.
NaCl has no low-security options. e.g. crypto_box always encrypts and authenticates. e.g. no RSA-1024; not even RSA-2048. Remaining risk: Users find NaCl too slow ⇒ switch to low-security libraries
- r disable crypto entirely.
How NaCl avoids this risk: NaCl is exceptionally fast. Much faster than other libraries. Keeps up with the network. NaCl operations for any common using AMD CPU ($190 crypto_box crypto_box_open crypto_sign_open crypto_sign
SLIDE 89 used RSA-1024 switch to Curve25519. DNSSEC uses RSA- between the romise and enSSL continues AES load addresses.
https://sourceforge.net/account
SSL but
https://sourceforge.net/develop
redirects to
http://sourceforge.net/develop.
NaCl has no low-security options. e.g. crypto_box always encrypts and authenticates. e.g. no RSA-1024; not even RSA-2048. Remaining risk: Users find NaCl too slow ⇒ switch to low-security libraries
- r disable crypto entirely.
How NaCl avoids this risk: NaCl is exceptionally fast. Much faster than other libraries. Keeps up with the network. NaCl operations per for any common pack using AMD Phenom CPU ($190 in 2011): crypto_box: >80000. crypto_box_open crypto_sign_open crypto_sign: >180000.
SLIDE 90 RSA-1024 Curve25519. RSA- the and continues addresses.
https://sourceforge.net/account https://sourceforge.net/develop
to
http://sourceforge.net/develop.
NaCl has no low-security options. e.g. crypto_box always encrypts and authenticates. e.g. no RSA-1024; not even RSA-2048. Remaining risk: Users find NaCl too slow ⇒ switch to low-security libraries
- r disable crypto entirely.
How NaCl avoids this risk: NaCl is exceptionally fast. Much faster than other libraries. Keeps up with the network. NaCl operations per second for any common packet size, using AMD Phenom II X6 1100T CPU ($190 in 2011): crypto_box: >80000. crypto_box_open: >80000. crypto_sign_open: >70000. crypto_sign: >180000.
SLIDE 91 NaCl has no low-security options. e.g. crypto_box always encrypts and authenticates. e.g. no RSA-1024; not even RSA-2048. Remaining risk: Users find NaCl too slow ⇒ switch to low-security libraries
- r disable crypto entirely.
How NaCl avoids this risk: NaCl is exceptionally fast. Much faster than other libraries. Keeps up with the network. NaCl operations per second for any common packet size, using AMD Phenom II X6 1100T CPU ($190 in 2011): crypto_box: >80000. crypto_box_open: >80000. crypto_sign_open: >70000. crypto_sign: >180000.
SLIDE 92 NaCl has no low-security options. e.g. crypto_box always encrypts and authenticates. e.g. no RSA-1024; not even RSA-2048. Remaining risk: Users find NaCl too slow ⇒ switch to low-security libraries
- r disable crypto entirely.
How NaCl avoids this risk: NaCl is exceptionally fast. Much faster than other libraries. Keeps up with the network. NaCl operations per second for any common packet size, using AMD Phenom II X6 1100T CPU ($190 in 2011): crypto_box: >80000. crypto_box_open: >80000. crypto_sign_open: >70000. crypto_sign: >180000. Handles arbitrary packet floods up to ≈30 Mbps per CPU, depending on protocol details.
SLIDE 93 has no low-security options. crypto_box always encrypts and authenticates. no RSA-1024; not even RSA-2048. Remaining risk: find NaCl too slow ⇒ to low-security libraries ble crypto entirely. NaCl avoids this risk: is exceptionally fast. faster than other libraries. up with the network. NaCl operations per second for any common packet size, using AMD Phenom II X6 1100T CPU ($190 in 2011): crypto_box: >80000. crypto_box_open: >80000. crypto_sign_open: >70000. crypto_sign: >180000. Handles arbitrary packet floods up to ≈30 Mbps per CPU, depending on protocol details. But wait
for any pack 80000 1500-b fill up a
for many from same if application crypto_box crypto_box_beforenm crypto_box_afternm
SLIDE 94 w-security options. always and authenticates. RSA-1024; RSA-2048. too slow ⇒ w-security libraries entirely. avoids this risk: exceptionally fast. than other libraries. the network. NaCl operations per second for any common packet size, using AMD Phenom II X6 1100T CPU ($190 in 2011): crypto_box: >80000. crypto_box_open: >80000. crypto_sign_open: >70000. crypto_sign: >180000. Handles arbitrary packet floods up to ≈30 Mbps per CPU, depending on protocol details. But wait, it’s even
for any packet size: 80000 1500-byte pack fill up a 1 Gbps link.
for many packets from same public k if application splits crypto_box into crypto_box_beforenm crypto_box_afternm
SLIDE 95
authenticates. ⇒ ries risk: raries. rk. NaCl operations per second for any common packet size, using AMD Phenom II X6 1100T CPU ($190 in 2011): crypto_box: >80000. crypto_box_open: >80000. crypto_sign_open: >70000. crypto_sign: >180000. Handles arbitrary packet floods up to ≈30 Mbps per CPU, depending on protocol details. But wait, it’s even faster!
- 1. Pure secret-key crypto
for any packet size: 80000 1500-byte packets/second fill up a 1 Gbps link.
- 2. Pure secret-key crypto
for many packets from same public key, if application splits crypto_box into crypto_box_beforenm and crypto_box_afternm.
SLIDE 96 NaCl operations per second for any common packet size, using AMD Phenom II X6 1100T CPU ($190 in 2011): crypto_box: >80000. crypto_box_open: >80000. crypto_sign_open: >70000. crypto_sign: >180000. Handles arbitrary packet floods up to ≈30 Mbps per CPU, depending on protocol details. But wait, it’s even faster!
- 1. Pure secret-key crypto
for any packet size: 80000 1500-byte packets/second fill up a 1 Gbps link.
- 2. Pure secret-key crypto
for many packets from same public key, if application splits crypto_box into crypto_box_beforenm and crypto_box_afternm.
SLIDE 97
any common packet size, AMD Phenom II X6 1100T ($190 in 2011): crypto_box: >80000. crypto_box_open: >80000. crypto_sign_open: >70000. crypto_sign: >180000. Handles arbitrary packet floods ≈30 Mbps per CPU, ending on protocol details. But wait, it’s even faster!
- 1. Pure secret-key crypto
for any packet size: 80000 1500-byte packets/second fill up a 1 Gbps link.
- 2. Pure secret-key crypto
for many packets from same public key, if application splits crypto_box into crypto_box_beforenm and crypto_box_afternm.
under kno no time (This do for forgeries but flooded continue to known
doubling crypto_sign_open for valid
SLIDE 98 per second packet size, Phenom II X6 1100T 2011): 80000. crypto_box_open: >80000. crypto_sign_open: >70000. 180000. ry packet floods Mbps per CPU,
But wait, it’s even faster!
- 1. Pure secret-key crypto
for any packet size: 80000 1500-byte packets/second fill up a 1 Gbps link.
- 2. Pure secret-key crypto
for many packets from same public key, if application splits crypto_box into crypto_box_beforenm and crypto_box_afternm.
- 3. Very fast rejection
- f forged packets
under known public no time spent on decryption. (This doesn’t help for forgeries under but flooded server continue providing to known keys.)
- 4. Fast batch verification,
doubling speed of crypto_sign_open for valid signatures.
SLIDE 99
size, 1100T 80000. 70000. floods CPU, details. But wait, it’s even faster!
- 1. Pure secret-key crypto
for any packet size: 80000 1500-byte packets/second fill up a 1 Gbps link.
- 2. Pure secret-key crypto
for many packets from same public key, if application splits crypto_box into crypto_box_beforenm and crypto_box_afternm.
- 3. Very fast rejection
- f forged packets
under known public keys: no time spent on decryption. (This doesn’t help much for forgeries under new keys, but flooded server can continue providing fast service to known keys.)
- 4. Fast batch verification,
doubling speed of crypto_sign_open for valid signatures.
SLIDE 100 But wait, it’s even faster!
- 1. Pure secret-key crypto
for any packet size: 80000 1500-byte packets/second fill up a 1 Gbps link.
- 2. Pure secret-key crypto
for many packets from same public key, if application splits crypto_box into crypto_box_beforenm and crypto_box_afternm.
- 3. Very fast rejection
- f forged packets
under known public keys: no time spent on decryption. (This doesn’t help much for forgeries under new keys, but flooded server can continue providing fast service to known keys.)
- 4. Fast batch verification,
doubling speed of crypto_sign_open for valid signatures.
SLIDE 101 ait, it’s even faster! Pure secret-key crypto any packet size: 1500-byte packets/second a 1 Gbps link. Pure secret-key crypto any packets same public key, application splits crypto_box into crypto_box_beforenm and crypto_box_afternm.
- 3. Very fast rejection
- f forged packets
under known public keys: no time spent on decryption. (This doesn’t help much for forgeries under new keys, but flooded server can continue providing fast service to known keys.)
- 4. Fast batch verification,
doubling speed of crypto_sign_open for valid signatures. Cryptographic The main achieve very without ECC, not much stronger Curve25519, curves: safecurves.cr.yp.to Salsa20, much larger Poly1305, information-theo EdDSA, collision-resilience
SLIDE 102 even faster! ey crypto size: packets/second link. ey crypto ets public key, splits into crypto_box_beforenm and crypto_box_afternm.
- 3. Very fast rejection
- f forged packets
under known public keys: no time spent on decryption. (This doesn’t help much for forgeries under new keys, but flooded server can continue providing fast service to known keys.)
- 4. Fast batch verification,
doubling speed of crypto_sign_open for valid signatures. Cryptographic details The main NaCl wo achieve very high sp without compromising ECC, not RSA: much stronger securit Curve25519, not NSA/NIST curves: safecurves.cr.yp.to Salsa20, not AES: much larger securit Poly1305, not HMA information-theoretic EdDSA, not ECDSA: collision-resilience
SLIDE 103 ets/second and
- 3. Very fast rejection
- f forged packets
under known public keys: no time spent on decryption. (This doesn’t help much for forgeries under new keys, but flooded server can continue providing fast service to known keys.)
- 4. Fast batch verification,
doubling speed of crypto_sign_open for valid signatures. Cryptographic details The main NaCl work we did: achieve very high speeds without compromising securit ECC, not RSA: much stronger security record. Curve25519, not NSA/NIST curves: safecurves.cr.yp.to Salsa20, not AES: much larger security margin. Poly1305, not HMAC: information-theoretic security EdDSA, not ECDSA: collision-resilience et al.
SLIDE 104
- 3. Very fast rejection
- f forged packets
under known public keys: no time spent on decryption. (This doesn’t help much for forgeries under new keys, but flooded server can continue providing fast service to known keys.)
- 4. Fast batch verification,
doubling speed of crypto_sign_open for valid signatures. Cryptographic details The main NaCl work we did: achieve very high speeds without compromising security. ECC, not RSA: much stronger security record. Curve25519, not NSA/NIST curves: safecurves.cr.yp.to Salsa20, not AES: much larger security margin. Poly1305, not HMAC: information-theoretic security. EdDSA, not ECDSA: collision-resilience et al.
SLIDE 105 ery fast rejection rged packets known public keys: time spent on decryption. doesn’t help much rgeries under new keys,
continue providing fast service wn keys.) ast batch verification, doubling speed of crypto_sign_open lid signatures. Cryptographic details The main NaCl work we did: achieve very high speeds without compromising security. ECC, not RSA: much stronger security record. Curve25519, not NSA/NIST curves: safecurves.cr.yp.to Salsa20, not AES: much larger security margin. Poly1305, not HMAC: information-theoretic security. EdDSA, not ECDSA: collision-resilience et al. Speed education Oops, there’s users complet
SLIDE 106 rejection ets public keys:
help much under new keys, server can ing fast service verification,
crypto_sign_open signatures. Cryptographic details The main NaCl work we did: achieve very high speeds without compromising security. ECC, not RSA: much stronger security record. Curve25519, not NSA/NIST curves: safecurves.cr.yp.to Salsa20, not AES: much larger security margin. Poly1305, not HMAC: information-theoretic security. EdDSA, not ECDSA: collision-resilience et al. Speed education Oops, there’s another users completely una
SLIDE 107 decryption. eys, service Cryptographic details The main NaCl work we did: achieve very high speeds without compromising security. ECC, not RSA: much stronger security record. Curve25519, not NSA/NIST curves: safecurves.cr.yp.to Salsa20, not AES: much larger security margin. Poly1305, not HMAC: information-theoretic security. EdDSA, not ECDSA: collision-resilience et al. Speed education Oops, there’s another risk: users completely unaware
- f how fast crypto can be.
SLIDE 108 Cryptographic details The main NaCl work we did: achieve very high speeds without compromising security. ECC, not RSA: much stronger security record. Curve25519, not NSA/NIST curves: safecurves.cr.yp.to Salsa20, not AES: much larger security margin. Poly1305, not HMAC: information-theoretic security. EdDSA, not ECDSA: collision-resilience et al. Speed education Oops, there’s another risk: users completely unaware
- f how fast crypto can be.
SLIDE 109 Cryptographic details The main NaCl work we did: achieve very high speeds without compromising security. ECC, not RSA: much stronger security record. Curve25519, not NSA/NIST curves: safecurves.cr.yp.to Salsa20, not AES: much larger security margin. Poly1305, not HMAC: information-theoretic security. EdDSA, not ECDSA: collision-resilience et al. Speed education Oops, there’s another risk: users completely unaware
- f how fast crypto can be.
Example: “PRESERVE contributes to the security and privacy of future vehicle-to-vehicle and vehicle- to-infrastructure communication systems by addressing critical issues like performance, scalability, and deployability of V2X security systems.” preserve-project.eu
SLIDE 110 Cryptographic details main NaCl work we did: achieve very high speeds without compromising security. not RSA: stronger security record. Curve25519, not NSA/NIST curves: safecurves.cr.yp.to Salsa20, not AES: larger security margin.
rmation-theoretic security. EdDSA, not ECDSA: collision-resilience et al. Speed education Oops, there’s another risk: users completely unaware
- f how fast crypto can be.
Example: “PRESERVE contributes to the security and privacy of future vehicle-to-vehicle and vehicle- to-infrastructure communication systems by addressing critical issues like performance, scalability, and deployability of V2X security systems.” preserve-project.eu “[In] most the pack 750 pack maximum goes wel (2,265 pack Processing second and ms can ha hardware. a Pentium needs ab a verification cryptographic likely to
SLIDE 111 details work we did: high speeds romising security. security record. NSA/NIST safecurves.cr.yp.to S: security margin. HMAC: retic security. ECDSA: collision-resilience et al. Speed education Oops, there’s another risk: users completely unaware
- f how fast crypto can be.
Example: “PRESERVE contributes to the security and privacy of future vehicle-to-vehicle and vehicle- to-infrastructure communication systems by addressing critical issues like performance, scalability, and deployability of V2X security systems.” preserve-project.eu “[In] most driving the packet rates do 750 packets per second. maximum highway goes well beyond this (2,265 packets per Processing 1,000 pack second and processing ms can hardly be met
a Pentium D 3.4 GHz needs about 5 times a verification : : : a cryptographic co-p likely to be necessa
SLIDE 112 did: security. record. NSA/NIST safecurves.cr.yp.to rgin. security. Speed education Oops, there’s another risk: users completely unaware
- f how fast crypto can be.
Example: “PRESERVE contributes to the security and privacy of future vehicle-to-vehicle and vehicle- to-infrastructure communication systems by addressing critical issues like performance, scalability, and deployability of V2X security systems.” preserve-project.eu “[In] most driving situations the packet rates do not exceed 750 packets per second. Only maximum highway scenario : goes well beyond this value (2,265 packets per second). Processing 1,000 packets per second and processing each in ms can hardly be met by current
- hardware. As discussed in [32]
a Pentium D 3.4 GHz processo needs about 5 times as long a verification : : : a dedicated cryptographic co-processor is likely to be necessary.”
SLIDE 113 Speed education Oops, there’s another risk: users completely unaware
- f how fast crypto can be.
Example: “PRESERVE contributes to the security and privacy of future vehicle-to-vehicle and vehicle- to-infrastructure communication systems by addressing critical issues like performance, scalability, and deployability of V2X security systems.” preserve-project.eu “[In] most driving situations : : : the packet rates do not exceed 750 packets per second. Only the maximum highway scenario : : : goes well beyond this value (2,265 packets per second). : : : Processing 1,000 packets per second and processing each in 1 ms can hardly be met by current
- hardware. As discussed in [32],
a Pentium D 3.4 GHz processor needs about 5 times as long for a verification : : : a dedicated cryptographic co-processor is likely to be necessary.”
SLIDE 114 education there’s another risk: completely unaware fast crypto can be. Example: PRESERVE contributes to the security and privacy of future vehicle-to-vehicle and vehicle- to-infrastructure communication systems by addressing critical like performance, scalability, deployability of V2X security systems.” preserve-project.eu “[In] most driving situations : : : the packet rates do not exceed 750 packets per second. Only the maximum highway scenario : : : goes well beyond this value (2,265 packets per second). : : : Processing 1,000 packets per second and processing each in 1 ms can hardly be met by current
- hardware. As discussed in [32],
a Pentium D 3.4 GHz processor needs about 5 times as long for a verification : : : a dedicated cryptographic co-processor is likely to be necessary.” “NEON
5.48 cycles/ 2.30 cycles/ for Salsa20, 498349 cycles 624846 cycles for Curve25519
SLIDE 115 another risk: unaware crypto can be. contributes to the rivacy of future vehicle-to-vehicle and vehicle- communication addressing critical rmance, scalability, y of V2X security preserve-project.eu “[In] most driving situations : : : the packet rates do not exceed 750 packets per second. Only the maximum highway scenario : : : goes well beyond this value (2,265 packets per second). : : : Processing 1,000 packets per second and processing each in 1 ms can hardly be met by current
- hardware. As discussed in [32],
a Pentium D 3.4 GHz processor needs about 5 times as long for a verification : : : a dedicated cryptographic co-processor is likely to be necessary.” “NEON crypto” (CHES
5.48 cycles/byte (1.4 2.30 cycles/byte (3.4 for Salsa20, Poly1305. 498349 cycles (2000/second), 624846 cycles (1600/second) for Curve25519 DH,
SLIDE 116 risk: e. to the future vehicle- communication critical scalability, security “[In] most driving situations : : : the packet rates do not exceed 750 packets per second. Only the maximum highway scenario : : : goes well beyond this value (2,265 packets per second). : : : Processing 1,000 packets per second and processing each in 1 ms can hardly be met by current
- hardware. As discussed in [32],
a Pentium D 3.4 GHz processor needs about 5 times as long for a verification : : : a dedicated cryptographic co-processor is likely to be necessary.” “NEON crypto” (CHES 2012)
5.48 cycles/byte (1.4 Gbps), 2.30 cycles/byte (3.4 Gbps) for Salsa20, Poly1305. 498349 cycles (2000/second), 624846 cycles (1600/second) for Curve25519 DH, verify.
SLIDE 117 “[In] most driving situations : : : the packet rates do not exceed 750 packets per second. Only the maximum highway scenario : : : goes well beyond this value (2,265 packets per second). : : : Processing 1,000 packets per second and processing each in 1 ms can hardly be met by current
- hardware. As discussed in [32],
a Pentium D 3.4 GHz processor needs about 5 times as long for a verification : : : a dedicated cryptographic co-processor is likely to be necessary.” “NEON crypto” (CHES 2012)
5.48 cycles/byte (1.4 Gbps), 2.30 cycles/byte (3.4 Gbps) for Salsa20, Poly1305. 498349 cycles (2000/second), 624846 cycles (1600/second) for Curve25519 DH, verify.
SLIDE 118 “[In] most driving situations : : : the packet rates do not exceed 750 packets per second. Only the maximum highway scenario : : : goes well beyond this value (2,265 packets per second). : : : Processing 1,000 packets per second and processing each in 1 ms can hardly be met by current
- hardware. As discussed in [32],
a Pentium D 3.4 GHz processor needs about 5 times as long for a verification : : : a dedicated cryptographic co-processor is likely to be necessary.” “NEON crypto” (CHES 2012)
5.48 cycles/byte (1.4 Gbps), 2.30 cycles/byte (3.4 Gbps) for Salsa20, Poly1305. 498349 cycles (2000/second), 624846 cycles (1600/second) for Curve25519 DH, verify. 1GHz Cortex-A8 was high-end smartphone core in 2010: e.g., Samsung Exynos 3110 (Galaxy S); TI OMAP3630 (Motorola Droid X); Apple A4 (iPad 1/iPhone 4).
SLIDE 119 “[In] most driving situations : : : the packet rates do not exceed 750 packets per second. Only the maximum highway scenario : : : goes well beyond this value (2,265 packets per second). : : : Processing 1,000 packets per second and processing each in 1 ms can hardly be met by current
- hardware. As discussed in [32],
a Pentium D 3.4 GHz processor needs about 5 times as long for a verification : : : a dedicated cryptographic co-processor is likely to be necessary.” “NEON crypto” (CHES 2012)
5.48 cycles/byte (1.4 Gbps), 2.30 cycles/byte (3.4 Gbps) for Salsa20, Poly1305. 498349 cycles (2000/second), 624846 cycles (1600/second) for Curve25519 DH, verify. 1GHz Cortex-A8 was high-end smartphone core in 2010: e.g., Samsung Exynos 3110 (Galaxy S); TI OMAP3630 (Motorola Droid X); Apple A4 (iPad 1/iPhone 4). 2013: Allwinner A13, $5 in bulk.
SLIDE 120 most driving situations : : : packet rates do not exceed packets per second. Only the maximum highway scenario : : : ell beyond this value packets per second). : : : cessing 1,000 packets per and processing each in 1 can hardly be met by current
- are. As discussed in [32],
entium D 3.4 GHz processor about 5 times as long for verification : : : a dedicated cryptographic co-processor is to be necessary.” “NEON crypto” (CHES 2012)
5.48 cycles/byte (1.4 Gbps), 2.30 cycles/byte (3.4 Gbps) for Salsa20, Poly1305. 498349 cycles (2000/second), 624846 cycles (1600/second) for Curve25519 DH, verify. 1GHz Cortex-A8 was high-end smartphone core in 2010: e.g., Samsung Exynos 3110 (Galaxy S); TI OMAP3630 (Motorola Droid X); Apple A4 (iPad 1/iPhone 4). 2013: Allwinner A13, $5 in bulk. Case study: 1985 ElGamal (R; S) is if BH(M) and R; S Here q is B is standa A is signer’s H(M) is Signer generates as secret easily solves
SLIDE 121 driving situations : : : do not exceed
ay scenario : : :
er second). : : : 1,000 packets per cessing each in 1 e met by current discussed in [32], GHz processor times as long for a dedicated co-processor is necessary.” “NEON crypto” (CHES 2012)
5.48 cycles/byte (1.4 Gbps), 2.30 cycles/byte (3.4 Gbps) for Salsa20, Poly1305. 498349 cycles (2000/second), 624846 cycles (1600/second) for Curve25519 DH, verify. 1GHz Cortex-A8 was high-end smartphone core in 2010: e.g., Samsung Exynos 3110 (Galaxy S); TI OMAP3630 (Motorola Droid X); Apple A4 (iPad 1/iPhone 4). 2013: Allwinner A13, $5 in bulk. Case study: EdDSA 1985 ElGamal signatur (R; S) is signature if BH(M) ≡ ARRS and R; S ∈ {0; 1; : Here q is standard B is standard base, A is signer’s public H(M) is hash of message. Signer generates A as secret powers of easily solves for S.
SLIDE 122 situations : : : exceed Only the rio : : : value second). : : : per each in 1 current [32], cessor long for dedicated r is “NEON crypto” (CHES 2012)
5.48 cycles/byte (1.4 Gbps), 2.30 cycles/byte (3.4 Gbps) for Salsa20, Poly1305. 498349 cycles (2000/second), 624846 cycles (1600/second) for Curve25519 DH, verify. 1GHz Cortex-A8 was high-end smartphone core in 2010: e.g., Samsung Exynos 3110 (Galaxy S); TI OMAP3630 (Motorola Droid X); Apple A4 (iPad 1/iPhone 4). 2013: Allwinner A13, $5 in bulk. Case study: EdDSA 1985 ElGamal signatures: (R; S) is signature of M if BH(M) ≡ ARRS (mod q) and R; S ∈ {0; 1; : : : ; q − 2} Here q is standard prime, B is standard base, A is signer’s public key, H(M) is hash of message. Signer generates A and R as secret powers of B; easily solves for S.
SLIDE 123 “NEON crypto” (CHES 2012)
5.48 cycles/byte (1.4 Gbps), 2.30 cycles/byte (3.4 Gbps) for Salsa20, Poly1305. 498349 cycles (2000/second), 624846 cycles (1600/second) for Curve25519 DH, verify. 1GHz Cortex-A8 was high-end smartphone core in 2010: e.g., Samsung Exynos 3110 (Galaxy S); TI OMAP3630 (Motorola Droid X); Apple A4 (iPad 1/iPhone 4). 2013: Allwinner A13, $5 in bulk. Case study: EdDSA 1985 ElGamal signatures: (R; S) is signature of M if BH(M) ≡ ARRS (mod q) and R; S ∈ {0; 1; : : : ; q − 2}. Here q is standard prime, B is standard base, A is signer’s public key, H(M) is hash of message. Signer generates A and R as secret powers of B; easily solves for S.
SLIDE 124 “NEON crypto” (CHES 2012) 1GHz Cortex-A8 core: cycles/byte (1.4 Gbps), cycles/byte (3.4 Gbps) Salsa20, Poly1305. 498349 cycles (2000/second), 624846 cycles (1600/second) Curve25519 DH, verify. Cortex-A8 was high-end rtphone core in 2010: e.g., Samsung Exynos 3110 (Galaxy S); OMAP3630 (Motorola Droid Apple A4 (iPad 1/iPhone 4). Allwinner A13, $5 in bulk. Case study: EdDSA 1985 ElGamal signatures: (R; S) is signature of M if BH(M) ≡ ARRS (mod q) and R; S ∈ {0; 1; : : : ; q − 2}. Here q is standard prime, B is standard base, A is signer’s public key, H(M) is hash of message. Signer generates A and R as secret powers of B; easily solves for S. 1990 Schno
BH(M) ≡ Reduces
with two BH(M)=H Saves time
BH(M)=H Saves time
BH(R;M) ⇒ Resilient
SLIDE 125 (CHES 2012) rtex-A8 core: (1.4 Gbps), (3.4 Gbps)
(2000/second), (1600/second) DH, verify. was high-end in 2010: e.g., Exynos 3110 (Galaxy S); (Motorola Droid ad 1/iPhone 4). A13, $5 in bulk. Case study: EdDSA 1985 ElGamal signatures: (R; S) is signature of M if BH(M) ≡ ARRS (mod q) and R; S ∈ {0; 1; : : : ; q − 2}. Here q is standard prime, B is standard base, A is signer’s public key, H(M) is hash of message. Signer generates A and R as secret powers of B; easily solves for S. 1990 Schnorr improvements:
BH(M) ≡ AH(R)RS Reduces attacker control.
with two exponents: BH(M)=H(R) ≡ AR Saves time in verification.
BH(M)=H(R) ≡ AR Saves time in verification.
BH(R;M) ≡ ARS. ⇒ Resilient to H collisions.
SLIDE 126 2012) Gbps), Gbps) (2000/second), (1600/second) . high-end e.g., (Galaxy S); Droid 1/iPhone 4). in bulk. Case study: EdDSA 1985 ElGamal signatures: (R; S) is signature of M if BH(M) ≡ ARRS (mod q) and R; S ∈ {0; 1; : : : ; q − 2}. Here q is standard prime, B is standard base, A is signer’s public key, H(M) is hash of message. Signer generates A and R as secret powers of B; easily solves for S. 1990 Schnorr improvements:
- 1. Hash R in the exponent:
BH(M) ≡ AH(R)RS. Reduces attacker control.
- 2. Replace three exponents
with two exponents: BH(M)=H(R) ≡ ARS=H(R). Saves time in verification.
- 3. Simplify by relabeling S:
BH(M)=H(R) ≡ ARS. Saves time in verification.
BH(R;M) ≡ ARS. ⇒ Resilient to H collisions.
SLIDE 127 Case study: EdDSA 1985 ElGamal signatures: (R; S) is signature of M if BH(M) ≡ ARRS (mod q) and R; S ∈ {0; 1; : : : ; q − 2}. Here q is standard prime, B is standard base, A is signer’s public key, H(M) is hash of message. Signer generates A and R as secret powers of B; easily solves for S. 1990 Schnorr improvements:
- 1. Hash R in the exponent:
BH(M) ≡ AH(R)RS. Reduces attacker control.
- 2. Replace three exponents
with two exponents: BH(M)=H(R) ≡ ARS=H(R). Saves time in verification.
- 3. Simplify by relabeling S:
BH(M)=H(R) ≡ ARS. Saves time in verification.
BH(R;M) ≡ ARS. ⇒ Resilient to H collisions.
SLIDE 128 study: EdDSA ElGamal signatures: is signature of M
) ≡ ARRS
(mod q) ; S ∈ {0; 1; : : : ; q − 2}. is standard prime, standard base, signer’s public key, is hash of message. generates A and R secret powers of B; solves for S. 1990 Schnorr improvements:
- 1. Hash R in the exponent:
BH(M) ≡ AH(R)RS. Reduces attacker control.
- 2. Replace three exponents
with two exponents: BH(M)=H(R) ≡ ARS=H(R). Saves time in verification.
- 3. Simplify by relabeling S:
BH(M)=H(R) ≡ ARS. Saves time in verification.
BH(R;M) ≡ ARS. ⇒ Resilient to H collisions.
BS ≡ RA Simpler,
Saves space
Saves space
SLIDE 129 EdDSA signatures: signature of M
S
(mod q) ; : : : ; q − 2}. rd prime, base, public key, message. A and R
S. 1990 Schnorr improvements:
- 1. Hash R in the exponent:
BH(M) ≡ AH(R)RS. Reduces attacker control.
- 2. Replace three exponents
with two exponents: BH(M)=H(R) ≡ ARS=H(R). Saves time in verification.
- 3. Simplify by relabeling S:
BH(M)=H(R) ≡ ARS. Saves time in verification.
BH(R;M) ≡ ARS. ⇒ Resilient to H collisions.
BS ≡ RAH(R;M). Simpler, faster.
Saves space in signatures.
Saves space in signatures.
SLIDE 130 q) 2}. 1990 Schnorr improvements:
- 1. Hash R in the exponent:
BH(M) ≡ AH(R)RS. Reduces attacker control.
- 2. Replace three exponents
with two exponents: BH(M)=H(R) ≡ ARS=H(R). Saves time in verification.
- 3. Simplify by relabeling S:
BH(M)=H(R) ≡ ARS. Saves time in verification.
BH(R;M) ≡ ARS. ⇒ Resilient to H collisions.
- 5. Eliminate inversions for signer:
BS ≡ RAH(R;M). Simpler, faster.
- 6. Compress R to H(R; M).
Saves space in signatures.
- 7. Use half-size H output.
Saves space in signatures.
SLIDE 131 1990 Schnorr improvements:
- 1. Hash R in the exponent:
BH(M) ≡ AH(R)RS. Reduces attacker control.
- 2. Replace three exponents
with two exponents: BH(M)=H(R) ≡ ARS=H(R). Saves time in verification.
- 3. Simplify by relabeling S:
BH(M)=H(R) ≡ ARS. Saves time in verification.
BH(R;M) ≡ ARS. ⇒ Resilient to H collisions.
- 5. Eliminate inversions for signer:
BS ≡ RAH(R;M). Simpler, faster.
- 6. Compress R to H(R; M).
Saves space in signatures.
- 7. Use half-size H output.
Saves space in signatures.
SLIDE 132 1990 Schnorr improvements:
- 1. Hash R in the exponent:
BH(M) ≡ AH(R)RS. Reduces attacker control.
- 2. Replace three exponents
with two exponents: BH(M)=H(R) ≡ ARS=H(R). Saves time in verification.
- 3. Simplify by relabeling S:
BH(M)=H(R) ≡ ARS. Saves time in verification.
BH(R;M) ≡ ARS. ⇒ Resilient to H collisions.
- 5. Eliminate inversions for signer:
BS ≡ RAH(R;M). Simpler, faster.
- 6. Compress R to H(R; M).
Saves space in signatures.
- 7. Use half-size H output.
Saves space in signatures. Subsequent research: extensive theoretical study of security of Schnorr’s system.
SLIDE 133 1990 Schnorr improvements:
- 1. Hash R in the exponent:
BH(M) ≡ AH(R)RS. Reduces attacker control.
- 2. Replace three exponents
with two exponents: BH(M)=H(R) ≡ ARS=H(R). Saves time in verification.
- 3. Simplify by relabeling S:
BH(M)=H(R) ≡ ARS. Saves time in verification.
BH(R;M) ≡ ARS. ⇒ Resilient to H collisions.
- 5. Eliminate inversions for signer:
BS ≡ RAH(R;M). Simpler, faster.
- 6. Compress R to H(R; M).
Saves space in signatures.
- 7. Use half-size H output.
Saves space in signatures. Subsequent research: extensive theoretical study of security of Schnorr’s system. But patented. ⇒ DSA, ECDSA avoided most improvements.
SLIDE 134 1990 Schnorr improvements:
- 1. Hash R in the exponent:
BH(M) ≡ AH(R)RS. Reduces attacker control.
- 2. Replace three exponents
with two exponents: BH(M)=H(R) ≡ ARS=H(R). Saves time in verification.
- 3. Simplify by relabeling S:
BH(M)=H(R) ≡ ARS. Saves time in verification.
BH(R;M) ≡ ARS. ⇒ Resilient to H collisions.
- 5. Eliminate inversions for signer:
BS ≡ RAH(R;M). Simpler, faster.
- 6. Compress R to H(R; M).
Saves space in signatures.
- 7. Use half-size H output.
Saves space in signatures. Subsequent research: extensive theoretical study of security of Schnorr’s system. But patented. ⇒ DSA, ECDSA avoided most improvements. Patent expired in 2008.
SLIDE 135 Schnorr improvements: Hash R in the exponent: ≡ AH(R)RS. Reduces attacker control. Replace three exponents wo exponents:
=H(R) ≡ ARS=H(R).
time in verification. Simplify by relabeling S:
=H(R) ≡ ARS.
time in verification. Merge the hashes:
) ≡ ARS.
Resilient to H collisions.
- 5. Eliminate inversions for signer:
BS ≡ RAH(R;M). Simpler, faster.
- 6. Compress R to H(R; M).
Saves space in signatures.
- 7. Use half-size H output.
Saves space in signatures. Subsequent research: extensive theoretical study of security of Schnorr’s system. But patented. ⇒ DSA, ECDSA avoided most improvements. Patent expired in 2008. EdDSA (CHES Duif–Lange–Schw Use elliptic −1-twisted ⇒ very high natural side-channel no exceptional Skip signature Support Use double-size and include Generate as a secret ⇒ Avoid
SLIDE 136 improvements: the exponent: RS. er control. exponents
ARS=H(R). verification. relabeling S: ARS. verification. hashes: . collisions.
- 5. Eliminate inversions for signer:
BS ≡ RAH(R;M). Simpler, faster.
- 6. Compress R to H(R; M).
Saves space in signatures.
- 7. Use half-size H output.
Saves space in signatures. Subsequent research: extensive theoretical study of security of Schnorr’s system. But patented. ⇒ DSA, ECDSA avoided most improvements. Patent expired in 2008. EdDSA (CHES 2011 Duif–Lange–Schwab Use elliptic curves −1-twisted Edwards” ⇒ very high speed, natural side-channel no exceptional cases. Skip signature comp Support batch verific Use double-size H and include A as input. Generate R deterministically as a secret hash of ⇒ Avoid PlayStation
SLIDE 137 rovements:
: collisions.
- 5. Eliminate inversions for signer:
BS ≡ RAH(R;M). Simpler, faster.
- 6. Compress R to H(R; M).
Saves space in signatures.
- 7. Use half-size H output.
Saves space in signatures. Subsequent research: extensive theoretical study of security of Schnorr’s system. But patented. ⇒ DSA, ECDSA avoided most improvements. Patent expired in 2008. EdDSA (CHES 2011 Bernstein– Duif–Lange–Schwabe–Yang): Use elliptic curves in “complete −1-twisted Edwards” form. ⇒ very high speed, natural side-channel protection, no exceptional cases. Skip signature compression. Support batch verification. Use double-size H output, and include A as input. Generate R deterministically as a secret hash of M. ⇒ Avoid PlayStation disaster.
SLIDE 138
- 5. Eliminate inversions for signer:
BS ≡ RAH(R;M). Simpler, faster.
- 6. Compress R to H(R; M).
Saves space in signatures.
- 7. Use half-size H output.
Saves space in signatures. Subsequent research: extensive theoretical study of security of Schnorr’s system. But patented. ⇒ DSA, ECDSA avoided most improvements. Patent expired in 2008. EdDSA (CHES 2011 Bernstein– Duif–Lange–Schwabe–Yang): Use elliptic curves in “complete −1-twisted Edwards” form. ⇒ very high speed, natural side-channel protection, no exceptional cases. Skip signature compression. Support batch verification. Use double-size H output, and include A as input. Generate R deterministically as a secret hash of M. ⇒ Avoid PlayStation disaster.
SLIDE 139 Eliminate inversions for signer: RAH(R;M). Simpler, faster. Compress R to H(R; M). space in signatures. half-size H output. space in signatures. Subsequent research: extensive retical study of security of rr’s system.
avoided most improvements. expired in 2008. EdDSA (CHES 2011 Bernstein– Duif–Lange–Schwabe–Yang): Use elliptic curves in “complete −1-twisted Edwards” form. ⇒ very high speed, natural side-channel protection, no exceptional cases. Skip signature compression. Support batch verification. Use double-size H output, and include A as input. Generate R deterministically as a secret hash of M. ⇒ Avoid PlayStation disaster. A higher-securit OpenSSL security least secure 2.1 million
Our new security 1.8 million
SLIDE 140 inversions for signer: . to H(R; M). signatures. H output. signatures. research: extensive
stem. DSA, ECDSA improvements. in 2008. EdDSA (CHES 2011 Bernstein– Duif–Lange–Schwabe–Yang): Use elliptic curves in “complete −1-twisted Edwards” form. ⇒ very high speed, natural side-channel protection, no exceptional cases. Skip signature compression. Support batch verification. Use double-size H output, and include A as input. Generate R deterministically as a secret hash of M. ⇒ Avoid PlayStation disaster. A higher-security curve OpenSSL secp160-r1 security level only least secure ECC option: 2.1 million cycles
Our new Curve41417, security level above 1.8 million cycles
SLIDE 141 signer: ).
extensive security of ECDSA rovements. EdDSA (CHES 2011 Bernstein– Duif–Lange–Schwabe–Yang): Use elliptic curves in “complete −1-twisted Edwards” form. ⇒ very high speed, natural side-channel protection, no exceptional cases. Skip signature compression. Support batch verification. Use double-size H output, and include A as input. Generate R deterministically as a secret hash of M. ⇒ Avoid PlayStation disaster. A higher-security curve OpenSSL secp160-r1, security level only 280, least secure ECC option: 2.1 million cycles
Our new Curve41417, security level above 2200: 1.8 million cycles
SLIDE 142 EdDSA (CHES 2011 Bernstein– Duif–Lange–Schwabe–Yang): Use elliptic curves in “complete −1-twisted Edwards” form. ⇒ very high speed, natural side-channel protection, no exceptional cases. Skip signature compression. Support batch verification. Use double-size H output, and include A as input. Generate R deterministically as a secret hash of M. ⇒ Avoid PlayStation disaster. A higher-security curve OpenSSL secp160-r1, security level only 280, least secure ECC option: 2.1 million cycles
Our new Curve41417, security level above 2200: 1.8 million cycles