Kryptografické systémy

Kryptografické systémy (NMMB361)

Organizace

Cvičení se bude konat každý druhý týden ve čtvrtek od 19:00 v učebně K3.
Pokud mě budete chtít kontaktovat, pak nejlépe při/po cvičení nebo e-mailem na adrese Adolf.[prijmeni]@matfyz.cz. Bude-li zájem, pak během semestru v týdnech, kdy se cvičení nekoná, budou probíhat "programovací" konzultace, kde budu vysvětlovat základy programovacího jazyka Python, nejspíše v rozsahu potřebném pro řešení programovacích úloh na zápočet.
Stránky přednášky jsou zde.

Zápočet

Obyčejně každé cvičení bude zveřejněna sada úloh, jejímž vyřešením bude možné získat kolem 14 bodů. Termín odevzdání bude zpravidla dva týdny. Při pozdním odevzdání budou úlohy ohodnoceny polovičním počtem bodů. Na zápočet budete potřebovat alespoň 60 bodů a celkem bude možné nasbírat až 100 bodů. Celkový počet bodů se promítne i do výsledné známky zkoušky.

Dění na cvičení

1. cvičení (22. 2.)

    Šifra, historické šifry (Skytalé, Caesarova, Vigenerova, Vernamova, afinní), nástin útoků na tyto šifry

2. cvičení (8. 3.)

    Opakování útoků, formalizace typů útoků, Hillova šifra

3. cvičení (23. 3.)

    Entropie, Huffmanovo kódování, SPN, DES (základní vlastnosti)

4. cvičení (5. 4.)

    Inverz v GF(256), AES, operační módy blokových šifer (ECB, CBC, CFB, CFB-l, OFB, CTR)

5. cvičení (19. 4.)

    LFSR: reprezentace (Galois &lq;-&gq; Fibonnaci, polynom zpětné vazby, linearita LFSR, Geffe); špatný pokus o komentář/vtip k 01 paddingu a Vaudenayovu útoku na CBC

6. cvičení (3. 5.)

    Hash, KDF, MAC, RSA

7. cvičení (17. 5.)

    RSA (šifrování/podpis, Bleichenbacher nástin, slepý podpis), D-H (copánkový D-H idea, ECDH idea, MitM), ElGamal (triky s noncí), DSA, Terena CA, generování certifikátu

Domácí úkoly

Písemné úlohy odevzdávejte na cvičení nebo emailem, zdrojové kódy (ve vašem oblíbeném programovacím jazyku) pouze emailem. Elektronickou cestou nelze posílat naskenovaný rukopis. Postup řešení (v případě zdrojového kódu stručné komentáře klíčových kusů kódu) jsou nezbytnou součástí řešení. Pokud je za úlohu (x + y bodů), pak první hodnota odpovídá "početní" části, druhá odpovídá části programovací.
Výsledky domácích úkolů

Literatura

  • Cryptography Engineering: Design Principles and Practical Applications (Ferguson, Schneier, Kohno)