Přeskočit na hlavní obsah

Jak hashovat hesla a upgradovat algoritmy, NPM vs. phishing a další

Co je to solení a pepření hesel? Víte, jak upgradovat staré hashovací funkce na moderní a jaká je jejich minimální konfigurace? Jaká zranitelnost sužuje ChatGPT?

Malá drobnost k formátu

  • 💎 = tato informace je podle mě stěžejní
  • 💡 = tato informace mi přišla zajímavá

🏆 Téma: Hashování a práce s hesly

  • V minulém díle newsletteru jsme si povídali o šifrování, dnes se zaměříme na hashování.
  • Hashování = jednosměrné, heshovanou hodnotu nelze převést zpět na původní hodnotu
    • “Tajná zpráva” → "hashovací funkce" → “abc123def456”
    • “abc123def456” → ❌❌❌ → “Tajná zpráva”
  • Jedná se o další způsob ochrany citlivých dat.
  • 💎 Hashování slouží ke spoustě účelů, např. porovnávání velkého množství dat atp., nejčastěji je ale známé v souvislosti s hesly (jejich ověřováním).
    • Uživatel při registraci zadá heslo, které zahashujeme a uložíme do databáze.
    • Při přihlašovaní zadané heslo z formuláře zahashujeme a porovnáme ho s heslem v databázi.
  • 💎 Účelem je, aby útočník data nezískal ani v případě napadení aplikace nebo databáze.
  • Jelikož šifrovanou hodnotu je možné dešifrovat, existuje určité riziko získání hesla, kdyby bylo pouze šifrované.
    • 💡 Šifrování by se v případě hesel mělo používat jen ojediněle - např. pouze pokud potřebuju heslo dostat do původní podoby.

Solení (salting)

  • Sůl = jedinečný, náhodně vygenerovaný řetězec, který se přidává k heslu v rámci hashování
  • Typickým "problémem" hashování je hash samotný, který je stále stejný.
  • 💡 Pokud více uživatelů zadá heslo "moje_heslo" a jeho hash bude "abc123def456", pak bude v databázi vidět, že X uživatelů má stejné heslo.
    • Sice bude vidět jen hash (a nikoli heslo původní), ale i tak může jít o cennou informaci.
  • 💎 Aby se tomuto jevu předešlo, přidává se k zadanému heslu sůl, která je uložena v databázi samostatně.
    • "moje heslo" + "jedinečná sůl" → "abc123def456"
    • "moje heslo" + "jedinečná sůl" → "xyzABC123456"
  • Díky tomu není poznat, že mají dva uživatelé stejné heslo - moderní algoritmy k heslu přidávají sůl automaticky (např. bcrypt).

Pepření (peppering)

  • Účelem je zabránění prolomení některého z hashů, pokud má útočník přístup k databázi.
  • 💎 Jednou z technik je zahashování hesla a následné zašifrování symetrickým klíčem před uložením.
    • Klíč funguje jako pepř.
  • Pepř je sdílený mezi hesly a není jedinečný jako sůl.
  • 💎 Pepř by neměl být uložený v databázi narozdíl od soli.
    • Je to secret a měl by být uložený ve vaultu a být vhodně zabezpečený.

Jak na upgrade starších hashů

  • Starší hashe (MD5, SHA1 …) by měly být aktualizovány na moderní (Argon2id, bcrypt, scrypt, PBKDF2).
  • 💎 Při dalším zadávání hesla (typicky přihlášení) ho zahashujte pomocí moderního algoritmu.
  • Dobrým postupem je také vypršení platnosti aktuálního hesla a požadování nového po expiraci.
  • Nevýhodou je, že stará hesla budou v databázi uložena, dokud se uživatel nepřihlásí.
  • 💡 Tomu se dá vyhnout použitím stávajících hashů jako vstupu pro bezpečnější algoritmy:
    • md5($password)bcrypt(md5($password))
    • Takové hashe by měly být nahrazeny ihned při dalším přihlášení (skrývají jiná nebezpečí).
  • 💎 Ujistěte se, že upgrade hashovacího algoritmu je co nejjednodušší.
  • Počítejte s kombinací starých a nových hesel pro přechodné období.

Minimální konfigurace při použití hashovacích algoritmů

  • Argon2id = 15 MiB paměti, počtem iterací 2 a 1 stupněm paralelismu
  • scrypt = s parametrem minimálních nákladů na CPU / paměť 2^16, minimální velikostí bloků 8 (1024 bajtů) a stupněm paralelizace 1 v případě, že Argon2id není k dispozici
  • bcrypto = work factor 10 nebo vyšší a limit 72 bajtů
  • PBKDF2 = work factor 310.000 nebo vyšší, interní hashovací funkce HMAC-SHA-256 (pokud není vyžadována FIPS-140)

🎓 Učíme se společně

Co jsme se dozvěděli z přednášek, školení, čtení knih a dalších aktivit?

