Essential Security: PKI, SSL and Xml Security

 

See also: << Essential Security Tools: OpenSSL and Keytool>>

 

一、PKI与数据通信中的安全相关概念

这几个概念是正交的,所谓正交,是指:

  • 彼此独立,互不影响,可独立演化

  • 可两两结合使用

1. 保证安全通常需要解决三个问题

  1. 数据本身的机密性:数据有没有被窃听造成信息泄漏,即电子世界的盗窃行为

  2. 数据本身的正确性:数据有没有被篡改造成数据破坏,即电子世界的侵略行为

  3. 数据来源和目的的合法性:数据有没有被伪造或诱拐,即电子世界的欺诈行为

如果这三个问题都得到解决,那么就解决了安全通信的终极问题:数据的不可抵赖性

2. 针对这几个问题,通常有两种应对方案

  1. 保密:认为所有的一切都是不安全的,因此需要进行加密和解密

  2. 验证:包括验证数据的正确性和合法性:

    1. 数据的正确性:在正文之外包含额外的信息,这种信息通常是将正文作为某个算法的输入后产生的输出,因此需要发明保证两个不同的输入不会产生相同输出的算法

    2. 数据的合法性:认为数据来源和目的具有某种凭据才是可信任的,因此出现颁发凭据和验证凭据的安全机制

如前所述,这几种方式可以结合使用

3. 保密世界观中的加密与解密

3.1 概念

  • 加密:改变数据本来的意思

  • 解密:还原数据本来的意思

  • 密钥:加密解密时所使用的参数,可以是一个整数或一串字符,或其它任何加解密方法所能理解的形式

  • 对称密钥:加密和解密使用同一个密钥

  • 非对称密钥:加密和解密使用两个密钥,其中任何一个密钥加密的数据都能且都只能被另一个密钥解开

  • 公钥私钥:非对称密钥的一种实践形式,两个密钥中公开的人人皆知的那个称为公钥,保密的那个称为私钥

  • PKI:公钥基础设施,泛指使用了非对称加密的平台、工具等

3.2 常见实践

  • 公钥私钥:

  1. A将数据用自己的私钥加密,发送给B,C,D

  2. B,C,D用A的公钥解密

  3. B,C,D将各自的响应用A的公钥加密,发送给A

  4. A将返回的响应用自己的私钥解密

  • 用公钥加密对称密钥:

  1. A用对称密钥将数据加密,然后用自己的私钥把对称密钥本身加密,一起发送给B,C,D

  2. B, C, D用A的公钥解密对称密钥

  3. B, C, D用解密后的对称密钥继续解密,得到原始数据

  4. ...

4. 验证世界观中的数据正确性

4.1 概念

  • 消息摘要(Message Digest):一种算法,对正文进行计算后得到比较精简(通常是固定长度)的一小段摘要数据,该算法保证不会有两个不同的输入能够产生相同的输出,从而在保证摘要正确的前提下可验证数据的正确性,即没有被篡改;一个较为普遍的算法是MD5

  • 数字签名:消息摘要的一种应用,通常算法的输入涉及了通信方的身份标识,如私钥信息等,接收方收到数字签名后,可结合使用对方的公钥,消息摘要算法等验证消息的发送方确实是所声称的实体,比如,如果没有私钥就不可能计算出那个签名

4.2 常见实践

  • 正文明文,摘要加密

  1. A将正文产生的摘要加密(可使用前述加密实践中的任何一种),然后将正文明文和摘要密文一起发送给B,C,D

  2. B,C,D解密摘要,然后重新根据正文明文计算摘要,判断两个摘要是否相同,用以验证数据的正确性

  • 正文和摘要都加密

  1. 即将“加密”和“验证”完全正交的配合使用

5. 验证世界观中的数据合法性

5.1 概念

  • 证书:即电子世界中的身份证,通信开始前它可能是硬盘上的一个文件,或文件中的一段,通信开始后,它可能被传输到网络上到通信的另一方,用于告知对方自己的身份信息;这些身份信息具有一定的标准格式,即证书格式标准,常见的有X.509等,通常包括:公司名称,地址等,当然还有公钥,发证机关标识;是的,就像现实世界中的身份证,学生证,军人证一样,电子证书也需要发证机关,这就是CA

  • CA:证书颁发机构,类似现实世界中的公安局、学生处、军队等,但在电子世界中,这是一个逻辑上的概念,用于指称一切可以接受证书申请,可以签署证书,可以吊销证书的实体,因此CA可以是:

    1,某座写字楼里的几十人的公司,他们处理客户的书面证书申请,核实他们的信息,签署证书,将证书以电子邮件附件或网址的形式告知客户供他们下载,并收取一定的费用;该公司通常具有较高的公信力,有较多的交易方信任他们签署的证书

    2,某个软件,如Windows证书服务,如OpenSSL,它可以交互的提问和接受你的证书申请,并签署之,最后产生一个硬盘文件给你,你可以在信任该证书的范围内使用,如Windows域用户的各种安全服务

     

  • 信任:就像银行信任客户的身份证,不信任你的QQ号码一样,通信方可以有选择的信任某些证书,确切的说,信任某些CA颁发的证书,就像银行信任公安局颁发的身份证,不信任腾讯颁发的QQ号一样

  • 证书库:通信方在得到对方的证书后,需要验证是否在信任范围内,这个信任范围由信任的证书库给出,这个证书库通常是一个或多个硬盘文件,里面包含了信任的证书信息;证书库的建立,通常由使用的通信软件完成,如IE,它可以在你首次碰到一个证书时,询问你是否信任之,若选择始终信任,它将该证书导入到证书库中,下次便不再提问

  • CA层次:由于众多客户,分布可能极广,几个少数的CA显然不能满足全世界的交易需求,因此就像公安部、公安厅、公安局、派出所一样,CA也以层次化的形式存在,最顶层的CA称为根CA

  • CA层次与信任关系:就像你信任了公安部,也顺便信任了公安局、派出所一样(这个例子不太恰当,呵呵),信任了根CA(签署的证书),便信任了该根CA所有的下属分支(签署的证书)

