Kurs: Kryptoanaliza stosowana

Język wykładowy Polski
Semestr Zimowy
Status W ofercie
Opiekun Tomasz Wierzbicki
Liczba godzin 30 (wyk.) 30 (prac.)
Rodzaj K2 - kurs zaawansowany
ECTS 6
Polecany dla I roku No
Egzamin No

Opis przedmiotu:

W dziedzinie bezpieczeństwa komputerowego bardzo ceni się demonstrowanie podatności systemów poprzez przeprowadzenie udanego ataku w praktyce. Co prawda do zdyskwalifikowania algorytmu kryptograficznego zwykle wystarczy teoretyczne opracowanie ataku, którego ze względu na złożoność nie da się przeprowadzić w praktyce, ale ze względu na prawo Moore'a i rozwój kryptoanalizy ataki na starsze algorytmy z czasem stają się możliwe do wykonania nawet na przeciętnym komputerze. Zajęcia są przeznaczone dla osób, które zamierzają wykorzystywać kryptografię we własnych programach. Celem zajęć jest nauka poprawnego — tj. pozbawionego podatności — implementowania kryptografii poprzez badanie, co może pójść źle, tj. opracowywanie i wykonywanie ataków na implementacje posiadające takie podatności. Zajęcia będą polegać na wykonywaniu w praktyce ataków na algorytmy kryptograficzne, np. znalezienie kolizji w MD5 i wykorzystanie jej do przygotowania fałszywego certyfikatu SSL itp. Głownym efektem nauczania jest wpojenie uczestnikom zasady YANAC. ### Tematyka - Kryptoanaliza szyfrów klasycznych. Analiza częstościowa. Szyfry podstawieniowe, Vigenère’a, _one-time pad_. - Szyfry blokowe. Kryptoanaliza różnicowa i liniowa. DES, uproszczony AES. - Szyfry strumieniowe. Kryptoanaliza LFSR. Podatności RC4, A3/1 i A3/2, KASUMI. - Tryby łączenia bloków i ich podatności. Plastyczność szyfrów. _Watermarking attack_. - Kolizje funkcji haszujących. Ataki na MD5 i SHA-1. - Praktyczne ataki na klucze i certyfikaty. Evil-32 itp. - RSA. Proste ataki na podręcznikowy RSA. Faktoryzacja metodą Fermata. Atak z użyciem ułamków łańcuchowych. - _Padding_ w RSA. Atak Bleichenbachera. - Krzywe eliptyczne w kryptografii. - TLS, jego rozwój i podatności. Przegląd ataków. - PKI. - Protokoły i narzędzia. OpenPGP, OpenSSH, OpenVPN. - Tokeny kryptograficzne, TPM. - Szyfrowanie dysków. - Hasła i ich łamanie. Hashcat i John the Ripper. - Szyfrowanie i jego podatności w systemach radiowych (m.in. GSM, UMTS, LTE, TETRA, DMR itp.) ### Wymagania - W większości zadań programistycznych wykorzystuje się język Python. Nieliczne zadania wymagają programowania w języku C. - Niezbędna wiedza teoretyczna zostanie przedstawiona na wykładzie, choć zakłada się wstępną wiedzę uczestników na temat kryptografii. - Zajęcia w ramach pracowni odbywają się w sali ćwiczeniowej wyposażonej w rzutnik. Uczestnicy w trakcie zajęć używają własnych komputerów. ### Literatura 1. Mark Stamp, Richard M. Low, _Applied cryptanalysis_, Wiley, 2007. 2. Seth James Nielson, Christopher K. Monson, _Practical Cryptography in Python. Learning Correct Cryptography by Example_, Apress 2019. 3. Shannon W. Bray, _Implementing Cryptography Using Python®_, Wiley 2020.