最新のパスワードマネージャーのすべての可能な機能を備えたパスワードマネージャーを使用するとします。マスターパスワードから派生したキーによる暗号化、自動入力、クラウドまたはローカルストレージ、ブラウザー拡張機能、Webおよびローカルアプリケーション、ランダムパスワードジェネレーター、パスワード自動変更、など.
ここで、次の2つのオプションから選択できると仮定します。
最後に、(暗号化キーと強力なパスワードの)導出関数で使用されるラウンド数が、ほとんどのデバイスで導出に約1秒かかるのに十分な高さであると想定します。
これらの2つから選択する方法は?
彼らの長所と短所は何ですか?
(暗号化と使いやすさの両方に関して)どちらが最も安全なのですか?
この選択を行うために考慮すべき他のパラメーターはありますか(機能、クローズドソースまたはオープンソースなど)?
私は長い間、確定的なパスワードマネージャー(pwdhash、いわゆるパスワード派生)を使用しており、確定的なパスワードマネージャーを使用するようだれにもアドバイスしていません。私はこれについて ブログ投稿 も書きましたが、私の主な問題をここに要約します:
主な「利点」は、確定的パスワードマネージャが状態を保持しないことです。ただし、Dropbox内のファイルまたはクラウドサービスを介して、インターネット上のどこかに状態を保存することがますます簡単になります。
派生したパスワード機能ベースのキーマネージャーを使用することには、実際的な利点はありません。
ボールトがAESおよびPBKDF2を正しく使用してパスワードデータベースを保護することを信頼できない場合は、それを信頼して導出アルゴリズムのパラメーターを保護することもできません。マスターパスワードや派生アルゴリズムの格納にセキュリティ上の違いはありません(もちろん、正しく設計されたキーマネージャーを想定しています)。
さまざまなサイトやアプリケーションには、パスワードの長さ、特殊文字の要件など、相互に異なる要件があるため、各サイトには追加の情報を保存する必要があります。秘密のデータではないかもしれませんが、両方のシステムで管理する必要があります。
パスワードローテーションポリシーはさまざまであり、問題になる可能性があります(または、少なくともサイトごとに保存されているさらに多くの情報が必要です)。複数のクライアント(ラップトップや携帯電話など)を使用している場合でも、余分なデータを同期する必要があります。保存したパスワードと同じように。
派生のみのシステムでは、割り当てられたパスワードを保存できません。エンタープライズパスワードマネージャーなどの外部システムを扱う場合、外部マネージャーが新しいパスワードのローテーションと生成を担当する場合があります。
導出関数について述べたキーごとの遅延はあまり意味がありません。パスワードマネージャーはPBKDF2のようなアルゴリズムを使用して、マスターキーの最初の復号化時にマスターパスワードが推測されるのを防ぎます。その後に解読される各パスワードはマイクロ秒かかります。同じ遅延が従来のパスワードマネージャーに追加される可能性があることに注意してください。ただし、攻撃者に影響を与えない場合に、システムの速度を落としてもメリットはありません。
派生関数は記憶できるため、人間に人気があります。グーグルのパスワードはCid123であることが頭の中で簡単にわかります!各サイトの文字列。携帯電話の64GB +フラッシュチップとコンピューターのテラバイトのストレージのこの時代では、何千ものWebサイトのパスワードに必要な数十メガバイトのストレージは、実際的な問題ではありません。また、クラウドベースのストレージとユビキタスなセルラーデータカバレッジにより、複数のデバイス間でパスワードを共有することも問題になりません。