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

密码学问题:如何在没有私钥的情况下,验证某个密文是用公钥加的密?

  •  
  •   flypanda · 2021-09-03 18:02:57 +08:00 · 1641 次点击
    这是一个创建于 1206 天前的主题,其中的信息可能已经有所发展或是发生改变。

    场景如下 Alice 使用 Bob 的公钥 PubKey_Bob 对消息message进行 Encrypt,得到密文Cipher 我作为中间人,如何在没有解密用的PrivKey_Bob的条件下验证 Cipher 确实是使用PubKey_Bob加的密? 有什么密码学方案满足这个需求?

    16 条回复    2021-09-04 12:59:00 +08:00
    yfugibr
        1
    yfugibr  
       2021-09-03 18:15:51 +08:00 via Android
    准备两对密钥,一对用于加密,一对用于签名
    yfugibr
        2
    yfugibr  
       2021-09-03 18:18:19 +08:00 via Android
    @yfugibr 我理解错了
    flypanda
        3
    flypanda  
    OP
       2021-09-03 18:20:40 +08:00
    @yfugibr 我没有表达清楚,这里想防止的是 Alice 作恶。
    Alice 虽然把 Cipher 发给了 Bob,但是就是不让 Bob 解密其中的 Message 。

    所以就算准备两对儿秘钥,Alice 还是可以 用`Signature_pubkey_bob`签名,但是使用 `Crypto_pubkey_Evil` 来加密

    这样验签 可以看到确实是 Bob 的公钥在签名...但还是不能保证 Alice 是用 Bob 的公钥加的密
    dablwow
        4
    dablwow  
       2021-09-03 18:25:33 +08:00
    @flypanda
    "但是就是不让 Bob 解密其中的 Message"
    ================
    Alice 可能怎么做呢?比如用其他公钥加密?或者破坏 Cipher ?
    flypanda
        5
    flypanda  
    OP
       2021-09-03 18:30:28 +08:00
    @dablwow
    对没错。可以先只考虑 "用其他公钥加密" 这种情况...我比较担心的就是这个情况
    flypanda
        6
    flypanda  
    OP
       2021-09-03 18:35:04 +08:00
    @dablwow @yfugibr 二位哥,我想过使用密钥共享...但是似乎不太行
    比如门限思路:将 Bob 的私钥 分成多分,我作为中间人持有其中 n 份,超过门限,可以解密 Cipher 。只要能解密就可以确定 Alice 是使用 Pubkey_Bob 加的密...
    但这个思路有个缺陷 门限密码 是使用 超过 n 份的私钥碎片 恢复出 私钥本身...我作为中间人,是可以恢复出 PrivKey_Bob 的.... 这个事情 Bob 无法接受....
    geelaw
        7
    geelaw  
       2021-09-03 18:44:45 +08:00
    一般来说答案是 vacuously true,因为有些方案里有可能同一条密文本来就可以被解读为两个不同公钥下的密文,考虑 ElGamal 加密,考虑两个公钥分别是 g^a, g^b,则 h 在 g^a 下的密文 g^c, g^ac * h 也可以理解为 g^((a - b)c) * h 在 g^b 下的密文 g^c, g^bc * g^((a - b)c) * h 。

    我觉得楼主的需求似乎不能解决楼主的问题:即使证明了某段密文只能是用 Bob 公钥加密所产生的,也没有证明加密了有意义的消息。
    wy315700
        8
    wy315700  
       2021-09-03 18:46:46 +08:00
    仅凭密文就能分析出加密密钥。。。

    兄弟你这是完成了一次唯密文攻击啊。
    flypanda
        9
    flypanda  
    OP
       2021-09-03 18:52:33 +08:00
    @geelaw 说的有道理...我想想...
    xarthur
        10
    xarthur  
       2021-09-03 18:54:43 +08:00
    感觉是个 XY 问题……
    Corua
        11
    Corua  
       2021-09-03 20:11:18 +08:00 via Android
    是否在找"公钥的不可否认性",但现今的体系里并没有这种方案
    公钥本来就没有签名的用途,仅持有公钥又能如何作恶呢?
    icegaze
        12
    icegaze  
       2021-09-03 20:42:42 +08:00 via Android
    简单,
    没有 A 签名的信息,
    一概不认为是 A 加密的。
    丢弃掉就行。
    icegaze
        13
    icegaze  
       2021-09-03 20:44:39 +08:00 via Android
    非对称密钥体系的意义不仅仅于加密。

    正确的运用是,
    应该先加密,再在外面包裹一下签名。
    这才是整套加密传输的思路。
    icegaze
        14
    icegaze  
       2021-09-03 20:53:12 +08:00 via Android
    看错了,
    楼主是说 A 用 B 的公钥加密信息…
    那旁人(非 B )根本没法验证或者解密啊?
    niubee1
        15
    niubee1  
       2021-09-03 20:58:44 +08:00
    你要不让别人解开还作什么恶呢?
    sillydaddy
        16
    sillydaddy  
       2021-09-04 12:59:00 +08:00
    不知道楼主想要实现什么,有个密码学问题叫“公平交换”,可以看下这个帖:
    https://www.v2ex.com/t/765057
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   4834 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 10:00 · PVG 18:00 · LAX 02:00 · JFK 05:00
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.