Jak na šifrování a práci s citlivými daty
Co je to symetrické a asymetrické šifrování? Jaká data byste měli šifrovat? Víte, jaké jsou běžné problémy při zabezpečení API a co dělat, když dojde k útoku?
Malá drobnost k formátu
- 💎 = tato informace je podle mě stěžejní
- 💡 = tato informace mi přišla zajímavá
🏆 Téma: Šifrování a práce s citlivými daty
- Šifrování = původní hodnota je za pomoci kryptografie převedena na “jinou” hodnotu, kterou je následně možné pomocí klíče získat zpět
- "Tajná zpráva" → "kryptografie, klíč" → "abc123def456" (šifrování)
- "abc123def456" → "kryptografie, klíč" → "Tajná zpráva" (dešifrování)
- 💎 Vhodné pro ukládání citlivých a osobních dat
- Nikoli hesel, ty se hashují
- Nejčastějším problémem je únik citlivých nebo osobních údajů, případně jiných tajných informací.
- Data mohou být předmětem regulací GDPR, HIPAA, PCI DSS …
- 💎 Tato data se musí vhodně zabezpečit, aby je útočník nezískal v čitelné podobě
Symetrické šifrování (secret key algorithm)
- Existuje jeden klíč, který slouží k šifrování i dešifrování.
- Klíč je sdílený mezi odesílatelem a příjemcem dat.
- Proces šifrování a dešifrování je rychlý.
Výzvy
- Musí existovat způsob, jak si bude odesílatel a příjemce klíč bezpečně vyměňovat, to znamená nemalé úsilí.
- Počet klíčů závisí na počtu uživatelů → ((n * (n - 1)) / 2), kde n = počet uživatelů.
- 10 uživatelů = 45 klíčů
- 100 uživatelů = 4.950 klíčů
- Klíč pouze šifruje a dešifruje = neposkytuje dokladu původu (proof of origin).
Asymetrické šifrování (public key kryptografie)
- Je výpočetně náročnější a pomalejší.
- Je preferovaný pro internet prostředí.
- Pro šifrování a dešifrování je použit jiný klíč (veřejný a soukromý klíč).
- Veřejný klíč (public key) může znát každý.
- Soukromý klíč (private key) je v soukromí např. na PC uživatele.
- Oba klíče jsou matematicky příbuzné.
- 💎 Je matematicky nemožné z public klíče odvodit private klíč.
- 💎 Poskytuje důvěrnost, nepopiratelnost, access control (1 private klíč = 1 osoba), autentizaci (private klíč zajišťuje kontrolu identity) a integritu (dokud neunikne private klíč, s daty nelze nic dělat).
- Výhody oproti symetrickému šifrování
- Jednoduché sdílení klíčů
- Pouze dva klíče na uživatele
Jak to funguje?
- Adam chce poslat zprávu Janě, která má private klíč (JPK) a public klíč (JPuK):
- Adam → "Ahoj Jano" →
<JPuK>
→ "šifrovaná zpráva" →<JPK>
→ "Ahoj Jano" → Jana
- Adam → "Ahoj Jano" →