Cyfroteka.pl

klikaj i czytaj online

Cyfro
Czytomierz
00128 007917 11008281 na godz. na dobę w sumie
Kryptografia w praktyce - książka
Kryptografia w praktyce - książka
Autor: , Liczba stron: 296
Wydawca: Helion Język publikacji: polski
ISBN: 83-7361-211-4 Data wydania:
Lektor:
Kategoria: ebooki >> komputery i informatyka >> hacking >> kryptografia
Porównaj ceny (książka, ebook, audiobook).

Światowej klasy eksperci kryptografii powiedzą Ci,
jak zabezpieczyć Twoją cyfrową przyszłość.

Obecnie najważniejszym zagadnieniem w świecie biznesu jest bezpieczeństwo. Nie mając bezpiecznego systemu komputerowego nie można zarabiać pieniędzy, nie można rozwijać działalności, więc tak naprawdę nie sposób przetrwać na rynku. Kryptografia jawi się jako metoda zapewnienia bezpieczeństwa w cyberprzestrzeni. Co ciekawe, nie pojawiły się jeszcze książki poświęcone implementowaniu kryptografii i włączaniu jej w używane na co dzień systemy.

W większości przypadków kryptografia dała internetowej społeczności niewiele ponad złudne poczucie bezpieczeństwa, gdyż tak naprawdę bezpieczeństwa tego dotąd nie ma. Sytuacja taka nie sprzyja nikomu... poza włamywaczami.

Niniejsza książka, autorstwa spółki niekwestionowanych autorytetów światowych, wypełnia tę lukę pokazując, jak implementować metody kryptografii w praktyce; książka ta stanowi zatem połączenie teorii z praktyką informatyczną.

W książce opisano między innymi:

