New: implementing hf mf hardnested

This implements the attack described in
	Carlo Meijer, Roel Verdult, "Ciphertext-only Cryptanalysis on Hardened
	Mifare Classic Cards" in Proceedings of the 22nd ACM SIGSAC Conference on
	Computer and Communications Security, 2015
It uses precomputed tables for many bitflip properties (not only two as in the paper)
and is therefore quite efficient. To prevent failing it doesn't do
differential analysis with several nonce bytes' Sum(a8) properties (each of them
may be wrongly guessed) - instead it concentrates on one nonce byte and tries all
Sum(a8) property guesses sequentially (ordered by probability). The brute force phase
makes use of aczid's bit sliced brute forcer (https://github.com/aczid/crypto1_bs).
Includes runtime CPU-detection to leverage modern (and old) SIMD instructions
with a single executable.
This commit is contained in:
pwpiwi 2017-05-29 10:56:37 +02:00
parent a5eb7820a5
commit c48c4d7856
370 changed files with 687839 additions and 172 deletions

View file

@ -656,3 +656,19 @@ uint64_t msclock() {
return (t.tv_sec * 1000 + t.tv_nsec / 1000000);
#endif
}
// determine number of logical CPU cores (use for multithreaded functions)
extern int num_CPUs(void)
{
#if defined(_WIN32)
#include <sysinfoapi.h>
SYSTEM_INFO sysinfo;
GetSystemInfo(&sysinfo);
return sysinfo.dwNumberOfProcessors;
#elif defined(__linux__) || defined(__APPLE__)
#include <unistd.h>
return sysconf(_SC_NPROCESSORS_ONLN);
#else
return 1;
#endif
}