想基于电报开发完全去中心化的端端加密的即时通信 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 。

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

11166 次点击
所在节点    程序员
153 条回复
duanxianze
2022-09-06 14:23:35 +08:00
我觉的你要不试试发邮件?
allgy
2022-09-06 15:01:47 +08:00
感觉有些难度,能比 tg 做得好软件目前没发现
ipoh
2022-09-06 15:15:54 +08:00
@mokiki
@jadelike
@wanmyj
留个联系方式呗,我也打算做一个
ren2881971
2022-09-06 15:23:28 +08:00
你真刑啊
mokiki
2022-09-06 16:47:22 +08:00
@ipoh 或许我们应该先做一个文档项目。自己用虚拟机或 vps 等模拟多用户测试一下各种去中心的软件,介绍一下各种去中心化的软件特点,以及在中国网络环境中的局限。这个过程中也是在学习这些软件的设计。
mokiki
2022-09-06 17:04:37 +08:00
这个帖子中出现了各种各样的软件。如果我想在这些软件里聊天时插入图片或视频怎么办? http 链接不能保访问的持续性,必须得有去中心化的文件系统。ipfs 那帮人不想着弄个好用的 GUI 工具代替 BT (也许是怕背负盗版骂名),被加密货币吸引花费太多精力去开发 filecoin ,我是觉得不太靠谱,至少中国人的痛点他们不明白。

WEB3 怕是只有无 z 府主义者才能开发出来。
YLGG
2022-09-06 17:25:29 +08:00
我喜欢他的无限存储功能,可以搞一个不~
realpg
2022-09-06 20:31:15 +08:00
大部分人不干违法乱纪天怒人怨的事儿,不需要规避审查。
realpg
2022-09-06 20:36:40 +08:00
其实这种东西的最终形态是区块链。。。

消息广播,有私钥就能读给你的消息,一个大家共识全链不完整保存只留最新 30 天的链,也不需要代币,想维持这个网络运行就要有大量的人用爱发电。。。

如果协议深入搞搞能自称小链就更好了,做好 bootstrap 机制,支持合并链
bugFactory
2022-09-06 20:44:54 +08:00
挺刑的,你想在里面待几年呢?
mokiki
2022-09-06 21:07:26 +08:00
@realpg 没必要搞区块链这种全部数据全部人保存的方式,abc 三人小组的消息,没必要保存到 xyz 小组。网络吸血的问题,可以用“我欠 A 10GB 流量”然后用我的密钥签名发给 A 和共同好友。哪天我下载了指环王剧集,A 想看可以优先从我这里下载,这样就帐目就抵消了。并不必须用爱发电。

区块链的问题是现在炒作的人太多,自称为区块链只能吸引到苍蝇。
ChenYFan
2022-09-06 21:14:36 +08:00
关于 nat ,其实不是什么太大的问题。
我最近也在考虑这个(国内局势有点紧),nat 可以用 stun 技术解决大部分互联。
绝大多数家宽是限制端口锥或限制锥,n2n 成功率不低。学校或公司的对称型才是最大障碍。

我的想法是用户激励,由于 nat 穿透存在,大部分人都可以互联,少部分可以租用别人的带宽,通过中继出去。
用户激励可以类似 btc 那种发行代币,但是维护成本高。不激励随便用很容易造成滥用,这也是个头疼的点。

我自己计划是 kad ,纯浏览器,webrtc ,rsa 端对端加密,这是没有问题的。
Weixiao0725
2022-09-06 21:15:56 +08:00
@ooooo 当你所谓的其他的软件真正起来了,一样会变成下一个微信
ChenYFan
2022-09-06 21:17:05 +08:00
@mokiki 欠账只能用于小组群,不适合大规模推广。此外,无限欠账也是个问题,滥用还是解决不了
ChenYFan
2022-09-06 21:18:55 +08:00
此外,国内外有大量 stun 服务器,例如腾讯,虽然隐私确实不好把控,但是作为公用节点没有太大问题
ChenYFan
2022-09-06 21:25:21 +08:00
我是打算闲下来了先试着开发中心化区块链,中心服务器搞记账,链透明,用户转发中心服务器或其他用户流量盈利,然后发布消息消费,kad 网络广播(只转发到比来源桶小的节点),用户接到消息后签名回应,然后发布者打钱。

以上准确的说是聊天室的想法了,如果是点对点双人通讯就不用广播,能互联就免费,要租用就按流量计费

等情况稳定了再考虑去中心化,中心服务器主要记账和同步链指针,也参与 kad 做 tracker (这个不大重要)
mokiki
2022-09-06 21:36:19 +08:00
@ChenYFan
我不看好再创造一个比特币,纯付出型的中继,可以放出门罗币地址,其他人可以用门罗币买流量。现在搞代币给我的感觉就是骗钱加跑路的样子。

