> Świetny pomysł! Jesteś geniuszem, Jolu
> Wiem. Spodoba ci się to. Wiem nawet, gdzie to zrobimy
> Gdzie?
> U Sutro Baths!
Rozdział 10
Co byście zrobili, gdybyście odkryli, że wśród was jest szpieg? Moglibyście go oskarżyć, postawić pod ścianą i się go pozbyć. Jednak wtedy może się pojawić kolejny szpieg i ten nowy może być ostrożniejszy niż ten poprzedni, i nie da się tak łatwo złapać.
Mam lepszy pomysł. Zacznijcie przechwytywać rozmowy szpiega i wprowadźcie do nich oraz do rozmów jego szefów błędne informacje. Powiedzcie mu, że jego szefowie każą mu zebrać dane na temat waszych ruchów. Niech was śledzi i zapisuje wszystko, co go ciekawi. Otwórzcie nad parą listy, które wysyła do centrali, i podmieńcie ich zawartość. Jeśli chcecie, możecie wywołać wrażenie, że jest nieobliczalny i nieodpowiedzialny, tak żeby się go pozbyli. Możecie też upozorować krytyczną sytuację, aby jedna ze stron ujawniła tożsamość szpiegów. Krótko mówiąc, będziecie ich mieli w garści.
Nazywa się to atakiem man-in-the-middle i jeśli się nad tym dobrze zastanowić, jest dość zatrważające. Ktoś, kto dokonuje takiego ataku i ingeruje w prowadzone przez was rozmowy bez waszej wiedzy, może wkręcić was na tysiąc dowolnych sposobów.
Oczywiście istnieje świetny sposób na ominięcie ataku man-in-the-middle: wystarczy skorzystać z kryptografii. Jeśli już to zrobicie, nie liczy się to, że wróg widzi waszą wiadomość, ponieważ nie może jej odszyfrować, zmienić ani ponownie jej wysłać. Miedzy innymi dlatego należy stosować kryptografię.
Ale pamiętajcie: żeby kryptografia działała, musicie mieć klucze wszystkich ludzi, z którymi chcecie pogadać. Musicie dzielić z kumplem sekret i posiadać kilka kluczy, których możecie użyć do szyfrowania i rozszyfrowywania wiadomości, tak żeby odsunąć osobę, która was szpieguje.
Oto, do czego sprowadza się idea kluczy publicznych. Jest to trochę niebezpieczne, ale jakże niewiarygodnie eleganckie.
Podczas szyfrowania za pomocą klucza publicznego każdy użytkownik otrzymuje dwa klucze. Są to długie ciągi matematycznego bełkotu, które mają iście magiczną właściwość. Cokolwiek zakodujecie jednym z nich, drugim będziecie w stanie rozkodować i vice versa. Ponadto są to jedyne klucze, jakimi można to zrobić – jeśli możecie odszyfrować wiadomość za pomocą jednego klucza, wiecie, że została zakodowana drugim z nich (i vice versa).
Bierzecie któryś z tych kluczy (nieważne który) i go publikujecie. Robicie z niego totalny antysekret. Chcecie, żeby wszyscy na świecie się o nim dowiedzieli. Z oczywistych względów nazywają go kluczem publicznym.
Ten drugi klucz ukrywacie w najciemniejszych zakamarkach waszej głowy. Chronicie go całym swoim życiem. Nigdy go nikomu nie zdradzacie. To się nazywa klucz prywatny.
Powiedzmy, że jesteście szpiegami i chcecie skontaktować się z szefami. Klucz publiczny zna każdy. Nikt oprócz was samych nie zna waszego klucza prywatnego, tak jak nikt nie zna prywatnych kluczy innych ludzi poza nimi samymi.
Chcecie wysłać im wiadomość. Po pierwsze, kodujecie ją za pomocą swojego klucza prywatnego. Można by po prostu tę wiadomość wysłać i wszystko byłoby w porządku, bo wiedzieliby, kiedy ta wasza wiadomość dotarła. Skąd? Bo o ile można ją zaszyfrować za pomocą waszego klucza publicznego, o tyle rozszyfrować można ją tylko za pomocą waszego klucza prywatnego. To odpowiednik pieczątki lub podpisu, jaki składamy na końcu wiadomości. Oznacza on: „To ja jestem autorem tej wypowiedzi, nikt inny. Nikt tego nie mógł sfałszować ani zmienić”.
Niestety, dzięki temu wasze wiadomości nie pozostaną s e k r e t e m. A to dlatego że wasz klucz publiczny jest powszechnie znany (i musi być, bo inaczej będziecie mogli wysyłać wiadomości tylko do tych kilku osób, które go znają). Każdy, kto przechwyci tę wiadomość, będzie mógł ją przeczytać. Nie będzie mógł co prawda jej zmienić i udać, że została napisana przez was, jednak jeśli nie chcecie, żeby wszyscy wiedzieli, o czym piszecie, potrzebujecie lepszego rozwiązania.
Tak więc oprócz zwykłego szyfrowania wiadomości za pomocą klucza prywatnego, robicie to również, używając publicznego klucza waszego szefa. Teraz jest już podwójnie zamknięta. Pierwsze zamknięcie – jego klucz publiczny – otwiera się tylko w połączeniu z jego prywatnym kluczem. Drugie zamknięcie – wasz klucz prywatny – otwiera się tylko w połączeniu z waszym kluczem publicznym. Kiedy wasi szefowie otrzymają wiadomość, otworzą ją obydwoma kluczami i będą już na pewno wiedzieli, że: a) napisaliście ją wy, i b) tylko oni mogą ją przeczytać.
To bardzo fajne rozwiązanie. W dniu, w którym je odkryłem, natychmiast wymieniliśmy z Darrylem klucze i spędziliśmy całe miesiące, rechocząc i zacierając ręce podczas wymiany naszych tajemnic wojskowych dotyczących tego, gdzie spotkamy się po lekcjach i czy Van kiedykolwiek go zauważy.
Jeśli jednak chcecie zrozumieć systemy bezpieczeństwa, musicie rozpatrzyć najbardziej paranoidalne możliwości. Na przykład co się stanie, jeśli podstępnie wam wmówię, że m ó j klucz publiczny jest kluczem publicznym waszego szefa? Zakodowalibyście tę wiadomość swoim prywatnym i moim publicznym kluczem. Ja bym ją rozkodował, przeczytał, zakodował ponownie prawdziwym kluczem publicznym waszego szefa i wysłał. Wasz szef wie, że jedynie wy mogliście wysłać mu tę wiadomość i tylko on może ją przeczytać.
A ja siedziałbym sobie między wami niczym tłusty pająk na pajęczynie i wszystkie wasze sekrety należałyby do mnie.
Najprostszym rozwiązaniem tego problemu jest jak najszersze rozpowszechnienie waszego klucza publicznego. Jeśli każdy będzie mógł naprawdę łatwo poznać wasz prawdziwy klucz, man-in-the-middle będzie się robił coraz trudniejszy. Ale wiecie co? Rozpowszechnianie informacji jest tak samo trudne jak dotrzymywanie tajemnic. Pomyślcie tylko – ile miliardów dolarów idzie na reklamy szamponów i innego gówna tylko po to, żeby agencja reklamowa zdobyła pewność, że wie o tych produktach tyle osób, ile sama by sobie życzyła?
Osobę odpowiedzialną za ataki man-in-the-middle można załatwić w prostszy sposób – poprzez Sieć Zaufania. Powiedzmy, że przed wyjściem z centrali usiedliście z szefem przy kawie, żeby nauczyć się nawzajem własnych kluczy. Nie ma mowy o żadnym man-in-the-middle! Jesteście całkowicie pewni, do kogo należą wasze klucze, ponieważ osobiście je sobie wręczyliście.
Na razie wszystko idzie dobrze. Ale istnieje naturalna granica: z iloma ludźmi możecie się osobiście spotkać, żeby wymienić z nimi klucze? Ile godzin dziennie jesteście w stanie poświęcić na coś, co przypomina pisanie własnej książki telefonicznej? Ile z tych osób będzie w stanie poświęcić dla was tyle czasu?
To porównanie do książki telefonicznej jest bardzo pomocne. Kiedyś świat był miejscem pełnym książek telefonicznych, a gdy potrzebny był numer, wystarczyło do jednej z nich zajrzeć. Ale wiele z tych numerów, z których chcielibyście danego dnia skorzystać, albo znacie na pamięć, albo zna je ktoś, kogo moglibyście o nie zapytać. Zapytam Jolu albo Darryla, czy mają numer, którego szukam. To jest znacznie szybsze rozwiązanie niż szukanie numeru w necie, a poza tym bardziej wiarygodne. Ufam Jolu, więc wiem, że i numer, który od niego dostanę, jest pewny. Jest to tak zwane zaufanie przechodnie – zaufanie, które porusza się po sieci naszych relacji.
Sieć Zaufania jest tego trochę obszerniejszą wersją. Powiedzmy, że spotykam Jolu i zdobywam jego klucz. Mogę dopiąć go do swojego „pęku kluczy” – listy kluczy, którą podpisałem własnym. Oznacza to, że możecie ją otworzyć moim kluczem publicznym i mieć pewność, że ten klucz rzeczywiście należy do mnie – lub ewentualnie do kogoś, kto posiada mój klucz.