O autorach:
Niels Ferguson ma ogromne doświadczenie w projektowaniu i implementacji algorytmów i protokołów kryptograficznych oraz dużych systemów zabezpieczeń. [więcej...\

Bruce Schneier jest założycielem i dyrektorem technicznym firmy zajmującej się monitorowaniem bezpieczeństwa, to światowej sławy naukowiec, ekspert w dziedzinie bezpieczeństwa. [więcej...\

Znajdź podobne książki Ostatnio czytane w tej kategorii

Darmowy fragment publikacji:

IDZ DO IDZ DO PRZYK£ADOWY ROZDZIA£ PRZYK£ADOWY ROZDZIA£ SPIS TREĎCI SPIS TREĎCI KATALOG KSI¥¯EK KATALOG KSI¥¯EK KATALOG ONLINE KATALOG ONLINE ZAMÓW DRUKOWANY KATALOG ZAMÓW DRUKOWANY KATALOG TWÓJ KOSZYK TWÓJ KOSZYK DODAJ DO KOSZYKA DODAJ DO KOSZYKA CENNIK I INFORMACJE CENNIK I INFORMACJE ZAMÓW INFORMACJE ZAMÓW INFORMACJE O NOWOĎCIACH O NOWOĎCIACH ZAMÓW CENNIK ZAMÓW CENNIK CZYTELNIA CZYTELNIA FRAGMENTY KSI¥¯EK ONLINE FRAGMENTY KSI¥¯EK ONLINE Wydawnictwo Helion ul. Chopina 6 44-100 Gliwice tel. (32)230-98-63 e-mail: helion@helion.pl Kryptografia w praktyce Autorzy: Niels Ferguson, Bruce Schneier T³umaczenie: Romasz ¯mijewski ISBN: 83-7361-211-4 Tytu³ orygina³u: Practical Cryptography Format: B5, stron: 290 Obecnie najwa¿niejszym zagadnieniem w ġwiecie biznesu jest bezpieczeñstwo. Nie maj¹c bezpiecznego systemu komputerowego nie mo¿na zarabiaæ pieniêdzy, nie mo¿na rozwijaæ dzia³alnoġci, wiêc tak naprawdê nie sposób przetrwaæ na rynku. Kryptografia jawi siê jako metoda zapewnienia bezpieczeñstwa w cyberprzestrzeni. Co ciekawe, nie pojawi³y siê jeszcze ksi¹¿ki poġwiêcone implementowaniu kryptografii i w³¹czaniu jej w u¿ywane na co dzieñ systemy. W wiêkszoġci przypadków kryptografia da³a internetowej spo³ecznoġci niewiele ponad z³udne poczucie bezpieczeñstwa, gdy¿ tak naprawdê bezpieczeñstwa tego dot¹d nie ma. Sytuacja taka nie sprzyja nikomu… poza w³amywaczami. Niniejsza ksi¹¿ka, autorstwa spó³ki niekwestionowanych autorytetów ġwiatowych, wype³nia tê lukê pokazuj¹c, jak implementowaæ metody kryptografii w praktyce; ksi¹¿ka ta stanowi zatem po³¹czenie teorii z praktyk¹ informatyczn¹. W ksi¹¿ce opisano miêdzy innymi: • Praktyczne zasady doboru i u¿ycia kryptograficznych funkcji elementarnych, od szyfrów blokowych po podpisy cyfrowe. • Implementacjê algorytmów kryptograficznych i budowê bezpiecznych systemów. • Spójn¹ filozofiê projektowania daj¹ca gwarancjê, ¿e ostatecznie ca³y system uzyska ¿¹dany poziom bezpieczeñstwa. • Dlaczego bezpieczeñstwo wp³ywa na wszystkie sk³adniki systemu i dlaczego ma ono byæ podstawowym celem projektu? • Jak proste interfejsy funkcji kryptograficznych pozwalaj¹ ograniczyæ z³o¿onoġæ systemu i zwiêkszyæ jego bezpieczeñstwo? O autorach: Niels Ferguson jest in¿ynierem i konsultantem kryptografii. Ma on ogromne doġwiadczenie w projektowaniu i implementacji algorytmów i protoko³ów kryptograficznych oraz du¿ych systemów zabezpieczeñ. Wczeġniej pracowa³ na rzecz DigiCash i CWI; w Counterpane Internet Security ġciġle wspó³pracowa³ z Brucem Schneierem. Opublikowa³ wiele prac naukowych z dziedziny kryptografii. Bruce Schneier jest za³o¿ycielem i dyrektorem technicznym Counterpane Internet Security, firmy zajmuj¹cej siê monitorowaniem bezpieczeñstwa. Ten ġwiatowej s³awy naukowiec, ekspert w dziedzinie bezpieczeñstwa, jest autorem ksi¹¿ek „Secrets and Lies: Digital Security in a Networked World” oraz „Applied Cryptography” wydanych przez Wiley Technology Publishing. Spis treści Wstęp ...................................................a...................................................a...............13 Jak czytać tę książkę ...................................................ę...................................................ę.............................. 14 1. Nasza filozofia projektowa ...................................................a.................................17 1.1. Zgubne skutki wydajności ...................................................ę................................................................. 17 1.2. Przekleństwa rozbudowanych możliwości...................................................ę........................................ 19 2. Otoczka kryptografii ...................................................a...........................................21 2.1. Rola kryptografii...................................................ę...................................................ę............................. 21 2.2. Reguła najsłabszego ogniwa...................................................ę.............................................................. 22 2.3. Wizerunek przeciwnika ...................................................ę...................................................ę.................. 24 2.4. Myślenie paranoiczne ...................................................ę...................................................ę..................... 24 2.4.1. Atak ...................................................ę...................................................ę...................................... 25 2.5. Model zagrożeń ...................................................ę...................................................ę.............................. 26 2.6. Kryptografia nie rozwiązuje problemu...................................................ę.............................................. 27 2.7. Kryptografia jest bardzo trudna...................................................ę......................................................... 28 2.8. Kryptografia jest łatwym elementem systemu ...................................................ę.................................. 28 2.9. Podstawowa literatura...................................................ę...................................................ę..................... 29 3. Wprowadzenie do kryptografii ...................................................a...........................31 3.1. Szyfrowanie ...................................................ę...................................................ę.................................... 31 3.1.1. Zasada Kerckhoffsa ...................................................ę...................................................ę.............. 32 3.2. Potwierdzanie tożsamości...................................................ę.................................................................. 33 3.3. Szyfrowanie z kluczem publicznym...................................................ę.................................................. 34 3.4. Podpis cyfrowy ...................................................ę...................................................ę............................... 35 3.5. PKI...................................................ę...................................................ę.................................................. 36 4 SPIS TREŚCI 3.6. Ataki ...................................................ę...................................................ę............................................... 37 3.6.1. Atak tylko z tekstem zaszyfrowanym...................................................ę...................................... 37 3.6.2. Atak ze znanym tekstem otwartym ...................................................ę......................................... 37 3.6.3. Atak z wybranym tekstem otwartym...................................................ę....................................... 38 3.6.4. Atak z wybranym tekstem zaszyfrowanym...................................................ę............................. 38 3.6.5. Rozróżnianie ataków ...................................................ę............................................................... 39 3.6.6. Atak urodzinowy ...................................................ę...................................................ę.................. 39 3.6.7. Spotkanie pośrodku ...................................................ę...................................................ę.............. 40 3.6.8. Inne rodzaje ataków...................................................ę................................................................. 41 3.7. Poziom bezpieczeństwa...................................................ę...................................................ę.................. 41 3.8. Wydajność ...................................................ę...................................................ę...................................... 42 3.9. Złożoność...................................................ę...................................................ę........................................ 43 Część I Bezpieczeństwo komunikacji 45 4. Szyfry blokowe ...................................................a...................................................a47 4.1. Co to jest szyfr blokowy? ...................................................ę.................................................................. 47 4.2. Rodzaje ataku ...................................................ę...................................................ę................................. 48 4.3. Idealny szyfr blokowy ...................................................ę...................................................ę.................... 49 4.4. Definicja bezpieczeństwa szyfru blokowego ...................................................ę.................................... 49 4.4.1. Parzystość permutacji ...................................................ę.............................................................. 51 4.5. Praktyczne szyfry blokowe...................................................ę................................................................ 52 4.5.1. DES...................................................ę...................................................ę....................................... 52 4.5.2. AES...................................................ę...................................................ę....................................... 55 4.5.3. Serpent ...................................................ę...................................................ę.................................. 57 4.5.4. Twofish...................................................ę...................................................ę................................. 58 4.5.5. Pozostali finaliści AES ...................................................ę............................................................ 59 4.5.6. Ataki przez rozwiązywanie równań ...................................................ę........................................ 60 4.5.7. Którego szyfru blokowego należy użyć?...................................................ę................................. 61 4.5.8. Jak długi powinien być mój klucz? ...................................................ę......................................... 62 5. Tryby szyfrów blokowych ...................................................a..................................63 5.1. Dopełnianie...................................................ę...................................................ę..................................... 63 5.2. ECB ...................................................ę...................................................ę................................................ 64 5.3. CBC ...................................................ę...................................................ę................................................ 65 5.3.1. Stały IV...................................................ę...................................................ę................................. 65 5.3.2. IV jako licznik ...................................................ę...................................................ę...................... 65 5.3.3. Losowy IV ...................................................ę...................................................ę............................ 66 5.3.4. Jednorazowy IV...................................................ę...................................................ę.................... 66 5.4. OFB ...................................................ę...................................................ę................................................ 67 5.5. CTR ...................................................ę...................................................ę................................................ 68 5.6. Nowe tryby ...................................................ę...................................................ę..................................... 69 5.7. Którego trybu należy użyć?...................................................ę............................................................... 70 5.8. Wycieki informacji ...................................................ę...................................................ę......................... 71 5.8.1. Prawdopodobieństwo kolizji ...................................................ę................................................... 72 5.8.2. Jak radzić sobie z wyciekami ...................................................ę.................................................. 73 5.8.3. O naszym podejściu do matematyki...................................................ę........................................ 74 SPIS TREŚCI 5 6. Funkcje mieszające ...................................................a.............................................75 6.1. Bezpieczeństwo funkcji mieszających ...................................................ę.............................................. 76 6.2. Prawdziwe funkcje mieszające...................................................ę.......................................................... 77 6.2.1. MD5...................................................ę...................................................ę...................................... 78 6.2.2. SHA-1...................................................ę...................................................ę................................... 78 6.2.3. SHA-256, SHA-384 i SHA-512 ...................................................ę.............................................. 79 6.3. Słabe punkty funkcji mieszających ...................................................ę................................................... 79 6.3.1. Wydłużanie...................................................ę...................................................ę........................... 80 6.3.2. Kolizja części wiadomości ...................................................ę...................................................... 80 6.4. Usuwanie słabych punktów ...................................................ę............................................................... 81 6.4.1. Rozwiązanie kompletne...................................................ę........................................................... 81 6.4.2. Rozwiązanie wydajne ...................................................ę.............................................................. 82 6.5. Wybór funkcji mieszającej ...................................................ę................................................................ 83 6.6. Ku przyszłości ...................................................ę...................................................ę................................ 84 7. Kody uwierzytelniania wiadomości...................................................a....................85 7.1. Do czego służy MAC ...................................................ę...................................................ę..................... 85 7.2. Idealna funkcja MAC ...................................................ę...................................................ę..................... 85 7.3. Bezpieczeństwo MAC ...................................................ę...................................................ę.................... 86 7.4. CBC-MAC...................................................ę...................................................ę...................................... 87 7.5. HMAC ...................................................ę...................................................ę............................................ 88 7.5.1. HMAC a SHAd ...................................................ę...................................................ę..................... 89 7.6. UMAC ...................................................ę...................................................ę............................................ 90 7.6.1. Rozmiar wyniku MAC ...................................................ę...................................................ę......... 90 7.6.2. Która UMAC? ...................................................ę...................................................ę...................... 90 7.6.3. Elastyczność środowiska ...................................................ę......................................................... 91 7.6.4. Zakres analizy...................................................ę...................................................ę....................... 92 7.6.5. Po co zatem w ogóle wspominać o UMAC?...................................................ę........................... 92 7.7. Którą funkcję MAC wybrać? ...................................................ę............................................................ 92 7.8. Użycie funkcji MAC ...................................................ę...................................................ę...................... 93 8. Bezpieczny kanał ...................................................a................................................95 8.1. Opis zagadnienia...................................................ę...................................................ę............................. 95 8.1.1. Role...................................................ę...................................................ę....................................... 95 8.1.2. Klucz...................................................ę...................................................ę..................................... 96 8.1.3. Wiadomości czy strumień danych...................................................ę........................................... 96 8.1.4. Właściwości bezpieczeństwa...................................................ę................................................... 97 8.2. Kolejność potwierdzania wiarygodności i szyfrowania ...................................................ę.................... 98 8.3. Szkic rozwiązania ...................................................ę...................................................ę........................... 99 8.3.1. Numerowanie wiadomości ...................................................ę...................................................... 99 8.3.2. Potwierdzanie autentyczności...................................................ę................................................ 100 8.3.3. Szyfrowanie ...................................................ę...................................................ę........................ 101 8.3.4. Format ramki ...................................................ę...................................................ę...................... 101 8.4. Szczegóły implementacji...................................................ę................................................................. 101 8.4.1. Inicjalizacja...................................................ę...................................................ę......................... 102 8.4.2. Wysyłanie wiadomości...................................................ę.......................................................... 103 6 SPIS TREŚCI 8.4.3. Odbieranie wiadomości ...................................................ę......................................................... 103 8.4.4. Kolejność wiadomości...................................................ę........................................................... 105 8.5. Alternatywy ...................................................ę...................................................ę.................................. 105 8.6. Podsumowanie...................................................ę...................................................ę.............................. 106 9. O implementacji (I)...................................................a...........................................107 9.1. Tworzenie poprawnych programów...................................................ę................................................ 108 9.1.1. Specyfikacje...................................................ę...................................................ę........................ 108 9.1.2. Testowanie i poprawki...................................................ę........................................................... 109 9.1.3. Lekceważące podejście...................................................ę.......................................................... 110 9.1.4. Co zatem robić? ...................................................ę...................................................ę.................. 110 9.2. Tworzenie bezpiecznego oprogramowania ...................................................ę..................................... 111 9.3. Zachowywanie tajemnic ...................................................ę...................................................ę............... 111 9.3.1. Kasowanie pamięci stanu ...................................................ę...................................................... 112 9.3.2. Plik wymiany...................................................ę...................................................ę...................... 113 9.3.3. Pamięć podręczna ...................................................ę...................................................ę............... 114 9.3.4. Zatrzymanie danych w pamięci...................................................ę............................................. 115 9.3.5. Dostęp osób postronnych...................................................ę....................................................... 117 9.3.6. Integralność danych...................................................ę............................................................... 117 9.3.7. Co robić ...................................................ę...................................................ę.............................. 118 9.4. Jakość kodu źródłowego...................................................ę.................................................................. 118 9.4.1. Prostota ...................................................ę...................................................ę............................... 118 9.4.2. Modularyzacja ...................................................ę...................................................ę.................... 119 9.4.3. Asercje ...................................................ę...................................................ę................................ 120 9.4.4. Przepełnienie bufora ...................................................ę.............................................................. 121 9.4.5. Testowanie...................................................ę...................................................ę.......................... 121 9.5. Ataki bocznym kanałem ...................................................ę...................................................ę............... 122 9.6. Wnioski...................................................ę...................................................ę......................................... 123 Część II Negocjowanie kluczy 125 10. Generowanie wartości losowych ...................................................a......................127 10.1. Wartości prawdziwie losowe...................................................ę........................................................... 128 10.1.1. Problemy związane z użyciem prawdziwych danych losowych ............................................ 128 10.1.2. Dane pseudolosowe ...................................................ę...................................................ę.......... 129 10.1.3. Prawdziwe dane losowe i PRNG...................................................ę......................................... 129 10.2. Modele ataku na PRNG...................................................ę...................................................ę................ 130 10.3. Fortuna...................................................ę...................................................ę.......................................... 131 10.4. Generator ...................................................ę...................................................ę...................................... 131 10.4.1. Inicjalizacja...................................................ę...................................................ę....................... 133 10.4.2. Ponowne przekazanie ziarna ...................................................ę............................................... 133 10.4.3. Generowanie bloków...................................................ę........................................................... 133 10.4.4. Generowanie danych losowych ...................................................ę........................................... 134 10.4.5. Szybkość działania generatora...................................................ę............................................. 135 10.5. Akumulator...................................................ę...................................................ę................................... 135 10.5.1. Źródła entropii ...................................................ę...................................................ę.................. 135 10.5.2. Pule ...................................................ę...................................................ę................................... 136 10.5.3. O implementacji ...................................................ę...................................................ę............... 137 SPIS TREŚCI 7 10.5.4. Inicjalizacja...................................................ę...................................................ę....................... 139 10.5.5. Pobieranie losowych danych ...................................................ę............................................... 140 10.5.6. Dodawanie zdarzenia...................................................ę........................................................... 141 10.6. Obsługa pliku ziarna...................................................ę...................................................ę..................... 142 10.6.1. Zapis pliku ziarna ...................................................ę................................................................ 142 10.6.2. Aktualizacja pliku ziarna ...................................................ę..................................................... 142 10.6.3. Kiedy czytać i zapisywać plik ziarna ...................................................ę.................................. 143 10.6.4. Kopie bezpieczeństwa ...................................................ę......................................................... 143 10.6.5. Atomowość aktualizacji w systemie plików ...................................................ę....................... 144 10.6.6. Pierwsze uruchomienie...................................................ę........................................................ 144 10.7. Co zatem robić? ...................................................ę...................................................ę............................ 145 10.8. Dobieranie elementów losowych...................................................ę..................................................... 145 11. Liczby pierwsze ...................................................a................................................147 11.1. Podzielność i liczby pierwsze...................................................ę.......................................................... 147 11.2. Generowanie małych liczb pierwszych ...................................................ę........................................... 149 11.3. Operacje arytmetyczne modulo liczba pierwsza ...................................................ę............................. 150 11.3.1. Dodawanie i odejmowanie ...................................................ę.................................................. 151 11.3.2. Mnożenie ...................................................ę...................................................ę.......................... 151 11.3.3. Ciała skończone i grupy ...................................................ę...................................................... 151 11.3.4. Algorytm NWD ...................................................ę...................................................ę................ 152 11.3.5. Rozszerzony algorytm Euklidesa ...................................................ę........................................ 153 11.3.6. Działania modulo 2...................................................ę.............................................................. 154 11.4. Duże liczby pierwsze...................................................ę...................................................ę.................... 155 11.4.1. Testowanie pierwszości...................................................ę....................................................... 157 11.4.2. Potęgowanie...................................................ę...................................................ę...................... 159 12. Diffie-Hellman...................................................a..................................................161 12.1. Grupy ...................................................ę...................................................ę............................................ 161 12.2. Wersja podstawowa DH ...................................................ę...................................................ę............... 162 12.3. Man-in-the-middle...................................................ę...................................................ę........................ 163 12.4. Pułapki ...................................................ę...................................................ę.......................................... 164 12.5. Bezpieczne liczby pierwsze...................................................ę............................................................. 165 12.6. Używanie mniejszej podgrupy ...................................................ę........................................................ 166 12.7. Rozmiar p ...................................................ę...................................................ę..................................... 167 12.8. Zasady praktyczne ...................................................ę...................................................ę........................ 168 12.9. Co może się nie udać? ...................................................ę..................................................................... 169 13. RSA...................................................a...................................................a................171 13.1. Wprowadzenie ...................................................ę...................................................ę.............................. 171 13.2. Chińskie twierdzenie o resztach ...................................................ę...................................................... 171 13.2.1. Wzór Garnera ...................................................ę...................................................ę................... 172 13.2.2. Uogólnienia ...................................................ę...................................................ę...................... 173 13.2.3. Zastosowania ...................................................ę...................................................ę.................... 173 13.2.4. Wnioski...................................................ę...................................................ę............................. 174 8 SPIS TREŚCI 13.3. Mnożenie modulo n ...................................................ę...................................................ę...................... 174 13.4. Definicja RSA...................................................ę...................................................ę............................... 175 13.4.1. RSA i podpisy cyfrowe...................................................ę........................................................ 175 13.4.2. Wykładniki publiczne...................................................ę.......................................................... 176 13.4.3. Klucz prywatny...................................................ę...................................................ę................. 176 13.4.4. Wielkość n ...................................................ę...................................................ę........................ 177 13.4.5. Generowanie kluczy RSA ...................................................ę................................................... 178 13.5. Pułapki związane z użyciem RSA ...................................................ę................................................... 179 13.6. Szyfrowanie ...................................................ę...................................................ę.................................. 180 13.7. Podpisy ...................................................ę...................................................ę......................................... 182 14. Wprowadzenie do protokołów kryptograficznych...............................................185 14.1. Role...................................................ę...................................................ę............................................... 185 14.2. Zaufanie ...................................................ę...................................................ę........................................ 185 14.2.1. Ryzyko...................................................ę...................................................ę.............................. 187 14.3. Motywacje ...................................................ę...................................................ę.................................... 187 14.4. Zaufanie w protokołach kryptograficznych...................................................ę..................................... 189 14.5. Wiadomości i etapy ...................................................ę...................................................ę...................... 189 14.5.1. Warstwa nośna (transportowa) ...................................................ę............................................ 189 14.5.2. Tożsamość protokołu i wiadomości ...................................................ę....................................190 14.5.3. Kodowanie i analiza wiadomości ...................................................ę........................................ 191 14.5.4. Stany wykonania protokołu ...................................................ę................................................. 191 14.5.5. Błędy...................................................ę...................................................ę................................. 192 14.5.6. Powtórki i ponowne próby ...................................................ę.................................................. 193 15. Protokół negocjacji klucza...................................................a................................195 15.1. Otoczenie ...................................................ę...................................................ę...................................... 195 15.2. Pierwsze podejście...................................................ę...................................................ę........................ 196 15.3. Protokoły są wieczne ...................................................ę...................................................ę.................... 197 15.4. Konwencja potwierdzania autentyczności...................................................ę....................................... 197 15.5. Drugie podejście ...................................................ę...................................................ę........................... 198 15.6. Trzecie podejście ...................................................ę...................................................ę.......................... 199 15.7. Ostateczna postać protokołu...................................................ę............................................................ 199 15.8. Różne spojrzenia na protokół ...................................................ę.......................................................... 202 15.8.1. Punkt widzenia Alicji ...................................................ę.......................................................... 202 15.8.2. Punkt widzenia Boba ...................................................ę........................................................... 202 15.8.3. Punkt widzenia atakującego ...................................................ę................................................ 202 15.8.4. Ujawnienie klucza ...................................................ę...................................................ę............ 203 15.9. Złożoność obliczeniowa protokołu...................................................ę.................................................. 204 15.9.1. Sztuczki optymalizacyjne ...................................................ę.................................................... 205 15.10. Złożoność protokołu ...................................................ę...................................................ę..................... 205 15.11. Małe ostrzeżenie ...................................................ę...................................................ę........................... 206 15.12. Negocjacja klucza na podstawie hasła...................................................ę............................................. 206 SPIS TREŚCI 9 16. O implementacji (II) ...................................................a.........................................209 16.1. Arytmetyka dużych liczb całkowitych ...................................................ę............................................ 209 16.1.1. Wooping ...................................................ę...................................................ę........................... 210 16.1.2. Sprawdzanie obliczeń DH ...................................................ę................................................... 212 16.1.3. Sprawdzanie szyfrowania RSA ...................................................ę........................................... 213 16.1.4. Sprawdzanie podpisów RSA ...................................................ę............................................... 213 16.1.5. Wnioski...................................................ę...................................................ę............................. 213 16.2. Przyspieszenie mnożenia...................................................ę................................................................. 214 16.3. Ataki bocznym kanałem ...................................................ę.................................................................. 215 16.3.1. Środki zaradcze...................................................ę...................................................ę................. 215 16.4. Protokoły ...................................................ę...................................................ę...................................... 216 16.4.1. Protokoły w bezpiecznym kanale ...................................................ę........................................ 217 16.4.2. Odbieranie komunikatów ...................................................ę.................................................... 217 16.4.3. Brak odpowiedzi w zadanym czasie...................................................ę....................................218 Część III Zarządzanie kluczami 219 17. Zegar ...................................................a...................................................a..............221 17.1. Zastosowania zegara...................................................ę...................................................ę..................... 221 17.1.1. Utrata ważności ...................................................ę...................................................ę................ 221 17.1.2. Niepowtarzalne wartości ...................................................ę..................................................... 221 17.1.3. Monotoniczność...................................................ę...................................................ę................ 222 17.1.4. Transakcje w czasie rzeczywistym...................................................ę...................................... 222 17.2. Użycie sprzętowego zegara ...................................................ę............................................................. 223 17.3. Zagrożenia dla bezpieczeństwa ...................................................ę....................................................... 223 17.3.1. Cofnięcie zegara ...................................................ę...................................................ę............... 223 17.3.2. Zatrzymanie zegara...................................................ę.............................................................. 224 17.3.3. Przestawianie zegara w przód...................................................ę.............................................. 224 17.4. Budowa niezawodnego zegara ...................................................ę........................................................ 225 17.5. Problem takiego samego stanu ...................................................ę........................................................ 226 17.6. Czas ...................................................ę...................................................ę.............................................. 227 17.7. Wnioski...................................................ę...................................................ę......................................... 228 18. Serwery kluczy ...................................................a.................................................229 18.1. Podstawy...................................................ę...................................................ę....................................... 229 18.2. Kerberos...................................................ę...................................................ę........................................ 230 18.3. Prostsze rozwiązania...................................................ę...................................................ę..................... 230 18.3.1. Bezpieczne połączenie...................................................ę......................................................... 231 18.3.2. Przygotowanie klucza...................................................ę.......................................................... 231 18.3.3. Zmiana klucza...................................................ę...................................................ę................... 232 18.3.4. Inne właściwości...................................................ę...................................................ę............... 232 18.4. Jak dokonać wyboru ...................................................ę...................................................ę..................... 232 10 SPIS TREŚCI 19. Marzenia o PKI ...................................................a.................................................233 19.1. Krótkie wprowadzenie do PKI ...................................................ę........................................................ 233 19.2. Przykładowy PKI...................................................ę...................................................ę.......................... 234 19.2.1. Uniwersalne PKI...................................................ę...................................................ę............... 234 19.2.2. Dostęp VPN...................................................ę...................................................ę...................... 234 19.2.3. Bankowość elektroniczna ...................................................ę.................................................... 234 19.2.4. Czujniki w rafinerii...................................................ę.............................................................. 234 19.2.5. Centrum kart kredytowych ...................................................ę.................................................. 235 19.3. Dodatkowe szczegóły ...................................................ę...................................................ę................... 235 19.3.1. Certyfikaty wielopoziomowe ...................................................ę.............................................. 235 19.3.2. Wygasanie certyfikatów ...................................................ę...................................................... 236 19.3.3. Osobny podmiot rejestrujący...................................................ę............................................... 236 19.4. Wnioski...................................................ę...................................................ę......................................... 237 20. Rzeczywistość PKI ...................................................a...........................................239 20.1. Nazwy...................................................ę...................................................ę........................................... 239 20.2. Podmiot decydujący ...................................................ę...................................................ę..................... 241 20.3. Zaufanie ...................................................ę...................................................ę........................................ 241 20.4. Autoryzacja pośrednia ...................................................ę..................................................................... 242 20.5. Autoryzacja bezpośrednia...................................................ę................................................................ 242 20.6. Systemy delegacji uprawnień ...................................................ę.......................................................... 243 20.7. Marzenie po modyfikacjach ...................................................ę............................................................ 244 20.8. Odbieranie uprawnień...................................................ę...................................................ę................... 245 20.8.1. Lista odwołań ...................................................ę...................................................ę................... 245 20.8.2. Krótki okres ważności ...................................................ę......................................................... 246 20.8.3. Odwoływanie jest potrzebne ...................................................ę............................................... 246 20.9. Do czego naprawdę służy PKI?...................................................ę....................................................... 247 20.10. Co wybrać...................................................ę...................................................ę..................................... 248 21. PKI w praktyce ...................................................a.................................................249 21.1. Format certyfikatu ...................................................ę...................................................ę........................ 249 21.1.1. Język uprawnień ...................................................ę...................................................ę............... 249 21.1.2. Klucz główny...................................................ę...................................................ę.................... 250 21.2. Cykl życia klucza...................................................ę...................................................ę.......................... 250 21.3. Czemu klucze się zużywają...................................................ę............................................................. 252 21.4. Co zatem zrobić? ...................................................ę...................................................ę.......................... 253 22. Przechowywanie tajemnic ...................................................a................................255 22.1. Dysk...................................................ę...................................................ę.............................................. 255 22.2. Pamięć ludzka...................................................ę...................................................ę............................... 256 22.2.1. Solenie i rozciąganie...................................................ę............................................................ 257 22.3. Pamięć przenośna ...................................................ę...................................................ę......................... 258 22.4. Token bezpieczeństwa...................................................ę...................................................ę.................. 259 SPIS TREŚCI 11 22.5. Bezpieczny interfejs użytkownika...................................................ę................................................... 260 22.6. Dane biometryczne ...................................................ę...................................................ę....................... 260 22.7. Jednorazowa rejestracja...................................................ę................................................................... 261 22.8. Ryzyko utraty ...................................................ę...................................................ę............................... 262 22.9. Wspólne tajemnice ...................................................ę...................................................ę....................... 262 22.10. Usuwanie tajemnic ...................................................ę...................................................ę....................... 263 22.10.1. Papier ......................................ę...................................................ę........................................... 263 22.10.2. Pamięć magnetyczna ...................................................ę......................................................... 263 22.10.3. Pamięci trwałe ...................................................ę...................................................ę................ 264 Część IV Różności 265 23. Standardy ...................................................a...................................................a.......267 23.1. Proces tworzenia standardów ...................................................ę.......................................................... 267 23.1.1. Standard ...................................................ę...................................................ę............................ 268 23.1.2. Funkcjonalność...................................................ę...................................................ę................. 268 23.1.3. Bezpieczeństwo ...................................................ę...................................................ę................ 269 23.2. SSL ...................................................ę...................................................ę............................................... 269 23.3. AES: standaryzacja w wyniku konkursu ...................................................ę......................................... 270 24. Patenty ...................................................a...................................................a...........271 24.1. Stan zastany ...................................................ę...................................................ę.................................. 271 24.2. Kontynuacje...................................................ę...................................................ę.................................. 272 24.3. Niepewność ...................................................ę...................................................ę.................................. 272 24.4. Czytanie patentów ...................................................ę...................................................ę........................ 272 24.5. Licencjonowanie...................................................ę...................................................ę........................... 273 24.6. Patenty ochronne ...................................................ę...................................................ę.......................... 274 24.7. Naprawa systemu patentowego ...................................................ę....................................................... 274 24.8. Nota prawna...................................................ę...................................................ę.................................. 275 25. Pomoc ekspertów ...................................................a..............................................277 Dodatki 281 Bibliografia ...................................................a...................................................a....283 Skorowidz ...................................................a...................................................a......289 9 O implementacji (I) Czas już powiedzieć co nieco o implementacji. Realizacja systemów kryptograficznych różni się od implementacji zwykłych programów na tyle, że zagoadnienie to zasługuje na osobne omówienie. Najwięcej problemów, jak zwykle, sprawia zasada najsłabszego ogniwa (punkt 2.2). Bardzo łatwo jest zmarnować podczas implementacji cały wysiłek związany z osiągnięciem wymaganego poziomu bezpieczeństwa. To właśnie błędy implementacji (najczęściej w formie przepełnienia bu- fora) są w praktyce największymi wrogami bezpieczeństwa. Każdy, kto interesował się w ciągu ostatnich kilku lat kwestiami zabezpieczania systemów zrozumie, o co chodzi. W praktyce rzadko zdarza się złamanie systemu kryptograficznego jako takiego. Nie wynika to wcale z doskonałej jakoś systemów; widzieliśmy ich na tyle dużo, by pozbyć się wszelkich złudzeń. Po prostu znacz- nie łatwiej jest znaleźć błąd w implementacji niż znaleźć słabość kryptograficzną systemu, a ata- kujący zwykle mają dość rozsądku, by nie męczyć się nad kryptografią, skoro dostępne są metody znacznie prostsze. Jak dotąd w niniejszej książce zajmowaliśmy się tylko kryptografią, ale tym razem więcej czasu poświęcimy środowisku, w jakim ona funkcjonuje. Każda część systemu wpływa na jego bezpieczeństwo i budując dobry system musimy od początku nie tylko mieć bezpieczeństwo na uwadze, postawić sobie bezpieczeństwo jako podstawowy cel pracy. „System” w sensie, jaki mamy tu na myśli, jest bardzo rozległy. Obejmuje wszystkie elementy, których wadliwe działanie grozi redukcją poziomu bezpieczeństwa. Jednym z najważniejszych elementów, jak zawsze, jest system operacyjny. Żaden powszech- nie dostępny system operacyjny nie powstawał głównie z myślą o bezpieczeństwie. Logiczny bę- dzie zatem wniosek, że nie da się zaimplementować naprawdę bezpiecznego systemu. Nie wiemy, jak można by to zrobić, i nie znamy nikogo, kto by to wiedział. Stosowane w praktyce systemy zawierają wiele elementów, przy których tworzeniu w ogóle nie brano pod uwagę bezpieczeństwa, wobec czego niemożliwe jest uzyskanie takiego poziomu bezpieczeństwa, na jakim naprawdę nam zależy. Czy wobec tego należy się od razu poddać? Oczywiście nie. Tworząc system kryptogra- ficzny, staramy się przynajmniej, by jego część zależna od nas była tak bezpieczna, jak to tylko jest możliwe. Być może tchnie to nieco mentalnością urzędnika: zajmujemy się tylko tym, co doty- czy nas bezpośrednio. Tym niemniej my naprawdę troszczymy się także o inne części systemu, ale na tym polu nie mamy zbyt wielkiej swobody. Między innymi właśnie dlatego piszemy tę książkę: chcemy uświadomić innym podstępną naturę bezpieczeństwa i pokazać, jak istotne jest dołożenie wszelkich możliwych starań przy realizacji bezpiecznoych systemów. Jest jeszcze inny ważny powód, dla którego warto zatoroszczyć się przynajmniej o poprawność części kryptograficznej: ataki bezpośrednio na elementy kryptograficzne są szczególnie niebez- pieczne dlatego, że mogą pozostać niewidoczne, o czymo wspominaliśmy już wcześniej. Atakujący, 108 9. O IMPLEMENTACJI (I) któremu uda się złamać zabezpieczenia kryptograficzne, prawdopodobnie pozostanie nie zauwa- żony. Można go porównać do włamywacza posiadającego zestaw kluczy do mieszkania: o ile za- chowa należytą ostrożność, nikt w ogóle nie zauważy wołamania. Naszym długofalowym celem jest budowa bezpiecznych systemów komputerowych. Aby ten cel osiągnąć, każdy musi zajmować się częścią, za którą jest odpowiedzialny. Nasza praca, o czym traktuje niniejsza książka, polega na opracowaniu skutecznych zabezpieczeń kryptograficznych. Jest oczywiste, że zabezpieczyć będzie trzeba także inne części systemu. Nie wiemy, jak to zrobić, ale być może inni to wiedzą, a być może ktoś tego dopiero się nauczy. Do tego czasu całkowite bez- pieczeństwo systemu będzie ograniczone przez jego najsłabsze ogniwo, zaś my dołożymy wszel- kich starań, by tym ogniwem nie okazała się kryptograofia. O poprawność elementów kryptograficznych warto zadbać także dlatego, że po zaimplemento- waniu systemu wszelkie zmiany są bardzo kłopotliwe. System operacyjny działa na pojedynczym komputerze. Systemy kryptograficzne często są używane w ramach protokołów komunikacyjnych łączących szereg komputerów. Aktualizacje systemu operacyjnego pojedynczego komputera są dość proste i w praktyce często mają miejsce. Modyfikacja sieciowego protokołu komunikacyjnego jest koszmarem. Dlatego właśnie wiele sieci działa do dziś zgodnie z projektami z lat 70. i 80. Musimy pamiętać, że każdy nowo tworzony dziś system kryptograficzny, o ile zostanie przyjęty do powszech- nego użytku, prawdopodobnie będzie działał jeszcze przez 30 czy 50 lat. Mamy nadzieję, że przez ten czas pozostałe części systemu staną się znacznie bardoziej bezpieczne. 9.1. Tworzenie poprawnych programów Podstawowy problem związany z implementacją systemów polega na tym, że w informatyce nie wiadomo, jak napisać poprawny program czy moduł (przez „poprawny” rozumiemy taki program, który zawsze zachowuje się zgodnie ze specyfikacją). Trudności pisania poprawnych programów wynikają z kilku przyczyn. 9.1.1. Specyfikacje Pierwszy problem bierze się stąd, że mało który program ma jasno określone wymagania. Bez specy- fikacji nie sposób nawet sprawdzić, czy program jest poprawny. W przypadku takich programów kwestia poprawności jest w ogóle nierozstrzygalna. Wiele projektów informatycznych ma dokument nazywany specyfikacją funkcjonalną. Teo- retycznie powinna być to specyfikacja programu, ale w praktyce dokument ten często nie istnieje, jest niekompletny lub opisuje elementy nie odnoszące się do oczekiwanego zachowania programu. Jak długo brak porządnej specyfikacji, nie może być owoy o poprawnym programie. Istota specyfikacji obejmuje trzy etapy: • Wymagania. Wymagania obejmują nieformalny opis efektów działania programu. Jest to do- kument typu „co można za pomocą tego programu zrobić” a nie „jak można coś zrobić”. Wymagania często bywają niedookreślone i koncentrują się na całościowym obrazie, z po- minięciem szczegółów. • Specyfikacja funkcjonalna. Opis wymagań funkcjonalnych mówi, jak program ma działać. Specyfikacja funkcjonalna obejmuje tylko te elementy, które da się sprawdzić nie zaglądając do wnętrza programu. W przypadku każdej pozycji specyfikacji funkcjonalnej należy zadać so- bie pytanie, czy możliwe jest przeprowadzenie testu gotowego programu, który byłby w stanie 9.1. TWORZENIE POPRAWNYCH PROGRAMÓW 109 rozstrzygnąć o spełnieniu danego wymogu. Taki test mooże badać jedynie zewnętrzne zachowanie się programu, nie może natomiast analizować żadnych stanów wewnętrznych. Żaden wymóg, dla którego nie da się stworzyć odpowiedniego testu, nie może należeć do specyfikacji funk- cjonalnej. Opis wymagań funkcjonalnych powinien być zupełny. Oznacza to, że powinien on obej- mować wszystkie elementy funkcjonalne. Żaden element nie ujęty w specyfikacji nie musi być implementowany. Inny sposób patrzenia na specyfikację funkcjonalną polega na testowaniu gotowego pro- gramu. Każdy wymóg może być i powinien być przetestowoany. • Projekt implementacji. Dokument ten miewa rozmaite nazwy, ale opisuje on sposób działa- nia programu od wewnątrz. Projekt zawiera wszystko, czego nie można przetestować z ze- wnątrz. Dobry projekt zwykle opisuje podział programu na moduły oraz funkcjonalność tych modułów. Z kolei na opisy modułów można patrzeć jak na wymagania wobec modułu. W tej sytuacji można z kolei powtórzyć cały cykl na poziomie modułów. Spośród wskazanych trzech dokumentów najważniejsza jest niewątpliwie specyfikacja funk- cjonalna. To według tego dokumentu będzie przebiegać testowanie gotowego programu. Czasami można obejść się bez nieformalnego opisu wymagań, a za projekt starczy kilka szkiców na tablicy. Jednak bez specyfikacji funkcjonalnej nie sposób nawet opisać zakresu prac ani zdecydować, czy ich cel został zrealizowany. 9.1.2. Testowanie i poprawki Drugi problem związany z pisaniem poprawnych programów dotyczy powszechnie praktykowa- nego cyklu testowania i robienia poprawek. Programista pisze program i sprawdza, czy zachowuje się on zgodnie z oczekiwaniami. Jeśli nie, to poprawia błędy i ponawia testowanie. Sposób ten, jak wiadomo, nie prowadzi do uzyskania poprawnego programu. Wynikiem jest program, który działa w typowych sytuacjach. W roku 1972 Edsger Dijkstra w swoim artykule (za który otrzymał Nagrodę Turinga) wyraził myśl, że testowanie może ujawnić jedynie błędy, nie może zaś zagwarantować braku błędów [23]. Co do prawdziwości tego stwierdzenia nie ma żadnych wątpliwości, a my chcielibyśmy pisać pro- gramy, których poprawności można byłoby dowieść. Niestety, istniejące obecnie techniki dowo- dzenia poprawności programów nie nadają się do zastosowania nawet w rutynowej pracy progra- mistycznej, nie mówiąc już o całych projektach. W obecnej chwili teoretycy informatyki nie znają odpowiedniego rozwiązania problemu po- prawności. Być może w przyszłości udowodnienie poprawności programu będzie możliwe. Być może należy wypracować też narzędzia i metodykę do znacznie bardziej dokładnego i wszechstronnego testowanie. Jednak nawet nie dysponując pełnym rozwiązaniem możemy dokładać wszelkich starań i używać wszystkich dostępnych obecnie narzędzi. Jest kilka dziecinnie prostych zasad dotyczących błędów. Można je znaleźć w każdym pod- ręczniku inżynierii oprogramowania: • Przy poszukiwaniu błędów najpierw należy zrealizować test, który jest w stanie wykryć dany typ błędu. Następnie trzeba sprawdzić, czy błąd faktycznie zostanie wykryty. Wtedy należy błąd poprawić i ponownie przeprowadzić test sprawdzając, czy błąd już nie wystąpi. Ten sam test musi być wykonywany we wszystkich kolejnych wersjach, aby zagwarantować, że błąd nie pojawi się ponownie. 110 9. O IMPLEMENTACJI (I) • Po znalezieniu błędu zawsze należy zastanowić się nad przyczyną jego wystąpienia. Czy w in- nych częściach programu mo
Pobierz darmowy fragment (pdf)

Gdzie kupić całą publikację:

Kryptografia w praktyce
Autor:
,

Opinie na temat publikacji:


Inne popularne pozycje z tej kategorii:


Czytaj również:


Prowadzisz stronę lub blog? Wstaw link do fragmentu tej książki i współpracuj z Cyfroteką: