Hakierspejs 艁贸d藕 馃

Budujemy Hackerspace w 艁odzi. Szukamy ludzi.

ciphersack - szyfrowana geniza

20 sierpnia 2021 - napisane przez @d33tah

Tagi: crypto

wsp贸艂czesny pojemnik na kolekcj臋 geniza przy ulicy w Nachlaot w Jerozolimie

Przeczyta艂em ostatnio ciekawy artyku艂 w w najnowszym wydaniu International Journal of Proof-of-Concept or Get The Fuck Out (PoC||GTFO). Autor narzeka艂 w nim, 偶e je艣li wszyscy zaczn膮 szyfrowa膰 swoje dyski programami takimi jak VeraCrypt, w postapokaliptycznym 艣wiecie za tysi膮ce lat archeologowie mog膮 straci膰 dost臋p do danych z dzisiejszych czas贸w. Koniec ko艅c贸w, bez list贸w sprzed setek lat, dzisiejsi historycy straciliby wa偶ne 藕r贸d艂a informacji i mo偶liwe, 偶e za kilkaset lat pojawi si臋 taka sama potrzeba. Przypomina mi si臋 gra Talos Principle (polecam), gdzie gracz mo偶e przegl膮da膰 strz臋py wirtualnych bibliotek, zawieraj膮cych wszystko od losowych wpis贸w na blogach zwyk艂ych ludzi przez prywatn膮 korespondencj臋 naukowc贸w.

Autor wspomnianego artyku艂u zaproponowa艂 鈥渃yfrowe genizy鈥 jako rozwi膮zanie problemu inspirowane judaistycznymi genizami, czyli archiwami m.in. na 艣wi臋te ksi臋gi, kt贸re w przypadku przepe艂nienia przestrzeni zostaj膮 poddawane poch贸wkowi. Ich cyfrowy odpowiednik ma dzia艂a膰 podobnie: wydzielamy sobie nieszyfrowany fragment dysku, po czym wype艂niamy go danymi kt贸re chcieliby艣my, 偶eby przetrwa艂y tysi膮clecia. Je偶eli chcemy zaoszcz臋dzi膰 przestrze艅, mo偶emy najpierw zape艂ni膰 dysk po偶膮danymi archiwami (fabrycznie dysk zawiera same binarne zera), po czym utworzy膰 na nim uk艂ad partycji, zainstalowa膰 system i pozwoli膰 mu stopniowo nadpisywa膰 woln膮 przestrze艅 tym, z czego korzystamy. Ja jednak wymy艣li艂em inne podej艣cie do problemu. Czy da艂oby rad臋 utworzy膰 鈥渃yfrow膮 geniz臋鈥, kt贸ra jest szyfrowana?

Mia艂em w g艂owie nast臋puj膮cy scenariusz: wyobra藕my sobie, 偶e w jakiej艣 wsp贸lnej przestrzeni, na przyk艂ad w Hakierspejsie, przeznaczamy na projekt dost臋pny dla wszystkich dysk twardy. Na pocz膮tek wype艂niamy go losowymi danymi, 偶eby utrudni膰 analiz臋 zawarto艣ci. Nast臋pnie dla ka偶dego interesuj膮cego nas zbioru danych przyporz膮dkujemy zwi膮zany z nim plik .torrent. Przyk艂adowo, bierzemy obraz p艂yty CD z najnowszym systemem Ubuntu oraz plik .torrent umo偶liwiaj膮cy jego pobranie. Pliki .torrent zawieraj膮 metadane opisuj膮ce zawarto艣膰 zwi膮zanych z nimi danych - przyk艂adowy obraz p艂yty CD jest w nich podzielony na cz臋艣ci (zwane blokami), z kt贸rych ka偶da jest oddzielnie hashowana skr贸tem SHA1. Dzi臋ki temu po pobraniu tre艣ci z internetu mo偶liwe jest sprawdzenie, czy pobranie si臋 uda艂o: maj膮c plik .torrent mo偶na por贸wna膰 wynik hashowania z metadanych oraz z pe艂nych danych. Je艣li oba hashe si臋 zgadzaj膮, dane nie s膮 uszkodzone. S臋k w tym, 偶e transfer niekoniecznie musi zosta膰 dokonany przez sie膰 BitTorrent - maj膮c oryginalny plik .torrent, tre艣膰 mo偶na por贸wna膰 tak偶e offline, dostaj膮c dane z innego 藕r贸d艂a, np. z innego dysku twardego.

Maj膮c dane 藕r贸d艂owe oraz plik z metadanymi, mo偶emy przyst膮pi膰 do zapisu szyfrowanych danych. Zgodnie z duchem PoC||GTFO, napisa艂em 鈥減roof of concept鈥, kt贸ry pokazuje jak mo偶na to zrobi膰: uruchamiamy skrypt ciphersack.py (kod 藕r贸d艂owy dost臋pny tutaj), wskazuj膮c mu tryb 鈥渆ncode鈥 oraz: plik z danymi, metadanymi oraz docelowy dysk twardy. Program odczyta blok po bloku, zapisuj膮c je na dysk w postaci zaszyfrowanej. Kluczem b臋dzie hash szyfrowanego bloku XOR numer bloku, a pozycja bloku na dysku tak偶e b臋dzie zale偶e膰 od hashu bloku. Z tego powodu dysk po naniesieniu na niego szyfrowanego pliku dalej b臋dzie wygl膮da膰 jak pseudolosowe dane - poprawnie zaszyfrowane tre艣ci niewiele r贸偶ni膮 si臋 od bia艂ego szumu. Aby odczyta膰 dane, nale偶y posiada膰 plik z metadanymi i odwr贸ci膰 procedur臋.

Program powsta艂 wy艂膮cznie w celach edukacyjnych - aby pokaza膰 najprostszy scenariusz odczytu pliku .torrent oraz mo偶liwe zastosowanie szyfru AES w steganografii. Jego funkcjonalno艣膰 celowo jest okrojona, aby u艂atwi膰 zrozumienie kodu 藕r贸d艂owego. Odradzam u偶ywanie go do danych prywatnych - nie jestem kryptografem i nie wykluczam, 偶e szyfr da si臋 zaatakowa膰. W przypadku je偶eli kto艣 jest zainteresowany dalszym rozwojem narz臋dzia, proponuj臋 nast臋puj膮ce kierunki rozwoju:

Skomentuj artyku艂 na Githubie