9.1 信息摘要算法和数字签名
信息摘要算法是现代密码学算法中不可缺少的一部分,与对称算法和非对称加密算法不同,他不是一种可逆的操作,经过它进行处理的数据,输出数据长度一般来说总是固定的,并且理论上很难从输出恢复输入。
数字签名操作一般采用非对称算法(公开密钥算法),其实质是使用费对称加密算法密钥对的私钥对数据进行加密,而数字签名的验证操作则是使用公钥对数据进行解密操作,然后比较得到的原始文件跟解密得到的文件信息是否一致,如果一致,则认为数字签名有效,从而确认文件的有效性。
9.2 指令格式
9.3 指令选项说明
signature指定了保存要进行验证的签名信息的文件,通常来说,为了正确验证,应该是一个二进制编码的文件,十六进制编码的文件可能导致不能正确验证。
verify选项表示将要输入的用于验证数字签名的密钥是一个公钥
prverify选项,择表示将输入的文件保存的是一个私钥
keyform选项告诉指令输入用于签名或者验证的密钥属于什么编码格式。
9.4 使用信息摘要指令进行数字签名和验证
9.4.1 执行数字签名
a.数字签名流程概述
a1.产生一个RSA或者DSA密钥对
a2.使用某种信息摘要算法对文件进行信息摘要操作得到摘要信息
a3.使用RSA或DSA私钥对摘要信息进行加密完成签名操作
a4.将RSA获DSA私钥对应的公钥、文件和签名信息一起保存或者发送给接收方。
b.执行RSA数字签名
b1.首先生成一个RSA密钥,并加密保存
b2.从生成的RSA私钥中导出一个相应的RSA公钥并保存
c.执行DSA数字签名
c1.首先生成一组DSA密钥参数,可硬用来生成以后可能需要的许多DSA密钥
c2.根据这组DSA密钥参数生成一个DSA私钥,并加密保存在文件中
c3.根据DSA私钥导出DSA公钥并保存
c4.使用dgst指令文件进行信息摘要操作和数字签名操作
c5.sgn.txt 、file.doc和dsapubkey.pem一起保存或者发送给接收方,完成整个DSA数字签名流程。
9.4.2 验证数字签名
a.验证数字签名流程概述
条件:原始文件file.doc,文件数字签名信息sgn.txt;签名私钥对应的公钥
验证:
a1.对原始文件采用跟签名时相同的信息摘要算法对原始文件file.doc做信息摘要操作得到摘要信息M1;
a2.使用公钥解密sgn.txt里面的签名信息得到解密后的数据M2
a3对比M1和M2,如果一致则签名验证通过,
b.验证RSA数字签名
c.验证DSA数字签名
9.5 本章小结
a.介绍了信息摘要算法的性质及其在数字签名中的应用,并对Openssl提供的相关指令的功能作了简要的分析
b.dgst等信息摘要指令的格式和功能做了详细的分析介绍,对每个选项都做了必要的说明
c.openssl的指令完成一个文件的数字签名和验证流程做了具体的分析和演示