設明文的集合為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一下,很容易找到碰撞文件。

希望答案對題主有所幫助,若有筆誤或理解錯誤之處請務必指出,我會立刻更正


放一張我們學校可愛的貓貓的照片,哈哈哈


如果以發表的論文為參考,所有加解密過程的正確性是需要嚴格數學證明的,唯一性是基本要求,安全性只需要挑選一些常見的進行證明即可。但沒有經過充分驗證的方案自然是出現你說這個情況。


不存在


推薦閱讀:
相关文章