对openssl源码的记录层的解析,想学习openssl的可以看看。
SOVI'WAREDEVELOPMENTANDDESIGN
加密以及添加协议头。
3
计算MAC值
这个计算是将握手协议中传递过来的Finished数据包进行
HASH计算。选择的HASH算法由在ServerHello中选择的套件来确定。具体过程如图3所示。
图3MAC运算
MAC_secret_key
MAC_secreLkey分Client_write_MAC_sex-r℃t和Serv—er_writc_MAC—secret两种,其中Clientwdte_MAC_sexa'et是客户端对发送的数据进行MAC运算时用到的key,而Serv—cr_wrim_MAC_kcy则是服务器对发送的数据进行MAC运算时用到的key。
Clicnt_write_MAC_secret和Server_write_MAC_secret均来自于数据key_block。
(1)padl与pad2
padl是数组,其中数组的每一个元素都是0x36。pad2也是数组,数组的每一个元素都是0x5e。
在进行HASH计算时,使用的padl和pad2数组元素的长度是由HASH算法决定的,不妨设HASH的结果长度是MD—SIZE(如果是MD5,MD_SIZE就是16,如果是SHAI就是20)。那么填充的padl和pad2的长度均是(48,MD_SIZE)幸MD_SIZE。
.
(2)sequence
0pensSL为每一个经过MAC运算的数据包分配一个
sequence,为8个字节,初始值全为0,客户端发送Finished数据包时第一个经过MAC运算的数据包,故其sequence全为0,而后的Applicationdata中的数据包在MAC过程中,其¥e.quence的值依次递增,让每一个经过MAC运算的数据包分配的sequence的值均不同。
(3)记录协议类型、包长度与数据包
记录协议类型为22,即handshake,数据包为握手过程中产生的数据包。
其实这3个数据块组成的数据与从握手过程中传送过来的数据包添加记录层协议后的结果非常相似,对于不经过MAC过程和加密过程的数据包来说,经过记录协议的封装后的结果如图4所示。
一
图4记录协议封装后数据包
万方数据
软件开发与设计
在MAC运算中,使用的记录协议类型、包长度与数据包的组合即将图4中的结果去掉版本3.0后的结果,即如图5所示。
22
长度
l数据包I
图5记录协议类型、包长度和数据包
其中:22是指记录协议类型,22代表了该数据包hand—shake类璎数据包,占一个字节;长度是指从握手协议中传送过来的数据包的长度,占2个字节;数据包是指从握手协议中传送过来的数据包。对于客户端发送的Finished而言,记录协议类型、包长度和数据包组成的数据如图6所示。
图6记录协议类型、包长度和数据包
.
【Finished数据包为例)
4
加密
加密函数的函数名为sd3_enc0,加密函数的实现体在文
件ssl、s3_enc.C中。4,1加密函数的实现
在这个函数中,首先根据s一>ene_write_ctx通过函数
EVP_CIPHER_CTX_cipher
0来获得EVP_CIPHER结构变量。
而在EVP_CIPHER_CTX_eipher0函数中,获得的EVP_CI—PHER结构来自于8一>enc_write_ctx下的变量cipher。然后通过函数EVP_CIPHER—block_size0从EVP_CIPHER结构下的变量block_size中获得分块长度。对于分块长度为l的,如果用的是流加密,则不需要对这个数据进行填充;对于分块长度不为1的,如果用的是块加密,则需要将数据填充到块长度的整数倍,其填充的方法是在填充的最后一个字节的数值是填充长度减l,其他的填充位置上不进行设置数值。然后通过调用EVPCipher
0来使用相应的加密算法对这些数据进行
加密。
4.2获取结构体
在客户端和服务器发送Change
Cipher
Spec数据包后,两
者都会去调用函数ssl3_change_cipher_state0来设置密钥。而在函数ssl3_ehange_cipher._state0中,调用了函数EVP_Ci-
pherInit_ex0来对s一>enc—write_ctx进行了设置,即对s->
enc_mrite
ctx所对应的结构体EVP__CIPHER_CTX的各个变量
进行设置。而EVP_CipherInit_ex0的传入参数有EVP_CI—PLIER结构变量、key和iv。
EVP
CIPHER结构变量,在ServerHeHo中选择的套件对
应的结构为SSLCIPHER,根据该结构下的变量algorithms的值。通过调用函数EVP_geLcipherbyname()来获得一个EVP_CIPHER类型的结构体,而这个结构体就是上面所需的结构体。
5
结语
OpenSSL记录协议层封装了高层协议的数据,协议数据采
用SSL握手协议中协商好的加密算法及MAC算法来保护。记
——49——
openssl源代码分析_计算机软件及应用_IT/计算机_专业资料 暂无评价0人阅读0次下载举报文档 openssl源代码分析_计算机软件及应用_IT/计算机_专业资料。Openssl 源...
7页 免费 OpenSSL源码的记录层解析 3页 免费 第九章 openssl签名和验证 12页 免费 OpenSSL之X509系列 5页 免费 第八章 openssl消息摘要 13页 免费...
1.2论文主要工作对OpenSSL从整体进行分析。包括OpenSSL源代码的模块结构,它支持 ...如下图: 图2-3 SSL协议结构 2.3.1 SSL记录层 SSL记录层协议是建立在可靠...
1.2论文主要分析工作辩OpenSSL扶整体进行分撰。包话OpenSSL源代码豹模块结梅,玄...其中SSL记录层协议是握手协议、密码更改协议、警告协议的基础。 10 华中科技大学...
对 OpenSSL 源代码的学习,可以对协议中一些没有明确指定的行为或者 是模糊的...首先将对 SSL 记录层协议进行分析,SSL 记录是分析的基本单位。然后, 将分析一...
C语言利用OpenSSL实现AES加解密源代码_计算机软件及应用_IT/计算机_专业资料。#... OpenSSL教程 8页 1下载券 openssl的EVP函数详解 28页 免费 2014年教师考试...
解析OpenSSL漏洞_法律资料_人文社科_专业资料。解析OpenSSL漏洞解析OpenSSL 漏洞:影响巨大 两年前 已存在什么是 SSL? SSL 是一种流行的加密技术,可以保护用户通过...
Wireshark的Pcap文件格式分析及解析源码_IT/计算机_专业资料。Wireshark的Pcap文件格式分析及解析源码Wireshark 的 Pcap 文件格式分析及解析源码 下面主要介绍下 ...
SSL 握手协议 SSL 改变加密约定协议 SSL 记录层协议 TCP 层 IP 层 底层协议 ...本文在对 SSL 协议工作原理进行分析的基础上,利用 OpenSSL 软件包在 IE 客户...
热门文档