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

真正的点对点聊天通讯隐私实现想法

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

    实现想法:

    A 发送消息给 B

    检测是否持有 B 的公钥  
    
        若有,使用 B 的公钥对消息进行 RSA 加密并发送。  
        若无,则先请求 B 传输公钥过来,B 生成公私钥并缓存在本地。  
    
    B 收到消息后,使用自己的私钥进行消息解密。  
    

    B 发送消息给 A
    同理

    我想,这样应该才是能实现真正隐私通讯的,连服务提供方都无法窃取消息的,而不是市面上一些聊天软件慌称的“隐私”。

    这种通讯隐私方案可实现吗?会有软件愿意为了用户隐私而实现吗?

    第 1 条附言  ·  60 天前
    看了大伙回答,补充几点我的想法:
    这里我说的是解决聊天内容隐私问题。
    我看到大家说中间人攻击,我想法是这不需要我去处理吧,上一层网络通讯的时候是 HTTPS 呢,这一层可以解决。

    第二个,大家说 RSA 效率问题,这怎么会有问题呢,AB 客户端,只解自己的消息,CPU 这点能力都没有吗?这根本不在考虑问题内。
    服务端才要考虑这个问题,因为服务端 RSA 解密的话,是要面对 N 多个客户端的。
    125 条回复    2021-07-31 09:38:45 +08:00
    1  2  
    blackshow
        101
    blackshow   59 天前
    jim9606
        102
    jim9606   59 天前
    你这个已经是大幅简化的模型,E2E 聊天软件通常是使用 A 和 B 的 RSA/ECC 密钥对通过密钥交换算法(例如 DHE/ECDHE )获得双方共享的 Session Key (对称密钥),用这个进行消息加解密。

    问题在于虽然 Session Key 建立后服务器无法窃取信息,但它可以干涉公钥传递,A 不能保证拿到的公钥是 B 的公钥还是 C 的公钥。
    Huelse
        103
    Huelse   59 天前
    @jim9606 所以要有数字签名
    liuidetmks
        104
    liuidetmks   59 天前
    @lonnyzhang 交换 m 和 n 过程中,服务器被黑客攻击了,服务器自己生成 m1 n1 ,替换发给对 A,B,一人分饰两角, 后面所有的消息都能被服务器拦截并转发。
    当然,AB 也可在建立信道之后,给对方发一次自己的随机数,这样就知道是否被攻击,可相应的黑客也能篡改消息内容,更进一步的欺骗。
    rpman
        105
    rpman   59 天前   ❤️ 1
    我一直认为计算机是民科最泛滥的行业
    rrfeng
        106
    rrfeng   59 天前   ❤️ 2
    好家伙,100 多层楼里一半多想法安全的都跟筛子一样……
    lonnyzhang
        107
    lonnyzhang   59 天前
    @liuidetmks 再仔细看看,key 只在 AB 端生成,不会经过网络传输,包括服务器都是不可能知道的。所以即使服务器自己就是“黑客”,它也不可能知道 AB 两端用 key 对称加密后传输的是什么内容。
    maybedk
        108
    maybedk   59 天前
    @liuidetmks 哈哈,抓包软件都是这么抓 https 的
    0576coder
        109
    0576coder   59 天前
    @agee
    如果端到端的代码还是被看到的话 ecdh 也没用 也能伪造中间人攻击 或者被中间人猜出了算法 也有可能是中间人攻击
    jimmyismagic
        110
    jimmyismagic   59 天前
    telegram, keybase 了解一下
    LnTrx
        111
    LnTrx   59 天前
    @rpman 但也是最好拆穿民科的行业,因为往往可以用构造性证明( show me the code )
    Meano
        112
    Meano   59 天前
    楼里的人都不在一个层次啊,楼主还在想怎么用 RSA 做(密钥?数据?)交换呢,有些朋友已经在讨论公钥可靠性了。

    加密通信的风险除了监听风险外,主要还是密钥协商时的公钥风险( CA 劫持,公钥伪造等),也没人提 IBE 啊,相比 DHE/ECDHE,IBE 用 User ID (公开,比如邮箱,相当于见字如面,不易伪造)+ 随机数(私钥)生成用户协商公钥,用户可以互相通过主公钥和 User ID 验证协商公钥是否来自于对方,相当于签名,可能的风险就看算法有没有后门了,主公钥如果受到干扰协商也不会成功。

    @jim9606 这样应该没法做公钥干涉吧

    倒是计算开销比较大,目前看到的 IBE 算法都是用双线性对,前段时间搞过 SM9 通用 CPU 计算,不用 Native code 耗时到秒级了
    lonnyzhang
        113
    lonnyzhang   59 天前 via Android
    @liuidetmks 真正的端到端加密只会在端生成密钥,是不会经过网络传输的,服务端也破解不了传输的内容。
    anonymous256
        114
    anonymous256   59 天前
    keybase,信息完全密钥加密
    LeslieLeung
        115
    LeslieLeung   59 天前 via iPhone
    跟楼主有一样的想法 所以我做了一个这个 目前只开源了客户端 服务端暂时没时间上传
    其实这个方案考虑不完全 不能防范中间人攻击 但是加上证书和签名就可以了
    https://github.com/LeslieLeung/silbo
    clearc
        116
    clearc   59 天前 via iPhone
    看内容和讨论,有一种十来年前复古的味道了
    godblessumilk
        117
    godblessumilk   58 天前
    zl939144892
        118
    zl939144892   58 天前
    量子纠缠 手动狗头
    liuidetmks
        119
    liuidetmks   58 天前
    liuidetmks
        120
    liuidetmks   58 天前
    @lonnyzhang
    你的意思我了解,可能是我没说清楚,你没了解我说的意思

    服务器生成 (x,y)时候,同时自己模拟两个客户端 A1(用于和 B 通信,并生成 m1= x^r3 %y ) B1 (用于和 A 通信,并生成 m2 = x^r4 %y ),r3 ,r4 随机

    AB 在交换中间 m 和 n 的时候,肯定会通过服务器,服务器这时候 收到的 m 和 n 截流,把 n1 发送给 A,把 m1 发送给 A 。
    A 得到的密钥 m^n1 = n1 ^ m = x^(n1*m) % y
    B 得到的密钥 n^m1 = m1 ^ n = x^(n*m1) % y

    这样 A 和 B 不知情的情况下,分别和服务器建立了点对点加密通信,这样,服务器就完成中间人攻击了。
    newmlp
        121
    newmlp   58 天前
    https 加可信任证书才能保证不被劫持,只有 https 是不能保证不被劫持流量的
    wa007
        122
    wa007   58 天前 via iPhone
    @finab 这就不是通信能解决的问题了
    wa007
        123
    wa007   58 天前 via iPhone
    @lakehylia 哈哈哈哈哈哈哈哈,说到点子上了
    lonnyzhang
        124
    lonnyzhang   58 天前
    @liuidetmks DH 算法本身不具备身份鉴定功能,一般要和数字签名结合才能防止中间人攻击。
    piku
        125
    piku   57 天前
    你们
    唉,不知道说什么好
    真正的点对点通讯,为什么会走公网环境,必然是点对点专线啊
    还可以走大功率无线网桥
    或者搞一对数字对讲机,随便加个密码,第三方就没辙了
    1  2  
    关于   ·   帮助文档   ·   FAQ   ·   API   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   1102 人在线   最高记录 5497   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 20ms · UTC 22:53 · PVG 06:53 · LAX 15:53 · JFK 18:53
    ♥ Do have faith in what you're doing.