Přejít k učivu
SBCZ.COM
Lekce 1 z 6 · 8 min čteníZdroj k tématu ↗

0 · Zabezpečení účtů

Zabezpečení účtů

  • Tohle je úvod do kyberbezpečnosti CS50.
  • Dnes se zaměříme na bezpečnost tvých účtů.
  • Začneme tím, co vlastně znamená bezpečnost.

Bezpečnost

  • V běžném světě si můžeme bezpečnost představit jako klíč k fyzickému zámku.
  • V digitálním světě se bezpečnost skládá z mnoha různých prvků.
  • Autorizace je v původních poznámkách popsána jako ověření, že jsi skutečně osobou, která má mít k účtu přístup.
  • Uživatelské jméno je jedním ze způsobů, jak prokazuješ, že máš mít k účtu přístup.
  • Heslo je dalším způsobem, jak prokazuješ, že máš mít k účtu přístup.
  • Myšlenkou je, že teoreticky bys měla umět platné uživatelské jméno i heslo poskytnout pouze ty.
  • Slovníkové útoky jsou jedním ze způsobů, kterými se útočníci pokoušejí uhodnout heslo. Mohou použít také útok hrubou silou a zkoušet dlouhé seznamy možných hesel. Proto je velmi důležité bránit se těmto útokům kvalitním heslem.
  • Při posuzování bezpečnosti je potřeba zvažovat kompromis mezi použitelností a bezpečností. Velmi bezpečná služba se může používat obtížněji. Při výběru bezpečnostních opatření tedy přemýšlej, co nejlépe odpovídá tvému konkrétnímu použití.

Obrana proti útokům

  • Zkus si představit, kolik možných číselných kombinací existuje, pokud máš telefon nebo jiný systém chráněný pouze čtyřmístným číselným heslem. Možných kombinací je 10 000. Obecně je můžeme vyjádřit takto:

    10 x 10 x 10 x 10
    

    V nejhorším případě by tedy útočník musel vyzkoušet 10 000 možných hesel.

  • Tento problém můžeme zkusit vyjádřit v kódu. VS Code je vývojové prostředí, ve kterém můžeme psát a spouštět kód.
  • Podívej se na následující zápis stejného problému v kódu:

    from string import digits
    
    for i in digits:
        for j in digits:
            for k in digits:
                for l in digits:
                    print(i, j, k, l)
    

    Kód napsaný v Pythonu prochází každou možnou kombinaci číslic.

  • Spustíme-li crack.py v okně terminálu, kde můžeme zadávat příkazy počítači, uvidíme, že vytvoření všech možných hesel zabere útočníkům jen několik milisekund.
  • Co by se stalo, kdybychom požadovali heslo tvořené čtyřmi písmeny?
  • Pokud povolíme malé i velké varianty 26 písmen, můžeme počet možností matematicky vyjádřit takto:

    52 x 52 x 52 x 52
    

    Možností je přes sedm milionů.

  • Kód můžeme upravit následovně:

    from string import ascii_letters
     
    for i in ascii_letters:
        for j in ascii_letters:
            for k in ascii_letters:
                for l in ascii_letters:
                    print(i, j, k, l)
    

    Používáme ascii_letters, které zahrnuje malé i velké varianty písmen. Podobně jako předchozí program i tento prochází všechny možné kombinace.

  • Po spuštění kódu zjistíme, že ani teď hacker nepotřebuje příliš velké úsilí k nalezení všech možných hesel.
  • A co kdyby čtyřznakové heslo mohlo obsahovat písmena, číslice i interpunkční znaky? Získali bychom přes 78 milionů možností.
  • Kód můžeme upravit takto:

    from string import ascii_letters, digits, punctuation
    
    for i in ascii_letters + digits + punctuation:
        for j in ascii_letters + digits + punctuation:
            for k in ascii_letters + digits + punctuation:
                for l in ascii_letters + digits + punctuation:
                    print(i, j, k, l)
    
  • Po spuštění uvidíme, že v nejhorším případě trvá nalezení všech možných hesel výrazně déle.
  • Hlavní poznatek je, že čím vyšší časovou překážku útočníkovi nastavíme, tím méně je pravděpodobné, že bude mít čas heslo prolomit. Pro uživatele je ovšem obtížné dlouhá a složitá hesla psát i pamatovat si je. Bezpečnost a použitelnost proto vyžadují rovnováhu.

National Institute of Standards and Technology (NIST)

  • NIST vydává doporučení, jak účty chránit účinněji.
  • Jeho doporučení a osvědčené postupy můžeš využít ve své práci, v zaměstnání nebo ve firmě. Původní poznámky uvádějí následující zkrácená doporučení pro hesla:
    • Zapamatovávané tajné údaje mají mít alespoň osm znaků.
    • Systémy ověřující hesla mají umožnit všechny tisknutelné znaky ASCII a symboly Unicode a podporovat délku alespoň 64 znaků.
    • Mají porovnávat nová hesla se slovníkovými výrazy, opakovanými sekvencemi, seznamy uniklých hesel a slovy souvisejícími s konkrétním kontextem.
    • Neautentizovaným zájemcům o přístup nemají zpřístupňovat nápovědu k heslu.
    • Nemají vyžadovat pravidelné změny hesel.
    • Mají omezovat počet neúspěšných pokusů o přihlášení a blokovat potenciální útočníky.

Dvoufaktorová (2FA) a vícefaktorová autentizace (MFA)

  • Vícefaktorová autentizace může využívat tři druhy faktorů:
    • Znalost: něco, co víš pouze ty.
    • Vlastnictví: předmět nebo zařízení, které má pouze oprávněný uživatel.
    • Vlastnost osoby: něco spojeného přímo s tebou, například otisk prstu, obličej nebo jiná biometrie.

