Lidová moudrost to vaše vyjádření nazývá „prázdný sud nejvíc duní“.
Návod popisuje přihlašování pomocí HMAC nebo TOTP jednorázových hesel, což jsou otevřené standardy, ke kterým existuje mnoho implementací. Když se vám nelíbí implementace generátoru OTP pro Android od Google, můžete použít nějakou jinou – klidně můžete použít hardwarový klíč, když chcete.
Vypnout tu závislost na čase nejde. TOTP hesla fungují tak, že obě zařízení (např. Google Authenticator v mobilu nebo hardwarový klíč na jedné straně a PAM modul na druhé straně) znají tajný klíč a tímto klíčem v podstatě zašifrují aktuální čas (zaokrouhlený na půlminuty). Výsledek je šestimístné číslo, to vy zadáte jako to druhé (jednorázové) heslo a server to porovná, zda mu vyšlo to samé heslo. Pokud ne, může vyzkoušet ještě další hesla okolo – tj. pokud bude ta rezerva třeba minuta, zkusí stejným způsobem zašifrovat ještě čas o půlminutu a minutu dopředu a dozadu (celkem tedy vyzkouší pět časů) a porovná, zda jste se klíčem netrefil do některého z těch časů.
Druhá možnost jsou jednorázová hesla založená na počtu použití – klient i server si pamatuje, kolikrát jste heslo použil, a tenhle počet se používá místo toho času. Případně server opět vyzkouší několik pokusů napřed, pokud byste nějaké kódy z klienta získal „naprázdno“, nepoužil byste je.
Druhý způsob má tu nevýhodu, že můžete mít jenom jednoho klienta (musí mít synchronizovaný počet použití se serverem), u těch hesel založených na čase zase potřebujete na obou stranách dostatečně přesný čas. Ten Google Authenticator pro Android podporuje oba způsoby generování jednorázových hesel, ta PAM knihovna má ve zdrojácích soubory s názvy obou metod, takže asi taky, ale blíž jsem to nezkoumal.
Jinak tenhle typ jednorázových hesel podporuje třeba přihlášení k účtům Google, Facebook, MojeID, NAS servery od Synology nebo české Datové schránky. Takže mám v mobilu jednu aplikaci, která umí generovat jednorázové kódy pro všechny tyhle služby. Na Androidu se dá místo Google Authenticatoru použít třeba Authenticator Plus, který umíklíče synchronizovat přes Dropbox, takže mám ty kódy dostupné na všech svých Androidích zařízeních (včetně chytrých hodinek) a zároveň je mám zálohované, takže se nemusím bát, že o ně při přijdu, pokud se něco stane s mobilem. Nebo to podporují třeba hardwarové tokeny od YubiKey, o kterých tu byl nedávno článek.