What's Up Argon2? The Password Hashing Winner A Year Later

  • Speaker: Jean-Philippe Aumasson
  • Vítěz Password Hashing Competition 2015
  • 💡 Pomocí matematické funkce a velkého množství paměti přemění heslo v hash:
    • Hesla se hashují pomocí procesoru - Argon využívá paměť = hádání hesla je složitější.
    • Pokud útočník nemá dostatek paměti, stává se hádání hesla velmi pomalou záležitostí.
    • Argon heslo v paměti rozdělí na několik částí do několika bloků.
    • Bloky náhodně mixuje mezi sebou pomocí hashe a salt.
    • Dělá to stále dokola - na základě počtu iterací:
      • Čím více je iterací, tím větší je bezpečnost hesla, ale tím pomalejší generování.
  • Existují dvě verze algoritmu:
    • Argon2d = další blok (adresa v paměti) závisí na hesle.
    • 💎 Argon2i = další blok je nezávislý na hesle (bezpečnější, např. session útok není relevantní).
  • Rychlost závisí na spoustě parametrech, ale na i7-4500U (Haswell) = 0,1 - 0,5s
  • 💎 Argon2 vs. scrypt
    • scrypt nemůže být pomalejší bez toho, aby byl větší
    • scrypt nemá mód nezávislý na datech (jako Argon2i)
    • scrypt potřebuje PBKDF2, HMAC, SHA-256 = Argon2 je jednodušší
    • Argon2 má lepší bezpečnostní analýzu

Podcast KYBEZ s Martinem Konečným

  • Martin Konečný je zakladatel CyberSecurityPlatform.cz, což je komunitní platforma určená pro odborníky na kybernetickou a informační bezpečnost, ale i pro studenty a vzdělávací instituce příbuzných bezpečnostních oborů.
  • 💎 Při zavádění bezpečnosti ve firmě začínám školením manažerů - do firmy to přinese know-how a odstartuje celý proces.
  • 💎 Při zavádění bezpečnosti ve firmě děláme analýzu rizik, na jejímž základě vyhodnotíme nejkritičtější problémy, které řešíme.
  • 💎 Nástroje pro analýzu rizik - GRC vs. Excel:
    • Excel nevýhody:
      • Neadekvátní zastupitelnost v případě odchodu autora (nový člověk nemusí vše chápat)
      • Worlkflow - špatné sledování změn a osob vstupujících do procesů (garanti)
    • GRC výhody:
      • Podpora ze strany výrobce
      • Worlkflow
    • GRC nevýhody:
      • Parametrizace legislativy (česká legislativa)
  • 💡 Máme mezery v legislativě - nestíháme technologický pokrok (např. AI).
  • 💡 Panuje obava, že nám uteče podstata bezpečnosti a budeme řešit jen administrativu (v souvislosti s legislativou).
  • Objevuje se také strach z toho, že nám technologie příliš utečou a jako odborníci na bezpečnost jim nebudeme stačit.
  • Státu se doporučuje podpořit pružnost vzdělávání odporníků v oblasti bezpečnosti a soustředit se na jejich udržení ve státní správě.

📰 Co je nového

  1. Tisíce NPM balíčků plných phishing odkazů
    • NPM = správce balíčků pro Javascript a Node.js
    • 💎 Balíčky a profily byly vytvořeny automatizovaně.
    • Útočníci nahráli balíčky, které obsahovaly phishing odkaz v souboru README.md.
    • Po kliknutí na odkaz pak získávali odměny (referral).
    • Odkaz měl vést na stránku pro stažení ebooku a byl zkrácen pomocí služby tinybit, což situaci jen zhoršovalo.
    • Ve výsledku byl uživatel přesměrováván z jedné služby na druhou a ke stažení ebooku se nikdy nedostal.
  2. 💡 Microsoft Security Copilot
    • Nový produkt od Microsoftu
    • 💎 Jedná se o takový ChatGPT, který řeší kybersecurity otázky a pomáhá s řešením incidentů, reportingem a threat huntingem.
    • Aktuálně je v beta fázi.
    • Stále se spoléhá na to, že chatbot bude korigovaný a jeho výstup bude ověřovaný dostatečně znalým pracovníkem.
      • Práci pouze zjednodušuje, nedělá ji za nás, ani se mu nedá 100% věřit.
    • Introduction video
  3. OWASP MASVS 2.0
    • = Mobile Application Security Verification Standard, standard pro zabezpečení mobilních aplikací
    • Nová verze vznikla po několika letech, je zjednodušená, jsou odstraněné redundance, jsou přidány zdroje a celá je uživatelsky přívětivější.
  4. ChatGPT umožnil číst titulky konverzací ostatních lidí
    • ChatGPT (nástroj od OpenAI) ve svém levém postranním panelu zobrazuje historii konverzací.
    • Každá konverzace má titulek, pomocí kterého je možné se prokliknout do původní konverzace.
    • Některým uživatelům se začaly zobrazovat titulky zpráv, které nikdy nepsali.
    • Některé nahlášené titulky obsahovaly čínskou propagandistickou tématiku.
    • Chyba byla podle informací způsobena zranitelností v open source knihovně, kterou v OpenAI využívali.

😂 Závěrečný ftípek: What’s the best way to catch a runaway robot? Use a botnet.

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