Symmetric cryptography secret key technics Flashcards
Secret key technique :
defines the type of schema where encryption and decryption uses the same keys primitives : block cipher permutation keystream mode of operations : encryption schema authentication scheme auth schema hash function
Stream cipher :
uses the keystream: encrypt: keystream is XORed bit by bit with cipher Text decrypt: the key stream is XORed bit by bit with the ciphertext pseudo Code : input : k in K nad n (nonce) output keystream : s in Z2 encrypt : Ci = Mi + Si decrypte : Mi = Ci + Si
Block cipher
input: secret key in K in Z2 , | Z2| = n
and , input block x in Z2,| Z2| = n
output block y= Ek(x) in Z2,| Z2| = n
for each key k , it has an inverse : x= 1 / Ek(y)
DES
DEs is a Feistel network with several rounds
One round forward: Li = Ri−1 Ri = Li−1 ⊕ f(Ri−1 , ki )
One round backward: Ri−1 = Li Li−1 = Ri ⊕ f(Li , ki )
Advantages: E and E −1 share the same structure, subkeys in reverse order; f does not need to be invertible.
DES is not ideal :
for each x : Ek(Ek(x)) = x
semi-weak keys (k1,k2) Ek1(Ek1(x)) = x
complementary property :
Ek(x) = x <==> E-k(-x) = -x that reduces the exhastive search by 1 bit
Double DEs is not good since :
because the attacker can look for matches such that
attack time 2^57 with memory 2^56
GF(2)[x]
GF(2 8 ) is the finite field (Galois Field) of size 28 = 256. Rijndael uses the representation GF(2)[x]/(x 8 + x 4 + x 3 + x + 1).
A byte with arithmetic value s = ∑ 7 n=0 si2 i represents the polynomial s = ∑ 7 n=0 six i in GF(2)[x]. E.g., 0x83 represents x 7 + x + 1.
Addition is like a bitwise XOR operations E.g., (x 7 + x + 1) + (x 6 + x) = (x 7 + x 6 + 1) ⇔ 0x83 ⊕ 0x42 = 0xC1
Multiplication is done modulo x 8 + x 4 + x 3 + x + 1 E.g., x(x 7 + x + 1) = x 8 + x 2 + x = (x 8 + x 2 + x) + (x 8 + x 4 + x 3 + x + 1) = x 4 + x 3 + x 2 + 1
Rijndael-AES
For each round i = 1 to 9 (or 11 or 13): SubBytes(state) ShiftRows(state) MixColumns(state) AddRoundKey(state, Ki) And for the last round: SubBytes(state) ShiftRows(state) AddRoundKey(state, K10 (or 12 or 14)) Output y ← state back in Z128
mix column property:
each column undergoes a specific matrix multiplication
the mix column uses the inverse
perfect secrecy
mean the cipher text reveals nothing about plane text