Algorytmy kryptograficzne w Pythonie. Wprowadzenie - ebook
Algorytmy kryptograficzne w Pythonie. Wprowadzenie - ebook
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!
Spis treści
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
- Zrozumieć kryptografię 46
- 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
- Kod uwierzytelniania wiadomości oparty na funkcjach haszujących 193
- 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
Kategoria: | Hacking |
Zabezpieczenie: |
Watermark
|
ISBN: | 978-83-283-7730-1 |
Rozmiar pliku: | 7,2 MB |