"Nowoczesna kryptografia"
Identyfikator Librowy: 196242
Spis treści
SŁOWO WSTĘPNE 16
WPROWADZENIE 18
Dla kogo jest ta książka 19
Stosowane podejście 19
Układ książki 20
Podstawy 20
Szyfry asymetryczne 20
Szyfry symetryczne 20
Podziękowania 21
Zastosowania 21
SKRÓTY 22
1. SZYFROWANIE 26
Podstawy 2 Szyfry klasyczne 27
Szyfr Cezara 27
Szyfr Vigenère’a 28
Jak działają szyfry 29
Permutacja 30
Dlaczego szyfry klasyczne nie są bezpieczne 31
Tryb działania 31
Idealne szyfrowanie – klucz jednorazowy 32
Szyfrowanie za pomocą klucza jednorazowego 33
Dlaczego szyfr z kluczem jednorazowym jest bezpieczny? 34
Bezpieczeństwo szyfrowania 35
Modele ataku 36
Cele bezpieczeństwa 38
Kategoria bezpieczeństwa 39
Szyfrowanie asymetryczne 41
Gdy szyfry robią więcej niż szyfrowanie 42
Szyfrowanie z uwierzytelnianiem 42
Szyfrowanie w pełni homomorficzne 43
Szyfrowanie zachowujące format 43
Szyfrowanie dostrajalne 44
Szyfrowanie przeszukiwalne 44
Co może pójść źle 45
Niewłaściwy model 45
Słaby szyfr 45
Inne źródła 46
2. LOSOWOŚĆ 48
Losowość jako rozkład prawdopodobieństwa 49
Losowy czy nie losowy? 49
Entropia – miara niepewności 50
Generatory liczb losowych (RNG) i generatory liczb pseudolosowych (PRNG) 51
Jak działa generator PRNG 53
Kwestie bezpieczeństwa 53
Fortuna PRNG 54
PRNG kryptograficzne i niekryptograficzne 55
Generatory liczb pseudolosowych w praktyce 57
Bezużyteczność testów statystycznych 57
Generowanie bitów losowych w systemach opartych na Uniksie 58
Funkcja CryptGenRandom() w systemie Windows 61
PRNG oparty na sprzęcie – RDRAND w mikroprocesorach Intel 62
Co może pójść źle 63
Słabe źródła entropii 63
Niewystarczająca entropia przy rozruchu 64
Błąd próbkowania z silną losowością 65
PRNG niekryptograficzne 65
Inne źródła 66
3. BEZPIECZEŃSTWO KRYPTOGRAFICZNE 68
Definiowanie niemożliwego 69
Bezpieczeństwo w praktyce – bezpieczeństwo obliczeniowe 69
Bezpieczeństwo w teorii – bezpieczeństwo informacyjne 69
Szacowanie bezpieczeństwa 71
Mierzenie bezpieczeństwa w bitach 71
Koszt pełnego ataku 72
Wybór i ocena poziomu bezpieczeństwa 74
Uzyskiwanie bezpieczeństwa 75
Bezpieczeństwo możliwe do udowodnienia 75
Bezpieczeństwo heurystyczne 78
Generowanie kluczy 79
Generowanie kluczy symetrycznych 79
Generowanie kluczy asymetrycznych 80
Ochrona kluczy 81
Co może pójść źle 82
Krótkie klucze do obsługi poprzednich wersji 82
Niepoprawny dowód bezpieczeństwa 82
Inne źródła 83
4. SZYFRY BLOKOWE 84
Czym jest szyfr blokowy? 85
Cele bezpieczeństwa 85
Rozmiar bloku 85
Ataki książki kodowej 86
Jak budować szyfry blokowe 87
Atak ślizgowy i klucze rundowe 87
Rundy szyfru blokowego 87
Sieci podstawieniowo-permutacyjne 88
Sieć Feistela 89
Advanced Encryption Standard (AES) 90
Wnętrze AES 90
AES w działaniu 93
Implementacja AES 94
Implementacje oparte na tablicach 94
Instrukcje natywne 95
Czy szyfr AES jest bezpieczny? 96
Tryby działania 97
Tryb elektronicznej książki kodowej (ECB) 97
Tryb CBC (Cipher Block Chaining) 99
Jak szyfrować dowolny komunikat w trybie CBC 101
Tryb licznika (CTR) 102
Co może pójść źle 104
Ataki typu meet-in-the-middle 105
Ataki typu padding oracle 106
Inne źródła 107
5. SZYFRY STRUMIENIOWE 108
Jak działają szyfry strumieniowe 109
Szyfry strumieniowe stanowe i oparte na liczniku 110
Szyfry strumieniowe zorientowane na sprzęt 111
Rejestry przesuwające ze sprzężeniem zwrotnym 112
Grain-128a 118
A5/1 120
Szyfry strumieniowe zorientowane na oprogramowanie 123
RC4 124
Salsa20 128
Co może pójść źle 133
Ponowne użycie wartości jednorazowej 133
Złamana implementacja RC4 134
Słabe szyfry wbudowane w sprzęt 135
Inne źródła 136
6. FUNKCJE SKRÓTU 138
Bezpieczne funkcje skrótu 139
Odporność na przeciwobraz 140
Ponownie nieprzewidywalność 140
Odporność na kolizje 142
Znajdowanie kolizji 143
Budowa funkcji skrótu 145
Funkcje skrótu oparte na kompresji – struktura Merkle’a–Damgårda 145
Funkcje skrótu oparte na permutacji – funkcje gąbkowe 148
Rodzina funkcji skrótu SHA 150
SHA-1 150
SHA-2 153
Konkurencja ze strony SHA-3 154
Keccak (SHA-3) 155
Funkcja skrótu BLAKE2 157
Co może pójść źle 159
Atak przez zwiększenie długości 159
Inne źródła 160
Oszukiwanie protokołów uwiarygodniania pamięci 160
7. FUNKCJE SKRÓTU Z KLUCZEM 162
MAC (Message Authentication Codes) 163
Fałszerstwa i ataki z wybranym tekstem jawnym 163
MAC w bezpiecznej łączności 163
Funkcje pseudolosowe PRF 164
Ataki powtórzeniowe 164
Bezpieczeństwo PRF 165
Dlaczego funkcje PRF są silniejsze od MAC? 165
Tworzenie skrótów z kluczem na podstawie skrótów bez klucza 166
Konstrukcja z tajnym prefiksem 166
Struktura HMAC 167
Struktura z tajnym sufiksem 167
Ogólny atak na kody MAC oparte na funkcjach skrótu 168
Tworzenie skrótów z kluczem na podstawie szyfrów blokowych – CMAC 169
Łamanie CBC-MAC 170
Naprawa CBC-MAC 170
Dedykowane konstrukcje MAC 171
Poly1305 172
SipHash 175
Co może pójść źle 177
Ataki czasowe na weryfikację MAC 177
Inne źródła 179
Gdy gąbki przeciekają 179
8. SZYFROWANIE UWIERZYTELNIONE 182
Szyfrowanie uwierzytelnione z wykorzystaniem MAC 183
Szyfrowanie i MAC 183
MAC, a potem szyfrowanie 184
Szyfry uwierzytelnione 185
Szyfrowanie, a potem MAC 185
Szyfrowanie uwierzytelnione z powiązanymi danymi 186
Co składa się na dobry szyfr uwierzytelniony? 187
Unikanie przewidywalności z wartościami jednorazowymi 187
AES-GCM – standard szyfru uwierzytelnionego 189
Wnętrze GCM – CTR i GHASH 190
Bezpieczeństwo GCM 191
Skuteczność GCM 192
OCB – uwierzytelniony szyfr szybszy niż GCM 193
Wnętrze OCB 193
Bezpieczeństwo OCB 194
Wydajność OCB 194
AEAD oparty na permutacjach 195
SIV – najbezpieczniejszy uwierzytelniany szyfr? 195
Co może pójść źle 197
AES-GCM i słabe klucze mieszające 197
AES+GCM i małe znaczniki 199
Inne źródła 200
9. TRUDNE PROBLEMY 202
Trudność obliczeniowa 203
Pomiar czasu wykonania 203
Czas wielomianowy a superwielomianowy 205
Klasy złożoności 207
Niedeterministyczny czas wielomianowy 208
Problemy NP-zupełne 208
Problem P kontra NP 210
Problem rozkładu na czynniki 211
Rozkład dużej liczby na czynniki w praktyce 212
Czy rozkład na czynniki jest NP-zupełny? 213
Problem logarytmu dyskretnego 214
Czym jest grupa? 214
Trudność 215
Co może się pójść źle 216
Gdy rozkład na czynniki jest łatwy 216
Małe trudne problemy nie są trudne 217
Inne źródła 219
10. RSA 220
Matematyka kryjąca się za RSA 221
Permutacja z zapadką w RSA 222
Generowanie klucza RSA a bezpieczeństwo 223
Szyfrowanie za pomocą RSA 224
Łamanie złamania podręcznikowego szyfrowania RSA 225
Silne szyfrowanie RSA – OAEP 225
Podpisywanie za pomocą RSA 227
Łamanie podpisów podręcznikowego RSA 228
Standard podpisu PSS 228
Podpisy ze skrótem pełnodomenowym 230
Implementacje RSA 231
Szybki algorytm potęgowania – podnoszenie do kwadratu i mnożenie 231
Małe wykładniki w celu szybszego działania klucza publicznego 233
Chińskie twierdzenie o resztach 235
Co może pójść źle 236
Atak Bellcore na RSA-CRT 237
Współdzielenie prywatnych wykładników lub modulo 237
Inne źródła 239
11. DIFFIE–HELLMAN 242
Funkcja Diffiego–Hellmana 243
Problemy z protokołami Diffiego–Hellmana 245
Problem obliczeniowy Diffiego–Hellmana 245
Problem decyzyjny Diffiego–Hellmana 246
Więcej problemów z Diffiem–Hellmanem 246
Protokoły uzgadniania klucza 247
Przykład uzgadniania kluczy różny od DH 247
Modele ataku dla protokołów uzgadniania klucza 248
Protokoły Diffiego–Hellmana 250
Anonimowy Diffie–Hellman 250
Wydajność 250
Uwierzytelniony Diffie–Hellman 252
Protokół MQV (Menezes–Qu–Vanstone) 254
Co może pójść źle 256
Brak skrótu współdzielonego klucza 256
Inne źródła 257
Parametry grupy, które nie są bezpieczne 257
Przestarzały Diffie–Hellman w TLS 257
12. KRZYWE ELIPTYCZNE 260
Czym jest krzywa eliptyczna? 261
Krzywe eliptyczne na liczbach całkowitych 262
Dodawanie i mnożenie punktów 264
Grupy krzywych eliptycznych 267
Problem ECDLP 268
Uzgadnianie klucza Diffiego–Hellmana na krzywych eliptycznych 269
Generowanie podpisu ECDSA 270
Szyfrowanie z wykorzystaniem krzywych eliptycznych 272
Wybór krzywej 273
Curve25519 274
Krzywe NIST 274
Co może pójść źle 275
ECDSA z nieodpowiednią losowością 275
Inne krzywe 275
Złamanie ECDSA za pomocą innej krzywej 276
Inne źródła 277
13. TLS 278
Docelowe aplikacje i wymagania 279
Zestaw protokołów TLS 280
Rodzina protokołów TLS i SSL – krótka historia 280
Certyfikaty i centra certyfikacji 281
TLS w pigułce 281
Protokół rekordu 284
Protokół TLS Handshake 285
Algorytmy kryptograficzne w TLS 1.3 287
Ulepszenia w TLS 1.3 w porównaniu z TLS 1.2 288
Ochrona przed aktualizacją wsteczną 288
Pojedyncze obustronne uzgadnianie 289
Wznowienie sesji 289
Siła bezpieczeństwa TLS 290
Poufność w przód 290
Uwierzytelnienie 290
Co może pójść źle 291
Naruszenie bezpieczeństwa centrum certyfikacji 291
Naruszenie bezpieczeństwa klienta 292
Naruszenie bezpieczeństwa serwera 292
Inne źródła 293
Błędy w implementacji 293
14. KRYPTOGRAFIA KWANTOWA I POSTKWANTOWA 296
Jak działają komputery kwantowe 297
Bity kwantowe 298
Bramki kwantowe 300
Przyspieszenie kwantowe 303
Przyspieszenie wykładnicze i algorytm Simona 303
Zagrożenie ze strony algorytmu faktoryzacji Shora 304
Algorytm Shora i problem logarytmu dyskretnego 305
Algorytm Shora rozwiązuje problem rozkładu na czynniki 305
Algorytm Grovera 306
Dlaczego tak trudno jest zbudować komputer kwantowy? 307
Postkwantowe algorytmy szyfrowania 308
Kryptografia oparta na kodach korekcyjnych 309
Kryptografia oparta na kratach 310
Kryptografia wielu zmiennych 311
Kryptografia oparta na funkcjach skrótu 312
Co może pójść źle 313
Niejasny poziom bezpieczeństwa 313
Szybko do przodu – co się stanie, jeśli będzie za późno? 314
Inne źródła 315
Problemy implementacji 315
SKOROWIDZ 318