"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