关于 AES 加密,从 js 到 php 的问题。

2015-09-23 08:12:42 +08:00
 polandeme

使用 AES 加密传输数据,加解密可以实现,但是有个疑问:

  1. 使用 aes 加密的原因就是密文传输,被拦截抓包也没法解密,但是 key , iv 都是被一起传输过去的,也会被同时拦截下来,这样同样可以破解和明文并没有差距呀。

  2. 就算是我 key 是随机的,且单独传输,但是为了保持前后端 key 一致,也是要传输 key 的呀。难道前后端使用一个相同的算法生成 key ,但这样生成 key 算法前端是可见的。

5028 次点击
所在节点    问与答
33 条回复
mengzhuo
2015-09-23 09:46:09 +08:00
楼上的都说 HTTPS 是解决方案
可楼主并没有说是什么传输方式,所以不应该是 TLS 么

不管什么方式交换密钥,都需要“无条件”信任某个第三方,在 X509 里,就是所谓的 CA 了
konakona
2015-09-23 10:03:09 +08:00
KEY 和 IV 不应该一起传输,为什么要一起传输我真心没搞明白……哎!
polandeme
2015-09-23 10:11:18 +08:00
@konakona 不对,应该是传输的知识加密后的数据,但是对于前端层面来说,用户或者中间人还是可以找到 key ,和 iv 的。
oott123
2015-09-23 10:12:34 +08:00
AES 对称,再怎么加密也并无卵用…
就算你用 rsa ,你的 http 是明文的,中间人可以拦截你下发的 key ,改成自己的。
Web 安全靠 js 做是不可信的,上 https 吧。
glasslion
2015-09-23 11:49:01 +08:00
不要重复造轮子,更不要造密码学相关的轮子, LZ 自己去实现一类类似 TLS 的东西, 100%是有漏洞的
https://blog.helong.info/blog/2015/09/06/tls-protocol-analysis-and-crypto-protocol-design/
polandeme
2015-09-23 13:31:31 +08:00
@glasslion 自己目前只是涉及到应用层的东西,应该不会去早密码学相关的轮子,但是会去了解现有轮子的本质。 thx
glasslion
2015-09-23 13:44:17 +08:00
@polandeme 应用层恰恰是仅次于加密算法实现,第二容易出错的。至于了解现有轮子的本质, 即使是对口专业的,没个十几年经验,也做不到
polandeme
2015-09-23 15:48:59 +08:00
@glasslion 看来我把它想简单了
polandeme
2015-09-23 20:46:40 +08:00
@yuriko
会有个问题吧,最后一步都是使用 aes 加密传输,所以这个过程中会传输, data, iv ,key 加密之后的数据, key,iv 会在第一次加密过,但是中间人还是可以得到我的 js 文件,也会破解出我的 key,iv 明文,最后会在对称加密过程中破解出信息明文。
感觉这种可能还没有 rsa 直接加密安全或者效率高吧。
或者你的意思是: key , iv 不在 js 中,是根据用户填写得到的?
但是无论哪个,还没有直接使用 rsa 效率高的吧。我只是用户名和密码。
loggerhead
2015-09-24 07:12:08 +08:00
1 由客户端发起通信
2 客户端用非对称加密的公钥加密对称加密的密钥传给服务器,对称加密的密钥每次随机产生
3 用对称加密加密需要传输的数据
yuriko
2015-09-24 08:21:55 +08:00
@polandeme RSA 这种非对称加密的好处就在于,即使公钥暴露也不影响安全,所以第一步交换密钥的安全性问题就不存在了。
但 RSA 的性能相对较差,大量采用 RSA 会造成服务器的性能问题,所以真正进行大规模通信的时候还是要走 AES 。
那 AES 的问题在哪里呢,就是第一步交换密钥的安全性如何保证, RSA 能解决这个问题。
所以现在一般是用 RSA 作为 AES 的第一步,通过 RSA 交换随机生成的 AES 密钥,然后再通过 AES 进行通信,就解决问题了
polandeme
2015-09-24 09:30:31 +08:00
@yuriko 恩恩,可能开始忽略了随机这个概念
konakona
2015-09-24 10:17:23 +08:00
@polandeme 不会啊……=..= 你是怎么得出这个结论滴

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/222953

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX