web-dev-qa-db-ja.com

Webアプリケーションの秘密鍵はどこに保存すればよいですか?

" アプリケーションのRSA秘密鍵を保存する方法は? "と重複している可能性があります

したがって、PHPでWebインターフェースを作成して、訪問者がSHA 256をRSA暗号化で使用して、エリアでは、許可されたユーザーが特定のファイルの署名を作成できます。アプリケーションは、インターネット(ローカルネットワークではない)上の共有Webホスティングサービスで確実に実行されます。秘密キーを保存する100%信頼できる方法はないことは知っていますが、その秘密鍵を最も安全な方法で保存するために必要な主なオプションは何ですか?

サイドノート:このようなタスクのWebインターフェイスを作成するという考えは安全ではなく、公開キーのみを公開してエンドユーザーが自分で確認できるようにする方がはるかに安全であることは知っています署名、しかしそれは私のクライアントが絶対に望んでいることなので、...

5
palra

だから、最初にそれを邪魔にならないようにしましょう-キーを暗号化する意味がありません。それを復号化するには、そのキーが必要です。そのキーを保存する必要があります。それは鶏と卵の問題になります-最終的には、クリアテキストSOMEWHEREで何かを保存する必要があります。

だからどこ。従来の答えは、ファイルシステム上のファイルにあり、アプリケーションを実行しているユーザーの読み取りアクセスのみが可能です。次に、このアプリケーションのみがそのユーザーとして実行され、それができる限り安全であることを確認します。

ただし、他のオプションもあります。ハードウェアセキュリティモジュール(HSM)を使用してキーを保存できます。キーにアクセスするためのいくつかのより洗練されたオプションがあります。自分でホストする場合でも、外部でホストする場合でも、これは高価です(すべてのホスティングプロバイダーが専用のHSMを提供しているわけではありません)。 HashikoのVaultやKeyWhizなどのキー管理システムをホストすることもできます(できれば、このシステムにのみアクセス可能な別のシステム上にある)。これらはこの問題を解決するように設計されており、キーにアクセスするためのいくつかのより洗練されたオプションもあります。

ただし、共有ホストはセキュリティ上の懸念とレイヤーを追加するため、誰が何にアクセスできるかを正確に把握できなくなります。

6
crovers