想基于电报开发完全去中心化的端端加密的即时通信 APP,目的是避免审查,有朋友有兴趣吗

2022-09-05 12:51:01 +08:00
 wanmyj

Problem:

  1. 不翻墙的墙内安全群聊
  2. 中心化的 APP 一定会在被封和被审查当中二选一
  3. imessage 这种虽然不会被关键字审查(理论上),但不能跨平台

Solution:

  1. 基本设想是类似于magnet link,需要客户端,并且所有客户端都可以作为某些服务节点
  2. group owner发起一个group link,内容包含群 hash ,和自身 IP 和开放端口等信息组成的 tracker (NAT 造成的困难可以再想办法解决,我还没想到最优方案),有效期,校验等信息。发布出去等待group member连接,建立群聊天室。
  3. 任何群组员group member都可以当 tracker 提供group link给其他人。
  4. group 内采用端端加密通信,并且无中心 server 。如果所有group member在同一时间换掉了 IP 地址,那这个群就会消亡。
  5. 聊天记录记录在一个或多个group member的本地,如果所有group member同时删掉了某条聊天记录,则这条记录无法恢复。

本人在外企工作,平均每天能有 3 个小时的开发时间.这个项目可能需要数千小时的开发量,我的工程经验怕难以承担这种项目,所以想找一些同好一起完成这个 project 。最好有个有 IM 和网络工程经验的大佬来做 leader 。

我想这个项目一定要开源,无论哪种许可证。

11156 次点击
所在节点    程序员
153 条回复
dianso
2022-09-05 19:01:54 +08:00
审查是相对的。
TG 本来就有审查,你用私密频道发幼女图片,就知道了。
wanmyj
2022-09-05 19:06:28 +08:00
@ysc3839
> P2P 的话不好保存消息,必须目标用户在线才能发送
这点问题不大,消息记录用分散多备份方式存储,每个在线客户端都自动同步其他在线客户端的消息。比如 ABCD 一个群,只有 AorB 在线,他发出的群消息只保存在 AorB 本地,等 AandB 同时在线,会自动同步 AandB 本地所有的消息到 AandB 本地。同理对其他群成员

Full cone NAT 能简化一些问题,但是解决不了全部,比如两个客户端都是 nat 内网且只知道自己的公网 ipv4 地址,如何在不使用公网 server 前提下去打这个洞?
qW7bo2FbzbC0
2022-09-05 19:16:36 +08:00
晶哥已经带走了很多 TG 用户
wanmyj
2022-09-05 19:18:09 +08:00
@Vegetable 我看了楼上列举的 E2EE 的轮子,基本都还是离不开公网或者 server 。

讲真我有这个想法倒不是想和当下的 IM 工具做竞争。实在是对封群封号有种无力感,导致正常的沟通都像做贼。如果这个工具能实现,那最起码有过封群经历的人都会选择这个 app 来建立新群,无需注册且无法审查,不用担心被封群封号。

PS 以现在的设备计算能力,加密相比于明文传输其实没什么成本。
ysc3839
2022-09-05 19:19:26 +08:00
@wanmyj “消息记录用分散多备份方式存储”会导致数据量越来越大,除非设置有效期,到期删除。
在 NAT 内没法知道公网地址,必须依赖公网服务器。
另外也可以看看 Zer​oNet ,它实现用户发布内容的方法是,网站可以设置用户存储区,用户用自己的私钥签名数据然后发布到网站,用户数据随着整个网站同步到其他客户端,用户就能在网站中看到其他用户发布的数据,且能验证数据确实是发布者发布的。不过这套方案也不能避免数据越来越大的问题,似乎只能定期删除。
ngn999
2022-09-05 19:28:24 +08:00
最近在关注这个 https://keet.io/

号称是分布式的,端对端加密的
pxiphx891
2022-09-05 19:33:31 +08:00
首先,已经有了 qtox
其次,你直接和你的好朋友共享一个 aes 密钥,然后把文字加密,放到微信上聊,不就行了?
imtianx
2022-09-05 19:39:35 +08:00
coming.chat, 端到端加密聊天,数字钱包,web3 都有
wanmyj
2022-09-05 19:42:51 +08:00
@ysc3839
> 没法阻止坏人加入
这里我想说 share 出去的加群 link ,就好像一串密码,是要自己负责的,可以设置 counter 或者有效期,总之获得这个 link 的人有权在失效前加入创建的群聊。

这里的群聊并不是像有的 TG channel 一样,如果有人想做匿名 public board cast ,这种需求背离了群聊的初衷。
wanmyj
2022-09-05 19:45:16 +08:00
@pxiphx891 你的其次其实说的挺对,解决了问题,可惜微信不会给开放这个接口,只能自己复制来粘贴去加解密,搞山巅的人才会这么麻烦吧
wanmyj
2022-09-05 19:51:30 +08:00
@ysc3839
> 会导致数据量越来越大,除非设置有效期,到期删除
yes and no ,因为并没有一个中心服务器,所以群聊的内容不会被集中存储,终端可以选择对群交流信息的保留与否,且每个终端只会保存属于他的群的聊天记录,所以不会比当前 IM 占用的空间更大。
> 另外也可以看看 Zer​oNet
thanks I will check it
ltkun
2022-09-05 19:57:53 +08:00
如果是安卓微信的话 可以通过安装插件的方式支持加密聊天 当然需要双方 只是这个功能还都安装 可是应该还是逃不过审核 有个 app 可以试试看 能微信原生 躲过审查 叫 oversec 也需要微信双方安装 这个很 OK 利用安卓无障碍模式来识别加密密文进而解密显示在屏幕上
cesar
2022-09-05 20:30:48 +08:00
能否实现先不说,如果做出来了
节点在国内,挂台设备进来收集节点信息,然后挨个找人请喝茶这种事应该不是做不出
事实上在安卓上装软件,除非是一台干净的没有国产软件的设备,否则马上你设备上的所有 app id 就被收集去了,要么就是伪装 App id?
节点在海外,只能祈祷没有白名单
dorothyREN
2022-09-05 20:56:30 +08:00
完全去中心化,你怎么登录 /怎么联系别人, 难道全网扫一遍?
SenLief
2022-09-05 21:16:49 +08:00
@ysc3839 哎,有 NAT 的墙就不行,无论如何也无法发现对方。还是需要中继服务器,所以这是个无解的问题啊。
wgsgyes
2022-09-05 22:18:47 +08:00
楼主先研究 DeltaChat 试试,基于邮件协议的 IM
est
2022-09-05 22:28:33 +08:00
4chan 老哥和你想到一起去了。他们做了 tox

/t/193100
Vegetable
2022-09-05 23:14:24 +08:00
@wanmyj 成本不是加密,是为了加密和去中心化带来的妥协。你总不会觉得中心化没有任何优势吧,放弃中心化这些优势就是成本。
bbaihh2000
2022-09-06 00:12:01 +08:00
看下 session 这个软件
HankAviator
2022-09-06 00:21:40 +08:00
如果节点本身是不可信任的怎么办,如果 IP 可以通过某种方式反推回来,尤其端到端必定是直连到国内节点,那不是一抓一个准了

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

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

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

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

© 2021 V2EX