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

2015-08-02 08:48:25 +08:00
 benjiam
证书虽好,关键是证书预制问题,第二点根节点的私钥其实是不安全的,zf一句话就拿到了。所以其实不安全。有无安全的通信机制,可以防止中间人。
6981 次点击
所在节点    程序员
100 条回复
DreaMQ
2015-08-02 12:50:10 +08:00
或者让两台设备物理接触,通过蓝牙、NFC、有线(最安全)等线下方法交换非对称密钥
lilydjwg
2015-08-02 12:50:33 +08:00
@xgowex 如果证书比较多的话,还是自建一个 CA 吧。
kn007
2015-08-02 13:32:05 +08:00
@realpg 有意思
benjiam
2015-08-02 13:35:24 +08:00
原意就是 正在开发一个类im 系统, 里面的2者需要通信,我希望2 2 之间通信是安全的。方法1 就是 root
为每个用户颁发个人私钥 签名, 问题是如果root 的私钥泄漏 就会被攻破, 这也是现有的sa 体系的问题。 因为我希望这个系统运行以后,所有人的通信是安全的,无论是否root被攻破,这个系统只是提供一个定位的功能,2者之间的通信将会是安全的。
Quaintjade
2015-08-02 13:44:20 +08:00
目前一切加密方式都逃不过预先共享这一环节。
无论是pptp,ss的密码、l2tp的psk、证书体系的根证书、anyconnect和ikev2的自签CA证书,本质都是预先分享的信息。
这是加密的根本,被拿到了就玩完。无非好的加密算法能确保即便该关键信息被拿到,以前的传输的资料仍无法解开(我觉得这个挺神奇)。
benjiam
2015-08-02 13:46:39 +08:00
@Quaintjade 有能保证该信息过期无法解开的算法吗?
msg7086
2015-08-02 13:48:38 +08:00
@publicID001
base64不是加密并不代表base64没有加密。
下结论前先了解一下并不是什么坏事。
RqPS6rhmP3Nyn3Tm
2015-08-02 13:48:46 +08:00
正解,自建CA自用是够了。
其实我感觉 GnuPG 也挺好用的,前提是得先从其他(可靠的)方式获取到公钥。
msg7086
2015-08-02 13:50:51 +08:00
@realpg
@publicID001
我以前敏感内容过墙,是用的gz压缩+base64,然后客户端拆开base64后再要做一次解压缩才能用。
框架静态,内容全程走ajax然后js处理。
msg7086
2015-08-02 13:52:42 +08:00
@BXIA 自建CA主要是没有信任链,伪造自建CA别人无法分辨。
现在最理想的做法算是DNSSEC+DANE,然而还没普及。指望一下将来的5-10年发展好了。
realpg
2015-08-02 14:01:24 +08:00
@msg7086
二次压缩必要性不大
我算是比较熟悉这种旁路分析器的的实现
能实现这么高效率的,一般是用专门芯片做字符流匹配,match黑名单的特定流,只能对通用算法进行匹配,base64后随便再做一点小小手脚就无解了,二次gz开销太大。你看我截的图,其实大多数并不是纯种base64,不信你取个片段解一下试试。
RqPS6rhmP3Nyn3Tm
2015-08-02 14:02:50 +08:00
@msg7086 不如用 GPG 咯,信任链倒是可以做出来,就是可控性可能低了点。小项目的话挺好用的我感觉……大项目可能不适合?
em70
2015-08-02 14:06:06 +08:00
key=MD5(随机串+密匙+时间戳)

把随机串,时间戳,key发给对方.对方用这几个数据同样做md5计算,如果结果一致则可信任.

这种方法只要保证密匙安全就比较安全.关键是计算简单,性能优异.
Quaintjade
2015-08-02 14:27:15 +08:00
@benjiam
无法解开以前的信息的加密算法,我也只是听说,没研究过。

担心共享根的安全性的话,可以参考GPG,每个人创建自己的公钥密钥对,公钥传播出去,别人用公钥加密,自己用私钥解密。
问题在于去中心化的网络如何可靠地把每个人的公钥传播开,这个就得参考tor及ed2k了。我的想法是,依赖已知安全节点以及少数服从多数。不过要小心入侵者伪装成多数,另外网络规模小时可能很慢。

自造车轮终究是个危险的举动,上面只是原始的思路,离实现差了十万八千里。
Quaintjade
2015-08-02 14:33:45 +08:00
@Quaintjade 说错,不是ed2k,是kad
laotaitai
2015-08-02 14:34:50 +08:00
@realpg 哈哈, 兄弟, 点个赞! 我tmd就是这么想的, 也这么干的, 双层base64, 然后再reverse.
realpg
2015-08-02 15:36:09 +08:00
@laotaitai 其实这个还有个更高级的玩法,做更内部的用处使用
就是在客户端并不解码成原始的。
把解码算法封装到一个crx里面去
有指定chrome扩展的电脑就能正常看,没有的就不行……
Smartype
2015-08-02 16:02:00 +08:00
@benjiam 密钥交换算法是可以保证不受mitm的影响的
Smartype
2015-08-02 16:12:16 +08:00
你看看Diffie-Hellman算法,也就是在还没有发明rsa的时候是怎么交换一个shared secret(aes key/iv)的
noli
2015-08-02 16:16:20 +08:00
@benjiam 私钥分发会泄密?容易,只分发服务器的公钥,客户端自己生成私钥。初次与服务器通信的时候,就用服务器的公钥来验证服务器的身份,然后向服务器注册自己的公钥。
反正你的 IM 分发的过程本身就是一次极好的自动分发公钥的过程。

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

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

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

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

© 2021 V2EX