Spousta začátečníků si dává mezi Šifrování a Kódování (Encoding) rovnítko. Ale pozor, to je omyl!

Zatímco šifrování vyžaduje tajemství a klíč a jeho cílem je, aby útočník nevěděl, co jsme napsali (zajišťuje Confidentiality), kódování data pouze transformuje z jednoho standardizovaného formátu do druhého. Důvod kódování není skrývání, ale univerzální kompatibilita. Slouží výhradně k tomu, aby se nestandardní písmena, bajty nebo celá videa daly bez ztráty přesunout z bodu A do bodu B po sítích a přístrojích, které rozumí jen obyčejnému zúženému textu.

Kódování je na 100 % veřejně obousměrné bez znalosti jakéhokoliv hesla. Jakmile systém narazí na kódovaný text, jednoduše ho pomocí stejného kodéru převede zpět (Dekódování).

Nejběžnější formáty v IT světě

1. Base64

Tradiční hvězda e-mailové komunikace a programátorů prohlížečů. Když posíláte přes e-mail fotografii, počítač tento soubor v podobě binárních bajtů nemůže vložit do starého poštovního standardu “tak jak je”, jinak by se cestou soubor uřízl nebo poškodil čtení odstavců. Vyzkouší si fotku “kódovat” do Base64, což fotku zkonvertuje pouze na velká/malá písmena latinky, čísla a znaky + a /. Často končí znaky rovnítka = sloužící k zarovnání bloku. E-mailový klient příjemce si pak tento Base64 blok potutelně de-kóduje a fotku po kliknutí zobrazí.

Příklad v kódování: Ahoj Světe! se převede na -> QWhvaiBTdsSbdGUh

2. URL Encoding (Percent-encoding)

Webové adresy smí obsahovat pouze velmi úzkou anglickou ASCII abecedu. Cokoliv jiného by samotné servery, routery a prohlížeče mátlo a odkazy by nefungovaly. Proto se mezery a speciální znaky, případně háčky a čárky, převádí pomocí symbolu procent % a hexadecimální hodnoty daného znaku.

Příklad v kódování: Místo https://techbox.cz/clanek/jak zacit web pošle odkaz kódovaně na kompatibilní: -> https://techbox.cz/clanek/jak%20zacit (%20 značí logicky mezeru). Podobně čeština jako slovo Čau bude v URL encode transformována na %C4%8Cau.

3. Hexadecimal (Base16)

Každá počítačová informace skládá svá data v bináru (nuly a jedničky). Pro programátory je analýza nedešifrovatelného programu plného milionů nul a jedniček naprosto zdlouhavá a nečitelná. Takové výpisy se proto zakódují do Hexadecimální notace. Proč? Zástup pouhých 16 znaků zkracuje ten masivní řetězec bináru na malinké zástupné úseky 0 až 9 a písmena A až F.

Příklad v kódování: Binární 01001000 01101111 01101100 01100001 (význam pro anglické Hola) je po zkrácení zapsán hexadecimálně jako elegantní -> 48 6F 6C 61.

4. Exkluzivní disjunkce (XOR)

XOR je základní logický operátor na úrovni samotných procesorů, a proto se provádí extrémně rychle. Slouží sice pro základní kódování na bitové úrovni, avšak v praxi si XOR zamilovali také tvůrci zlomyslných kódů. Dá se skvěle zneužít k technické sice primitivní, ale pro filtry matoucí obfuskaci.

Myšlenka je přímočará: Jakákoliv nula a jednička projita přes stejný tajný “bit”, změní polaritu. Pokud tu výslednou upravenou datovou směs ale proženeme tímtéž tajným “bitem” ještě podruhé, binární kód se vrátí v původní neporušené vrstvě. Z toho plyne, že útočná logika programu mohla cestovat po internetu v XORovaném formátu tak, že ji antivir vůbec nerozpoznal.