Odczytywanie zakodowanych informacji ukrytych w dopełnieniu Base64 polega na sprawdzeniu, czy bity paddingu zostały ustawione zgodnie z kanoniczną reprezentacją opisaną w RFC 4648. Jeżeli nie, można odczytywać dodatkową informację zapisaną poza zwykłym znaczeniem danych wejściowych, co bywa wykorzystywane w zadaniach CTF i ma praktyczne znaczenie dla bezpieczeństwa przetwarzania danych.
Base64, deszyfracja i odczytywanie informacji zapisanej szyfrem
Na początku trzeba rozróżnić pojęcia. Base64 nie jest szyfrem ani metodą, która ma szyfrować dane. To schemat kodowania używany po to, aby kodować dane binarne jako tekst ASCII. W praktyce można nim zakodować plik, obraz albo ciąg bajtów do przesłania przez system, który oczekuje tekstu. Dlatego odczytywanie informacji zapisanej szyfrem to co innego niż dekodowanie Base64.
Z perspektywy językowej użytkownik często wpisuje w wyszukiwarkę frazy takie jak odczytywanie informacji zapisanej szyfrem, deszyfracja, deszyfraż albo nawet hasło do krzyżówki. W klasycznej krzyżówka odpowiedzią może być „deszyfraż” lub „deszyfracja”, ale technicznie w tym artykule chodzi nie o złamanie szyfru, lecz o odczytanie ukrytego komunikatu zapisanoego w bitach dopełnienia. To nadal jest forma odczytywania informacji zapisanej szyfrem w szerokim sensie, choć bliżej jej do steganografii niż do tego, czym zajmuje się klasyczna kryptografia.
Dla porządku: Szyfr, Kryptologia i Informacja to odrębne encje pojęciowe. W prostym przykładzie, takim jak Szyfr Cezara, aby odczytywać treść, bada się alfabet i przesunięcie. Tutaj mechanizm jest inny: nie próbujemy łamać matematycznego zabezpieczenia, tylko odczytywać nadmiarowe bity, które nie powinny przenosić znaczenia.
Zasada działania dopełnienia (paddingu) w Base64
Base64 dzieli dane wejściowe na grupy bitów i mapuje je na 64 znaki. Zasada działania jest stała:
- 3 bajty wejściowe to 24 bity,
- 24 bity dzieli się na 4 grupy po 6 bitów,
- każda grupa otrzymuje odpowiadający jej znak z tabeli Base64,
- jeżeli na końcu brakuje pełnych 3 bajtów, stosuje się dopełnienie „=”.
RFC 4648 wymaga reprezentacji kanonicznej. Oznacza to, że niewykorzystane bity w ostatniej grupie muszą mieć wartość zero. Jeżeli ktoś zmieni te bity, odbiorca zwykle nadal zdoła dekodować ciąg, ale jednocześnie da się odczytywać ukrytą treść zapisaną poza standardowym znaczeniem danych.
| Wartość 6-bitowa | Zapis binarny | Znak Base64 |
|---|---|---|
| 0 | 000000 | A |
| 1 | 000001 | B |
| 2 | 000010 | C |
| 3 | 000011 | D |
| 62 | 111110 | + |
| 63 | 111111 | / |
Gdy wejście ma 1 bajt, ostatnie 4 bity ostatniej użytej grupy są bitami niewykorzystanymi. Gdy wejście ma 2 bajty, niewykorzystane są 2 bity. Właśnie tam można potajemnie zapisać dodatkowy sygnał.
Analiza nieprawidłowości paddingu Base64
Obecność znaków dopełnienia (=) wewnątrz ciągu Base64 wskazuje na sklejenie wielu niezależnych bloków lub na niestandardowy zapis, który wymaga osobnej weryfikacji. To najważniejsza obserwacja przy zadaniu CTF. Jeżeli widzimy wiele krótkich segmentów zakończonych „=” albo „==”, należy odczytywać każdy segment osobno i badać, czy bity dopełnienia są zgodne z RFC 4648.
W praktyce taka analiza wygląda prosto. Najpierw dzielimy ciąg na fragmenty. Następnie dla każdego fragmentu sprawdzamy ostatni znaczący znak przed „=”. Potem zamieniamy go na wartość 6-bitową i porównujemy z liczbą bitów, które w reprezentacji kanonicznej powinny być wyzerowane. Jeśli nie są wyzerowane, te bity przenoszą ukrytą wiadomość.
To nie jest klasyczne złamanie szyfru, bo nie trzeba znać tajnego klucza ani stosować analizę częstotliwości, jak przy niektórych historycznych metodach. Nie próbujemy też łamać zabezpieczenia w sensie matematycznym. Odczytywanie informacji zapisanej szyfrem w tym przypadku polega na wykryciu niekanonicznej postaci kodowania.
Jak odczytywać dane ukryte w bitach dopełnienia Base64
Przejdźmy zatem do odczytywania informacji zapisanej w bitach dopełnienia. Procedura jest następująca:
- ustal, czy segment kończy się na „=” czy „==”,
- odczytaj wartość ostatniego znaku przed dopełnieniem,
- dla „=” interesują Cię 2 najmłodsze bity,
- dla „==” interesują Cię 4 najmłodsze bity,
- zbieraj te bity z kolejnych segmentów i składaj je w bajty.
Po złożeniu w bajty można odczytywać wynik jako tekst ASCII. Właśnie tak wykonuje się odczytywanie informacji zapisanej szyfrem w typowym zadaniu CTF opartym na Base64. Ostateczny rezultat może wyglądać jak zwykły komunikat, adres, token albo tajny ciąg znaków.
W tym miejscu warto dodać kontekst praktyczny. Administrator systemu odpowiada za konfigurację kont uprzywilejowanych. Hasło administratora to poufny mechanizm uwierzytelnienia, który umożliwia dostęp do ustawień, danych i funkcji zarządczych. Jeżeli taki sekret trafi do pliku lub wiadomości w formie możliwej do ukrytego przenoszenia, rośnie ryzyko naruszenia zabezpieczeń.
CTF, krzyżówka i szybkie odczytanie ukrytej treści
Użytkownicy wpisujący frazę krzyżówka często oczekują krótkiej odpowiedzi: odczytywanie informacji zapisanej szyfrem to najczęściej deszyfraż lub deszyfracja. Jednak w zadaniach technicznych potrzeba czegoś więcej niż odpowiedzi jak do rubryki „krzyżówka”. Trzeba umieć odczytywać bity i rozumieć, dlaczego Base64 nie służy do tego, by coś zaszyfrować.
Jeżeli segmenty tworzą wiele krótkich bloków, a każdy kończy się paddingiem, to właśnie tam należy szukać ukrytego kanału. Taki schemat pojawia się regularnie w CTF, bo jest prosty do przygotowania i uczy rozróżniania pojęć: kodowanie, steganografia, szyfry oraz metody szyfrowania. Dla osoby rozwiązującej zadanie liczy się szybkie odczytanie wzorca, a nie pełna teoria.
Na marginesie: w zapytaniach mieszanych wyszukiwarka łączy technikę z zagadkami językowymi, stąd pojawiają się frazy typu „Szyfru czyli odczytanie utajonego tekstu krzyżówka”, „Zakodowane Hasło w wierszyku krzyżówka” czy „W nim zadanie krzyżówka”. Dla czytelnika bloga prawniczego kluczowe jest jednak to, by odróżnić zadanie edukacyjne od realnego incydentu bezpieczeństwa.
Prawne znaczenie szyfrowania i odczytywania zakodowanych informacji
Z punktu widzenia prawa ochrona danych osobowych nie kończy się na użyciu jednego mechanizmu technicznego. Art. 5 ust. 1 lit. f RODO wymaga zapewnienia integralności i poufności danych, a art. 32 RODO nakazuje dobrać odpowiednie środki techniczne i organizacyjne, uwzględniając stan wiedzy technicznej, koszt wdrożenia, charakter, zakres, kontekst i cele przetwarzania oraz ryzyko naruszenia praw lub wolności osób fizycznych.
W art. 32 ust. 1 lit. a RODO wprost wskazano pseudonimizację i szyfrowanie danych osobowych jako przykładowe środki. Jeżeli organizacja przesyła dane w formatach tekstowych, powinna wiedzieć, że Base64 nie zapewnia poufności. Samo zakodowanie treści nie daje ochrony, jaką daje mechanizm kryptograficzny. Dlatego trzeba stosować rzeczywiste systemy szyfrowania, a nie jedynie przekształcenia ułatwiające transmisję.
W razie naruszenia może dojść do obowiązków z art. 33 i 34 RODO, czyli zgłoszenia naruszenia organowi nadzorczemu oraz, w określonych przypadkach, zawiadomienia osoby, której dane dotyczą. W Polsce organem tym jest Prezes UODO. Jeżeli incydent dotyczy przedsiębiorcy obsługującego konsumentów, znaczenie może mieć również rzetelność informacji o sposobie ochrony danych w relacjach kontraktowych.
Dlaczego Base64 to nie szyfrowanie: od starożytnych szyfrów do nowoczesnych metod
Aby dobrze odczytywać różnicę, warto porównać Base64 z klasycznym szyfrem. Szyfr cezara zmienia litery według reguły; można go rozszyfrować, badając alfabet i przesunięcie. Współczesny algorytm szyfrowania działa inaczej, ale nadal celem jest poufność. Base64 nie ukrywa znaczenia, tylko zmienia reprezentację danych.
Historia ochrony tajnych wiadomości biegnie od starożytnych metod po nowoczesne metody, w tym mechanizmy oparte na klucza publicznego. Dziś znaczenie mają też rozwiązania rozwijane z myślą o odporności na postęp kwantowy. Niezależnie od epoki, sens pozostaje ten sam: szyfrować dla poufności, a kodować dla zgodności formatu. W zadaniu CTF ktoś może dodatkowo ukryć dane w paddingu, lecz to steganografia, nie bezpieczny kanał transmisji.
Jakie urządzenie służy do odszyfrowania informacji?
Najczęściej nie chodzi o jedno szczególne urządzenie, lecz o komputer i odpowiednie narzędzie programowe. W praktyce odczytywanie informacji zapisanej szyfrem zależy od rodzaju problemu: czasem trzeba dekodować Base64, czasem analizować zaszyfrowany tekst, a czasem badać historyczne technik szyfrowania, np. w modelach znanych z zastosowań wojskowy lub edukacyjnych. W zwykłej krzyżówka odpowiedzią będzie słowo, ale w informatyce potrzebna jest poprawna metoda techniczna.
Jeżeli chcesz odczytywać dane z paddingu Base64, nie trzeba ich matematycznie łamać. Trzeba sprawdzić, czy końcowe bity są zgodne z kanoniczną postacią. Gdy nie są, można z nich złożyć ukryty, czasem potajemny, komunikat. To właśnie odróżnia takie zadanie od sytuacji, w której ktoś próbuje zaszyfrować plik albo doprowadzić do złamania klasycznej ochrony danych.
Treść ma charakter wyłącznie informacyjny i nie stanowi porady prawnej. Jeśli potrzebna jest ocena zgodności procesów IT z RODO, analiza incydentu albo wsparcie przy wdrożeniu środków ochrony danych, zapraszamy do kontaktu z Kancelarią Adwokacką adwokata Mateusza Orlickiego.