- BitsDeep
- Crypto for Social Good - Class focused on the impact of crypto & privacy on marginalized groups
- Applied Cryptography
- Cracking codes with Python
- Cryptography Engineering
- Serious Cryptography
- The Code Book
- The Codebreakers
- Crypto101
- A Crash Course in Everything Cryptographic
- A Guide to Post-Quantum Cryptography
- Cryptographic Attacks
- Shor's Algorithm
- ADFGVX Cipher - it combines an adapted Polybius Square with Columnar Transposition
- Beaufort Cipher
- Pollux Cipher
- Sarah2 Cipher - Sarah2 is a cipher meant to be implemented by hand with only simple tools.
- VIC Cipher
- Encryption without padding is insecure
- Encryption: SAEP, OAEP+
- Signature: PSS
- Diffie Hellman relies on:
- Discrete log problem
- Computational DH problem
- Decisional DH problem
- Use this setting for public key crypto (Cramer-Shoup) or signatures (Schnorr, DSA). Mostly used for DH though.
- Really for this setting you just need a group G = of prime order q when DDH problem is hard
- Can also get this structure from the group of points of an elliptic curve
- Advantages
- Much smaller parameters
- Much more efficient operations
- Picking parameters is easier and less error-prone
- Modern protocols use
- ECDH for key exchange
- ECDSA, RSA (legacy) for signatures Mod p, every invertible element has order dividing p-1 (with operation multiplication)
- Advantages
- pick primes p, q
- set N = pq
- set e = 65537
- compute d s.t. e * d ≡ 1 mod (p - 1)(q - 1)
f: (Z/NZ)x -> (Z/NZ)x
f: x -> xe mod N
f-1: y -> yd mod N
Factoring: given N, find p and q
RSA problem: given N, e, y, find x s.t.xe = y
KeyGen: pubkey = (N, e), seckey = d
Sign M: σ = [Pack(M)]d mod N, Pack in (Z/NZ)x
Verify: σe ≡ Pack(M) mod N
k <- AE keyspace
c = E Pack(k)e mod N
Decrypt: E Unpack(cd mod N) to get x
- A Graduate Course in Applied Cryptography - Full textbook online
- Dan Boneh - Crypto prof at Stanford, has a lot of good resources (including a textbook!)
- The Amazing King
- An Introduction to Mathematical Cryptography
- Lessons learned and misconceptions regarding encryption and crypto
- An Intensive Introduction to Cryptography
- Practical Crypto - Repository for course materials and slides for Practical Cryptographic Systems, JHU CS 445/645.
- Advanced Crypto Notes - Notes from NYU
- Advanced Topics in Cryptography - MIT OCW course
- Cryptography Notes - Notes from UC Berkeley
- Intro to Cryptography Notes - Notes from NYU
- Intro to Cryptography Notes - Notes from Harvard
- Lecture Notes on Cryptography - Cryptography Notes by Shafi Goldwasser
- Scribed Lecture Notes - Lecture notes from Grad Crypto at University of Maryland
- Lattices in Computer Science - Lattice based cryptography notes from NYU
- Lattice Based Cryptography and Applications - Lattice crypto notes from BIU
- Lattice Based Cryptography and Applications - Lattice crypto notes from BIU
- Advanced Topics in Cryptography: Lattices - notes from MIT
- Lightweight Introduction to Lattices
- An Intensive Introduction to Cryptography
- Does a one time pad expose itself as a one time pad?
- How are repeated IVs used to crack the key?
- Nonce reuse vs IV reuse
- AntiMersenne - Predicting Python's Mersenne twister PRNG for 30c3 CTF, with Python calling Java
- Ciphey - Automatically decode encryptions without a key, decode encodings, and crack hashes
- cribdrag - an interactive crib dragging tool for cryptanalysis on ciphertext generated with reused or predictable stream cipher keys
- Crib Dragging Auto Cracker - The project is to crack crib dragging in an efficient way. It will crib drag 5,000 most common English vocabularies on the cipher text and collect all the words that are partially/entirely recognized as an English word.
- crypto_misc - Paper Implementation, Practice code, Cryptographic some others.
- cryptobin - crypto and puzzle tools
- Crypton - Library consisting of explanation and implementation of all the existing attacks on various Encryption Systems, Digital Signatures, Key Exchange, Authentication methods along with example challenges from CTFs
- Cryptool
- CryptoTools - a suite of cryptographic utilities for convenience that operate entirely on the client side. No calculations take place on the server, nor is any data generated or used here sent to the server.
- Cryptoprograms - Make and decrypt ciphers
- Decodify - It can detect and decode encoded strings, recursively.
- hashID - Identify the different types of hashes used to encrypt data and especially passwords.
- Mersenne Twister Predictor - Predict MT19937 PRNG, from preceding 624 generated numbers. There is a specialization for the "random" of Python standard library.
- Outguess
- RC4-40-brute-office - Guaranteed cracking of M$ Office files using RC4 40-bit encryption
- RC4 Python - A simple encrypt/decrypt Python script using RC4
- Replicated Random
- RSA CTF Tool - RSA attack tool (mainly for ctf) - retreive private key from weak public key and/or uncipher data
- rsa-stream - encrypt/decrypt rsa with streams
- XOR Analyze - Program for cryptanalyzing xor "encryption" with variable key length