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非对称加密算法,专门用于数字签名的非对称加密算法。