"Kryptografia. W teorii i praktyce"

Identyfikator Librowy: 249261

Spis treści

Wstęp 12

1. Wprowadzenie do kryptografii 14

1.1 Kryptosystemy i podstawowe narzędzia kryptograficzne 14

1.1.1 Kryptosystemy z kluczem tajnym 14

1.1.2 Kryptosystemy klucza publicznego 15

1.1.3 Szyfry blokowe i strumieniowe 16

1.1.4 Kryptografia hybrydowa 16

1.2 Integralność wiadomości 17

1.2.1 Kody uwierzytelniania wiadomości 18

1.2.2 Schematy podpisów 19

1.2.3 Niezaprzeczalność 20

1.2.4 Certyfikaty 20

1.2.5 Funkcje skrótu 21

1.3 Protokoły kryptograficzne 22

1.4 Bezpieczeństwo 23

1.5 Uwagi i źródła 26

2. Klasyczna kryptografia 27

2.1 Wprowadzenie: niektóre proste kryptosystemy 27

2.1.1 Szyfr przestawieniowy 29

2.1.2 Szyfr podstawieniowy 32

2.1.3 Szyfr afiniczny 33

2.1.4 Szyfr Vigenere’a 38

2.1.5 Szyfr Hilla 39

2.1.6 Szyfr permutacyjny 44

2.1.7 Szyfry strumieniowe 46

2.2 Kryptoanaliza 50

2.2.1 Kryptoanaliza szyfru afinicznego 52

2.2.2 Kryptoanaliza szyfru podstawieniowego 53

2.2.3 Kryptoanaliza szyfru Vigenere’a 56

2.2.4 Kryptoanaliza szyfru Hilla 60

2.2.5 Kryptoanaliza szyfru strumieniowego z LFSR 61

2.3 Uwagi i źródła 62

Ćwiczenia 63

3. Teoria Shannona, tajność doskonała i szyfr z kluczem jednorazowym 70

3.1 Wprowadzenie 70

3.2 Podstawowa teoria prawdopodobieństwa 71

3.3 Tajność doskonała 74

3.4 Entropia 79

3.4.1 Cechy entropii 81

3.5 Fałszywe klucze i długość krytyczna 84

3.6 Uwagi i źródła 88

Ćwiczenia 89

4. Szyfry blokowe i szyfry strumieniowe 92

4.1 Wprowadzenie 92

4.2 Sieci podstawieniowo-permutacyjne 93

4.3 Kryptoanaliza liniowa 98

4.3.1 Lemat nawarstwiania 98

4.3.2 Liniowe aproksymacje S-boksów 100

4.3.3 Liniowy atak na SPN 103

4.4 Kryptoanaliza różnicowa 107

4.5 Data Encryption Standard 114

4.5.1 Opis DES 114

4.5.2 Analiza DES 116

4.6 Advanced Encryption Standard 118

4.6.1 Opis AES 119

4.6.2 Analiza AES 124

4.7 Tryby działania 125

4.7.1 Atak wyroczni dopełnienia w trybie CBC 129

4.8 Szyfry strumieniowe 131

4.8.1 Atak korelacyjny na generator kombinacji 132

4.8.2 Atak algebraiczny na generator filtrów 135

4.8.3 Trivium 138

4.9 Uwagi i źródła 139

Ćwiczenia 140

5. Funkcje skrótu i uwierzytelnianie wiadomości 145

5.1 Funkcje skrótu i integralność danych 145

5.2 Bezpieczeństwo funkcji skrótu 147

5.2.1 Model losowej wyroczni 149

5.2.2 Algorytmy w modelu losowej wyroczni 150

5.2.3 Porównanie kryteriów bezpieczeństwa 154

5.3 Iterowane funkcje skrótu 157

5.3.1 Konstrukcja Merkle’a-Damgarda 159

5.3.2 Kilka przykładów iterowanych funkcji skrótów 164

5.4 Konstrukcja gąbki 165

5.4.1 SHA-3 168

5.5 Kody uwierzytelniania wiadomości 169

5.5.1 Zagnieżdżone kody MAC i HMAC 171

5.5.2 CBC-MAC 174

5.5.3 Szyfrowanie uwierzytelnione 175

5.6 Bezwarunkowo bezpieczne kody MAC 178

5.6.1 Silnie uniwersalne rodziny skrótów 181

5.6.2 Optymalność prawdopodobieństwa oszustwa 183

5.7 Uwagi i źródła 185

Ćwiczenia 186

6. Kryptosystem RSA i rozkład liczb całkowitych na czynniki 194

6.1 Wprowadzenie do kryptografii klucza publicznego 194

