实验描述:
在本实验中,我们将研究安全套接层(SSL)协议,我们将会重点关注通过 TCP 连接发送的 SSL 记录。我们将会通过您的主机和电子商务服务器发送的 SSL 记录 的跟踪来实现。 我们将研究各种 SSL记录类型以及 SSL 消息中的字段。您可能会需要重新查看课本中的 8.6节。
实验过程:
1. 在 SSL 会话中抓包
- 第一步是在 SSL会话中捕获数据包。要做这一步,您应该去你最喜欢电子商务网站开始购买物品(但是请勿真的购买)。使用 Wireshark捕获数据包后,应设置过滤器,使其仅显示包含主机发送和接收的 SSL记录的以太网帧。 (SSL记录就是 SSL消息)您应该获得如下屏幕截图所示的内容。
我这里访问的是淘宝,其实只要访问ssl加密的网站都可以(也就是以
https
开头的网站)。
2. 分析抓包结果
您使用的 Wireshark界面应该仅仅显示含有 SSL记录的以太网帧。建议您记住:每个以太网帧可能包含一个或多个的 SSL记录,这点很重要。(这与 HTTP消息不 同,每个以太网帧包含一个完整的 HTTP消息或者仅仅包含 HTTP消息的一部分) 因此,一个SSL记录可能会被多个以太网承载。
回答问题:
-
- 对于前 8个以太网帧,请分别指出每一个帧的来源(客户端和服务器),确定每个帧包含的SSL记录的数量,并且列出包含SSL记录的类型。绘制客户端和服务器含有箭头指向的时序图。
答:
帧的来源直接可以通过Source
和Destination
可以看出,每个帧包含的SSL记录的数量可以在每个帧的Transport Layer Security
可以看到,SSL记录的类型可以从Info
看出。
时序图可以直接看WireShark自己绘制的,点击统计 -> 流量图 -> 限制显示过滤器:
客户端发出请求 (ClientHello) 记录(ClientHello Record:) :
-
- 每个 SSL记录都以相同的三个字段(可能具有不同的值)开头。 其中一个 字段是“内容类型”,长度为一个字节。 请列出所有三个字段及其长度。
答:
Content Type
字段为1字节,Version
字段为2字节,Length
字段为2字节:
-
- 展开 ClientHello记录(如果您的跟踪包含多个 ClientHello记录,请展开包 含第一个记录的以太网帧),内容类型的值是多少?
答:如上图:
Content Type: Handshake(22)
-
- ClientHello记录是否包含随机数(也称为“挑战码”( challenge))? 如果是 这样,十六进制的挑战码值是多少?
答:包含,也就是下面的
Random
,太长了,就不写出来了。
-
- ClientHello记录是否通知了它所支持密码加密套件(suite)?如果是这样, 请在第一个密码套件, 分别指出非对称**加密算法,对称**加密算法,哈希算法分别都是什么?
答:
以下为别人总结的知识点:
服务器回应(ServerHello) 记录 (ServerHello Record):
-
- 找到 ServerHello SSL记录。 此记录是否指定了之前的密码套件之一? 选择的密码套件中有哪些算法?
答:指定了哈希加密算法(SHA哈希函数)。
-
- 此记录是否包含随机数?如果有,它有多长?SSL中客户端和服务器段随机数用来干什么?
答:
包含,有32字节,也就是用64个16进制数来表示。
多次随机数生成为未来生成对话**提高安全性能。
-
- 此记录是否包含会话 ID? 会话 ID的目的是什么?
答:包含(有的可能不会包含,也就是可以有也可以没有)
目的:用一定时间内端口连接快速恢复连接过程。
-
- 此记录是否包含证书,或者证书是否包含在单独的记录中。 证书是否适合一个单独的以太网帧传输?
答:此记录不包含证书,但是可以看到后面的一个
Server Hello
是包含证书的,而且包含在单独的记录内。
适合在一个单独的以太网帧传输。
客户端**交换记录(Client Key Exchange Record):
-
- 找到客户端**交换记录。 此记录是否包含前主**(pre-master secret)? 这个前主**用于什么? 前主**加密了吗? 如果是这样,为什么? 加密的前主**有多长?
答:1)包含
2)
3)使用EC Diffie-Hellman(ECDH加密算法)进行加密传输,使用的是服务器公钥加密,用以给服务器让服务器用私钥解密并且使用前面两个hello过程的随机数生成本次的会话加***。
4)32个字节
由客户端发送编码改变记录和加密握手记录:
-
- 编码改变记录目的是什么?在您的跟踪中本记录有多少字节。
答:告诉服务器已经计算好加***,以后将会用商定的加密方式和**加密传输了,在我的跟踪中该记录有6个字节。
-
- 在加密的握手记录中,什么是加密的? 为什么?
答:消息校验码是加密的,这个校验码是包含之前所有连接消息的摘要加密格式,只有服务器可以解开,因为在建立连接中,存在可能连接消息被侦听和更改的情况,因此还需要进行信息摘要计算和加密传输,判断是否存在异常,如果异常,将会直接关闭连接。
-
- 服务器是否还向客户端发送更改编码记录和加密的握手记录? 这些记录与客户发送的记录有何不同?
答:如下可以看出,服务器向客户发了。没有啥不同,加密握手记录中同样是包含之前所有连接消息摘要的加密形式,用以供客户端解密,判断是否存在异常选择处理。
应用数据(Application Data )
-
- 如何加密应用程序数据? 包含应用程序数据的记录是否包含消息认证码 MAC? Wireshark是否区分加密的应用程序数据和消息认证码 MAC?
答:使用本次对话协商和交换好对称加***应用程序数据,这个数据里同时包括消息本身和消息认证码,所以比消息本身要长,但是加密过,所以无法区分。
-
- 请您指出和解释您在跟踪中发现的任何其他内容。
答:
Application Data
报文中,没有发现其他内容。