Jak tvořit uživatelské jméno rubrika: Návrh

2 astr258
položil/-a 28.9.2013

Tvoříte aplikaci, která obsahuje citlivé osobní údaje, obchodní, bankovní, lékařské... tajemství (např. internetové bankovnictví, klientská zóna pojišťovny, online účetnictví apod.). Dbáte o maximální bezpečnost, ale též pohodlí uživatele, kterého nechcete obtěžovat nadměrnými požadavky.

Byť např. PayPal k přihlašování e-mail používá, použití e-mailové adresy jako přihlašovacího jména zavrhnete (abyste nezvýšili šance útočníka, který by znal login a zbývalo by mu jen zjistit heslo).

Při registraci se generuje automaticky a náhodně unikátní login. Z důvodu bezpečnosti login uživatele nikdo nezná (ani zaměstnanci společnosti, login není uveden nikde v uživatelském rozhraní) a je posílán do vlastních rukou v diskrétní obálce (ty, co se používají k zaslání různých kódů a PINů). Teoreticky má login znát pouze uživatel.

Aby se zvýšila šance, že se uživatel svůj login časem naučí a zapamatuje (a nebude ho ukládat na lístečku do šuplíku nebo peněženky), je vhodnější:
1) aby login obsahoval pouze číslice nebo pouze písmena? Případně kombinace číslic a písmen? A pokud písmena, tak spíše velká nebo malá? Co se lépe pamatuje a je ještě obstojně bezpečné?
2) kolika místný by měl login být? Mají všechny loginy mít stejný počet znaků, nebo i počet znaků generovat různě?

3) Zakázali byste u číslic nulu, jelikož je zaměnitelná s óčkem?
4) Zakázali byste u písmen Q, O, I, l (velké o, velké q, velké i, malé L), jelikož jsou zaměnitelné?

5) Zakázali byste tři a více stejných číslic a písmen vedle sebe, aby nedocházelo k úklepům?

6) Ukládali byste loginy do DB jako hashe?

7) Nebylo by bezpečnější, aby namísto naprosto náhodného generování loginu byla uživateli dána možnost vytvořit vlastní login? Např. pro první přihlášení se použije dočasný login, který je uživateli přidělen při uzavření smlouvy a po tomto prvním přihlášení by musel login změnit podle svého uvážení?

Udělal jsem malý průzkum, a v ČR to mají banky aj. takto:
Fio banka: při otevření účtu možnost zvolit libovolný login
Air Bank: při otevření účtu možnost zvolit libovolný login
mBank: 8-místné číslo
ČS: 10-místné číslo
Equa bank: 8-místné číslo
Home Credit: 10-místné číslo
datová schránka: 6-místná kombinace číslic a malých písmen (bu6xq4)
Česká pojišťovna: rodné číslo
is.cuni.cz: 8-místné číslo
Národní knihovna: 7-místné číslo + předpona NK (NK0183241)

Ve Velké Británii vládní úřady:
gateway.gov.uk: 12-místné číslo
companieshouse.gov.uk: 8-místná kombinace číslic a velkých písmen (WGJB5LTR)
billpayment.gov.uk: 8-místná kombinace číslic a velkých písmen (CT693975)
hmrc.gov.uk: 12-místné číslo

Komentáře

  • joinmax : Při čtení bodu 6 si říkám, že autor už asi opravdu halucinuje. Že by nějaký ten hash? 29.9.2013
  • arron : Možná zásadní otázka...na čem tedy stojí bezpečnost systému? Na uživatelském jménu? 1.10.2013
  • astr258 : Děkuji za všechny odpovědi a názory, dovedly mě k tomu, nechat loginem emailovou adresu a síly zaměřit na jiné bezpečnostní prvky. Bezpečnost by asi opravdu neměla stát na přihlašovacím jménu. 1.10.2013
odkaz Vyřešeno
9 joinmax
odpověděl/-a 29.9.2013

Jméno je jméno, je to veřejný údaj. Resp. nemusí ho vědět každý (např. kvůli ochraně soukromí), ale bezpečnost na něm záviset nesmí. Nemá smysl dělat ze jména druhé heslo. Pokud ti heslo přijde snadno uhotnutelné, nastav si lepší politiku pro hesla - délka, minimální počet tříd znaků, jiná frekvence povinné změny...

