Kryptowaluty i kryptografia #5 – Steganografia
Steganografia mimo, że to osobna dziedzina wiedzy to warto ją poznać, ponieważ w połączeniu z kryptografią uzyskujemy bardzo wysoki poziom bezpieczeństwa. Używana jest od równie dawna co szyfrowanie i wraz z rozwojem technologicznym stawała się coraz doskonalsza. Efektów steganografii tak naprawdę nie jesteśmy w stanie zobaczyć, mimo to w tym artykule dowiecie się czym ona jest i jak jej używać.
Steganografia – definicja i powód stosowania
Steganografia – nauka o komunikacji w taki sposób, by obecność komunikatu nie mogła zostać wykryta. W odróżnieniu od kryptografii (gdzie obecność komunikatu nie jest negowana, natomiast jego treść jest niejawna) steganografia próbuje ukryć fakt prowadzenia komunikacji.
Ten krótki komiks z xkcd bardzo dobrze wyjaśnia czemu warto brać pod uwagę nie tylko szyfrowanie wiadomości. Steganografia pozwala ukrywać informacje w różnego rodzaju plikach. Daje to bardzo wiele możliwości, jak chociażby schowanie w albumie z wakacji klucza prywatnego. Łatwo można stwierdzić, że większe zainteresowanie wzbudzi pendrive z zaszyfrowanym portfelem Bitcoin w kratce wentylacyjnej niż taki leżący na biurku z zdjęciami z wakacji.
OpenPuff
Aby zacząć potrzebne będzie oczywiście odpowiednie oprogramowanie. Na tej stronie możecie znaleźć porównanie różnych narzędzi. Na potrzeby artykułu będę używał programu OpenPuff, który jest darmowy i pozwala na ukrywanie wiadomości między innymi w plikach audio, video i obrazach.
Główne cechy OpenPuff
- Do 256 MB ukrytych danych
- Losowo wybrane algorytmy szyfrowania 256+256 bitów na blok
- Steganografia i szyfrowanie z możliwością zaprzeczania
- Obsługa plików graficznych (BMP, JPG, PCX, PNG, TGA)
- Obsługa plików audio (AIFF, MP3, NEXT/SUN, WAV)
- Obsługa plików video (3GP, MP4, MPG, VOB)
- Obsługa plików Flash-Adobe (FLV, SWF, PDF)
Jak ukryć wiadomość w obrazku?
Program można ściągnąć z tej strony a jeśli komuś bardzo przypadnie do gustu to twórcy przyjmują datki w różnych kryptowalutach. Po wypakowaniu i uruchomieniu pojawi się takie okienko:
Nas będzie interesować pierwsza opcja “Hide” po jej wybraniu pojawi się następne okienko.
Krok 1 – hasła
W pierwszej ramce należy wprowadzić przynajmniej hasło (A), które jest obowiązkowe a pozostałe (B) i (C) są opcjonalne jednak zwiększają bezpieczeństwo.
Hasło (A) i (B) to dwa osobne hasła używane przy szyfrowaniu a hasło (C) jest używane przy “mieszaniu” danych. (B) i (C) są używane przy CSPNG czyli przy kryptograficznym bezpiecznym generatorze liczb pseudolosowych. Jeśli wprowadzamy trzy niepowiązane ze sobą hasła i będą do siebie zbyt podobne to zamiast zielonego koloru pasek będzie miał kolor czerwony. Ma na to wpływ odległość Hamminga ,która według założenia twórców powinna wynosić 25% lub więcej.
Krok 2 – sekret
W ramce numer dwa, należy wybrać plik, który chcemy ukryć. Na potrzeby artykułu został stworzony plik tekstowy z krótką wiadomością.
Krok 3 – nośnik
W ramce numer 3 wybierany jest nośnik, który posłuży do ukrycia informacji. Oczywiście nie można ukryć dużego pliku w małym obrazku. Jeśli zdecydujemy się użyć wielu nośników to trzeba pamiętać potem o odpowiedniej kolejności podczas ich wybierania. Ma to również ogromny wpływ na bezpieczeństwo. Zdecydowanie trudniej niepowołanym, ciekawskim osobom będzie odkrycie informacji znajdującej się w łańcuchu nośników, niż jeśli użyjemy tylko jednego nośnika.
Krok 4 – proporcje
W ramce numer 4 również możemy podnieść bezpieczeństwo ukrytej informacji. Jeśli postanowimy ukryć seed phrase w plikach .png, .mp3, .bmp i zmienimy im domyślne wartości z proponowanego “medium” na inne to odkrycie sekretu staje się jeszcze bardziej skomplikowane. Wybierane zostają proporcje ukrytych danych do danych losowych, tak więc przy wyborze “medium” 20% dopisanych bitów pochodzi od naszego pliku a 80% to dane losowe. Zwiększenie % danych oczywiście pozwoli na ukrycie większego pliku w tym samym nośniku.
Krok 5 – wabik
Na koniec w ramce 4 mamy również opcję “Add Decoy!” dzięki której poza tajnym plikiem właściwym możemy ukryć wabik. Jeśli jakoś zostałoby odkryte, że w danym zdjęciu ukryto wiadomość i byłoby się zmuszonym do podania hasła to funkcje wabika może spełnić mało istotny sekret, który wyglądałby wiarygodnie. Przykładowo ukrywamy portfel z Bitcoinami a jako przynętę używamy portfela z Dogecoinami. W ten prosty sposób bezpieczeństwo wzrasta drastycznie, ponieważ z perspektywy atakującego nie da się stwierdzić czy przynęta jest faktycznym sekretem czy wabikiem.
Krok 6 – ukrywanie informacji
Ostatnim już krokiem jest kliknięcie przycisku “Hide Data!” i wybranie miejsca docelowego gdzie ma się znaleźć nośnik w którym będzie ukryty plik. Pojawi się krótki raport z zakończenia procesu a w wybranej lokalizacji znajdziemy nowo utworzony plik.
Aby odczytać sekret należy oczywiście w menu głównym wybrać “Unhide” i wybrać nośniki w odpowiedniej kolejności wraz z stosunkiem prawdziwych danych do danych losowych. Następnie po wpisaniu haseł zostanie odtworzony plik, który był ukryty.
Jak to wszystko zapamiętać?
Każdy się w tym momencie może zgodzić, że steganografia okazuje się wyjątkowo trudna do odwrócenia kiedy byśmy potrzebowali dostępu do ukrytego pliku. Aby sobie z tym poradzić należy ukryć dwie informacje. Jedna z nich będzie sekretem głównym, który zostanie umieszczony na łańcuchu nośników. Powinny one być ułożone losowo a nie w porządku alfabetycznym i z różnymi rozszerzeniami. Warto przemyśleć zwiększenie bezpieczeństwa zmieniając wartości przypisane rozszerzeniom w ramce 4 aby stosunek danych do danych losowych był różny dla każdego rozszerzenia. Do tego zastosowanie wszystkich trzech haseł oraz przynęty znacząco poprawi poziom zabezpieczeń.
Z prostego powodu, że nie jest się w stanie zapamiętać dokładnej kolejności łańcuchów nośników i wszystkich ustawień druga informacja do ukrycia to będzie plik zawierający to wszystko. Oczywiście ten plik będący swoistą “mapą do skarbów” powinien być stworzony również z zachowaniem reguł bezpieczeństwa. Aby być w stanie to zapamietać nie muszą być wtedy aż tak skomplikowane a najważniejsze aby ten plik nie wzbudzał żadnych podejrzeń.
Steganografia może poza tym służyć do podpisywania swoich treści w taki sposób, że “znak wodny” jest niewidoczny ale każdy może go sprawdzić gdyż nie jest zabezpieczony hasłem. Do tego służy opcja “SetMark” z okna głównego ale na potrzeby kryptowalut nie jest ona dla nas interesująca.
Bezpieczeństwo kosztem wygody
Pamiętajcie, że praktycznie zawsze zwiększanie bezpieczeństwa następuje kosztem wygody użytkowania. Zasada ta ma odniesienie do wszystkich zabezpieczeń i tych z świata wirtualnego i rzeczywistego. Dla przykładu prosta blokada rowerowa w postaci linki jest wygodniejsza niż odkręcenie przedniego koła roweru i połączenie go wraz z tylnym kołem i ramą zapięciem typu U-Lock. Tak więc drogi czytelniku, sam musisz znaleźć odpowiedź na pytanie jak daleko jesteś w stanie się posunąć aby osiągnąć komfortowy dla Ciebie poziom bezpieczeństwa.
Jak dobrze wiadomo najlepiej uczyć się przez zajęcia praktyczne. Po przeanalizowaniu screenów powinniście być w stanie coś odkryć. Napiszcie do mnie maila jeśli uda wam się odczytać jaką wiadomość ukryłem w obrazku.
Nawet najmniejsza zmiana w wybranych nośnikach może uszkodzić dane i sprawić, że nie będzie można już wyciągnąć ukrytych informacji. Dla przykładu wrzucenie nośnika w formie video na serwis YouTube uszkodzi ukrytą informację, ponieważ serwis ingeruje w pliki.
Pozostałe artykuły z serii Kryptowaluty i Kryptografia:
Kryptowaluty i kryptografia #1
Kryptowaluty i kryptografia #2 – Szyfrowanie wiadomości
Kryptowaluty i kryptografia #3 – Szyfrowanie OTR wiadomości
Kryptowaluty i kryptografia #4 – Bitmessage
Janusz Zieliński