Simetrični bločni in pretočni kodirniki

Simetrični bločni in pretočni kodirniki

Bločni kodirniki

Bločni kodirniki so vrsta simetričnih šifrirnih algoritmov, ki pretvorijo določeno dolžino besedila v šifrirane bloke enake dolžine. To šifriranje poteka s pomočjo zasebnega ključa, ki ga izbere uporabnik. Bloki, ki jih ustvari kodirnik so najpogosteje 128 bitni. Pri inicializaciji kodirnika se šifrirni ključ razširi na več podključev. Nato se ti podključi v več različnih ciklih premešajo preko linearnih in nelinearnih računskih operacij združijo z nekodiranim besedilom. Najpogosteje uporabljena linearna operacija je bitni XOR. Najpogosteje uporabljene nelinearne transformacije pa so realizirane s mrežami za izmenjavo in permutacijo (Substitution – Permutation Network –SPN) in mrežami Feistel (Feistel network) . Dešifriranje poteka z uporabo obratne transformacije, za katero potrebujemo enak zasebni ključ, kot smo ga uporabili pri šifriranju.

Zaradi njihove visoke zmogljivosti se bločni simetrični kodirniki pogosto uporabljajo pri upravljanju z digitalnimi pravicami, za zaščito shranjenih osebnih podatkov in kot osnovno šifriranje podatkov v internetnih protokolih.

V nadaljevanju podajamo zgled kodiranja besedila z bločnim kodirnikom:

Besedilo (360 bitov, besedilo je zapisano v znakovnem kodu ASCII): Zgled kodiranja besedila z blocnim kodirnikom

Ključ (192 bitov, znakovna tabela ASCII): kodirnikkodirnikkodirnikBesedilo zapišemo heksadecimalno (v znakovnem kodu ASCII) in ga razvrstimo v bloke velikosti štirih zlogov. Zadnji blok vsebuje en sam znak (črko m), zato ga dopolnimo po standardu PKCS#7 :

| 5A 67 6C 65 |  | 62 65 73 65 |  | 69 6D 20 6B|

| 64 20 6B 6F |  | 69 69 6C 61 |  | 6F 64 69 72 |

| 64 69 72 61 |  | 20 7A 20 62 |  | 6E 69 6B 6F |

| 6E 6A 61 20 |  | 6C 6F 63 6E |  | 6D 03 03 03 | zaporedje 03 03 03 je dodano po standardu PKCS#7

Na enak način zapišemo še ključ:

| 6B 6F  64 69 |

| 72 6E 69 6B | 

| 6B 6F  64 69 |

| 72 6E 69 6B | 

Ključ se nato po vnaprej določenem postopku razdeli na več podključev:

| 84 7E 9D 8A |  | 4A 5A 9F A7 |  | C9 3B 0A  2A | | 39  14 F2 D4 | 

| BD 4E 6F 5E | | 61 D6 C7 DD |  | A8 ED CD F7 | | 91  F9 3F 23 | 

| 2C B7 50 7D | | C0 85 38  AC | | 68  68 F5  5B | | F9 91 CA 78 |

| D5 26 9A 05 | | 27 3D 53  AF |  | 4F 55  A6 F4 |  | B6 C4 6C 8C |

Vsak blok besedila se kodira z drugim podključem, pri čemer je lahko kodiranje odvisno tudi od dopolnilnih načinov in linearne ali nelinearne transformacije.

Pretočni algoritmi

Pretočni algoritmi so zasnovani tako, da so izjemno hitri. So hitrejši od bločnih kodirnikov, operirajo pa nad manjšimi enotami besedila (navadno je kodiranje izvedeno na nivoju posameznega bita vhodnega besedila). 

Pri pretočnih algoritmih najprej iz skrivnega ključa tvorimo psevdonaključno bitno zaporedje. Nato preko operacije XOR kombiniramo vsak bit psevdonaključnega bitnega zaporedja ključa z istoležnim bitom sporočila. Da zagotovimo čim večjo varnost, lahko isto psevdonaključno zaporedje ključa uporabimo samo enkrat (one-time pad), saj je pri kratkem, ponavljajočem ključu, s kombiniranjem šifriranega teksta razmeroma lahko ugotoviti dolžino ter vrednost ključa in nato dešifrirati sporočilo. 

David Tacer