2

Web アプリケーション用の 2 要素認証プロセスを構築しました。毎分 8 桁のセキュリティ コードを生成する小さなスタンドアロン アプリを作成しました。ユーザーがログインすると、セキュリティ コードの入力を求められます。Web アプリを送信すると、その側でセキュリティ コードが生成され、入力されたセキュリティ コードと比較されます。2 つが等しい場合、ユーザーはアプリケーションへのアクセスを許可されます。これは RSA トークンのように使用されます。

ただし、原子時計サーバーを使用して、タイム ゾーンと時計の同期が問題を引き起こすため、USB アプリと Web アプリの両方でセキュリティ コードの生成が同じであることを確認しています。サーバーが信頼できない場合があるだけでなく、特定の原子時計に到達できるようにファイアウォール ルールを追加する必要があるため、これは苦痛です。リモート原子時計を使用せずにこれを行う安全な方法はありますか?

4

3 に答える 3

2

正確なクロックは必要ありませんが、同じ値が必要です。したがって、同じ Web アプリからある種の「現在の時刻」サービスを公開し (つまり、基本的な HTTP get "/currenttime" with JSON response)、USP アプリからクエリを実行します。この場合、アプリを提供するサーバー間で時刻を同期するだけで済みます (複数ある場合)。

于 2012-05-29T17:51:40.413 に答える
1

アプリケーションを RSA トークンで完全に保護する必要がない場合は、最後の 2 つまたは 3 つのセキュリティ コードを受け入れるように Web アプリケーションを変更できます。そうすれば、時間の一貫性にあまり依存しなくなります。

時刻を同期する必要がある場合は、Web アプリケーションと USB アプリケーションからアクセスできる独自のタイム サーバーを実行できます。時間は一貫している必要があり、必ずしも正確である必要はありません。

于 2012-05-29T17:51:59.927 に答える
0

外部時間に依存することは悪い考えです。時間ソースが操作できる場合 (中間者攻撃、悪意のあるアップストリーム DNS の変更などによって)、リモートでデバイスにクエリを実行して未来を収集できるためです。値。

独自の暗号を展開する前に、セキュリティ要件を実際に評価する必要があります。暗号学的に安全ではない PRG を誤って使用したり、サイドチャネル タイミング攻撃などを行ったりするなど、多くの間違いの犠牲になりやすいです。

本番環境でこれを行う必要がある場合は、確認できるように実装を開いてください。

于 2012-05-29T18:06:29.037 に答える