V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
moonrailgun
V2EX  ›  程序员

请教大家关于开源项目支持 e2ee(端到端加密)的必要性?

  •  
  •   moonrailgun ·
    moonrailgun · 310 天前 · 1475 次点击
    这是一个创建于 310 天前的主题,其中的信息可能已经有所发展或是发生改变。

    我开发了一款即时通讯应用 Tailchat

    但是在我宣传的时候总是会有同学询问通讯是否加密。

    一般来说,我们谈论到通讯加密一般是指 e2ee(端到端加密)

    为不了解相关知识的同学简单说一下,端到端加密是一种技术方案,通过在聊天的双方互换公钥,然后对消息内容进行非对称加密,然后传输消息到接收方后接收方用自己的私钥对加密的数据进行解密,这意味着传输过程中的介质(服务器)是无法得知加密后的消息的,也就意味着无法监听聊天双方的通讯内容。
    

    那么:

    e2ee 诞生的目的是为了隐私安全

    开源项目的一大重要的好处也是隐私安全,因为你可以将项目部署到自己的服务器。

    因此我的问题是,在开源项目追求 e2ee 真的有必要吗?

    PS: 我明白两者的安全追求的是不同的方向,主要是 e2ee 的技术实现意味着需要放弃一部分功能,比如新加入会话的用户无法看到过去的聊天记录(因为新加入的用户无法解密过去的数据, 而我的项目设计是需要新用户能够看到过去的历史消息的,这是一个刚需)比如万人聊天时的性能问题(网状公钥交换)等等问题。

    PPS: 在后续会有计划专门做密聊频道相关功能,但是因为事情很多所以想问下大家的看法,对于这种需求的必要性。因为 v2 的 dalao 们都是在国内有远见卓识、质量最高的一批程序员, 所以请教一下大家的看法对我来说非常重要

    17 条回复    2023-06-30 09:49:13 +08:00
    0o0O0o0O0o
        1
    0o0O0o0O0o  
       310 天前 via iPhone
    自己部署并不等于隐私安全,因为你需要信任云服务商,你还需要信任开源软件服务端没有漏洞,你还需要信任自己服务器的安全防护能力。

    e2ee 你只需要信任客户端。
    MFWT
        2
    MFWT  
       310 天前
    建议是单独制作 E2EE 功能,入口放在醒目处就可以了,毕竟有时候还是有这个需要
    wheat0r
        3
    wheat0r  
       310 天前   ❤️ 1
    我的理解是要看你的目标用户是谁。
    普通的家庭用户根本不会想到加密这回事,一般特别提起他们才会说自己在乎,到服务器加密就够了。
    你问程序员当然是要端到端加密。
    臭打游戏的开黑根本什么都不在乎,
    政府里用的话就只能到服务器加密。
    delete26
        4
    delete26  
       310 天前
    这个 ui 很像是 discord
    YGHMXFAL
        5
    YGHMXFAL  
       310 天前   ❤️ 1
    1.我个人还是倾向于能有端对端加密功能

    2.至于你作为开发者,考虑是否需要这个功能,衡量标准难道不应该是目标用户群吗?比如说你如果想面向大陆用户,那肯定不能上这个功能.或者说上了这个功能也只能是阉割版,自己砸招牌,那还不如不上

    3.推广是一个问题,没有通讯加密需求的人,TA 不觉得你这产品比 QQ 微信强.有这需求的人,还有电报 Matrix 等等成名已久地竞品在呢,你得拿出杀手锏功能才有吸引力,否则单纯地端对端加密不能算是核心竞争力

    4.最后还是自己一个人玩(这也是大多数新 IM 的共同困境)
    moonrailgun
        6
    moonrailgun  
    OP
       310 天前
    @0o0O0o0O0o 如果讨论到这些情况 e2ee 也并不是完美的。只能说相对安全罢了。信任客户端、信任服务端、信任宿主机、信任服务器,其实没有本质区别。安全的本质就是在不断拉高攻击者的成本与付出。

    @MFWT 我也是这么想的,不过人力有限需要考虑优先级,所以问问论坛里大家的看法

    @wheat0r 感谢你的回复,不过我作为程序员我确实没觉得端到端加密有什么必要性,毕竟我常用的 90%的软件都没有这个功能。。。反而如果一条消息我在电脑端能看手机端不能看我反而会觉得很困扰( e2ee 的各种边界 case 之一)。而我的目标用户应该也不会追求 e2ee ,只是我想尽可能满足常规的要求(老实说另一方面是 e2ee 虽然可能在乎的人实际并不会很多,但是作为一个宣传点是非常好的)

    @delete26 是的,设计时对市面上的竞品都有一些调研。
    wheat0r
        7
    wheat0r  
       310 天前
    @moonrailgun 程序员追求 e2ee 并不一定不是因为真的需要,而且认为自己应该拥有更好的隐私保护
    moonrailgun
        8
    moonrailgun  
    OP
       310 天前
    @YGHMXFAL 十分感谢你的回复!确实单纯的端到端加密并不会给我带来太多的流量。而我的项目的特色功能是开放式的插件系统,单纯的跟随前人做过的事情给我带来的竞争力并不会有什么优势,我应该更加专注于我的特色功能。
    (毕竟万一之后生态起来了有好心人帮我做了 e2ee 频道的插件呢(笑))
    Jirajine
        9
    Jirajine  
       310 天前
    开源、自部署、端到端加密是完全不同的事。

    不过通常端到端加密的应用都是开源的,至少客户端要开源,不然端到端加密等于是没有。

    以 IM 工具来看,端到端加密当然是有必要性的,但非端到端加密同样也有必要性。这适用于不同的需求,开放的群组搞端到端加密没有任何意义。
    YGHMXFAL
        10
    YGHMXFAL  
       310 天前
    @moonrailgun 就是这意思,既然你有插件系统,那就拿可扩展性当卖点好了,就和电报机器人一样地定位,确实后期真火了肯定有人愿意开发这种 E2EE 插件,你现在就先把插件系统名声打出去好了
    chenjia404
        11
    chenjia404  
       310 天前
    群聊不需要端对端加密,私聊端对端加密,既然选择群聊了,端对端加密就没有意义了。
    你们可以复用 Signal 的协议,这个经过很久的历史考验。
    DenseHazy
        12
    DenseHazy  
       310 天前
    私聊有必要,至于功能可以做成类似 matrix 和 telegram 的加密对话功能,正常聊天可以跨客户端同步记录,而开启这个模式之后只能在本机查看. 群聊感觉意义不是非常大
    MFWT
        13
    MFWT  
       310 天前
    @moonrailgun

    那么最好就是先实现私聊 E2EE ,毕竟就 E2EE 这个需求而言还是点对点分享私密信息多
    flyqie
        14
    flyqie  
       310 天前 via Android
    端到端加密仅适用于私聊。

    群聊不应该使用端到端加密,因为这样的话端到端就没有啥实际意义了。。
    harrozze
        15
    harrozze  
       310 天前
    你把群聊的”群“当做一个虚拟用户呢?这个用户就是村口大妈,负责搜集各路消息和广播,自己不产生消息。这样的话,e2ee 和群聊历史就不冲突了。大妈只是把历史消息用新用户的 key 重新加密一次发给他。
    moonrailgun
        16
    moonrailgun  
    OP
       308 天前
    @harrozze 你可能没有理解端到端加密。端到端加密就是为了避免服务端看到消息。而群组是控制在服务端下面的。。。

    你的方案解决的其实是加密传输,这个通过 https 协议就可以解决
    harrozze
        17
    harrozze  
       307 天前
    @moonrailgun #16 是我一时忽略了群是在服务器侧这件事儿了。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   2275 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 37ms · UTC 06:25 · PVG 14:25 · LAX 23:25 · JFK 02:25
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.