Autentizace: partial password
Myšlenka autentizovat se nikoliv zadáním celého hesla, ale jen pomocí několika málo znaků z hesla, není nová.
Způsob jak taková autentizace probíhá, je velice jednoduchý. Uživatel se nejprve identifikuje a systém ho poté vyzve, aby zadal znaky, které se nacházejí na vybraných pozicích jeho hesla. Počet znaků, které musí uživatel zadat, je obvykle daný, leč pozice jsou generovány náhodně.
Výhoda tohoto způsobu autentizace spočívá v tom, že uživatel se může přihlásit i v nedůvěryhodném prostředí, protože i kdyby jeho heslo bylo odchyceno a jedno zda keylogerem, kamerou nebo tím, že by mu někdo koukal přes rameno, tak při příštím přihlášení bude systém chtít po uživateli zadání znaků, které se nacházejí na jiných pozicích. Z toho vyplývá, že útočník nebude moci těch pár znaků, které odchytil, k opětovnému přihlášení použít.
Odchycení zadávaných znaků je snazší především proto, že uživatel musí přemýšlet, jaký znak se nachází na dané pozici, a proto píše pomaleji. Tím i osoby, které píší všemi deseti a mohou se pochlubit vysokým počtem úhozů, jež mají některé levné kamery problém zaznamenat, nemohou této své přednosti využít.
I když bude systém pokaždé požadovat zadání znaků, které se nacházejí na jiné pozici, neboť si bude někam ukládat, které pozice již byly požadovány, je zřejmé, že pokud se bude uživatel hlásit často, tak časem dojde k situaci, že se systém bude ptát na znaky na stejných pozicích jako již někdy v minulosti. (Systém by samozřejmě mohl po vyčerpání všech jedinečných výzev uživatele vyzvat k zadání nového hesla, ale potom by se jednalo v podstatě o One Time Password zkr. OTP tedy jednorázové heslo).
Jako příklad si uvedeme heslo o délce 3 znaky, přičemž systém chce po uživateli zadat jen 2 znaky. Kolik může nastat kombinací? Předpokládejme, že heslo je „+F*.
kombinace/pozicie | 1 | 2 | 3 | Výsledek |
1 | x | x | +F | |
2 | x | x | +* | |
3 | x | x | F* |
Vidíme, že v takovém případě mohou nastat jen 3 kombinace, přičemž při třetí výzvě již je zřejmé, jaké znaky se nacházejí na pozici 2 a 3. Pokud by tedy útočník odchytil znaky zadané uživatelem jako odpověď na výzvu 1 a 2, byl by poté schopen se úspěšně autentizovat. Z toho plyne jedna podstatná skutečnost, a to že útočníkovi stačí odchytit odpovědi na 2 výzvy systému. Kdo by ale používal takto krátké heslo, že? Zvolíme tedy heslo delší. Jak dlouhé by ale dané heslo mělo být a kolik znaků bychom měli požadovat? Odpověď je nasnadě. Pokud n=délka hesla a k=počet znaků z hesla, potom lze celkový počet jedinečných výzev vyjádřit jako:
c=n!/[k!(n-k)!]
V podstatě se jedná o kombinace bez opakování. Délku hesla zvolíme např. 8 znaků. Takové heslo by pro uživatele neměl být problém si zapamatovat a určit jaký znak se nachází na jaké pozici, by mohl bez toho, aniž by si musel heslo někam psát. Mnohem zajímavější otázka je, kolik znaků z hesla po uživateli ale požadovat. Nejspíš tolik, aby těch kombinací bylo co nejvíce. To můžeme opět snadno spočítat. Za k budeme postupně dosazovat čísla z intervalu (0,8). Interval je otevřený, protože mezní hodnoty nemají smysl.
Vidíme, že se jedná o funkci, která nabývá svého maxima v bodě n/2. Optimální tedy bude po uživateli požadovat zadání 4 znaků. V takovém případě může systém vygenerovat až 70 jedinečných výzev. Na první pohled se může leckomu zdát, že kdyby se uživatel hlásil 1x týdně, mohl by toto heslo v pohodě používat více než rok.
Bohužel, zdaleka tomu tak není, a to ještě předpokládáme, že algoritmus je alespoň trochu inteligentní a nevyzve uživatele ve dvou po sobě jdoucích výzvách k zadání znaků, které se nachází na úplně jiných pozicích. Pokud by k tomu došlo, je více než zřejmé, že by útočníkovi stačilo odchytit jen dvě výzvy a znal by celé heslo. (Např. pokud by se systém při prvním přihlášení zeptal na první čtveřici znaků a při druhém přihlášení na druhou čtveřici.)
Kolik jedinečných výzev tedy musí útočník zachytit, aby získal celé heslo? Pouhých 5. To opravdu není mnoho, ale pokud počítáte s tím, že se v nedůvěryhodném prostředí přihlásíte třeba jen jednou, tak vám to může stačit. Nedal by se tento počet zvýšit? Jistěže dal, podívejte se na výše uvedený graf.
Určitě jste si všimli, že ať už budete po uživateli požadovat zadání 3 nebo 5 znaků, tak v obou případech je počet kombinací stejný. Výborně, a teď si spočítejte, kolik jedinečných výzev musí útočník odchytit, aby získal celé heslo? V případě, že budete po uživateli požadovat znaky 3, tak útočník musí odchytit výzev 6 a v případě, že budete požadovat znaků 5, tak musí odchytit výzvy 4.
To je dost málo, dá se s tím ještě něco dělat? No, nezbývá nám moc možností. V podstatě už můžeme jen prodloužit délku hesla. Schválně si spočítejte počet kombinací pro 9 nebo 15 znakové heslo pro různý počet požadovaných znaků a dále pak počet výzev resp. odpovědí na ně, které by útočník musel zachytit, aby získal celé heslo. Počet odpovědí na výzvy, které musí být zachyceny, lze vyjádřit funkcí x=n-k+1. Nic moc, co?
Poznámka: I v případě, že je autentizace realizována zadáváním jen požadovaných znaků z hesla, byste měli dodržovat zásady pro tvorbu hesel, neboť kromě snahy odchytit heslo se útočník může pokusit ho uhádnout.
Závěr: Zavést autentizaci pomocí částečného hesla by pro poskytovatele většiny služeb neměl být příliš velký problém, neboť se nejedná o nákladnou záležitost. Pro uživatele je tato forma autentizace velice zajímavá, protože ji může použít v okamžiku, kdy se potřebuje přihlásit z nedůvěryhodného prostředí. Např. jste v cizině, odešel vám netbook a vy potřebujete odeslat mail z hotelového počítače nebo z internetové kavárny.
ČERMÁK, Miroslav, 2011. Autentizace: partial password. Online. Clever and Smart. ISSN 2694-9830. Dostupné z: https://www.cleverandsmart.cz/autentizace-partial-password/. [citováno 07.12.2024].
Štítky: autentizace, informační bezpečnost, lámání hesel
K článku “Autentizace: partial password” se zde nachází 4 komentáře.
Diskuse na tomto webu je moderována. Pod článkem budou zobrazovány jen takové komentáře, které nebudou sloužit k propagaci konkrétní firmy, produktu nebo služby. V případě, že chcete, aby z těchto stránek vedl odkaz na váš web, kontaktujte nás, známe efektivnější způsoby propagace.
Pekna matika, len si myslim, ze poskytovatlia sluzieb, to len tak lahko nezavedu, kedze je zvykom uchovavat hesla v systemoch hashovane (+saltovane). V spomenutych nedoveryhodnych prostrediach je vhodnejsie pouzit one time password.
Poskytovatelé služeb tuto metodu autentizace jen tak nezavedou. Jednoduše proto, že je k tomu nic nenutí a nic by jim to ani nepřineslo. S touto formou autentizace se však můžeme setkat např. v některých bankách. Pokud jde o uložení samotných hesel, tak to je problém, neboť místo jednoho hashe k danému heslu, by se musely ukládat hashe pro všechny možné kombinace. Pokud by tedy byly z 8místného hesla požadovány např. 3 znaky, muselo by se ukládat 56 hashů. Dalším na první pohled méně bezpečným řešením je celá hesla šifrovat. Oba přístupy mají samozřejmě svá pro i proti.
Zajímala by mne ta pro a proti co se týče ukládání hesel v šifrované podobě, která zmiňuješ. Je možné na toto téma rozjet nějakou diskusi?
#3: Uvažoval jsem o tom, že bych problematice ukládání hesel věnoval samostatný příspěvek, ale nevím, kdy se k tomu dostanu. Chcete na tomto novém příspěvku spolupracovat?