Princip šifrování
Z MiS
(Rozdíly mezi verzemi)
m (Přidáno do kategorie CRI) |
(→Běžné využití: TLS místo SSL.) |
||
(Není zobrazeno 17 mezilehlých verzí od 1 uživatele.) | |||
Řádka 1: | Řádka 1: | ||
− | [[Category:VSE]][[Category:Sítě]][[Category:Informatika]][[Category: | + | [[Category:VSE]][[Category:Sítě]][[Category:Informatika]][[Category:Bezpečnost]][[Category:CRI]][[Category:Stránky s obrázky]][[Category:Šifrování a podpis]] |
+ | |||
+ | <div class="Poznamka"> | ||
+ | Nepleťte ''kódování'' s ''šifrováním''!!! | ||
+ | |||
+ | Viz také: [[K%C3%B3dov%C3%A1n%C3%AD-%C5%A1ifrov%C3%A1n%C3%AD-hashov%C3%A1n%C3%AD]] | ||
+ | </div> | ||
+ | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
== Rozdělení šifrovacích metod == | == Rozdělení šifrovacích metod == | ||
− | + | ||
+ | ; Symetrické šifrovací metody | ||
* Odesilatel i příjemce mají společný šifrovací klíč. | * Odesilatel i příjemce mají společný šifrovací klíč. | ||
* Společným šifrovacím klíčem lze zprávu zašifrovat i dešifrovat. | * Společným šifrovacím klíčem lze zprávu zašifrovat i dešifrovat. | ||
− | + | ||
+ | ; Asymetrické šifrovací metody | ||
* Účastník je identifikován dvojicí klíčů | * Účastník je identifikován dvojicí klíčů | ||
** soukromý klíč: zná pouze vlastník | ** soukromý klíč: zná pouze vlastník | ||
** veřejný klíč: smí znát kdokoli | ** veřejný klíč: smí znát kdokoli | ||
− | |||
* Zpráva zašifrovaná veřejným klíčem lze dešifrovat pouze soukromým klíčem a naopak. | * Zpráva zašifrovaná veřejným klíčem lze dešifrovat pouze soukromým klíčem a naopak. | ||
− | + | ||
− | + | ||
− | + | ||
− | * | + | == Porovnání vlastností == |
− | === Běžné využití | + | ; Asymetrické šifrovací metody |
+ | # Dokáží zajistit nepopiratelnost odeslání zprávy. | ||
+ | #: Autor zprávy nemůže popřít její odeslání. | ||
+ | # Ulehčují problém s bezpečným předáním klíče potenciálně nebezpečnou sítí. | ||
+ | #: Nevadí odposlechnutí klíče třetí osobou, je jen třeba zabránit podvržení falešného klíče. | ||
+ | # Jedna kombinace veřejného a soukromého klíče stačí pro komunikaci s libovolným počtem partnerů. | ||
+ | # Každý účastník zodpovídá za svůj soukromý klíč, není zde sdílená zodpovědnost za vyzrazení klíče. | ||
+ | |||
+ | ; Symetrické šifrovací metody | ||
+ | # Jsou výpočetně méně náročné. | ||
+ | |||
+ | |||
+ | |||
+ | == Šifrování symetrickou šifrovací metodou == | ||
+ | |||
+ | * Odesilatel i příjemce mají společný šifrovací klíč, kterým lze správu zašifrovat i rozšifrovat. | ||
+ | * Při komunikaci na dálku vzniká problém s předáním šifrovacího klíče (pokud se odesilatel a příjemce nemohou sejít osobně předem)! | ||
+ | ** Klíč by měl být dostatečně dlouhý a náhodný. | ||
+ | ** Klíč by měl být použit pouze jednou! | ||
+ | |||
+ | [[Soubor:sifr01_sym.png]] | ||
+ | |||
+ | [[Soubor:sifr01-1_vice.png]] | ||
+ | |||
+ | |||
+ | |||
+ | == Šifrování asymetrickou šifrovací metodou == | ||
+ | * Každý účastník komunikace má pár veřejný + soukromý klíč. | ||
+ | * Pokud zprávu zašifrujeme soukromým klíčem účastníka, rozšifrovat lze '''pouze''' veřejným klíčem téhož účastníka. A naopak co zašifrujeme veřejným klíčem, lze rozšifrovat '''pouze''' soukromým. | ||
+ | * Odesilatel si nechává svůj soukromý klíč, ten nikomu nesděluje. | ||
+ | * Veřejný klíč může znát kdokoli, případné přečtení při předávání veřejnou sítí tedy není rizikem. | ||
+ | |||
+ | [[Soubor:sifr_klice-ver-soukr.png]] | ||
+ | |||
+ | === Zabezpečení proti přečtení zprávy === | ||
+ | * K zabezpečení zprávy proti přečtení by stačilo, kdyby odesilatel zprávu šifroval příjemcovým veřejným klíčem. | ||
+ | * Taková zpráva lze poté rozšifrovat pouze příjemcovým soukromým klíčem, který zná pouze příjemce. | ||
+ | * Odesilatel by teoreticky nemusel mít dvojici klíčů vůbec vygenerovanou. | ||
+ | |||
+ | [[Soubor:sifr02_asym.png]] | ||
+ | |||
+ | === Zabezpečení proti přečtení zprávy '''a zároveň''' proti podvržení falešné zprávy === | ||
+ | * V předchozím případě sice útočník nemůže zprávu přečíst, může ale zajistit, aby příjemce zprávu neobdržel (zničit zprávu) a poslat příjemci falešnou zprávu. | ||
+ | * Asymetrické šifrovací metody však nabízí zabezpečení i proti tomuto způsobu útoku. | ||
+ | * Odesilatel může zprávu zašifrovat příjemcovým veřejným klíčem '''a navíc i '''svým soukromým. Takovou zprávu útočník nemůže zfalšovat, protože by musel znát odesilatelův soukromý klíč. | ||
+ | * Příjemce pak zprávu dešifruje odesilatelovým veřejným klíčem a svým soukromým. | ||
+ | |||
+ | [[Soubor:sifr02-1_vice.png]] | ||
+ | |||
+ | === Lze na takovou komunikaci vůbec zaútočit? === | ||
+ | * Pokud si uživatel a příjemce vyměnili své veřejné klíče spolehlivou cestou (například si je předali osobně), pak je role útočníka velmi obtížná. | ||
+ | * Zbývá mu hledat chyby v šifrovacích programech nebo útočit tzv. hrubou silou (zkoušet uhodnout klíč). Pravděpodobnost takového útoku by měla být malá. | ||
+ | * Problematická je situace, kdy si odesilatel a příjemce potřebují vyměnit své veřejné klíče pomocí nezabezpečené sítě. V tu chvíli může útočník oběma podsunout svůj veřejný klíč a poté se pokusit o útok man-in-the-middle. | ||
+ | * V praxi se proto pro předávání klíčů používají [[Certifikační autorita|certifikační autority]]. | ||
+ | <div class="Poznamka">Všimněte si, že nám nevadí, když si útočník veřejné klíče přečte. Soukromé klíče, které musí zůstat tajné, se nikam nepředávají. To je veliká výhoda proti symetrickým šifrovacím metodám!</div> | ||
+ | |||
+ | |||
+ | |||
+ | == Běžné využití == | ||
* Asymetrické šifrovací metody jsou obvykle využívány pro bezpečné předání symetrického šifrovacího klíče nebo otisku zprávy. | * Asymetrické šifrovací metody jsou obvykle využívány pro bezpečné předání symetrického šifrovacího klíče nebo otisku zprávy. | ||
* Šifrování většího objemu dat se obvykle následně provádí symetrickými šifrovacími metodami. | * Šifrování většího objemu dat se obvykle následně provádí symetrickými šifrovacími metodami. | ||
+ | |||
+ | ; TLS | ||
+ | * Vrstva pro šifrovanou komunikaci (implementace části prezentační vrstvy). | ||
+ | * Typicky se používá pro šifrovaný přenos dat protokolu HTTP (https://...). | ||
+ | * Dříve se používal jeho předchůdce SSL. | ||
+ | * Viz také: [https://en.wikipedia.org/wiki/Transport_Layer_Security] | ||
== Příklady šifrovacích algoritmů == | == Příklady šifrovacích algoritmů == | ||
+ | |||
=== Symetrické šifrovací algoritmy === | === Symetrické šifrovací algoritmy === | ||
; DES | ; DES | ||
Řádka 51: | Řádka 113: | ||
* Zdroje: [http://en.wikipedia.org/wiki/Serpent_%28cipher%29 Wikipedia.org: Serpent (cipher)] | * Zdroje: [http://en.wikipedia.org/wiki/Serpent_%28cipher%29 Wikipedia.org: Serpent (cipher)] | ||
; Twofish | ; Twofish | ||
+ | |||
=== Asymetrické šifrovací algoritmy === | === Asymetrické šifrovací algoritmy === | ||
; RSA | ; RSA | ||
Řádka 56: | Řádka 119: | ||
* Je základem protokolu SSL. | * Je základem protokolu SSL. | ||
* Matematický princip: Malá Fermatova věta (násobení velkých prvočísel) | * Matematický princip: Malá Fermatova věta (násobení velkých prvočísel) | ||
+ | |||
+ | |||
+ | |||
+ | == Zajímavost — historické šifry == | ||
+ | * Césarova šifra (přelom letopočtu): [https://www.algoritmy.net/article/34/Caesarova-sifra Algoritmy.net → Caesarova šifra] | ||
+ | ** Každé písmenko zprávy posunete o zadaný počet písmen v abecedě. | ||
+ | ** Klíčem je zde počet písmen, o které posunujeme. | ||
+ | <div class="Priklad">Příklad: <code>A h o j K a r l e</code> + klíč <code>2</code> → <code>C j q l M c t n g</code></div> | ||
+ | * Vigenèrova šifra (1556): [https://www.algoritmy.net/article/53/Vigenerova-sifra Algoritmy.net → Vigenèrova šifra] | ||
+ | * Šifra Playfair (1854): [http://www.shaman.cz/sifrovani/sifra-playfair.htm Shaman.cz → Šifra Playfair] | ||
+ | * Vernamova šifra (1917): [https://cs.wikipedia.org/wiki/Vernamova_%C5%A1ifra Wikipedia.org → Vernamova šifra] | ||
+ | ** Vlastně podobný princip jako Césarova šifra, ale každé písmeno zprávy posunu o jiný počet znaků. | ||
+ | ** Klíčem je informace, které písmeno posunout o kolik znaků. | ||
+ | ** Reálně bychom brali datový soubor se zprávou a ke každému byte zprávy přičítali odpovídající byte z náhodně vygenerovaného klíče. | ||
+ | ** Je neprolomitelná, pokud dodržíme pravidla: 1) klíč stejně dlouhý jako zpráva a 2) klíč je dokonale náhodný. | ||
+ | ** Důkaz neprolomitelnosti podal Shannon v roce 1949. | ||
+ | ** Problém je ale s předáním klíče. | ||
+ | <div class="Priklad">Příklad: <code>A h o j K a r l e</code> + klíč <code>2 3 1 4 3 2 5 4 1</code> → <code>C k p n M c w p f</code></div> | ||
+ | * Enigma (1918) | ||
+ | ** Originální verze prolomena už ve 30. letech 20. století. | ||
+ | ** Prolomení pokročilejší verze šifry pomohlo vítězství ve 2. světové válce. | ||
+ | ** K prolomení byly používány výpočetní stroje (předchůdci počítačů), na jejich vývoji se podílel Alan Turing. | ||
+ | |||
+ | ; Úkol | ||
+ | <div class="Ukol"> | ||
+ | ; Vyzkoušejte si šifru Playfair: | ||
+ | Chcete-li vyzkoušejte si šifrování šifrou Playfair. Zkuste zakódovat text: | ||
+ | Šifruji jako blesk! | ||
+ | Pomocí klíče: | ||
+ | Informatika | ||
+ | |||
+ | Řešení — výsledný šifrovaný text by měl znít: | ||
+ | Looíl Rf, vnmg. Kmú gqbý. | ||
+ | (Interpunkce, diakritika a velikost písmen jsou přidány náhodně.) | ||
+ | </div> | ||
+ | |||
+ | |||
+ | |||
+ | == Související stránky == | ||
+ | * [[Rizika při práci s daty]], [[Elektronický podpis]], [[Šifrování prakticky]], [[GPG]], [[Certifikační autorita]] |
Aktuální verze z 25. 3. 2021, 09:11
Nepleťte kódování s šifrováním!!!
Viz také: Kódování-šifrování-hashování
Obsah |
Rozdělení šifrovacích metod
- Symetrické šifrovací metody
- Odesilatel i příjemce mají společný šifrovací klíč.
- Společným šifrovacím klíčem lze zprávu zašifrovat i dešifrovat.
- Asymetrické šifrovací metody
- Účastník je identifikován dvojicí klíčů
- soukromý klíč: zná pouze vlastník
- veřejný klíč: smí znát kdokoli
- Zpráva zašifrovaná veřejným klíčem lze dešifrovat pouze soukromým klíčem a naopak.
Porovnání vlastností
- Asymetrické šifrovací metody
- Dokáží zajistit nepopiratelnost odeslání zprávy.
- Autor zprávy nemůže popřít její odeslání.
- Ulehčují problém s bezpečným předáním klíče potenciálně nebezpečnou sítí.
- Nevadí odposlechnutí klíče třetí osobou, je jen třeba zabránit podvržení falešného klíče.
- Jedna kombinace veřejného a soukromého klíče stačí pro komunikaci s libovolným počtem partnerů.
- Každý účastník zodpovídá za svůj soukromý klíč, není zde sdílená zodpovědnost za vyzrazení klíče.
- Symetrické šifrovací metody
- Jsou výpočetně méně náročné.
Šifrování symetrickou šifrovací metodou
- Odesilatel i příjemce mají společný šifrovací klíč, kterým lze správu zašifrovat i rozšifrovat.
- Při komunikaci na dálku vzniká problém s předáním šifrovacího klíče (pokud se odesilatel a příjemce nemohou sejít osobně předem)!
- Klíč by měl být dostatečně dlouhý a náhodný.
- Klíč by měl být použit pouze jednou!
Šifrování asymetrickou šifrovací metodou
- Každý účastník komunikace má pár veřejný + soukromý klíč.
- Pokud zprávu zašifrujeme soukromým klíčem účastníka, rozšifrovat lze pouze veřejným klíčem téhož účastníka. A naopak co zašifrujeme veřejným klíčem, lze rozšifrovat pouze soukromým.
- Odesilatel si nechává svůj soukromý klíč, ten nikomu nesděluje.
- Veřejný klíč může znát kdokoli, případné přečtení při předávání veřejnou sítí tedy není rizikem.
Zabezpečení proti přečtení zprávy
- K zabezpečení zprávy proti přečtení by stačilo, kdyby odesilatel zprávu šifroval příjemcovým veřejným klíčem.
- Taková zpráva lze poté rozšifrovat pouze příjemcovým soukromým klíčem, který zná pouze příjemce.
- Odesilatel by teoreticky nemusel mít dvojici klíčů vůbec vygenerovanou.
Zabezpečení proti přečtení zprávy a zároveň proti podvržení falešné zprávy
- V předchozím případě sice útočník nemůže zprávu přečíst, může ale zajistit, aby příjemce zprávu neobdržel (zničit zprávu) a poslat příjemci falešnou zprávu.
- Asymetrické šifrovací metody však nabízí zabezpečení i proti tomuto způsobu útoku.
- Odesilatel může zprávu zašifrovat příjemcovým veřejným klíčem a navíc i svým soukromým. Takovou zprávu útočník nemůže zfalšovat, protože by musel znát odesilatelův soukromý klíč.
- Příjemce pak zprávu dešifruje odesilatelovým veřejným klíčem a svým soukromým.
Lze na takovou komunikaci vůbec zaútočit?
- Pokud si uživatel a příjemce vyměnili své veřejné klíče spolehlivou cestou (například si je předali osobně), pak je role útočníka velmi obtížná.
- Zbývá mu hledat chyby v šifrovacích programech nebo útočit tzv. hrubou silou (zkoušet uhodnout klíč). Pravděpodobnost takového útoku by měla být malá.
- Problematická je situace, kdy si odesilatel a příjemce potřebují vyměnit své veřejné klíče pomocí nezabezpečené sítě. V tu chvíli může útočník oběma podsunout svůj veřejný klíč a poté se pokusit o útok man-in-the-middle.
- V praxi se proto pro předávání klíčů používají certifikační autority.
Všimněte si, že nám nevadí, když si útočník veřejné klíče přečte. Soukromé klíče, které musí zůstat tajné, se nikam nepředávají. To je veliká výhoda proti symetrickým šifrovacím metodám!
Běžné využití
- Asymetrické šifrovací metody jsou obvykle využívány pro bezpečné předání symetrického šifrovacího klíče nebo otisku zprávy.
- Šifrování většího objemu dat se obvykle následně provádí symetrickými šifrovacími metodami.
- TLS
- Vrstva pro šifrovanou komunikaci (implementace části prezentační vrstvy).
- Typicky se používá pro šifrovaný přenos dat protokolu HTTP (https://...).
- Dříve se používal jeho předchůdce SSL.
- Viz také: [1]
Příklady šifrovacích algoritmů
Symetrické šifrovací algoritmy
- DES
- Data Encryption Standard
- Délka klíče 56 bitů, dnes již nedostatečné vzhledem k výkonu dnešních počítačů!
- AES
- Advanced Encryption Standard, nebo také Rijndael [rendál]
- Autoři: Joad Daemen, Vincent Rijmen
- V roce 2001 přijat americkým Národním institutem pro standardizaci a technologie (NIST) jako standard pro šifrování vládních dokumentů (odtud AES).
- Délka klíče: 128, 192, nebo 256 bitů (u původního algoritmu Rijndael lze libovolně prodloužit)
- Bloková šifra (CBC - Cipher Block Chaining)
- další blok se XOR-uje předchozím a pak až šifruje
- generujeme náhodný 0. blok, kterým jen XOR-ujeme první.
- Serpent
- Autoři: Ross Anderson, Eli Biham a Lars Knudsen
- Náročnější na implementaci než Rijndael pro malé bloky (32 kol)
- Není patentována, je public domain.
- Druhá metoda ve finále volby AES spolu s vítěznou Rijndael.
- Zdroje: Wikipedia.org: Serpent (cipher)
- Twofish
Asymetrické šifrovací algoritmy
- RSA
- Autoři: Rivest, Shamir, Adleman
- Je základem protokolu SSL.
- Matematický princip: Malá Fermatova věta (násobení velkých prvočísel)
Zajímavost — historické šifry
- Césarova šifra (přelom letopočtu): Algoritmy.net → Caesarova šifra
- Každé písmenko zprávy posunete o zadaný počet písmen v abecedě.
- Klíčem je zde počet písmen, o které posunujeme.
Příklad:
A h o j K a r l e
+ klíč 2
→ C j q l M c t n g
- Vigenèrova šifra (1556): Algoritmy.net → Vigenèrova šifra
- Šifra Playfair (1854): Shaman.cz → Šifra Playfair
- Vernamova šifra (1917): Wikipedia.org → Vernamova šifra
- Vlastně podobný princip jako Césarova šifra, ale každé písmeno zprávy posunu o jiný počet znaků.
- Klíčem je informace, které písmeno posunout o kolik znaků.
- Reálně bychom brali datový soubor se zprávou a ke každému byte zprávy přičítali odpovídající byte z náhodně vygenerovaného klíče.
- Je neprolomitelná, pokud dodržíme pravidla: 1) klíč stejně dlouhý jako zpráva a 2) klíč je dokonale náhodný.
- Důkaz neprolomitelnosti podal Shannon v roce 1949.
- Problém je ale s předáním klíče.
Příklad:
A h o j K a r l e
+ klíč 2 3 1 4 3 2 5 4 1
→ C k p n M c w p f
- Enigma (1918)
- Originální verze prolomena už ve 30. letech 20. století.
- Prolomení pokročilejší verze šifry pomohlo vítězství ve 2. světové válce.
- K prolomení byly používány výpočetní stroje (předchůdci počítačů), na jejich vývoji se podílel Alan Turing.
- Úkol
- Vyzkoušejte si šifru Playfair
Chcete-li vyzkoušejte si šifrování šifrou Playfair. Zkuste zakódovat text:
Šifruji jako blesk!
Pomocí klíče:
Informatika
Řešení — výsledný šifrovaný text by měl znít:
Looíl Rf, vnmg. Kmú gqbý.
(Interpunkce, diakritika a velikost písmen jsou přidány náhodně.)