SSL
协议的握手和通讯
为了便于更好的认识和理解
SSL
协议,这里
着重介绍
SSL
协议的握手协议。
SSL
协
议既用到了公钥加密技术又用到了对称加密技术,对称加密技术虽然比公钥加密技术的速度快,可是公钥加密技术提供了更好的身份认证技术。
SSL
的握手协议非常有效的让客户和服务器之间完成相互之间的身份认证,其主要过程如下:
①
客户端的浏览器向服务器传送客户端
SSL
协议的版本号,加密算法的种类,产生的随机数,以及其他服务器和客户端之间通讯所需要的各种信息。
②
服务器向客户端传送
SSL
协议的版本号,加密算法的种类,随机数以及其他相关信息,同时服务器还将向客户端传送自己的证书。
③
客户利用服务器传过来的
信息验证服务器的合法性,服务器的合法性包括:证书是否过期,发行服务器证书的
CA
是否可靠,
发行者证书的公钥能否正确解开服务器证书的
“
发行者的数字签名
”
,
服务器证书上的域名是否和服务器的实际域名相匹配。如果合法性验证没有通过,通讯将断开;如果合法性验证通过,将继续进行第四步。
④
用户端随机产生一个用于后面通讯的
“
对
称密码
”
,然后用服务器的公钥(服务器的公钥从步骤
②
中
的服务器的证书中获得)对其加密,然后将加密后的
“
预主密码
”
传
给服务器。
⑤
如果服务器要求客户的身份认证(在握手过程中为可选),用户可以建立一个随机数然后对其进行数据签名,将这个含有签名的随机
数和客户自己的证书以及加密过的
“
预主密码
”
一
起传给服务器。
⑥
如果服务器要求客户的身份认证,服务器必须检验客户证书和签名随机数的合法性,具体的合法性验证过程包括:客户的证书使用日
期是否有效,为客户提供证书的
CA
是否可靠,发行
CA
的
公钥能否正确解开客户证书的发行
CA
的数字签名,检查客户的证书是否在证书废止列表(
CRL
)
中。检验如果没有通过,通讯立刻中断;如果验证通过,服务器将用自己的私钥解开加密的
“
预主密码
”
,
然后执行一系列步骤来产生主通讯密码(客户端也将通过同样的方法产生相同的主通讯密码)。
⑦
服务器和客户端用相同的主密码即
“
通
话密码
”
,一个对称密钥用于
SSL
协议
的安全数据通讯的加解密通讯。同时在
SSL
通讯过程中还要完成数据通讯的完整性,防止数据通讯
中的任何变化。
⑧
客
户端向服务器端发出信息,指明后面的数据通讯将使用的步骤
⑦
中的主密码为对称密钥,同时通知服务器
客户端的握手过程结束。
⑨
服
务器向客户端发出信息,指明后面的数据通讯将使用的步骤
⑦
中的主密码为对称密钥,同时通知客户端服
务器端的握手过程结束。
⑩
SSL
的握手部分结束,
SSL
安全通道的数据通讯开始,客户和服务
器开始使用相同的对称密钥进行数据通讯,同时进行通讯完整性的检验。
双向认证
SSL
协
议的具体过程
①
浏览器发送一个连接请求给安全服务器。
②
服务器将自己的证书,以及同证书相关的信息发送给客户浏览器。
③
客户浏览器检查服务器送过来的证书是否是由自己信赖的
CA
中心所签发的。如果是,就继续执行协议;如果不是,客户浏览器就给客户一个警告消息:警告客户这个证书不是可以信赖
的,询问客户是否需要继续。
④
接着客户浏览器比较证书里的消息,例如域名和公钥,与服务器刚刚发送的相关消息是否一致,如果是一致的,客户浏览器认可这个
服务器的合法身份。
⑤
服务器要求客户发送客户自己的证书。收到后,服务器验证客户的证书,如果没有通过验证,拒绝连接;如果通过验证,服务器获得
用户的公钥。
⑥
客户浏览器告诉服务器自己所能够支持的通讯对称密码方案。
⑦
服务器从客户发送过来的密码方案
中,选择一种加密程度最高的密码方案,用客户的公钥加过密后通知浏览器。
⑧
浏览器针对这个密码方案,选择一个通话密钥,接着用服务器的公钥
加过密后发送给服务器。
⑨
服务器接收到浏览器送过来的消息,用自己的私钥解密,获得通话密钥。
⑩
服务器、浏览器接下来的通讯都是用
对称密码方案,对称密钥是加过密的。
上面所述的是双向认证
SSL
协议的具体通讯过程,这种情况要求服务器和用户双方都有证书。单向认证
SSL
协
议不需要客户拥有
CA
证书,具体的过程相对于上面的步骤,只需将服务器端验证客户证书的过程去
掉,以及在协商对称密码方案,对称通话密钥时,服务器发送给客户的是没有加过密的(这并不影响
SSL
过
程的安全性)密码方案。
这样,双方具体的通讯内容,就是加过密的数据,如果有第三方攻击,获得的
只是加密的数据,第三方要获得有用的信息,就需要对加密的数据进行解密,这时候的安全就依赖于密码方案的安全。而幸运的是,目前所用的密码方案,只要通讯
密钥长度足够的长,就足够的安全。这也是我们强调要求使用
128
位加密通讯的原因。
证 书 各 部 分 的 含 义
Version
证
书版本号,不同版本的证书格式不同
Serial Number
序列号,同一身份验证机
构签发的证书序列号唯一
Algorithm Identifier
签名算法,包括必要
的参数
Issuer
身份验证机构的标识信息
Period
of Validity
有效期
Subject
证书持有
人的标识信息
Subject’s Public Key
证书持有人的公钥
Signature
身份验证机构对证书的签名
证书的格式
认
证中心所发放的证书均遵循
X.509 V3
标准,其基本格式如下:
证书版本号(
Certificate Format Version
)
含义:用来指定证书格式采用的
X.509
版本号。
证书序列号(
Certificate Serial Number
)
含义:用来指定证书的唯一序列号,以标识
CA
发出的所有公钥证
书。
签名(
Signature
)
算法标识(
Algorithm Identifier
)
含义:用来指定
CA
签发证书所用的签名算法。
签发此证书的
CA
名称(
Issuer
)
含义:用来指定签发证书的
CA
的
X.500
唯一名称(
DN
,
Distinguished Name
)。
证书有效期(
Validity
Period
)
起始日期(
notBefore
)
终止日期(
notAfter
)
含
义:用来指定证书起始日期和终止日期。
用户名称(
Subject
)
含义:用来指定证书用户的
X.500
唯一名称(
DN
,
Distinguished
Name
)。
用户公钥信息(
Subject
Public Key Information
)
算法(
algorithm
)
算法标识(
Algorithm
Identifier
)
用户公钥(
subject
Public
Key
)
含义:用来标识公钥使用的算法,并包含公钥本身。
证书扩充
部分(扩展域)(
Extensions
)
含
义:用来指定额外信息。
X.509 V3
证书的扩充部分(扩展域)及实现方法如下:
CA
的公钥标识(
Authority
Key
Identifier
)
公钥标识(
SET
未使用)(
Key
Identifier
)
签发证书者证书的签发者的甄别名(
Certificate
Issuer
)
签发证书者证书的序列号(
Certificate Serial Number
)
X.509 V3
证书的扩充部分(扩展域)及实
现
CA
的公钥标识(
Authority
Key
Identifier
)
公钥标识(
SET
未使用)(
Key
Identifier
)
签发证书者证书的签发者的甄别名(
Certificat
签发证书者证
书的序列号(
Certificate Serial N
含义:
CA
签
名证书所用的密钥对的唯一标识用户的公钥标识(
Subject
Key
Identifier
)
含义:用来标识与证书中公钥相关的特定密钥进行解密。
证书中的公钥用途(
Key
Usage
)
含义:用来指定公钥用途。
用户的私钥有效期(
Private
Key
Usage
Period
)
起始日期(
Note
Before
)
终止日期(
Note
After
)
含义:用来指定用户签名私钥的起始日期和终止日期。
CA
承认的证
书政策列表(
Certificate Policies
)
含
义:用来指定用户证书所适用的政策,证书政策可由对象标识符表示。
用户的代用名(
Substitutional
Name
)
含义:用来指定用户的代用名。
CA
的代用名(
Issuer
Alt
Name
)
含义:用来指定
CA
的代用名。
基
本制约(
Basic
Constraints
)
含义:用来表明证书用户是最终用户还是
CA
。
在
SET
系统中有一些私有扩充部分(扩展域)
Hashed
Root
Key
含义:只在根证书中使用,用于证书更新时进行回溯。
证书类型(
Certificate
Type
)
含义:用来区别不同的实体。该项是必选的。
商户数据(
Merchant
Data
)
含义:包含支付网关需要的所有商户信息。
持卡人证书需求(
Card
Cert
Required
)
含义:显示支付网关是否支持与没有证书的持卡人进行交易。
SET
扩
展(
SETExtensions
)
含义:
列出支付网关支持的支付命令的
SET
信息扩展。
CRL
数
据定义版本(
Version
)
含义:显示
CRL
的版本号。
CRL
的签发者(
Issuer
)
含义:指明签发
CRL
的
CA
的
甄别名。
CRL
发布时间(
this
Update
)
预计下一个
CRL
更新时间(
Next
Update
)
撤销证书信息目录(
Revoked
Certificates
)
CRL
扩展(
CRL
Extension
)
CA
的公钥标识(
Authority
Key
Identifier
)
CRL
号(
CRL
Number
)
分享到:
相关推荐
不过,鉴于标题提到了“SSL协议与数字证书原理”,我可以从这两个方面展开详细的介绍,以满足您的要求。 SSL协议(安全套接层协议)是一种位于TCP/IP协议与各种应用层协议之间的安全协议,它最初是由网景(Netscape...
数字证书简介、SSL协议原理、数据安全传输是互联网安全领域的核心知识点。数字证书为互联网上的通信双方提供了身份验证机制,确保双方身份的真实性,防止数据在传输过程中被窃听、篡改和抵赖。SSL协议是当前广泛使用...
它通过加密技术确保通信内容不被窃听,同时通过数字证书验证通信双方的身份,防止伪装。SSL协议经历了三个版本,其中SSL 3.0是最广泛采用的版本。 在密码学基础方面,SSL协议依赖于加密算法,包括对称密钥加密和非...
以下是对数字证书原理和公钥私钥加密原理的详细解读。 数字证书是一种安全证书,用来证明某一实体(如个人、服务器或组织)的身份,它是由一个权威的认证机构(CA)签发的。数字证书包含的主要信息有证书拥有者的...
2. **服务器认证**:SSL协议利用数字证书验证服务器的身份,确保用户所访问的是真正的服务器而不是假冒服务器。 3. **消息完整性**:通过使用散列函数,SSL协议可以检查数据在传输过程中的完整性,确保数据未被篡改...
#### 三、SSL协议的工作原理 SSL协议分为两层:较低的SSL记录层和较高的SSL握手层。 1. **SSL记录层协议**:位于TCP/IP之上,主要负责将高层协议的数据封装、压缩、加密,并在接收端完成相反的过程。 2. **SSL...
### SSL协议与SET协议分析 #### 一、SSL协议详解 ##### 1.1 SSL协议概述 SSL(Secure Socket Layer)安全套接层协议是由Netscape公司在1994年设计并推出的加密协议,旨在为互联网上的数据传输提供安全保护。SSL...
8. **SSL/TLS协议**:PKI在Web安全中的应用,如HTTPS协议,通过数字证书实现服务器身份验证和数据传输加密。 9. **PKI应用案例**:例如电子邮件安全(S/MIME)、文件加密、代码签名、IPSec网络隧道等,展示PKI在...
### SSL中间人攻击原理与防范 #### 一、SSL协议分析 ##### 1.1 协议概述 ...综上所述,SSL中间人攻击是一种常见的网络安全威胁,通过对SSL协议和数字证书的理解,结合有效的防护措施,可以大大降低此类攻击的风险。
SSL(Secure Sockets Layer)和数字证书是网络安全领域的重要组成部分,它们主要用于确保...理解SSL的工作原理、如何生成和使用数字证书以及如何在Java中实现SSL连接,对于任何涉及网络安全的开发项目都是至关重要的。
本篇文章将深入探讨Android平台上的SSL证书验证原理,包括SSL证书交换流程、SSL握手与验证过程以及数字证书、公钥和密钥的管理。 #### 二、SSL证书交换流程 当Android应用尝试访问一个HTTPS站点时,会发起一个SSL...
三、SSL协议的简单原理 * 客户端发送支持的SSL/TLS协议版本和相关参数给服务端 * 服务端选择其中一个协议版本和相关参数,并发送给客户端 * 服务端发送自己的SSL证书给客户端 * 客户端使用可信CA的公钥解密SSL证书...
SSL(Secure Socket Layer)证书是一种数字证书,主要用于加密互联网通信,确保数据在传输过程中的完整性与机密性。它通过创建一个安全的加密连接,防止中间人攻击、数据篡改和身份伪造。当浏览器与服务器之间建立...
在本文中,我们将深入探讨SSL协议的核心概念、工作原理、主要组成部分以及其在现代网络安全中的作用。 一、SSL协议简介 SSL协议由Netscape Communications Corporation于1994年开发,旨在保护网络上用户的隐私和...
2. **确认性**:SSL协议强制服务器进行身份验证,通常通过数字证书来实现。这确保了用户与预期的服务器进行通信,防止中间人攻击。 3. **可靠性**:SSL协议提供消息完整性检查,通过MAC(消息验证码)机制确保数据...
通过证书机构颁发的数字证书,SSL可以验证服务器的身份,从而增强安全性。 #### 四、SSL的应用案例分析 以网上银行转账为例,用户登录银行网站进行交易时,需要经过多个安全步骤以确保数据安全。首先是账号密码的...
3. **认证性**:利用数字证书技术来验证客户端和服务器的身份,确保通信双方的真实性和合法性。 #### 三、SSL协议的体系结构 SSL协议位于TCP/IP协议模型的网络层和应用层之间,它使用TCP协议来提供可靠的安全服务...
Java SSL证书则是Java平台对SSL协议的支持,允许Java应用程序进行安全的网络通信。 在描述中提到的“简单的SSL实现”,可能是指在Java环境中建立SSL连接的一个简化流程,这通常包括创建SSLContext,初始化...
HTTPS不仅加密了通信内容,还通过数字证书确保了服务器的真实性,防止中间人攻击。 Java实现的HTTPS服务器和SSL服务器源码,可以帮助我们理解以下概念: 1. **Keytool**:Java提供的工具,用于生成和管理密钥对和...
### SSL协议详解 #### 密码学基础 **密码学**是信息安全领域的核心科学,它致力于研究如何将信息编码成看似无意义的形式,确保信息在传输过程中不被未授权者解读。这一领域主要包括以下几个概念: - **明文(plain...