Linux

關於熵的使用,使用 SSH 在遠端伺服器上定期執行命令是否安全?

  • September 4, 2019

我計劃在多個遠端系統上設置定期檢查系統執行狀況。為了實現這一點,我設置了基於密鑰的身份驗證以在遠端端執行腳本而無需互動

IE:

ssh -i /path/to/id_rsa -o "StrictHostKeyChecking=no" user@remote "/path/to/script.sh"

由於熵消耗過快,一位同事對使用 SSH 表示擔憂。計劃是每 1-2 分鐘發出 15 到 25 張上述支票。遠端系統大多在 KVM 主機上虛擬化。這種方法安全嗎?為了理解; SSH 會話中如何使用熵?

“任何考慮產生隨機數的算術方法的人當然處於一種罪惡狀態。因為正如多次指出的那樣,沒有隨機數這樣的東西——只有產生隨機數的方法,而嚴格的算術程序當然不是這樣的方法。” ~約翰·馮·諾依曼

隨機性比人們想像的更難實現;事實上,即使定義隨機性也很困難(或為給定情況選擇正確的定義)。例如,非常適合統計建模的“隨機”數字可能對密碼學來說很糟糕。這些應用程序中的每一個都需要其隨機輸入的某些屬性,例如均勻分佈。密碼學尤其需要不可預測性,因此讀取我們數據的攻擊者無法猜測我們的密鑰。真正的隨機性——在完全不可預測的意義上——不能由電腦程序產生。作為程序輸出產生的任何位序列最終都會重複自身。

對於真正的隨機性,您必須求助於物理過程,例如流體湍流或放射性衰變的量子骰子。即使在那裡,您也必須非常小心,以免測量偽影引入不需要的結構。

  • 到目前為止,你的同事是對的。

SSH 實現利用隨機性(在這種情況下為熵),但該過程對使用者完全不可見。

這是引擎蓋下發生的事情

SSH1 和 SSH2 使用基於核心的隨機源(如果可用),以及它們自己的(希望)波動系統參數的樣本,通過執行不同的程序收集。它使用這些資源來為其 PRNG 播種,並每隔一段時間“加入”更多的隨機性。由於以這種方式收集隨機性的成本很高,因此 SSH 在程序呼叫之間將其隨機位池儲存在一個文件中 (/etc/ssh2/random_seed)。此文件在密鑰生成期間受到保護和使用,而不是在交換密鑰之後,不在連接內。

簡而言之:這種連接密鑰對的熵是基於系統的,而不是基於連接的(甚至是基於命令的)。

  • 知道了這一點,很明顯關於 SSH “耗盡熵”的擔憂是無稽之談。

引用自:https://serverfault.com/questions/981805