Openssl-RSA を使用して簡単な暗号化/復号化プログラムを作成しようとしています。データが暗号化されると、キー ペアが生成されます。データを復号化するには、暗号化中に生成されたキー ペアが必要です。
では、暗号化されたコンテンツを可能な限り復号化できるように、このキー ペアをどこにどのように保存すればよいのでしょうか。
暗号化には公開鍵を使用し、復号化には秘密鍵を使用しています。
答え1
技術的にはキーペアを好きな場所に保存できますが、一般的な保存方法がいくつかあります。
データが特に機密性が高く、定期的または継続的に必要になるわけではない場合、秘密鍵を保管する最も安全な方法は、フラッシュ ドライブに保存するか、紙に印刷して金庫または銀行の金庫室に保管することです。(公開鍵はどこにでも保管できます。結局のところ、公開情報は「公開」情報です。)
データをすぐにアクセスできるようにする必要がある場合、毎回取得する手間がかかるため、秘密鍵をオフラインで金庫や保管庫に保存するのは通常現実的ではありません。キーの保存によく使用される一般的な場所は、.ssh
ホームディレクトリ内のという名前のフォルダーです。(これはLinux上のOpenSSLのデフォルトであり、他のシステムでもよく使用されます。)一般的な方法は、次のように説明する名前の2つのファイルとしてキーを保存することです。purpose_type
秘密鍵用とpurpose_type.pub
公開鍵用です。たとえば、OpenSSLコマンドラインを使用して、次のものを識別するRSAキーを作成するとします。あなたid_rsa
の場合、デフォルトでファイルとディレクトリid_rsa.pub
に保存されます.ssh
。この場合、キー ファイルに や のような名前を付けることができmydatastorage_rsa
ますmydatastorage_rsa.pub
。
重要: この方法で秘密鍵を保存する場合は、パスフレーズで保護することを強くお勧めします。これにより、ファイルにアクセスした人が秘密鍵を使用できなくなります。キーペアを最初に作成したときに、キー パスフレーズの入力を求められた場合は、OpenSSL コマンドライン ツールを使用して秘密鍵にパスフレーズを追加できます。
機密性の高い暗号化作業を多く行う場合は、「ハードウェア セキュリティ モジュール」(略して「HSM」) と呼ばれるハードウェア キー ストアを購入できます。これは秘密キーを安全に保管するために設計されています。実際にセキュリティ/暗号化業界で働いているのでなければ、これは間違いなくやりすぎです。「スマート カード」や「USB 暗号トークン」などの他のハードウェア ソリューションもあります。これらは完全な HSM よりも安価ですが、それでもハードウェアへの投資が必要になり、おそらく必要以上に高額になります。
秘密鍵をパスワードで保護することが推奨されていますが、Web サーバーなどのサービス内でこの復号化を行う必要がある場合は、問題が発生する可能性があります。その場合、次の 3 つのオプションがあります。
- サーバー アプリケーションを起動するたびにパスフレーズを入力します。
- 設定ファイルにパスフレーズを入力します。(一部のサーバーでのみサポートされています)
- パスフレーズを削除します (または、最初からパスフレーズを設定しないでください)。
最初の方法が最も安全ですが、毎回サービスを手動で起動する場合にのみ使用できます。他のいずれかのオプションを実行する必要がある場合は、構成ファイル (オプション 2) または秘密キー (オプション 3) を適切に保護して、アクセスを防止してください。