Learn how the good guys implement cryptography and how the bad guys exploit it.
In Hacking Cryptography you’ll find unique guidance for creating strong cryptography that can withstand attempts to exploit it including:
DUAL_EC_DRBG random number generator using Go’s elliptic curve library
Exploiting the RC4 stream cipher, as used in WEP
Block ciphers for padding oracle attacks and manipulation of initialization-vectors
Exploiting hash functions by using extension and rainbow table attacks
Implementing RSA key generation using the Miller-Rabin primality test and exploiting it using the Weiner attack
Exploiting PKCS1.5 padding by using Bleichenbacher's chosen-ciphertext attack
Implementing Diffie-Hellman Key Exchange and breaking it using a MITM parameter injection attack
Theoretically strong cryptography often becomes vulnerable to exploitation as soon as it’s built into real applications and networks. Hacking Cryptography details dozens of practical cryptographic implementations and then breaks down the flaws that adversaries use to exploit them. You’ll learn just what it takes to write cryptographically secure code, build an intuition for spotting potential vulnerabilities, and master techniques to avoid the pitfalls that leave your systems at risk.
about the technology
Everything we do in the digital world is protected by cryptography. It is the final and most reliable defense of our data, and it is often impossible to break in its pure mathematical form. Unfortunately, life is different outside the lab. Implementing cryptography in code and hardware is never perfect, and any crack is an invitation for a would-be attacker’s exploitation.
about the book
Hacking Cryptography builds your understanding of cryptography by revealing the “lockpicks” that bad actors use to exploit security protocols, firewalls, and other cryptography-based protection schemes. The book dives deep into each cryptographic exploit, explaining complex concepts in detail through real-world analogies, code annotations, and pseudo-code. You’ll explore historical examples where popular cryptography has failed, such as the breaking of the WEP protocol, and see what impact those failures have had on modern cryptography.
about the reader
For software and security engineers. No advanced mathematical knowledge required. Examples in Go.
about the authors
Kamran Khan is a software engineer with more than a decade of experience in the security industry. He currently works as a Software Engineering Architect at Salesforce, and his previous roles have included Google and Microsoft. He has worked in a variety of areas related to security engineering, including large-scale distributed services, embedded devices intended for multi-factor authentication, and cryptographically verifiable elections.
Bill Cox is a software engineer with nearly forty years of experience in securing hardware and software. He conducts the crypto-writing workshop at Google and loves teaching engineers the fundamentals of writing secure code.