2

暗号化の演習として、少し前に「Password Locker」C#アプリを作成しました。パスワードデータを危険にさらすことなくどこからでもアクセスできるように、データをWebに移動したいと思います。私は暗号化の専門家ではないので、間違いを犯さないように、コミュニティでアイデアを実行したいと思います。

これが私が想像するものです:

  1. C#アプリでは、すべてのパスワードデータは、ユーザーが指定したパスワードを使用して1つのテキストチャンクとして暗号化されます。CBCモードでRijndael(対称暗号化)を使用しています。パスワードは、ハードコードされた値を使用してソルトされます。
  2. 暗号化されたデータがデータベースに送信されます
  3. サーバーのWebページにアクセスし、暗号化されたテキストをダウンロードします。クライアント側のJavaScriptを使用して、パスワードを入力します。javascriptはすべてを復号化します(まだクライアント側)

これが私の仮定です:

  • すべての送信を傍受できると思います
  • javascript(復号化アルゴリズムとハードコードされたソルトを含む)は傍受できると思います(実際にはWeb上にあるため)
  • パスワードを傍受することはできません(入力クライアント側のみであるため)
  • その結果、スヌーピングしている人がパスワード以外のすべてを持っている可能性があります。

それで、それらの仮定に基づいて:私のデータは安全ですか?私のデータはパスワードの強度と同じくらい安全であることに気づきました...それを改善するために私にできることはありますか?Rijndaelの復号化は、ブルートフォース攻撃を防ぐのに十分遅いですか?

ランダムなソルト値を使用することを考えましたが、それでも送信する必要があり、そのため、安全ではないようです。私の好みは、パスワードをWeb上に(ハッシュ化されているかどうかにかかわらず)どのような形式でも保存しないことです。

編集: 私はSSLの使用を検討しているので、その場合、私の「傍受」の仮定は有効ではない可能性があります。

編集2: Joachim Isakssonからのコメントに基づいて、SSLを使用して実行します。私の仮定を分解し続けてください!

編集3: Nemoからのコメントに基づいて、ユーザーごとにソルトを使用します。また、私はPBKDF2を使用してパスワードに基づいてキーを導出しているので、ここでブルートフォース攻撃に抵抗するための「遅さ」を得ることができます。

4

3 に答える 3

2

「パスワードデータ」とは、「パスワードで保護されたデータ」という意味ですか?

塩はランダムである必要があります。平文で伝わっても大丈夫です。ソルトの目的は、辞書攻撃からの保護です。つまり、誰かが暗号化されたデータベース全体を取得できた場合、すべてのユーザーに対してパスワードの大規模な辞書をすばやく試すことができます。ランダムソルトでは、ユーザーに対して辞書を試す必要があります。

または、データベースを危険にさらすことなく、多くの辞書の単語に対して事前に暗号化されたデータの膨大なコレクションを生成し、それらのキーのいずれかによって暗号化された既知の平文をすぐに認識できるようにすることもできます。

ソルトを使用しても、辞書攻撃は思ったよりも速くなる可能性があるため、パスワードからキーデータを取得することは、ほとんどの人が理解しているよりもはるかに微妙です。

結論:いつものように、独自の暗号化を発明することは決してありません。独自の操作モードも発明しないでください。パスワードから暗号化キーを取得するには、PBKDF2(別名PKCS#5)などのよく知られた標準を使用します。

于 2012-09-26T21:11:39.300 に答える
2

暗号分析をまったく行わずに、すべての情報が傍受される可能性があると想定している場合(つまり、SSLなしで実行している場合)、安全ではありません。

誰でもJavascriptを傍受できるため、 Javascriptを変更して、復号化されたブラウザがクリアテキストを他の場所に渡すようにすることもできます。

また、サイト(またはサイト所有者)をハッキングする人は誰でも、SSLがオンになっている場合でも、Javascriptを悪意を持って変更して同じことを行う可能性があります。

于 2012-09-26T21:00:06.957 に答える
1

まあ、これは未解決の質問なので:


第1号

提供されたパスワードが正しくない場合、またはソルト/暗号文が変更された場合はどうしますか?誤った復号化結果が得られますが、それをどのようにテストしますか?暗号文の最後の部分だけが変更された場合はどうなりますか?または完全に削除されましたか?

解決策:このような攻撃に対する整合性保護を提供します。別のキーを使用してHMACを追加するか、GCMモードなどのモードを使用します。


第2号

パスワードに数バイトを変更または追加するとどうなりますか(暗号化されたストアを時間的に比較してください)?

解決策:毎回異なるIVでキーストアを暗号化します。


それはすでに4つの問題が見つかりました:)暗号化は難しいです。

于 2012-09-26T22:48:57.710 に答える