One-Time-Pad

隨機算法和一次性填充

  • November 8, 2012

我理解它的方式,如果算法使用隨機性作為其邏輯的一部分(引用Wikipedia),則稱該算法是隨機的。現在,在加密算法的情況下,我假設這意味著對於相同的輸入,將產生不同的輸出(即密文)。問題是,在這種情況下,“輸入”是什麼意思?

特別是,它是否只包括要加密的純文字,還是還包括密鑰?舉一個具體的例子,一次性填充是一種隨機算法嗎?如果是這樣,那麼“輸入”必須僅表示純文字。

為了使事情更加混亂(至少對我而言),再次引用維基百科:“為了在語義上安全,也就是說,要隱藏關於明文的部分資訊,加密算法必須是機率性的。”,其中最後一個詞連結到我在第一段中連結到的“隨機算法”頁面。所以,鑑於一次性墊在語義上是安全的,它一定是一種隨機算法……對吧?

為了在混亂蛋糕的頂部添加櫻桃,仍然有一些算法,例如,CBC 模式下的 AES,帶有隨機 IV,當使用相同的純文字和相同的密鑰多次執行時,會產生不同的輸出. 當然,這意味著當您將此類算法的輸入視為純文字時,您會得到相同的結果:相同純文字的不同密文。因此,似乎唯一的“連貫”(缺少更好的詞)定義需要輸入 == 純文字。我的猜測正確嗎?

您確實需要通過加密算法定義您所理解的內容。這樣做的常用方法是將加密方案視為三個原語的元組:密鑰生成算法(在安全級別上,輸出隨機選擇的一對密鑰),使用生成的密鑰實例化的加密算法(即將輸入明文映射到輸出密文)和相應的解密算法,以使用相應的密鑰進行實例化。

對於加密方案而言,語義安全意味著給定關於明文的先驗資訊和加密算法下的相應密文,不能從純文字中導出僅從先驗資訊中無法導出的資訊。(這必須從理論上理解複雜性。)

現在,您所描述的一次性密本加密不符合上述方案,因為它沒有這組三個原語:要為每個明文更改密鑰(一次性密本)。然而,可以通過這種方式建構一個緊密的加密方案(為了簡單起見,我假設固定長度的明文,但這不是限制):可以將密鑰生成算法視為一個大的填充表,索引以某種方式對應於每個可能的明文. 然後加密算法查找該表並將其與明文異或以生成密文。該方案語義上是安全的。

這是底線:非對稱加密方案必須是機率性的,否則,給定加密密鑰(不是解密密鑰),就可以區分“嗨鮑勃!”的加密。來自“嗨愛麗絲!”的消息 資訊。但是對稱加密算法不必是機率性的,該方案在語義上是安全的(上面定義的加密方案是)。但是,如果安全目標是對密文對而不是單個密文實現相同的目標,

所以,是的,機率加密算法輸入明文並輸出密文,密文將根據內部生成的隨機硬幣而變化。

其他人確實已經回答了隨機(加密)算法的條款,但缺少一件事:

一次性密本不是一種語義安全的加密算法。

語義安全本質上意味著您可以使用相同的密鑰加密多條消息,攻擊者無法找出發送了哪條消息,即使在選擇明文攻擊的情況下也是如此。

雖然一次性密碼本在正確使用時提供了完美的保密性,但只要您使用一把鑰匙接收多條消息(即“兩次密碼本”),它就會被破壞。

引用自:https://crypto.stackexchange.com/questions/5291