web-dev-qa-db-ja.com

キーファイルは、パスワードマネージャーのセキュリティをどのように向上させますか?

KeePass のようなパスワードマネージャーには、マスターパスワードに加えて key file を使用するオプションがよくあります。

これによりセキュリティがどのように向上するかわかりません。

(注:KeePassでは、マスターパスワードの代わりにキーファイルを使用することもできますが、この質問では、追加で1つを使用することについて具体的に尋ねていますマスターパスワードに。)

パスワードデータベースはキーファイルなしでは復号化できないため、キーファイルはどこかに保存する必要があります-パスワードデータベース自体のように。攻撃者にとってキーファイルがパスワードデータベース自体よりも入手困難なのはなぜですか?

22
HighCommander4

認証方法は、多くの場合、ユーザーが知っているもの、ユーザーが持っているもの、ユーザーが持っているものの3つの領域のいずれかに分割できます。

パスワードはユーザーが知っているものです。ユーザーはそれを頭に記憶し、必要に応じてメモリから「取得」することができます。

キーファイルは、ユーザーが持っているものとして機能します。理想的には、この鍵ファイルは安全な場所に保管する必要があります。

個人的に、私は自分のパスワードデータベースのコピーを持っていますeverywhere。デスクトップにはコピーがあり、ラップトップにはコピーがあり、電話にはコピーがあり、タブレットにはコピーがあります。 Dropboxにパスワードデータベースを保存して、さまざまなデバイス間で同期を保つことができます。

しかし、私は自分のキーファイルtogetherをパスワードデータベースに保存していません。私の携帯電話とタブレットにはそれらのコピーがあります。これらのデバイスにUSBドライブを挿入する方法はないのですが、デスクトップとラップトップにはありません。私は自分のキーファイルをUSBドライブに保存しています。これにより、攻撃者が私のキーファイルを取得するのが少し難しくなります。

マスターパスワードにキーファイルさらにを使用すると、パスワードデータベースのセキュリティを侵害するのが難しくなるので便利です。

20
user10211

これらの鍵ファイルには、データベースの暗号化に使用される鍵が含まれています。多くの場合、パスワードで保護されています。鍵ファイルがない場合、暗号文から鍵を導出することは不可能であり、同等の平文を取得します。したがって、攻撃者がデータベースを取得した場合でも、キーファイルを入手する必要があります。キーファイルがパスワードでさらに暗号化されている場合(必要に応じて)、彼は何かも必要です。つまり、これは認証の2つの要素です。

キーファイルをデータベースに沿って保存すると、攻撃者はブルートフォース攻撃またはディクショナリ攻撃を「ただ」行う必要があります(データベース全体を攻撃するよりもはるかに小さく、時間もかかりません)。ただし、複雑なパスワードを使用している場合でも、パスワードのランダム性/エントロピーに応じて、これにはほとんど時間がかかります。

ただし、攻撃者は1つではなく2つのものを取得する必要があるため、別の要素を追加するとセキュリティが追加されます。

キーチェーンにキーを保存するようなものです。しかし、鍵は鍵のかかったドアの隣に保管しませんよね?まあこれは似ています。

7
Lucas Kauffman

「あなたが持っているもの」として機能することに加えて、キーファイルを使用するオプションにより、他の2つの要素( "あなたが知っているもの)の柔軟性が高まります。 "and" something you are ")アプリケーションでそのような動作を明示的に実装する必要はありません。

例1: "何か知っていること"は、カスタムまたは stronger KeePass(特にv1.x互換)がサポートできるキー導出関数。次に、キーファイルとしてロードされます。

例2: "Something you are"は、バイオを書き込むバイオメトリックスキャナーを介して実行できます-Trapdoor関数またはキー導出関数、あるいはその両方を実行して署名され、KeePassに読み込まれます。KeePassは、特に「TWAIN」に相当する生体認証標準のないオペレーティングシステムで、生体認証を認識していません。

例3: "Something you are"より一般的な意味でCAPTCHA画像に入力した人間からキーファイル(またはその1ステージ)を再生成して、人間であることを証明する*(または one または another 可能)後継者)は、キーストアとともに公に保管されます。

基本的に、keyfileオプションは、基礎となるキーストア暗号化スキーム( 256ビット KeePassの場合)の制限内で、想像できるあらゆるエントロピーソースの汎用キャッチオールとして機能できます。

*またはHAL 9000。

4
LateralFractal

2要素認証(2FA)のシミュレーションとは別に、キーファイルの2番目の利点があります。あなたの質問の改訂は、2つの要素の答えがあなたの答えで探しているものであることを示唆していますが。

暗号化キーをマスターパスワードから直接派生させないもう1つの理由は、マスターパスワードから直接派生するのではなく、ランダムにキーを作成できるようにすることです。 CSPRNGでキーを作成し、そのキーをキー暗号化キー(KEK)で暗号化すると、マスターキーのビットサイズが十分に確保されます。つまり、個人が貧弱なマスターパスワードを選んだとしても、128ビットキーは実際には128ビット強力です。

これは必須(パスワードマネージャーで使用されるような)対称キーの場合ではありませんが、公開キーシステムを見る場合は絶対に不可欠です。これらの場合、秘密鍵は単に何でもかまいません。したがって、実際にはパスワードとソルトの関数になることはできません。そのため、PGPやSSHなどの場合、鍵はソフトウェアによって生成され、パスワードから導出されたKEKで暗号化されます。

もちろん、マスターパスワードからのKEKの導出は、PBKDF2やscryptなどの鍵導出関数を使用して「ストレッチ」する必要があります。

認証ではなく2つの要素

注:「シミュレート 2要素認証」と言ったのは、これらのケースでは実際には認証がないためです。代わりに、復号化があります。多くの目的では、区別は重要ではありませんが、認証パスワード(またはトークン)と暗号化トークンの区別が非常に重要な場合があります。

認証ベースではないKeePassのようなものの場合(成功したときに何かを解放するサービスに誰であるかを証明していない)、使用する必要があるすべてのコンピューターまたはデバイスにキーファイルを取得する必要があります。あなたのデータ。そのため、携帯電話でデータを復号化したい場合は、USB-thingに配置しても機能しない可能性があります。 KeePassを使用してこれを行う方法は非常によくあるかもしれませんが、アーキテクチャの(おそらく欠陥のある)理解を考えると、克服する必要があるいくつかの困難が生じます。

4

ここでの答えは非常に良いですが、ここではもっとはっきりと注意すべき点があると思います:

KeePassデータベースのキーファイルではないオンラインアカウントで使用される他の2つの要素の方法と同様。ここの鍵ファイル(および誰かが代わりに使用する場合はOTPKeyProvプラグイン)はパスワードのようなものです。

KeePassがデータベースの暗号化にパスワードなどのアイテムを使用したので、誰かがあなたのKeePassデータベースをブルートフォースで強制したい場合、キーファイルやOTPコードを持っている必要はありません。だからありません多くあなたが持っているものここでは、セキュリティの点でオンラインアカウントと同じです。

これらの方法の唯一の利点は、データベースの暗号化に使用された品質/セキュリティの点でデータベースのKEKが向上し、パスワードが低品質の場合、パスワード自体を使用する場合と比較してデータベースのセキュリティに大きな影響を与えないことです。 。

0
Ali