web-dev-qa-db-ja.com

パスワードマネージャーの代わりにAES 256でテキストファイルを暗号化する

安全に保管する必要のあるパスワードの大きなリストができ始めています。私はLastPassのようなパスワードマネージャーを探していましたが、これらは常にハッカーによって標的にされており、以前に侵害されてきたようです。

AES 256を使用して自分で暗号化したテキストドキュメントにパスワードを保存すると、何かが失われるのですか?次に、パスワードが必要なときに復号化しますか?

19
magna_nz

あなたが言及するこれらの妥協を考えると、自分でファイルを暗号化することは簡単だと思いますか?パスワードマネージャーのセキュリティ侵害につながる同じような落とし穴に陥らないことをどのようにして知っていますか?

AES 256は、計算上安全であると考えられています。すべてのコンピュータが同時に動作してキーをブルートフォースにした場合、当初から機能していたとしても、暗号化のキーを見つける可能性はほとんどありません。

ただし:安全なアルゴリズムは安全な実装を保証するものではありません。例を示すために、自分で質問する必要があるいくつかの質問を次に示します。

  • リスト内の2つの同一のパスワードが同一のAES暗号文に暗号化されないようにするにはどうすればよいですか? (そのため、攻撃者が1つのパスワードを知っていれば、それが再利用される場所を知ることができます)
  • 解読されたパスワードリストは、リストを参照した後、RAM)を割り当てるプロセスで再利用できないことを確認しますか?
  • 解読されたパスワードリストがスワップファイルにならないことを確認しますか?
  • マスターパスワードを提供するユーザー、パスワードリストを復号化するプロセス、および1つのパスワードを必要とするターゲットアプリケーションの間で使用する通信メカニズムは何ですか?

パスワードマネージャは、これらの(そしておそらく他の多くの)懸念事項を考慮して設計されています。特に自分がセキュリティの専門家でない場合、初めて自分で行うときにすべてを正しくすることはほとんど不可能です。

57

ボタンをクリックするだけでランダムなパスワードを生成する機能を失うことになります。つまり、利便性の欠如により、パスワードが脆弱になる傾向があります-パスワードマネージャーアプリの利点の1つは、オンラインでもオフラインでも、長い生成です。ランダムな文字列。

ただし、ファイルのコピーを紛失した場合でも、暗号化方式を正しく使用すれば、パスワードのセキュリティは安全に保たれます。

方法によっては、ショルダーサーフィンの新しい問題が発生する可能性があります。ほとんどのパスワードマネージャーでは、使用したいパスワードのみが表示されます。テキストファイルに複数のパスワードが含まれている場合、特定のパスワードを表示するときにそれらすべてを公開する可能性があります。複数のファイル、またはパスワード間に非常に大きなギャップがある単一のファイルを使用することで、それを回避できると思います。

また、復号化されたデータがディスクに書き込まれないという保証も得られない可能性があります。パスワードマネージャーアプリは、復号化されたパスワードをメモリに保持するように細心の注意を払う傾向がありますが、復号化の処理が自分で同じであることを確認する必要があります。 。

12
Matthew

pass に興味があるかもしれません。

passでは、各パスワードは、そのファイル名がパスワードを必要とするWebサイトまたはリソースのタイトルであるgpg暗号化ファイル内にあります。これらの暗号化されたファイルは、意味のあるフォルダー階層に整理され、コンピューターからコンピューターにコピーされ、一般に、標準のコマンドラインファイル管理ユーティリティを使用して操作されます。

passを使用すると、これらの個別のパスワードファイルの管理が非常に簡単になります。すべてのパスワードは~/.password-store、およびpassは、パスワードを追加、編集、生成、および取得するためのいくつかのNiceコマンドを提供します。これは非常に短くてシンプルなシェルスクリプトです。一時的にクリップボードにパスワードを入れ、gitを使用してパスワードの変更を追跡することができます。

1
Tgr

AES 256を使用して自分で暗号化したテキストドキュメントにパスワードを保存すると、何かが失われるのですか?

