1

複数のユーザー パスワードを保持する必要があり、回復可能である必要があるアプリがあります。

マスターパスワードと別の暗号化メカニズムを使用してパスワードを暗号化することを考えています。

暗号化のキーは外部システムに保持され、API を使用して取得できます。問題は、次のことかどうかわかりません。

  1. この方法は十分に安全です
  2. 暗号化のためにどの追加メカニズムを選択する必要がありますか。

ありがとう。

編集-------------- 閉鎖されていることは知っています...しかし、明確にしたい-復号化する機能が必要です。これは私のアプリの主要な部分です...そうは言っても、AESアルゴリズムで答えを得たと思います。ハッシュは元に戻せないため、ハッシュは必要ありません

4

4 に答える 4

5

スタックオーバーフローは、コーディングの問題を解決するためのフォーラムです。

この質問は、セキュリティフォーラムに適しています。

とはいえ、暗号化にはいくつかの標準化されたガイドラインがあります。

対称暗号化暗号を実装する場合は、AESアルゴリズムを使用するのが最適です。これは、これまでで最も安全な対称鍵ブロック暗号であり、現在「保護されている」と見なされているものの標準です。

パスワードストレージの標準であるパスワードをハッシュする場合は、キーは必要ありません。SHA1アルゴリズムを使用します。出力のサイズに関しては、現在使用されているのはより安全なハッシュアルゴリズムです。他のオプションはSHA256SHA512です

編集:ああ、彼らは変化している時代です。そして、ハッシュアルゴリズムもそうです!人々はハッシュアルゴリズムのSHAファミリーからBcryptに移行しています。これには、レインボーテーブルから保護するためのコストファクターの導入など、他のいくつかの機能があります。

于 2013-03-06T17:31:37.290 に答える
1

[...] この方法は十分に安全かどうかはわかりません

いいえ、そうではありません。パスワードをリセットする安全な方法ではなく、パスワードの回復を可能にするパスワード保存方法は、ほとんどの場合「安全」であるとは見なされません。さらに、ユーザーはどのようにして「回復​​された」パスワードを送信しますか? これを行うために電子メールを使用することは、考えられる最悪の方法です。

パスワードを「回復」できなければならないことを回避できない場合は、非対称[別名公開鍵] 暗号化が必要です。パスワードは公開鍵によって暗号化され、比較のためにデータベースに保存されます。秘密鍵は別々に保管し、理想的にはオフラインのメモリ スティックで金庫に保管し、少なくとも 1 つのパスワードで保護する必要があります。別々の人が 2 つ以上のパスワードを保持する必要はありません。

他の人が言及しているように、この質問はここよりもhttp://security.stackexchange.comに適していますが、すでに度も尋ねられており、この方法ではなく、まったくこのようにしないことについて、より強い言葉で励まされます。ソリューション。

于 2013-03-06T17:38:32.203 に答える
1

ここにあなたの必読があります:あなたはおそらくパスワードを間違って保存しています

さて、暗号化されたパスワードを保存する方法の問題について。しないでください。ハッシュ化されたパスワードを保存します。


おそらく間違った問題を解決しようとしているのでしょう。パスワードを回復する機能を作成したいと思われます...その場合は、以前の回答のいずれかをお送りします。


別の方法として、1 人のユーザーの複数のキーをクライアント マシンに保存することもできます。これが必要な場合は、オペレーティング システムが提供するセキュリティでセキュリティを確保することをお勧めします。オペレーティング システムによって提供されるユーザーの暗号化されたファイルよりも優れていると期待するべきではありません。


そうしないと、基本的に、保存されているすべてのパスワードが盗まれる方法を設計することになります。現在安全と見なされているものが明日には安全と見なされなくなる可能性があるため、または私たちが人間であり (そうですか?)、間違いを犯す可能性があるためです。

とにかく、あなたのセキュリティはせいぜいセカンダリ API (つまり、パスワードを解読するためのキーを取得するもの) の認証プロセスと同じくらい強力です。あなたは Java について言及していますが、パスワードを取得する方法を発見するために Java コードがリバース エンジニアリングされる可能性はどのくらいありますか?

于 2013-03-06T17:36:43.860 に答える
0

PHP は SHA1 をサポートしています。マニュアル: http://php.net/manual/en/function.sha1.php

if (sha1($str) === 'd0be2dc421be4fcd0172e5afceea3970e2f3d940') { echo "緑のリンゴと赤のリンゴはどちらがいいですか?"; }

Java SHA1 の例: http://www.herongyang.com/Cryptography/SHA1-Message-Digest-in-Java.html

SALT + PSK(SHA1) と AES 暗号化を組み合わせることができます。

SYSTEM SALT (システムで生成された SHA512 キー + ユーザーの SALT + ログイン用の PSK SHA512) の使用をお勧めします。

または、SHA2 で bcrypt または scrypt を使用できない場合は、PBKDF2 を使用することをお勧めします。

于 2013-03-06T17:34:55.307 に答える