Problems related to computer security. Algorithms written in Python. Follow the Tutorial
-
RSA: RSA stands for Rivest-Shamir-Adleman. Is a widely used public-key cryptosystem "based on the practical difficulty of factoring the product of two large prime numbers" (RSA cryptosystem)
-
PublicKey-Crypto:
-
Hashing: A hash function maps data of arbitrary size to data of fixed size. An ideal hash function maps randomly, avoid colissions and is impossible to invert.
-
Symmetric-Crypto:
-
Classical-Crypto:
-
Passwords:
-
AES:
-
Tutorial:
-
Bitcoin:
-
PGP: PGP stands for Pretty Good Privacy. Is a program used to facilitate encrypt and decrypt your mail. PGP "has proven itself quite capable of resisting even the most sophisticated forms of analysis" (PGP faqs)
-
ECC:
-
Factoring:
-
OpenSSL:
-
PRNG:
-
Hello PGP Use PGP programatically. Recover the message encrypted with a single English word.
-
Hello Bitcoin Do you know how bitcoin addresses are constructed?
-
Hello OpenSSL Can you read and use an OpenSSL RSA key?
-
AES-CTR with Nonce Reuse Can you exploit a reused nonce?
-
Affine Cipher Can you brute force this classical cipher?
-
Double Strength Affine A slight security upgrade, is it enought?
-
Ps and Qs RSA keys generated with one critical weakness
-
Insufficient Key Size Are you running on all 8 cores? This small key is factorable on a PC with an efficient implementation
-
Elliptic Curve Private Key Recovery Given the public parameters of an elliptic curve, recover the poorly chosen private key
-
Håstad's Broadcast Attack RSA with a small exponent is fast to compute but it has a serious weakness
-
Monoalphabetic Cipher Monoalphabetic ciphers leak information. Can you recover it?
-
Playfair This bigram cipher is a bit trickier...
-
Factoring RSA With CRT Optimization Recover a RSA private key when an optimization goes wrong
-
Rainbow Table Hash Chain Can you use a rainbow table to recover a password?
-
ECDSA Nonce Recovery Nonce reuse leading to private key recovery, this time with elliptic curves
-
Intro to Hashing Hashing is a vital concept in cryptography
-
Intro to PGP Can you use PGP programatically?
-
Intro to RSA Learn the basics of a common public key cryptosystem
-
CBC Padding Attack CBC is one of the best modes of operation for block ciphers, but even leaking a tiny amount of information is enough to completely undermine its security
-
CCA on Textbook RSA Turns out padding is important
-
Fast Hashing Passwords Cryptographic hash functions shouldn't be used to hash passwords directly
-
Salt Alone Won't Save You Salting password hashes is important, but not enough on it's own
-
Cut and Paste Attack On AES-ECB Create a valid ciphertext without knowledge of the key using some copypaste
-
Insecure PRNG Using a PRNG that isn't proven to be cryptographically secure is a recipe for disaster
-
Bad Entropy It's easy to generate bad symmetric keys
-
Caesar Should probably stick to the salad
-
Bleichenbacher's CCA2 on RSA 14
-
CRIMEs against TLS 20
-
CBC Padding Attack 22
-
Breaking PDF Passwords 29
-
Backdoored PRNG 31
-
Vigenère 33
-
Rail Fence 34
-
Vigenère + Rail Fence 35
-
Not So Safe Primes 37