做排行的网站,网站建设技术服务费怎么入账,网站建设与网页制作的实验目的,公司网站开发费用济南兴田德润o评价DH概述
用于密钥交换的公开算法#xff0c;广泛应用于各种安全协议SSL协议同样支持DH算法DH算法使用之前需要预先共享两个参数#xff0c;本原元g和模n#xff0c;这两个参数影响到算法的安全性#xff0c;因此需要预先生成并检测其安全性生成这些必要参数和管理这些参数的…DH概述
用于密钥交换的公开算法广泛应用于各种安全协议SSL协议同样支持DH算法DH算法使用之前需要预先共享两个参数本原元g和模n这两个参数影响到算法的安全性因此需要预先生成并检测其安全性生成这些必要参数和管理这些参数的指令dhparam、gendh和dh注意事项DH算法本身不定义加密和解密的操作只是单纯的提供一个安全交换或者生成共同数据加密密钥(用于对称加密的会话密钥)的方法OpenSSL也没有提供利用DH进行加密和解密操作的指令和生成DH的指令只提供了生成DH参数和对DH管理的指令虽然OpenSSL目前的版本还保留了三个DH算法相关指令但是dhparam指令已经集成了gendh和dh两个指令的所有功能在后续的版本中gendh和dh指令很可能被取消或者赋予新的功能定义
生成DH算法参数
DH算法参数包括本原元g和模nOpenSSL提供的指令gendh和dhparam都可以生成DH参数并可以经过编码保存在文件中。gendh指令的功能目前已经集成在dhparam指令中但是dhparam指令还集成了dh指令的所有功能在这部分我们只介绍gendh指令。首先来看看gendh指令的格式:out选项指定了DH算法参数输出和保存的文件名可以是标准输出设备比如Windows下就是当前指令行界面。gendh指令没有输入选项。使用gendh指令输出的DH算法参数都是PEM编码的 DH算法参数指令的主要目的是产生公共模数n而本原元g是指定的目前常用的本原元有2和5虽然3也偶尔被使用但是OpenSSL并没有提供支持。默认情况下使用2作为本原元。产生DH算法参数的时候engine选项的影响体现在两个方面DH算法产生函数方面和随机数生成函数方面。如果engine指定的设备有效并且支持DH算法参数的产生那么将会调用Engine设备提供的DH参数生成函数而不再使用OpenSSL函数库本身的DH参数产生函数。同时如果Engine设备支持随机数生成函数那么在产生DH算法参数需要的随机数的时候调用的系列随机数函数将直接使用Engine设备提供的相应函数这时候rand选项指定的随机数种子文件是否有意义就依具体的Engine接口而定。随机数文件选项randrand选项指定了产生随机数时使用的随机数种子文件该文件一般来说可以为任意类型的文件。如果没有指定指令会从其他途径获取必要的随机数种子。如果使用了engine选项并且该Engine接口支持随机数产生函数那么该rand选项指定随机数文件的意义及是否被真正使用要根据具体的Engine接口而定。DH密钥长度依据DH算法参数的长度而定所以生成的DH算法参数的长度决定了DH密钥的长度。一般来说现在512位的DH密钥是可以信任的当然如果你愿意也可以采用更长的密钥。密钥越长生成DH参数的时间越长而安全性也越高。
例子 管理DH算法参数
dh指令格式
将生成的DH参数保存在某个文件里面并不需要对其进行加密因为这个参数原本就是公开的但是为了使用这个参数需要进行一些管理操作管理操作格式转换、安全性测试、转换成C编码等操作dh指令的格式nform和outform选项指定DH参数编码输入和输出文件的格式默认情况下是PEM编码。目前来说支持的格式包括PEM编码和DER编码两种格式。如果输出信息不是编码的DH参数比如-text和-C选项的输出则不会受到out form格式选项的影响。(3)输入和输出文件选项in和out in选项指定了输入的DH参数文件该文件应该保存了PEM编码或者DER编码格式的DH参数如果你是使用gendh指令生成的DH参数文件那么肯定就是PEM编码的。如果是DER编码的DH文件则需要在inform中指定其格式。out选项指定了输出文件包括输出格式转换后DH参数和text选项输出的明文解析信息。(4)DH参数检测选项check DH参数文件存放一段时间之后你如果对该文件产生了怀疑可以使用check选项对其中的DH参数进行检查。check选项提供的检查包含四个方面:模数是否正确模数是否安全本原元g是否正确及本原元是否合适。如果检查有问题指令会输出提示信息。(5)输出C语言代码选项CDH算法参数在使用的时候既可以从文件读入也可以直接集成在代码里面。OpenSSL提供了从DH文件参数转换成相应的C语言代码的方法就是使用C选项。使用该选项后输出三部分信息:模数数组、本原元g数组及getdh函数。需要注意的是C语言的输出代码只输出到标准输出设备不会输出到out选项指定的文件中。 使用C选项后输出的一个512位DH算法参数C代码的例子其他选项 engine选项指定了要使用的Engine设备如果该Engine接口支持在使用dh指令中要使用到的某个函数或者操作那么就会使用Engine设备而不是OpenSSL本身算法库的函数。text选项告诉指令输出DH算法参数的明文解析信息这包括模数n和本原元g的十六进制编码数据。noout选项的使用会忽略输出选项out不输出DH编码参数到out选项指定文件或标准输出设备。 更丰富和综合的 DH算法参数指令 dhparam
综合利用了gendh和dh指令的所有功能dsaparam选项是dhparam指令比gendh指令和dh指令唯一多出来的选项该选项告诉指令生成一个DSA风格的DH参数而不是使用典型的DH参数生成方式。所谓DSA风格的DH参数是利用DSA参数类型跟DH参数具有相似性的特点先生成一个DSA参数然后将其转换为DH参数。DSA参数生成相对于DH参数来说速度更快而其达到相同安全性能需要的密钥长度更短一些所以使用DH算法的时候效率就显得更高。但也是有代价的使用DSA风格的DH算法参数最好为每一个应用生成一个算法参数否则容易受到一种称为“小群”(smal-subgroup)的方法的攻击。使用了dsaparam选项之后如果使用了输入文件那么输入文件格式都被视作DSA参数文件dhparam指令将会把DSA参数转换成DH参数。输出则是一个DSA风格的DH参数文件。 输出格式可以由用户进行指定可以选择是保存成PEM格式还是DER格式而不再受到gendh指令限制只能保存成PEM格式然后再使用dh指令才能转换成DER格式