Algorytm Base64

anubis

Base64
System szyfrowania Base64 jest bardzo ciekawym szyfrem mimo jego słabości i prostoty, gdyż wykorzystywany jest podczas kodowania i dekodowania poczty E-mail. Należy on do podzbioru standardu MIME (Multipurpose Internet Mail Extensions). Z punktu widzenia kryptologii istotny jest fakt, że zbiór wyjściowy jest o 33% większy od zbioru wejściowego, oraz to, że algorytm BASE64 nie zapewnia należytego
bezpieczeństwa.
Algorytm BASE64 bazuje na 64 elementowej tablicy znaków (patrz załącznik)

Proces szyfrowania przebiega w następuj?cych krokach:
Pobierane są trzy znaki zbioru wejściowego
Znaki zamieniane są na zapis binarny
Po zamianie znaków na system dwójkowy uzyskuje się cią?g 24 bitów
Ciąg ten dzieli się na 4 sześcio- bitowe podciągi
Podciągi uzupełniane są do długości 8 bitów, poprzez dodanie dwóch najstarszych bitów o wartości 0
Tak uzyskane 8 bitowe ciągi zamieniamy na znaki, wg wyżej przedstawionej tabeli

Przykład:Zaszyfrujemy algorytmem BASE64 napis ANUBIS
A - 01000001
N - 01001110
U - 01010101
Po zapisie w jeden ci?g będzie miało to postać:
010000010100111001010101
Dzielimy to na 4 6-bitowe ciśgi:
010000 010100 111001 010101
Uzupełniamy do 8 bitów:
00010000 00010100 00111001 00010101
Co z zapisie dziesiętnym ma postać:
00010000 - 16
00010100 - 20
00111001 - 57
00010101 - 21
Odczytujemy z tabeli odpowiedniki i zapisujemy:
QU5V

Tą samą czynność powtarzamy dla pozostałych 3 bajtów słowa (czyli: BIS).
Odkodowanie jest operacją? odwrotną (jest to kolejny szyfr symetryczny).
Na samym początku jest wspomnane że szyfr nie zapewnia bezpieczeństwa. Dlaczego jest
więc wykorzystywany w poczcie E-mail? Otóż jak można zauważyć obserwuj?c tablicę BASE64
szyfr bazuje jedynie na 64 DRUKOWALNYCH znakach - oznacza to, że nawet pliki binarne są
przekształcane do postaci drukowalnej - a to gwarantuje, że dołączany do poczty zbiór
nie będzie posiadał znaków zarezerwowanych dla protokołu SMTP (znaków sterująych).

Anubis
www.anubis.prv.pl

2 komentarzy

Jesli jestesmy juz w dziale "Algorytmy", wiekszosc z nas szuka czegos wiecej niz ... No wlasnie, jak nawac ten artykul?? Jesli ktos szuka szczegolow proponuje zajrzec na moja strone: http://www.kryptologia.private.pl/base64/base64.htm. Niestety nie mialem i nadal nie mam czasu rozbudowywac strony... Przeniosl bym ten opis algorytmu na 4programmers ale jakos nie chce mi sie w tym "kopac" :) A propos... Base64 nie jest szyfrem ale standardem kodowania!!!

W artykule nie wspomniano o dość ważnym elemencie - znak '=' jest 65-tym znakiem wykorzystywanym w kodowaniu/transmisji, co prawda nie jest używany do kodowania treści, ale jest to znak sterujący. Ten znak jest dodawany na końcu każdej niepełnej trójki, tzn. gdy do zakodowania zostają nam 2 znaki, to zakodowany ciąg znaków będzie na końcu zawierał dodatkowo jeden znak =, a gdy zostaje nam do zakodowania jeden znak, ciag zakodowany w base64 będzie zawierał == /Michał Rogoziński