我的想法是有基础的公钥账户关系管理系统(信任关系,结余多少流量,ip 地址,可中继练习的其它公钥账户等),和底层的加密消息协议。以此为基础,可以在开发可以有两人间的消息软件,群聊软件,博客以及评论软件。取代豆瓣的影乐书评软件,甚至点开页面可以直接看电影,迪斯尼等如果愿意,可放出它们的门罗币地址,观影人自由付费。迪斯尼不愿这样,就直接打门罗币给字幕组账户。

对于第三方发布的软件,可以用虚拟机隔离以保安全,最基础的 linux 系统启动起来也就 10 多 MB 内存占用。
mokiki
2022-09-06 21:44:12 +08:00
@ChenYFan 如果有人无限欠账,就公开它的欠账数据。这样就没有人愿意和它交流了。这个账户等于死了。如果他新创建密钥怎么办,此时它就是新人,如果我有 100 个朋友可以联系,我为什么要冒险去和一个新账户交往?我肯定愿意联系一个 2 年 5 年 10 年的朋友联系,账户越用越有社会信用值,此时各种圈子都有记录老朋友的信用记录,我和老朋友传数据时肯定也更顺畅些,预防性握手流量数据都会少一些。
vy0b0x
2022-09-06 21:46:16 +08:00
类似的东西,我有过构思。
每个用户拥有自己的非对称密钥对,通过公钥的 Hash 组成 DHT 。当用户 A 想联系用户 B 时,通过用户 B 的公钥哈希在 DHT 定位目标 IP 和端口,再用双方的非对称密钥对进行对称加密的密钥交流,最后成功建立连接,进行通信。
我发现这个方法面临几个缺陷:
一,DHT 容易被探测,Github 上一抓一堆 DHT 爬虫,爬取下载的种子和下载者信息。
二,通信质量不稳定,尤其是在移动端,当用户在不同基站下切换过快,联系他的人会有一个重复搜寻目标用户端点的过程,这个过程体验会很不好,如果楼主用 BT 下载过冷门资源,就明白那个搜寻种子需要的时间会有多长。
三,离线消息没有地方储存。
我后来想了一个方法解决,那就是[代表]节点,代表节点取得用户授权的签名后,可以在网络中代替用户接发消息,和 Matrix 相似,但比 Matrix 好的一点是,用户的账号不存在于服务器中,用户可以随时更换一个代表节点。

但最后想了想去,终究是和市面上已有的、针对这个问题的 IM 变得越来越相似。
或许我们更好的选择真的是拥抱那些已有的 IM ,推进他们针对中国的问题本土化。

上面是我以前对类似项目的思考,下面是我自己对此类软件的特性的期望:
一,有网页客户端,这样能让其他人迅速加入。(基于 http 的 p2p 技术已经成熟,所以点对点不是问题。)
二,账号不需要注册,不保存在服务器之上,让没有技术的用户不用面临服务器关闭之后该怎么办的问题。(点名长毛象和 Matrix 。)
三,传输层协议可选,这样我们能融入广泛运用的协议,使得封禁变得困难。(举个例子,使用 WS+TLS 的梯子。)
四,可以分布式运行,但允许中心服务器的加入来优化用户体验,例,我们可以使用 DHT 来查找和储存用户公钥和端点,也可以接受一个服务器储存全网的公钥信息,让用户可以快速查找到端点信息,类似现有的 DNS 体系,只不过不分级。
五,第四点的延伸,协议允许服务器代表某用户参与网络,当服务器一直没有用户的消息,超出用户设定时限,服务器会删除用户所有信息。

我们可以从第四点和第五点入手,让商业行为发生。只有商业化,让人能够赚钱,才会有最大的可能保障通信的质量。赚到钱的人也会有动力让整张饼越来越大。(不要说非法没人做,那么多非法的梯子运营商赚钱赚得很爽。)

第五点可以让用户免于被嗅探、查水表。

一点不成熟的考虑,抛砖引玉。
mokiki
2022-09-06 22:11:41 +08:00
@vy0b0x 关于赚钱,我想过一些。可以直接卖软件赚钱。当然这个东西必须开源,假如哪天不做了也可以有人接手,用户至少也有维修权。现在的一些开源软件不赚钱是因为开源作者们没有把他们的收款方式放出来,操作系统也缺少收集使用信息和提示人付费的定时报告和分成建议,如果我的 Linux 系统有这样的定时提醒付费分成建议软件,有基金会愿意协助,我乐意每月付一笔费用给我用的 Linux 系统开发者们。

收入具体到一个软件的不同作者,这个一定要开始就设计好,软件的每个贡献者可以把自己的分成建议文档合并到项目里,内容大致如下:“我:0.1 ; A:0.2 ,B:0.05 ,D:0.65”
每个人的建议可能都不一样,付款用户可以按照项目贡献人的建议用工具自动计算一下折中方案。如果计算工具也能参考一下 git 记录的不同种类代码量和代码留存时间作为计算参数那更好。这样就没有一个中心角色,利益分成都交给用户。我们的环境所限,每个人都有未来不安感,金钱利益对大家还是比较看重的。我们也没有上帝视角可以准确衡量出每个人的贡献是多少,那就这样给出建议,让用户给我们自由付费。

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

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

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

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

© 2021 V2EX