真正的点对点聊天通讯隐私实现想法

2021-07-28 14:51:06 +08:00
 brader

实现想法:

A 发送消息给 B

检测是否持有 B 的公钥  

    若有,使用 B 的公钥对消息进行 RSA 加密并发送。  
    若无,则先请求 B 传输公钥过来,B 生成公私钥并缓存在本地。  

B 收到消息后,使用自己的私钥进行消息解密。  

B 发送消息给 A
同理

我想,这样应该才是能实现真正隐私通讯的,连服务提供方都无法窃取消息的,而不是市面上一些聊天软件慌称的“隐私”。

这种通讯隐私方案可实现吗?会有软件愿意为了用户隐私而实现吗?

13414 次点击
所在节点    程序员
125 条回复
Dogtler
2021-07-28 18:54:39 +08:00
在国内别想了
treblex
2021-07-28 19:13:22 +08:00
@treblex 楼主的想法应该跟我这个差不多,就是客户端加密消息,服务端制作标准实现

但是运营不了,国内似乎要求必须有审查的能力,存密文的话没啥用,除非你把用户私钥存了😂
https://www.v2ex.com/t/745797

现在手上这个 app 只打算做到这个程度了
后端如果做的话,最好是能做一个标准或者开源实现给用户自己部署和开发,在 app 上设置服务器地址(实力不足
delpo
2021-07-28 19:33:59 +08:00
@treblex 你这个已经有现成的了,win 上叫 gpg,安卓有一个叫 openkeychain 的实现
treemonster
2021-07-28 20:09:56 +08:00
nullcoder
2021-07-28 20:44:18 +08:00
啊,还以为会看到量子纠缠
ck19920702
2021-07-28 21:28:56 +08:00
v2clay
2021-07-28 21:29:25 +08:00
1. 你说的就是 rsa 公钥密码体系的雏形
2. ca 是为了解决中间人攻击的。
3.如果外层套一层 tls 。那么底层不需要 rsa,对称加密就行,效率还高。
4.此贴终结
v2clay
2021-07-28 21:31:54 +08:00
建议多读书,把 rsa 吃透。
sholmesian
2021-07-28 22:25:53 +08:00
推荐楼主看看 XMPP 的

XEP-0384: OMEMO https://xmpp.org/extensions/xep-0384.html

XEP-0364: OTR https://xmpp.org/extensions/xep-0364.html
railgun
2021-07-28 23:58:17 +08:00
通信加密已经不是一个技术问题了……
agee
2021-07-29 00:28:59 +08:00
防中间人又不用根证书的话,只有上 ecdh 算法,可自行谷歌,真正实现不用见面的情况安全交换密钥,防中间人攻击腾讯就是用的 ecdh
kirch
2021-07-29 00:29:31 +08:00
首先,不能有中心服务器
Hardrain
2021-07-29 01:15:19 +08:00
"若无,则先请求 B 传输公钥过来,B 生成公私钥并缓存在本地。"

这就像一个没有 CA 的 TLS, 或者一个不校验证书有效性的糟糕 TLS 实现, 对中间人攻击没有任何免疫力.

跟你的想法类似的是 GPG, 但 GPG 的开发者认为, 交换密钥应该以"线下碰面"的形式完成.

以上是技术问题, 至于政治 /法律问题我不做讨论. 你认为微信如果想实现类似的技术, 不会受到阻力吗?
Hardrain
2021-07-29 01:17:00 +08:00
@agee ECDH 是椭圆曲线域上的 Diffie-Hellman, 照样需要签名.

例如 TLS 的加密套件, ECDHE_RSA_* 和 ECDHE_ECDSA_* 中的 RSA 和 ECDSA 就是签名算法.
iseki
2021-07-29 01:30:49 +08:00
恕我孤陋寡闻,中间人攻击基本上只能通过证书或者类似的其他“预共享的信息”来实现,你这里好像根本没提到对这个问题的解决方案。如果不想引入证书也可以参考下 Telegram 的 secret chat,两边用户可以通过对比一个颜色点阵来确保没有被中间人攻击。
bs10081
2021-07-29 02:30:40 +08:00
Rocket.Chat?
parametrix
2021-07-29 06:08:34 +08:00
1. 只用 RSA 效率低,也没必要,而且不是所有设备都有个人电脑的算力,就算有也不应该挥霍。
2. 只用 RSA 缺乏一些关键的安全特征,比如完全向前安全性。TLS 标准算法里头一长串又不是为了炫技。
3. 解决中间人问题要不然由第三方担保,要不然就是预共享密钥做 HMAC 。然而有预共享密钥的前提下,可以直接 HMAC 配合密钥交换算法进行端对端加密通信,RSA 反而不是必要的,徒增消耗。
4. 市面上端对端加密解决方案不是有没有,而是太多了,商业的、社区的应有尽有。

PS:好奇楼主认为 https 是怎么实现的?
vagranth
2021-07-29 06:30:50 +08:00
fan123199
2021-07-29 07:50:40 +08:00
lz 写的方案太初级,就像有个人说,我发现了用 break 可以退出 for 循环一样。 不过想要隐私通讯的想法是很 ok 的,可以多了解下评论里提及的开源软件。不说了,我也学习去
MarkLeeyun
2021-07-29 08:45:02 +08:00
大陆应该不存在能商用的这玩意。

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

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

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

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

© 2021 V2EX