Přeskočit na hlavní obsah

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
  • 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

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

  1. Buďte transparentní ke svým uživatelům - řekněte jim, jak jejich data chráníte.
  2. Zabezpečte komunikaci tak, aby se data nepřenášela v plain textu.
    1. Ověřte, že to platí i pro interní komunikaci (mezi load balancery), zejména v případě cloudů.
    2. Vynuťte šifrovanou komunikaci.
  3. Nahraďte staré nebo slabé krypto algoritmy v současném a starém kódu.
  4. 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.
  5. Zajistěte pravidelnou key rotation.
  6. Zkontrolujte, že se v kódu / repozitáři nevyskytují privátní klíče, hesla, API klíče a další credentials.
  7. 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.
  8. 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

  1. 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.
  2. Ú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.
  3. 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ší.

😂 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.