V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
duke807
V2EX  ›  问与答

群聊 端到端加密 為何不用我這種簡單的方法呢?

  •  
  •   duke807 · 240 天前 · 1026 次点击
    这是一个创建于 240 天前的主题,其中的信息可能已经有所发展或是发生改变。
    想問一下為何群組端到端加密都要搞那麼麻煩呢?我用了多年 matrix ,基本都不敢開加密。我設想的方式如下,想請教是否有考慮不周的地方,謝謝。

    無論是 私聊 還是 群聊,非端到端加密基本都是使用 RSA 類型的方式維護好友 /成員,我認為:端到端加密應該在此基礎之上使用 AES 類型算法加密數據內容,因爲較大的數據用對稱加密效率高。

    任何一個管理員(私聊的話,雙方都是管理員),都可以主動更新 AES key (依次用各成員的 RSA pub key 加密隨機生成的新的 AES key 然後分發),一個聊天室同一時段共享同一個 AES key 。
    AES key 可以定時(或者根據聊天條數)更新,除非所有管理員都不在線才延遲更新,還有增減成員的時候要更新 key 。

    至於安全性,羣聊本來就必然存在風險,譬如某個成員的 RSA private key 不小心泄漏,或者該成員故意截圖外發。
    使用上述 AES 加密並不會增加風險。

    AES key 每次由某個管理員更新時,用 RSA pub keys 加密的數據總共也不會很大,一個用戶 256 字節的加密數據(譬如使用 rsa-2048 ),一萬人的群總共也才 2.56 MByte 數據,此數據一次性上傳到服務器,每個成員只需要抓取自己對應的 256 字節數據就行。普通設備 rsa-2048 (或者更強)加密一萬次也才一兩秒而已。
    5 条回复    2022-02-08 15:39:39 +08:00
    msg7086
        1
    msg7086  
       240 天前
    如何确保其他成员发给你的 RSA pub key 没有被篡改?
    最后还是要 fallback 到 DH 家族。
    duke807
        2
    duke807  
    OP
       240 天前 via Android
    @msg7086 我說錯了,非端到端加密是不需要 RSA 的

    pub key 防止交換的時候被竄改:matrix 是通過圖案驗證的方式,類似雙方都生成一個字符串,用戶自行通過其它途徑確認字符串相同。(其它途徑譬如面對面加好友、打電話、使用其它 IM 工具、使用第三方閱後即焚工具等。)

    我的中心思想沒有變:群組聊天,管理員負責維護所有組員的 RSA pub key 信息,普通成員之間不用相互交換 RSA pub key
    msg7086
        3
    msg7086  
       240 天前
    hmmm 那好像也没什么大问题啊。
    现今使用的是什么加密方式呢?我以为一般通信都是用 AES 和 Chacha20 实现的了。
    首先通过 DH 获得一条加密信道,然后互相认证公钥,最后协商一个对称加密密钥。
    duke807
        4
    duke807  
    OP
       240 天前 via Android
    @msg7086 Chacha20 和 AES 是類似的,都是對稱加密,AES 用的人更多吧,而且有硬件加速

    DH 和 RSA 是類似的,都是非對稱加密,DH 貌似只有加密功能,而 RSA 除了加密還可以簽名,RSA 用的人也更多一些

    DH 交換 key 同樣不能避免中間人攻擊,因為你協商的對象很可能是壞人

    所以,要靠用戶自行確認對方身份是必須的

    現在的問題是,/t/830674 提到的一些方案,對稱加密 key 不是全員共享的,還有普通成員需要兩兩之間交換 非對稱 和 對稱 key ,或是用更複製的 tree 管理各種 key ,感覺都太複雜了(複雜的結果就是大家都不願意用端到端加密了,雖然這些都是程序自動操作,但是用戶要備份各種 key ,不清楚原理很容易出問題,我的 matrix 的各種 key 換設備後都亂套了,我早放棄了)

    不知道我說的全群組共享同一個對稱 key 、非對稱 key 僅管理員和普通用戶之間交換,這種方式是否有弊端
    duke807
        5
    duke807  
    OP
       240 天前 via Android
    更正錯字:複製的 tree 管理各種 key -> 複雜的
    关于   ·   帮助文档   ·   API   ·   FAQ   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   1114 人在线   最高记录 5497   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 37ms · UTC 23:50 · PVG 07:50 · LAX 16:50 · JFK 19:50
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.