假设有一个您无法解密的文本,但您知道明文可以是A、B或C。然后将用于加密该文本的密钥送到您手中。您可以解密该文本,并得到一个等于A的明文,是否可能原始明文为B或C,并且您已经收到一个密钥,以便解密过程给出一个不同的明文(A)输出?
当然,每个A,B和C对你都有意义,所以如果你解密其他东西(如D,E,F.)你知道这是毫无意义的。另外,我想补充的是,您接收密钥的源是不可信任的,但这并不意味着密钥总是不正确的。
为求澄清:
如果我不能信任获取密钥和密文的源,那么如何确保获得的明文实际上是先前加密的?
发布于 2018-12-11 16:33:32
如果我不能信任获取密钥和密文的源,那么如何确定所获得的明文实际上是先前加密的?
一般来说你不能。标准的安全概念并不意味着有任何约束力。也就是说,这些定义并不排除,给定密钥k和密文c \gets \operatorname{Enc}(k,m),攻击者可能会找到密钥k',例如某些m' \neq m的m' = \operatorname{Dec}(k',c)。事实上,对于许多加密方案,例如在某些未经身份验证的操作模式中的块密码,或者流密码,这都是可能的,因为任何密钥的解密都是成功的。不同方案的不同之处在于攻击者对m'的控制程度。但是对于许多方案来说,某些控制是可能的,例如确保几个比特具有特定的值。
将加密方案打开到与最初加密的值不同的值称为模糊。正如AleksanderRas所描述的,一次加密方案是一种极端的不确定加密方案,完全不确定。也就是说,对于任何密文c和任何明文m',都可以找到密钥k',比如\operatorname{Dec}(k',c)=m'。实际上,在安全多方计算等应用中,不确定是加密方案的一个有用的特性。然而,完全模棱两可实际上意味着该方案必须具有与消息大小一样大的密钥大小。有些地方模棱两可和不承诺加密的概念比较宽松。
这个最后一个概念的名字让我们看到了这样一个事实:事实上,你希望你的加密方案不要模棱两可。与模棱两可的加密方案相反的是提交加密方案,其中密文作为对明文的承诺。
在这一点上,您的问题,特别是“密钥交换”标签,使我相信您可能实际上不是在寻找加密方案,而是一个承诺方案。承诺方案允许一方在承诺m中提交消息c \gets \operatorname{Com}(m;r)。这样的承诺以后可以打开,通常是通过暴露承诺中使用的随机性r。
承诺计划有两个重要的性质:
发布于 2018-12-11 10:11:52
确实有可能(正如Maeher正确地指出的那样)拥有这样的财产。
可能最知名的具有此属性的加密系统是一次性垫。它有一些限制,例如密钥必须是(密码安全的)随机的,长度与明文相同。
问题是,我们无法确定最初用于加密消息m_1的密钥,因为这两种解密都可能是有效的。
让我们直接使用维基百科的例子:
这是可能的,因为单词HELLO和稍后都有5个字符。实际上,可以将任何密文(c_1)解密为任何给定长度的明文(m_n)。
https://crypto.stackexchange.com/questions/64757
复制相似问题