Laboratorium podstaw kryptografii

Regulamin laboratorium

  1. Podstawą zaliczenia laboratorium jest wykonanie w zespole laboratoryjnym wszystkich trzech zadań.
  2. Przez zespół laboratoryjny rozumie się tu grupę złożoną z czterech studentów. 
  3. Wykonanie ćwiczenia obejmuje trzy aspekty. Pierwszy polega na napisaniu programu własnego autorstwa zgodnie z postawionym w ramach ćwiczenia zadaniem do zrealizowania, a następnie na zaprezentowaniu jego działania. Drugi stanowi odpowiedź ze znajomości zasad funkcjonowania tego programu, jego szczegółów implementacyjnych oraz powiązanych zagadnień teoretycznych. O formie odpowiedzi - ustnej lub pisemnej - decyduje prowadzący. Trzeci polega na opracowaniu sprawozdania zawierającego zasady działania algorytmu oraz programu.
  4. Programy należy oddawać do oceny w określonych w ramach ćwiczeń terminach, które traktowane są jako terminy podstawowe. Oddanie programu do oceny w odpowiadającym ćwiczeniu terminie podstawowym lub terminie wcześniejszym uprawnia do uzyskania, jako maksymalnej, oceny bardzo dobrej. Przekroczenie terminu podstawowego skutkuje koniecznością oddania programu do oceny w jednym z terminów poprawkowych. Pierwszy termin poprawkowy przypada na kolejnych zajęciach po terminie podstawowym, przy czym ocena maksymalna ulega tu obniżeniu o jeden stopień, natomiast drugi termin poprawkowy przypada na dwa zajęcia po terminie podstawowym, a ocena maksymalna ulega tu obniżeniu o kolejny stopień. Przekroczenie drugiego terminu poprawkowego pociąga za sobą niezaliczenie ćwiczenia, a tym samym całego laboratorium.
  5. Istnieje możliwość zaliczania ćwiczeń w innej niż podana kolejności. Terminem podstawowym jest jednak w takim przypadku zawsze termin podstawowy odpowiadający ćwiczeniu, które powinno być zaliczane zgodnie z normalną kolejnością.
  6. Terminowo zaliczenie wszystkich ćwiczeń powinno odbyć się w trakcie pierwszych sześciu zajęć włącznie spośród wszystkich ośmiu zajęć w semestrze. Ostatnie dwa zajęcia stanowią terminy poprawkowe dla ostatniego ćwiczenia. Możliwość zaliczenia całego laboratorium upływa ostatecznie na ostatnich zajęciach w semestrze. Zaliczanie laboratorium podczas sesji egzaminacyjnej i przerwy międzysemestralnej nie jest przewidziane.
  7. Programy muszą być napisane samodzielnie i podlegać warunkom rozpowszechniania i licencji GNU - General Public License. Jeżeli autorzy zastrzegą inną formę rozpowszechniania lub licencjonowania swojego programu, nie będzie on oceniany. Ponadto kod programu powinien zawierać na początku odpowiednio uzupełniony nagłówek z informacją o autorach, jak również powinien być zaopatrzony w niezbędną ilość komentarzy objaśniających implementację poszczególnych etapów zastosowanego algorytmu.
  8. Programy muszą działać poprawnie i bezbłędnie oraz obowiązkowo spełniać wszystkie wymagania przekazane ustnie przez prowadzącego w trakcie zajęć. Niespełnienie tego kryterium skutkować będzie albo koniecznością dokonania odpowiednich poprawek, albo adekwatnym obniżeniem oceny za ćwiczenie. W uzasadnionych przypadkach prowadzący może zmniejszyć wymagania w odniesieniu do konkretnych zespołów.
  9. Oddanie do oceny programu stanowiącego plagiat karane będzie niezaliczeniem całego laboratorium.

Terminy

     1 zadanie – 4 spotkanie
     2 zadanie – 5 spotkanie
     3 zadanie – 6 spotkanie

Zadania

Zestaw I

  1. Napisać program szyfrujący/deszyfrujący dane wprowadzone przez użytkownika lub z pliku wykorzystując algorytm DES.
  2. Napisać program szyfrujący/deszyfrujący dane wprowadzone przez użytkownika lub z pliku wykorzystując algorytm RSA.
  3. Napisać program tworzący podpis cyfrowy (weryfikujący podpis cyfrowy) danych wprowadzonych przez użytkownika lub z pliku przy użyciu algorytmu Schnorra.

