文档章节

AES和ECC的混合加密

w
 wesk痕
发布于 2016/10/17 12:25
字数 754
阅读 401
收藏 2

在上面对AES加密的初步认知中,我们知道AES加密需要一个key,加减密双方都需要知道,那这个key怎么设定好?看一下下面的一种场景: 在社交的APP中,一般对聊天内容都会是加密的,A和B聊天,A和C聊天。如果这个Key都是固定的,那么是不是意味着:如果B通过蛮力等方法破解某段聊天信息,拿到了和A之间的AES_Key,再抓包劫持了A和C的传输内容,就可以轻易的破解A和C之间的内容,显然这种做法是不安全的。 所以安全的模式是A和B,A和C,B和C, 他们聊天内容加密的key都是不同的(再安全点加密方式也可以有区别)。那样即使A和B的加密被破解了,A和C,B和C等其他的聊天记录都不会被轻易破解。

那怎么传送这个key,肯定不是明文传送,那用哪一种加密方式更好点,一般都是非对称加密,如RSA、ECC等。 非对称加密:加减密的密钥不同,分私钥和公钥。 主流的非对称加密方式如:RSA和ECC 这边为什么选用ECC,客观因素有很多:

  1. 密钥位数短,一般认为160位密钥的ecc安全性相当于1024位密钥的rsa,256位相当于3072位。
  2. ECC虽然算法复杂但位数短很多,所以ECC性能高于RSA,安全性也相对高很多,ECC逐渐成为主流了。
  3. ...... 还有很多

AES的Key经过接收方公钥加密和AES加密的内容 一起发送给接收方,接收方通过自己私钥先将加密后的AES_KEY解密,再通过解密得到的原始AES_KEY,并用该key解密发送方发送的内容,得到明文。 如下图所示:

AES和ECC混合加密.png

上面这种加密方式性能上绝对是杠杠的,虽然自己没有用具体的数据测试过,但也找过很多资料看了,加密算法速度高于

扩展:AES和ECC的混合加密还有一种特殊的场景,先来看一下ECC 数学函数 Q=dG; (Q是公钥 d是私钥 G是他们之间的关系);Q1 = d1G1; Q2=d2G2;那么能推出 key=Q1d2G2 = Q2d1G1; 有没有亮点 1的公钥和2的私钥 2的公钥和1的私钥 他们能得到一个相同的值 key。那么我们能不能把这个相同的key 作为他们之间AES加减密的key呢? 那我们是不是可以在这个发送过程少传一个AES密钥key‘的参数,那在传输的过程透露的信息是不是有可以少,安全性是不是会高一点呢? 32位的ECC加密 和32位AES解密,经实践可以使用上述方法。

© 著作权归作者所有

上一篇: iOS 动画
下一篇: app 架构初识
w
粉丝 2
博文 17
码字总数 14343
作品 0
杭州
程序员
私信 提问
iOS加密总结

加密一般分为 对称加密和非对称加密。 —、对称加密 对称密码学分成分组密码和序列密码(流密码)两部分,他们差异较大易于区分。 序列密码 序列密码单独加密每个位。它是通过将密钥序列中的每...

wesk痕
2016/11/20
54
0
跨平台的现代加密库 - EverCrypt

程序员都是凡人,但数学则是不朽的。通过让编程变得更数学化,计算机科学家希望能消除向黑客敞开大门的编程错误。研究人员在 GitHub 上发布了加密工具 EverCrypt,向这个目标迈出了一大步。就...

匿名
04/09
0
0
CyaSSL 2.9.0 发布,SSL 加密库

CyaSSL 2.9.0 发布,此版本更新内容如下: 支持 Freescale RNGA, RNGB 和 mmCAU 添加了新的 TLS 扩展 (ECC, Truncated HMAC) 支持 局部支持 PKCS#7 的 SCEP 生成 PKCS#10 证书签名请求 DTLS...

oschina
2014/02/11
474
0
JavaScript加密库--jsCrypto

jsCrypto 是一个实现了一些常用加密方法的 JavaScript 库,支持的算法包括:AES, SHA-1, HMAC, BASE64, RSA, ECC and IBE,这个库也可以在 ActionScript 下使用。 示例代码: var cipher = j...

匿名
2010/03/09
4.3K
0
AES加密算法的详细介绍与实现

AES简介 高级加密标准(AES,Advanced Encryption Standard)为最常见的对称加密算法(微信小程序加密传输就是用这个加密算法的)。对称加密算法也就是加密和解密用相同的密钥,具体的加密流程如下...

qq_28205153
2017/02/19
0
0

没有更多内容

加载失败,请刷新页面

加载更多

NIO基于长度域的报文在Netty下的解码

1, 先复习一下粘包/拆包 1.1, 粘包/拆包的含义 TCP是个“流”协议, 并不了解上层业务数据的具体含义, 它会根据TCP缓冲区的实际情况进行包的划分,所以在业务上认为,一个完整的包可能会被TCP...

老菜鸟0217
今天
8
0
从零开始搭建spring-cloud(2) ----ribbon

在微服务架构中,业务都会被拆分成一个独立的服务,服务与服务的通讯是基于http restful的。Spring cloud有两种服务调用方式,一种是ribbon+restTemplate,另一种是feign。 其实我们已经在上...

Vincent-Duan
今天
19
0
get和post的区别?

doGet:路径传参。效率高,安全性差(get的传送数据量有限制,不能大于2Kb) doPOST:实体传参。效率低,安全性好 建议: 1、get方式的安全性较Post方式要差些,包含机密信息的话,建议用Pos...

花无谢
昨天
4
0
当谈论迭代器时,我谈些什么?

当谈论迭代器时,我谈些什么? 花下猫语:之前说过,我对于编程语言跟其它学科的融合非常感兴趣,但我还说漏了一点,就是我对于 Python 跟其它编程语言的对比学习,也很感兴趣。所以,我一直...

豌豆花下猫
昨天
14
0
10天学Python直接做项目,我做了这5件事

初学者如何尽快上手python? 市面上关于如何学python的资料很多,但是讲的都太复杂。 我就是很简单的几句话,从小白到开发工程师,我只做了五件事。 我觉得任何商业计划书如果不能用几句话讲...

Python派森
昨天
7
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部