Details zum E-Book

Algorytmy kryptograficzne w Pythonie. Wprowadzenie

Algorytmy kryptograficzne w Pythonie. Wprowadzenie

Shannon W. Bray

E-book

Dzięki kryptografii możemy w dużym stopniu zabezpieczyć swoje dane. Z szyfrowaną komunikacją wiążą się jednak kontrowersje i sprzeczności interesów. Przestępcy, ale również rządy, policja i służby wywiadowcze dążą do uzyskania możliwości wglądu we wszystkie formy komunikacji. Świat toczy wojnę o to, co można zaszyfrować, co powinno być zaszyfrowane i kto powinien dysponować kluczem pozwalającym odczytać zaszyfrowane wiadomości należące do innej osoby. W tej sytuacji zrozumienie, czym jest szyfrowanie, jak je stosować i jak się upewniać co do autentyczności i poufności otrzymywanych danych, staje się niezwykle ważne.

Ta książka jest przystępnym wprowadzeniem do kryptografii i bibliotek kryptograficznych Pythona. Omówiono tu podstawowe koncepcje z tej dziedziny, najważniejsze algorytmy i niezbędny zakres podstaw matematycznych: liczby pierwsze, teorię grup czy generatory liczb pseudolosowych. Wyjaśniono, czym są poufność, autentyczność i integralność wiadomości. Zaprezentowano najciekawsze biblioteki kryptograficzne Pythona i dokładnie pokazano, w jaki sposób można je wykorzystywać we własnych implementacjach. Wiele z prezentowanych koncepcji, między innymi kryptografia klucza publicznego i implementacja kryptografii krzywych eliptycznych, zostało przedstawionych w praktyce, za pomocą kodu Pythona, tak aby można było wymieniać dane w bardzo bezpiecznym formacie przez niezabezpieczony kanał.

W książce:

  • podstawy Pythona i kryptografii
  • protokoły kryptograficzne i matematyka kryptograficzna
  • kryptoanaliza za pomocą kodu Pythona
  • kryptografia wizualna: biblioteki, algorytmy, tryby kodowania
  • integralność wiadomości
  • tworzenie rozwiązań kryptograficznych w Pythonie

Masz coś do ukrycia? Zaszyfruj to w Pythonie!


O autorze 11

Podziękowania 13

Wprowadzenie 15

Rozdział 1. Wprowadzenie do kryptografii i Pythona 19

  • Algorytmy 19
  • Dlaczego warto korzystać z Pythona? 20
  • Pobieranie i instalacja Pythona 21
    • Instalacja na Ubuntu 21
    • Instalacja w systemie macOS 22
    • Instalacja w systemie Windows 22
    • Instalacja na chromebooku 23
    • Instalowanie dodatkowych pakietów 23
      • Instalacja Pip, NumPy, Matplotlib i SciPy 23
      • Instalacja pakietu Cryptography 25
      • Instalacja dodatkowych pakietów 25
  • Testowanie instalacji 26
  • Podstawy Pythona 26
    • Zmienne 27
    • Łańcuchy znaków 27
    • Operatory 28
      • Operatory arytmetyczne 28
      • Operatory porównania 29
      • Operatory logiczne 30
      • Operatory przypisania 30
      • Operatory bitowe 30
      • Operatory przynależności 31
      • Operatory tożsamości 32
    • Wyrażenia warunkowe 32
    • Pętle 33
      • for 33
      • while 33
      • continue 34
      • break 34
      • else 34
    • Praca z plikami 34
    • Semantyka Pythona 35
      • Typy sekwencyjne 36
    • Własne funkcje 41
    • Pobieranie plików 42
    • Moduły 43
  • Szyfr wsteczny 44
  • Podsumowanie 44

