Java Web服务 - Axis2 WS-Security签名和加密 - 编程入门网
trap-door 函数完成:这是一个散列(hash)函数,它易于计算但难以复制(即很难在不修改该消息的散列值的情况下对消息进行修改,或者很难找到具有相同散列值的另一个消息作为提供的消息)。使用这种散列函数,可以为希望签名的消息生成散列值(在安全讨论中通常称为一个摘要(digest)),然后使用私有密匙加密该摘要并使用消息发送已加密的摘要值。任何接收此消息的人都可以对该消息使用相同的散列算法,然后使用您的公开密匙解密附带的已加密摘要,并比较两者的值。如果值匹配的话,那么接收方可以确定(在当前技术的范围内,并认为您一直对您的私有密匙保密)该消息是由您发送的。
在处理 XML 时,消息签名过程还涉及到另一个步骤。XML 消息以文本形式表示,但是文本表示的某些方面被 XML 认为是无关的(比如元素上的属性的顺序,或元素开始和结束标记内使用的空白)。由于这个与文本表示有关的问题,因此 W3C(XML 规范的所有者)决定在计算摘要值之前,将 XML 消息转换为一个标准的文本形式。一些标准化算法也得到定义,可以用于 XML 消息。只要消息交换的双方都同意使用相同的算法,那么具体使用哪种算法并不会产生什么影响。 使用经过签名的消息摘要可以同时保证消息完整性(因为对消息的修改将会改变摘要值)和真实性(因为您的私有密匙被用于加密摘要)。由于使用公开密匙的加密可以确保消息的私密性,因此消息交换安全性的所有主要方面都可以通过使用一个公开-私有密匙对涵盖。当然,对于一个密匙对,消息交换中只有一方是安全的 — 但是如果交换的另外一方也具有自己的公开/私有密匙对,那么就可以为消息交换的双方提供充分的安全性。 Java Web服务 - Axis2 WS-Security签名和加密(2)时间:2011-02-02 IBM Dennis Sosnoski证书 公开-私有密匙对可以同时用于对双方之间交换的信息进行加密和签名,假设交换双方都可以访问对方的公开密匙。这产生了一个问题,如何在保证安全性的情况下获得公开密匙。实现此目的的方法有许多种,其中最常用的是对公开密匙使用一个或多个可靠的第三方证明。数字证书 就是一种以第三方证明的形式提供公开密匙的机制。 数字证书实质上就是一个包装公开密匙的包装器,其中包含了用于密匙所有方的识别信息。然后由一个可信的第三方签名被封装的内容,并且签名被包括到证书中。可信的第三方通过使用其自己的签名发出证书,为公开密匙和识别信息做证明。当然,这又摆出了如何确立可信第三方的身份的自举问题。通常的解决方法是将某些称为发证机关(issuing authority)的可信第三方的证书硬编码到软件(比如 JVM)中。 除了这里描述的基本内容外,数字证书还涉及到很多其他内容,包括由于发生错误或泄漏私有密匙而需要撤回发出的证书,证书的有效期限,以及指定证书既定用途的扩展。还可以查阅文档,获得 JDK 安装中附带的 keytool 安全工具。keytool 文档很好地介绍了证书结构和处理,以及 keystores(稍后讨论)和其他安全性内容。您还将在本文后面看到一个使用 keytool 的示例。 Keystores 大多数 Java 安全代码都使用 keystore 来处理私有密匙和数字证书。一个 keystore 实际上就是一个以加密形式包含密匙和证书条目的文件。需要使用密码才能访问 keystore。keystore 中的每个私有密匙会被再一次加密,需要额外的密码才能保持密匙的安全性。使用 keystore 和私有密匙的任何软件都需要在运行时保持 keystore 和私有密匙密码可用。这限制了由这些密码提供的安全性(因为任何访问源代码的人都可以了解到密码的载入方式)。因此您需要维护在其中托管了软件以及任何系统备份的系统的物理安全性。并且,要保护私有密匙的安全性,只能将 keystore 和密码放到该系统和系统备份 |
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |