使用.net和x509证书实现安全
主要针对目前xxx数据交换平台实现安全数据交换的设计方案;本方案通过PKI技术实现对报文加密,加签和证书的管理实现对数据交换安全的功能性需求.
PKI是"Public Key Infrastructure"的缩写,意为"公钥基础设施",是一个用非对称密码算法原理和技术实现的、具有通用性的安全基础设施。PKI利用数字证书标识密钥持有人的身份,通过对密钥的规范化管理,为组织机构建立和维护一个可信赖的系统环境,透明地为应用系统提供身份认证、数据保密性和完整性、抗抵赖等各种必要的安全保障,满足各种应用系统的安全需求。简单的说,PKI是提供公钥加密和数字签名服务的系统,目的是为了自动管理密钥和证书,保证网上数字信息传输的机密性、真实性、完整性和不可否认性。
随着网络技术的发展,特别是Internet的全球化,各种基于互联网技术的网上应用,如电子政务、电子商务等得到了迅猛发展。网络正逐步成为人们工作、生活中不可分割的一部分。由于互联网的开放性和通用性,网上的所有信息对所有人都是公开的,因此应用系统对信息的安全性提出了更高的要求。
(1)对身份合法性验证的要求
以明文方式存储、传送的用户名和口令存在着被截获、破译等诸多安全隐患。同时,还有维护不便的缺点。因此,需要一套安全、可靠并易于维护的用户身份管理和合法性验证机制来确保应用系统的安全性。
(2)对数据保密性和完整性的要求
企业应用系统中的数据一般都是明文,在基于网络技术的系统中,这种明文数据很容易泄密或被篡改,必须采取有效的措施保证数据的保密性和完整性。
(3)传输安全性要求
以明文方式在网上传输的数据,很容易被截获以至泄密,必须对通信通道进行加密保护。利用通信专线的传统方式已经远远不能满足现代网络应用发展的需求,必须寻求一种新的方法来保证基于互联网技术的传输安全需求。
(4)对数字签名和不可否认的要求
不可抵赖性为了防止事件发起者事后抵赖,对于规范业务,避免法律纠纷起着很大的作用。传统不可抵赖性是通过手工签名完成的,在网络应用中,需要一种具有同样功能的机制来保证不可抵赖性,那就是数字签名技术。
PKI基于非对称公钥体制,采用数字证书管理机制,可以为透明地为网上应用提供上述各种安全服务,极大地保证了网上应用的安全性。
证书管理控制台:
证书颁发机构(CA) 用于申请和颁发证书的应用服务。
证书生成工具(Makecert.exe)生成仅用于测试目的的 X.509 证书。它创建用于数字签名的公钥和私钥对,并将其存储在证书文件中。此工具还将密钥对与指定发行者的名称相关联,并创建一个 X.509 证书,该证书将用户指定的名称绑定到密钥对的公共部分。
证书控制台,用于管理本地计算机上安装的证书。
安全管道:
证书读取器,读取安装在本地计算机中的证书信息。
加密/解密组件,通过证书提供的信息对报文进行加密/解密操作。
加签/验签组件,通过证书提供的信息对报文进行加签/验签操作。
通过X.509证书实现密钥的交换和签名;用自己的证书(包含私钥)签名,用其他人证书(公钥)进行加密,验签的过程;
客户端需要发送加密/加签报文到服务器的过程。
满足的前提条件
在证书管理器中存在加密用的服务器证书和加签用的客户端证书
加密算法说明
EncryptedXml 类是 .NET Framework 中用于 XML 加密的主类。XML 加密是对所有或部分 XML 文档或任意数据进行加密的一种基于标准的、可互操作的方法。.NET Framework XML 加密类实现了位于 http://www.w3.org/TR/xmldsig-core/ 的万维网联合会 (W3C) XML 加密规范。无论何时需要在应用程序或组织之间以标准方式共享加密的 XML 数据,都可使用 EncryptedXml 类。任何使用此类进行加密的数据均可通过符合 W3C XML 加密规范的任何实现进行解密。 XML 加密用 <EncryptedData> 元素替换任何明文 XML 元素或文档,此元素包含明文 XML 或任意数据的加密(或密文)表示形式。<EncryptedData> 元素可以选择包含有关在何处查找用于对密文进行解密的密钥的信息,以及关于使用哪种加密算法对明文进行加密的信息。除了允许对用于解密 <EncryptedData> 元素值的密钥进行加密外,<EncryptedKey> 元素在样式和用法方面与 <EncryptedData> 元素类似。注意,<EncryptedKey> 元素和 <EncryptedData> 元素从不包含未加密的密钥。使用下列方法之一交换密钥信息:
加签算法说明
SignedXml 类是 .NET Framework 中用于 XML 签名和验证 (XMLDSIG) 的主类。 XMLDSIG 是一种基于标准且可互操作的方法,用于对 XML 文档的全部或部分或者可通过统一资源标识符 (URI) 查找的其他数据进行签名和验证。.NET Framework XMLDSIG 类实现了 WWW 联合会 (W3C) 有关 XML 签名和验证的规范,可从 http://www.w3.org/TR/xmldsig-core/ 获得该规范。
无论何时需要在应用程序或组织之间采用标准方式共享已签名的 XML 数据,都可使用 SignedXml 类。 使用此类签名的任何数据都可以通过符合 XMLDSIG 的 W3C 规范的任何实现进行验证。
XMLDSIG 将创建一个 <Signature> 元素,该元素包含用于 XML 文档或可通过 URI 查找的其他数据的数字签名。 <Signature> 元素可以有选择地包含有关在何处查找用于验证签名的密钥以及使用哪种加密算法进行签名等信息。
通过 SignedXml 类,可以创建以下三种 XML 数字签名:
签名类型 |
说明 |
被包封签名 |
该签名包含于被签名的 XML 文档中。 |
包封签名 |
已签名的 XML 包含于 <Signature> 元素中。 |
分离签名 |
该签名位于与被签名的数据不同的单独文档中。 |
使用下列方法之一交换密钥信息:
服务端接收解密/验签报文的过程,通过对报文的加密/加签和证书的管理实现对客户端传输的控制和安全上管理。可以很好保证报文的安全不会在传输过程中被篡改和截获。
满足的前提条件
在证书管理器中存在解密用的服务器证书和验签用的客户端证书