openssl dhparam用于生成和管理dh文件。dh(Diffie-Hellman)是著名的密钥交换协议,或称为密钥协商协议,它可以保证通信双方安全地交换密钥。

但注意,它不是加密算法,所以不提供加密功能,仅仅只是保护密钥交换的过程。在openvpn中就使用了该交换协议。关于dh算法的整个过程,见下文。

openssl dhparam命令集合了老版本的openssl dh和openssl gendh,后两者可能已经失效了,即使存在也仅表示未来另有用途。

openssl dhparam [-in filename] [-out filename] [-dsaparam] [-noout] [-text] [-rand file(s)] [numbits]
选项说明:
-in filename: 从filename文件中读取密钥交换协议参数。
-out filename: 输出密钥交换协议参数到filename文件。
-dsaparam: 指定此选项将使用dsa交换协议替代dh交换协议。虽然生成速度更快,但更不安全。
-noout: 禁止输出任何信息。
-text: 以文本格式输出dh协议。
-rand: 指定随机数种子文件。
numbits: 指定生成的长度。

注意,dh协议文件生成速度随长度增长而急剧增长,使用随机数种子可以加快生成速度

例如:生成1024长度的交换协议文件,其消耗的时间2秒不到。

[root@xuexi tmp]# time openssl dhparam -out dh.pem 1024               

Generating DH parameters, 1024 bit long safe prime, generator 2
This is going to take a long time
..........+.................................................+....................+..+.................................+.........+..................+.............................................+
...................................................................................................+..................................+............+...................+................+..........
.........................................................................................................................................................................................+.........
................................................................................................................................................+.............................................+....
........................................+......................+.......................++*++*++* real 0m1.762s
user 0m1.608s
sys 0m0.017s

但生成长度2048的交换协议文件用了4分多钟,可见长度增长会导致协议生成的时间急剧增长。

[root@xuexi ~]# time openssl dhparam -out dh.pem 2048

    .........
.........
real 4m36.606s
user 4m14.404s
sys 0m0.538s

而使用了64位随机数种子的同样命令只需50秒钟。

[root@xuexi tmp]# time openssl dhparam  -rand rand.seed  -out dh.pem 2048

    .........
.........
real 0m50.264s
user 0m46.039s
sys 0m0.104s

openssl命令实现的是各种算法和加密功能,它的cpu的使用率会非常高,再结合dhparam,可以使得openssl dhparam作为一个不错的cpu压力测试工具,并且可以长时间飙高cpu使用率。

DH密钥协商过程:

密钥交换协议(DH)的大概过程是这样的(了解即可,可网上搜索完整详细的过程):

(1).双方协商一个较大的质数并共享,这个质数是种子数。

(2).双方都协商好一个加密生成器(一般是AES)。

(3).双方各自提出另一个质数,这次双方提出的质数是互相保密的。这个质数被认为是私钥(不是非对称加密的私钥)。

(4).双方使用自己的私钥(即各自保密的质数)、加密生成器以及种子数(即共享的质数)派生出一个公钥(由上面的私钥派生而来,不是非对称加密的公钥)。

(5).双方交换派生出的公钥。

(6).接收方使用自己的私钥(各自保密的质数)、种子数(共享的质数)以及接收到的对方公钥计算出共享密钥(session key)。尽管双方的session key是使用对方的公钥以及自己的私钥计算的,但因为使用的算法,能保证双方计算出的session key相同。

(7).这个session key将用于加密后续通信。例如,ssh连接过程中,使用host key对session key进行签名,然后验证指纹来完成主机认证的过程

在此可见,在计算session key过程中,双方使用的公钥、私钥是相反的。

因为DH算法的原因,它能保证双方生成的session key是一致的。而且因为双方在整个过程中是完全平等的,没有任何一方能掌控协商的命脉,再者session key没有在网络上进行传输,使得使用session key做对称加密的数据传输是安全的

