Obsah

3. Použití kryptografických algoritmů

Použití blokových symetrických algoritmů, zajištění důvěrnosti a integrity, módy činnosti. Použití základních symetrických algoritmů. Použití hašovacích funkcí, MAC. Hybridní kryptosystémy.

Vypracování

Použití blokových symetrických algoritmů

Symetrické blokové algoritmy používají stejný klíč pro šifrování i dešifrování sdílený zúčastněnými stranami. Data jsou zpracovávána po blocích dané délky, pokud je dat méně, je nutné doplnit je paddingem.

Problém symetrických algoritmů je distribuce klíče nebo společné generování všemi stranami.

Pro zajištění určité úrovně bezpečnosti stačí kratší klíče než u asymetrických algoritmů (včetně eliptických křivek).

Symetrické algoritmy jsou méně náročné na zdroje než asymetrické algoritmy (lepší výkon).

Zajištění důvěrnosti a integrity

Důvěrnost dat znamená, že k datům v otevřené podobě mají přístup pouze entity k tomu autorizované.
Důvěrnost je zajištěna šifrováním dat. Klíč k dešifrování mají právě ti, kdo jsou autorizovaní k přístupu.

Integrita dat znamená, že data nebyla neoprávněně měněna.
Integritu dat je možné zajistit použitím MAC, hashovacích funkcí, apod.

Padding

Padding je rozšíření dat na požadovanou délku bloku.

Padding na úrovni bitů

Např. první bit 1, zbývající 0.

Padding na úrovni bytů

Jsou definované různé standardy.

ANSI X.923

Přidání nulových bytů, poslední byte má hodnotu tolik, kolik bylo přidáno bytů.

PKCS#7

Hodnota každého bytu je tolik, kolik bylo přidáno bytů.

ISO/IEC 7816-4

První přidaný byte 80, další 00.

Standard pro čipové karty.

Zero padding

Všechny byty 00. Může být nejasné, které byty jsou součástí původní zprávy a které byly přidány.

Zdroje

http://en.wikipedia.org/wiki/Padding_(cryptography)

Módy činnosti

Inicializační vektor

Blok bitů používaný některými módy pro randomizaci šifrování – vytvoření různých ciphertextů pro stejný plaintext a klíč.

IV nemusí být tajný, ale ve většině případů nesmí být stejný vektor použit opakovaně s jedním klíčem, protože to často vede k úniku informací. Např. opakované použití klíče a IV kompletně rozbije OFB a CTR módy.

ECB (Electronic codebook)

Zpráva je rozdělena na bloky a každý blok je zpracován samostatně.

Nevýhodou je, že identický blok plaintextu je vždy šifrován do identického bloku ciphertextu.

Doporučené nepoužívat.

CBC (Cipher-block chaining)

Každý blok plaintextu je před šifrováním XORován s předchozím blokem ciphertextu. První blok plaintextu je XORován s inicializačním vektorem. Každý blok tak závisí na všech předešlých blocích.

C_i = E_K(P_i \oplus C_{i-1}) P_i = D_K(C_i) \oplus C_{i-1} C_0 = IV

Šifrování nemůže být paralelizováno, dešifrování ano.

1bitová chyba v bloku plaintextu ovlivní všechny další bloky ciphertextu.
1bitová chyba v bloku ciphertextu zničí aktuální blok plaintextu a v dalším bloku plaintextu je hodnota bitu na tomto místě obrácena.

PCBC (Propagating cipher-block chaining)

Podobné jako CBC mód, ale změny se propagují nekonečně při šifrování i dešifrování (rozdíl proti CBC).

C_i = E_K(P_i \oplus P_{i-1} \oplus C_{i-1}) P_i = D_K(C_i) \oplus P_{i-1} \oplus C_{i-1} P_0 \oplus C_0 = IV

CFB (Cipher feedback)

Transformuje blokovou šifru na proudovou.

C_i = E_K(C_{i-1}) \oplus P_i P_i = E_K(C_{i-1}) \oplus C_i C_0 = IV

CFB se synchronizuje po blocích – při ztrátě dat je aktuální a následující blok zahozen, dále je možné dešifrovat normálně (stejné jako CBC).
CFB je možné rozšířit, aby synchronizoval po jednotlivých bytech, tedy maximálně jeden blok dat je ztracen.

Šifrování nemůže být paralelizováno, dešifrování ano.

Stejně jako u OFB a CTR se vždy používá pouze operace šifrování a není potřeba používat padding.

