web-dev-qa-db-ja.com

チャレンジ/レスポンスを使用したより安全なYubikey + KeepassまたはOTPを使用したYubikey + Keepassのどちらが安全ですか?

私はWindows 10 PCとAndroid電話を使用しています。

Windows 10とAndroid電話)の両方で機能する2番目の要素をマスターパスワードに追加したいと思います。

認証の2つのサポート方法のうち、どちらがより安全ですか?

  1. チャレンジ/レスポンスを使用したYubikey + Keepass 2
  2. Yubikey + Keepass 2、OTPを使用

前もって感謝します。

4
user1709730

OTPとチャレンジ/レスポンススキームの重要な違いの1つは、1つ目はスプーフィング可能であり、2つ目はスプーフィングできないことです。誰かがKeePassのフィッシングUIをセットアップし、正当なものではないことに気づかずにパスワードを入力したとします。攻撃者はパスワードが十分ではないことに気づき、MFAを有効にします。ここまでは順調ですね。

ただし、OTPを使用する場合、攻撃者が行う必要があるのは通常のOTPエントリボックスを表示することだけです。 Yubikeyをタップすると、OTPが攻撃者に送信され、攻撃者はそれをKeePassに転送し、KeePass金庫へのアクセス権を獲得します。代わりにチャレンジ/レスポンスを使用する場合、Yubikeyのレスポンスはアプリからのチャレンジに基づいています。攻撃者はKeePassに送信する正しいチャレンジを知らないため、スプーフィングできません。

この区別は、KeePassのようなシッククライアントのローカルアプリではそれほど重要ではないことに注意してください。たとえば、Gmailなどのウェブアプリにログインしている場合、フィッシングページがログインUIとOTP UIをだましてしまう可能性があります。ただし、フィッシングページは、アクセスされた実際のサイトに基づいているため、チャレンジ/レスポンスフローを偽装することはできません。ブラウザ(およびYubikey)は、同じように見えても、別のチャレンジを送信します。

実際、このようなチャレンジ/レスポンスシステムは、フィッシング攻撃に対して非常に強力なセキュリティを提供する唯一の方法です。真の第2要素(OTP、SMS、さらにはプッシュ通知)に関係するものはすべて偽装される可能性があり、通常と同じようにログインしているため、通常と同じように認証チェックを承認します。

1
CBHacking

私の意見では、「OTPを使用したKeepass 2」は「安全」ではありません。どうして?

OTPを使用してデータを暗号化することはできません

Keepassはデータを暗号化しますが、暗号化されたデータの問題は、オフライン攻撃からデータを保護するためにデータを暗号化することです。そう。暗号化された形式でデータにアクセスし、攻撃者がデータをクリアテキストで読み取れるのを避けたい場合。しかし、攻撃者が暗号化されたデータを持っている場合、彼はオフラインのブルートフォース攻撃を実行できます。また、HOTPでは、6桁または8桁の数字を作成しても、オフライン攻撃からの保護に大きな効果はありません。パスワードに6桁を追加するだけです!これは、オンライン認証の場合は問題ありません。ある程度の試行が失敗した後にアカウントがブロックされた場合です。しかし、OTPを使用して暗号化キーを派生させる意味はありません。

OTPの問題は、誰でもどこにでも入力できるため、認証に簡単に使用できるため、非常に短いことです。これはクールです-しかし、意図されたユースケースのみです!

KeepassにOTPを使用することはお勧めしません!

チャレンジレスポンスの使用

チャレンジレスポンスの使用には、この制限はありません。誤解しないでください。OTPには存在する権利があります。チャレンジレスポンスの問題は、ドライバーが必要です。したがって、チャレンジレスポンスよりもOTPの方が優れている(安全性が高くない!)認証シナリオがあります。

しかし、keepass 2とdirversに戻ります。まあ、keepassを使用すれば、明らかに問題はありません。 Yubikeyのチャレンジレスポンスモードでは、対称秘密鍵を使用します。チャレンジをyubikeyに送信できます。チャレンジと秘密鍵からhmacが作成され、256ビットの戻り値で応答します。現在、常に同じ戻り値を作成するには、同じchallengeと同じsecret keyが必要です。そして明らかに戻り値は暗号化キーとして使用されます(実際には秘密キーが暗号化キーとして使用されますが、応答値で暗号化されて保存されます)しかし、最終的には秘密鍵データを復号化します。ここでは異なるキーの長さ(6桁の数字ではない)について話しているため、秘密キーは、AES暗号化キー自体と同じようにブルートフォースにするのが困難です。ここを読んでください: http://richardbenjaminrush.com/keechallenge/#using

チャレンジ/レスポンスの使用をお勧めします。

免責事項:もちろん、コードレビューや詳細分析は行いませんでした。これは、2つのメカニズムの基本的な公式概念からの評価にすぎません!

2
cornelinux