1 / 13
文档名称:

第二章.对SSL握手协议的研究(part).docx

格式:docx   大小:96KB   页数:13页
下载后只包含 1 个 DOCX 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

第二章.对SSL握手协议的研究(part).docx

上传人:pppccc8 2022/7/10 文件大小:96 KB

下载得到文件列表

第二章.对SSL握手协议的研究(part).docx

相关文档

文档介绍

文档介绍:(part")
SL握手过程即完成身份认证和建立加密通道的过程,分为四种。
——Full Handshake :全流程握手,C/S双方从无到有建立SSL连接;
Re sum session Handshression_method;
} ServerHello;
选择SSL通信,当底层连接建立好后会触发或调用SSL的初始化和握手,握手 由Clinet端发出Client Hello消息开始。
Client Hello 消息
Protocolversion:消息中协议版本是两个byte长度分别表示主次版本,如若在 JAVA中初始化
SSLContext时候选择了 SSLv3则主版本号是3,次版本号为0, 若选择了 TLSvl (TLSvl相当SSLv3的升级版)则主版本号是3,次版本号是1。 Random:随机数结构,由两部分组成,
c代码□
struct {
uint32 gmt_unix_time;
opaque random_bytes[28];
} Random;
一个4字节的系统当前时间,一个28位长的随机数,在后面计算所有消息的摘 要或计算主密钥时候会用到。(疑惑1 :在java的JSSE实现版本中貌似只有 一个4字节的系统当前时间,没有28位的随机数,奇怪了,怎么和非JSSE版 本实现正确握手的啊…)
Session ID : SSL会话ID标识一次会话用,可以重用。会话ID都是由服务器 分配因此在全流程握手中client hello消息中的session id是空,用字节0 表示。
CiphersuitList:密钥套件列表,列表中包含了 Client端支持的所有密钥套件。 一个密钥套件定义了一个密钥规格,其中描述如下内容:密钥交换算法,是否 出口,对称加密算法,支持的最高对称密钥位数,MAC算法(或摘要算法)。一个 ciphersuit用2个字节表示,下面列举JSSE支持的几个套件:
SSL_RSA_WITH_RC4_128_MD5 = 0x0004 /*非对称加密算法或密钥交换算法为 RSA,采甬高强度128位对称加密算法RC4,摘要或MAC算法为MD5,不支持出口
SSL_DHE_RSA_EXP0RT_WITH_DES40_CBC_SHA = 0x0014 /* 非对称加密算法或密钥 交换算法支持RSA和DH,采用40位对称加密算法DES,摘要或MAC算法为SHA, 可以出口 */
关于出口,美帝国主义要求要用他们的加密算法比如JDK中的JSSE,对称加密 密钥长度不能超过40,非对称密钥长度不超过512,在国内只能使用这种低强度 的玩意,***裸的技术封锁啊。
这个加密套件列表长度不超过128Ko
CompressionMethods:客户端支持的压缩算法列表,填0表示空,JSSE会有默 认算法。
Client Hello承载着这些信息被发送到Server端。
• Server Hello 阶段
Server Hello 消息
Server Hello
Server Certificate *
Server Key Exchange *
Client Certificate Request *
Server Hello Done
Optional or situation-dependent messages
Protocol Version :
服务端服务器拿出消息中的版本号,再看看自己支持的版本列表,选个两者都支 持的最高版本号定为这次协商出来的SSL协议使用的版本。比如C端发过来ssl 3. 0,而S端发现自己只支持ssl2. 0, server就会选择SSL2. 0作为这次协商版 本,反之若Server支持SSL2. 0, SSL3. 0, TLS1. 0,选两者都支持的最高版本 SSL3. 0o
Random :产生的方式和Client Hello中相同。
Session ID:服务端检测到传过来的session ID是空或者检索session列表没 有发现传过来的session id就会新建一个,JSSE中Session ID是取系统时间 的前32位(系统时间是long类型64位,只取其中32位)。
Ciphersuit : server端收到密钥套件列表后,将密钥套件一个个拿出来,经过 几道检查,选择第一个通过检查的套件。JSSE实现的SSL协议中的检查项目有 如下几项:检查服务端是否也支持这个套件,检查这个套件是不是被禁用(的确 是支持某个套件,但出于某些原因被禁用了),检查套件是否符合出口限制,比 如在国内加密强度128或256位的对称密钥在检查时候就会被认为不合法pass 掉;若serve