2016-10-04 6 views
2

私は自分のデータベースの暗号化に取り組んでいます。私は暗号化したい複数の列を持っています。私はJavaでAES/ECB/PKCS5Padding cypherを使用しています。各列に異なるキーを使用する必要がありますか?

質問は、それぞれのキーに異なるキーを使用するか、すべての列に1つのキーを使用するだけですか?

+1

キーはどこに保存されていますか?異なる鍵で暗号化し、すべての鍵を同じ場所に保管することを選択した場合は、1つの鍵で暗号化することもできます。そして、ECBを使用しないでください。これは、ブロック暗号の第1(または第2)ルールです。 –

+0

@ LukePark、私はサーバーサイドの暗号化を使用しているので、すべてのキーがサーバーで利用可能になります。私はECBの代わりに何を使用すべきですか? – uksz

+0

暗号化はそれほど重要ではありません。暗号化キーの横に格納された暗号化されたデータは、すべての集中的な目的のために、平文だけです。そしてできるならGCMを使うべきです。そうでない場合は、CBCを使用し、HMACで認証します。 –

答えて

3

そのデータへのアクセスを必要とする交差する役割があるだけ多くのキーを使用します。

(マルチユーザーのパスワードマネージャのための)テーブルには、次のようになります。

  • ユーザー名
  • パスワード

次に、あなたのシステムがユーザー名を復号化するための鍵を提供することができるはずですユーザーだけがパスワードを解読するための鍵を提供できる必要があります。そのシナリオでは、2つのキーが必要です。

これを複雑にする。システム、ユーザー、そしておそらく他のユーザーがパスワードを解読するためのキーを提供できなければならない場合は、2つ以上の異なる列にパスワードを入れる必要があります。 3NFデータベース設計

+3

パスワードがハッシュされ、暗号化されないため、パスワードは決して解読されません。少なくとも、それはすべきです。 –

+1

@ LukePark私は、ユーザーが自分のパスワードを習得できなければならないというパスワードマネージャーを念頭に置いていました。ウェブサイトへのログインシナリオでは、あなたのコメントは正しいです。私はこれを反映するために私の返信を編集しました、これを指摘してくれてありがとう! –

関連する問題