设明文的集合为A,密文的集合为B.

一般的加密演算法,在密钥不变的情况下,要使得A到B的映射为双射(一一映射).

我所考虑的情况是,明文集合A通过某加密方式映射到集合B+,且集合B是B+的真子集,然后,某元素b属于B+却不属于B.并且,在集合A中存在有两个及以上元素是b的原像.

继而,有没有可能,在我们常用的加密演算法中,存在一些未被发现的"瑕疵品",我们以为它是A到B的映射,实际上他是A到B+的映射?

加密演算法的可靠性在数学上是如何保证的呢?

密码学门外汉,提此问题是因为好奇.


不存在,这样无法准确解密。


不存在!一个合格的加密演算法的基本要求就是可以唯一的解密。

你说的是演算法能够正确加密解密的证明。

这个问题,不同的演算法当然是不一样的。一般演算法的作者在发表一种加密演算法的时候,如果演算法不是「显然」是正确的,那可能会简要说明一下为什么能够解密。

常用的对称加密几乎总是显然是能够解密的,因为你去看它的加密和解密操作,你会发现里面的各个操作都是对应的。

比如对于RC4加密,就是根据密钥生成一个无限的密钥流,然后按位元组进行XOR,这明显是可逆,因为XOR同一个位元组本身就会还原原来的输入。


像其他几个答案说的,安全(secure)的加密方式的要求之二就是唯一性和可逆性。所以如果你所考虑的「常用」加密演算法是密码学意义上安全的,那答案就自然是不可能。因为自身违背安全加密的定义。

至于你说的「在集合A中存在有两个及以上元素是b的原像「,我其实不是很懂这条件存在的意义。希望可以解释一下?

加密演算法的可靠性用密码学的说法大概是perfect secrecy/semantic security(翻译成。。语义安全性?)。其在数学上的定义为下:

[公式]

每一个函数代表什么如果有人感兴趣我可以再解释(因为很长)。但是整条定义意思简单来说:如果明文相关的信息不会被密文透露(包括内容、长短、元素分布,etc.),那这个加密方法就有语义安全性。


楼下有提到md5,hash的,纠正一下,那是摘要演算法,不是加密演算法。

来看一下百科上对加密演算法的定义:

数据加密的基本过程就是对原来为明文的文件或数据按某种演算法进行处理,使其成为不可读的一段代码,通常称为「密文」,使其只能在输入相应的密钥之后才能显示出本来内容,通过这样的途径来达到保护数据不被非法人窃取、阅读的目的。 该过程的逆过程为解密,即将该编码信息转化为其原来数据的过程。

一个加密系统S可以用数学符号描述如下:

S={P, C, K, E, D}其中P——明文空间,表示全体可能出现的明文集合,C——密文空间,表示全体可能出现的密文集合,K——密钥空间,密钥是加密演算法中的可变参数,E——加密演算法,由一些公式、法则或程序构成,D——解密演算法,它是E的逆。

加密演算法与解密演算法是对应存在的,当秘钥相同,一个加密系统,其肯定是一对一的关系,如果出现题主所说的那种情况,肯定就不会称作加密系统,题主若想进一步研究,可以搜索对称密码,非对称密码进一步了解,其代表性演算法可以看看AES和RSA,具体应用有兴趣的话可以学习下https的原理

再来说说最早提到的摘要演算法,如md5,比如你选择生成16位密文,深究其原理这是不可逆的演算法,换个角度来看明文集合A与密文集合B就知道了,密文集合范围为16位所有可能的组合,而明文可以的范围为无限大,这就出现了题主所言多个明文对应一个密文的情况。但一定要注意的是这不是加密演算法,是摘要演算法,摘要演算法一般用于验证文件完整性。google一下,很容易找到碰撞文件。

希望答案对题主有所帮助,若有笔误或理解错误之处请务必指出,我会立刻更正


放一张我们学校可爱的猫猫的照片,哈哈哈


如果以发表的论文为参考,所有加解密过程的正确性是需要严格数学证明的,唯一性是基本要求,安全性只需要挑选一些常见的进行证明即可。但没有经过充分验证的方案自然是出现你说这个情况。


不存在


推荐阅读:
相关文章