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

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

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

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

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

5184 次点击
所在节点    问与答
33 条回复
Septembers
2015-09-23 08:21:29 +08:00
1. 请使用 HTTPS
2. 请看《应用密码学》
c742435
2015-09-23 08:29:13 +08:00
楼主的目的是什么?
WalkingEraser
2015-09-23 08:32:29 +08:00
具体 JS 还没机会弄过,但密码学中有密钥交换保证 key 的可靠传输
polandeme
2015-09-23 08:32:36 +08:00
@c742435 用户信息在传输过程中加密,被抓包拦截任然无法破解
polandeme
2015-09-23 08:33:03 +08:00
@Septembers
@WalkingEraser 谢谢,去看一下密码学相关的东西
c742435
2015-09-23 08:37:48 +08:00
@polandeme 你是怕信息被当前用户抓包,还是被中间人抓包?
防中间人直接用 https 可破,防用户的话找个非对称加密算法的库吧。
gaohongyuan
2015-09-23 08:39:46 +08:00
密钥交换不会直接明文传,有专门算法的,比如 Diffie-Hellman 。想破解就中间人攻击
polandeme
2015-09-23 08:43:42 +08:00
@c742435 主要是防止中间人抓包,没对 https 有过细节的了解, https 实质也是使用非对称加密吧。
ehs2013
2015-09-23 08:44:29 +08:00
无论怎么样,都必须要有个 100% 可信任的东西,就看你信任什么了。
wy315700
2015-09-23 08:47:11 +08:00
ECDHE
c742435
2015-09-23 08:48:03 +08:00
@polandeme 对。不过 https 的公钥是从服务器下发的。所以 [用户] 可以通过中间人程序修改公钥 /查看传输的内容(前提是信任中间人的证书)。
polandeme
2015-09-23 08:48:15 +08:00
@ehs2013 理论上是什么都不会去 100%信任的,所以只能去取舍找个相对安全方式
wy315700
2015-09-23 08:50:31 +08:00
@c742435 可以把公钥或者 CA 写死。
polandeme
2015-09-23 08:51:22 +08:00
@c742435 “不过 https 的公钥是从服务器下发的” ,那这句假如我用现在的这种 aes 方式,每次发送数据之后服务器下发一个新的 key ,这两种方式的区别在于什么。非对称?
FrankFang128
2015-09-23 08:52:11 +08:00
看下 HTTPS 的原理呀
polandeme
2015-09-23 08:53:04 +08:00
@FrankFang128 恩恩,正在看
yuriko
2015-09-23 09:04:31 +08:00
AES 是对称加密,密钥同时用来加密和解密,一般使用在双方都拥有密钥的前提下。
还有种加密叫非对称加密,比如 RSA 这种,加密和解密用不同的密钥(公钥、私钥),发送方用公钥加密,接收方用对应的私钥解密。
由于非对称加密普遍计算量较大,一般都是先用非对称加密交换对称密钥,然后用对称加密进行通信
feather12315
2015-09-23 09:12:48 +08:00
https 验证过程与证书颁发机构通信,确认密钥。
Ghoul2005
2015-09-23 09:24:53 +08:00
Https 是完整的解决方案,不然的话你得自己实现身份验证,密匙交换,传输加密等多个过程,等于自己把 https 的整套方案实现了一次。
Marfal
2015-09-23 09:32:25 +08:00
《图解密码学》
没什么数学要求

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

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

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

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

© 2021 V2EX