确定性非对称加密

问题描述

尽管不安全,但我需要一个Python库,该库始终使用非对称加密方案为相同的纯文本生成相同的密文。

表示在使用 k 加密 m 时给定明文 m 和公钥 k 得到一个恒定的密文 c 。 如果有一种使用Python库“密码术”的方法,那就更好了。

解决方法

您找不到它,因为公钥加密不可能是确定性的。任何确定性的公钥加密方案都会遭受非常简单的攻击:给定密文,猜测明文可能是什么,然后通过使用公钥加密来验证猜测。由于加密密钥是公开的,因此任何人都可以执行此攻击。

这与公钥签名完全不同,后者可以是确定性的,因为能够区分两个签名来自同一条消息,不会改变签名的有效性。使用加密,能够分辨出两个纯文本是同一条消息确实破坏了加密的全部目的。

在一种情况下,公钥加密可以是确定性的,那就是明文是随机生成的还是从随机生成的数据派生的,不可能猜测潜在的明文。但是,由于存在这样的输入限制,您不应寻找“非对称加密”方案,而应寻找较低级别的原语:活板门置换。这不是直接可用的原语,但可以是加密机制(例如,公共密钥加密机制)的构建块。因此,您不能期望库将其作为接口提供。此外,典型协议不是通用的协议,它们可能会使用活板门置换。因此,您的协议定义将需要特定的原语,而不是“确定性非对称加密”原语。

如果您认为需要“确定性非对称加密”,那么您正在设计自己的加密方案,并且这种方案不可能正确。不要那样做如果您需要帮助来解决问题,请ask about your actual problem instead of the dead end you've reached trying to solve it

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...