6.2 Więcej teorii liczb 197

6.2.1 Algorytm Euklidesa 197

6.2.2 Chińskie twierdzenie o resztach 201

6.2.3 Inne przydatne fakty 203

6.3 Kryptosystem RSA 205

6.3.1 Implementowanie RSA 207

6.4 Testowanie pierwszości 210

6.4.1 Symbole Legendre’a i Jacobiego 212

6.4.2 Algorytm Solovaya-Strassena 215

6.4.3 Algorytm Millera-Rabina 218

6.5 Pierwiastki kwadratowe modulo n 220

6.6 Algorytmy rozkładu na czynniki 221

6.6.1 Algorytm Pollardap - 1 222

6.6.2 Algorytm rho Pollarda 223

6.6.3 Algorytm losowych kwadratów Dixona 226

6.6.4 Algorytmy rozkładu na czynniki w praktyce 231

6.7 Inne ataki na RSA 232

6.7.1 Obliczanie ^(n) 233

6.7.2 Wykładnik odszyfrowywania 233

6.7.3 Atak Wienera z małym wykładnikiem odszyfrowywania 238

6.8 Kryptosystem Rabina 242

6.8.1 Bezpieczeństwo kryptosystemu Rabina 244

6.9 Bezpieczeństwo semantyczne RSA 246

6.9.1 Częściowe informacje dotyczące bitów tekstu jawnego 247

6.9.2 Uzyskanie bezpieczeństwa semantycznego 249

6.10 Uwagi i źródła 254

Ćwiczenia 255

7. Kryptografia klucza publicznego i logarytmy dyskretne 264

7.1 Wprowadzenie 264

7.1.1 Kryptosystem ElGamala 265

7.2 Algorytmy dla problemu logarytmu dyskretnego 267

7.2.1 Algorytm Shanksa 267

7.2.2 Algorytm logarytmu dyskretnego rho Pollarda 269

7.2.3 Algorytm Pohliga-Hellmana 272

7.2.4 Metoda rachunku indeksowego 275

7.3 Dolne granice złożoności algorytmów genetycznych 277

7.4 Ciała skończone 281

7.4.1 Analiza indeksu Jouxa dla ciał o niewielkich wyróżnikach 285

7.5 Krzywe eliptyczne 287

7.5.1 Krzywe eliptyczne na liczbach rzeczywistych 287

7.5.2 Krzywe eliptyczne modulo liczba pierwsza 290

7.5.3 Krzywe eliptyczne na ciałach skończonych 293

7.5.4 Własności krzywych eliptycznych 294

7.5.5 Parowanie krzywych eliptycznych 295

7.5.6 Kryptosystem ElGamala na krzywych eliptycznych 298

7.5.7 Obliczanie wielokrotności punktów na krzywych eliptycznych 300

7.6 Algorytmy logarytmu dyskretnego w praktyce 303

7.7 Bezpieczeństwo systemów ElGamala 304

7.7.1 Bitowe bezpieczeństwo logarytmów dyskretnych 304

7.7.2 Semantyczne bezpieczeństwo systemów ElGamala 308

7.7.3 Problemy Diffiego-Hellmana 308

7.8 Uwagi i źródła 310

Ćwiczenia 311

8. Schematy podpisów 317

8.1 Wprowadzenie 317

8.1.1 Schemat podpisu RSA 318

8.2 Wymogi bezpieczeństwa dla schematów podpisu 320

8.2.1 Podpisy i funkcje skrótu 321

8.3 Schemat podpisu ElGamala 322

8.3.1 Bezpieczeństwo schematu podpisu ElGamala 325

8.4 Warianty schematu podpisu ElGamala 328

8.4.1 Schemat podpisu Schnorra 328

8.4.2 Algorytm podpisu cyfrowego 330

8.4.3 DSA krzywej eliptycznej 332

8.5 Funkcja skrótu o pełnej dziedzinie 334

8.6 Certyfikaty 338

8.7 Podpisywanie i szyfrowanie 339

8.8 Uwagi i źródła 341

Ćwiczenia 342

9. Kryptografia postkwantowa 347

9.1 Wprowadzenie 347

9.2 Kryptografia oparta na kratach 350

9.2.1 NTRU 350

9.2.2 Kraty i bezpieczeństwo NTRU 354

9.2.3 LWE 357

9.3 Kryptografia oparta na kodzie i kryptosystem McEliece’a 359

9.4 Kryptografia wielu zmiennych 364

9.4.1 Równania ciała ukrytego 365

9.4.2 Schemat podpisu oliwa i ocet 369

9.5 Schematy podpisu oparte na skrócie 373