OFB (Output feedback)

Transformuje blokovou šifru na proudovou.

1bitová chyba v ciphertextu vede k přehození bitů na stejném místě v plaintextu (a obráceně).

Operace šifrování a dešifrování jsou stejné.

C_j = P_j \oplus O_j P_j = C_j \oplus O_j O_j = E_K(I_j) I_j = O_{j-1} I_0 = IV

OFB opakovaně šifruje IV a ten XORuje s plaintextem (ciphertextem) pro šifrování (dešifrování).

Každý výstup závisí na všech předchozích blocích, takže tyto operace není možné paralelizovat.
Plaintext a ciphertext jsou použity pouze pro XOR, tedy šifrovací operace mohou být počítány předem, finální XOR je pak možné paralelizovat.

CTR (Counter)

Transformuje blokovou šifru na proudovou.

V podstatě stejný mód jako OFB, ale šifruje čítač místo IV.
Čítač může být cokoliv, co produkuje sekvenci dat bez opakování (s dostatečně dlouhou periodou).

Vhodné pro paralelizaci.

1bitová chyba v ciphertextu vede k přehození bitů na stejném místě v plaintextu (a obráceně).

C_j = P_j \oplus E_K(Ctr_j) P_j = C_j \oplus E_K(Ctr_j)

Zdroje

http://en.wikipedia.org/wiki/Block_cipher_modes_of_operation

Použití základních asymetrických algoritmů.

Překlep? V zadání je dvakrát použití symetrických algoritmů, tak jsem z tohohle udělal použití základních Asymetrických alg.

Každá strana má vlastní klíčový pár, který se skládá z veřejného a soukromého klíče. Asymetrická kryptografie se typicky používá pro šifrování a digitální podepisování dat.

Správa klíčů

Problém správy klíčů

PKI

Použití v uzavřených systémech; Online-Banking …

Pading

Příprava zprávy před šifrováním nebo podepisováním s použitím schémat jako PKCS#1 nebo OAEP a dalších.

Není to padding ve smyslu prodloužení zprávy na určitou délku. Tento přístup není dostatečně bezpečný a už se nepoužívá.

Padding zprávu upraví, aby nebylo možné jednoduše napadnout matematickou strukturu, na které je algoritmus založen.
Cílem je udělat rozbití paddingu tak těžké jako řešení problému, na kterém je algoritmus založen.

Šifrování zpráv

Nejrozšířenějším formátem je CMS (Cryptographic message syntax). Jedná se o ASN.1 formát. Pro odesílání zpráv mejlem je potom používaný formát S/MIME, který buď ke zprávě připojí digitální podpis ve formátu PKCS#7 nebo vezme celou zprávu ve formátu CMS a tu vloží do mejlu zakódovanou v Base64.

Algoritmy

RSA (šifrování),DSA (šifrování, podepisování), elgamal(oboje) (viz otázka 2)

Použití hašovacích funkcí, MAC

Kryptografické hashovací funkce

Běžně používané algoritmy jsou:

Název Délka výstupu Prolomena?
MD5 128 bitů Ano
SHA-1 160 bitů Teoretický útok
SHA-2 224, 256, 384, 512 bitů Ne
SHA-3 224, 256, 384, 512 bitů Ne

a další…

Nový SHA-3 standard vzešel z nedávno skončené soutěže vypsané NISTem.
Vítězem se stal algoritmus Keccak, ostatní finalisti: BLAKE, Grøstl, JH a Skein.

MAC (Message authentication code)

Informace, která zajišťuje integritu a autenticitu zprávy.

Integrita – zpráva nebyla změněna neoprávněně.
Autenticita – ověření původu zprávy.

K vytvoření i ověření MAC je používán tajný klíč sdílený mezi oběma stranami.

MAC může být založen na kryptografických hashovacích funkcích (např. HMAC) nebo na blokových šifrách (např. CBC-MAC nebo CMAC).

MAC nezajišťuje nepopíratelnost, protože kdokoliv, kdo zná tajný klíč, může vytvořit MAC.

Hybridní kryptosystémy

Kombinují výhody symetrické a asymetrické kryptografie.

Obsah zprávy je šifrován symetrickým algoritmem. Sdílený klíč je pro přenos šifrovaný asymetrickým algoritmem.

Například SSL/TLS nebo SSH.

Materiály

Vypracoval

Ondra Mokoš
Malé úpravy: Marcel Poul