[WikiDyd] [TitleIndex] [WordIndex

Cel zajęć

Celem zajęć jest zapoznanie z algorytmami blokowymi algorytmami szyfrowania symetrycznego oraz metodami przekształcania hasła na dobry klucz kryptograficzny.

Wprowadzenie

Tryby pracy szyfrów blokowych. Algorytmy szyfrowania blokowego działają na blokach tekstu jawnego. Powstaje więc problem jak powinien zachowywać się system kryptograficzny w przypadku gdy tekst jest dłuższy niż długość bloku. Kwestią tą zajmują się tryby szyfrowania tj. ECB, CBC, CFB. Biblioteka Crypto udostępnia zmianę trybu zarówno dla algorytmu DES jaki AES.

from Crypto.Cipher import DES,AES
des = DES.new("key12345")
des = DES.new("key12345",DES.MODE_CBC)
encrypted = des.encrypt("secret12")
aes = AES.new("1234567890123456",AES.MODE_CFB)
encrypted = aes.encrypt("test")

Przekształcanie hasła na dobry klucz. Algorytmy szyfrowania mają często ściśle ustalone wymagania na klucz. Nie może być on zbyt długi, ani zbyt krótki, powinien mieć możliwie wysoką entropię. Naturalne hasła wykorzystywane przez człowieka nie mają tych cech. Dlatego warto jest wykorzystywać algorytmy przekształcające hasło w klucz. Opierają się one na wykorzystaniu wielokrotnym wykorzystaniu funkcji jednokierunkowej i losowej soli. Przykładem takiego algorytmu jest PBKDF2.

Entropia w teorii informacji definiuje następujący wzór entropia.png, gdzie p_i jest prawdopodobieństwem i-tego elementu. Jednak przy założeniu płaskiego rozkładu prawdopodobieństwa określenie maksymalnej ilości informacji, która może być przechowana w jednym znaku. Należy wtedy zastosować stosować uproszczony wzór H(S) = log_2(n) (gdzie n jest liczbą znaków w alfabecie). Maksymalna entropia ciągu znaków o długości k, wynosi  k*log_2(n) . Tej metody używamy do ocenienia siły haseł.

Potrzebna wiedza

Podstawy programowania w języku Python. Znajomość algorytmów DES, AES. Zrozumienie znaczenia entropii przy doborze hasła. Znajomość metod przekształcania hasła na klucz.

Dodatkowe informacje

Hasła dla Google: DES, AES, key derivation, entropy

Przykładowe zadania

  1. Napisz algorytm obliczający entropię.
  2. Porównaj entropie tekstu naturalnego z entropia kryptogramu.
  3. Porównaj wynik szyfrowania w trybach ECB i CBC. Jaka jest entropia kryptogramów?
  4. Napisz program szyfrujący pliki przy pomocy algorytmu AES w trybie CBC.
  5. Zaproponuj algorytm tworzenia klucza na podstawie hasła podawanego przez człowieka.
  6. Określ ile znaków [a-z] należy podać, żeby entropia hasła zbliżyła się do 256-bitowego klucza AES.
  7. Napisz program do ataku brutalnej siły na kryptogram przy wykorzystaniu entropii jako uniwersalnego kryterium zakończenia algorytmu.

2015-09-23 06:44