9.5.1 Schemat podpisu Lamporta 373

9.5.2 Schemat podpisu Winternitza 375

9.5.3 Schemat podpisu Merkle’a 378

9.6 Uwagi i źródła 380

10. Schematy identyfikacji i uwierzytelnianie jednostki 383

10.1 Wprowadzenie 383

10.1.1 Hasła 385

10.1.2 Bezpieczne schematy identyfikacji 387

10.2 Wyzwanie i odpowiedź w kryptografii klucza tajnego 388

10.2.1 Model ataku i cele przeciwnika 393

10.2.2 Wzajemne uwierzytelnianie 395

10.3 Wyzwanie i odpowiedź dla kryptografii klucza publicznego 398

10.3.1 Schematy identyfikacji klucza publicznego 398

10.4 Schemat identyfikacji Schnorra 401

10.4.1 Bezpieczeństwo schematu identyfikacji Schnorra 404

10.5 Schemat identyfikacji Feige’a-Fiata-Shamira 410

Ćwiczenia 415

10.6 Uwagi i źródła 415

11. Dystrybucja kluczy 419

11.1 Wprowadzenie 419

11.1.1 Modele ataku i cele przeciwników 422

11.2 Wstępna dystrybucja kluczy 423

11.2.1 Wstępna dystrybucja kluczy Diffiego-Hellmana 423

11.2.2 Schemat Bloma 425

11.2.3 Wstępna dystrybucja klucza w sieciach czujnikowych 432

11.3 Schematy dystrybucji klucza sesji 436

11.3.1 Schemat Needhama-Schroedera 436

11.3.2 Atak Denninga-Sacca na schemat NS 437

11.3.3 Kerberos 439

11.3.4 Schemat Bellare’a-Rogawaya 442

11.4 Ponowne tworzenie klucza i logiczna hierarchia kluczy 445

11.5 Schematy progowe 448

11.5.1 Schemat Shamira 449

11.5.2 Uproszczony schemat (t, t)-progowy 452

11.5.3 Wizualne schematy progowe 453

Ćwiczenia 457

11.6 Uwagi i źródła 457

12. Schematy uzgadniania klucza 463

12.1 Wprowadzenie 463

12.1.1 Bezpieczeństwo warstwy transportu (TLS) 463

12.2 Uzgodnienie klucza Diffiego-Hellmana 465

12.2.1 Schemat uzgadniania klucza STS (station-to-station) 467

12.2.2 Bezpieczeństwo STS 468

12.2.3 Ataki ze znanym kluczem sesji 471

12.3 Funkcje wyprowadzania klucza 473

12.4 Schematy MTI uzgadniania klucza 475

12.4.1 Ataki na MTI/A0 ze znanym kluczem sesji 477

12.5 Zaprzeczalne schematy uzgadniania klucza 479

12.6 Aktualizacja kluczy 482

12.7 Konferencyjne schematy uzgadniania klucza 485

Ćwiczenia 488

12.8 Uwagi i źródła 488

13. Różne tematy 491

13.1 Kryptografia oparta na tożsamości 491

13.1.1 Kryptosystem Cocksa oparty na tożsamości 492

13.1.2 Kryptosystem Boneha-Franklina oparty na tożsamości 498

13.2 Kryptosystem Pailliera 503

13.3 Ochrona praw autorskich 506

13.3.1 Odciski palca 507

13.3.2 Identyfikowalna własność nadrzędna 509

13.3.3 Kody 2-IPP 511

13.3.4 Śledzenie nielegalnej redystrybucji kluczy 514

13.4 Bitcoin i technologia blockchain 518

13.5 Uwagi i źródła 522

Ćwiczenia 523

A. Teoria liczb i algebraiczne koncepcje kryptografii 526

A.1 Arytmetyka modularna 526

A.2 Grupy 527

A.2.1 Rzędy elementów grupy 529

A.2.2 Grupy cykliczne i elementy pierwotne 530

A.2.3 Podgrupy i warstwy 531

A.2.4 Izomorfizmy i homomorfizmy grup 532

A.2.5 Reszty kwadratowe 533

A.2.6 Algorytm Euklidesa 534

A.2.7 Iloczyny proste 535

A.3 Pierścienie 536

A.3.1 Chińskie twierdzenie o resztach 537

A.3.2 Ideały i pierścienie ilorazowe 539

A. 4 Ciała 540

B. Pseudolosowe generowanie bitów dla kryptografii 543

B.1 Generatory bitów 543

B.2 Bezpieczeństwo pseudolosowych generatorów bitów 548

B.3 Uwagi i źródła 550

Bibliografia 551

Indeks 561