Https传输中加密和密钥交换涉及到的算法总结与介绍

可参考此文章帮助理解:图解SSL/TLS协议(阮一峰)

1. DEA (Data Encryption Algorithm,即 数据加密算法)

常用加密算法为:AES 、 RSA/ECC 、Diffie-hellman 、 SHA-1/SHA-256(数据验证与指纹) 。

2. 对称加密算法

1. DES (DES全称为Data Encryption Standard,即数据加密标准)

是一种使用密钥加密的块算法,1976年被美国联邦政府的国家标准局确定为联邦资料处理标准(FIPS),随后在国际上广泛流传开来。

单密钥算法,是信息的发送方采用密钥A进行数据加密,信息的接收方采用同一个密钥A进行数据解密.

缺点:由于采用同一个密钥进行加密解密,在多用户的情况下,密钥保管的安全性是一个问题.

2. AES (Advanced Encryption Standard,即 高级加密标准),又称Rijndael加密法

严格地说,AES和Rijndael加密法并不完全一样(虽然在实际应用中二者可以互换),因为Rijndael加密法可以支持更大范围的区块和密钥长度:AES的区块长度固定为128 比特,密钥长度则可以是128,192或256比特;而Rijndael使用的密钥和区块长度可以是32位的整数倍,以128位为下限,256比特为上限。加密过程中使用的密钥是由Rijndael密钥生成方案产生。

AES是美国国家标准技术研究所NIST旨在取代DES的21世纪的加密标准。

AES_128_GCM 更安全 

AES_128_CBC 

3. 非对称加密算法

1. RSA 非对称加密

RSA公钥加密算法是1977年由罗纳德·李维斯特(Ron Rivest)、阿迪·萨莫尔(Adi Shamir)和伦纳德·阿德曼(Leonard Adleman)一起提出的。1987年首次公布,当时他们三人都在麻省理工学院工作。RSA就是他们三人姓氏开头字母拼在一起组成的。

RSA是目前最有影响力的公钥加密算法,它能够抵抗到目前为止已知的绝大多数密码攻击,已被ISO推荐为公钥数据加密标准。

RSA的安全性是基于极其困难的大整数的分解(两个素数的乘积)

2. DSA

基于整数有限域离散对数难题

一般用于数字签名和认证

在DSA数字签名和认证中,发送者使用自己的私钥对文件或消息进行签名,接受者收到消息后使用发送者的公钥 

来验证签名的真实性。

DSA只是一种算法,和RSA不同之处在于它不能用作加密和解密,也不能进行密钥交换, 

只用于签名,它比RSA要快很多.

3. ECC

RSA 与 DSA 各有优缺点,那有没一个更好的选择呢?答案是肯定的,ECC(Elliptic Curves Cryptography)

基于椭圆曲线算法。

ECC 与 RSA 相比,有以下的优点: 

相同密钥长度下,安全性能更高,如160位ECC已经与1024位RSA、DSA有相同的安全强度。

计算量小,处理速度快,在私钥的处理速度上(解密和签名),ECC远 比RSA、DSA快得多。

存储空间占用小 ECC的密钥尺寸和系统参数与RSA、DSA相比要小得多, 所以占用的存储空间小得多。

带宽要求低使得ECC具有广泛得应用前景。

这使得ECC 取代RSA成为可能。(不知道谁说的)

4. Diffie-Hellman

Diffie-Hellman:一种确保共享KEY安全穿越不安全网络的方法,它是OAKLEY的一个组成部分。Whitefield与Martin Hellman在1976年提出了一个奇妙的密钥交换协议,称为Diffie-Hellman密钥交换协议/算法(Diffie-Hellman Key Exchange/Agreement Algorithm).这个机制的巧妙在于需要安全通信的双方可以用这个方法确定对称密钥。然后可以用这个密钥进行加密和解密。但是注意,这个密钥交换协议/算法只能用于密钥的交换,而不能进行消息的加密和解密。双方确定要用的密钥后,要使用其他对称密钥操作加密算法实际加密和解密消息。

DH 算法的握手阶段 

整个握手阶段都不加密(也没法加密),都是明文的。因此,如果有人窃听通信,他可以知道双方选择的加密方法,以及三个随机数中的两个。整个通话的安全,只取决于第三个随机数(Premaster secret)能不能被破解。 

