2011-10-07 5 views
8

Webアプリケーションのコンテンツをユーザーごとに暗号化する必要があります。コンテンツにアクセスすることができないように、サイトのユーザーコンテンツを暗号化するにはどうすればよいですか?

私は、rootユーザーですが、ユーザーのコンテンツ、期間にアクセスしたくありません。

ユーザーが自分のコンテンツにアクセスできる唯一のユーザーになるようにするにはどうすればよいですか?おそらく、ログインパスワードのハッシュが暗号化と復号化キーとして機能するようにすることができます(パスワードは自分のデータベースに一方向ハッシュで保存され、ログイン時に生のパスワードから暗号化/復号化ハッシュが生成されますローカルクッキー)?パスワードを変更するとどうなりますか?それから私は、多くの処理能力を必要とするすべてのコンテンツを更新する必要があります。

パスワードを変更した場合にコンテンツを再暗号化せずに、これを提供する暗号化方式はありますか? Linux上でecryptfsに似た何か、おそらく? ecryptfsの研究は始めるのに適していますか?

ユーザーだけが自分のサーバー上のコンテンツにアクセスできるようにしています(私もそうではありません)。

+0

hushmail.comがこれをどのようにしているのだろうか。 – SQLMason

+0

ここに白紙があります:http://www.hushmail.com/public_documents/Hush%20Encryption%20Engine%20White%20Paper.pdf –

+0

Hushmailからの電子メールによる回答:私たちのシステムは、あなたのパスフレーズで あなたのアカウントの暗号化された電子メールを解読することができます。パスフレーズ自体は が暗号化されたハッシュに格納されているので、スタッフもそれを見ることができません。つまり、メールが暗号化されている場合は、読むことができません。 –

答えて

11

プロセス:

  1. は、その内容を暗号化するために、ランダムな秘密を生成します。
  2. 提供されたパスワードを使用すると、#1のランダムシークレットが暗号化されます。
  3. パスワードを一方向ハッシュ(salt、多分マルチハッシュ)として保存します。

    1. ステップ#2から値を再生成:パスワード変更時

  4. 手順3からハッシュキャッシュを再生成します。ログイン時に

  1. ハッシュパスワードとステップ#3で生成されたハッシュに対してチェック。
  2. パスワードが一致する場合 - 実際に提供されたパスワードを使用して、#2のランダムシークレットを復号化します。
  3. #1の暗号化されたデータのロックを解除するには、#2のランダムな秘密を使用します。

注:誰がランダム秘密を知らなくても、データをデコードすることはできません

  • (#1)。ランダムな秘密は、ユーザーの実際のパスワード(#2)でのみロック解除することができます(brute-forceの短期)。ユーザーの実際のパスワードは、一方向ハッシュ形式(#3)でしかわからないため、同じであることを確認できますが、デコードして#2を回復することはできません。
  • 忘れたパスワード処理はできません(#3を再生成できますが、#2のランダムキーは現在ボールトにロックされているすべてのものが失われています)。
  • パスワードを変更するたびにステップ#1のすべてを再暗号化する必要はなく、#2の(シンプル/クイック)ランダムシークレットのみを再暗号化する必要はありません。
  • 提供されたパスワード、またはステップ1で生成されたランダムな秘密、またはそれらの(復号化された)コンテンツをどこにでもキャッシュすると、データが漏洩する可能性があります。
+1

あなたはそれを生成しましたが、あなたがそれを保存していない限り - いいえ。それを理解する唯一の方法は、#2から暗号化されたフォームを解読するためのパスワードを持つことです。あなたが保存したハッシュフォームを使用することはできません。そうしないと、パスワードを知らずにデコードできます。 – Rudu

+0

申し訳ありませんが、私はコメントを削除しました。私はあなたの投稿をもっと詳しく読んで答えが出るかもしれない質問をしました。私はあなたの考えが好きです。 –

+0

ランダムな秘密のクライアント側を生成できませんか?あなたは本当にあなたが秘密を見ていないことを保証します。 –

-1

パスワードをキーとして使用する必要があります。

暗号化されたファイルシステムが最適なソリューションではないため、私はecryptfsで猿を使っていません。あるユーザーのデータを別のユーザーが使用したのと同じキーで暗号化することは望ましくありません。

データを暗号化するときは、塩として使用するランダムな文字列を生成する必要があります。これにより、誰かが事前に生成されたハッシュリストを使用してデータを復号化することができなくなります。また、同じパスワードを使用する2人のユーザーのハッシュも変更されます。

ユーザーがパスワードを変更すると、データを再暗号化して新しいsalt値を生成する必要があります。これは、私がパスワードを変更するときに、私のデータをすべて再暗号化して、誰かが私の鍵を無理やりにしないようにすることを知っている、顧客として期待されるセキュリティのレベルです。

暗号化されていないデータベースにsalt値を格納できます。

+1

eCryptfsでは、各ユーザーのデータを独自のキーで暗号化できます。 –

関連する問題