8.1 非对称加密算法指令概述
a.非对称加密算法也成为公开密钥算法,其解决了对称加密算法密钥需要预分配的难题。
非对称加密算法特点:
a1.加密密钥和解密密钥不相同
a2.密钥对中的一个密钥可以公开(称为公开密钥)
a3.根据公开密钥很难推算出私钥密钥
b.数字签名和密钥交换对公开密钥算法区别
密钥交换算法使用公开密钥进行加密,使用私人密钥进行解密;而数字签名算法则使用私人密钥进行加密,使用公开密钥进行解密。
密钥交换算法要求从加密密钥(公开密钥)很难推算出解密密钥(私人密钥);而数字签名算法则要求从解密密钥,很难推算出加密密钥
8.2 RSA算法指令
RSA算法应用一般包括两个方面:密钥交换和数字签名。
RSA密钥加密的特点是输入数据不能超过RSA密钥的长度,而输出数据长度总是RSA密钥的长度,而输出输出长度总是与RSA密钥长度相同,所以对于量大的数据,一般需要预先进行数据分割。
RSA数字签名,通常是跟信息摘要函数一起使用,这样既可以一次完成加密,比如对于一个大文件,可以先使用SHA1或者MD5算法转换成160位或者128位的摘要信息,使用同样的信息摘要算法对该文件进行运算得到信息摘要值,然后使用RSA算法(通常是公钥)进行解密得到签名方的信息摘要值,对比新计算的信息摘要值和解密得到的信息摘要值。
rsautl指令 :RSA算法加密和解密
genrsa指令:安全生成安全RSA密钥对。
8.1.1 生成RSA密钥
指令参数:
8.1.2 管理RSA密钥
a.密钥格式选项inform和outform
b.信息输出项text、noout和modulus
使用text选项将会以明文的形式输出密钥各个参数的值,使用modulus选项专门输出模数值
c.使用RSA密钥
指令参数:
d.操作类型选项sign\verify\encrypt\decrypt
rsautl指令提供RSA算法的操作
sign:执行数字签名操作
verify:数字签名和验证操作
encrypt:表示执行数据加密操作
decrypt:表示执行数据解密操作
e.数据补齐方式选项pkcs\ssl\oaep和raw
8.3 DH算法指令
DH算法(Diffie-Hellman)是最早提出的一种用于密钥交换的公开密钥算法,该算法目前已经广发应用于各种安全协议。
8.3.1 生成DH算法参数
指令:
a.gendh指令格式
DH算法参数包括本原元g和模n,openssl提供的指令gendh和dhparam都可以生成DH参数,并可以经过编码保存在文件中。
b.输出文件选项out
out选项制定了DH算法参数输出和保存的文件名,可以是标准输出设备。
c.本原元g选项2和5
DH算法参数指令的主要目的是产生公共模数n,而本原元g是指定的,目前常用的本原元有2和5。
d.随机数文件选项rand
rand选项指定了产生随机数使用的随机数种子文件,改文件一般来说可以为任何类型的文件。
e.密钥长度选项numbits
DH密钥长度一句DH算法参数的长度而定,所以,生成的DH算法参数的长度决定DH密钥的长度。
8.3.2 管理DH算法参数
a.输入和输出文件选项in和out
b.DH参数检测选项check
DH参数文件存放一段时间之后,你如果对该文件产生怀疑,可以使用check选项对其中DH参数进行检查。check检查四个方面:模数是否正确,模式是否安全,本原元g是否正确及本原元是否合适。
指令:
8.4 DSA算法指令
DSA算法是美国的国家标准数字签名算法,他只有数字签名功能,而没有密钥交换的功能。
8.4.1 生成和管理DSA密钥参数
a.dsaparam指令格式
8.4.2 生成DSA密钥
a.gendsa指令格式
DSA密钥是在DSA密钥参数的基础上产生的,一对DSA密钥可以包含三个部分:
DSA密钥参数(p、q和g)、DSA私钥和DSA公钥。DSA密钥参数是公开的,甚至可以为一组网络用户所共享,即这组网络用户使用相同的DSA密钥参数生成各自的DSA密钥对。
8.4.3 管理DSA密钥
a.dsa指令格式
用户经常会有各种奇怪的需求和想法,尤其是为了加强安全性,对DSA密钥也一样。
输入和输出格式选项inform和outform
输入和输出密钥类型选项pubin和puout.
输入和输出文件选项in和out
输入和输出口令选项passin和passout
8.5 本章小结
RSA密钥算法的密钥生成、管理和使用方法。
DH公开密钥算法,DH算法是一种专门用于密钥交换的算法。
DSA非对称加密算法,专门用于数字签名的非对称加密算法。