Entropy

混合在一起的歌曲或電影的播放列表是否包含足夠隨機的 OTP 密鑰材料?

  • February 17, 2014

好的假設場景。假設我想為一次性墊快速生成大量關鍵材料。這個關鍵材料將被分割並在未來用於許多不同的消息。

  1. 我從所有音樂的自定義播放列表中選擇 50-100 多首歌曲。音樂已轉換為基本波形音頻文件格式 (.wav)。無論我選擇什麼,音樂都可以是搖滾、流行、古典、技術等的混合。
  2. 我將每首歌曲的原始音樂數據提取到一個大文件中並刪除空字節。現在我有一個包含所有歌曲數據的大文件。
  3. 我將所有歌曲數據隨機化,以便將所有歌曲數據混合在一起,形成一個難以理解的位序列。使用者可以使用他們的滑鼠/鍵盤提供一些輸入,這將為隨機化函式提供一些熵。
  4. 我遍歷文件中的所有數據,每隔約 7 個字節(或位)將其放入另一個文件中,該文件現在是我的新關鍵材料。可以更改此步驟,以便使用者可以提供可變採樣率,例如,他們可以將其更改為每 10 個字節或第 100 個字節。

現在……該密鑰材料文件是否足夠隨機以供一次性使用?

如果我更換音樂歌曲並改用 10 多部完整長度的電影或電視節目會怎樣?

這些位不是相互獨立的,至少在一首單獨的歌曲中,所以墊不是真正隨機的,因此這不是一次性墊。也許基於雜湊的方法可以解決這個問題,但是……

…可用的歌曲數量有限,然後一個簡單的攻擊是列舉每首歌曲(以您描述的相同格式)並嘗試解密密文的一部分(例如嘗試位 0 到 10,然後嘗試位1 到 11 等……直到你得到有意義的東西)。因此,密文可以通過蠻力破解,因此根據定義,它不是一次性密碼。

你會注意到你的初始排列對這次攻擊的效率沒有影響。但即使是這樣,你也必須使用一些隨機源來打亂你的歌曲列表,對吧?如果您使用 PRNG,有人可能會破壞它,並推斷出您使用的排列。那是另一個危險的“活動部分”。如果你有一個真正的隨機源,那麼為什麼不首先使用它來創建 pad呢?

此外,大概您不想在將音樂製作成“一次性便箋簿”後將其銷毀,因此您的便箋簿也會以更明確的形式存在於硬碟驅動器上->巨大的安全風險(它大大簡化了上面的攻擊,因為我們現在確切地知道嘗試用哪些歌曲來解密密文)。

比特就是比特,熵就是熵。數據代表音樂還是電視節目並不重要 - 這些是人類概念,而理論密碼學本質上是一門抽象科學。

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