5.2 实践

证书的应用,可以说是结合了几乎所有电子安全手段的一种应用,既有加密解密,又有正确性验证和身份验证 

  1. CA签发证书时,在证书上包含了自己的数字签名,从而保证了证书的不可伪造性

  2. 证书上包含了证书拥有者的公钥信息,接收方可以使用该信息解密正文数据和加密响应

 

二、SSL

SSL比较好理解,就是使用了PKI的一种应用,完全可以google之:

SSL(Secure Socket Layer)是一个介于HTTP协议与TCP之间的一个可选层,其位置大致如下:

---------
| HTTP/FTP etc.|
---------
| SSL          |
---------
| TCP          |
---------
| IP           |
---------

SSL层: 借助下层协议的的信道安全的协商出一份加密密钥,并用此密钥来加密HTTP请求。
TCP层:与web server的443端口建立连接,传递SSL处理后的数据。

接收端与此过程相反。

SSL在TCP之上建立了一个加密通道,通过这一层的数据经过了加密,因此达到保密的效果。

SSL协议分为两部分:Handshake Protocol和Record Protocol,。其中Handshake Protocol用来协商密钥,协议的大部分内容就是通信双方如何
利用它来安全的协商出一份密钥。 Record Protocol则定义了传输的格式。

Client Authentication

SSL是保护消费者的, 通常只需要服务器出示证书就行了, 证明消费者连接的确实是某个银行网站, 而不是被诱拐了; 如果网站担心被不是自己用户的人骗取信息,那就有可能要求客户端也出示证书,这就是"Client Authentication". 

某 些客户端工具提供了选项, 允许你设置某个网站是否需要Client Authentication, 如果需要的话, 就继续指定你自己的证书; 注意这个选项一定要与网站一致; 如果网站不要求Client Authentication, 而你设置了Client Authentication, 有可能无法建立SSL连接

 

三、Xml Security

1,概念

Xml Security也是PKI的一种应用, 有两种含义

a,Xml文件本身的安全;或曰,跟其它格式的文件的安全有什么不一样呢?毕竟加密或签名算法都可以用在任何类型的数据上,完全可以将Xml文件看作普通数据文件来加密签名;是的,这是对的,不过可以对Xml文件提供更灵活的加密和签名方式:就是只加密或签名Xml文件的某一部分或某几部分,这些部分通过标准的XPath语法来指定

b,以Xml格式表示的安全数据;加密和签名后的数据总要在另外的时间或地点进行解密和验证,如何表示解密和验证需要的信息?比方说具体到PKI,如何将公钥,密文,数字签名等有机联系在一起存储和传输?之前可能各有各的方法,而Xml Security建立了一些规范,可以将安全相关数据用自描述的Xml格式来存放,毕竟任何二进制数据都可以通过Base64之类的算法转换为文本

2,签名

就是用私钥加密后的摘要

3,Canonicalization: C14N

即Xml 的规范化算法; 不同的Xml字符串可能表示完全相同的含义,比方说它们只是属性的排列顺序不一致;这种情况会发生在Xml经过一些解析器后重新输出时; 大部分情况下这没什么问题,但它会破坏数字签名,因为目前的签名算法都是基于文本,而不是语义;于是有了规范化算法,用于签名前和校验签名前规范一下格式

规范化在其它领域的应用,如URI Scheme.  In some cases, data that could be represented by an unreserved character may appear escaped; for example, some of the unreserved "mark" characters are automatically escaped by some systems.  If the given URI scheme defines a canonicalization algorithm, then unreserved characters may be unescaped according to that algorithm. For example, "%7e" is sometimes used instead of "~" in an http URL path, but the two are equivalent for an http URL. Another Example: "/a/../b" must be canonicalized as "/b"

4,Transform

转换,通常用于剔除会干扰签名或干扰签名验证的元素

5,Kerberos and Passport

密钥只在服务伙伴之间共享,有可能是通过带外交换;客户端(用户)永远不知道密钥(所谓带外交换就是不是实时的通过软件来交换,而是预先就换好了,比如说约在某个咖啡馆见面,各带一个U盘互相交换 )

6,相关应用, 及顺便回答为什么SSL之外还需要Xml Security

WS-Security便是Xml Security的一种应用, 参见<<WS-Security Interoperability Issues>>, <<WS-Security Interoperability Workarounds>>

不同于SSL是传输层的协议, Xml Security是应用层的协议, 至少存在以下两种情况, 传输层的安全无法方便的满足我们的需要

a, 有选择性的对部分通信数据进行安全保护时

b, SSO单点登录或需要将某一方的身份信息沿着通信链传递时; SSL是一种传输层的端到端的通信, 你的应用程序实际上对客户的身份一无所知, 也拿不到客户身份的凭证, 当你的应用程序需要与第三方应用交户以完成业务功能, 而第三方需要你的客户的身份证明时, 你便无法出示; 应用层的安全协议如Xml Security则可以解决这个问题, 你完全可以路由客户请求至第三方应用

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值