24 komentářů k článku Autentizace bez hesel:

  1. pepca

    Získání databáze tokenů by neměl být problém, pokud tokeny budou neúplné. Tedy naísto $server_token == $client_token by se kontrolovalo sha($client_cookie + $server_salt) == $server_hash, přičemž $client_cookie by nebylo na serveru uloženo. tedy pokud by útočník získal všechny $server_salt a $server_hash, stále by se nemohl snadno přihlásit jako libovolný klient, dokud by neuhodl odpovídající cookie.

  2. pepak

    Bezpečnost??
    Heartbleed neměl s hesly prakticky nic společného.

    Tak nějak jsem čekal aspoň formální vypořádání se s námitkou, že maily putují po netu zcela nezabezpečeně a může si je přečíst každý, kdo sedí na cestě. SMS jsou zase drahé.

    Co taková drobnost, že o mailový účet nebo telefonní číslo přijdu? Třeba proto, že příslušný poskytovatel skončil (mail) nebo mi někdo mobil ukradl (SMS). Nebylo by dobré mít nějaký nástroj, jak můj uživatelský účet převést na jiný mail/telefon? Připadá mi trochu hloupé přijít hned o všechno…

    1. Petr NevyhoštěnýAutor příspěvku

      Re: Bezpečnost??
      Co já vím, tak díky Heartbleedu mohl útočník získat data z paměti serveru a tam se mohla hesla vyskytovat. Píšou to i na rootu. Ale nestudoval jsem Heartbleed tak do podrobna.

      Ano, to, že cesta emailu není zabezpečená, není dobré. Je tedy i resetování hesla přes email vhodné? Tento způsob můžete vylepšit i tak, aby se na daný požadavek k přihlášení mohl člověk přihlásit jen ze zařízení, ze kterého požadavek vzešel (například s pomocí cookies nebo session nebo i tím local/session storage). S tímhle by sice odpadla výhoda, že na jeden požadavek mohu přihlásit všechna svá zařízení, ale když útočník zachytí email, je mu k ničemu. A SMS jsou drahé, to je pravda.

      Pokud vám poskytovatel zruší schránku ze dne na den, tak to asi nebyl úplně správný poskytovatel. Pokud vám oznámí konec dopředu, máte šanci se na to připravit a účty si převést. Při ztrátě mobilu máte většinou možnost dostat své číslo zpátky. Ale způsob, jak svůj účet získat zpět, když už mít přístup ke svému mailu nebo číslu nebudete, by se určitě hodil. Je to další podnět, v čem tento systém ještě vylepšovat.

  3. Petr

    Dobrý nápad
    Ahoj,

    to je dobrý nápad, ale volil bych ho asi jako poslední možnost, osobně se radši přihlásím např. přes google, facebook, twitter, linkedin, mojeid či obecně jakýkoliv openid… většina lidí účet na některé takové síti má.

    Místo toho, abych zadával e-mail, nebo telefonní číslo, pak čekal, než mi přijde kód a pak ho kopíroval, nebo opisoval… tak radši kliknu na ikonu googlu a jsem přihlášený hned, protože na googlu jsem přihlášený většinou trvale.
    V případě googlu platí, že je to jedno a to samé heslo (k e-mailu), které si musím pamatovat, se všemi výhodami a nevýhodami.

    Zde popisovaná možnost je ale dobrá pro ty, co se neradi přihlašují přes jinou síť, nebo tam účet nemají… tedy jako takový fallback místo současného systému jména(e-mailu) a hesla.

    Každopádně palec nahoru za nápad.

    1. Petr NevyhoštěnýAutor příspěvku

      Re: Dobrý nápad
      Nápad není můj, poprvé jsem se o tomto způsobu dočetl zde a velice mě zaujal.

      Způsob přihlašování přes jiné služby je velmi jednoduchý a pohodlný a lidi ho chtějí. Jak říkáte, někteří (včetně mě) se neradi přihlašují přes sociální sítě. Neříkám, že tohle by měl být jediný správný způsob, jak se přihlásit. Spíš by měl hodný vývojář nabídnout uživateli, ať si vybere. OAuth? Heslo? Přes email?

      Jen tak pro zajímavost, jeden z autorů OAuth 2.0 prohlásil, že je to špatný protokol, ale neviděl bych to tak zle. Netýká se to uživatelů, ale vývojářů.

      1. krab

        Re: Dobrý nápad
        Některé e-maily mají k sobě asociované OpenID (ze zkušenosti alespoň Gmail, Seznam).

        Uživatelsky přívětivá volba může být přihlášení pomocí OpenID nebo jiného protokolu v případě že takový způsob z adresy rozpoznám a systém posílání tokenů e-mailem nechat jako zálohu. Jen pro případ, že pro daný e-mail nedokážu využít lepší protokol.

  4. Tomáš Myšík

    Hashování tokenů
    Hmm, asi by tokeny mělo jít hashovat úplně stejně jako hesla, ne? Nebo mi něco uniká?

    1. Petr NevyhoštěnýAutor příspěvku

      Re: Hashování tokenů
      Máte samozřejmě pravdu, to mě jenom něco uniklo, když jsem tento článek psal.

  5. Stanislav Nechutný

    Co když se vám někdo nabourá do databáze? Pak bude mít přístup ke všem mým tokenům a pomocí jednoho se bude moci přihlásit.

    Tak ty tokeny budu mít u sebe přeci uložené jen jako hashe s nějakou krátkou platností a když ho uživatel zadá, tak ho zahashuju a porovnám jen hashe jako se to dělá s hesly. Ty tokeny mají stejnou důležitost, jako hesla a tak by s nimi taky mělo být nakládáno. Pokud by leaknuly ty hashe, tak právě použití nějakého složitějšího hashovacího algoritmu a krátká doba životnosti zajistí, že útočník nestihne najít kolizní řetězce.

    1. Petr NevyhoštěnýAutor příspěvku

      Re:
      Ano, zahashování tokenů je řešení. Nevím, proč jsem si to neuvědomil a stydím se za to.

  6. Bubla

    Dost nepohodlné řešení
    Hesla si za mě pamatuje prohlížeč.
    Takže dnes:
    1) kliknu na položku v oblíbených
    2) kliknu na tlačítko přihlásit (jméno a heslo předvyplnil prohlížeč)
    …a jsem tam
    Navrhované řešení:
    1) kliknu na položku v oblíbených
    2) kliknu na tlačítko přihlásit
    3) přejdu do emailového klienta
    4) kliknu na tlačítko pro synchronizaci pošty
    5) počkám až se stáhne autorizační email
    6) kliknu na něj
    7) v detailu toho mailu kliknu na odkaz
    …a jsem tam
    Takže doufám, že se tohoto nápadu provozovatelé webu nechytnou.

    1. Petr NevyhoštěnýAutor příspěvku

      Re: Dost nepohodlné řešení
      Ano, když se přihlašujete doma, můžete říct prohlížeči, aby si hesla zapamatoval, ale stejně si je budete muset pamatovat i vy, pokud se chcete přihlásit někde jinde než doma. V situaci, kdy je potřeba se přihlásit jinde, bude bezheslový způsob méně pohodlný než pouhé zadání hesla (ano, musíme provést všech sedm kroků).

      Když jste přihlášený doma, tak proč nezůstávat přihlášený pořád? To znamená, že by u obou systému stačil pouze krok 1 – „kliknu na položku v oblíbených“.

      Proč vidím já problém v heslech. Používáte-li pro každou službu jiné (silné) heslo, asi se nevyhnete nějakému password manageru. Pak každé přihlášení na nedomácí zařízení vyžaduje nejdříve přihlášení do takového manageru, kde si zkopíruju heslo k dané službě a pomocí něho se přihlásím. To je, myslím, podobná potíž jako použití emailu.

      Používáte-li na webu pouze pár hesel, která si jste schopný zapamatovat, co když někdo vaše heslo získá třeba u nedokonale zabezpečené služby nebo díky nějaké chybě? Nezbývá vám než si ho všude změnit. To dá nějakou práci. A když se o tom dozvíte pozdě? Útočník stihne napáchat slušnou paseku.

      Takže asi tak. Neříkám, co je lepší, jen jsem ukázal alternativu.

  7. LH

    Mně by na tom popsaném způsobu nejvíce vadilo, že je šíleně složitý (viz příspěvek od Bubly) a především bych zdůraznil jeho pátý bod: „počkám až se stáhne autorizační email“. Poměrně běžně se mi stává, že mi tyto emaily chodí s několika minutovým zpožděním a občas navíc přijdou do spamu. Představa, že čekám třeba pět minut než se můžu někam přihlásit mě opravdu neláká. Jo, na nejpoužívanějších webech jsem přihlášený pořád, ale stejně se denně aspoň do jedné jiné méně používané služby přihlašuji.

  8. Pavel D.

    A co když nechci (kvůli bezpečnosti), aby uživatel zůstával do mé služby přihlášený?
    To je právě ten důvod, proč já bych to třeba nemohl použít. Protože u některých mých specifických výtvorů kvůli bezpečnosti vážně nabádám uživatele k odhlášení a případně je odhlásím po určité době nečinnosti. Rád bych se vyhnul heslům, ale pokud nepotřebuji, aby byl uživatel neustále přihlášen, spíš naopak, pak budu asi muset stále čekat nebo sám hledat nový způsob přihlašování a tenhle článek mě zase nadchl jenom svým nadpisem (což není chyba autora článku, ale oboru, ve kterém dělám). Třeba příště

    1. Petr NevyhoštěnýAutor příspěvku

      Re: A co když nechci (kvůli bezpečnosti), aby uživatel zůstával do mé služby přihlášený?
      Jistě, nehodí se to všude. Já ještě narazil na autentizaci pomocí QR kódu (tzv. SQRL), což vyžaduje chytrý telefon. Nestudoval jsem to, nevím, jak je to použitelné, nicméně je to další alternativa. Zkuste se podívat, jestli vás to nezaujme.

  9. zlatkofedor1

    JSON web token
    Pre prihlasovanie pomocou tokenov je tu este jedna moznost a to JSON web token

    Priklad a library pre node je tu

    V skratke: server ma svoj secret code, pomocou ktoreho sa generuje token pre uzivatela, ktory sa nasledne posiela pouzivatelovi. Rozdiel je v tom, ze token nieje iba retazec ale su v nom zakodovane udaje. Napr. ID usera a expiracia. Pri requeste od klienta sa token zvaliduje a je mozne ziskat ulozene informacie. Vyhoda: nieje potrebne ukladat nic na strane servera(aj deaktivacia tokenov je mozna bez ukladania) Nevyhoda: velkost rastie od poctu dat.

  10. kominár

    Dalsia diera...
    Dalsia diera: Moj poskyovatel emalu (napr. Google), bude vediet o kazdom mojom prihlaseni. Kedy, kam…
    Doteraz to nevedel.
    Co si neviete zapamatat par hesiel? Alebo si ich niekde napisat?
    Siroty po ni zustali – si pamatam 30 rokov :-)

    1. Petr NevyhoštěnýAutor příspěvku

      Re: Dalsia diera...
      Dobře, bude vědět o každém vašem přihlášení, dosud pouze věděl, že jste se registroval. Osobně mi to přijde trochu paranoidní, ale nemám s tím problém.

      Tento systém tu však není proto, že by si uživatelé nedokázali zapamatovat pár hesel nebo neuměli použít nějakého správce hesel. Jde o to, že když útočník pomocí nějaké chyby nebo slabšího zabezpečení vaše heslo získá, máte docela problém. Abyste si znova zajistil bezpečí, měl byste si to heslo změnit všude, kde ho používáte. Nehledě na to, že útočník mohl být rychlejší.

  11. filip.jirsak

    OpenID, pomalé doručení e-mailu
    Pokud se chci všude přihlašovat jedním heslem, použiju OpenID nebo podobnou technologii. Celé přihlášení se v takovém případě odehraje maximálně během pár sekund, a ještě můžu nechat předat další údaje (jméno, e-mail, další kontakty), aniž bych je musel znova zadávat,

    Při přihlášení přes e-mail musím čekat, než e-mail vůbec dorazí (což můžou být sekundy, ale také minuty i víc, případně ho musím hledat ve spamu). Musím se přepínat do jiného programu nebo do webmailu, po přihlášení budu mít v prohlížeči dvě záložky s webem, na který jsem se přihlašoval (první, ze které bylo přihlášení iniciováno, druhou, ve které bylo přes token dokončeno).

    Je to zajímavý nápad, ale jak už jsem psal, existují řešení, která mají stejné výhody, ale nemají tolik nevýhod.

Napsat komentář

Tato diskuse je již příliš stará, pravděpodobně již vám nikdo neodpoví. Pokud se chcete na něco zeptat, použijte diskusní server Devel.cz

Zdroj: https://www.zdrojak.cz/?p=12189