`
darrenzhu
  • 浏览: 804144 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

SSL 与 数字证书 的基本概念和工作原理

阅读更多
SSL 与 数字证书 的基本概念和工作原理
http://www.linuxde.net/2012/03/8301.html

SSL握手协议的目的是或最终结果是让客户端和服务器拥有一个共同的密钥,握手协议本身是基于非对称加密机制的,之后就使用共同的密钥基于对称加密机制进行信息交换。



http://www.ibm.com/developerworks/cn/websphere/techjournal/0211_yusuf/yusuf.html
安全性概念
在深入研究 SSL 本身之前,考虑一下网络通信面临的关键的安全性问题以及适当的解决方案,这是很有帮助的。关键的安全性问题包括:
窃eavesdrop听
篡改
模仿

窃eavesdrop听
当未知的人知道了正在通信的双方之间所传递的消息时,就发生了窃eavesdrop听。换言之,您需要阻止未知的人阅读您的消息。为了保护信息免遭窃eavesdrop听,应用程序必须在发送信息前先对其加密,将它从明文转换为无法读懂的密文。接着,接收应用程序一接收到消息就对其解密,将它从密文转换回明文。其原理只不过是窃eavesdrop听者将不知道如何对消息解密。加密过程或解密过程一般被称作密码术,且依赖于数学算法。
加密算法通过在消息上执行一连串的数学操作从而对消息进行加密或解密,转换的是消息的外观而非其内容。算法被称作流密码(stream cipher)还是块密码(block cipher),取决于算法转换消息时是一次一个字节还是一次一个块(8 个字节)。加密算法是针对特定用例根据提供给算法的密钥创建的。密钥一般是 0 或 1 的一个随机序列;其大小区分了加密算法的能力。
加密算法通过以下两种方式之一使用密钥:
对称算法要求消息的发送方和接收方使用同一个秘钥;这通常被称作秘钥密码术。
非对称算法使用不同的密钥对消息进行加密或解密;其中一个秘钥必须是秘密的,而另一个密钥通常是公开的。在这种情况下,发送方可能会使用接收方的公钥对消息加密,但是只有接收方拥有用于对消息解密的秘钥。这种涉及到私钥和公钥对的方式也被称作公钥密码术。
对称算法的性能比非对称算法的性能快,但是在参与者之间安全地传递秘钥会引起分发问题。首先,您如何秘密传递密钥,其次,您如何将该方式扩展到多个发送方/接收方对。使用私钥和公钥对能缓解分发问题,因为接收方针对所有发送方发布了一个用来对信息进行加密的公钥,并且用一个私钥(秘钥)对接收到的所有信息解密。您不能对公钥进行逆向工程以获取私钥,而且只有接收方知道私钥。然而,这是以增加的性能开销为代价的。

篡改
篡改包括某人拦截一条消息并更改它。消息摘要解决了篡改问题,消息摘要是消息内容的定长数字表示。消息摘要(又称消息认证代码)是用散列函数计算的。这个过程只是单向的,意味着将函数反向并找到对应于摘要的消息是不可能的,因为该过程以这样一种方式实现,所以找到散列到同一摘要的两条不同消息在计算上难以实现。
一旦计算出了摘要,它就与消息一起被传送。接着,接收方对接收到的消息调用同一个散列函数,并将生成的摘要与接收到的摘要进行比较。如果这两个摘要是相同的,则消息在途中未被篡改。显然,要让这个过程生效,发送方和接收方必须在传送开始前就即将使用的散列函数达成一致。

模仿
当除实际指定的发送方之外的某个人发送消息时,就发生了模仿。要解决这个问题,您需要验证消息实际上是由发送方发送的,还需要认证正在与您交换信息的伙伴。
数字签名用于验证消息是否真正由发送方发送;数字签名结合了消息摘要和公钥密码术的使用。这个过程包括发送方生成消息摘要,然后用其私钥对摘要加密以创建数字签名。然后,接收方使用发送方的公钥对消息解密,确认消息确实是由发送方发送的。将这个摘要与接收方生成的摘要进行比较,进一步确认消息自从被签署就未被修改过。

但是,接收方怎么知道可以信任公钥呢?这个问题通常被称作中间人(man-in-the-middle)攻击,发生在未知的第三方拦截发送方的公钥并用它来交换自己的公钥的时候。于是,伪代理(rogue agent)模仿原发送方并签署被拦截的消息。因为接收方能够对发送的消息解密,所以接收方不知道它正在与一个伪用户进行交互。现在,我们要谈论的问题是,如何认证您正在与之交换信息的伙伴。
通过认证一个公钥属于一个命名的实体,数字证书解决了这个问题。数字证书一般是由名为认证中心(Certification Authority,CA)的可信的第三方签发的。CA 每生成一张数字证书,将需要收费,数字证书包括以下内容:
所有者的公钥
所有者的专有名称
签发证书的 CA 的专有名称
证书开始生效的日期
证书过期日期
版本号
序列号

在签发证书前,认证中心对请求方进行适当的背景检查,以验证该请求方就是它自己所声称的请求方。CA 签发的所有证书都是由 CA 数字签署的,可以使用 CA 证书(它包含 CA 的公钥)对其进行验证。发送方和接收方之间的交换现在采取额外的一个验证步骤。发送方发送由 CA 签发的数字证书,而不仅仅是向接收方发送其公钥。接收方用 CA 的证书来验证发送方的证书,确定证书中所包含的公钥确实属于所有者。在一张数字证书的生命期中,正在签发的 CA 可能会决定该证书不再可信。这样的证书被发布到证书撤销列表(Certificate Revocation List)中,发送方和接收方都可以根据该列表检查接收到的证书。


安全套接字层
SSL 协议使用秘钥加密和公钥加密、数字签名以及数字证书的概念在各方之间建立一个安全连接,并且用这些概念使得在不安全网络上传输安全数据更容易。

握手协议 SSL 是由 Netscape(请参阅 SSL Protocol)设计的,它定义了下列参与者:
SSL 客户机:开始 SSL 连接的调用应用程序
SSL 服务器:响应应用程序
SSL 客户机和 SSL 服务器进行交互以建立一个安全连接。这个交互被称作 SSL 握手:
SSL 客户机开始对话并发送诸如 SSL 版本之类的信息,同时还发送加密算法以及它所支持的散列函数。
SSL 服务器用加密算法以及要使用的散列函数来表示响应。这是从客户机提供的列表中选择的。SSL 服务器还发送一个会话标识、一个随机字节字符串以及它的数字证书。服务器可以包括对客户机的数字证书的请求,这一点是可选的。
通过验证所提供的数字证书上的数字签名,SSL 客户机使用正进行签发的认证中心的证书来验证 SSL 服务器以及数字证书本身。可以根据证书撤销列表检查服务器的证书,这一点是可选的。
如果通过验证,SSL 客户机就发送秘钥,该秘钥将被用于对进一步的交换加密。秘钥使用从服务器的数字证书处获取的 SSL 服务器的公钥对自己进行加密。另外,如果服务器请求数字证书的话,客户机可能会发送它的数字证书。
SSL 服务器使用它的私钥对秘钥解密并存储它。同样地,它使用正在进行签发的认证中心以及可能相关联的证书撤销列表来认证客户机,这是可选的。只有当上面的第 2 步中的服务器请求客户机的证书时,才会发生这一步骤。
SSL 客户机发送一条用秘钥加密的消息,表示 SSL 握手中的客户机部分完成。
SSL 服务器用一条同样用秘钥加密的消息作出响应,表示握手中的服务器部分完成。
现在就建立了一个安全连接,会话其余部分的通信是用秘钥加密的。

为了使 SSL 会话中所使用的加密算法和散列函数的规范更容易,这些算法被分组到各个密码套件(CipherSuite)中。密码套件定义了:
SSL 握手过程中的密钥交换和认证算法
用于保护数据的加密算法
用于生成消息摘要的散列函数
加密算法和散列函数被进一步分组到密码规范中。
WebSphere MQ 5.3 仅支持 RSA 密钥交换和认证算法。下表中列出了一些支持的密码规范的详细信息:
WebSphere MQ 5.3 支持的密码规范
密码规范名称 散列算法 加密算法 加密位数
NULL_MD5 MD5 无 0
NULL_SHA SHA 无 0
RC4_MD5_EXPORT MD5 RC4(流密码) 40
RC4_MD5_US MD5 RC4 128
RC4_SHA_US SHA RC4 128
RC2_MD5_EXPORT MD5 RC2(块密码) 40
DES_SHA_EXPORT SHA DES(块密码) 56
RC4_56_SHA_EXPORT1024 SHA RC4 56
DES_SHA_EXPORT1024 SHA DES 56
TRIPLE_DES_SHA_US3 SHA 3DES(块密码) 168
请注意:
RC2 是一个块密码算法。它按照块(8 字节长度)对数据加密,而且还支持长度为 40 位、64 位和 128 位的密钥。RC4 是一个流密码算法,它对数据的每个字节进行操作;和 RC2 一样,它支持长度为 40 位、64 位和 128 位的密钥。RC2 和 RC4 都是由 RSA Data Security Inc. 制定的。
DES,即美国国家数据加密标准(the United States Data Encryption Standard),是一个块密码算法,块长 8 字节,密钥长 56 位。Triple DES 是 DES 的一个变体,密钥长 168 位。
就性能而言,从最快的到最慢的依次为:RC4、DES、RC2、TripleDES。
SHA 代表安全散列算法(Secure Hash Algorithm),MD5 代表消息摘要版本 5(Message Digest Version 5)。在 MD5 和 SHA-1 之间作选择是安全性和性能之间的权衡。与 MD5 算法的 128 位输出相比,SHA 算法更安全,它产生 160 位输出。但是,MD5 算法在计算消息摘要方面要更快一些。
SSL_RSA_WITH_RC4_SHA_US 是一个支持 MQ 的密码套件的示例。它规定了 RSA 密钥交换和认证算法的使用,还规定了 RC4_SHA_US 密码规范。
分享到:
评论

相关推荐

    SSL工作原理详解

    SSL的工作原理涉及到多个关键概念和技术。 首先,SSL的核心在于加密,它使用了公钥加密算法,如RSA,这是一种非对称加密技术。在公钥密码系统中,每个用户有一对密钥:公钥和私钥。公钥是可以公开的,用于加密数据...

    PKI/CA与数字证书技术大全

    描述中的"PKI相关知识"提到了另一本书"PKI原理与技术",这表明资料包可能包含了PKI的基础理论、实施方法和实际应用。通过"汇总一起",我们可以推测这份资料集可能是对PKI知识的综合整理,便于学习者系统地了解这一...

    数字证书原理,公钥私钥加密原理

    1. SSL/TLS协议:SSL(安全套接层)和TLS(传输层安全性)是用于在互联网上进行安全通信的协议,它们利用数字证书和公钥私钥技术为网站和用户之间的数据传输提供加密和身份验证。 2. 数字签名:利用私钥进行签名,...

    SSL证书原理及格式1.21

    * SSL证书是用于验证服务器身份的数字证书 * SSL证书用于在客户端和服务端之间进行身份验证和加密通信 * SSL证书由可信的证书颁发机构(CA)签发 二、SSL证书的生成和使用流程 * 生成密钥对文件(私钥和公钥) * ...

    SSL.gz_ssl_ssl java_ssl证书

    在学习和使用这些文件时,开发者应该理解SSL/TLS的基本原理,包括公钥和私钥的概念,以及握手协议的工作流程。同时,要了解如何处理证书验证问题,如自签名证书的接受,以及处理可能出现的安全异常。通过实践,...

    数字证书根证书DEMO

    本文将深入探讨数字证书根证书的概念、功能、工作原理以及其在实际应用中的重要性。 数字证书是一种电子文档,由权威的第三方机构——证书颁发机构(CA,Certificate Authority)签发,用于验证网络实体(如个人、...

    公钥私钥加密解密数字证书数字签名详解.docx

    ### 公钥私钥加密解密、数字证书与数字签名详解 #### 一、基础知识概述 在探讨公钥私钥加密解密、数字证书以及数字签名之前,我们需要先理解几个核心概念。 **1. 密钥对:** - 在非对称加密技术中,存在两种密钥...

    SSL工作原理详解说明

    综上所述,SSL工作原理的核心是通过公钥/私钥加密技术,结合数字签名和证书机制,确保了网络通信的机密性、完整性和用户身份的真实性。这一技术对于保障在线交易、电子邮件等敏感信息的安全至关重要。

    数字证书后的配置文件

    在"数字证书后的配置文件"这个主题中,我们将深入探讨数字证书的基本概念、配置过程以及涉及到的相关配置文件,如`.properties`和Spring配置文件。 首先,数字证书是公钥基础设施(PKI)的一部分,它包含了拥有者的...

    数字证书在网络安全中的应用分析.pdf

    【数字证书的工作原理】 数字证书的核心是公钥加密机制。每个用户拥有两把密钥:一把公钥和一把私钥。公钥用于加密信息,而私钥用于解密。当用户需要发送安全信息时,会使用接收方的公钥进行加密,只有持有相应私钥...

    Java 数字签名、数字证书生成源码.7z

    Java 数字签名与数字证书是网络安全领域中的重要概念,它们在确保数据的完整性和来源的可信性方面扮演着关键角色。在这个"Java 数字签名、数字证书生成源码"压缩包中,包含了实现这些功能的源代码,对于理解Java安全...

    ssl服务器证书(包含ca证书和服务器证书客户端证书)

    下面我们将深入探讨这些概念以及它们的工作原理。 首先,SSL服务器证书是网站进行HTTPS通信的基础。当用户访问一个使用SSL的网站时,浏览器会与服务器进行握手过程,这个过程中就会用到SSL证书。证书包含了服务器的...

    SSL中文资料汇总.rar

    SSL(Secure Sockets Layer,安全套接层)是...通过这些资源,你不仅可以了解SSL的基本概念和工作原理,还能掌握OpenSSL的使用技巧,以及如何在实际项目中配置和实现SSL,对于提升网络安全和应用开发技能大有裨益。

    SSL and TLS Theory and Practice.pdf

    通过以上内容的介绍,可以看出《SSL与TLS理论与实践》不仅涵盖了SSL与TLS的基本概念和技术细节,还深入探讨了这些协议的安全性和应用情况,对于从事信息安全领域工作的专业人士来说,是一本非常有价值的参考书籍。

    [JAVA加解密]数字证书、Https协议及剩余项目代码

    总的来说,这个主题涵盖了Java中处理加密和安全通信的关键技术,包括数字证书、HTTPS协议以及与之相关的类和接口。理解和熟练运用这些知识,将有助于构建安全、可靠的网络应用。在实际项目中,开发者需要根据具体...

    netty实现SSL/TSL双向加密认证示例

    通过对这些代码的分析和学习,可以更好地理解 Netty 中的 SSL/TLS 双向认证工作原理。 总结,Netty 提供了强大而灵活的工具来实现 SSL/TLS 安全通信,包括双向认证。通过正确配置 `SslContext`、处理通道处理器和...

    SSL介绍与Java实例

    6. **证书链和密钥对**: 为了实现SSL,服务器通常需要一个包含公钥的数字证书,该证书由权威的CA签名。客户端则需要拥有服务器的公钥,以便在建立连接时进行加密。同时,服务器可能还需要一个私钥来解密客户端的响应...

    LDAP的概念和原理

    LDAP 提供了在 SSL 和 TLS 安全通道基础上进行的身份认证,包括数字证书的认证。LDAP 的默认端口号是 389,636。 LDAP 是一种轻量级的目录访问协议,提供了快速的目录查询和检索功能,广泛应用于企业查询和身份认证...

    ssl and tls essentials

    本文将详细介绍SSL与TLS的基本概念、工作原理、发展历程以及在实际应用中的配置方法。 #### 二、SSL概述 **1. 定义** - SSL协议是一种用于提供互联网上数据加密的技术标准,由网景公司(Netscape)于1994年首次...

Global site tag (gtag.js) - Google Analytics