web-dev-qa-db-ja.com

1PasswordはAES暗号化テキストファイルより安全ですか?

1PasswordとKeePassがAES-256暗号化テキストファイルよりも安全にするための追加の対策はありますか?彼らが使用するデータベース形式は、私自身の目的には不必要に複雑に見えます。

7
Thomas

Fiat 5 または V12 Ferrari engine のどちらが速いですか?フィアット500は確かにかなりミニマルな車ですが、少なくともホイールは付いています。フェラーリエンジンは、どんなに素晴らしいものであっても、まだ「単なるエンジン」です。道路に置くと、ボルダーと同じように移動します。したがって、この質問は実際には意味がありません。

そしてあなたもそうです。 [〜#〜] aes [〜#〜] はブロック暗号であり、aloneは何も達成しない数学的なオブジェクトです一種のセキュリティ。 1PasswordやKeePassuseAESやその他のアルゴリズムなどの製品は、パスワードのデータベースの機密性と整合性を確保しようとする複雑な構造になっています。その意味で、それらは「AES」と比較することができ、フィアット500は単独のエンジンに匹敵します。

マスターパスワードを使用して、パスワードの単純なファイルでさえ暗号化するには、いくつかの注意が必要です。マスターパスワードは暗号化キーに変換する必要があります。これは パスワードハッシュ の領域であり、simpleではありません。次に、AESを独自のルール(IV選択、パディング...)がある 操作モード で使用する必要があります。好ましくは、ある種の [〜#〜] mac [〜#〜] が必要であり、対称暗号化とMACを組み合わせると 微妙な問題 になります。最後に重要なことですが、ファイルを暗号化および/または復号化すると、ハードディスクに書き込まれる一時ファイルが明確に作成される傾向がありますそれらのファイルの内容。データを確実に破壊するには、ファイルを削除するだけでは不十分です。 「メモリ内」にあるファイルの暗号化を解除し、データをディスクに送らないようにすることは、特に 仮想メモリ が存在する場合は注意が必要です。

これらすべてがこの結論に相当します。AESで暗号化されたパスワードでいっぱいのファイルは便利ですが、注意すべき詳細がたくさんあり、それは大変な作業です。既存の製品のほとんどは、このような作業を行うためのものです。あなたは自分でできますが、いくつかのOpenSSLベースのスクリプトを一緒に叩くほど迅速ではありません。

次に、KeePassなどの製品には、軽視してはならない追加機能がいくつかあります。 リスト を参照してください。

17
Tom Leek

[開示:1PasswordのメーカーであるAgileBitsで働いている]

AESは、誰もが使用できる非常に強力で適切に設計されたレンガと考えてください。しかし、そのようなレンガで作られた家は、建築が正しく行われなければ、依然として非常に脆弱で壊れやすい可能性があります。自社開発のパスワード管理システムがうまくいかない理由はたくさんあります。ここに幾つかあります:

  1. 単一の大きなファイルを暗号化するということは、復号化されると、復号化されたすべてのデータがメモリに常駐することになります(スワップされたり、ダンプされたりすることもあります)。 (1Passwordは、契約上、必要に応じて一度に1つのアイテムのみを復号化します。)

  2. 自動化されたパスワードクラッカーに対して自社開発のシステムはどのような防御策を提供しますか?攻撃者は1秒あたり数千万のパスワードをテストできますか?この目的で使用される主要な派生関数は、微妙でトリッキーなものです。 (私は最近PBKDF2の欠陥についてPasswordsConでプレゼンテーションを行いました。)

  3. ランダム性のソース。さまざまなキー、IV、ソルト、ノンスには、暗号的に適切な乱数の要件があります。 「独自のロール」システムでこれを取得できますか?

  4. システムはデータ損失に対して堅牢である必要があります。単一の大きな暗号化ファイルは、データの破損に関して非常に脆弱です。

  5. 今日、暗号化モード、鍵の導出、メモリ管理などに関して正しい選択をしたとしても、そのようなシステムがどのように破壊されるかについての研究開発についていくことができますか?繰り返しになりますが、1Passwordに関しては、暗号の文献とパスワードクラッキングコミュニティで行われている作業の両方に細心の注意を払っています。

誰もがすべての開発者が指先でAESおよびその他の強力な暗号プリミティブを使用できるのは素晴らしいことです。しかし、残念ながら、それだけでは強力なシステムを設計するのに十分ではありません。これらのことは、最初に想像するよりもかなり困難であり、間違いを犯しやすいです。

理想的には、開発者は安全なシステムを開発するために暗号法を深く理解する必要はありません。暗号化ライブラリ、APIで十分です。しかし、それはまだありません。これらのライブラリのツールを適切に使用するよりも、使用する方が簡単です。

私は誰もが試行錯誤することを思いとどまらせたくありません。使用される「過度に複雑な」データ形式には理由があることを理解してください。それらが存在する理由がわかるまでは、これらの複雑さを回避できるとは思わないでください。

10

主に整理と使いやすさ。 AESは依然として両方の基盤となる暗号化ですが、暗号化された単純なテキストファイルで表示することなく、パスワードを一時的にメモリにコピーすることはできません。

KeePassや1Passwordのようなソフトウェアのポイントは、組織化と使いやすさを支援し、あなたが考えていることの種類に基づいて安全なストレージ実装を提供することです。

それらの1つを「必要」とする理由は何もありませんが、セキュリティを犠牲にすることなく、生活をはるかにシンプルにします。

3
AJ Henderson

詳細については、このリンクを試すことができると思います: http://help.agilebits.com/1Password3/security.html

少し長い答えは、AESを使用してデータが暗号化されるということです。これは、米国の国家標準として使用されているのと同じ最先端の暗号化アルゴリズムです。 1Passwordは128ビットのキーを暗号化に使用します。つまり、犯罪者がブルートフォース攻撃を使用してデータを復号化するには数百万年かかります。

詳細: http://help.agilebits.com/1Password3/agile_keychain_design.html

KeePassについて:

KeePassはAdvanced Encryption Standard(AES、Rijndael)とTwofishアルゴリズムをサポートして、パスワードデータベースを暗号化します。これらの暗号はどちらも非常に安全であると見なされています。 AES、例えばは米国連邦政府の標準として有効になり、最高機密情報について国家安全保障局(NSA)によって承認されました。パスワードフィールドだけでなく、データベース全体が暗号化されます。したがって、ユーザー名、メモなども暗号化されます。 SHA-256はパスワードハッシュとして使用されます。 SHA-256は、256ビットの暗号学的に安全な一方向ハッシュ関数です。マスターパスワードはこのアルゴリズムを使用してハッシュされ、その出力は暗号化アルゴリズムのキーとして使用されます。他の多くのハッシュアルゴリズムとは対照的に、SHA-256に対する攻撃はまだ知られていません。

詳細:keepass.info/features.html

2
badc0re