Zestaw II

  1. Napisać program szyfrujący/deszyfrujący dane wprowadzone przez użytkownika lub z pliku wykorzystując algorytm AES.
  2. Napisać program szyfrujący/deszyfrujący dane wprowadzone przez użytkownika lub z pliku wykorzystując algorytm ElGamala.
  3. Napisać program tworzący podpis cyfrowy (weryfikujący podpis cyfrowy) danych wprowadzonych przez użytkownika lub z pliku przy użyciu algorytmu DSA.

Zestaw III

  1. Napisać program szyfrujący/deszyfrujący dane wprowadzone przez użytkownika lub z pliku wykorzystując algorytm One-time pad.
  2. Napisać program szyfrujący/deszyfrujący dane wprowadzone przez użytkownika lub z pliku wykorzystując algorytm Rabina.
  3. Napisać program tworzący podpis cyfrowy (weryfikujący podpis cyfrowy) danych wprowadzonych przez użytkownika lub z pliku przy użyciu algorytmu ElGamala.

Zestaw IV

  1. Napisać program szyfrujący/deszyfrujący dane wprowadzone przez użytkownika lub z pliku wykorzystując algorytm DESX.
  2. Napisać program szyfrujący/deszyfrujący dane wprowadzone przez użytkownika lub z pliku wykorzystując algorytm Plecakowy.
  3. Napisać program tworzący ślepy podpis cyfrowy (weryfikujący podpis cyfrowy) danych wprowadzonych przez użytkownika lub z pliku przy użyciu algorytmu RSA.

Zestaw V

  1. Napisać program szyfrujący/deszyfrujący dane wprowadzone przez użytkownika lub z pliku wykorzystując algorytm 3DES.
  2. Napisać program szyfrujący/deszyfrujący dane wprowadzone przez użytkownika lub z pliku za pomocą szyfru strumieniowego na podstawie generatora Blum-Micali.
  3. Napisać program tworzący podpis cyfrowy (weryfikujący podpis cyfrowy) danych wprowadzonych przez użytkownika lub z pliku przy użyciu algorytmu DSA.

Literatura

Wiadomości wstępne i krótki przegląd zagadnień dotyczących kryptologii

  1. Kutyłowski M.: Strothmann W.B., Kryptografia – teoria i praktyka zabezpieczania systemów komputerowych, Oficyna Wydawnicza Read Me, Warszawa 1999.
  2. Karbowski M.: Podstawy kryptografii, Helion, Gliwice 2008.

Matematyczne aspekty kryptografii i kryptoanalizy, złożoność obliczeniowa

  1. Koblitz N.: Algebraiczne aspekty kryptografii, Wydawnictwa Naukowo-Techniczne, Warszawa 2000.
  2. Koblitz N.: Wykład z teorii liczb i kryptografii, Wydawnictwa Naukowo-Techniczne, Warszawa 2006.

Szczegółowe opisy większości algorytmów kryptograficznych, wskazówki implementacyjne i kody źródłowe

  1. Schneier B.: Kryptografia dla praktyków. Protokoły, algorytmy i programy źródłowe w języku C, Wydawnictwa Naukowo-Techniczne, Warszawa 2002.
  2. Menezes A., van Oorschot P., Vanstone S.: Handbook of Applied Cryptography, CRC Press, Boca Raton 1997.

Sieciowe aspekty kryptografii

  1. Stokłosa J. (red.): Ochrona danych i zabezpieczenia w systemach teleinformatycznych, Wydawnictwo Politechniki Poznańskiej, Poznań 2003.
  2. Wang J., Computer Network Security. Theory and Practice, Higher Education Press, Pekin oraz Springer-Verlag, Berlin Heidelberg 2009.

Zagadnienia dotyczące kryptografii asymetrycznej i podpisu elektronicznego oraz PKI

  1. Dąbrowski W., Kowalczuk P., Podpis elektroniczny, Wydawnictwo Informatyczne Mikom, Warszawa 2003.

Socjotechnika

  1. Mitnick K., Sztuka podstępu, Helion, Gliwice 2003.