除了 https,有什么防止网络监听的成熟方案

2017-03-01 17:11:43 +08:00
 nilai
最近写了个小项目, 要求不用 https (丫的,就是这么奇葩), 要求保证通信的安全, 防窃听

浏览器 ----> 服务端 (这个倒好做, RSA 浏览器公钥加密, 服务端私钥解密。中间人没有私钥,就算窃听到数据也解密不出来)。


服务端 ------> 浏览器 (目前仅应付一下 就是 服务端发送数据时 AES 加密, 浏览器 AES 解密, 这样明显的缺点就是中间人分析一下网页,就知道 AES 的 KEY,然后就能解密出对应的数据了,因为不管怎么着, 数据都得在浏览器正常展示出来)

后来觉得 DH 算法应该可以, 但是实现过程略显麻烦,对 web 类的纯 HTTP 应用不是很适合,


说了这么多, 求指教。
6329 次点击
所在节点    程序员
75 条回复
wwqgtxx
2017-03-01 17:18:10 +08:00
可以试试,自己用 js 实现 tls ,底层用 websockets
nilai
2017-03-01 17:21:19 +08:00
@wwqgtxx 天啦。。。。。。。。
RqPS6rhmP3Nyn3Tm
2017-03-01 17:22:27 +08:00
http 页面不防篡改,中间人也可以给你的服务器 /浏览器返回一个假的证书啊
wevsty
2017-03-01 17:23:21 +08:00
如果不想使用现成的 TLS ,那就只能自己在 socket 上实现一遍 TLS 了。
nilai
2017-03-01 17:23:47 +08:00
@BXIA 暂时不考虑中间人篡改内容, 只防中间人监听,解密出内容。
nilai
2017-03-01 17:24:50 +08:00
@wevsty 在 github 上看了下, 还真有人用 JS 自己生成了一个 TLS 跑在 HTTP 下。。
kindjeff
2017-03-01 17:24:55 +08:00
@nilai 给了假证书之后照样监听啊
nilai
2017-03-01 17:26:50 +08:00
@kindjeff 暂时不考虑中间人篡改内容, 只防中间人监听,解密出内容。
chinajik
2017-03-01 17:28:49 +08:00
巧了。。 最近也是在做这个。。目前也是 https +rsa
enenaaa
2017-03-01 17:31:10 +08:00
每次刷新都用密码登陆
honeycomb
2017-03-01 17:31:54 +08:00
@nilai 给了假证书之后就可以监听了
miao1007
2017-03-01 17:33:02 +08:00
报文 rsa 加密后 base64
nilai
2017-03-01 17:34:08 +08:00
@honeycomb 暂时不考虑中间人篡改内容, 只防中间人监听,解密出内容。
wevsty
2017-03-01 17:35:23 +08:00
@nilai TLS 的实现是很复杂的,自己实现的安全性往往没有使用现成的套件安全,高效。除非特别需要,否则强烈不推荐自己实现这样的过程,不明白这样做的目的是什么?
paradoxs
2017-03-01 17:36:19 +08:00
提出这种要求的人, 能回答一下, 如果 https 被破解了, 就你做的这点加密, 能扛得住别人几分钟的攻击?
RqPS6rhmP3Nyn3Tm
2017-03-01 17:39:57 +08:00
@nilai 都给你了假证书了,监听岂不是再简单不过的事情?
用自己的证书解密再转发给你的服务器不就好了,这就是 MITM 在安全性被妥协的环境下的典型监听方法
nilai
2017-03-01 17:43:58 +08:00
@paradoxs 哈哈, 歪楼了
nilai
2017-03-01 17:45:11 +08:00
@BXIA 暂时不考虑中间人篡改内容, 只防中间人监听,解密出内容。 不用科普 MITM ,
rogerchen
2017-03-01 18:39:39 +08:00
@nilai
什么叫浏览器到服务器简单?浏览器会用你的私有协议?还是你要自己写一个浏览器?
RSA 是用来传 key 的, payload 也用 RSA 来传?难道你的客户都是四路 E7 配置起跳?
拿到 AES 密文和明文就能猜出 key ? 抗 CPA 是吃翔的?


不是我嘲讽楼主,密码学入门知识都不懂也想撸密码学基础架构,这种一般叫 troll 吧。
LGA1150
2017-03-01 18:40:27 +08:00
XMPP+TLS

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

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

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

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

© 2021 V2EX