Zabezpieczenia czasowe

https://xpil.eu/1z23c

Od dość dawna znana jest gatunkowi ludzkiemu idea DMS czyli Dead Man's Switch, czyli po naszemu Przełącznik Truposza. Urządzenie, które reaguje na naszą śmierć i coś robi (wysyła wiadomość, włącza hamulce itd). Niedawno powstała nawet osobna witryna, oferująca usługę pośmiertnego wysłania wiadomości wybranym przez nas osobom: http://deadmansswitch.org/

Aha, i nie musi być konkretnie śmierć. Może być na przykład zaśnięcie albo zasłabnięcie. Albo, w niektórych przypadkach, wsadzenie do więzienia bez dostępu do Sieci. Albo cokolwiek innego, niepożądanego, co czasowo bądź też permanentnie wyłącza nas z codzienności, wbrew naszej woli.

Konkretnym przykładem takiego urządzenia może być - na przykład - czuwak. Czyli urządzenie montowane w kabinach lokomotyw i tramwajów, wymagające naciśnięcia od czasu do czasu jakiegoś naciskadła, albo wdepnięcie pedału geju. Dzięki temu jak maszynista (albo motorniczy) zaśnie lub umrze lub zasłabnie, pojazd samoczynnie włączy hamulce.

Inną, nieco podobną klasą urządzeń są zamki czasowe. Są to zamki, których nie da się otworzyć przed upływem określonego czasu. Zastosowania takich zamków są rozmaite - na przykład jako zabezpieczenie antykradzieżowe przy transporcie sejfów.

Ciekawym przypadkiem takiego "zamka czasowego" jest zabezpieczanie informacji zapisanych w formie elektronicznej, taki sposób, żeby nie dało się ich odczytać przed uływem określonego czasu. Na przykład żeby móc zweryfikować, że jakiś dokument faktycznie istniał w zadanym momencie, ale żeby nie dało się tego dokumentu odczytać zanim nas nie wypuszczą z więzienia. Albo cokolwiek innego, co uniemożliwi natychmiastowe odczytanie informacji, ale zapewni, że informacja ta faktycznie istniała i była nam znana w jakimś momencie w przeszłości.

Większość szyfrów można złamać za pomocą farmy sprytnie połączonych serwerów z dużą ilością równoległych rdzeniów obliczeniowych. Dlatego w przypadku takich programowych "zamków czasowych" można zastosować następującą metodę:

Klucz do rozszyfrowania wiadomości generujemy w taki sposób, że bierzemy losową wartość tekstową, a następnie haszujemy ją trylion razy w taki sposób, że przy każdorazowej iteracji wyprodukowany hasz trafia na wejście i jest haszowany ponownie, i ponownie, i tak w kółko. Po, dajmy na to, miesiącu takiego haszowania dostajemy klucz, którym nastęnie szyfrujemy wiadomość główną. Upubliczniamy zaszyfrowaną wiadomość oraz początkową, losową wartość (tę sprzed pierwszego haszowania). Ktokolwiek będzie chciał rozszyfrować naszą wiadomość, będzie najpierw musiał przejść tę samą drogę, czyli wygenerować trylion haszy jeden po drugim.

Nie da się takich obliczeń zrównoleglić, a więc metoda jest stosunkowo bezpieczna. Jednak potrzeba czekania przez miesiąc na to, żeby wygenerować jeden klucz, jest dość dziwna. Mało to wygodne.

A może da się zrobić tak, żeby obliczenia potrzebne do wygenerowania klucza przeprowadzić równolegle (ergo: szybko), ale już samego procesu odszyfrowywania - nie?

Pomyślmy.

Otóż da się. Trzeba wziąć, dajmy na to, sto losowych wartości początkowych (zamiast jednej jak w przykładzie powyżej) i na każdej z nich przeprowadzić (równolegle - na przykład za pomocą stu osobnych komputerów, albo chociaż piętnastu komputerów z ośmiordzeniowymi procesorami) haszowanie jak powyżej. Z tym, że na samym końcu trzeba zaszyfrować drugą wartość początkową za pomocą klucza uzyskanego z pierwszej. A trzecią - kluczem uzyskanym z drugiej. I tak dalej. Dokument szyfrujemy haszem uzyskanym po trylionie iteracji ostatniej, setnej wartości początkowej.

Na koniec ujawniamy pierwszą wartość początkową, 99 zaszyfrowanych pozostałych wartości początkowych oraz zaszyfrowany dokument. Ktokolwiek będzie chciał dorwać się do klucza deszyfrującego, będzie musiał najpierw wykonać trylion haszowań na pierwszej wartości, następnie uzyskanym tak kluczem rozszyfrować drugą wartość i znów wykonać na niej trylion haszowań... i tak dalej. W efekcie klucz do rozszyfrowania dokumentu uzyska po stu trylionach haszowań. Jeżeli wykonanie tryliona haszowań zajmuje miesiąc, klucz zostanie odzyskany po około 12 latach ciągłej pracy. A tylko miesiąc czasu zajęło nam jego wygenerowanie. Prawda, że się da? I w dodatku jedynym sposobem na dotarcie do klucza jest wykonanie tych obliczeń sekwencyjnie. Nie da się tego wrzucić na farmę szybkich GPU, tylko trzeba pojedynczo. I nawet jeżeli w trakcie tych 12 lat komputery przyspieszą, to prawdopodobnie głównie za sprawą ilości rdzeni przetwarzających, albo procesorów na płycie głównej. Raczej na pewno nie dzięki zwiększeniu prędkości pracy pojedynczego rdzenia - tutaj dotarliśmy już dość blisko granicy możliwości fizycznych materii (a już na pewno granicy opłacalności).

Oczywiście jeżeli nazywamy się Jan Kowalski i szyfrujemy w ten sposób księgę przychodów i rozchodów naszego osiedlowego warzywniaka, pies z kulawą łapą się tym nie zainteresuje. Ale w niektórych przypadkach taka strategia może pomóc ujawnić gorzką prawdę o pracy niektórych instytucji bądź nawet całych rządów.

Nawet jeżeli nigdy nie będę musiał stosować takich metod, fajnie jest sobie o tym pomyśleć. Albo popisać na nudnym blogu.

Ziew.

https://xpil.eu/1z23c

6 komentarzy

    1. Komputerami kwantowymi straszą od ponad trzydziestu lat, a póki co najbardziej zaawansowane konstrukcje działają jak kot Schroedingera: albo są komputerami kwantowymi, albo nimi nie są.

      Poza tym (pewnie się mylę, ale tak to rozumiem) w obliczeniach kwantowych wykonuje się X obliczeń JEDNOCZEŚNIE, a więc (chyba) nie da się tam zrobić tak, że wynik jednego obliczenia trafia na wejście drugiego.

      Tak czy siak, pożyjemy – zobaczymy…

    1. Tablice tęczowe przyspieszają dekodowanie pojedynczego kawałka informacji, ale przy takim dekodowaniu sekwencyjnym na nic się nie przydadzą.

Leave a Comment

Komentarze mile widziane.

Jeżeli chcesz do komentarza wstawić kod, użyj składni:
[code]
tutaj wstaw swój kod
[/code]

Jeżeli zrobisz literówkę lub zmienisz zdanie, możesz edytować komentarz po jego zatwierdzeniu.