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)
- Excel nevýhody:
- 💡 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
- 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.
- 💡 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
- 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ší.
- 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.