Rozdział 2. Protokoły kryptograficzne i poufność doskonała 45

  • Studium kryptologii 46
    • Zrozumieć kryptografię 46
      • Alicja i Bob, czyli słynna kryptograficzna rodzina 47
      • Protokół Diffiego-Hellmana 48
      • Uwierzytelnianie źródła danych 48
      • Uwierzytelnianie jednostek 49
      • Algorytmy symetryczne 50
      • Algorytmy asymetryczne 50
      • Protokoły Needhama-Schroedera 50
      • Protokół Otwaya-Reesa 52
      • Kerberos 52
      • Kerberos w wielu domenach 54
      • X.509 55
      • Konfiguracja Twojej pierwszej biblioteki kryptograficznej 56
      • Formalna walidacja protokołów kryptograficznych 59
    • Zrozumieć kryptoanalizę 60
  • Modele ataków 60
      • Ataki metodą siłową 61
      • Ataki kanałem bocznym 61
      • Inżynieria społeczna 62
      • Ataki analityczne 62
      • Analiza częstości 62
  • Twierdzenie Shannona 62
  • Szyfr z kluczem jednorazowym 63
    • XOR, AND i OR 63
    • Funkcja szyfru z kluczem jednorazowym 67
  • Jednokierunkowe funkcje skrótu 70
    • Jednokierunkowe kryptograficzne funkcje skrótu 70
    • Kody uwierzytelniania wiadomości 71
  • Doskonałe utajnianie z wyprzedzaniem 72
  • Opublikowane i zastrzeżone algorytmy szyfrowania 73
  • Podsumowanie 73
  • Bibliografia 74

Rozdział 3. Kryptografia klasyczna 75

  • Najlepsze praktyki dotyczące haseł 75
    • Przechowywanie haseł 76
    • Haszowanie haseł 76
    • Solenie haseł 77
    • Password/keystretching 78
    • Narzędzia przydatne w pracy z hasłami 78
  • Zaciemnianie danych 79
    • Kodowanie ASCII 79
    • Kodowanie tekstu Base64 79
    • Dane binarne 81
    • Dekodowanie 81
  • Szyfry o znaczeniu historycznym 82
    • Spartańskie Skytale 82
    • Szyfry podstawieniowe 82
      • Szyfr Cezara 83
      • ROT-13 84
      • Atbasz 85
    • Szyfr Vigenere'a 86
    • Szyfr Playfaira 87
    • Szyfr Hilla 2×2 90
    • Kolumnowy szyfr przestawieniowy 94
    • Szyfr afiniczny 97
  • Podsumowanie 99

Rozdział 4. Matematyka kryptograficzna i analiza częstości 101

  • Arytmetyka modularna i największy wspólny dzielnik 102
  • Liczby pierwsze 103
    • Twierdzenie o liczbach pierwszych 104
    • Szkolny test pierwszości 104
    • Małe twierdzenie Fermata 105
    • Test pierwszości Millera-Rabina 106
    • Generowanie dużych liczb pierwszych 109
  • Podstawy teorii grup 111
    • Rząd elementu 112
  • Odwrotność modulo 114
    • Odwrotność z użyciem małego twierdzenia Fermata 114
  • Rozszerzony algorytm Euklidesa 115
  • Twierdzenie Eulera 115
  • Pseudolosowość 118
    • Funkcja generująca wartości pseudolosowe 119
  • Rozwiązywanie układów równań liniowych 120
  • Analiza częstości 123
  • Kryptoanaliza z użyciem Pythona 126
    • Korzystanie z internetowej listy słów 128
    • Obliczanie częstości znaków 128
    • Łamanie szyfru Vigenere'a 131
  • Podsumowanie 138

Rozdział 5. Szyfry strumieniowe i blokowe 139

  • Konwersja pomiędzy zapisem szesnastkowym a tekstem jawnym 140
  • Szyfry strumieniowe 141
    • ARC4 146
    • Szyfr Vernama 147
    • Szyfr Salsa20 148
    • Szyfr ChaCha 150
  • Szyfry blokowe 154
      • Tryb EBC 156
      • Tryb CBC 157
      • Tryb CFB 158
      • Tryb OFB 159
      • Tryb CTR 160
      • Tryby strumieniowe 162
      • Samodzielne tworzenie szyfru blokowego za pomocą sieci Feistela 162
    • Advanced Encryption Standard (AES) 164
      • AES w Pythonie 164
      • Szyfrowanie plików za pomocą AES 166
      • Odszyfrowywanie plików za pomocą AES 166
  • Podsumowanie 166

