2

ユーザーがクライアントのイントラネットアプリでオンラインフォームを作成および管理できるようにするCMSシステムを構築しました。

もちろん、フォームで処理されるデータの一部は暗号化する必要がある場合があります。たとえば、システムを使用して給与の詳細などを処理するフォームを作成する場合などです。AESManagedそのため、アプリケーションデータベースに入る前に、この種のデータを対称的に暗号化するためにクラスを使用しています。

shared secretすべて問題ありませんが、リリース前に、とに関するステアを使用できましたsalt

私の最初のアイデアは、暗号化されたフィールドを含む(GUIDベースの)IDとフィールドの(再びGUIDshared secretベースの)IDを組み合わせて(動的)を作成することでした。FormQuestion

FormId:QuestionId

MySaltは現在同じ方法で生成されますが、Guidの順序が逆になっているだけです。

QuestionID:FormID.

私はこのようなものに慣れていないので、これが賢明な戦略なのか、それとも他の方法でやるべきなのかわからないのですか?

4

1 に答える 1

1

ソルトはランダムに生成された値である必要があります。その目的は、辞書/ブルートフォース攻撃の実行をより困難にすることです。ウィキペディアには暗号ソルトに関する素晴らしい記事があります:http: //en.wikipedia.org/wiki/Salt_ (cryptography )

共有シークレットの場合、理想的には、暗号化されていたデータ(IDなど)とともに暗号化されずに保存された値ではありません。エンドユーザーまたは管理者が定期的に、または何らかのセキュリティ違反が発生した場合にキーをローテーションできるように、キーを何らかの方法で選択することをお勧めします。このパスワードキーは、CMSの各ユーザーが所有することも、管理者アカウントが所有することもできます。非常に深刻なセキュリティ要件がある場合は、サードパーティのキー管理サーバーを使用できます。

ここでの主な目標がより難読化であり、CMSが何らかの形のセキュリティ監査の対象にならない場合は、最初のアイデアに沿った何かが行われます。データへの偶発的なアクセスを防ぐことはできますが、ランダムなソルト、キーをローテーションする方法、およびシステムの「所有者」が次のようにパスワードを変更する方法を必要とする正式な標準に対する監査に合格しない可能性があります。あなた自身はデータにアクセスできませんでした。

于 2011-03-04T12:03:23.417 に答える