您可以对 SAML 2.0 中的 SAML 属性进行对称加密吗?我们似乎可以做不对称。有什么优点和缺点?
3 回答
SAML 2.0 使用 XML 加密(第 5.2.1 和 5.2.2 节)。话虽如此,SAML 2.0 一致性文档的第 4.2 节指定您必须支持以下内容才能符合 SAML 2.0:
- 块加密:TRIPLE DES、AES-128、AES-256。
- 密钥传输:RSA-v1.5、RSA-OAEP
换句话说,SAML 2.0 要求您使用非对称密钥。
因此,如果您使用 SAML 属性的对称加密,则“缺点”将是您不符合 SAML 2.0,这将导致与其他 SAML 2.0 合作伙伴的互操作性问题。但是,这并不意味着您实际上不能选择使用这种类型的加密,只要您的合作伙伴也支持。
在“专业人士”方面,对称加密更快(有人告诉我计算密集度较低),但我很确定这不值得在合规性方面进行权衡。
请记住,实际上您总是同时使用非对称和对称加密——这是安全方面的最佳实践。对称的底层块加密方法(如 Ian 所述:Triple DES、AES 等)。由于更强的安全性(更大的密钥大小等)以及易于保持私钥安全(仅需要分发公钥),非对称是首选。然而,由于其性能,它仅用作交换对称密钥的一种手段。对大量数据进行对称加密是为了提高速度。
在 XML 加密规范中,EncryptedData 元素包含对称加密的数据,而 EncryptedKey 是您的对称加密/解密密钥,通过非对称加密进行加密。
如果您想了解 XML 加密,Don Eastlake 的经典著作 Secure XML: The New Syntax for Signatures and Encryption 仍然是最好的。他解释了 XML Enc 和 DSig 设计中的权衡,并提供了有关实现的技巧。在他写这篇文章的 9 年里,关于这些权衡已经出现了许多约定,您可以通过搜索找到这些约定。
我的同事 Ian 列出了 SAML 2.0 所需的算法,因此您可以在 Eastlake 的书中专注于这些。正如您可能知道的那样,规范中的“必需”意味着如果您将自己限制在这些范围内,您将是可互操作的。
最后,Scott 描述了这种技术,生成一个随机对称密钥,用它加密数据,然后用接收者的公共加密密钥加密随机对称密钥,这通常称为数字包络,并且在密码学中无处不在,从 SSL到关键管理系统。