Jednorázové heslo (OTP)

  • Jednorázová hesla může poskytovat speciální přívěsek nebo jiné zařízení.
  • Často je získáváme ze zařízení nebo z aplikace.
  • Některé metody OTP jsou bezpečnější než jiné.
  • OTP zasílané textovou zprávou může útočník obejít pomocí SIM swappingu, tedy podvodného převzetí či nahrazení SIM karty a získání přístupu ke zprávám.
  • Bezpečnější variantou jsou OTP z aplikace na zabezpečeném zařízení, například z autentizační aplikace v telefonu.

Zaznamenávání stisků kláves

  • Útočník, který zaznamenává stisky kláves, může zachytit uživatelská jména, hesla i OTP.
  • Keylogging se provádí instalací škodlivého softwaru do počítače.
  • Nejlepší je zajistit, aby ses přihlašovala pouze na zařízeních, k nimž máš přístup jen ty.

Credential stuffing

  • Další útok, credential stuffing, využívá seznam uživatelských jmen a hesel získaných z napadeného webu a zkouší je na jiném webu.
  • Jestli stejné heslo používáš na více webech, je vhodné změnit je na unikátní hesla.

Sociální inženýrství

  • Útok sociálním inženýrstvím místo technického průniku využívá sociální tlak a důvěru, aby získal přihlašovací údaje.
  • Někdo se může vydávat za důvěryhodnou osobu a získat od tebe přihlašovací údaje nebo podrobnosti o tvém životě.
  • Útočníci také mohou hledat údaje, jako je jméno domácího mazlíčka, a podobné osobní informace.

Phishing

  • Phishing technologicky využívá sociální inženýrství: vydává se za důvěryhodný web a snaží se získat přihlašovací údaje a další informace.
  • Můžeš být například přesměrována na stránku, která vypadá jako přihlášení do Googlu, ale ve skutečnosti patří útočníkovi.
  • Odkazům v e-mailech nikdy slepě nevěř. Zvaž otevření prohlížeče a ruční zadání důvěryhodné adresy.

Útoky prostředníka

  • Zařízení mezi tebou a zdrojem stahovaných dat, například routery a přepínače, mohou napadnout velmi zdatní útočníci.

Jednotné přihlášení (SSO)

  • Různé služby vyžadují různá hesla. S ohledem na doporučení nepoužívat stejné heslo pro různé služby existuje několik způsobů, jak bezpečnost posílit.
  • SSO umožňuje použít přihlášení Googlu nebo Facebooku i pro služby, které Google či Facebook neposkytují.
  • Můžeš tak přistupovat k jiným službám jednodušeji, s menším množstvím překážek a větší bezpečností.

Správci hesel

  • Správce hesel je software, který za tebe spravuje a ukládá složitá hesla.
  • Díky tomu si heslo nemusíš pamatovat.
  • Mnozí správci hesel navíc rozpoznají phishingové weby.
  • Na rozdíl od dlouho dostupného ukládání hesel v prohlížeči mohou být správci hesel samostatným softwarem poskytujícím hesla pro více služeb.
  • Nevýhodou je, že obrazně dáváš všechna vejce do jednoho košíku. Pro přístup ke všem ostatním heslům si musíš pamatovat jedno heslo.

Přístupové klíče (passkeys)

  • Rozvíjející se technologie passkeys využívá automaticky vytvořené kryptografické přihlašovací údaje; původní poznámky je zjednodušeně označují za automaticky generovaná hesla.
  • Passkeys pracují s veřejným a soukromým klíčem. Veřejný klíč má služba, například web, a soukromý klíč má tvoje zařízení.
  • Umožní přihlášení bez psaní hesla.
  • Abychom této technologii porozuměli podrobněji, musíme se nejdříve dozvědět více o kryptografii.

Co jsme probrali

V této lekci ses seznámila s kompromisem mezi bezpečností a pohodlím, s útoky, které mohou ohrozit tebe i ostatní, a se způsoby ochrany přihlašovacích údajů. Konkrétně jsme probrali:

  • Mezi bezpečností a pohodlím existují kompromisy.
  • Proti digitálním útočníkům tě obecně chrání především tvoje chování a informovanost.
  • NIST poskytuje bezpečnostní doporučení.
  • 2FA, MFA a OTP patří mezi způsoby, jak zvýšit bezpečnost.
  • Mezi běžné útoky patří keylogging, phishing, credential stuffing a sociální inženýrství.
  • Další ochranu může přinést SSO nebo správce hesel.
  • Passkeys mají nabídnout ještě vyšší bezpečnost.

Uvidíme se příště!

Procvičení SBCZ

Ověř si porozumění

1. Co umožňuje credential stuffing?

Řešení a vysvětlení

Používání stejného hesla na více službách. Útočník zkouší uniklé kombinace jmen a hesel na dalších službách. Unikátní hesla toto opakované použití omezují.

2. Která dvojice představuje dva různé faktory přihlášení?

Řešení a vysvětlení

Heslo a vlastnictví bezpečnostního klíče. Heslo je znalostní faktor; bezpečnostní klíč představuje vlastnictví. Dvě hesla jsou stále stejný druh faktoru.

3. Jaký klíč obvykle uchovává web při přihlašování pomocí passkey?

Řešení a vysvětlení

Veřejný klíč pro ověření podpisu. Zařízení chrání soukromý klíč a podepisuje výzvu. Služba má veřejný klíč a ověří podpis.