We present a new and efficient approach to systematic testing of cryptographic software: differential fuzzing. Unlike general purpose software fuzzing such as afl, differential fuzzing doesn't aim to find memory corruption bugs (although they might come as a by-product), but to find logic bugs. Compared to test vectors, differential fuzzing provides greater code coverage. Compared to formal verification, differential fuzzing is easier to apply, both for testers and developers.
We'll release CDF, a tool that implements differential fuzzing for most common cryptographic APIs: RSA encryption and signatures, elliptic-curve cryptography, or any symmetric-key schemes through a unified interface. CDF combines differential fuzzing with a number of unit tests to detect vulnerabilities specific to the cryptographic functions tested. It can also detect timing leaks, thanks to state-of-the-art leakage detection techniques.
CDF is coded in Go, and is trivially portable to various CPU architectures. Unlike other tools, CDF runs its tests in a totally black-box fashion: no source code is needed, you only need an executable file such as a binary program, Python script, or shell script calling a remote service.
We ran CDF on high-profile, widely used crypto software components. CDF discovered issues in a number of libraries including Go's crypto package, OpenSSL, and mbedTLS.
Jean-Philippe (JP) Aumasson is Principal Research Engineer at Kudelski Security. He designed the popular cryptographic functions BLAKE2 and SipHash, initiated the Crypto Coding Standard and the Password Hashing Competition that developed the Argon2 algorithm. He has spoken at Black Hat, DEFCON, RSA, CCC, SyScan, Troopers about applied cryptography, quantum computing, and platform security. He published the 2015 book "The Hash Function BLAKE", and will publish a new book about cryptography in 2017. JP tweets as @veorq
Yolan Romailler is Research Engineer at Kudelski Security since 2017, specialized in cryptography vulnerability research. Yolan has a background in mathematics, which he studied at EPFL, and he earned a master in computer sciences and information security from the HES-SO, Switzerland. The topic of his masters thesis was automated testing of cryptographic software. He tweets as @anomalroil.