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

聊天软件端对端加密疑问

  •  
  •   Skeleies · 2022-04-25 15:49:38 +08:00 · 7334 次点击
    这是一个创建于 725 天前的主题,其中的信息可能已经有所发展或是发生改变。
    我是技术小白,只是网上道听途说聊天软件采用端对端加密很安全,国外的知名聊天软件很多是默认或者可以设置端对端加密;至于微信和 QQ 听说是有加密,但是没有采用端对端加密,至于什么原因不清楚。
    最近在小米应用商店发现三款聊天软件:JSPP 、事密达、JusTalk ,三款软件的应用商店下载页面介绍里面都提到采用端对端加密,下载体验了一下,感觉一般,有的有会员功能,有的有类似漂流瓶的功能。有没有什么办法检验软件是否采用了端对端加密?就好像听说 Whatsapp 支持端对端加密,这个是靠他们自己说的还是有什么办法检验?
    第 1 条附言  ·  2022-04-25 21:30:35 +08:00
    感谢各位 V 友的回复。看了一下评论,回复一下,我并没有想在小米应用商店搜索“端对端加密聊天软件”,我是在搜索一款软件的时候,在搜索结果下面看到这几款软件的,看了写了端对端加密保护隐私,我就有点好奇,现在应用商店允许上架这种内容不能完全被监管的软件了?这几款软件说是端到端加密,是真的吗?有什么办法检验吗?还是凭他说是就是?我是技术小白,对这种技术不了解,之前听说 WhatsApp 是端到端,Line 是端到端,想着也是靠他们说的?还是有什么检验技术。我并不是询问怎么保护隐私,有哪些端到端软件?我只是想问下从技术上有没有办法检验这种软件是不是真的端到端加密。我并没有询问有哪些端到端加密软件可以用。
    44 条回复    2022-05-03 16:16:19 +08:00
    Chism
        1
    Chism  
       2022-04-25 15:59:34 +08:00 via Android   ❤️ 2
    原理是,你用私钥加密消息,然后把密文和公钥发给服务器?
    biubiuF
        2
    biubiuF  
       2022-04-25 16:00:30 +08:00   ❤️ 8
    举报,被下架了说明是真的有端到端加密,没下架就是假的
    xianyv
        3
    xianyv  
       2022-04-25 16:05:55 +08:00
    @biubiuF 好方法,哈哈哈哈哈
    codefever
        4
    codefever  
       2022-04-25 16:09:03 +08:00
    微信的话,有权限可以看到你所有的通讯记录,但是其他具有恶意的第三方比较困难(有 tls ,懂得都懂。但除了 tls 之外,没有其他的了),想端对端加密就发邮件。
    yfugibr
        5
    yfugibr  
       2022-04-25 16:12:13 +08:00 via Android
    通常说的是,客户端到客户端加密,但国内特色“端到端”一般指客户端到服务端
    neteroster
        6
    neteroster  
       2022-04-25 16:13:26 +08:00 via Android
    自己用 PGP
    agagega
        7
    agagega  
       2022-04-25 16:15:05 +08:00
    Signal. 不过我觉得强制手机号注册的聊天软件都很恶心。即使在手机号不实名制的国家,手机号的匿名性和邮箱也不是一个级别的
    cxtrinityy
        8
    cxtrinityy  
       2022-04-25 16:22:00 +08:00
    闭源的软件的话, 感觉有点难验证, 端对端加密意味着只有会话方可以解密, 要验证这点可能很难, 至于是不是加密倒是很容易验证, 如果是使用 https 交流, 可以自己做中间人, 但即使读取了 https 的密文发现聊天内容的确额外进行了加密, 你也无法确定持有解密密钥是不是只有会话方.
    开源如 Telegram 则可以通过看源码来确定.
    fisherwei
        9
    fisherwei  
       2022-04-25 16:33:53 +08:00
    理论上有端到端加密的聊天软件,电脑和手机同时登录一个账号,同一时间的聊天信息应当只有一个设备可以看到。即:电脑和手机不应当(通过服务端)交换私钥。

    微信那个就别说了,18 年不是曝光有一个有关部门的 elasticsearch 未加密,里面全是聊天记录么。
    DonDonc
        10
    DonDonc  
       2022-04-25 16:59:16 +08:00
    中华人民共和国国家互联网信息工作室《具有舆论属性或社会动员能力的互联网信息服务安全评估规定》:

    第三条 互联网信息服务提供者具有下列情形之一的,应当依照本规定自行开展安全评估,并对评估结果负责: 
    (一)具有舆论属性或社会动员能力的信息服务上线,或者信息服务增设相关功能的;

    第五条 互联网信息服务提供者开展安全评估,应当对信息服务和新技术新应用的合法性,落实法律、行政法规、部门规章和标准规定的安全措施的有效性,防控安全风险的有效性等情况进行全面评估,并重点评估下列内容:
    (三)对用户的账号、操作时间、操作类型、网络源地址和目标地址、网络源端口、客户端硬件特征等日志信息,以及用户发布信息记录的留存措施;
    (四)对用户账号和通讯群组名称、昵称、简介、备注、标识,信息发布、转发、评论和通讯群组等服务功能中违法有害信息的防范处置和有关记录保存措施;
    (七)建立为网信部门依法履行互联网信息服务监督管理职责提供技术、数据支持和协助的工作机制的情况;
    (八)建立为公安机关、国家安全机关依法维护国家安全和查处违法犯罪提供技术、数据支持和协助的工作机制的情况。
    BBCCBB
        11
    BBCCBB  
       2022-04-25 17:11:23 +08:00
    国内内容都要监管, 公开的应用基本不可能端对端加密? dddd
    unco020511
        12
    unco020511  
       2022-04-25 17:13:28 +08:00
    端到端就没法做过滤 /鉴黄这些,国内如果没有这个能力,是不能上架的
    rioshikelong121
        13
    rioshikelong121  
       2022-04-25 17:18:29 +08:00
    你为什么会想到去小米商店里面下载正儿八经的端对端加密软件。
    Elaina
        14
    Elaina  
       2022-04-25 17:21:21 +08:00
    能上架的想都不用想,肯定不是端对端
    TomChaai
        15
    TomChaai  
       2022-04-25 17:22:14 +08:00
    @BBCCBB 端到端加密是可以内容监管的,靠举报者上传解密的内容,发送者老被举报的话封号。
    如果消息加密前生成一个摘要上传,被举报了之后批量拉黑这个摘要,可以在不泄露信息内容的情况下批量对信息限流。
    但这种监管,国内肯定觉得不够。
    TomChaai
        16
    TomChaai  
       2022-04-25 17:25:46 +08:00
    国内监管的要求,群聊肯定是可以解密的,一对一聊天不太清楚。
    要验证端对端加密,要查客户端在创建密钥对的时候,绝对不会上传私钥,以及客户端发信的时候,只会问服务器要目标客户的公钥,而不是偷偷摸摸给王晶也发一份。
    目前好像没人研究这个,因为默认国内都是可以看到的
    Leonard
        17
    Leonard  
       2022-04-25 17:26:27 +08:00
    没有被墙的就不是端到端加密。
    liuidetmks
        18
    liuidetmks  
       2022-04-25 17:29:36 +08:00
    国外端到端只有一个叫 signal 的吧, 电报都不能算.
    caqiko
        19
    caqiko  
       2022-04-25 17:30:26 +08:00
    @TomChaai 这样举报岂不是很容易伪造证据(聊天截图和文本内容)?
    aeli
        20
    aeli  
       2022-04-25 17:44:48 +08:00
    @liuidetmks 电报 1 对 1 是端到端加密吧,群聊不是加密而已。
    TomChaai
        21
    TomChaai  
       2022-04-25 17:46:20 +08:00   ❤️ 1
    @caqiko 并不是用户可以直接干预的上传功能,由客户端封闭实现。
    此外我提到的摘要功能也可以防伪。
    TomChaai
        22
    TomChaai  
       2022-04-25 17:47:42 +08:00   ❤️ 1
    @caqiko 此外仔细一想,根本不需要额外的摘要做防伪,只要上传的消息内容,和用公钥重新加密出来的内容不一致,就可以确认是伪造的举报了
    efaun
        23
    efaun  
       2022-04-25 17:52:48 +08:00
    "至于什么原因不清楚": 政策原因

    "检验软件是否采用了端对端加密": 连续多次说反动言论, 看是否喝茶
    zuoshoufantexi
        24
    zuoshoufantexi  
       2022-04-25 18:11:44 +08:00
    Signal 强制绑定手机号,而且还能显示,再怎么加密有个 P 用。
    真要加密,用 MATRIX 自建吧。
    1002xin
        25
    1002xin  
       2022-04-25 18:31:52 +08:00
    你在国内做通讯软件还想端对端加密
    libook
        26
    libook  
       2022-04-25 18:32:24 +08:00
    没法检验,通常只能通过签订保密协议来确保法律上的保密义务,你要真想做到端对端安全只能对通讯工具的代码、部署环境、运营方管理方式等进行审计。

    国内有法定管控义务,所以不大可能有真端对端加密的工具合法经营,除非是企业团体自建自用,反正谁运营谁负责。
    wtdd
        27
    wtdd  
       2022-04-25 18:40:09 +08:00   ❤️ 3
    国内不可以加密,老大哥看不见你们聊什么,心里不舒服
    huangmingyou
        28
    huangmingyou  
       2022-04-25 18:40:25 +08:00
    pidgin 有 gnupg 插件,以前聊 msn 就可以加密。 但是普通人真没有加密需求。 况且输入法也能泄密。
    llk
        29
    llk  
       2022-04-25 20:24:52 +08:00
    @aeli 电报 1 对 1 的端对端加密要手动打开才行
    Jabin
        30
    Jabin  
       2022-04-25 20:31:52 +08:00
    二楼的方法, 应该可行
    分享一个应用
    keybase.io
    End-to-end encryption for things that matter.
    Keybase is secure messaging and file-sharing.
    rickiey
        31
    rickiey  
       2022-04-25 20:42:23 +08:00
    keybase +1
    duke807
        32
    duke807  
       2022-04-25 22:10:45 +08:00 via Android
    客戶端開源是端到端加密的必要條件,不開源的話就不用看了,真假都沒意義

    建議用 matrix

    或者用第三方開源加密工具:
    https://www.v2ex.com/t/832302
    jones2000
        33
    jones2000  
       2022-04-25 23:00:33 +08:00
    端对端就是一个伪命题,所有的设备都需要有一个公网 ip 才行,你一个局域网怎么端对端,路由不给你开映射,歇菜。
    只要经过服务器中转的基本就不安全。就看要不要保存你的信息了。 在牛逼的加密, 只要有服务器存的样本数据够多,理论上来说都是可以推导破解出来。
    DonDonc
        34
    DonDonc  
       2022-04-25 23:05:23 +08:00
    看到附言,回复一下 OP 的问题:
    - 我前一条复制了《具有舆论属性或社会动员能力的互联网信息服务安全评估规定》,现在上架的 IM 软件应该都要提交自我评估表,也就是说它们都不是「不能完全被监管」;
    - 它们声称「端到端加密」,但是也可能是话术,是指「客户端到服务端」;
    - 在技术上无法简单检验是否真的是「端到端加密」,需要抓包传输的数据,逆向软件的行为等操作。即使是开源软件,你也无法保证在商店上架的版本是完全按照公开的源码编译构造的。这是安全和信任的问题,绝对的安全就需要自己审计代码和编译。WhatsApp 和 Line 也只能靠厂商承诺。
    FrankHB
        35
    FrankHB  
       2022-04-26 03:25:02 +08:00
    @jones2000 除非一次一密,再牛逼的加密都能爆破,无非资源问题,这不废话么。
    Cielsky
        36
    Cielsky  
       2022-04-26 07:19:28 +08:00 via Android
    @caqiko telegram 也有举报功能啊,什么也不需要提交
    xx219
        37
    xx219  
       2022-04-26 09:54:25 +08:00
    宣称是端对端的,实际上服务器都能解密能力的,不然不满足监管要求
    nothingistrue
        38
    nothingistrue  
       2022-04-26 10:08:13 +08:00
    只能能连上,端对端加密是很好实现的,公钥加密私钥解密即可,“连接上”这个阶段,技术上也是没难度的,但是监管上的难度比上天都难。
    cxe2v
        39
    cxe2v  
       2022-04-26 10:12:11 +08:00
    @DonDonc #34 开源这个肯定有人去验证过上架版本的 hash 跟自己编译源码的 hash 是否一致的情况
    indexError
        40
    indexError  
       2022-04-26 11:04:31 +08:00 via Android
    看看能不能发送 100 汉字 如果没分片 会报错
    DonDonc
        41
    DonDonc  
       2022-04-26 12:22:30 +08:00 via iPhone
    @cxe2v 编译环境可能无法做到一致,发布时需要加上证书等情况,最后哈希会不同,现在开源软件会靠自动编译以及公开编译脚本。但是依旧没办法 100%保证靠谱。绝对的安全代价很大,普通人只能相信某个权威。
    imtianx
        42
    imtianx  
       2022-04-26 17:30:54 +08:00
    comingchat 了解下,隐私聊天,支持 web3, 数字钱包等😁。https://www.coming.chat/
    8520ccc
        43
    8520ccc  
       2022-05-03 16:12:58 +08:00
    我的理解

    现有的用户不自行保存私钥的情况下实现的端到端加密方式如下:

    用户 A 用户 B 分别生成私钥+公钥

    然后将 公钥发送到中心化的服务端

    A B 之间通讯时需要先去查询获取对方的公钥

    然后彼此的消息使用对方的公钥加密,对方使用私钥解密

    当然了这样性能不够好,可以按时间生成对称加密密钥,两者仅需在一段时间内协商好对称密钥即可

    此时会存在一个小问题,如果 A 或 B 用户完全退出登录 APP 清楚数据

    重新登录后将失去查看历史记录消息的能力

    因为私钥是不可以上传的服务器的

    即仅可以在客户端可见

    同时若多客户端同时登录一账户也会存在问题,新的设备没办法获取当前的私钥

    当前服务商可以选择从旧设备上面加密获取

    但是此操作可能会被服务商利用

    比较好的处理方式就是,新设备登录时需要任意一个旧设备点击确认(点击确认就代表把旧设备的私钥以安全的方式传输给新设备)

    这样可以实现多客户端同时登录


    -----------------------------------------------------------

    回归原题,检测是否为端到端加密,那就是审核客户端代码了,只要客户端的代码中没有将客户端生成的公钥上传的服务端那就没问题!或者说即使有上传私钥的情况也是必须经过用户确认授权然后加密传输到新设备的!

    PS:事实上这种确认授权的方式依旧可能被服务商利用,然后获取你本地的私钥,即使需要用户确认(因为服务商可以返回一个伪装的新的客户端的公钥)

    除非旧设备直接扫码获得新设备的公钥,然后直接上传服务商传输

    那么此时的私钥传输是安全的

    ---------------------------------------------------------------

    事实上对于普通用户,想要完全验证几乎不可能的!!!

    因为即使客户端代码开源,但是上架到 app store ,google play 以及其他平台的客户端编译后的软件你没办法确认是否携带了私货

    此时大概能有以下几种方案进行解决
    一,抓包验证,客户端的所有请求都是可以被抓包后解密出原文的,可以通过此 APP 的全部网络通讯来确定不存在上传额外的信息
    二,自行编译源码

    --------------------------------------------------------------

    其实也有另外的实现方式,那就是用户自行保存私钥的模式

    这就是目前 web3 社交 /聊天项目的实现了
    8520ccc
        44
    8520ccc  
       2022-05-03 16:16:19 +08:00
    @imtianx 都不开源 隐私与安全只能靠项目方嘴保证了
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   929 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 28ms · UTC 20:31 · PVG 04:31 · LAX 13:31 · JFK 16:31
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.