Jak zbudować zamek z dostępem tylko dla złodzieja

wersja:   1.0   15.02.2024
 


Zbudować zamek z dostępem tylko dla złodzieja jest bardzo łatwo. Wystarczy oprzeć się w nim na mechanizmie, którego nie zna zwykły użytkownik, a doskonale znają wszyscy złodzieje. Taki mechanizm trzymać należy w tajemnicy i wtedy nikt nie będzie w stanie otworzyć zamka, poza fachowacami, czyli złodziejami, którzy znają go doskonale w ramach swojego fachu. Popularny "owczy pęd" nakazuje wręcz utrzymywać, mechanizm zamka w pilnie strzeżonej tajemnicy, co powoduje że zabezpieczone takim zamkiem zasoby dostępne będą nie dla pospolitych złodziej, lecz tylko dla specjalistów wysokiej klasy zajmujących się tym np. w wyspecjalizowanych agencjach złodziejskich.

Co sprawia, że tradycyjne nawyki myślowe tworzenia zabezpieczeń na bazie tajemnicy dostępu nie tylko nie dają spodziewanego rozwiązania, lecz wręcz promują szczególne grupy złodziei ? Powodem takiej sytuacji jest integrujący całą ludzkość globalny system informacji. Nie ma w nim zamka, którego budowy ktoś już wcześniej nie wymyślił, nie ma spisku, którego ktoś gdzieś aktualnie nie knuje. To ten byskawiczny w swoim działaniu obieg informacji wśród ośmiu z górą miliardów ludzi wyszczególnia i przez to promuje specyficzcne środowiska złodziejskie.

Cóż więc począć ? Czy powinniśmy zrezygnować z wszelkich zabezpieczeń, skoro i tak ktoś w naszej "globalnej wiosce" zna metodę ich złamania ? Nie, wniosek jaki wyciągnąć należy z tej sytuacji jest inny:

Nie należy budować zabezpieczeń opartych, na skrywaniu wiedzy o ich konstrukcji. Postulat
niewłaściwych
zabezpieczeń

Ale jeśli nie będziemy skrywać zasady działania zabezpieczeń to każdy łatwo je sforsuje ! - Nieprawda - w tym punkcie wiedza, jaką posiadają już od 70-tych lat informatycy jest inna i przeczy ona popularnemu "zdrowemu rozsądkowi".  (1)  
  Wiedza ta opiera się na pracy Witfielda Diffiego oraz Martina Hellmana z 1976 roku opisanej np. w wikipedii pod tym adresem: https://pl.wikipedia.org/wiki/Protok%C3%B3%C5%82_Diffiego-Hellmana. Rozróżnia ona część klucza (tzw. jego połówkę) właściwą do zamykania od tej właściwej do otwierania. Żadnej z takich "połówek" klucza nie da się odtworzyć na podstawie pasującej do niej drugiej połówki używanej do odwrotnego procesu.  



Dobrze, ale jeśli upublicznimy metodę, czyli poszczególne jej kroki, jakie wykonujemy aby zamknąć (lub zaszyfrować) nasze zasoby, wtedy każdy wykonując te same kroki w odrotnej kolejności uzyska dostęp !

Błąd ! Znamy procedury, które działają w widoczny dla wszystkich - jawny sposób w jednym kierunku, choć nikomu nie udało się jeszcze wykonać tych samych kroków w odwrotnym kierunku. Przykładem niech będzie rozpuszczanie kostki cukru w herbacie. Nikomu nie udało się przecież złożyć z rozpuszczonego cukru z powrotem pierwotnej kostki.

No dobrze, ale to jest w naturze, a w informatyce ?
W informatyce takie procedury nazywają się szatkowaniem (angl."hash", oznaczane zwykle symbolem "#"), a polegają one na przemnożeniu wejściowych danych, odjęciu, podzieleniu, dodaniu, znów pomnożeniu i tak kilkadziesiąt razy w kółko, tak żeby pierwotny ciąg znaków przestał być rozpoznawalny i nie dało się go z "poszatkowanej" wersji odtworzyć.

Dobrze, a jak skorzystać z tego w budowie zabezpieczeń ?
Proszę, oto przykład:
Gdy logujesz się do swojego komputera wpisując hasło twój system musi je rozpozanać, żeby umożliwić Ci dostep, czyli musiał to hasło gdzieś wcześniej zapisać.

Bład !!! Wystarczy, żeby system zapamiętał nie samo hasło, lecz jego hash (poszatkowaną wersję). Każdym razem, gdy logujesz się, system szatkuje wprowadzone przez Ciebie hasło i sprawdza, czy zgadza się w tą poszatkowaną wersją, jaką zapamiętał. W ten sposób w Twoim komputerze nie ma nigdzie zapisanych w postaci jawnej haseł. Nawet kto zaskanuje cały Twój dysk, nie będzie w stanie odtworzyć z zapisanych na nim hash-y ich jawnych postaci. To dokonały przykład: metoda znana publicznie, klucz do zamykania znany, a klucza, którym da się takie "drzwi" otworzyć nikt, nawet zaawansowany w swoim fachu złodziej (informatyk) nie potrafi odtworzyć i co za tym idzie nie uzyska dostępu poprzez znany wszystkim mechanizm logowania.

Tyle znanej wiedzy informatycznej. Lecz ma ona dramatyczne implikacje społeczne. Przykłady podam w innym kontekście. W społeczeństwie informacji powinniśmy przedefiniować, co publiczne, a co prywatne. Lęki, na których obecnie budujemy nie są dobrym doradzcą. Praktykowanie otwartości działania staje się o dziwo lepszym zabezpieczeniem, niż skrywanie dostępnych i tak złodziejom danych.