====== 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.
* MAC (zašifrovaný hash připojený ke zprávě) s použitím symetrické šifry zajišťuje pouze integritu, ne autenticitu či nepopiratelnost
==== 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.
Š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).
=== CFB (Cipher feedback) ===
Transformuje blokovou šifru na proudovou.
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é.
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ě).
=== 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.
* ISO/IEC 9798-1:2010 Information technology -- Security techniques -- Entity authentication -- Part 1: General
* Part 3:
* Unilateral auth.
* One-pass – signed sequence number or timestamp
* Two-pass – challenge-response (random number)
* Mutual auth.
* Two-pass – signed sequence numbers or timestamps
* Three-pass – challenge-response (random number)
* Two-pass parallel – two unilateral two-pass protocols
==== Správa klíčů ====
Problém správy klíčů
* Yellow Pages-like - ne moc časté (key servers PGP)
* PGP vs. X509 (viz jiné otázky)
* Použití X509 v S/MIME, SSL, SET ...
* revokace (CRL a OCSP u CA ... vs revokace u PGP - každý sám)
=== 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.
* větší efektivita symetrických algoritmů
* řeší problém bezpečného přenosu/ustavení klíče
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 ======
* Něco je zpracované ve [[mgr-szz:in-psk:4-psk|4. otázce oboru PSK]]
* [[https://is.muni.cz/auth/predmety/predmet.pl?id=519427|FI:PA018]] Advanced Topics in Information Technology Security, prof. RNDr. Václav Matyáš, M.Sc., Ph.D.
====== Vypracoval ======
Ondra Mokoš
Malé úpravy: Marcel Poul
~~DISCUSSION~~