
Dlaczego o kryptografii? Mam na jej temat dość powierzchowne wiadomości. Tak, czytałem klasyczne dzieło , ale to było dawno temu; tak, rozumiem różnicę między szyfrowaniem symetrycznym a asymetrycznym, wiem, czym są krzywe eliptyczne, ale to wszystko. Co więcej, istniejące biblioteki kryptograficzne, z ich miłym zwyczajem umieszczania pełnej nazwy algorytmu w nazwach funkcji i mnóstwem wystających inicjalizatorów, wywołują u mnie, jako programisty, okropny ból.
Więc dlaczego? Prawdopodobnie dlatego, że czytając obecny zalew publikacji na temat ochrony danych, informacji poufnych itp., odnoszę wrażenie, że kopiemy gdzieś nie tam, a konkretniej, próbujemy przy użyciu narzędzi technicznych (kryptografii) rozwiązać problemy o charakterze społecznym. Porozmawiajmy o tym, nie obiecuję radykalnych odkryć ani konkretnych propozycji, bo luźne myśli są luźnymi myślami.
Trochę historii, całkiem odrobinę
W 1976 roku w USA przyjęto federalny standard dla algorytmów szyfrowania symetrycznego — DES. Był to pierwszy publiczny i ustandaryzowany algorytm kryptograficzny, stworzony w odpowiedzi na rosnące zapotrzebowanie biznesu na ochronę danych.
Brodaty kuriozum
Algorytm został opublikowany przez pomyłkę. Został zoptymalizowany pod kątem realizacji sprzętowej i uważano go za zbyt skomplikowany i nieefektywny dla realizacji programowej. Jednak Prawo Moore'a szybko wszystko wyjaśniło.
Wydawałoby się — koniec historii, weź, szyfruj, odszyfruj, w razie potrzeby zwiększaj długość klucza. Możliwe, że doskonale wiesz, że Amerykanie zostawili w nim zakładki, wtedy dla ciebie istnieje rosyjski odpowiednik — , któremu pewnie ufasz jeszcze mniej. W takim razie użyj obu, jeden na drugim. Jeśli jednak wierzysz, że FBI i FSB zjednoczyły się dla ciebie i wymieniły swoimi zakładkami, mam dla ciebie dobrą wiadomość — nie jesteś paranoikiem, masz po prostu zwykłą manię wielkości.
Jak działa szyfrowanie symetryczne? Obaj uczestnicy znają ten sam klucz, który jest także hasłem; to, co jest zaszyfrowane, może być odszyfrowane tym samym kluczem. Schemat działa świetnie dla szpiegów, ale zupełnie nie nadaje się dla nowoczesnego internetu, ponieważ ten klucz należy wcześniej przekazać każdemu z rozmówców. Przez jakiś czas, kiedy swoje dane chroniło stosunkowo niewiele firm komunikujących się z wcześniej znanym partnerem, problem rozwiązywano za pomocą kurierów i bezpiecznej poczty, ale potem internet stał się powszechny i na scenę wkroczyła
Kryptografia asymetryczna
, w której uczestniczą dwa klucze: klucz publiczny, który nie jest tajny i jest udostępniany każdemu chętnemu; oraz klucz prywatny, który zna tylko jego właściciel. To, co zostało zaszyfrowane kluczem publicznym, może być odszyfrowane tylko kluczem prywatnym i odwrotnie. W ten sposób każdy może poznać klucz publiczny adresata i wysłać mu wiadomość, przeczyta ją tylko adresat. Czy wydaje się, że problem został rozwiązany?
Ale Internet nie działa w ten sposób, w pełni ujawnia się problem autentykacji i, w szczególności, wstępnej autentykacji, a ponadto w pewnym sensie odwrotna jej problemowi anonimowości. Krótko mówiąc, jak mogę być pewien, że ten, z kim rozmawiam, na pewno jest tym, z kim zamierzałem rozmawiać? I że klucz publiczny, którego używam, rzeczywiście należy do tego, z kim zamierzałem rozmawiać? Szczególnie, jeśli rozmawiam z nim po raz pierwszy? I jak wzbudzić zaufanie partnera do siebie, zachowując jednocześnie anonimowość? Już tutaj, jeśli się przyjrzeć, można dostrzec wewnętrzną sprzeczność.
Przyjrzyjmy się ogólnie, jakie schematy współpracy między uczestnikami istnieją i są stosowane w praktyce:
- serwer — serwer (lub biznes — biznes, w tym kontekście to to samo): to najprostszy klasyczny schemat, dla którego wystarczająca jest kryptografia symetryczna, uczestnicy znają się nawzajem, łącznie z kontaktami poza siecią. Jednak zauważcie — o żadnej anonimowości tutaj nie ma mowy, a liczba uczestników jest ściśle ograniczona do dwóch. Oznacza to, że to prawie idealny schemat dla skrajnie ograniczonej liczby komunikacji i w ogólnym przypadku jest oczywiście mało zastosowalny.
- serwer — anonimowy (lub biznesowy — klient): tutaj mamy do czynienia z pewną asymetrią, która jest pomyślnie obsługiwana przez kryptografię asymetryczną. Kluczową kwestią jest brak autoryzacji klientów, serwerowi nie zależy na tym, z kim wymienia dane; jeżeli zajdzie taka potrzeba, serwer przeprowadza wtórną autoryzację za pomocą wcześniej ustalonego hasła, a wówczas wszystko sprowadza się do poprzedniego przypadku. Z drugiej strony, klientowi niezmiernie ważna jest autoryzacja serwera, chce mieć pewność, że jego dane trafiają dokładnie tam, gdzie je wysłał; ta strona w praktyce opiera się na systemie certyfikatów. Ogólnie rzecz biorąc, taki schemat jest dość wygodnie i przejrzyście pokrywany przez protokół https://, jednak pojawia się kilka interesujących kwestii na styku kryptografii i socjologii.
- zaufanie do serwera: nawet jeśli przesłałem pewne informacje na serwer w całkowicie bezpieczny sposób, mają do nich technicznie dostęp osoby trzecie. Problem ten leży całkowicie poza odpowiedzialnością szyfrowania, ale proszę zapamiętać ten moment, jeszcze się pojawi.
- zaufanie do certyfikatu serwera: hierarchia certyfikatów opiera się na tym, że istnieje pewien koronny certyfikat, zasługujący na absolutne zaufanie. Technicznie, wystarczająco wpływowy przestępca [, proszę uznać słowo przestępca za termin techniczny, a nie zniesławienie lub obraźliwe wobec obecnej władzy] może podmienić certyfikat dowolnego niższego poziomu, jednak zakłada się, że system certyfikacji jest potrzebny wszystkim w równym stopniu, tzn. ten certyfikator zostanie natychmiast poddany ostracyzmowi, a wszystkie jego certyfikaty zostaną unieważnione. Tak, to prawda, ale mimo wszystko zwróćcie uwagę, że system ten opiera się nie na środkach technicznych, lecz na pewnym społecznym kontrakcie. Przy okazji, o gorącymW kontekście oczekiwanego końca świata i otoczenia runetu, czy ktoś analizował możliwe otoczenie rosyjskiego korzennego certyfikatu i jego konsekwencje? Jeśli ktoś czytał/pisał na ten temat, prześlijcie linki, wstawię je, wydaje mi się, że to interesujący temat.
- Pośrednia deanonimizacja na serwerze to także kłopotliwy temat. Nawet jeśli serwer nie ma formalnej rejestracji/uwierzytelnienia, istnieje wiele sposobów, aby zebrać informacje o kliencie i ostatecznie go zidentyfikować. Uważam, że przyczyna problemu leży w istniejącym protokole http:// i podobnych, które nie mogły przewidzieć takich sytuacji; oczywiście możliwe byłoby stworzenie równoległego protokołu bez tych luk. Jednak stoi to w sprzeczności z wszystkimi istniejącymi praktykami monetyzacji, więc jest mało prawdopodobne. Ciekawe, czy ktoś próbował?
- Anonim — anonim: dwoje spotyka się w sieci, (wersja — dopiero co się spotkali), (wersja — nie dwoje, a dwa tysiące), i chcą porozmawiać o swoim, ale tak, by Wielki Brat nie usłyszał (wersja — mama nie dowiedziała się, każdy ma swoje priorytety). Może dostrzegasz ironię w moim głosie, a to dlatego, że to jest ironiczne. Zastosujmy do zadania postulat Schneiera (każdy algorytm może zostać złamany, jeśli włoży się wystarczająco dużo zasobów, czyli pieniędzy i czasu). Z tej perspektywy, przeniknięcie do takiej grupy metodami socjalnymi nie stanowi żadnego trudu, nie wspominając o kosztach, a więc kryptograficzna odporność algorytmu jest zerowa przy najbardziej wymyślnych metodach szyfrowania.
Jednak na ten przypadek mamy drugi bastion — anonimowość, na który pokładamy wszystkie nasze nadzieje — niech wszyscy nas znają, ale nikt nas nie znajdzie. Jednak przy najnowocześniejszych metodach ochrony technicznej, na poważnie uważasz, że masz jakiekolwiek szanse? Przypominam, że mówię już tylko o anonimizacji, z ochroną danych wydaje się, że już przekonująco się uporaliśmy. Ustalmy dla jasności, że jeśli twoje imię lub adres domowy lub adres IP zostanie ujawniony, akcja całkowicie się nie udała.
Swoją drogą o IP, tutaj na pierwszy plan wysuwa się wspomniane wcześniej zaufanie do serwera, przecież on zna twój IP bez wątpienia. A przeciwko tobie gra wszystko — od zwykłej ludzkiej ciekawości i próżności, po politykę korporacyjną i tę samą monetizację. Pamiętaj jednak, że VPS i VPN to również serwery, teoretykom kryptografii te akronimy jakoś umykają; tak, a jurysdykcja serwera w wielkiej potrzebie nie ma znaczenia. Do tego dochodzi także szyfrowanie end-to-end — brzmi ładnie i solidnie, ale serwerowi trzeba po prostu ufać.
Jaką rolę odgrywa serwer w takim komunikatorze? Po pierwsze, banalnie, jest to listonosz, jeśli odbiorcy nie ma w domu, musi wrócić później. Ale oprócz tego, co jest znacznie ważniejsze, to punkt spotkania, nie możesz wysłać wiadomości bezpośrednio do adresata, wysyłasz ją do serwera w celu dalszego przekazania. A co najważniejsze, serwer przeprowadza niezbędną autoryzację, potwierdzając wszystkim, że ty to ty, a dla ciebie — że twój rozmówca to naprawdę ten, kogo potrzebujesz. I robi to za pomocą twojego telefonu.
Czy nie wydaje ci się, że twój komunikator wie o tobie za dużo? Nie-nie, oczywiście mu wierzymy (a właściwie, swojemu telefonowi również, hmm), ale kryptografowie zapewniają, że to nie jest mądre, że nie można ufać nikomu.
Nie przekonało cię? A przecież istnieje także inżynieria społeczna, jeśli w twojej grupie jest stu rozmówców, musisz zakładać, że 50% z nich to wrogowie, 49% — jest albo próżnych, albo głupich, albo po prostu lekkomyślnych. A ten ostatni procent, niezależnie od tego, jak dobrze znasz metody zabezpieczania informacji, prawdopodobnie nie wytrzyma przed dobrym psychologiem w czacie.
Jedyna wydaje się strategią obronną — zniknąć pośród milionów podobnych grup, ale to już nie o nas, znowu o jakichś szpiegach-terrorystach, którym żadna internetowa sława ani monetizacja nie są potrzebne.
Cóż, wydaje mi się, że jakoś uzasadniłem (nie, nie udowodniłem, po prostu uzasadniłem) moje surowe myśli na temat ochrony danych w nowoczesnym modelu społeczeństwa. Wnioski są proste, ale smutne — nie powinniśmy liczyć na pomoc od szyfrowania danych więcej, niż już mamy; kryptografia zrobiła wszystko, co mogła, i zrobiła to dobrze, ale nasz model internetu całkowicie przeczy naszemu dążeniu do prywatności i unieważnia wszystkie nasze wysiłki. Tak naprawdę ani razu nie jestem pesymistą i bardzo chciałbym teraz powiedzieć coś optymistycznego, ale nie wiem, co.
Spróbuj zajrzeć do następnej sekcji, ale ostrzegam — tam są zupełnie różowe, nienaukowe fantazje, ale mogą kogoś pocieszyć, a przynajmniej rozweselić.
Czy można w ogóle coś zrobić?
Cóż, na przykład, pomyśleć o tym temacie, najlepiej uwalniając umysł i odrzucając uprzedzenia. Na przykład, tymczasowo całkowicie poświęćmy anonimowość, cokolwiek to przerażająco brzmi. Niech każdemu przy narodzinach nadany zostanie unikalny osobisty klucz publiczny, a także odpowiadający mu prywatny, oczywiście. Nie krzyczcie na mnie i nie tupcie nogami, w idealnym świecie jest to niezwykle wygodne — tu jest i paszport, i NIP, i nawet numer telefonu w jednym pakiecie. Co więcej, jeśli do tego dodać indywidualny certyfikat, otrzymujemy uniwersalny autoryzator/logowanie; a jeszcze — kieszonkowy notariusz z możliwością poświadczania dowolnych dokumentów. Można stworzyć system wielowarstwowy — w ogólnym dostępie tylko klucz publiczny i certyfikat, dla przyjaciół (lista kluczy, która jest dołączona tutaj) można udostępnić numer telefonu i co tam jeszcze przyjaciołom się powierza, mogą być jeszcze głębsze poziomy, ale to już zakłada niepotrzebne zaufanie do serwera.
W takiej schemie prywatność przesyłanych informacji osiągana jest automatycznie (chociaż z drugiej strony, po co, w idealnym świecie?), Alicja coś pisze do Boba, ale nikt nigdy nie przeczyta tego oprócz samego Boba. Wszystkie komunikatory automatycznie uzyskują end-to-end szyfrowanie, ich rola sprowadza się do skrzynek pocztowych, a w zasadzie nie może być żadnych roszczeń do treści. Serwery stają się wymienne, można wysłać przez jeden, można przez drugi, a można w ogóle przez łańcuch serwerów, jak w e-mailu. Można też wysłać adresatowi bezpośrednio, jeśli znany jest jego IP, nie angażując się w ogóle w żadne pośrednictwo. Fajnie, prawda? Szkoda tylko, że nie dane nam będzie żyć w tej pięknej epoce — ani mnie, ani tobie© No tak, znów o smutnych sprawach.
A gdzie to wszystko przechowywać? Chociażby, stworzyć otwarty system hierarchiczny, coś w rodzaju obecnego DNS, tylko bardziej potężnego i rozgałęzionego. Żeby nie obciążać administratorów głównych DNS dodatkowymi modyfikacjami, można by wprowadzić swobodną rejestrację, jedyne konieczne sprawdzenie — na unikalność. Coś w stylu >> „ Dzień dobry, jesteśmy pięć osób, rodzina Iwanowów. Oto nasze imiona/nazwiska, oto publiczne klucze. Kto pyta — proszę kierować do nas. A jeszcze, oto lista pięciuset babć z naszej okolicy z ich kluczami, jeśli będą pytani, również proszę kierować do nas.«
Trzeba tylko sprawić, aby instalacja i konfiguracja takiego domowego serwera były skrajnie proste i wygodne, żeby każdy mógł się w tym połapać, a także, by nikt nie obciążał oficjalnych serwerów państwowych.
Stop!, a co ma do tego w ogóle państwo?
A teraz można ostrożnie przywrócić anonimowość. Jeśli każdy może wygenerować sobie klucz osobisty, potwierdzić go indywidualnym certyfikatem i zainstalować na sobie serwer CA niższego poziomu, albo poprosić sąsiada lub użyć jakiegoś publicznego serwera, to po co cały ten oficjalizm? I nie ma potrzeby wiązać się z rzeczywistą postacią, mamy pełną prywatność, bezpieczeństwo i anonimowość. Wystarczy, że na początku hierarchii stanie osoba godna zaufania. Cóż, ufamy TM lub Let's Encrypt, a znane publiczne DNS-y jeszcze nikogo w pole nie wyśle. Ze strony biurokratów również raczej nie powinno być zastrzeżeń, to znaczy, oczywiście będą zastrzeżenia, ale właściwie do czego?
Może pewnego dnia taki system, lub coś podobnego, zostanie stworzony. I oczywiście, nie możemy liczyć na nikogo innego, tylko na siebie, żadne znane mi państwo nie stworzy takiego systemu. Na szczęście istnieją już Telegram, i2p, Tor, a na pewno kogoś jeszcze zapomniałem, które pokazują, że nie ma nic zasadniczo niemożliwego. To nasza sieć i my ją budujemy, jeśli nie odpowiada nam obecny stan rzeczy.
Brrr, przypadkowo zakończyłem na patetycznej nucie. W rzeczywistości tego nie lubię, bliżej mi do sarkazmu.
PS: To wszystko oczywiście różowe bajki i dziewczęce marzenia.
PPS: Ale jeśli ktoś zdecyduje się spróbować — zarezerwujcie dla mnie nick. proszę, przyzwyczaiłem się do niego.
PPPS: A realizacja wydaje się całkiem prosta, nawiasem mówiąc.
Źródło: habr.com
