聊天软件端对端加密疑问

2022-04-25 15:49:38 +08:00
 Skeleies
我是技术小白,只是网上道听途说聊天软件采用端对端加密很安全,国外的知名聊天软件很多是默认或者可以设置端对端加密;至于微信和 QQ 听说是有加密,但是没有采用端对端加密,至于什么原因不清楚。
最近在小米应用商店发现三款聊天软件:JSPP 、事密达、JusTalk ,三款软件的应用商店下载页面介绍里面都提到采用端对端加密,下载体验了一下,感觉一般,有的有会员功能,有的有类似漂流瓶的功能。有没有什么办法检验软件是否采用了端对端加密?就好像听说 Whatsapp 支持端对端加密,这个是靠他们自己说的还是有什么办法检验?
7451 次点击
所在节点    程序员
44 条回复
DonDonc
2022-04-26 12:22:30 +08:00
@cxe2v 编译环境可能无法做到一致,发布时需要加上证书等情况,最后哈希会不同,现在开源软件会靠自动编译以及公开编译脚本。但是依旧没办法 100%保证靠谱。绝对的安全代价很大,普通人只能相信某个权威。
imtianx
2022-04-26 17:30:54 +08:00
comingchat 了解下,隐私聊天,支持 web3, 数字钱包等😁。https://www.coming.chat/
8520ccc
2022-05-03 16:12:58 +08:00
我的理解

现有的用户不自行保存私钥的情况下实现的端到端加密方式如下:

用户 A 用户 B 分别生成私钥+公钥

然后将 公钥发送到中心化的服务端

A B 之间通讯时需要先去查询获取对方的公钥

然后彼此的消息使用对方的公钥加密,对方使用私钥解密

当然了这样性能不够好,可以按时间生成对称加密密钥,两者仅需在一段时间内协商好对称密钥即可

此时会存在一个小问题,如果 A 或 B 用户完全退出登录 APP 清楚数据

重新登录后将失去查看历史记录消息的能力

因为私钥是不可以上传的服务器的

即仅可以在客户端可见

同时若多客户端同时登录一账户也会存在问题,新的设备没办法获取当前的私钥

当前服务商可以选择从旧设备上面加密获取

但是此操作可能会被服务商利用

比较好的处理方式就是,新设备登录时需要任意一个旧设备点击确认(点击确认就代表把旧设备的私钥以安全的方式传输给新设备)

这样可以实现多客户端同时登录


-----------------------------------------------------------

回归原题,检测是否为端到端加密,那就是审核客户端代码了,只要客户端的代码中没有将客户端生成的公钥上传的服务端那就没问题!或者说即使有上传私钥的情况也是必须经过用户确认授权然后加密传输到新设备的!

PS:事实上这种确认授权的方式依旧可能被服务商利用,然后获取你本地的私钥,即使需要用户确认(因为服务商可以返回一个伪装的新的客户端的公钥)

除非旧设备直接扫码获得新设备的公钥,然后直接上传服务商传输

那么此时的私钥传输是安全的

---------------------------------------------------------------

事实上对于普通用户,想要完全验证几乎不可能的!!!

因为即使客户端代码开源,但是上架到 app store ,google play 以及其他平台的客户端编译后的软件你没办法确认是否携带了私货

此时大概能有以下几种方案进行解决
一,抓包验证,客户端的所有请求都是可以被抓包后解密出原文的,可以通过此 APP 的全部网络通讯来确定不存在上传额外的信息
二,自行编译源码

--------------------------------------------------------------

其实也有另外的实现方式,那就是用户自行保存私钥的模式

这就是目前 web3 社交 /聊天项目的实现了
8520ccc
2022-05-03 16:16:19 +08:00
@imtianx 都不开源 隐私与安全只能靠项目方嘴保证了

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

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

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

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

© 2021 V2EX