平均的な人間が処理できるほど単純であるが、数個では秘密を見つけることができないほど安全なワンタイムパスワード生成アルゴリズム(事前定義されたシークレットと変化する値/時間/カウンターなどに基づく)はありますか?パスワード(たとえば5-10)?
さまざまな特定のパスワードスキームとそれらがどの程度安全かについての質問を見てきました。しかし、いくつかのよく知られたアルゴリズムが存在するかどうか、もっと一般的に知りたいのですが。
直感は、何かが人間によって処理されるのに十分簡単であるなら、それもまた壊れやすいと私に言います。しかし、それでも、非対称暗号化、つまり安全なキー交換(DH)が可能であることに非常に驚いた。だから、びっくり!
編集:いくつかの明確化。
屋外で使用するための2要素認証について考えていたときに、疑問が浮上しました。安全な環境(自宅、オフィスなど)の一般的な2要素認証では、デバイスまたは電話でパスワードとOTPジェネレーターを使用します。デバイス/電話を紛失しましたが、パスワードは残っています。キーロガーがあなたのパスワードを盗みます、まだデバイス/電話があります。
しかし、両方が盗まれる可能性がある状況についてはどうでしょうか?たとえば、アプリを使用して、路上で電動自転車を拾ったり、駅のロッカーを開いたりします。スマートフォンでパスワードを入力している間に誰かが監視し、後でスマートフォン自体を盗む可能性があります。
この問題は、短い時間枠(たとえば10分)内に役に立たなくなるパスワードを使用することで解決できます。さらに、電話には個別のシークレット(SSLクライアント証明書など)があり、パスワード認証に対するブルートフォース攻撃を困難にします。
mr.spuraticのBlumのHCMUアルゴリズムに関する提案は、私が探していたものにかなり近いです。それはまだ平均的な人間には少し重すぎるように見えますが、練習すれば実現可能です。
いくつかの商用スキームがあります。 GridGuardfrom SyferLock これを行うと主張していますが、私はそれらを使用したことがありません(所属はありません)。これは、ユーザーが通常の時間やカウンターベースのOTP(暗算なし)を使用するのではなく、認証時に複数のオプションから正しく選択することに依存しています。
ソリティア ( Schneier )は、人間が計算できる暗号システムでよく引用されますが、認証の目的で多少の調整が必要になります。共有キーを使用したチャレンジ/レスポンス認証は実用的ですが、OTPの説明を満たしていません。
何がすべきか( 通常の警告 で)は [〜#〜] totp [の実装になります) 〜#〜] ( RFC6238 )または [〜#〜] hotp [〜#〜] ( RFC4226 )、代替を使用 [〜#〜] hmac [〜#〜] ブルームのHCMUなどのハッシュ(Human Computable Machine Unbreakable、description- ここ )精神的に計算可能なハッシュ(より一般化された OCRA(RFC6287)) も参照してください。
TOTP/HOTPは基本的に、SHA-1を使用したHMACの(切り捨てられた)出力であり、入力は共有秘密とタイムスタンプまたはカウンターです。ただし、Blumのアルゴリズムはアルファベット入力にのみ適用されるため、入力の厳密なアルファベット表現を使用する必要があります。
ブルームはまた、論文の共同執筆 Towards Human Computable passwords(onArXiv) の大部分は非常に数学的なものですが、それ しない §7.2でOTPについて簡単に説明します。
以下も参照してください。
ワンタイムパッドのように使用されるルックアップテーブルを持つことができます。
ルックアップブックの各ページは1日分のOTPであり、現在の日時でブックを検索して、その瞬間に適切なOTPを取得します。これはTOTPをシミュレートします。セキュリティ(TOTPが変更される頻度)とルックアップブックの厚さの間でトレードオフできます。
Steve Gibsonは、「パーフェクトペーパーパスワード」と呼ばれるものを、それがどのように行われるかを示すデモのようなものとしてまとめました。 https://www.grc.com/ppp に詳細があります。このサイトには、より洗練された実装を構築するために使用できるダウンロード可能なコードがあります。
これは時間ベースではありませんが、順番にしか使用できない一連のワンタイムパスワードです。現在のパスワードが盗聴されても、次のパスワードに関する情報は提供されません。パスワードごとの文字数と「アルファベット」は調整可能です。
ここでは、コード1A〜Dが既に使用されており、次に使用されるコードはE1(Tygq)であることがわかります。
正直なところ、公式のTOTPアルゴリズムでさえ大規模に複雑ではありませんが、頭の中でHMACを計算することにかなり熱心である必要があります。ただし、これは、同じ構成要素のほとんどを使用して、計算された時間ベースのパスワードシステムを合理的に持つことができることを示唆しています。
主な問題は、人々が多くの点でコンピュータほど良くないということでしょう:
したがって、TOTPアルゴリズムを直接適用するには、次のことが必要です。
攻撃者は多くの潜在的な値をすばやく計算できるため、これはコンピュータベースのセキュリティよりも安全性が低いため、特定の間隔内で許可される試行回数を制限する必要もあります。
そして、いいえ、私は適切なHMACの置き換えが何であるかわかりません...