機密データを暗号化してデータベースに保存したいと考えています。また、ユーザーがフォームを表示しているときに、この機密データを表示する権限がある場合は、そのセッションのデータを復号化する追加の「パスワード」を持ちます。独自の文字列を秘密鍵として公開秘密鍵暗号化で作成しますか?
公開鍵/秘密鍵の暗号化を検討していました。秘密鍵(shaハッシュなど)と対応する公開鍵を生成するために人間にやさしいパスワードを使用していました。公開鍵は、入力された新しい機密データを暗号化するために使用される。また、ユーザーがデータを参照する必要がある場合は、(通常のログインアカウントと権限の設定に加えて)パスワード(「秘密キー」)を入力します。これにより、任意のサーバーに秘密鍵/パスワードを格納することも回避されます。
-----BEGIN PRIVATE KEY-----
sha_hash('myPassword'.$salt)
-----END PRIVATE KEY-----
ので、現時点では、ユーザーが解読するために、プロンプトに(のopensslなどを経て作られた)秘密鍵のテキストをコピー&ペーストする必要があります:プライベートキーが動作しないようただ、任意のランダムな文字列を使用して
情報これは、おそらく、人々がこのキーをファイルまたは電子メールに保存することを意味します。
これは可能でしょうか?自分の秘密鍵の文字列を作成し、そこから公開鍵を作成しますか?
あなた(またはクライアント)が秘密鍵をどこにでも送信している場合、その種の秘密鍵は公開秘密鍵暗号化を使用する目的に反します。これがこの問題の最良の解決策であると確信していますか? – apokryfos
この問題には簡単な答えはありません。 http://security.stackexchange.com/で使用されるアルゴリズムの助けを求めることをお勧めします。パスワードから秘密鍵を取得し、暗号化アルゴリズムと共に使用するには、KeyDerivationFunctionが必要です。暗号化と復号化のために鍵のペア(公開鍵/秘密鍵)を生成するのは、別の使用例です。 – pedrofb
これは長さ[ここ](http://crypto.stackexchange.com/q/1662/13022)で議論されています。可能ですが、私はRSAのための決定的な素数検索の使用をサポートするPHPライブラリは知らないです。 phpseclibのソースコードを取り出して確定的に編集することができます。 –