2010-03-30 38 views
2

表示單個字符的加密文本所需的最小位數是多少?單個字符的加密

例如,如果我想加密字母'a',我需要多少位。 (假設使用相同的密鑰有很多單獨加密的字符)。

我是否認爲這將是密鑰的大小。例如256位?

回答

0

恐怕迄今爲止所有答案都是錯誤的!看來我不能回覆他們,但是詢問你是否需要更多關於他們錯誤原因的信息。這裏是正確的答案:

約80位。

「nonce」(有時稱爲IV)需要一些位。當您加密時,您將密鑰,明文和隨機數組合在一起以產生密文,並且您絕不能使用相同的隨機數兩次。因此,隨機數需要多大取決於您計劃使用相同密鑰的頻率;如果您不會使用超過256次的密鑰,則可以使用8位隨機數。請注意,只有加密方需要確保它不使用隨機數兩次;解密方只需要關心它是否在意防止重放攻擊。

你需要8比特的有效載荷,因爲這是你有多少比特的明文。

最後,您需要大約64位的認證標籤。在這個長度下,攻擊者必須先平均嘗試平均2^63個虛假消息,然後才能獲得遠程端接受的消息。不要以爲你可以沒有認證標籤;這對整個模式的安全至關重要。

把這些放在一起使用AES鏈接模式,如EAX或GCM,你會得到80位密文。

關鍵尺寸不是一個考慮因素。

+0

這是非常清楚的解釋。因此,一個16位隨機數將允許重複使用65,536,這給了我88位的密文。比未加密字符的位數稍多11倍。謝謝。 – SystemicPlural 2010-04-01 08:13:56

+0

我想弗蘭克所說的是,如果你對密文進行編碼,那麼它將會進一步縮小它。含義88位是最差的情況。 – SystemicPlural 2010-04-01 09:03:32

+1

Nonces,認證標籤 - 如果問題只針對「加密一個字符」,那麼這些都不是隱含的,因爲所有這些都取決於您選擇的加密模式,算法等,正如我試圖指出的那樣。因此,現在有*錯誤的答案......沒有任何問題的進一步澄清,你可以任意具體而不用有用。只是我2美分。 – hermannloose 2010-04-01 09:43:43

1

如果您使用一次性打擊墊,則可以使用與明文相同的打印位數。

+0

這是有可能的,儘管它會涉及使用獨立進程生成和交換許多一次性打印墊。 – SystemicPlural 2010-03-30 08:20:54

1

這很難回答。你一定要先閱讀一些基礎知識。你可以用一個位(哈夫曼編碼風格)'加密'一個'a',當然你也可以使用更多的位。沒有任何上下文的數字像256位是毫無意義的。

這裏有一些東西讓你開始: Information Theory - 特別是。看看Shannon的開創性論文 One Time Pad - 臭名昭著的安全,但不切實際,加密方案 Huffman encoding - 不加密,但是它展示了上述觀點

+0

256位只是密鑰大小的一個例子。我問這是否也是最小的加密消息大小。例如,如果我使用256位密鑰加密「a」,加密的消息是否最少爲256位長。 – SystemicPlural 2010-03-30 08:16:24

3

雖然這個問題有點模糊,首先這將取決於你是否使用流密碼或分組密碼。

對於流密碼,您將得到相同數量的輸出位 - 因此輸入字母大小的二進制對數將有意義。分組密碼需要固定大小的輸入塊,因此您可以用零填充「a」並對其進行加密,從而將塊大小最小化,就像您已經提出的那樣。

+0

感謝流密碼是我正在尋找的。 – SystemicPlural 2010-03-30 08:34:57