Prawdziwy ¶wiat kryptografii
- Najlepsze praktyki dotycz±ce korzystania z
kryptografii
- Schematy i obja¶nienia algorytmów
kryptograficznych
Ksi±¿ka pomaga w
zrozumieniu technik kryptograficznych stosowanych w popularnych
narzêdziach, strukturach i protoko³ach, dziêki czemu Czytelnik ³atwiej
bêdzie móg³ dokonaæ w³a¶ciwych wyborów
zabezpieczeñ dla swoich systemów i aplikacji. Publikacja nie
skupia siê na teorii, ale na aktualnych technikach kryptograficznych,
które s± potrzebne w codziennej pracy. Autor omawia elementy
konstrukcyjne kryptografii, takie jak funkcje skrótu i
wymiana kluczy, oraz pokazuje, jak ich u¿ywaæ w ramach
protoko³ów bezpieczeñstwa i aplikacji.
Ksi±¿ka omawia te¿
najnowocze¶niejsze rozwi±zania, takie jak kryptowaluty, uwierzytelniana
has³em wymiana kluczy i kryptografia postkwantowa. Wszystkie techniki
s± zilustrowane diagramami, rzeczywistymi przypadkami u¿ycia i
przyk³adami kodu, dziêki czemu mo¿na ³atwo zobaczyæ, jak zastosowaæ je
w praktyce.
To niezbêdne ¼ród³o wiedzy dla wszystkich, którzy
chc± pracowaæ jako specjali¶ci ds. cyberbezpieczeñstwa i programi¶ci
zajmuj±cy siê szyfrowaniem danych.
przedmowa xv
podziêkowania xix
o ksi±¿ce xxi
o autorze xxvii
Czê¶æ I
Prymitywy. Sk³adniki kryptografii 1
1
Wprowadzenie 3
1.1. W kryptografii chodzi o zabezpieczenie protoko³ów 4
1.2. Kryptografia symetryczna. Czym jest szyfrowanie symetryczne? 5
1.3. Zasada Kerckhoffsa: tylko klucz pozostaje tajny 7
1.4. Kryptografia asymetryczna. Dwa klucze s± lepsze ni¿ jeden 10
O wymienianiu siê kluczami albo jak uzyskaæ dostêp do
wspólnego sekretu 11
■ Szyfrowanie asymetryczne, nie myliæ z symetrycznym 14 ■ Podpisy
cyfrowe, zupe³nie jak te tradycyjne 16
1.5. Kryptografia: klasyfikacje i abstrakcje 18
1.6. Kryptografia teoretyczna a prawdziwy ¶wiat kryptografii 20
1.7. Od teorii do praktyki. Ka¿dy mo¿e pój¶æ w³asn± ¶cie¿k±
21
1.8. S³owo ostrze¿enia 26
2
Funkcje
skrótu (funkcje haszuj±ce) 28
2.1. Czym jest funkcja skrótu? 29
2.2. W³a¶ciwo¶ci zabezpieczeñ funkcji skrótu 32
2.3. Uwarunkowania zabezpieczeñ funkcji skrótu 34
2.4. Funkcje skrótu w praktyce 36
Zobowi±zania 36 ■ Integralno¶æ zasobów podrzêdnych 36 ■
BitTorrent 37 ■ Tor 37
2.5. Znormalizowane funkcje skrótu 38
Funkcja haszuj±ca SHA-2 39 ■ Funkcja haszuj±ca SHA-3 43 ■ SHAKE i
cSHAKE. Dwie funkcje o rozszerzalnym wyj¶ciu (XOF) 47 ■ Jak unikn±æ
wieloznacznego haszowania za pomoc± TupleHash 48
2.6. Haszowanie hase³ 50
3
Kody uwierzytelniania
wiadomo¶ci 54
3.1. Ciasteczka bezstanowe – motywuj±cy przyk³ad dla MAC 55
3.2. Kod z przyk³adem 58
3.3. W³a¶ciwo¶ci zabezpieczeñ MAC 59
Fa³szerstwo znacznika uwierzytelniania 59 ■ D³ugo¶æ znacznika
uwierzytelniania 60 ■ Ataki powtórzeniowe 60 ■ Weryfikacja
znaczników uwierzytelniania w sta³ym czasie 62
3.4. MAC w prawdziwym ¶wiecie 64
Uwierzytelnianie wiadomo¶ci 64 ■ Wyprowadzanie kluczy 64 ■ Integralno¶æ
ciasteczek 65 ■ Tablice mieszaj±ce 65
3.5. Kody uwierzytelniania wiadomo¶ci w praktyce 65
HMAC, czyli MAC oparty na haszu 65 ■ KMAC, czyli MAC oparty na cSHAKE 67
3.6. SHA-2 i ataki przed³u¿enia d³ugo¶ci 67
4 Szyfrowanie uwierzytelnione 71
4.1. Czym jest szyfr? 72
4.2. Szyfr blokowy AES 74
Jaki poziom bezpieczeñstwa zapewnia AES? 74 ■ Interfejs AES 75 ■
Wewnêtrzna konstrukcja AES 76
4.3. Zaszyfrowany pingwin i tryb CBC 78
4.4. Na brak uwierzytelnienia – AES-CBC-HMAC 81
4.5. Konstrukcje typu „wszystko w jednym”.
Szyfrowanie uwierzytelnione 83
Czym jest szyfrowanie uwierzytelnione z powi±zanymi danymi (AEAD)? 83
■ Algorytm AEAD o nazwie AES-GCM 85 ■ ChaCha20-Poly1305 90
4.6. Inne rodzaje szyfrowania symetrycznego 94
Opakowywanie klucza 94 ■ Szyfrowanie uwierzytelnione odporne na
niepoprawne u¿ycie nonce 95 ■ Szyfrowanie dysku 95 ■ Szyfrowanie baz
danych 96
5
Wymiany klucza 98
5.1. Czym s± wymiany klucza? 99
5.2. Wymiana klucza Diffiego-Hellmana (DH) 102
Teoria grup 102 ■ Problem logarytmu dyskretnego. Fundament algorytmu
Diffiego-Hellmana 107 ■ Normy algorytmu Diffiego-Hellmana 109
5.3. Wymiana kluczy przy u¿yciu protoko³u Diffiego-Hellmana w
przestrzeni krzywych eliptycznych 110
Czym jest krzywa eliptyczna? 111 ■ Jak dzia³a algorytm
Diffiego-Hellmana oparty na krzywych eliptycznych? 114 ■ Normy dla
algorytmu Diffiego-Hellmana w przestrzeni krzywych eliptycznych 116
5.4. Atak przeciwko ma³ym podgrupom i inne czynniki zwi±zane z
bezpieczeñstwem 118
6 Szyfrowanie asymetryczne i szyfrowanie hybrydowe 123
6.1. Czym jest szyfrowanie asymetryczne? 124
6.2. Szyfrowanie asymetryczne i szyfrowanie hybrydowe w praktyce 126
Wymiany klucza i kapsu³kowanie klucza 127 ■ Szyfrowanie hybrydowe 128
6.3. Szyfrowanie asymetryczne przy u¿yciu RSA: z³e i mniej z³e 132
Podrêcznikowe RSA 132 ■ Dlaczego nie nale¿y u¿ywaæ RSA PKCS#1 v1.5 137
■ Szyfrowanie asymetryczne przy u¿yciu RSA-OAEP 139
6.4. Szyfrowanie hybrydowe przy u¿yciu ECIES 142
7
Podpisy i dowody z
wiedz± zerow± 145
7.1. Czym jest podpis? 146
Jak w praktyce weryfikowaæ podpisy 147 ■ Najwa¿niejszy przypadek u¿ycia
podpisów, czyli uwierzytelnione wymiany klucza 148 ■
Rzeczywisty przypadek u¿ycia.
Infrastruktura klucza publicznego 149
7.2. Dowody z wiedz± zerow± (ZKP). Pochodzenie podpisów 151
Protokó³ identyfikacji Schnorra. Interaktywny
dowód z wiedz± zerow± 151
■ Podpisy jako nieinteraktywne dowody z wiedz± zerow± 154
7.3. Algorytmy podpisów, z których powinni¶my
korzystaæ (lub nie) 156
RSA PKCS#1 v1.5, czyli z³a norma 157 ■ RSA-PSS. Lepsza norma 160
■ Algorytm podpisu elektronicznego oparty na krzywych eliptycznych 161
■ Algorytm podpisu cyfrowego oparty na krzywej Edwardsa 164
7.4. Subtelno¶ci schematów podpisów 168
Ataki podstawieniowe na podpisy 168 ■ Deformowalno¶æ podpisu 169
8
Losowo¶æ i sekrety 172
8.1. Czym jest losowo¶æ? 173
8.2. Powolna losowo¶æ? Skorzystajmy z generatora liczb pseudolosowych
(PRNG) 175
8.3. Uzyskiwanie losowo¶ci w praktyce 179
8.4. Generowanie losowo¶ci i czynniki zwi±zane z bezpieczeñstwem 181
8.5. Publiczna losowo¶æ 184
8.6. Wyprowadzanie kluczy za pomoc± HKDF 186
8.7. Zarz±dzanie kluczami i sekretami 190
8.8. Decentralizacja zaufania za pomoc± kryptografii progowej 192
Czê¶æ II
Protoko³y,
czyli przepisy na kryptografiê 197
9
Bezpieczny transport
199
9.1. Bezpieczne protoko³y transportowe: SSL i TLS 199
Od SSL do TLS 200 ■ TLS w praktyce 201
9.2. Jak dzia³a protokó³ TLS? 203
Handshake TLS 204 ■ Jak TLS 1.3 szyfruje dane aplikacji 218
9.3. Aktualny stan szyfrowania w sieci web 219
9.4. Inne bezpieczne protoko³y transportowe 222
9.5. Framework protoko³u Noise. Wspó³czesna alternatywa dla
TLS 222
Wiele odcieni fazy handshake 223 ■ Handshake przy u¿yciu Noise 224
10
Szyfrowanie
od koñca do koñca 227
10.1. Dlaczego szyfrowanie od koñca do koñca? 228
10.2. Niemo¿liwe do odnalezienia ¼ród³o zaufania 230
10.3. Pora¿ka szyfrowanych e-maili 231
PGP czy GPG? I jak to w ogóle dzia³a? 232 ■ Skalowanie
zaufania pomiêdzy u¿ytkownikami za pomoc± sieci zaufania 235 ■
Odkrywanie kluczy to prawdziwy problem 236 ■
Je¶li nie PGP, to co? 238
10.4. Bezpieczne przesy³anie wiadomo¶ci. Nowoczesne spojrzenie na
szyfrowanie od koñca do koñca w aplikacji Signal 239
Bardziej przyjazny dla u¿ytkownika ni¿ WOT. Ufaj, ale weryfikuj 241 ■
X3DH. Handshake protoko³u Signal 243 ■ Podwójna Zapadka.
Protokó³ post-handshake Signala 247
10.5. Stan szyfrowania od koñca do koñca 252
11
Uwierzytelnianie
u¿ytkownika 256
11.1. Uwierzytelnianie – kilka s³ów podsumowania
257
11.2. Uwierzytelnianie u¿ytkownika, czyli jak pozbyæ siê hase³ 259
Jedno has³o, by rz±dziæ wszystkimi. Pojedyncze logowanie (SSO) i
mened¿ery
hase³ 261 ■ Nie chcecie widzieæ hase³? U¿yjcie asymetrycznej wymiany
kluczy uwierzytelnianej has³em 263 ■ Has³a jednorazowe to tak naprawdê
nie has³a. Bezhas³owo¶æ przy u¿yciu kluczy symetrycznych 268 ■ Jak
zast±piæ has³a kluczami asymetrycznymi 271
11.3. Uwierzytelnianie wspomagane przez u¿ytkownika –
parowanie urz±dzeñ wykorzystuj±ce wsparcie cz³owieka 274
Klucze wstêpnie wspó³dzielone 276 ■ Symetryczne
uwierzytelnianie has³em
wymiany klucza przy u¿yciu CPace 278 ■ Czy nasz± wymianê klucza
zaatakowa³ po¶rednik? Po prostu sprawd¼my krótki ci±g
uwierzytelniony (SAS) 279
12
Krypto jak w s³owie
„kryptowaluta”? 285
12.1. Wprowadzenie do algorytmów konsensusu tolerancyjnych
na bizantyjskie b³êdy 286
Problem odporno¶ci. Protoko³y rozproszone przychodz± na ratunek 287 ■
Problem zaufania? Decentralizacja przychodzi z pomoc± 288 ■ Problem
skali. Sieci
bezpozwoleniowe i odporne na cenzurê 290
12.2. Jak dzia³a bitcoin? 292
W jaki sposób bitcoin obs³uguje salda u¿ytkownika i
transakcje 292 ■ Wydobywanie bitcoinów w cyfrowej z³otej
erze 294 ■ Jasny fork! Rozwi±zywanie konfliktów
wydobywczych 298 ■ Redukcja rozmiaru bloku za pomoc± drzew Merkle 301
12.3. Wycieczka po ¶wiecie kryptowalut 303
Zmienna warto¶æ 303 ■ Latencja 303 ■ Rozmiar ³añcucha bloków
304
■ Poufno¶æ 304 ■ Wydajno¶æ energetyczna 304
12.4. DiemBFT. Tolerancyjny na bizantyjskie b³êdy protokó³
konsensusu 305
Bezpieczeñstwo i ¿ywotno¶æ. Dwie w³asno¶ci protoko³u konsensusu BFT 305
■ Runda w protokole DiemBFT 306 ■ Ile nieuczciwo¶ci mo¿e tolerowaæ
protokó³? 307
■ Zasady g³osowania DiemBFT 308 ■ Kiedy transakcje uwa¿a siê za
sfinalizowane? 309 ■ Intuicje stoj±ce za bezpieczeñstwem DiemBFT 310
13
Kryptografia sprzêtowa
314
13.1. Model napastnika we wspó³czesnej kryptografii 315
13.2. Niezaufane ¶rodowiska. Sprzêcie, ratuj! 316
Kryptografia bia³ej skrzynki – z³y pomys³ 317 ■ Siedz± w
naszych portfelach. Inteligentne karty i bezpieczne elementy 318 ■
Banki je uwielbiaj±. Sprzêtowe modu³y
bezpieczeñstwa 320 ■ Modu³y zaufanej platformy (TPM). Przydatna
normalizacja elementów bezpiecznych 323 ■ Poufne obliczenia
z zaufanym ¶rodowiskiem
wykonawczym 327
13.3. Które rozwi±zanie bêdzie dobre dla mnie? 328
13.4. Kryptografia odporna na wycieki, czyli jak z³agodziæ ataki kana³em
bocznym w oprogramowaniu 330
Programowanie sta³oczasowe 332 ■ Nie korzystaj z sekretu! Maskowanie 334
■ A co z atakami usterek? 335
14
Kryptografia
postkwantowa 338
14.1. Czym s± komputery kwantowe i dlaczego strasz±
kryptografów? 339
Mechanika kwantowa – studium rzeczy ma³ych 340 ■ Od narodzin
komputerów
kwantowych po supremacjê kwantow± 342 ■ Wp³yw algorytmów
Grovera i Shora
na kryptografiê 343 ■ Kryptografia postkwantowa, czyli jak siê broniæ
przed komputerami kwantowymi 345
14.2. Podpisy oparte na haszach. Nie potrzeba niczego poza funkcj±
skrótu 346
Podpisy jednorazowe (OTS) z podpisami Lamporta 346 ■ Mniejsze klucze i
jednorazowe podpisy Winternitza 348 ■ Podpisy wielorazowe z XMSS oraz
SPHINCS+ 349
14.3. Krótsze klucze i podpisy dziêki kryptografii opartej
na kratach 353
Czym jest krata? 353 ■ Uczenie siê z b³êdami podstaw± kryptografii? 355
■ Kyber, czyli wymiana klucza oparta na kracie 356 ■ Dilithium
– schemat podpisu oparty na kracie 359
14.4. Czy powinni¶my zacz±æ panikowaæ? 360
15
Czy to ju¿ wszystko?
Kryptografia nastêpnej generacji 364
15.1. Im wiêcej, tym lepiej. Bezpieczne obliczenia wielostronne 365
Przeciêcie zbiorów prywatnych (PSI) 366 ■ MPC
ogólnego przeznaczenia 367
■ Stan MPC 370
15.2. W pe³ni homomorficzne szyfrowania i obietnica zaszyfrowanej
chmury 370
Przyk³ad szyfrowania homomorficznego z szyfrowaniem RSA 371 ■
Ró¿ne typy szyfrowania homomorficznego 371 ■ Bootstrapping,
klucz do w pe³ni homomorficznego szyfrowania 372 ■ Schemat FHE oparty
na problemie uczenia siê z b³êdami 374 ■ Gdzie siê z tego korzysta? 376
15.3. Dowody z wiedz± zerow± ogólnego przeznaczenia 377
15.3.1. Jak dzia³aj± schematy zk-SNARK 380 ■ Zobowi±zania homomorficzne
– ukrywamy czê¶ci dowodu 381 ■ Parowania bilinearne
– ulepszamy nasze zobowi±zania homomorficzne 381 ■ Sk±d siê
bierze zwiêz³o¶æ? 382 ■ Od programów
do wielomianów 384 ■ Programy s± dla komputerów;
nam potrzebne s± uk³ady arytmetyczne 383 ■ Uk³ady arytmetyczne R1CS 384
■ Od R1CS do wielomianu 385 ■ Trzeba dwojga, aby okre¶liæ warto¶æ
wielomianu ukrytego w wyk³adniku 386
16
Kiedy i gdzie
kryptografia zawodzi 389
16.1. Szukanie w³a¶ciwego prymitywu kryptograficznego lub protoko³u to
nudna praca 390
16.2. W jaki sposób korzystam z prymitywu kryptograficznego
lub protoko³u?
Uprzejme normy i formalna weryfikacja 392
16.3. Gdzie s± dobre biblioteki? 395
16.4. Niew³a¶ciwe wykorzystanie kryptografii. Programi¶ci to wrogowie
396
16.5. Robicie to ¼le. U¿yteczne zabezpieczenia 397
16.6. Kryptografia nie jest wysp± 399
16.7. Nasze obowi±zki jako praktyków kryptografii. Dlaczego
nie powinni¶my wdra¿aæ w³asnej kryptografii 400
Dodatek Odpowiedzi do æwiczeñ 404
Rozdzia³ 2 404
Rozdzia³ 3 405
Rozdzia³ 6 405
Rozdzia³ 7 406
Rozdzia³ 8 406
Rozdzia³ 9 406
Rozdzia³ 10 407
Rozdzia³ 11 407
440 stron, Format:
16.5x23.5cm, oprawa miêkka