(10) openssl dhparam(密钥交换)的更多相关文章

  1. openssl dhparam(密钥交换)

    openssl系列文章:http://www.cnblogs.com/f-ck-need-u/p/7048359.html openssl dhparam用于生成和管理dh文件.dh(Diffie-H ...

  2. 10.openssl x509

    主要用于输出证书信息.也能够用于签名.自签名.转换证书格式.还原证书为证书请求等.该命令非常强大,几乎实现了伪命令req,ca,verify,crl的所有功能,最牛的一点是该命令不需要通过配置文件就能 ...

  3. Linux和Shell回炉复习系列文章总目录

    本页内容都是本人回炉Linux时整理出来的.这些文章中,绝大多数命令类内容都是翻译.整理man或info文档总结出来的,所以相对都比较完整. 本人的写作方式.风格也可能会让朋友一看就恶心到直接右上角叉 ...

  4. Nginx 1.10.1 编译、配置文档(支持http_v2,TLSv1.2,openssl v1.0.2)

    1.安装常用工具及基础包: [root@localhost /]# yum -y install wget git vim make gcc gcc-c++ openssl-devel [root@l ...

  5. openssl详解

    openssl详解 摘自:https://blog.csdn.net/liguangxianbin/article/details/79665100 目录 目录 第一章 前言 第二章 证书 第三章 加 ...

  6. openssl生成https证书 (转)

    1.首先要生成服务器端的私钥(key文件):openssl genrsa -des3 -out server.key 1024运行时会提示输入密码,此密码用于加密key文件去除key文件口令的命令:o ...

  7. OpenSSL命令---ciphers

    用途: 指令是用来展示用于SSL加密算法的工具.它能够把所有openssl支持的加密算法按照一定规律排列(一般是加密强度).这样可以用来做测试工具,决定使用什么加密算法. 用法: openssl ci ...

  8. openssl生成https证书

    openssl生成https证书 分类: 其它2009-09-03 16:20 452人阅读 评论(0) 收藏 举报 includemoduleaccessapachessl服务器 openssl生成 ...

  9. CA、证书及openssl用法

    CA和证书 摘要:涉及到网络安全这一块,想必大家都听过CA吧.像百度.淘宝.京东等这些知名网站,每年都要花费一笔money来买CA证书.但其实简单的企业内的CA认证,我们自己就可以实现,今天我就讲解一 ...

随机推荐

  1. poj 3207 Ikki's Story IV - Panda's Trick【2-SAT+tarjan】

    注意到相交的点对一定要一里一外,这样就变成了2-SAT模型 然后我建边的时候石乐志,实际上不需要考虑这个点对的边是正着连还是反着连,因为不管怎么连,能相交的总会相交,所以直接判相交即可 然后tarja ...

  2. bzoj1257[CQOI2007]余数之和(除法分块)

    1257: [CQOI2007]余数之和 Time Limit: 5 Sec  Memory Limit: 128 MBSubmit: 6117  Solved: 2949[Submit][Statu ...

  3. 洛谷P2515 [HAOI2010]软件安装(tarjan缩点+树形dp)

    传送门 我们可以把每一个$d$看做它的父亲,这样这个东西就构成了一个树形结构 问题是他有可能形成环,所以我们还需要一遍tarjan缩点 缩完点后从0向所有入度为零的点连边 然后再跑一下树形dp就行了 ...

  4. Luogu P1141 01迷宫【搜索/dfs】By cellur925

    题目传送门 我tm到现在还需要刷这种水搜索...我退役吧. 但就是搜索弱嘛 补一补嘛qwq 题目大意:给你一张地图与许多询问,每次询问求这个点所在联通块的点的个数. 所以这个题目的本质就是在求联通块. ...

  5. Qt之对话框QDialog

    这一节主要讲述对话框类,先讲述两种不同类型的对话框,再介绍Qt提供的几个标准对话框.对应本节的内容,可以在帮助索引中查看 QDialog 和 Dialog Windows 关键字. 一.模态和非模态对 ...

  6. Maximal Area Quadrilateral CodeForces - 340B || 三点坐标求三角形面积

    Maximal Area Quadrilateral CodeForces - 340B 三点坐标求三角形面积(可以带正负,表示向量/点的不同相对位置): http://www.cnblogs.com ...

  7. 双端队列 HDOJ 3530 Subsequence

    题目传送门 题意:问最长子序列,满足区间最大值 - 最小值在[m, k]之间 分析:用双端队列维护最大值和最小值,保存的是位置.当满足条件时,更新最大值. /********************* ...

  8. Vue不兼容IE8原因以及Object.defineProperty详解

    Vue不兼容IE8原因以及Object.defineProperty详解 原因概述: Vue.js使用了IE8不能模拟的ECMAScript5特性. Vue.js支持所有兼容ES5的浏览器. Vue将 ...

  9. SOLR-disMax查询参数

    dismax参数用于处理用户输入的简单短语,并根据字段的重要度进行加权查询,查询范围为多个字段区域.dismax会忽略搜索字符串中的 "AND","OR", & ...

  10. Jenkins视图使用--添加删除视图

    job建立的特别多的时候,我们可能不太容易找到自己的某个job,这时,我们就可以在Jenkins中建立视图.job的视图类似于我们电脑上的文件夹.可以通过一些过滤规则,将已经建好的job过滤到视图中, ...