最近、銀行から送られてきたこの小さなデバイスは、オンライントランザクションを実行するときに使用する必要のある一意のコードを生成します。特定の白いボタンを押すと、この一意のコードが生成され、デバイスに接続しているように見えませんリモートサーバーなど。
私はいくつかの研究を行い、 ハッシュ関数 と呼ばれるもので暗号化に行き着きましたが、まだ理解できません。
私の質問
これはハッシュ関数とはほとんど関係ありません。暗号化ハッシュ関数は実装の一部である場合がありますが、必須ではありません。
実際には、時間ベースの間隔で数字を生成します。数字を生成するためのボタンを押すと、数字が生成され、約25秒後にもう一度押すと、もう一度押すと数字は変わりません押した直後。
ヒントがあります。これは、時間ベースの擬似ランダムまたは暗号化アルゴリズムです。時間に基づいて、コードがあります。ドングルとサーバーは、すべてのウィンドウのコードを知っているか、計算することができます。これは 共有秘密 です。ドングルはリモートサーバーに接続しません。サーバーはおそらく、送信中にjustが期限切れになったキーを入力する状況を防ぐために、1つまたは2つの最新の秘密キーを許可します。
( Amazon Web Service多要素認証 の最近の経験では、コードが表示されてから5秒以内に間違いなくログインに失敗しました。つまり、一部のベンダーはタイミングウィンドウに非常に厳しいです。 。いつものように、それはセキュリティと使いやすさのトレードオフです。)
略語CodesInChaosの言及は 時間ベースのワンタイムパスワード(TOTP) および HMACベースのワンTime Password(HOTP) 、2要素認証で一般的に使用される2つのアルゴリズム。
ウィキペディアには、 RSA SecurID 、特定のブランドの two-factor-authentication ドングルについて言うことがあります。
RSA SecurID認証メカニズムは、ハードウェア(USBドングルなど)またはソフトウェア(ソフトトークン)の「トークン」で構成され、コンピューターユーザーに割り当てられ、以下を使用して一定間隔(通常60秒)で認証コードを生成します。組み込みの時計と、工場でエンコードされたカードのランダムキー(「シード」と呼ばれる)。シードはトークンごとに異なり、トークンの購入時に対応するRSA SecurIDサーバー(RSA Authentication Manager、以前はACE/Server)にロードされます。
この記事を選んだ理由は、合理的で物理的な説明があるからです。上位レベルの記事では、物理的な実装よりも理論的なものに焦点を当てています。
また、この記事では、トークンの機密性を保持する必要があること、または他の誰かがあなたと同じくらい簡単にコードを知ることでログインを偽装できることを確認しています。
トークンハードウェアは、リバースエンジニアリングを阻止するための改ざん防止用に設計されています。同じアルゴリズム(「ソフトウェアトークン」)のソフトウェア実装が市場に登場したとき、ユーザーが現在のRSA SecurIDコードにアクセスできる場合にのみ、ユーザーがソフトウェアでRSA SecurIDをエミュレートできるようにするパブリックコードがセキュリティコミュニティによって開発されました。サーバーに導入された元の64ビットRSA SecurIDシードファイル。
ただし、検証サーバーはトークンの事前知識を持っている必要があるため、2要素シークレットもソースに対する攻撃に対して脆弱です。 SecurIDは、自分のサーバーを標的とした知名度の高い窃盗の被害者であり、最終的にはクライアントのサーバーにも二次的な侵入をもたらしました。
最後に、多要素タグの下の security.stackexchange 姉妹サイト、および two-factor-authentication タグの下のこのサイトで利用可能な詳細情報があります。