V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
• 请不要在回答技术问题时复制粘贴 AI 生成的内容
shanyang88
V2EX  ›  程序员

IM 私聊应该都是点对点发送消息吧?

  •  
  •   shanyang88 · 2023-08-08 03:27:57 +08:00 · 3097 次点击
    这是一个创建于 506 天前的主题,其中的信息可能已经有所发展或是发生改变。

    应该没有是经过服务器中转的吧?包括所谓分布式的 matrix 。

    25 条回复    2023-08-08 19:31:47 +08:00
    gzlock
        1
    gzlock  
       2023-08-08 03:33:54 +08:00
    1 、A 和 B 都在内网时,他们怎么点对点连接上呢?
    2 、A 在 B 下线后发了一堆消息,怎么让 B 上线后可以收到这些消息呢?
    这两个问题的解决方法就是服务器做转发了吧
    chenjia404
        2
    chenjia404  
       2023-08-08 04:43:00 +08:00
    这个看具体的软件,大部分的都是服务器中转,只有少数类似 tox 、session 、berty 这样的软件才是真正的点对点。
    AbduHafiz
        3
    AbduHafiz  
       2023-08-08 04:52:42 +08:00
    看来你是门外汉,绝大部分都是中转。要审查。
    gdb
        4
    gdb  
       2023-08-08 07:14:51 +08:00 via Android
    我认为绝大部分 IM 应该都是服务器中转的。
    lovelylain
        5
    lovelylain  
       2023-08-08 08:15:59 +08:00 via Android   ❤️ 1
    服务器中转兼容性更好,内网可通、离线可留言、内容审查,只有语音视频通话可能会用到点对点,也可能服务器中转。另外要区别于点对点加密,点对点加密不代表点对点传输,是消息只能在客户端解密,服务端无法解密审查。
    ladypxy
        6
    ladypxy  
       2023-08-08 08:21:38 +08:00
    国内的所有 iM 没有点对点
    国外的要具体看,像 whatsapp telegram 私聊会点对点加密
    chingyat
        7
    chingyat  
       2023-08-08 08:25:15 +08:00 via iPhone
    @ladypxy 点对点加密和点对点连接又不是一回事
    yazinnnn
        8
    yazinnnn  
       2023-08-08 08:27:24 +08:00
    如果网络做不到 p2p, 你该咋点对点?
    ladypxy
        9
    ladypxy  
       2023-08-08 08:31:16 +08:00
    @chingyat 现在可以说是一回事。你能想起来名字的 IM ,只要提供了点对点,都是会加密的
    terrytw
        10
    terrytw  
       2023-08-08 08:32:44 +08:00
    你要找的是 jami
    terrytw
        11
    terrytw  
       2023-08-08 08:33:50 +08:00
    @ladypxy 完全不成立,e2e 加密的 IM 多了去了,点对点传输的几乎没有
    me1onsoda
        12
    me1onsoda  
       2023-08-08 08:40:04 +08:00
    如果没有中转做解编码,那不是把通信协议公开了吗
    ladypxy
        13
    ladypxy  
       2023-08-08 08:49:25 +08:00
    @terrytw 举几个例子?
    victorc
        14
    victorc  
       2023-08-08 08:56:44 +08:00
    要服务器转发,在服务器端不能落盘,过渡存在内存中
    wu67
        15
    wu67  
       2023-08-08 09:11:24 +08:00
    在服务器端中转. 然后服务器根据实现的不同, 有些是带 id 广播, 有些是直接给特定 id 推送/发送.
    最离谱的就是消息广播, IM 出事故聊串号就是这个原因, 尤其是那些文档没有明确注明的情况下.
    bl4ckoooooH4t
        16
    bl4ckoooooH4t  
       2023-08-08 09:13:58 +08:00
    点对点发消息无所谓的, 关键是服务器能不能解密你的聊天数据,这才是关键的。
    horizon
        17
    horizon  
       2023-08-08 09:38:58 +08:00
    这不是叫端到端么。。
    AhFei
        18
    AhFei  
       2023-08-08 10:39:40 +08:00
    matrix 的分布式指的应该是服务端可以自托管,服务端之间可以相互通信
    zbinlin
        19
    zbinlin  
       2023-08-08 10:45:21 +08:00
    matrix 会存在 homeserver 上,但进行端对端加密。
    jami 是真正 p2p 的,并且也是端对端加密的。
    firechat
        20
    firechat  
       2023-08-08 11:10:19 +08:00
    点对点的有几个问题:1 是对方不在线怎么办? 2 如果有多端不好处理 3 历史消息漫游 4 点对点有些网络下 p2p 是不通的还是需要 IM 服务中转 5 已经支持中转了还要再开发一个 p2p 的,增加复杂度。

    我们自己的私密聊天和电报的也都是中转的,当对方收下来消息后再删掉,不能算是绝对的 p2p ,这样就解决了对方不在线的问题,另外抛弃掉多端,如果对方有多个端,只能跟其中的一个端私密聊天。当然加密还是需要双方用 DH 算法生成密钥,服务器无法知道密钥来保证安全性。
    ClarkAbe
        21
    ClarkAbe  
       2023-08-08 11:11:04 +08:00 via Android
    nostr
    XiLingHost
        22
    XiLingHost  
       2023-08-08 11:37:04 +08:00
    建议 bitmessage
    ddd2500
        23
    ddd2500  
       2023-08-08 13:05:59 +08:00
    @firechat
    1, A,B 客户端先预生成公钥放于服务器,在一方 A 离线的情况下,B 可以从服务器取得预生成密钥来生成密文并缓存于服务器上,服务器并不能解密,A 上线后拉取密文并解密。
    2, 多端的话,每个端都是单独的加密。A1 ,A2 视为独立端
    3 ,历史消息可回溯是个问题, 但是新登陆 A3 后可以从 A1 ,A2 同步。
    4 ,点对点加密并不强要求 p2p, 重点在于,每个设备之间加密。 服务器中转密文也是安全的,因为前面的密钥协商过程需要服务器介入,包括离线缓存,账号管理都要服务器的涉及。
    5 ,中转和 P2P 的关系可以看一下 webRtc 的相关方案,简单地说可以建立 p2p 就 p2p ,p2p 速度不理想,或者网络有问题或者是一对多播放等情况采用服务器转。
    以上是我自己的理解,不一定正确。
    firechat
        24
    firechat  
       2023-08-08 14:17:59 +08:00
    @ddd2500 非对称加密非常消耗资源,一般情况下都是用非对称加密协商出来一个密钥然后双方再用这个密钥对称加密进行通信,这也就是所谓的“建立密聊会话”的操作。电报就是这样,可以发起普通的一对一聊天,也可以建立密聊会话,在密聊会话里,就不考虑多端和历史消息的问题了。
    whrssl
        25
    whrssl  
       2023-08-08 19:31:47 +08:00
    Session 这个 APP 应该是端对端,匿名程度比其他相应的 APP 要高,只可惜用的人很少。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   982 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 29ms · UTC 21:09 · PVG 05:09 · LAX 13:09 · JFK 16:09
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.