美文网首页
1对N公私钥体系

1对N公私钥体系

作者: LostAbaddon | 来源:发表于2018-12-11 13:16 被阅读175次

这是在做一个项目的时候突然想到的一个和项目完全无关的问题。

问题是这样的:

是否存在一个确定协议,可以生成一个秘钥和配套的一组公钥,公钥数为N,N不小于1,且N可由协议确定,或通过协议中的输入参数确定。
对这N个公钥有如下要求:

  1. 对任意明文t,使用私钥k加密后得到的密文c,任何一个公钥p_n都可以解密出原文p,即:p_n(k(t))=t
  2. 在没有私钥k的情况下,使用任意个公钥p_{n \neq i}都无法得到公钥p_i

第一个要求可以称为“配对原则”,而第二个要求可以称为“隔离原则”。

虽然这样的1对N公私钥体系现在看来应该没什么实际作用,但这个问题本身很有趣。

在不要求N可调节的情况下,或者N的限制可以略微放宽的情况下,这个问题的解还是很简单的——

我们以RSA的简化版为基础,假定私钥是质数v,公钥是质数b,到这里还是1对1的。

接着,b可以写成[]byte的形式,其每一位都是[0, 255]这个范围的。我们做一个变换,将一个byte拆解为两个。

新的字节数组记为bx,我们将bx每两位byte做一个xor,这是一个byte,这样就可以将2l长的bx映射到l长的[]byte上,因此只要这个映射的像是上面的公钥b,那么这个映射就可以将多个(事实上是N=2^l个)字符串映射到真正的公钥上,那么这样的N个字符串就是我们所要的1对N的“公钥”了。

当然,这个简单粗暴的做法只满足配对原则,并无法满足隔离原则——一旦规则公开了,那么别人自然可以从任意公钥p1来推测出其他所有的公钥px了,所以不好。

类似的方案还有,寻找一个合数x,任意公钥pi也是一个合数,pi与x的最大公素约数只要正好是前面所给的素数b,那这样也就可以了,我们可以将v和x一起作为私钥。

一个可以保证隔离原则的方案,是故意构造哈希碰撞。

还是以简化的RSA为例,假定我们可以找到两个甚至更多个字符串,它们的哈希是同一个值,即它们发生了哈希碰撞。然后这个哈希值如果可以用来作为公钥,并生成相应的私钥,那么这样得到的公私钥组合就满足要求了。

这样的情况下,配对原则自然是满足的,而隔离原则由于哈希本身是散列的因此得到了保证。

当然,这个方案的难点在于,寻找合适的碰撞很难,要控制N就更难了。。。

所以,到现在还没想到好的方案。


本文遵守创作共享CC BY-NC-SA 4.0协议

通过本协议,您可以分享并修改本文内容,只要你遵守以下授权条款规定:姓名标示非商业性相同方式分享
具体内容请查阅上述协议声明。
纸媒与网络平台如需转载必须与本人联系确认。

相关文章

  • [Math] RSA算法

    (1)公钥: (2)私钥: (3)使用公钥(e,n)加密m (4)使用私钥(d,n)解密c 例如:

  • RSA 非对称加密原理(小白也能看懂哦~)

    RSA 加密原理 公钥=(E , N)私钥=(D, N) 对外,我们只暴露公钥。 示例 1、找出质数 P 、Q 2...

  • 2018-09-30

    关于区块链加密算法的分享: 加密算法公钥私钥体系现代加密算法的典型组件包括:加解密算法、公钥、私钥。 加密过...

  • RSA 非对称加密原理

    公钥=(E , N)私钥=(D, N) 对外,我们只暴露公钥。 示例 1.找出质数 P 、Q 2.计算公共模数 欧...

  • 比特币公钥

    比特币的公钥体系: 一个比特币帐户由一对公钥和私钥唯一确定,要保存帐户只需要保存私钥文件即可,公钥是公开的。 当甲...

  • 1对N公私钥体系

    这是在做一个项目的时候突然想到的一个和项目完全无关的问题。 问题是这样的: 是否存在一个确定协议,可以生成一个秘钥...

  • RSA加密解密函数

    一、已有公钥私钥1、私钥解密 二、已有公钥私钥文件

  • 基础概念之钱包

    1. 私钥、公钥和地址 在比特币体系中,私钥、公钥和地址是三个非常重要的基础概念,那这三者分别代表着什么呢?类比我...

  • RSA

    P 第一个素数Q 第二个素数E 公钥N 公用模数 N = P * QD 私钥 ...

  • 应用程序数字签名技术

    什么是公钥和私钥 公钥加密,私钥解密私钥加密,公钥解密 苹果的数字签名

网友评论

      本文标题:1对N公私钥体系

      本文链接:https://www.haomeiwen.com/subject/guvshqtx.html