web-dev-qa-db-ja.com

秘密鍵はどのようにして秘密にされますか?

これは愚かな質問のように聞こえるかもしれませんが、秘密鍵はどのようにして秘密にされますか?

あなたがグーグルのような人なら、あなたは一般の人が安全な接続を確立できるいくつかのサーバーを持っています。

*.google.com秘密鍵は、これらの接続をすべて確立するために必要です。

サーバーはおそらく寿命が尽きて処分されていると思われます(その時点でサーバー上の何かが漏洩する潜在的なリスクにつながります)。

現代のデータセンターでは非常に少数の人が必要ですが、Googleのような企業は非常に巨大であるため、サーバーに物理的にアクセスできる人がまだかなりいます。

これらのサーバーはファイアウォールの背後にあり、高度にセキュリティ保護されたOSを実行していますが、ルーターとOSの両方がゼロデイ攻撃を受ける可能性があります。

そのため、サーバーごと、または起動時(暗号化されていても)またはサーバーごとのスマートカードで取得したOSイメージに秘密キーを保存できないことは明らかです。

おそらく企業はこれについてあまりオープンに議論していませんが、物事がどのように機能するかについての良い概要はありますか?

すべての接続を確立する最初の非対称キー要素のみが処理される、強化されたバンカーがどこかにありますか?

おそらく実際には、データセンターごとにそのようなバンカーが必要です。リモートのキーハンドリングサイトへのリンクが失われたために、データセンター全体を失いたくないと思います。

データセンター間でキーを複製することでさえ、*.google.comのようなキーの値を考えると非常に危険に聞こえます。

このようなキーの処理を一から考え直そうとする人にとってはそれほど難しいことではない何かが欠けていますか?

96
George Hawkins

まず、暗号化は多くの場合、SSL復号化のオフロード専用のインフラストラクチャによって境界で終了します。役割専用の小さな(比例した)サーバーグループに対して高度なキーセキュリティを維持しているだけの場合、管理がはるかに簡単になります。通常のアプリケーションサーバーの残りの部分は、これらのキーの処理について心配することなく、通常のように動作できます。

次に、それらのキーはほぼ確実に ハードウェアセキュリティモジュール (HSM)を介して保存されます。これらは、セキュリティを維持し、暗号化を効率的に実行するように設計されたプロセッサを備えた専用ハードウェアデバイスです。

最後に、 Googleには独自の中間CA証明書があります を使用して、独自のリーフ証明書に署名できます。これにより、通常よりも有効期限がはるかに短い証明書を使用できるようになり、鍵が危険にさらされるリスクが多少軽減されます。実際のCAキーは、エアギャップバンカー内にロックされたままにしておくことができ、短期リーフ証明書に署名する必要がある場合にのみアクセスできます。

CAは証明書に署名するためにリーフ秘密鍵を必要としないことも覚えておいて、リモートデータセンターのHSMをオンサイトに残さない秘密鍵を生成し、公開鍵/ CSRをCAに送信して署名することができます。また、HSMデバイスごとに一意の秘密キーを生成することもできます。これにより、キーは、それを生成したデバイスを離れる必要がなくなります。

たとえば、次は現在のGoogle証明書の印刷画面です。

enter image description here

証明書は3か月間のみ有効であり、ほとんどの場合よりも大幅に短いことがわかります。


編集:Googleは実際にポリシーを詳細に説明しています here

Google PKIでは、Subscriberは、リストされた公開鍵に対応する秘密鍵を使用でき、使用を許可された個人または組織です証明書

...

Google Internet Authorityサーバーは、ロックされたサーバールームのロックされたキャビネットまたはケージエリア内に配置されています。サーバールームへのアクセスは、バッジリーダーによって制御されます。 Google Internet Authorityの秘密鍵はハードウェアセキュリティモジュールに保存されていますで、FIPS 140-2レベル2物理的に不正開封防止機能があり、耐タンパー性があります。

...

サブスクライバーキーペアは(i)サブスクライバーによって提供されたソフトウェアによってデバイス/オペレーティングシステムによって、または(ii)Googleの情報の承認されたメンバーによって生成されますセキュリティチーム。

...

サブスクライバーは、PKCS#10証明書署名要求による認証のために、公開鍵をGoogleに提供します。この情報の送信に推奨される転送方法は、HTTP over Secure Sockets Layer(SSL)です。

基本的に、これは通常のCAの動作とまったく同じですが、すべてGoogle内で行われます。

81
thexacre