Rozdział 6. Kryptografia wizualna 167

  • Prosty przykład 167
  • Biblioteki graficzne i steganograficzne 169
    • Biblioteka cryptography 170
    • Biblioteka cryptosteganography 170
  • Kryptografia wizualna 171
    • Szyfrowanie zawartości pliku za pomocą algorytmu Ferneta 171
    • Szyfrowanie obrazu za pomocą algorytmu Ferneta 173
    • AES i tryby kodowania 174
      • Prosty przykład użycia trybu ECB 175
      • Prosty przykład szyfrowania w trybie CBC 179
      • Wykorzystanie wiedzy w praktyce 180
  • Steganografia 181
    • Przechowywanie wiadomości w obrazie 181
    • Ukrywanie pliku binarnego w obrazie 184
    • Praca z dużymi obrazami 187
  • Podsumowanie 189

Rozdział 7. Integralność wiadomości 191

  • Kody uwierzytelniania wiadomości 191
    • Kod uwierzytelniania wiadomości oparty na funkcjach haszujących 193
      • Podpisywanie wiadomości za pomocą HMAC 194
      • Podpisywanie algorytmem SHA 194
      • Skróty binarne 195
    • Zgodność z NIST 197
    • CBC-MAC 198
    • Atak urodzinowy 199
    • Fałszowanie wiadomości 200
      • Atak length extension 200
  • Ustanawianie bezpiecznego kanału komunikacji 201
    • Kanały komunikacyjne 202
    • Przesyłanie bezpiecznych wiadomości przez sieci IP 202
      • Tworzenie gniazda serwera 203
      • Tworzenie gniazda klienta 204
      • Tworzenie wielowątkowego serwera z komunikacją TCP 204
      • Dodawanie szyfrowania symetrycznego 205
      • Łączenie wiadomości i kodu MAC 208
  • Podsumowanie 211
  • Bibliografia 211

Rozdział 8. Infrastruktura klucza publicznego i zastosowania kryptografii 213

  • Koncepcja klucza publicznego 214
    • Podstawy RSA 216
    • Generowanie certyfikatu RSA 218
    • Szyfrowanie i odszyfrowywanie tekstu za pomocą certyfikatów RSA 220
    • Szyfrowanie i odszyfrowywanie obiektów BLOB za pomocą certyfikatów RSA 221
  • Algorytm ElGamal 223
  • Kryptografia krzywych eliptycznych 226
    • Generowanie kluczy w ECC 228
    • Długości klucza i krzywe 229
  • Protokół wymiany kluczy Diffiego-Hellmana 230
  • Podsumowanie 232

Rozdział 9. Szlifowanie umiejętności kryptograficznych w Pythonie 233

  • Tworzenie aplikacji do niezaszyfrowanej komunikacji 234
    • Tworzenie serwera 234
    • Tworzenie klienta 236
    • Tworzenie pliku pomocniczego 237
    • Uruchamianie 238
  • Instalowanie i testowanie Wiresharka 238
  • Implementacja PKI z użyciem certyfikatów RSA 240
    • Modyfikowanie serwera 241
    • Modyfikowanie klienta 242
    • Modyfikowanie pliku pomocniczego 243
    • Uruchamianie 244
  • Implementacja protokołu wymiany kluczy Diffiego-Hellmana 245
    • Modyfikowanie kodu serwera 247
    • Modyfikowanie kodu klienta 248
    • Modyfikowanie pliku pomocniczego 250
    • Klasa DiffieHellman 254
    • Uruchamianie 258
  • Podsumowanie 259
  • Titel: Algorytmy kryptograficzne w Pythonie. Wprowadzenie
  • Autor: Shannon W. Bray
  • Originaler Titel: Implementing Cryptography Using Python
  • Übersetzung: Filip Kamiński
  • ISBN: 978-83-283-7730-1, 9788328377301
  • Veröffentlichungsdatum: 2021-07-12
  • Format: E-book
  • Artikelkennung: imkrpy
  • Verleger: Helion