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" →
Jaká data mám šifrovat?
- Záleží na povaze aplikace - individuální
- Osobní údaje: email, rodné číslo, telefonní číslo, adresa trvalého bydliště
- Finanční údaje: informace na kreditní kartě
- Zdravotní údaje: lékařské záznamy a poznámky, číslo zdravotního pojištění
- Know-how: dokumentace, výkresy, patenty
- Aplikační credentials: API klíče, tokeny
- Další: data podléhající regulaci, právu a jiným směrnicím nebo požadavkům, obchodní záznamy a transakce, něco, co by ohrozilo vaši konkurenceschopnost
- 💡 Citlivá data je potřeba zabezpečit i při jejich přenosu, ukládání a zpracování.
- V žádném případě je nelogujte.
Základní pravidla pro šifrování a práci s citlivými daty
- Buďte transparentní ke svým uživatelům - řekněte jim, jak jejich data chráníte.
- Zabezpečte komunikaci tak, aby se data nepřenášela v plain textu.
- Ověřte, že to platí i pro interní komunikaci (mezi load balancery), zejména v případě cloudů.
- Vynuťte šifrovanou komunikaci.
- Nahraďte staré nebo slabé krypto algoritmy v současném a starém kódu.
- Ověřte, že nedochází ke znovupoužití některých vygenerovaných klíčů v jiných aplikacích nebo na jiných místech v rámci organizace.
- Zajistěte pravidelnou key rotation.
- Zkontrolujte, že se v kódu / repozitáři nevyskytují privátní klíče, hesla, API klíče a další credentials.
- Zkontrolujte, zda se pro kryptografické účely používá náhodnost, a pokud ano, zajistěte, aby byla implementována tak, aby splňovala kryptografické požadavky.
- Zkontrolujte, zda se nedají zneužít kryptografická error hlášení.
🎓 Učíme se společně
Co jsme se dozvěděli z přednášek, školení, čtení knih a dalších aktivit?
Common API Security Pitfalls
- Speaker: Philippe De Ryck
- Při řešení security problémů se zajímáme hlavně o backend (server), protože tam se dějí veškeré důležité operace.
- 💡 Chyby vznikají proto, že se učíme podle tutoriálů (např. Build Node.js app in 10 minutes).
- Problém je, že v tutoriálu nikdo neříká, že by se měl kód zabezpečit (to se neříká ani ve škole).
- Častým problémem je nesdílení projektového know-how - nejen z pohledu bezpečnosti.
- Know-how drží lidé, není nikde zapsáno, neexistují dokumentace.
- Co když dotyčný člověk z firmy odejde, nebo bude nemocný? Odnese si know-how s sebou …
- 💎 K implementaci JWT se doporučuje použít public/private klíč místo secretu.
- Secret je často stejný pro víc aplikací (tím se pomocí jednoho secretu dostanu k datům více aplikací).
- Speaker doporučuje nepřehánět to s JWT tokeny jen proto, že jsou trendy - sessions fungují a na jejich použití není vůbec nic špatného.
Pár poznámek z O2 CyberCastu
- 💎 Když dojde k útoku a hacknou vás, tak nevypínejte počítač (jen jako poslední možnost - pokud by to pořád dolovalo data a nešlo udělat nic jiného).
- Virtuálku je možné pauznout nebo suspendovat.
- Pokud se všechno vypne, přicházíme o paměť a není možné dělat forenzní vyšetřování a cokoli zjistit (na disku nic nebude - hacker není hloupý).
- 💎 Když z firmy odchází ajťák, je potřeba změnit všechna hesla.
- Pokud říkáte, že to nejde, protože se pak rozbije půlka aplikací, tak to značí problém na úplně jiném místě.
📰 Co je nového
- White House cybersecurity strategy stresses software safety a další články
- Bílý dům vydal novou kybersecurity strategii.
- Zatím jde o vytyčení cílů a čeká se, jestli se stane součástí regulací a práva.
- 💎 Pokud strategie projde, dotkne prakticky všech digitálních společností.
- Strategie stanovuje základní pravidla pro bezpečný software, která budou muset být dodržována všemi poskytovateli služeb a dodavateli software.
- Soustředění se na Secure by design princip
- 💡 Zpráva zmiňuje, že spousta dodavatelů ignoruje best practices v oblasti vývoje software.
- To se neděje jen ve spojených státech, ale i v ČR (poznámka redakce).
- Jako motivace k investování do security mají firmy možnost dostat granty, případně bude upraven daňový systém.
- 💎 Cílem také je, aby firma vytvářející software byla právně zodpovědná za jeho bezpečnost.
- Únik citlivých dat z BidenCash
- Únik 2 milionů kreditních a debetních karet včetně CVV a expirací
- 70% karet patří američanům, 10% potom číňanům a mexičanům.
- Data byla zveřejněna zdarma na darkwebu.
- Zabezpečení AI a ochrana soukromí
- Na webu Bezpečný kód jsme vydali příručku, která popisuje:
- druhy útoků na AI moduly,
- důležitost vzdělání data inženýrů v oblasti vývoje software,
- důležitost zabezpečení (nejen) dat,
- pravidla pro ochranu soukromí a nakládání s uživatelskými a citlivými údaji.
- Podívejte se na popis a příklady konkrétních zranitelností AI jako je data poisoning, membership inference, model inversion a další.
- Na webu Bezpečný kód jsme vydali příručku, která popisuje:
😂 Závěrečný ftípek: Když jsou holky z cukru, koření a všeho hezkého a kluci ze slizu šneků a psích ocasů, z čeho je pak cloud? Většinou z linuxových serverů.
🔔 Sledujte nás na LinkedInu, kam pravidelně sdílíme další novinky a know-how.
🆘 S bezpečností vám rádi pomůžeme, klidně nám napište - školíme vývojáře i management, nastavujeme procesy, vyvíjíme bezpečné aplikace a poskytujeme další služby.