虽然理论上,只要服务器的公钥足够长(比如2048位),那么Premaster secret可以保证不被破解。但是为了足够安全,我们可以考虑把握手阶段的算法从默认的RSA算法,改为 Diffie-Hellman算法(简称DH算法)。 

采用DH算法后,Premaster secret不需要传递,双方只要交换各自的参数,就可以算出这个随机数。

DH算法的一个简单描述: 

1) A随机产生一个大整数a,然后计算Ka=ga mod n。(a需要保密) 

2) B随机产生一个大整数b,然后计算Kb=gb mod n。(b需要保密) 

3) A把Ka发送给B,B把Kb发送给A 

4) A计算K=Kba mod n 

5) B计算K=Kab mod n 

由于Kba mod n= (gb mod n)a mod n= (ga mod n)b mod n,因此可以保证双方得到的K是相同的,K即是共享的密钥。 

意思是说client与server端都有一个随机数是不会通过网络传输的。所以保证了安全。 

4. 数据完整性验证 (MD5 | SHA-*)

MessageDigest是一个数据的数字指纹.即对一个任意长度的数据进行计算,产生一个唯一指纹号.

MessageDigest的特性: 

两个不同的数据,难以生成相同的指纹号

对于指定的指纹号,难以逆向计算出原始数据

5. 实例

1. 使用OPENSSL 生成基于RSA 的非对称加密算法 的命令如下:

生成一个密钥(私钥) 

[root@hunterfu ~]# openssl genrsa -out private.key 1024 

注意: 需要注意的是这个文件包含了公钥和密钥两部分,也就是说这个文件即可用来加密也可以用来解密,后面的1024是生成 

密钥的长度.

通过密钥文件private.key 提取公钥 

[root@hunterfu ~]# openssl rsa -in private.key -pubout -out pub.key

使用公钥加密信息 

[root@hunterfu ~]# echo -n “123456” | openssl rsautl -encrypt -inkey pub.key -pubin >encode.result

使用私钥解密信息 

[root@hunterfu ~]#cat encode.result | openssl rsautl -decrypt -inkey private.key 

123456

2. 使用OPENSSL 生成基于DSA 的非对称加密算法 的命令如下:

生成一个密钥(私钥) 

[root@hunterfu ~]# openssl dsaparam -out dsaparam.pem 1024 

[root@hunterfu ~]# openssl gendsa -out privkey.pem dsaparam.pem

生成公钥 

[root@hunterfu ~]# openssl dsa -in privkey.pem -out pubkey.pem -pubout 

[root@hunterfu ~]# rm -fr dsaparam.pem

使用私钥签名 

[root@hunterfu ~]# echo -n “123456” | openssl dgst -dss1 -sign privkey.pem > sign.result

使用公钥验证 

[root@hunterfu ~]# echo -n “123456” | openssl dgst -dss1 -verify pubkey.pem -signature sign.result

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 212,185评论 6 493
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,445评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 157,684评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,564评论 1 284
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,681评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,874评论 1 290
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,025评论 3 408
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,761评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,217评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,545评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,694评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,351评论 4 332
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,988评论 3 315
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,778评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,007评论 1 266
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,427评论 2 360
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,580评论 2 349

推荐阅读更多精彩内容

  • 这篇文章主要讲述在Mobile BI(移动商务智能)开发过程中,在网络通信、数据存储、登录验证这几个方面涉及的加密...
    雨_树阅读 2,362评论 0 6
  • 1.数据安全 01 攻城利器:Charles(公司中一般都使用该工具来抓包,并做网络测试) 注意:Charles在...
    Lucky丶晴阅读 1,397评论 0 9
  • HTTPS介绍 超文本传输安全协议(英语:Hypertext Transfer Protocol Secure,缩...
    齐滇大圣阅读 8,909评论 8 96
  • 静夜凉好,飞柳窗前扰。凉墨素笺因字少,未感斯人可晓? 月华将度辰更,惊蛾扑火凄声。才晓相思起日,竟...
    殊荻阅读 231评论 2 4
  • 为什么有些有钱人不幸福,因为人的欲望是无限的,物质上的需求是有限的,物质上的需求不足以填满人的欲望,而钱只能够满足...
    蜗牛的征程阅读 1,669评论 1 2