- 1、本文档共8页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
HYPERLINK /blog/600816 第一章. 对SSL的基本概念和框架的介绍
第二章.对SSL握手协议的研究(part-1)
HYPERLINK /topic/603895 第三章.对SSL握手协议的研究(part-2)
第四章.对SSL握手协议细节和实现的介绍
第五章.对SSL记录协议细节和实现的介绍
第六章.对SSL的安全性分析
第七章.举例一种将usbkey融入java JSSE框架的解决方案
SL握手过程即完成身份认证和建立加密通道的过程,分为四种。
――Full Handshake : 全流程握手,C/S双方从无到有建立SSL连接;
――Resum session Handshake : C/S双方曾经建立过连接,但中途断了,SSL会话信息还有保留,只需要执行部分握手流程就可建立SSL连接;
――Server Re-negotiation Handshake : 已经建立了SSL连接,但server端为了某些原因(比如安全性)要求重新对密钥进行协商,也只需要执行部分握手流程;
――Client Re-negotiation Handshake : 已经建立SSL连接,但client端为了某些原因要求重新协商,只需执行部分握手流程。
Full Handshake 这里主要介绍全流程握手,握手步骤如下图所示,其他的握手过程都属于全流程的子集。SSL握手协议总共有10中消息类型,类型名和枚举值如下:
hello_request(0), client_hello(1), server_hello(2),certificate(11),
server_key_exchange (12), certificate_request(13),server_done(14),
certificate_verify(15), client_key_exchange(16),finished(20)
???
?? 所有的握手消息有统一的结构:
?
?
struct {
HandshakeType msg_type; /* 握手消息类型,如上所述的枚举值 */
uint24 length; /* 握手消息体的长度用24位表示,即最大长度不超过16M*/
HandShakeMsg payload /*握手消息的有效荷载,上面列的10类型之一*/
} Handshake;
?
Client Hello 阶段
客户端首先发 Client Hello消息到服务器端,服务器端收到hello消息后再发Server hello消息回应客户端。
Client Hello和Server Hello消息结构如下:
?
?
struct {
ProtocolVersion client_version;
Random random;
SessionID session_id;
CipherSuite cipher_suites0..216-1;
CompressionMethod compression_methods0..28-1;
} ClientHello;
struct {
ProtocolVersion server_version;
Random random;
SessionID session_id;
CipherSuite cipher_suite;
CompressionMethod compression_method;
} ServerHello;?
选择SSL通信,当底层连接建立好 后会触发或调用SSL的初始化和握手,握手由Clinet端发出Client Hello消息开始。
Client Hello 消息
ProtocolVersion:消息中协议版本是两个byte长度分别表示主次版本,如若在JAVA中初始化SSLContext时候选择了SSLv3则主版本号是3,次版本号为0,若选择了TLSv1(TLSv1相当SSLv3的升级版)则主版本号是3,次版本号是1。Random:随机数结构,由两部分组成,
?
struct {
uint32 gmt_unix_time;
opaque random_bytes[28];
} Random;?
一个4字节的系统当前时间,一个28位长的随机数,在后面计算所有消息的摘要或计算主密钥时候会用到。(疑惑1 : 在java的JSSE实现版本中貌似只有一个4字节的系统当前时间,没有28位的随机数,奇怪了,怎么和非JSSE 版本实现正确握手的啊… )Session ID : SSL会话ID标识一次会话用,可以重用。会话ID都是由服务器分配因此在全流程握手中client
您可能关注的文档
最近下载
- 我国散光矫正型人工晶状体临床应用专家共识.docx
- 科研伦理与学术规范.docx VIP
- 【教学评一体化】第三单元 赏山川日月,悟忧乐情怀 整体公开课一等奖创新教学设计-【大单元教学】统编版语文九年级上册名师备课系列.docx VIP
- 缅怀先烈精神-传承红色基因课件.pptx VIP
- 1.1 同底数幂的乘法 双减分层作业设计样例 2021—2022学年北师大版数学七年级下册 .docx VIP
- 朱良春杂病廉验特色发挥.docx
- 绘本《我妈妈》教学设计.docx
- 人教版(2024)英语七年级上册全册教案.DOCX VIP
- 在线网课知慧《音乐艺术概论》课后章节测试答案.docx
- 2024年中煤集团西南分公司招聘笔试参考题库附带答案详解.pdf
文档评论(0)