web-dev-qa-db-ja.com

パスワードマネージャとFIDO

私はパスワードマネージャーでのFIDOサポート(またはその欠如)に関するいくつかの投稿を読んでおり、私の理解が正しいかどうかを確認したいと思っています。

FIDO(v1)についての私の理解は、デバイスにはデバイスから決して漏らさないシークレットが含まれており、サポートする必要があるのは、このシークレットから派生したキーペアに基づくデジタル署名だけであるということです。おおよそ、example.comにログインすると、デバイスはKDF(secret、 "example.com")に基づいてサイト固有のキーペアを計算し、それを使用してサーバーのチャレンジに署名します。

言い換えると、FIDOトークンは秘密鍵の素材のソースとして機能する必要はありません。つまり、FIDOトークンをオフライン/スタンドアロンのパスワードマネージャーで使用しても意味がありません。結局のところ、データベース自体またはデータベース自体の横に格納されていないキーを使用してパスワードデータベースを暗号化する必要があるため、キーを取得するためのマスターパスワードを設定します。 FIDOデバイスを使用すると、キーの所有を証明できますが、実際には「知識がゼロ」なので、暗号化されたデータベースのロックを解除することはできません。

(対照的に、他のモードとFIDOを提供するユビキーは、パスワードマネージャーを開く必要があるときにキーを保持してエクスポートできるので、パスワードマネージャーと一緒に使用しても意味があります。)

たとえば、pwsafe + yubikeyは存在しますが、pwsafe + generic FIDOはすぐには発生しません。 (私はまだFIDO2標準を詳細にチェックしていません、おそらくこれにはモードがあります。)

しかし、あなたは keeper password managerはFIDOサポートを有効にする のようなものを読みます。これはどのように機能しますか?シークレットは何らかの形でサーバーに保存されます。これは、FIDOでの認証に成功したときにのみリリースされますか?

4
Bristol

バブルをバーストして申し訳ありませんが、実際にはPWマネージャーにとって完全に意味のあるYubikeyのモードは1つだけです。これはスマートカードモードですが、実際にそれを使用するパスワードマネージャーはありません。

オンラインパスワードマネージャーは、USBスロットと基本的なキーボードドライバー(およびmodhexをねじ込まないキーボードレイアウト)のみを必要とする純粋な互換性のため、Yubi-OTPを使用することがよくありますが、一部のユーザーはU2Fにも移行します。

  1. 共有シークレットが存在しないほうがより安全です(Yubi-OTPは、クラウドセットアップまたはカスタムセットアップのプロバイダーで使用される場合、Yubicoで共有シークレットを使用します)

  2. 使用されている特定のキーを特定することはできません。ご存知のとおり、Yubi-OTPの最初の12文字程度は、modhex(工場出荷時のデフォルト)またはユーザーがカスタマイズしたときに選択したシリアル番号です)。

    これにより、バックエンドが正しいキーを検索して実際のOTPデータを復号化できるようになります。一方、U2Fの場合は、キーを生成するためのKDF(domain、secret)のことについては一般的に間違っていませんが、考慮してください。

    そこには実際に3番目の値が使用されています。認証に必要な「キーハンドル」の一部である登録時に生成されたランダムなナンス。これは、単一要素U2Fを使用している場合でも、認証するユーザー(ユーザー名など)を知る方法が必要な理由です。チャレンジとともに重要な役割を果たします。

オフラインパスワードマネージャーは、パスワードマネージャーの詳細に応じて、文字どおりHMAC(data, secret)であるHMACロードを使用することがよくあります。

  1. HMAC(some static value,secret)の結果を復号化キーの一部として使用するだけです。これは機能しますが、1つのキャプチャーがその侵害につながるため、明らかに悪いです。

  2. keechallengeが行っていること:彼らは秘密を保存し、それを使用して復号化プロセスで使用する次の結果を事前に生成し、その結果のチャレンジを保存して、オープンで次のオープン中にそのチャレンジを明らかに発行します。

ローテーション(1のチャレンジ、2のシークレット)がときどき行われる場合を除いて、1つの復号化だけでデータベースの存続期間全体が破壊されるため、両方の方法は理想的ではありません。

yubikeysがPW-DBでどのように機能するかを考えると、p2データベースでU2Fがどのように機能するかを基本的に確認できます。

  • 明らかにデータバルブとしてオンライン、「U2Fを持っていない限り、dbは取得できません」
  • スネークオイルとしてオフライン
  • yubikey HMACと同じようにオフラインで、キーハンドルを開いたままにして発行し、実際に公開鍵を実際の公開鍵としてではなく、コンテンツとしてだけ使用して対称暗号化鍵を生成します。

    これがあなたに奇妙に聞こえるなら、私が保証します、それは奇妙ですが、暗号化にHMACモードを使用することと大差ありません。

ものを暗号化する唯一の現実的な方法は、保存ごとに対称鍵をローテーションするスマートカードまたはPGPモード、あるいはその両方です。そのため、データベースを復号化するには秘密鍵が実際に必要であり、その秘密鍵はyubikeyにのみ存在します。

1
My1