strongswan/scripts
Martin Willi 39e1ddec2e scripts: Add a tool that tries to guess MAC/ICV values using validation times
This tool shows that it is trivial to re-construct the value memcmp() compares
against by just measuring the time the non-time-constant memcmp() requires to
fail.

It also shows that even when running without any network latencies it gets
very difficult to reconstruct MAC/ICV values, as the time variances due to the
crypto routines are large enough that it gets difficult to measure the time
that memcmp() actually requires after computing the MAC.

However, the faster/time constant an algorithm is, the more likely is a
successful attack. When using AES-NI, it is possible to reconstruct (parts of)
a valid MAC with this tool, for example with AES-GCM.

While this is all theoretical, and way more difficult to exploit with network
jitter, it nonetheless shows that we should replace any use of memcmp/memeq()
with a constant-time alternative in all sensitive places.
2015-04-14 11:51:54 +02:00
..
.gitignore scripts: Add a tool that tries to guess MAC/ICV values using validation times 2015-04-14 11:51:54 +02:00
Makefile.am scripts: Add a tool that tries to guess MAC/ICV values using validation times 2015-04-14 11:51:54 +02:00
aes-test.c aead: Support custom AEAD salt sizes 2014-03-31 15:56:12 +02:00
bin2array.c Added GPL header to scripts 2012-06-29 16:51:29 +02:00
bin2sql.c Added GPL header to scripts 2012-06-29 16:51:29 +02:00
crypt_burn.c aead: Support custom AEAD salt sizes 2014-03-31 15:56:12 +02:00
dh_speed.c diffie-hellman: Add a bool return value to set_other_public_value() 2015-03-23 17:54:03 +01:00
dh_speed.sh Added support for DH groups 22, 23 and 24, patch contributed by Joy Latten 2010-04-19 14:41:20 +02:00
dnssec.c lib: Add global config namespace 2014-02-12 14:34:31 +01:00
fetch.c lib: Add global config namespace 2014-02-12 14:34:31 +01:00
hash_burn.c enum: Return boolean result for enum_from_name() lookup 2014-05-16 15:42:07 +02:00
id2sql.c Added GPL header to scripts 2012-06-29 16:51:29 +02:00
key2keyid.c lib: Add global config namespace 2014-02-12 14:34:31 +01:00
keyid2sql.c lib: Add global config namespace 2014-02-12 14:34:31 +01:00
linecount moved various scripts in scripts/ dir 2006-10-18 11:40:53 +00:00
malloc_speed.c lib: Add global config namespace 2014-02-12 14:34:31 +01:00
oid2der.c Added GPL header to scripts 2012-06-29 16:51:29 +02:00
pubkey_speed.c lib: Add global config namespace 2014-02-12 14:34:31 +01:00
pubkey_speed.sh pubkey_speed: Add missing plugins 2013-09-04 10:01:46 +02:00
settings-test.c scripts: Add test script for settings_t 2014-05-15 12:03:07 +02:00
test.sh travis: Install pip to install pytest in "all" tests 2015-03-18 14:29:45 +01:00
thread_analysis.c removed trailing spaces ([[:space:]]+$) 2009-09-04 13:46:09 +02:00
timeattack.c scripts: Add a tool that tries to guess MAC/ICV values using validation times 2015-04-14 11:51:54 +02:00
tls_test.c tls: Support a maximum TLS version to negotiate using TLS socket abstraction 2014-04-01 14:28:55 +02:00