web-dev-qa-db-ja.com

SAMLアサーションの暗号化と、暗号化に署名と同じキーを使用

SAMLベースの認証をサポートする製品を提供している会社と協力しています。ジャストインタイムフェデレーションは促進せず、アサーションレスポンスでユーザーIDのみを受け入れます(ユーザーはシステムに既に存在している必要があります)。

応答に署名している場合、この非機密データを暗号化したい理由は何でしょうか?

顧客の主張はそれで十分であり、暗号化と署名に同じキーを使用するだけで、他のすべてのプロバイダーがこれを容易にする(そして、他のすべてのサービスプロバイダーがこれを許可している)。これは、暗号化の基本についてこれまでに教えられたことすべてに、私に大規模な赤信号を引き起こします。

まず、署名用の公開鍵を提供することの要点は、誰でも鍵を所有してそれを確認できることです。これは、IDプロバイダーがすべてのサービスプロバイダーに同じ秘密鍵を使用して署名することを意味しませんか?したがって、暗号化に同じキーを使用すると、そのIDプロバイダーを使用するすべてのサービスプロバイダー間の信頼境界が無効になりますか?私はこれを誤解していますか?

次に、IDプロバイダーがメタデータに暗号化キーを提供する場合、それがサービスプロバイダーに提供する公開キーではないでしょうか。暗号化されたメッセージの受信側(サービスプロバイダーとも呼ばれます)の当事者は、公開鍵ではなく秘密鍵を所有するべきではありませんか?何が欠けていますか?

おかげで、

3
Cyassin

SAMLアサーションの暗号化はオプションです。暗号化されているかどうかに関係なく、トランスポート層のセキュリティによりプライバシーが守られます。

SAMLアサーションの暗号化を検討する必要があるシナリオは次のとおりです。SA​​MLアサーションには特に機密性の高いユーザー情報が含まれます。 SAML SSOは機密性の高い環境で発生しています。

公開鍵と秘密鍵に関するあなたの理解は正しいです。サービスプロバイダーは、暗号化公開キーをIDプロバイダーに提供します。

IDプロバイダーは、サービスプロバイダーの公開鍵を使用してSAMLアサーションを暗号化します。

SAMLアサーションを復号化できるのは、対応する秘密鍵(つまり、サービスプロバイダー)の管理者だけです。

SAMLアサーションが暗号化されているかどうかに関係なく、IDプロバイダーは、SAMLアサーションまたはSAMLアサーションをエンベロープするSAML応答のいずれかに署名する必要があります。

IDプロバイダーは、独自の秘密鍵を使用してSAMLアサーションまたは応答に署名します。

サービスプロバイダーは、IDプロバイダーの対応する公開キーを使用して署名を検証します。

その他の唯一の考慮事項は、SPによって開始されるSSOで、SAML authnリクエストがしばしば署名されることです。

この場合、サービスプロバイダーはその秘密キーでauthnリクエストに署名し、アイデンティティプロバイダーは対応する公開キーを使用して署名を検証します。

サービスプロバイダーには、署名の生成とSAMLアサーションの復号化に同じまたは異なるキーを使用するオプションがあります。

署名の生成と復号化に同じキーを使用する利点の1つは、配布および管理する証明書が1つ少ないことです。

これらすべての黄金律は、どの当事者も自分の秘密鍵を他の当事者に漏らしてはならないということです。

5
ComponentSpace