假设您有一个公共程序P(n),它接收消息n并为具有私钥来解密它的某个实体生成加密输出(使用非对称密码)。
利用椭圆曲线的椭圆曲线等方案,可以得到输出与随机无法区分的P。
但是,当输出预期会出现腐败(位翻转)时,就会出现一个问题。纠错码的应用似乎打破了“无法区分与随机”的要求。
在考虑了这个问题之后,我得出了以下的考虑。实际消息n采用对称加密方案,使用某些共享秘密加密,使用相同的共享秘密(KDF后)对纠错码的结果进行白化(w/流密码)。这种做法会不会有问题呢?
这留下了短时公钥(~256位),这是由于鳄鱼是无法区分的随机。但很容易腐败。如何才能对其进行纠错,使其本身与随机结果无法区分?
编辑:
关于加密部分,似乎有些混淆。这是一个标准的匿名寄件人密封箱。https://libsodium.gitbook.io/doc/public-key_密码学/密封_盒子
ephemeral_pk ‖ box(m, recipient_pk, ephemeral_sk, nonce=blake2b(ephemeral_pk ‖ recipient_pk))“不可区分的随机”要求是强制性的,有一个马尔可夫链将其与结构化格式混合在一起。这种嵌入的提取不能被允许产生包含可检测的纠错码的东西,从而背叛了它的存在。在无统计模式的情况下,提取无统计模式的实际噪声。
发布于 2020-05-22 19:42:40
实际消息n是使用某种共享秘密的对称加密方案加密的。
对称加密是由什么密钥决定的?是加密器挑选的东西吗?如果是这样的话,它是如何到达解密器的(因为解密者在尝试解密之前需要它)。这是双方共同的东西吗?如果是这样的话,这种“公钥加密”(通常假设加密器只能访问公共可用的信息)是怎么回事?而且,如果你有一个共享的对称密钥,你对非对称密码有什么困扰?
另一方面,我是否可以建议考虑考虑这种“与随机选项无法区分”(以及为什么这是一项要求)?一般来说,我们通常不需要与一组随机比特完全无法区分的东西(有些情况确实出现,它们比较少见)。相反,通常情况下,“从特定集合中的随机选择中找不到”就足够了(不管是什么设置了它);这个公式保留了我们通常感兴趣的IND属性。而且,如果您只是从随机单词生成256位不可分辨的代码,然后将您的纠错代码应用到它上,则此集合将成为“纠错代码中所有有效代码单词的集合”,这对于大多数目的来说都足够了。
我不得不在其中添加一些警告语言,因为有些用法确实需要‘与一组随机位无法区分’;您的用例是什么?
https://crypto.stackexchange.com/questions/80890
复制相似问题