私は小さな内部情報共有アプリケーションを作るためにPerl/MySQL/Apacheを使用しています。セキュリティレベルの異なるユーザーがおり、その多くのユーザーがホストサーバーやネットワークの他の部分に対してroot/admin権限を持つ可能性があります。ユーザー固有の暗号化キーとしてAD(LDAP経由)から何を使用できますか?
私はもともとこのような何かを設計していた:
マスターキーはすべてのコンテンツを暗号化するために使用されるだろうが、明らかに私は(コードで、またDB)プレーンテキストで保存されたこのキーを望んでいませんそのため、各ユーザーの公開鍵を使用して暗号のコピーを暗号化するKeysテーブルがあります。何らかの理由でマスターキーを変更する必要がある場合は、キーのコピーをすべて再生成することができ、データが失われることはありません。
各ユーザーは、パスワードとプレーンテキストパスワードのハッシュで暗号化された秘密キーを持つユーザーテーブルにエントリを持ちます。ログイン時には、このテキストを復号化し、保存された暗号化されたパスワードと比較してIDを確認し、セッション変数でサーバに保存されている秘密鍵をログアウトするまで解読します。
私がしたいのは、管理者以外のすべてのユーザーにローカルパスワードの代わりにLDAPによるAD認証を使用することです。しかし、ユーザーのパスワードはログイン間で変更される可能性があるため、秘密鍵を暗号化/復号化するための暗号テキストとしては使用できません。
私の質問は次のとおりです。私はADから暗号として使用できる、安全性の高い個人データは何ですか?私はこれをADユーザーへのアクセス権を持つ誰にも明らかにしたくありません。&コンピュータなどですが、もちろんこの情報をサーバープロセスから何とか得ることができなければなりません。 (たぶんユーザーのなりすましによって)
このプロセスで他のアイデアや穴を開ける方法はありますか?私はサーバプロセスが潜在的にメモリコンテンツをダンプするために悪用される可能性があることを知っています。あるいは、rootユーザがrawアクセスを通じて同じものを読むことができるかもしれませんが、それは許容されるリスクです。最終的に、ルートまたは物理的アクセスを持つ人は、一般的に信頼できるものです。それにもかかわらず、私は正直な人を正直に保つためにデータベースの内容を暗号化したい。
AD/LDAPグループメンバーシップを使用してデータへのアクセスを管理するだけではどうですか。 – RickF
アクセス制御ではありません。ユーザーの資格情報なしでは取得できない暗号化キーとして使用する必要があります。 ADには証明書などがあり、NTFSはローカルデータをホストキーで暗号化し、そのキーをユーザーキーで暗号化します。それは私が取りたいと思っているアプローチです。だからどこのキーを手に入れる? – SirNickity