- Nazwa przedmiotu:
- Algorytmy i bezpieczeństwo danych
- Koordynator przedmiotu:
- dr hab. inż. Tomasz Adamski, prof. PW
- Status przedmiotu:
- Fakultatywny ograniczonego wyboru
- Poziom kształcenia:
- Studia I stopnia
- Program:
- Elektronika i Telekomunikacja
- Grupa przedmiotów:
- przedmioty specjalności
- Kod przedmiotu:
- ABDZ
- Semestr nominalny:
- 7 / rok ak. 2020/2021
- Liczba punktów ECTS:
- 6
- Liczba godzin pracy studenta związanych z osiągnięciem efektów uczenia się:
- 30g -wykład + 30g praca własna w domu
15g -ćwiczenia  + 15g praca w domu
15g - projekt + 15g praca w domu
Praca samodzielna studenta (praca w domu i w bibliotece uzupełniona kontaktami z prowadzącym przedmiot przez Internet) jest głównym
sposobem opanowywania materiału przez słuchacza wykładu. Bardzo istotnym elementem wykładu jest duża
ilość zadań i miniprojektów do samodzielnego rozwiązania. Miniprojekty mogą zostać rozszerzone do tzw.
Projektu Zespołowego a ten z kolei do pracy dyplomowej.
Sumaryczna liczba godzin pracy studenta: 120
- Liczba punktów ECTS na zajęciach wymagających bezpośredniego udziału nauczycieli akademickich:
- 1
- Język prowadzenia zajęć:
- polski
- Liczba punktów ECTS, którą student uzyskuje w ramach zajęć o charakterze praktycznym:
- 3
- Formy zajęć i ich wymiar w semestrze:
- 
            
                - Wykład30h
- Ćwiczenia15h
- Laboratorium0h
- Projekt15h
- Lekcje komputerowe0h
 
