漏洞分析Crypto Lab – One-Way Hash Function and MAC(自用,记录)

1 Overview

本实验的学习目的是让学生熟悉单向哈希函数以及消息认证码(MAC),在完成本课实验后,学生应当对密码学概念有更深入的理解并且能通过使用工具或者编程为一段指定的信息生成哈希值以及消息认证码。

2 Lab Environment

2.1 Installing OpenSSL

安装OpenSSL。在这个实验室中,将使用openssl命令和库。虚拟机已经下载了目录下所需的文件/home/seed/openssl-1.0.1。要配置和安装openssl库,请使用openssl-1.0.1文件夹并运行以下命令

$ sudo make
$ sudo make test
$ sudo make install

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

2.2 Installing a hex editor

安装十六进制编辑器。在这个实验室中,需要能够查看和修改二进制格式的文件。虚拟机中安装了一个名为GHex的十六进制编辑器。它允许用户从任何文件加载数据,查看和编辑十六进制或ascii码。注:也可以使用另一个名为Bless的hex编辑器;这个工具在虚拟机中可能没有安装,可以使用以下命令自己安装它。(此处不安装Bless,直接使用GHex

$ sudo apt-get install bless

在这里插入图片描述

3 Lab Tasks

3.1 Task 1: Generating Message Digest and MAC

生成消息摘要和MAC。在本实验中,将认识各种单向哈希算法。你可以使用 openssl dgst 命令为一个文件生成哈希值。输入 man opensslman dgst 查看手册。
在这里插入图片描述
使用指定的单向哈希算法替换 dgsttype 部分,比如 -md5, -sha1, -sha256 等等,至少使用 3 种算法,描述你观测到的结果。可以通过键入“man openssl”找到支持的单向哈希算法。
新建一个文件 test1.txt,其内容如下(文本内容随意):
在这里插入图片描述
观察不同算法为文件生成的哈希值(此处用-md5, -sha1, -sha256这3种算法)
在这里插入图片描述

3.2 Task 2: Keyed Hash and HMAC

本节实验中,要为文件生成 keyed hash(比如 MAC)。使用-hmac 选项,选项后所带参数就是 key。命令格式如下:
在这里插入图片描述
请分别使用 HMAC-MD5, HMAC-SHA256 和 HMAC-SHA1 生成 keyed hash,并配以不同长度的 key。是否总是需要在 HMAC 中使用一个固定长度的 key?如果是这样,key 的长度是多少?如果不是,为什么?
在这里插入图片描述
由上述结果可以知道,不需要使用一个固定长度的key,无论密钥长度是多少,都可以正常输出结果,这是单向哈希函数的性质。

3.3 Task 3: The Randomness of One-way Hash

单向哈希函数的随机性。为了理解单向函数的特性,需要做一些关于 MD5 和 SHA256 的练习

  • 创建一个任意长度的文本文件。
  • 使用指定的哈希算法为该文件生成哈希值 H1。
  • 翻转该文件的任意一位,你可以使用 ghex 或者 bless 进行编辑。
  • 为修改后的文件生成哈希值 H2。
  • 观察 H1 与 H2 是否相似,请描述你的观察。
  • 写一个程序计算 H1 与 H2 相同位的数量。

编写实验程序compare.py,此处使用Python语言,具体如下

# compare.py 
# Calculate the number of identical bits for H1 and H2
# @Author: huang
# @Date:   2020-06-16

from os import urandom
import os, tempfile
import binascii

# Flip any bit of a byte
def flipBit(x, kth):
    x = ord(x)
    if (x & 1 << kth ) != 0:
        return chr(x & ~(1 << kth))
    else:
        return chr(x | ( 1 << kth))

# Hexadecimal string to binary string
def byte_to_binary(n):
    return ''.join(
  • 3
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值