Komentáře

  • astr258 : Podívej se na to z druhé strany, je-li loginem emailová adresa, pak útočníkovi usnadňujeme práci, protože mu už zbývá jen zjistit heslo. Pokud musí zjišťovat ještě login, má to těžší. 29.9.2013
  • Anonym : astr258: pokud to chci útočníkovi ztížit tak zavést víceúrovňové přihlašování a případnou autorizaci změn prováděných pod uživatelským účtem. Např. je i dobrá možnost nadefinovat IP adresy ze kterých je možné provést přihlášení a pokud se chci přihlásit odjinud tak mít možnost zaslat sms a email s klíči a pomocí jejich kombinace se přihlásit.... Pak mě napadá ještě jedna věc. Jak útočník bude vědět, že zadaný email existuje a slouží jako login? To se nesmí při špatném pokusu o přihlášení napsat "Zadali jste špatné heslo" ale něco ve stylu "Zadané přihlašovací údaje jsou neplatné" - z tohoto nepoznám zda email existuje nebo jsem zadal jen špatné heslo. Dále při opakovaném špatném přihlášení zvětšovat intervaly pro přihlášení a po 5 pokusech zablokovat účet. Při správném přihlášení (pravý uživatel) jej informovat o neoprávněném pokusu se přihlásit a doporučit změnu hesla/ jména. 29.9.2013
  • risa.w : Pokud budete zvětšovat intervaly nebo blokovat účty, tak celý systém nebude zabezpečený proti DoS -- bude celkem snadné konkrétnímu uživateli zabránit v přihlášení. Avšak zpoždění neplatného přihlášení třeba na pět sekund je při hesle délky 5 už dostatečná ochrana proti hrubé síle (cca 520 let a neklesá s počtem strojů). Co se týče jména, přikláním se k názoru, že se jedná o veřejnou část přihlašovacích údajů, a proto se na něj nevztahují bezpečnostní požadavky na utajování -- je tedy irelevantní jestli si ho zvolí sám uživatel nebo mu ho někdo vygeneruje (klidně i veřejně známou metodou) nebo bude stejné jako k jiné službě, bezpečnost to nijak neovlivní, ta stojí a padá na bezpečnosti hesla. A když už někdo najde cestu jak získat heslo, tak už na ní najde i to jméno. 30.9.2013
  • astr258 : V.P.: Existující email v DB může útočník zjistit tak, že si nechá znovuposlat aktivační kód (mám v aplikaci pomůcku Did not receive activation email? Resend it here) nebo resetovat heslo (Forgot your password? Reset it here). Ačkoli i v tomto případě můžu nechat lstivě vypisovat "úspěšnou hlášku", že email s instrukcemi byl odeslán, přestože žádný email odeslán nebyl, jelikož email v DB neexistuje. Nevím pak, zda to nebude matoucí pro uživatele, pokud se uklepne při psaní emailové adresy a bude čekat na příchozí email, který nikdy nepřijde. Nadefinování IP adres: Jak řešit situace, kdy se zákazník potřebuje přihlásit z jiného PC a telefonuje na podporu, abychom mu dočasně přihlašování přes povolené IP zrušili? Jak ho na telefonu autentizovat? 30.9.2013
  • astr258 : risa.w: Ad: zpoždění neplatného přihlášení třeba na pět sekund - ihned, nebo až např. po 10. neúspěšném pokusu o přihlášení? Je dobré dát uživateli možnost, aby si v administraci tuto periodu podle svého nastavil nebo vypnul? A co se týče utajování loginu - mBank mi poslala dopis, ve kterém byl login a heslo pod utajovacím proužkem, který bylo třeba setřít, takže některé banky loginy utajují. 30.9.2013
  • jlkcz : Ačkoliv je to na flame, jakým způsobem se zvyší bezpečnost hesla jeho pravidelnou obměnou? (Popravdě nijak, pravděpodobně uživatel skončí s tím, že bude mít papírky) 30.9.2013
  • risa.w : astr258: "Existující email v DB může útočník zjistit tak, že si nechá znovuposlat aktivační kód" -- Neměl by mít možnost ho zjistit. Krom toho, znalost emailu nesnižuje bezpečnost, útočník nemá do schránky přístup. "ihned, nebo až např. po 10. neúspěšném pokusu o přihlášení" -- to je fuk, 0-10 nehraje žádnou roli. "Je dobré dát uživateli možnost, aby si v administraci tuto periodu podle svého nastavil nebo vypnul?" -- Nemyslím si. Vypnutí snižuje bezpečnost, zvýšení není potřebné a tvorba formuláře je zbytečná investice. jlkcz: bezpečnost hesla nijak, ale zabezpečení vstupu do systému se tím ovlivnit dá (pokud nevíte, že vám uniklo heslo, tak po pravidelné obměně už to nevadí). 1.10.2013

Pro zobrazení všech 4 odpovědí se prosím přihlaste:

Rychlé přihlášení přes sociální sítě:

Nebo se přihlaste jménem a heslem:

Zadejte prosím svou e-mailovou adresu.
Zadejte své heslo.