虽然它被认为不安全,但我需要一个Python库,它总是使用非对称加密方案为相同的明文生成相同的密文。
这意味着在使用k加密m时,给出一个明文m和一个公钥k,我将始终得到一个常数密文c。如果有一种方法可以使用Python库“加密”来做到这一点,那就更好了。
发布于 2020-08-31 21:24:51
您找不到这一点,因为公钥加密不可能是确定性的。任何确定性的公钥加密方案都会受到非常简单的攻击:给定密文,猜猜明文可能是什么,并通过使用公钥加密来验证猜测。任何人都可以执行此攻击,因为加密密钥是公开的。
这与公钥签名完全不同,公钥签名可能是确定性的,因为能够分辨出两个签名来自同一条消息并不会改变签名的有效性。对于加密,能够分辨出两个明文是相同的消息确实破坏了加密的全部目的。
在一种情况下,公钥加密可能是确定性的,如果明文是随机生成的,或者是从随机生成的数据中派生出来的,那么就不可能猜测潜在的明文。然而,有了这样的输入限制,您不应该寻找“非对称加密”方案,而应该寻找一个低级的原语:陷阱门置换。这不是一个直接可用的原语,但它可以是加密机制(例如公钥加密机制)的一个构建块。因此,您不能期望库提供它作为它们的接口。此外,典型的协议在使用陷阱门排列的方式上并不是通用的。因此,您的协议定义将调用特定的原语,而不是“确定性非对称加密”原语。
如果您认为您需要“确定性非对称加密”,则您正在设计您自己的加密方案,而且它不可能是正确的。别干那事。如果你需要帮助解决问题,问你的实际问题,而不是你想要解决的死胡同。
https://stackoverflow.com/questions/63663273
复制相似问题