Download as docx, pdf, or txt
Download as docx, pdf, or txt
You are on page 1of 8

《资讯安全》实验

实验三:单机环境下的身份认证技术实现
1. 实验目的
(1) 了解基于 http 协议的认证方式的安全措施及风险
(2) 掌握单机环境下的基于口令的身份认证

2. 实验环境及软件
实验操作系统为 Windows 7, 编程环境为 Python 3.8,编程软件为
Pycharm 教育版,网络数据分析软件 Wireshark

3. 实验内容和要求
实验要求:记录实验过程中各操作步骤与执行结果。
实验内容 1:利用网络分析工具 Wireshark 对小游戏网站 4399.com 进
行 http 协议的用户登录数据包捕获,分析其所使用的口令认证方式中的
安全措施。
实验内容 2:通过 Python 编程语言实现基于撒盐的口令身份认证方式
的实现,以掌握口令处理方法、撒盐身份认证原理和具体的编程实验。

4. 基本概念
1) HTTP 协议简介
HTTP 协议是超文本传输协议(Hyper Text Transfer Protocol)的缩写,
它是用于从万维网(World Wide Web, WWW)服务器传输超文本到本地浏览
器的传送协议。而 HTTP 是一个基于 TCP/IP 通信协议来传递数据,包括有
HTML 文件、图片文件和查询结果等。不过 HTTP 协议无法加密数据,所有
通信数据都在网络中明文“裸奔”,这是导致数据泄露、数据篡改、流量
劫持、钓鱼攻击等安全问题的重要原因。而 HTTPS 是用来解决 HTTP 明
文协议的缺陷,在 HTTP 的基础上加入 SSL/TLS 协议,依靠 SSL 证书来
验证服务器的身份,为客户端和服务器端之间建立“SSL”通道,确保数
据运输安全。
2) 基于撒盐的口令身份认证方法
撒盐加密(salt encryption)是一种对系统登录口令的加密方式,它
实现的方式是将每一个口令同一个叫做”盐”(salt)的 n 位随机数相关
联。无论何时只要口令改变,随机数就改变。随机数以未加密的方式存放
在口令文件中,这样每个人都可以读。不再只保存加密过的口令,而是先
将口令和随机数连接起来然后一同加密,加密后的结果放在口令文件中。
比如在家做饭有佐料,在加密领域也有所谓的佐料,只是这是这里的
佐料可不是为了味道好,而是为了保护对象的机密性。往上面撒一些盐,
可以有效的解决这个问题,即使用盐加密。
基本思想如下:
1.用户注册时,在密码上撒一些盐。生成一种味道,记住味道。具体
实现过程是在用户注册时,系统随机产生盐值。然后将盐值和密码连接起
来,生成 Hash 值。并将 Hash 值和 salt 值分别存储在数据库中,图 1 所示。

图 1 撒盐算法的加密(用户注册)过程
2.用户再次登陆时,在输入的密码上撒盐,闻一闻,判断是否和原来
的味道相同,相同就让你吃饭。具体实现过程是系统根据用户名找到与之
对应的密码 Hash。再将用户输入密码和 salt 值进行散列计算。然后判断
生成的 Hash 值是否和数据库中 Hash 相同,如图 2 所示。

图2 撒盐算法的登陆过程
由于验证密码时和最初散列密码时使用相同的盐值,所以 salt 的存
储在数据库。并且这个值是由系统随机产生的,而非硬编码。这就保证了
所要保护对象的机密性。
5. 实验内容
1) 捕获及分析基于 HTTP 协议的用户登录数据包
首先,以管理员身份运行行 Wireshark,并选取要捕获的网卡,如图 3
所示。

图 3 选取的捕获数据的网卡

然后,在过滤器的位置,填入 ip.src_host == 192.168.1.209 and


http 这里的 IP 地址是指本机的 IP,可以用 CMD 命令行下执行 ipconfig
查看,而表达式中的 http 是指定查看 http 协议的数据包,具体如图 4 所
示。

图 4 设置捕获过滤器
再者,打开目标网站 4399.com,进行注册(选快速注册,不是其他登
录)和登录,如图 5 所示。办正事,请勿迷恋里面的游戏!!!
图 5 目标网站注册并登录
在 4399.com 网站登录成功后,切回 Wireshark 界面,并在过滤器里
输入 http.request.method==POST 表示只显示 HTTP 协议中 POST 请求包,
如图 6 所示。
图 6 设置 HTTP 协议里 POST 请求包
打开 HTML From URL Encoded,并拉到底部,可以看到登录名
username 和密码 password。除了用户名是明文外,密码已被 Hash 加密,
可以用其他手段进行解密,如图 7 所示。
图 7 POST 请求包数据分析

2) 基于撒盐的口令身份认证方法
该实验是由口令字段生成(createuser)和身份认证(authenticate)两
大部分组成,详细解释请见附加文档。而具体 python 代码请见
salt_encrypt.py 文件。
编程运行后,首先进入用户创建部分,请同学以自己姓名进行用户添
加,如图 8 所示。
图 8 用户注册
输入 q 键,可以切换到身份验证模式,当用户帐号与密码正确会显
示验证成功,图 9 所示,否则会显示失败,如图 10 所示。

图 9 用户身份验证成功
图 9 用户身份验证失败

You might also like