セキュリティに関しては、違います。はい、便利です。パスワードの保存方法とキーの長さによって異なります。しかし、はい、あなたは間違いなくそれを自分で行うことができます。

1
thel3l

あなたの点では、市販の製品を使わずに、自分のアプリケーションにローカルでパスワードを保存することをお勧めします。これらの製品に存在する脆弱性と、それらのアプリケーションを標的にしているハッカーの数がわからないためです。

独自のツールを作成する場合は、以下の点に注意する必要があります。

  • 使用する言語/ツールとその暗号サポート
  • 使用しているキーを保護する方法
  • 使用しているアルゴリズムとキーの長さ
  • メインの開発言語/ツール以外のサードパーティのパッケージ/ツールに依存する必要があるか
  • 暗号化されたデータを永続化する方法(テキストファイル/ DB /またはクラウドなど)

Java=を例に取ると(私はあなたがそれにどれほど精通しているのかわかりません)、以下の点を考慮する必要があります。

パスワードをテキストドキュメントに保存することで何かが失われるか

いいえ。正しいアルゴリズムを使用している場合は必要ありません。

AES 256?

Javaを使用している場合、JavaのCipherクラスにキーサイズの制限が実装されているため、これは不可能です。 Bouncycastle Crytoライブラリに依存するか、または 無制限の強度のJCE ファイルを使用する必要があります。ただし、暗号化されたデータをエクスポートする場合は、これを使用する前に Jurisdiction law を確認する必要があります。

私の提案は、AES 128を採用することです。これは、業界での事実上の標準のようなものだからです。

コンテキストで暗号化されたデータを保護するための獣の方法は、 Javaのオブジェクト暗号化 を使用することです。これは、DBを使用して暗号化されたデータを格納することは余分な負担になるためです。

暗号化キーを保存および配布する最良の方法の1つであるため、キーを Javakeyストア に保存します。

Javaアプリケーションを作成して、キーストアのパスワードを除き、暗号化と復号化を行うことができます。次のようなクラスを作成してパスワードを管理することができます。パスワードを復号化した後でキー検索を実行します。オブジェクトの配列/リスト。

public class PasswordStore {
    private String Key;
    private char[] passwd;
    private Date Updated; 

    public String getKey() {
        return Key;
    }

    public void setKey(String Key) {
        this.Key = Key;
    }

    public char[] getPasswd() {
        return passwd;
    }

    public void setPasswd(char[] passwd) {
        this.passwd = passwd;
    }

    public Date getUpdated() {
        return Updated;
    }

    public void setUpdated(Date Updated) {
        this.Updated = Updated;
    }

最後に、次のようなオブジェクトを暗号化できます。

private List<PasswordStore> passwords;

文字列は不変であり、メモリハイジャック攻撃に対して脆弱であるため、パスワードを文字列変数に格納しないなど、他の安全なプログラミング手法を使用することを覚えておいてください。

1
user3496510

このタスク用に設計されたパスワードマネージャーが最適であるという一般的な意見には同意しますが、手間をかけて、いくつかのユースケースでは暗号化されたテキストファイルが適切に機能することを提案します。暗号化されていないデータがディスクに書き込まれないようにする必要があります。私が見つけた最良の方法は、テキストエディターでファイルを透過的に暗号化および復号化することです。

私はVIM=を目的に使用します。VIM 7.4では、~/.vimrcファイルに以下を追加します:

if !has("nvim")
    :set cryptmethod=blowfish
endif

ここで新しいファイルを開きます。

$ vim -x secrets.txt

VIMはパスワードを2回要求します。

これで、-xフラグなしでファイルを開くことができ、VIMは開くたびにパスワードを要求します。保存と編集は正常に機能します(VIMの場合は通常)。

Androidまたはファイルを復号化できるiOについては何も知りません。ご注意ください。通常のパスワードにはLastPassを個人的に使用しており、VIMコンパートメント化する必要があるいくつかの特殊作業の暗号化。

0
dotancohen