RSAの同期物理トークンなどの物理認証トークンと、GoogleのGmail直通電話コードなどの非同期チャレンジ/レスポンスの違いについて考えています。
抽象化の最高レベルで、同期トークンが非同期トークンより優れている、またはその逆の理由はありますか?
(実装に依存するセキュリティの欠陥を導入する可能性は、この高レベルの抽象化で考慮される特定の欠点である可能性があります。おそらく、同期システムは非同期システムで実装するのがより困難です。たとえば、RSAトークンは、シードを保護するために物理的に安全である必要があります電話とは対照的に、これは必ずしも応答が到着するまでである必要はなく、応答がまだ潜在的に役立つ間だけである必要があります。)
チャレンジ/レスポンスシステムの利点は、リプレイ攻撃を防止できることです。チャレンジ/レスポンスサーバーは、認証資格情報と共に認証プロセスで使用されるチャレンジをユーザーに送信します。認証中に送信されるデータは、認証資格情報はほとんどの場合同じですが、同じになることはありません。
RSAシステムでさえ、チャレンジ/レスポンスシステムであるため、区別は不正確です。課題は、クライアントとサーバーが共有しているタイムスタンプです。これにより、「ほとんど」のワンタイムパスワードが作成されます。
比較しようとしている両方のシステムの主な違いは、暗号の弱点ではありません。主な違いは、Googleソリューションが安全でないチャネルを介して認証トークンを送信することです。したがって、RSAトークンは、自社のセキュリティが管理されている限り、より安全です。 RSAソリューションは、認証に必要なものをチャネル経由で送信しません。それが利点です。
ワンタイムパスワードとセカンドチャネルのチャレンジ/レスポンス認証は、どちらも同期と考えることができます。トークンなどのワンタイムパスワードジェネレーターは、キーを使用してカウンターまたはタイムスタンプをハッシュする必要があります。これらはすべてサーバーに認識されている必要があります。セカンドチャネルのチャレンジ/レスポンスでは、SMSメッセージまたは電話からのコードの入力など)、チャネルを介してサーバーからワンタイムパスワードを受信することを確認するだけです。場合によっては、サーバーとクライアントの両方が共有秘密を知っている必要があります。
トークンの欠点は、ハッシュキーをサーバーとトークンの両方で共有する必要があることです。キーがサーバーから盗まれた場合、トークンを交換する必要があります。入力されたコードは事前に生成する必要がないため、2番目のチャネルにはこの脆弱性はありませんが、傍受される可能性があります。
トークンよりもスマートなデバイスは、非対称暗号化を使用できます。サーバーはデバイスに1回限りのチャレンジを送信し、デバイスは秘密鍵で署名して返送し、サーバーは公開鍵で確認します。サーバーには秘密鍵がないため、デバイスなしで応答を生成するためにサーバーから盗むことはできません。
私はDuo Securityエンジニアです。 this article by Jon Oberheideがより多くの情報を持ち、これをどのように使用するかを説明しています。