有人可以幫我理解 RC4 Spritz 嗎?(三個問題)
因此,自從我第一次嘗試理解流密碼以來,沒有一個比RC4更突出,因為它非常簡單。正如大多數閱讀本文的人所知道的那樣,其出色的簡單性帶來了輕鬆完成的密碼分析,而 RC4 肯定受到了很多的影響(或多或少地導致了 RC4 的徹底失敗)。
現在,在瀏覽關於 RC4 的 PRGA 階段的替代結構的維基百科文章時,我們得到了這個相當巧妙的小改動,被稱為spritz:
#// All arithmetic is performed modulo 256 while GeneratingOutput: i := i + w j := k + S[j + S[i]] k := k + i + S[j] swap values of S[i] and S[j] output z := S[j + S[i + S[z + k]]] endwhile
現在我想到了很多關於這種改變的事情(這似乎要強大得多,儘管不幸的是要慢得多),但我最關心的是:
我想知道答案的三個具體問題是:
- 我們可以安全地假設從 S 的任何給定設置
$$ $$,我們可以得到另一組 s$$ $$? 還是會出現一些不可能的狀態,比如RC4 的芬尼狀態?
- 任何人都可以將我連結到任何嘗試對 spritz 進行任何密碼分析的論文,作為 DRBG、流密碼或加密安全雜湊?
- 最後:我知道問題應該更具體:但是考慮到它與 RC4 的相似性?我們可以期待在 Spritz 中彈出多少來自 RC4 的問題?
這裡有幾個問題,現實是我很高興能得到任何這些問題的答案,因為關於這個算法的論文,似乎不是一個簡單的Google搜尋……但我自己的有限測試(和思想實驗),讓我覺得我們肯定會為 RC4 開發更好的 PRGA 版本(除此之外,它的速度是 40-50%)。
所有輸入表示讚賞!
(編輯:我刪除了關於我們可以使用 W 值的問題:答案是 1..3..5..7,最多 255,假設 S 的範圍是 256)
Spritz 的參考定義似乎是:Ronald L. Rivest和 Jacob CN Schuldt,Spritz - 一種類似 RC4 的海綿狀流密碼和散列函式,在 Charles River Crypto Day(2014 年)上發表。
問題的程式碼片段顯示了在 DBRG 輸出模式下重複使用的 Spritz 的狀態如何更新及其下一個輸出字節 $ z $ 生產;正在排列的狀態 $ S $ 編碼為 $ N=2^8 $ 不同的字節和字節變數 $ i $ , $ j $ , $ k $ , $ z $ (在上下文中 $ w $ 是一個常數奇數字節,取決於 DBRG 的輸入)。
此程式碼段似乎不太可能在所有 $ 256!\times2^{4\times 8}\lesssim2^{1716} $ 州,甚至 $ 256!\times\lesssim2^{1684} $ 置換值 $ S $ ,對於一組大小的迭代隨機映射的預期最大循環長度 $ s $ 是 $ \approx0.7825\sqrt s $ . 然而,這不是證據。
上述內容完全開放了類似於 RC4 的 Finney 狀態的可能性(這些狀態將使 RC4 的周期非常短)。存在如此短的周期似乎是很合理的,並且(與 RC4 的 Finney 狀態相反)對於在 DBRG 模式下使用的 Spritz 的一些輸入可以達到它們。然而,Spritz 的設計力求使其在計算上不可能達到所需的狀態,因此表現出一個短週期或中等周期的狀態(這似乎很可能)本身並不符合 Spritz 的中斷條件。
我發現了兩份關於密碼分析嘗試的報告,但都沒有聲稱對於完整的 Spritz 甚至接近實用,甚至對於大幅縮減的版本(帶有 $ N=32 $ 代替 $ N=256 $ , 那是 $ \approx2^{320} $ 潛在狀態而不是 $ \approx2^{1716} $ ).
- Bartosz Zoltak,Spritz 對 VMPC-R 的統計弱點:尋找 RC4 替代品(IACR Cryptology ePrint Archive,2014-12);這聲稱是減少 Spritz 的區別 $ N=16 $ (那是, $ \approx2^{60.25} $ 州)使用 $ \approx2^{41.4} $ 位的輸出。沒有聲稱該攻擊會破壞完整的 Spritz ( $ N=256 $ ) 比區分器更好 $ \approx2^{89} $ 設計人員認可的輸出位。
- Ralph Ankele、Stefan Koelbl 和 Christian Rechberger,Spritz 的狀態恢復分析(IACR Cryptology ePrint Archive,2015-08);攻擊被認為對於完整的 Spritz 完全不切實際(時間 $ 2^{1400} $ , 減少到 $ 2^{99} $ 為了 $ N=32 $ ).
Spritz 的設計旨在修復 RC4 中的已知問題,我不知道為什麼用於該目標的技術會失敗。
更新:現在對 Spritz 進行了真正的攻擊:Subhadeep Banik 和 Takanori Isobe,全 Spritz Stream Cipher 的密碼分析,在FSE 2016 的程序中。