/dev/urandom 洗牌結果後的熵
首先:我很偏執。我正在使用以下命令在我的 linux 伺服器上創建種子:
cat /dev/urandom |tr -dc A-Z9|head -c${1:-81}
由於我沒有任何本地 linux 系統,我通過 SSH 連接到我的外部伺服器。
現在,我得到了這種(可能是不合理的)恐懼,即我的種子雖然是通過 SSH 傳輸的,但可能會受到損害。所以我考慮在我的本地電腦上洗牌。例如,取出其中的一部分(5-10 位數)並將它們粘貼到不同的位置。
我想這可能會降低種子的安全性/熵。我的問題是:多少錢?我應該相信我的種子已經安全傳輸還是稍微調整一下?
當然,我知道最簡單的解決方案是使用本地 Linux 系統來生成它。但是讓我們談談其他解決方案。
我能理解偏執狂。他們可能正在記錄我輸入的所有內容。
有一種很好的偏執狂可以讓腎上腺素激增,讓你的反應更加敏銳,讓你有精力把那隻劍齒虎變成晚餐和軟皮鞋。不幸的是,我認為你可能患有嚴重的偏執狂。這導致你不理性地思考(對不起)。
讓我們假設您的 urandom 種子是神奇生成的,並且在密碼學上是安全的,並且是均勻分佈的。它與沒有真正的隨機數生成器的情況一樣好。然後你傳送它,壞人讀它。這是你的妥協嗎?所以安全性 = 0。
然後,您開始通過切片和骰子來操作它。這是一個推測性的計算,但我建議您添加的唯一安全性是決定在哪里切種子。因此,如果您在某個隨機位置切碎並交換了一個 32 字節(256 位)的種子,您就會添加 log2(32) 位的熵。那是5位。如果您再次切碎並交換,也許您會再添加 5 個。但最終,您最多只能生成 32 個!字節排列/組合。實際上它會更少,因為某些字節可能是相等的(我不能做數學)。最多為 118 位,不到原始熵的一半。你必須意識到,一個人非常不善於在腦海中思考隨機的事情。5 位實際上可能只有 4 位甚至更少。(是否對人類產生的熵進行了科學研究?)
你能看到嚴重的偏執狂會把你帶到哪裡嗎?採取其他解決方案,urandom 不是魔法。它是一個 CSPRNG(SHA1 或 ChaCha),您可以在您的客戶端電腦上使用它,也可以使用許多 kosher 算法之一來實現。如果您願意的話,您甚至可以訪問 Windows 版本的 /dev/urandom。
總而言之,當您相信他們讀取了您的 SSH 流量時,一切都會崩潰。