Aes 256 Gcm
AES 256 GCM
Symmetric-key algorithm: same / transformable keys are used to both encrypt and decrypt by the sender and the receiver
Block Cipher: a deterministic algorithm that operates on a fixed-length of bits called blocks
Counter Mode:
- The key and the IV (nonce) appended with a counter increasing from 0 to N to form a key stream of blocks \(E_K(Nonce + counter_0),...,E_K(Nonce + counter_N)\)
- The output of the encrypted ith nonce + counter will be xored with the plain text block \(i\) to create cipher block \(i\)
- IV is used to make sure the attacker will not be able to guess the counters
- Does not require padding as the last partial block will be XORed with the last partial plaintext
- Any partial block from the previous TCP segment will be used
- Streams of keystream blocks and plaintext (TCP byte stream)
GCM:
- Similar to counter mode but the cipher text (XOR of encrypted counted with plain text) will be used as coefficients of polynomial for auth tag (ie \(AD * H^N + C_1 * H^{N-1} + C_2 * H^{N-2}...\))
AES:
- 256 bit blocks
- Steps:
- Key Expansion: AES key schedule:
- AES 256 requires 30 round of expansions from the cipher key
- Initial round key addition: each byte of the state (plain text) is XORed with the round key
- 13 Rounds of:
- SubBytes: each byte is replaced with another from a static lookup table
- Shift row steps:bytes are cyclically shifted
- MixColumns:
- AddRoundKey
- Final Round:
- SubBytes
- ShiftRows
- AddRoundKey
- Key Expansion: AES key schedule: