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

缺乏信任关系的两个人如何安全的交换情报

  •  
  •   ksc010 · 2021-03-25 15:57:18 +08:00 · 2267 次点击
    这是一个创建于 1345 天前的主题,其中的信息可能已经有所发展或是发生改变。
    比如 A,B 两个人在网络上认识但是缺乏信任
    他们各自有一个对方需要的情报(秘密)这个情报很短 比如 100 个字符就能描述清楚
    这种情况下 怎么才能安全的交换这个情报呢?
    ps:这个情报不希望有第三方知道
    第 1 条附言  ·  2021-03-25 17:55:38 +08:00
    有个初步思路
    1. 我编写一段开源的代码程序,在发给对方
    2. 对方运行这段程序,这个程序可以将对方的“情报”进行校验并返回加密后的“加密情报”以及“验证码”;
    3. 这个加密情报智能通过秘钥来解密,程序和验证码可以保定加密情报里面的信息是我需要的
    同时又可以验证下面的“秘钥”的正确性
    4. 对方将"加密情报"和验证码发给我
    5. 同样我也将 “加密情报 B”和“验证码 B”发给对方
    6. 接下来就是交换各自的秘钥(比如是 10 位字符,这样就轮流发给对方)
    7. 当然要设定一种机制,使生成的这个秘钥每一位都可以校验

    --------------
    随便想的可能有漏洞,也可能不具有可行性
    24 条回复    2021-03-27 20:07:57 +08:00
    dallaslu
        1
    dallaslu  
       2021-03-25 15:59:44 +08:00
    第一反应是 PGP 。但是,为防止有人想空手套白狼,应该走两个担保交易
    momocraft
        2
    momocraft  
       2021-03-25 16:00:27 +08:00
    缺乏信任 即使原样拿到了有什么用

    你是想说缺乏可信任信道吗
    miaeLKK
        3
    miaeLKK  
       2021-03-25 16:00:51 +08:00 via Android
    简单的用 DES,复杂的加上 RAS 。
    kop1989
        4
    kop1989  
       2021-03-25 16:01:36 +08:00
    风险指代什么?怕一方交出来之后另外一方爽约?还是怕交换渠道上有人窃听?还是怕一方说的是假情报?
    这三者是完全不同维度的解决方案。
    ksc010
        5
    ksc010  
    OP
       2021-03-25 16:02:30 +08:00
    @kop1989 怕爽约
    Tumblr
        6
    Tumblr  
       2021-03-25 16:05:15 +08:00
    A 和 B 相互不信任
    A 和 B 需要交换信息

    这不是个典型的第三方介入的交易场景么。。。

    /go/all4all, 走闲鱼
    eason1874
        7
    eason1874  
       2021-03-25 16:09:05 +08:00
    怕窃听就用非对称加密,比如 RSA 。本地生成公钥私钥,分别把自己的公钥发给对方,私钥在自己手里,始终没经过网络,对方用公钥加密了发过来,没大规模超算不可能破解密文。

    怕对方骗你,就只能一点一点交换,确认一部分有效,再继续交换。

    这种东西找第三方没用啊,第三方不太可能知道双方情报内容的可信度。
    Vegetable
        8
    Vegetable  
       2021-03-25 16:24:36 +08:00
    亲这边建议采用支付宝担保交易呢
    Aksura
        9
    Aksura  
       2021-03-25 17:36:50 +08:00
    双方公开自己的公钥,然后用对方的公钥加密发给对方不就完了?
    yhxx
        10
    yhxx  
       2021-03-25 17:57:35 +08:00
    怕爽约那不就是支付宝。。。
    ksc010
        11
    ksc010  
    OP
       2021-03-25 18:01:15 +08:00
    @yhxx
    @Vegetable 是要交换信息 不是买卖东西
    chenyu8674
        12
    chenyu8674  
       2021-03-25 19:02:19 +08:00
    关键问题是能如何保证情报本身可靠
    假如我可以做出让对方不知道是假情报的假情报,怎么换不都没意义
    swulling
        13
    swulling  
       2021-03-25 19:08:31 +08:00
    这不就是第三方担保支付么,双方把信息都交给第三方保管,第三方收到双方信息后分发。

    但是如果不想引入信任的第三方,那么就使用智能合约。目前智能合约可以做到图灵完备,所以可以将信息检查的工作编码入智能合约,这样就可以方便的交换信息了。
    hxy100
        14
    hxy100  
       2021-03-25 19:14:59 +08:00   ❤️ 1
    要防止对方坑你,这个无解,因为你无法立即验证情报是否是真实的,我编一段故事分段发给你,你程序能验证真伪不?顶多只能验证多段消息连成的句子通顺与否吧,所以这种问题不是计算机能解决的,问题的关键还是在于人自身。
    Mohanson
        15
    Mohanson  
       2021-03-25 19:15:50 +08:00
    零知识证明.
    LongBitcoin
        16
    LongBitcoin  
       2021-03-25 19:21:22 +08:00
    零知识证明
    niubee1
        17
    niubee1  
       2021-03-25 22:22:17 +08:00
    你怎么保证对方不会修改了你的程序再运行呢?
    Jooooooooo
        18
    Jooooooooo  
       2021-03-25 22:24:54 +08:00
    不要自己发明加密算法
    huayumo
        19
    huayumo  
       2021-03-26 08:14:29 +08:00
    这玩意就像吸铁石,两个极不会相吸,你放一块铁在中间,两级都能吸了
    SaberAlter
        20
    SaberAlter  
       2021-03-26 10:01:08 +08:00
    @Aksura 不行,无法确保对方会用自己的公钥加密。
    light010
        21
    light010  
       2021-03-26 10:19:24 +08:00
    数字签名
    ksc010
        22
    ksc010  
    OP
       2021-03-26 11:39:21 +08:00
    @hxy100 程序到是可以全程(远程直播啥的方式)监控保证代码不被修改
    另外这里要交换的情报是可以通过代码验证的(当做一个设定)
    sillydaddy
        23
    sillydaddy  
       2021-03-26 20:37:55 +08:00 via Android   ❤️ 1
    感谢提出这么好的问题!一个感谢敬上。
    搜了下发现相关的主题叫做"Fair Exchange",直译就是“公平交换”。

    很有意思的密码学问题。大概看了下,发现目前的方案好像跟你说的差不多,都是通过逐段发送密钥的方式,这样在双方有一方反悔停发时,两人都处于相似的处境,比如都拥有了一半的密钥,要么都解密不了密文,要么都要花相近的计算量暴力破解密文,而率先终止交易也就是说多接收了一段密钥的那个人,最多也只比另外一方稍占优势而已。

    还没仔细研究所以只能卖弄这么多,楼主你还是看下研究论文吧。
    lymith
        24
    lymith  
       2021-03-27 20:07:57 +08:00
    第三方+随机+分段显示
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2636 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 92ms · UTC 01:42 · PVG 09:42 · LAX 17:42 · JFK 20:42
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.