One-Time Pad

Szyfr Vernama (One-Time Pad) zapewnia idealne bezpieczeństwo.

Więcej np. w [Stinson] s.51

One-Time Pad nie gwarantuje intergralności

Przykład?

Kody Autentykujące

(ang. Authentication codes)

To takie MACi, tylko idealnie bezpieczne

(wiecej np. W [Stinson], s. 305)

Szyfry symetryczne stosowane w praktyce

Szyfry blokowe (DES, AES, IDEA)

Szyfry strumieniowe (RC4, SEAL)

Szyfr blokowy

(jak ustalimy k, to E jest permutacją)

(wiecej np w [GB] s. 51)

Elektroniczna Książka Kodowa

Cipher-block Chaining

Ciper feedback (CFB)

Data Encryption Standard (DES)

Ulepszenie algorytmu Lucifer (IBM, początek lat 70tych).

W jego opracowaniu brała udział NSA

Oficjalny Federal Information Processing Standard (FIPS) w USA od 1976.

Długość klucza: 56

Długość bloku: 64

1992 -- Biham i Shamir: kryptoanaliza różnicowa (differential cryptanalysis). Wymaga 2^47 wybranych wiadomości.

1993 – kryptoanaliza liniowa (wymaga 2^43 znanych wiadmości)

1998 -- Deep Crack łamie DESa w 56 godzin (koszt urządzenia: 250.000 USD)

1999 – FIPS rekomenduje 3DES

Od maja 2002 oficjalnym standardem jest AES

Advanced Encryption Standard (AES)

W 1997 National Institute of Standards and Technology (NIST) ogłosił konkurs na następcę DESa

Wymagania:

(1) klucz wielkości 128, 192 lub 256

(2) blok wielkości 128 bitów

(3) wydajność

Zgłoszeni kandydaci: CAST-256, CRYPTON, DEAL, DFC, E2, FROG, HPC, LOKI97, MAGENTA, MARS, RC6, Rijndael, SAFER+, Serpent, Twofish.

Do drugiej rundy przeszli: MARS, RC6, Rijndael, Serpent i Twofish.

W październiku 2000 ogłoszono, że wygrał Rijndael (autorzy: , Joan Daemen i Vincent Rijmen)

W 2002 "XSL attack" (Nicolas Courtois i Josef Pieprzyk)

Jak działa AES

Przedstawimy opis działania AESa.

Robimy to na podstawie oryginalnego dokumentu zgłaszającego szyfr Rijandel do konkursu NIST

Możlwie długości bloku: 128, 192 or 256.

Możlwie długości klucza: 128, 192 or 256.

http://csrc.nist.gov/CryptoToolkit/aes/rijndael/Rijndael-ammended.pdf

http://csrc.nist.gov/publications/fips/fips197/fips-197.pdf

Podstawy matematyczne

Ciała Galois. Działamy w GF(2^4)

Szybkie mnożenie -- przykład

Wielomiany nad GF(2^4)

Niech:

Mnożenie

Mnożenie - c.d.

Redukujemy modulo

W związku z tym iloczyn a i b to:

Mnożenie - c.d.

Stan i klucz

Liczba rund

Jak wygląda runda

Ostatnia runda:

Jak działa ByteSub

Jak działa S-Box

1. Bierzemy element odwrotny

Jak działa S-Box - c.d.

2. Stosujemy następujące przekształcenie afiniczne:

Jak działa ShiftRow

1. Określamy wartości C1, C2 i C3

Jak działa ShiftRow - cd

Jak działa MixColumn

Traktujemy kolumnę jak wielomian stopnia 3 nad GF(2^4) i mnożymy

przez

Czyli dostajemy:

Jak działa MixColumn - c.d.

MixColumn – operacja odwrotna

Specjalnie wzięliśmy

Bo jest względnie pierwszy z

W związku z tym istnieje d(x) taki, że

Konretnie jest to

Operacja AddRoundKey

Generowanie kluczy wewnętrznych

gdzie:

Wybieranie klucza rundowego

Szyfr odwrotny

2-rundowy AES (przykład)

<===>

CBC-MAC

2005-02-22T15:23:56