Encryption keywords
- Stream cypher
- Block cypher
- Symmetric
- Asymmetric
- Hash function
Block cyphers
- DES - 56 bit key
- Triple DES (why not double DES?)
- AES - 128bit+ keys
Goals of public-key/private-key cryptography
- Encryption (a third-party can't intercept communication)
- Verifiability (I know that you're the person who's saying what you're saying)
- Avoiding deniability (If you say something you can't later deny saying it)
- Avoiding tampering (a third-party can't modify messages)
Public-key cryptography: Core concepts
- Public key & private key
- One-way functions
- Arithmetic in groups
Group properties:
- Associativity - (a + b) + c = a + (b + c)
- Commutativity - a + b = b + a
- Identity element - 0 + a = a
- Inverses - for every a, there's a b such that a + b = 0
Groups - a simple example (Z_12, + )
Take p be some prime number, then (1, 2, .... , p - 1) is a group under multiplication modulo p
For encryption, we're particularly interested in exponentiation (repeatedly multiplying the same number)
Try p = 7:
a | a^2 | a^3 | a^4 | a^5 | a^6 | a^7 |
1 | 1 | 1 | 1 | 1 | 1 | 1 |
2 | 4 | 1 | 2 | 4 | 1 | 2 |
3 | 2 | 6 | 4 | 5 | 1 | 3 |
4 | 2 | 1 | 4 | 2 | 1 | 1 |
5 | 4 | 6 | 2 | 3 | 1 | 5 |
6 | 1 | 6 | 1 | 6 | 1 | 6 |
Diffie-Hellmann Key Exchange (DHKE)
- Choose a large prime p and an element a which is a primitive element
- Person one chooses a secret k and computes a^k, and shares that with person two
- Person two chooses a secret key j and computes a^j, and shares that with person one
- The shared secret is a^(k*j) = (a^k)^j = (a^j)^k