有没有不利用证书也能安全通信的方案

2015-08-02 08:48:25 +08:00
 benjiam
证书虽好,关键是证书预制问题,第二点根节点的私钥其实是不安全的,zf一句话就拿到了。所以其实不安全。有无安全的通信机制,可以防止中间人。
7006 次点击
所在节点    程序员
100 条回复
benjiam
2015-08-02 18:02:02 +08:00
@Smartype diffe hellman 不能对抗mim


@noli root 失效就全网崩溃
Smartype
2015-08-02 18:33:20 +08:00
@benjiam 为什么不能对抗mitm?能通过监听知道双方协调出来的内容么?
Smartype
2015-08-02 18:37:49 +08:00
@benjiam 查了一下,可以替换双方的协商内容。你说得没错。
chenshaoju
2015-08-02 18:52:14 +08:00
关键词:挑战应答认证

https://en.wikipedia.org/wiki/Challenge%E2%80%93response_authentication

假设某用户的密码是 abcdefg ,客户端先生成一个随机数,比如 123456 ,并发送给服务器。

中间人拦截到了,没关系,服务器也收到了这个随机数,随后,服务器也生成一个随机数,比如 654321 ,然后也发送给客户端。同样,中间人也拦截到了,一样没关系。

客户端,服务器和中间人都知道客户端的随机数是 123456 ,服务器的随机数是 654321 。

现在,客户端使用 md5("123456abcdefg654321") 进行散列,得出一个MD5:500908fd00948ac2cc7b096315d41ff7,并直接将MD5发送给服务器。

同样,中间人也拦截到了,但是中间人并不知道这个MD5是什么,无法解密。

服务器收到后,从数据库读取用户的密码,用收到的随机数同样进行一次相同的散列过程,进行比较。

结果一致,OK,认证通过。
noli
2015-08-02 19:16:34 +08:00
@benjiam 证书更换协议。
LazyZhu
2015-08-02 19:34:13 +08:00
@BXIA https://github.com/stealth/opmsg
PFS = Perfect Forward Secrecy
7654
2015-08-02 19:42:22 +08:00
你需要“黑话”
laotaitai
2015-08-02 19:57:13 +08:00
@realpg 这个限制太高了, 一般用户装不来扩展. 虽然我网站粘度很高, 也不敢冒险去试这个.
laotaitai
2015-08-02 19:59:08 +08:00
@realpg 不过, 想法真不错! 适合粘度更高, 用户又不傻逼的网站.
windyboy
2015-08-02 20:05:13 +08:00
证书是最简单有效的手段
9hills
2015-08-02 21:29:06 +08:00
自签名证书的私钥zf一句话拿到,那你换任何一种加密zf都能一句话拿到。
kaneg
2015-08-02 21:47:45 +08:00
@chenshaoju 可是一般来说数据库中的密码都不会以明文保存,服务端如何以同样的方式做散列?
chenshaoju
2015-08-02 22:10:50 +08:00
@kaneg 太简单了,假设明文密码以md5形式存储,那么就再md5一下,比如:
md5("1234560cc175b9c0f1b6a831c399e269772661654321")
benjiam
2015-08-02 22:11:56 +08:00
@9hills no , 如果2个节点交互是自己协商密码,任何一方就无法获取了。
@chenshaoju 关于中间人 你还没搞清楚
9hills
2015-08-02 22:15:22 +08:00
@benjiam 协商也需要身份验证,身份验证必然某一方要存身份信息,要存身份信息zf一句话拿到,照样中间人
9hills
2015-08-02 22:16:58 +08:00
@benjiam 总之一句话,你用任何方法,都不可能获得比证书更加强壮的安全性。

如果你最终找到了,不如share上来。
benjiam
2015-08-02 22:19:32 +08:00
@9hills 目前是没有,找到了得个图灵奖是没问题的。可以改变所有网银的认证机制。
9hills
2015-08-02 22:22:15 +08:00
@benjiam 其实你仔细想想,在你假设『zf一句话』即通信的某一方被第三方控制的情况下

所有加密方法从逻辑上就都不安全。。。而去尝试寻找一个逻辑上并不存在的解。。就没必要了
yajiedesign
2015-08-02 22:29:06 +08:00
如果根CA或者证书路径上的证书不可信.那么据我所知,要完全避免中间人攻击,安全可靠的只有量子密钥分发.其他办法也许看上去可行.但免不了有你我想不到的漏洞.
noli
2015-08-02 22:37:35 +08:00
@benjiam 在没有证书的前提下,是没有办法实现两个节点交互协商密码的。其他的全部是空想。

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

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

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

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

© 2021 V2EX