PEF MZLU v Brně 11. listopadu 2010
Úvod V současné době se pro bezpečnou komunikaci používají elektronická média. Zprávy se před šifrováním převádí do tvaru zpracovatelného technickým vybavením, do binární podoby. Tak jako nám počítače a elektronická média usnadňují komunikaci i v šifrované podobě, stejně tak umožňují nepovolaným osobám použít komplikovanější metody odhalení tajného textu. Pro bezpečnou komunikaci nelze vystačit s běžnými šiframi používanými před sto lety. Základem moderních šifer jsou polyalfabetické šifry pracující s různou délkou klíče.
Rozdělení algoritmů Proudové šifry Vstupní sekvence se kóduje bit po bitu, tak jak přichází na vstup. Typickou funkcí pro šifrování pomocí proudové šifry je operace XOR: P i = C i K i Používají se například při šifrování telefonních hovorů. Blokové šifry Vstupní sekvence je rozdělena do bloků o pevné délce. Používají se například při šifrování souborů dat.
Vlastnosti blokových šifer Dobrý návrh šifra je dobře navržená, pokud nejjednodušším útokem na ni je útok hrubou silou. Difúze malá změna v otevřeném textu má nepředvídatelné změny v textu šifrovém. Konfúze nic by nemělo naznačovat útočníkovi, že i při použití téměř shodného klíče se přiblížil správnému řešení. Úplnost každá část textu se odvíjí od každé části klíče.
Módy blokových šifer Blokové šifry pracují v různých módech, které ovlivňují bezpečnost výsledné šifry. ECB Electronic code book shodné bloky původní zprávy jsou šifrovány do shodných bloků kryptogramu. CBC Cipher block chaining každý blok šifrového textu závisí na odpovídajícím bloku otevřeného textu i všech předchozích blocích otevřeného textu. C i = E(M i C i 1 ). C 1 je možno ponechat rovno M 1 nebo C 1 = M 2 IV.
Příklad blokové šifry ECB Velikost bloku je 4 bity. Máme klíč K = B a zprávu M = A23A9. Šifrujeme M K a následným posunem o jednu pozici vlevo. 1. blok: M 1 = 1010, K = 1011 M 1 K = 0001 po rotaci C 1 = 0010 = 2(HEX). 2. blok: M 2 = 0010, K = 1011 M 2 K = 1001 po rotaci C 2 = 0011 = 3(HEX). atd. Výsledná zašifrovaná zpráva C = 23124. Bloky původní zprávy se projevují opakujícími se bloky v kryptogramu.
Problém ECB Mějme zprávu The price is four thousand pounds, která je zašifrovaná blokovou šifrou s neznámým klíčem. Víme jen, že délka bloku jsou 2 byte. Kryptogram pak zní: c 1, c 2, c 3, c 4, c 5, c 6, c 7, c 8, c 9, c 10, c 11, c 12, c 13, c 14 V případě, že útočník zprávu zná snadno si odvodí související části textu a bloků kryptogramu. Zašifrovanou zprávu pak pozmění tak, že se skádá jen z bloků: c 1, c 2, c 3, c 4, c 5, c 6, c 7, c 12, c 13, c 14 Tím modifikuje znění zprávy na The price is four pounds.
Příklad blokové šifry CBC Velikost bloku je 4 bity. Máme klíč K = B a zprávu M = A23A9. 1. blok: M 1 = 1010, IV = 0000, K = 1011 M 1 IV = 1010, M 1 K = 0001, po rotaci C 1 = 0010 = 2(HEX). 2. blok: M 2 C 1 = 0010 0010 = 0000, 0000 K = = 0000 1011 = 1011, po rotaci C 2 = 0111 = 7(HEX). 3. blok: M 3 C 2 = 0011 0111 = 0100, 0100 K = = 0100 1011 = 1111, po rotaci C 2 = 1111 = F(HEX). atd. Výsledná zašifrovaná zpráva C = 27FDF. Bloky původní zprávy nesouvisí s bloky v kryptogramu.
DES DES (Data Encryption Standard) je v dnešní době nejrozšířenější šifrovací algoritmus na světě i navzdory jeho nepříliš dobré bezpečnosti způsobené malou délkou klíče. Vychází z algoritmu LUCIFER publikovaného r. 1974 firmou IBM, který vyšel vítězně ze soutěže vyhlášené NBS o šifrovací standard v USA. DES byl přijat jako národní standard v r. 1977. Jedná se o blokovou symetrickou šifru pracující s délkou klíče 64 bitů (56 bitů). Vstupní sekvence se rozdělí na 64bitové bloky, které jsou zpracovávány odděleně. Vnitřní struktura algoritmu je vytvořena tak, aby šifrování i dešifrování používalo stejnou sekvenci kroků. To významně usnadňuje implementaci jak softwarovou tak především hardwarovou.
DES příklad Mějme text M znění 0123456789ABCDEF, který má v binární podobě tvar: M = 0000 0001 0010 0011 0100 0101 0110 0111 1000 1001 1010 1011 1100 1101 1110 1111 Klíč K zní 133457799BBCDFF1, přičemž binární podoba je: K = 00010011 00110100 01010111 01111001 10011011 10111100 11011111 11110001
DES ustavení klíče Z 64bitového klíče K je 56 bitů transponováno podle tabulky a vznikne tak klíč K+. Ostatních osm bitů je ztraceno. 57 49 41 33 25 17 9 1 58 50 42 34 26 18 10 2 59 51 43 35 27 19 11 3 60 52 44 36 63 55 47 39 31 23 15 7 62 54 46 38 30 22 14 6 61 53 45 37 29 21 13 5 28 20 12 4 K+ = 1111000 0110011 0010101 0101111 0101010 1011001 1001111 0001111
DES ustavení klíče Klíč je následně rozdělen na dvě části C 0 a D 0. Z takto vzniklých částí vytvoříme 16 klíčů pro každou iteraci šifrování na základě těchto posunů: Iterace: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 Počet posunů vlevo: 1 1 2 2 2 2 2 2 1 2 2 2 2 2 2 1 To znamená, že například C 3 a D 3 vzniknou posunem C 2 a D 2 o dva bity vlevo. C 0 = 1111000011001100101010101111 D 0 = 0101010101100110011110001111 C 1 = 1110000110011001010101011111 D 1 = 1010101011001100111100011110
DES ustavení klíče Následně je každý z klíčů K 1... K 16 transponován na výsledné klíče délky 48 bitů podle následující tabulky: 14 17 11 24 1 5 3 28 15 6 21 10 23 19 12 4 26 8 16 7 27 20 13 2 41 52 31 37 47 55 30 40 51 45 33 48 44 49 39 56 34 53 46 42 50 36 29 32 C 1 D 1 = 1110000 1100110 0101010 1011111 1010101 0110011 0011110 0011110 K 1 = 000110 110000 001011 101111 111111 000111 000001 110010
DES šifrování Na text zprávy je aplikována úvodní transpozice, která zamění pořadí jednotlivých bitů podle následující tabulky: 58 50 42 34 26 18 10 2 60 52 44 36 28 20 12 4 62 54 46 38 30 22 14 6 64 56 48 40 32 24 16 8 57 49 41 33 25 17 9 1 59 51 43 35 27 19 11 3 61 53 45 37 29 21 13 5 63 55 47 39 31 23 15 7 M = 0000 0001 0010 0011 0100 0101 0110 0111 1000 1001 1010 1011 1100 1101 1110 1111 IP = 1100 1100 0000 0000 1100 1100 1111 1111 1111 0000 1010 1010 1111 0000 1010 1010
DES šifrování Transponovaná zpráva je rozdělena na dvě části L n a R n. L 0 = 1100 1100 0000 0000 1100 1100 1111 1111 R 0 = 1111 0000 1010 1010 1111 0000 1010 1010 Takto upravené části jsou upraveny v 16ti iteracích, kdy: L n = R n 1 R n = L n 1 f (R n 1, K n ) Funkce f nejprve expanduje R n 1 z 32 bitů na 48 pomocí tabulky: 32 1 2 3 4 5 4 5 6 7 8 9 8 9 10 11 12 13 12 13 14 15 16 17 16 17 18 19 20 21 20 21 22 23 24 25 24 25 26 27 28 29 28 29 30 31 32 1
DES šifrování Dalším krokem je XOR klíče a rozšířené poloviny zprávy, K n E(R n 1 ). K 1 = 000110 110000 001011 101111 111111 000111 000001 110010 E(R 0 ) = 011110 100001 010101 010101 011110 100001 010101 010101 K 1 E(R 0 ) = 011000 010001 011110 111010 100001 100110 010100 100111.
DES šifrování Předchozí transpozicí získáme 48bitové řetězce, jinak řečeno 8 sekvencí po 6ti bitech. Můžeme psát: K n E(R n 1 ) = B 1 B 2 B 3 B 4 B 5 B 6 B 7 B 8 Každá z těchto sekvencí nám poslouží jako adresa do S-boxů, kdy první a poslední bit sekvence, udává index řádku a 4 vnitřní bity index sloupce: S 1 (B 1 )S 2 (B 2 )S 3 (B 3 )S 4 (B 4 )S 5 (B 5 )S 6 (B 6 )S 7 (B 7 )S 8 (B 8 ) 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 0 14 4 13 1 2 15 11 8 3 10 6 12 5 9 0 7 1 0 15 7 4 14 2 13 1 10 6 12 11 9 5 3 8 2 4 1 14 8 13 6 2 11 15 12 9 7 3 10 5 0 3 15 12 8 2 4 9 1 7 5 11 3 14 10 0 6 13 K1 E(R0) = 011000 010001 011110 111010 100001 100110 010100 100111. S 1 (B 1 )S 2 (B 2 )S 3 (B 3 )S 4 (B 4 )S 5 (B 5 )S 6 (B 6 )S 7 (B 7 )S 8 (B 8 ) = 0101 1100 1000 0010 1011 0101 1001 0111
DES šifrování Posledním krokem funkce f je transponování výstupu z S-boxů f = P(S 1 (B 1 )S 2 (B 2 )... S 8 (B 8 )) podle následující tabulky: 16 7 20 21 29 12 28 17 1 15 23 26 5 18 31 10 2 8 24 14 32 27 3 9 19 13 30 6 22 11 4 25 S 1 (B 1 )S 2 (B 2 )S 3 (B 3 )S 4 (B 4 )S 5 (B 5 )S 6 (B 6 )S 7 (B 7 )S 8 (B 8 ) = 0101 1100 1000 0010 1011 0101 1001 0111 f = 0010 0011 0100 1010 1010 1001 1011 1011 R 1 = L 0 f (R 0, K 1 ) = 1100 1100 0000 0000 1100 1100 1111 1111 0010 0011 0100 1010 1010 1001 1011 1011 = 1110 1111 0100 1010 0110 0101 0100 0100
DES šifrování Posledním krokem je závěrečná transpozice podle tabulky: 40 8 48 16 56 24 64 32 39 7 47 15 55 23 63 31 38 6 46 14 54 22 62 30 37 5 45 13 53 21 61 29 36 4 44 12 52 20 60 28 35 3 43 11 51 19 59 27 34 2 42 10 50 18 58 26 33 1 41 9 49 17 57 25 L 16 = 0100 0011 0100 0010 0011 0010 0011 0100 R 16 = 0000 1010 0100 1100 1101 1001 1001 0101 Obrátíme pořadí dvou sekvencí a provedeme závěrečnou transpozici. R 16 L 16 = 00001010 01001100 11011001 10010101 01000011 01000010 00110010 00110100 IP 1 = 10000101 11101000 00010011 01010100 00001111 00001010 10110100 00000101
DES výsledek Výsledkem zašifrování řetězce M = 0123456789ABCDEF je potom sekvence C = 85E813540F0AB405.
3DES Symetrický šifrovací algoritmus pracující s délkou klíče 128 nebo 192 bitů. Rozšíření v dnešní době nepříliš bezpečného DESu. Používá trojité zašifrování pomocí DES, pokaždé s jiným, nezávislým klíčem. Z = DES(k 3 ; DES(k 2 ; DES(k 1 ; O))) O = DES(k 1 ; DES(k 2 ; DES(k 3 ; Z)))
AES Tento algoritmus (původním jménem Rijndael) byl vybrán v roce 2000 jako Advanced Encryption Standard (AES). Jedná se o symetrický šifrovací algoritmus s délkou klíče 128, 192 a 256 bitů aplikovaný na bloky délky 128 bitů. Pracuje se s bloky o velikosti 4 4 byty. Šifrování se skládá z několika kroků: 1 expanze klíče šifrovací klíč se expanduje na rozšířený klíč, jehož části se následně užívají pro šifrování bloku v jednotlivých krocích, 2 úvodní iterace blok je XORován s klíčem, 3 běžná iterace, 4 závěrečná iterace. Počet běžných iterace přímo závisí na délce klíče a délce bloku, pohybuje se v rozmezí od 10 do 14.
Postup algoritmu Round (State, RoundKey) { ByteSub(State); ShiftRow(State); MixColumn(State); AddRoundKey(State, RoundKey); } FinalRound(State, RoundKey) { ByteSub(State); ShiftRow(State); AddRoundKey(State, RoundKey); } ByteSub: Jednotlivé slabiky v bloku jsou nahrazeny svými ekvivalenty z nelineární převodní tabulky. ShiftRow: Skupiny slabik bloku jsou podrobeny cyklickému posunu. Velikost posunu závisí na velikosti šifrovaného bloku. MixColumn: Skupiny čtyř slabik jsou podrobeny násobení definovanou maticí. To umožní každé slabice ovlivnit ostatní slabiky skupiny. AddRoundKey: Blok je podroben operaci XOR spolu s klíčem (RoundKey) pro tuto iterace získaného z rozšířeného klíče (Expanded Key).
IDEA Jedná se o symetrický šifrovací algoritmus s délkou klíče 128 bitů a šifrovaným blokem délky 64 bitů. Šifrovací klíč se rozdělí na osm 16bitových klíčů, které jsou prvními osmi podklíči. V dalším kroku je původní 128bitový klíč cyklicky posunut o 25 bitů doleva a rozdělen na dalších osm 16bitových podklíčů. Tento krok se opakuje, dokud není vytvořeno 52 podklíčů. Vstupní 64bitový blok je rozdělen na čtyři 16bitové bloky. Neomezený produkt k volnému použití. Součástí programu GnuPG.
Problém výměny klíčů Problém výměny klíčů mezi odesílatelem a příjemcem zprávy trápil kryptografy po několik století. Problém spočívá ve výměně tajné informace tak, aby ji nikdo třetí nebyl schopen odposlechnout. Pro distribuci klíčů se využívaly služby kurýrů logistický problém. Neřešitelnou situace začínala být v případě elektronické komunikace, elektronického obchodování.
Diffie-Hellman-Merkle Systém výměny klíčů pracuje s modulární aritmetikou. Vychází z předpokladu, že funkce (α x mod p) je funkce jednosměrná a tudíž obtížně převratitelná. Hodnota p je prvočíslo; α, 2 α p 2; x, 1 x p 2. Oba dva, Alice i Bob, dospějí ke stejnému číslu, které mohou použít jako klíč při šifrování. I v případě odposlouchávání není schopna třetí osoba ze znalosti vyměňovaných údajů získat stejný klíč.
Diffie-Hellman-Merkle Postup: Alice a Bob se shodnou na p = 11 a α = 7. Alice zvolí x = 3 Bob zvolí y = 6 Alice určí 7 x mod 11 = 2 (1) Bob vypočítá 7 y mod 11 = 4 (2) Alice pošle výsledek (1) Bobovi Alice vezme Bobův výsledek a vypočítá 4 x mod 11 = 9 Bob pošle výsledek (2) Alici Bob vezme Alicin výsledek a vypočítá 2 y mod 11 = 9
Závěr Děkuji za pozornost Dotazy?