- Wymagania wstępne:
- Matematyka (z elementarnym wstępem do algebry)
- Limit liczby studentów:
- -
- Cel przedmiotu:
- 1. Poznanie podstawowych algorytmów komputerowych  (chodzi głównie o wybrane algorytmy nienumeryczne takie jak wyszukiwanie wzorca oraz algorytmy teorioliczbowe takie jak algorytm Montgomery'ego czy Baretta stosowane w kryptografii). 
2. Poznanie zasad projektowania, analizy i oceny algorytmów a w szczególności ocenę złożoności obliczeniowej algorytmów 
3. Poznanie podstaw teoretycznych kryptografii i ochrony danych 
4. Poznanie najważniejszych algorytmów, protokołów i metod stosowanych w systemach komputerowych i sieciach komputerowych do ochrony danych 
- Treści kształcenia:
- Część 1 – Algorytmy komputerowe 
1. Wprowadzenie 
a. Algorytm, analiza i projektowanie algorytmów 
b. Złożoność obliczeniowa algorytmu – podstawowe pojęcia 
c. Sposoby opisu algorytmów – język publikacyjny 
d. Zapisy asymptotyczne 
e. Elementarne struktury danych 
f. Rekurencja i metody projektowania algorytmów 
g. Równania rekurencyjne 
h. Algorytmy probabilistyczne 
2. Złożoność obliczeniowa i NP zupełność 
a. Teoria złożoności obliczeniowej 
b. Problemy (problemy obliczeniowe) i problemy decyzyjne 
c. Algorytmy z czasem wielomianowym 
d. Redukowalność i problemy NP –zupełne oraz przykłady problemów NP-zupełnych 
e. Klasy złożoności algorytmów probabilistycznych 
3. Algorytmy sortowania 
a. Problem sortowania 
b. Sortowanie bąbelkowe (bubblesort) 
c. Zmodyfikowane sortowanie bąbelkowe (modified bubblesort) 
d. Insertionsort – sortowanie przez wstawianie 
e. Sortowanie przez selekcję (selectionsort) 
f. Algorytm sortowania „mergesort” (algorytm sortowania przez scalanie) 
g. Algorytmy sortowania w czasie liniowym 
h. Sortowanie przez zliczanie – countsort 
i. Sortowanie pozycyjne – algorytm radixsort 
j. Sortowanie kubełkowe - algorytm bucketsort 
k. Sortowanie przez kopcowanie (ang. heapsort) 
l. Sortowanie szybkie – quicksort 
m. Szybkie algorytmy wyznaczania k-tego elementu co do wartości w ciągu. 
n. Sortowanie zewnętrzne 
o. Sieci sortujące 
4. Algorytmy tekstowe 
a. Problem wyszukiwania wzorca 
b. Algorytm naiwny wyszukiwania wzorca 
c. Algorytm automatowy 
d. Algorytm Rabina-Karpa 
e. Algorytm KMP 
5. Algorytmy teorioliczbowe
a. Rozszerzony binarny algorytm Euklidesa
b. Szybkie algorytmy podnoszenia do potęgi modulo n
c. Algorytmy obliczania pierwiastka kwadratowego mod n
d.Algorytm Montgomery’ego
e.Algorytm Barretta
f. Algorytmy testowania pierwszości
Część 2 – Algorytmy i bezpieczeństwo danych 
1. Kryptografia - pojęcia podstawowe 
a. Cele i środki kryptografii 
b. System kryptograficzny 
c. Rodzaje szyfrów (szyfry z kluczem publicznym i z kluczem prywatnym, szyfry blokowe)
d. Szyfry klasyczne (szyfry podstawieniowe monoalfabetowe i polialfabetowe, szyfry przedstawieniowe, szyfry idealne)
2. Podstawy matematyczne kryptografii 
a. Grupy i logarytmy dyskretne 
b. Pierścienie i ciała 
c. Podzielność, kongruencje i chińskie twierdzenie o resztach, twierdzenie Eulera
d. Liczby pierwsze i testowanie pierwszości 
3. Systemy kryptograficzne z kluczem publicznym 
a. Wprowadzenie 
b. System kryptograficzny RSA 
c. System kryptograficzny Rabina 
d. System kryptograficzny ElGamala 
e. Szyfry plecakowe 
f. System kryptograficzny Massey’a–Omury 
4. Systemy kryptograficzne z kluczem prywatnym 
a.Szyfry Feistala
b. DES (Data Encryption Standard) i rozszerzenia, modyfikacje DES’a (DESX, 3DES)
c. Szyfr AES (Advanced Encryption Standard) 
d. Szyfry IDEA, Serpent, Camelia
5. Funkcje skrótu 
a. Podstawowe definicje (funkcja jednokierunkowa, funcje słabo i silnie bezkonfliktowe)
b. Funkcja hashująca Chaum’a –van Heijst’a –Pfitzmanna 
c. Funkcja haszująca MD 5, Whirlpool, SHA-256, SHA -3
d. Schematy ogólne tworzenia funkcji skrótu 
e. Paradoks dnia urodzin i ataki na funkcje skrótu 
6. Tryby wykorzystania szyfrów blokowych i szyfry strumieniowe 
a. Tryb szyfrowania ECB i CBC 
b. Tryb szyfrowania OFB 
c. Szyfry strumieniowe 
7. Uwierzytelnianie dokumentu - podpisy cyfrowe 
a. Podpisy cyfrowe – uwagi wstępne, typy podpisów cyfrowych
b. Algorytm podpisów cyfrowych RSA 
c. Algorytm podpisów cyfrowych ElGamala 
d. Algorytm podpisów cyfrowych DSS 
e. Algorytm podpisów Rueppela-Nyberga
e. Algorytm podpisów ślepych 
8. Uwierzytelnianie strony 
a. Metoda haseł, metoda haseł z soleniem
b. Metoda pytanie odpowiedź (metoda challenge-response) 
c. Protokoły z wiedzą zerową (protokoły Fiata-Shamira i Feige-Fiata Shamira)
9. Dystrybucja kluczy, protokoły wymiany klucza 
a. Protokół Diffiego-Hellmana 
b. Protokół szerokogębnej żaby 
c. ProtokólNeedhama-Schroedera
- Metody oceny:
- Sposób zaliczenia:
 
Przedmiot zaliczany jest w formie egzamin pisemnego (60p).
Za rozwiązanie zadań i małych projektów do samodzielnego rozwiązania 
nazywanych TESTami można dodatkowo zdobyć 40p (to dużo). 
Rozwiązywanie TESTów nie jest obowiązkowe ale bardzo zalecane.
W sumie są 4 serie TESTów po 10p. 
Ostatecznie można zdobyć 100p. Próg zaliczenia to 50p.
Przeliczenie punkty ocena jest liniowe:
50p - próg zaliczenia
50-59 ocena 3
60-69 ocena 31/2
70-79 ocena 4
80-89 ocena 41/2
90-100 ocena 5
- Egzamin:
- tak
- Literatura:
- Część 1 – Algorytmy  
• T.Adamski, J.Ogrodzki; Wprowadzenie do algorytmów komputerowych i struktur danych; Oficyna Wydawnicza Politechniki Warszawskiej, Warszawa 2014 
• T.Adamski; Zbiór zadań z kryptografii i ochrony informacji; Oficyna Wydawnicza Politechniki Warszawskiej, Warszawa 2014 
• D.E.Knuth; Sztuka programowania; WNT, Warszawa 2002 
• T. H. Cormen, C.E. Leiserson, R.L. Rivest, C.Stein ; Wprowadzenie do algorytmów; WNT, Warszawa 2004 
• R. Neapolitan i K.Naimpour; Podstawy algorytmów z przykładami w C++; Hellion 2004 
• A.Aho, J.Hopcroft, J.Ullman; Projektowanie i analiza algorytmów komputerowych; Hellion, 2004 
• L.Banachowski, K.Diks, W.Rytter; Algorytmy i struktury danych;WNT, Warszawa 1996 
• E.Reingold, J.Nievergelt,N.Deo; Algorytmy kombinatoryczne; PWN, Warszawa 1985 
• P.Wróblewski; Algorytmy, struktury danych i techniki programowania; Helion, Warszawa 1996 
Część 2 – Algorytmy i bezpieczeństwo danych 
• J.Buchmann; Wprowadzenie do kryptografii; PWN, 2006 
• A. Menezes, P. Oorschot, S. Vanstone; Handbook of Applied Cryptography; CRC Press 
Inc., 1997. (treść książki jest zamieszczona na stronie www: http://cacr.math.uwaterloo.ca/hac. Istnieje również tłumaczenie polskie wydane przez 
WNT 
• M.Kutyłowski; W.Strothmann; Kryptografia, teoria i praktyka zabezpieczania 
systemów komputerowych; Wyd.2, Oficyna Wydawnicza Read Me;1999 
• N.Koblitz; Wykład z teorii liczb i kryptografii; WNT, Warszawa 1995 
• N.Koblitz; Algebraiczne aspekty kryptografii; WNT, Warszawa 2000 
• B.Schneier; Kryptografia dla praktyków; Wiley & WNT, Warszawa 2004 
• J. Stokłosa, T.Bilski, T.Pankowski; Kryptograficzna ochrona danych w systemach 
komputerowych; PWN. Poznań 2004 
• W.Stallings; Ochrona danych w sieci i intersieci; WNT, 1998 
- Witryna www przedmiotu:
- https://inz.okno.pw.edu.pl/
- Uwagi:
- Przedmiot ma charakter podstawowy. 
Nacisk kładziony jest więc na zrozumienie stosowanych technik 
matematycznych, algorytmów i metod.
Efekty uczenia się
    Profil ogólnoakademicki - wiedza
                    - Charakterystyka K_W01
- Ma poszerzoną i pogłębioną wiedzę z matematyki (teoria algorytmów, teoria liczb, algebra, teoria prawdopodobieństwa) umożliwiającą zrozumienie zasady działania i projektowanie bezpiecznych systemów informatycznych i elektronicznych. Zna algorytmy, metody i techniki służące do zapewnienia  bezpieczeństwa w procesie magazynowania i transmisji informacji.
 Weryfikacja: egzamin, ocena zadań domowych, ocena projektów, ocena poziomu wiedzy przy bezpośrednim kontakcie ze studentem na konsultacjach
 Powiązane charakterystyki kierunkowe: 
                        K_W01
 Powiązane charakterystyki obszarowe: 
                        I.P6S_WG
- Charakterystyka K_W04
- Ma podbudowaną teoretycznie wiedzę z zakresu algorytmów kryptograficznych oraz realizacji software'owej i hardware'owej systemów kryptograficznych  w tym systemów kryptografii kwantowej
 Weryfikacja: egzamin, zadania domowe, projekty, bezpośredni kontakt ze studentem na konsultacjach
 Powiązane charakterystyki kierunkowe: 
                        K_W04
 Powiązane charakterystyki obszarowe: 
                        I.P6S_WG
Profil ogólnoakademicki - umiejętności
                    - Charakterystyka K_U01, KU04
- potrafi wyszukiwać informacje i dokonywać niezbędnych syntez
 Weryfikacja: ocena zadań i projektów
 Powiązane charakterystyki kierunkowe: 
                        K_U01, K_U04
 Powiązane charakterystyki obszarowe: 
                        I.P6S_UK
Profil ogólnoakademicki - kompetencje społeczne
                    - Charakterystyka K_K02
- Ma świadomość roli społecznej absolwenta dobrej uczelni technicznej. 
 Weryfikacja: Weryfikacja tego efektu kształcenia jest dosyć trudna bo dotyczy postawy życiowej studenta.
 Powiązane charakterystyki kierunkowe: 
                        K_K02
 Powiązane charakterystyki obszarowe: 
                        I.P6S_KO