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

2015-08-02 08:48:25 +08:00
 benjiam
证书虽好,关键是证书预制问题,第二点根节点的私钥其实是不安全的,zf一句话就拿到了。所以其实不安全。有无安全的通信机制,可以防止中间人。
7218 次点击
所在节点    程序员
100 条回复
hjc4869
2015-08-02 09:03:56 +08:00
楼主只要不用CNNIC,“zf一句话就拿到了”这个应该不成立吧。。
Septembers
2015-08-02 09:08:13 +08:00
参考Telegram
yangff
2015-08-02 09:23:43 +08:00
人肉交换密钥
realpg
2015-08-02 09:23:48 +08:00
个人搞浅层暗网多年的黑技术经验告诉你

首先,你不要做大做出名被人工盯上,被人工盯上啥也不好用
然后,如果你没有被人工盯上的话,那些高级加密都不需要。你在代码端把内容base64了,在前端用js解密出来,中间这个传输对于识别引擎来说就是乱码,他们监控不到你的网页内容
因为base64应用太普遍,如果担心ZF的扫描器能识别base64字符串的特征码,二次处理一下base64的字符串,比如用ascii漂移一下,这啥也自动化识别不出来你是啥……
publicID001
2015-08-02 09:24:10 +08:00
密码学的一条很重要的原则就是不要自己造轮子,所以说如果不是密码学专家就还是老老实实用 HTTPS 比较好
cnbeining
2015-08-02 09:31:24 +08:00
自签呗。
lijianying10
2015-08-02 09:35:03 +08:00
RSA+HMAC
HMAC不说了
RSA各种语言都有实现,包括js,网上找就能找得到

通讯登陆过程中互相交换PublicKey,客户端临时生成服务器端周期更新。即可。
之前我写过文档记录这个。https://github.com/lijianying10/FixLinux/blob/master/prob/PHP-RSA%E5%8A%A0%E5%AF%86%E8%B7%A8%E5%9F%9F%E9%80%9A%E8%AE%AF%E5%AE%9E%E6%88%98.md
可以参考一下。

关于造轮子:
都是现成的看看代码复制粘贴的事。

最后希望能帮到楼主。
DreaMQ
2015-08-02 09:36:25 +08:00
Shadowsocks 这种 pre-shared key 在密码足够复杂且保密的情况下应该够了吧
incompatible
2015-08-02 09:39:30 +08:00
@lijianying10 互相交换公钥的过程如何防止中间人攻击?
realpg
2015-08-02 09:40:46 +08:00
比如这个分享一些不和谐内容的内部站,我就是用一个网上的仿V2EX的很小的小BBS程序改的
传输层检测到的内容就是这样的:



因为用了jquery2,不支持IE,用IE看到的就是原始的,js解码未执行
实际上浏览器端如果用chrome就会跑起来算法把加密内容还原了
kslr
2015-08-02 11:01:18 +08:00
@realpg 不错的想法
realpg
2015-08-02 11:17:52 +08:00
@kslr

这只是最入门的黑科技了……

不过我仔细看了一下不符合楼主主题的 跑题了 楼主是要反中间人反劫持的
我这只是单纯的防止通用旁路分析……
benjiam
2015-08-02 11:39:56 +08:00
恩 对安全理解不深,但是对称非 对称加密 https 这种还是都懂


我希望解决的是 在互联网的2点 在没有初始信息交流的前提下, 进行安全的通信。

证书体系 可以解决这个问题,但是还有很多实际的问题, 主root 私钥不安全,被吊销证书查验及时 等客观的问题。


直接使用rsa des 这样的方法,绕不过中间人,这也是为什么会有证书体系,


直接密钥交换机制 不能攻克中间人,否则就完美了。
cdy
2015-08-02 12:15:51 +08:00
lianyue
2015-08-02 12:24:25 +08:00
base64 早能识别了 不行你们自己试试
publicID001
2015-08-02 12:25:48 +08:00
@realpg base64 压根不是加密。。连密钥都没有的玩意儿
publicID001
2015-08-02 12:28:48 +08:00
@lijianying10 不正确的使用密码学原语会让你的加密系统非常容易受到旁路攻击(以及其他攻击),这是个很有难度的活,没有金刚钻还是别拦瓷器活比较好

一个栗子:
http://m.phys.org/news/2013-12-trio-rsa-encryption-keys-noise.html
Slienc7
2015-08-02 12:37:10 +08:00
我也是醉了,自簽證書解決一切問題,内置客戶端中
lilydjwg
2015-08-02 12:42:58 +08:00
要可否认性(plausible deniability)就用 bitmessage,不需要就用 OTR、Tox、PGP 加密邮件之类的。都是不依赖于可信第三方的。当然,密钥怎么交换自己看着办!
lilydjwg
2015-08-02 12:44:16 +08:00
@incompatible Linux 内核开发者交换密钥的方法是在线下见面交换 :-)

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

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

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

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

© 2021 V2EX