私は、新しいベンチャーのために取り組んでいるプロジェクトで遭遇した「鶏と卵」の問題の解決策を見つけようとしています。
問題のシステムはクレジットカードのデータを扱っているため、カード番号などを暗号化してデータベースに保存する必要があります。PCI 要件に準拠するために、「加盟店」ごとに一意のキー ペアで番号を暗号化しています。そのため、1 つの加盟店が侵害された場合、別の加盟店のカード所有者データにアクセスすることはできません。
人間がパスフレーズを入力して秘密鍵のロックを解除し、データを復号化できるため、システムとの人間の対話に関しては問題ありませんが、データにアクセスする必要がある自動化されたサービス (つまり、トランザクションを処理するため) に関しては、これは問題ありません。サービス/デーモン プロセスに資格情報を提供する最善の方法に問題があります。
システムの背景のビット:
- カード番号は非対称鍵ペアで暗号化されます
- 秘密鍵はパスフレーズで保護されています
- このパスフレーズは、「マスター」鍵ペアで暗号化されます
- マスター秘密鍵のロックを解除するためのパスフレーズは、許可を与えられたオペレーターに知られます (実際には、彼らはパスフレーズしか知らない独自の鍵ペアで暗号化されたそのコピーです)。
- デーモン プロセスは、Linux システム上で独自のユーザーおよびグループとして実行されます。
デーモンがデータを復号化できるようにするために、次のことを検討していました。
- .pgpassの仕組みと同様のパスフレーズ ファイルをセットアップします。
- デーモン ユーザーのホーム ディレクトリにファイルを格納します。
- ファイルのパーミッションを 0600 に設定します
- Tripwire などのファイル整合性監視システムをセットアップして、ファイルまたはアクセス許可に対する変更をセキュリティ グループ (または同様のグループ) に通知します。
- プロセスにのみ使用されるデーモン ユーザーのログインを無効にします。
以上のことから、これで十分かどうかは疑問です。明らかに弱点はシステム管理者にあります - 安全なシステムで信頼されているのは少数 (すなわち 2 人) です - 彼らは権限を昇格させ (つまり root に)、ファイルの所有権または権限を読み取り可能に変更できます。パスフレーズ - ただし、これもまた、ファイルのチェックサムの変更、FIM チェックサムなどを監視することで軽減できる可能性があります。
それで、私はこれを間違った方法で行っていますか、それともこれを処理する方法について他の提案はありますか?