Encryption

創建具有隨機內容的大文件:複製的捷徑?

  • September 12, 2015

假設我想使用 cryptsetup 創建一個儲存在文件中的大型加密驅動器,第一步是創建一個隨機文件,假設它的大小應該是 3T:

dd if=/dev/urandom of=$FILE bs=1G count=3000

上述過程可能需要很長時間。我想知道以下捷徑是否有意義(從安全的角度來看,請記住目標是創建儲存在 $FILE 中的加密驅動器):

  1. dd if=/dev/urandom of=$FILE bs=1G count=1000
  2. 將上述文件製作3份,每個文件大小為1T,隨機內容相同
  3. 合併3個文件,創建一個目標大小為3T的隨機文件

我猜這個過程沒有那麼嚴格,因為數據有點“少”隨機,但從務實的角度來看,這是一個可行的解決方案(它會快 3 倍)?這比創建一個充滿零的 3T 文件(使用/dev/zero)更好嗎?

/dev/urandom對於這麼大的數據量來說太慢了。

如果偽隨機足夠好:

shred -v -n 1 /kill/me

如果加密隨機足夠好:

cryptsetup open --type=plain /kill/me cryptkillme
shred -v -n 1 /dev/mapper/cryptkillme
cryptsetup close cryptkillme

加密也很慢,但仍然比/dev/urandom.

shred應該為任何磁碟生成足夠快的隨機數據。

另請注意,對於這種大小,您確實應該使用正常塊設備,而不是文件。如果託管巨型文件的文件系統曾經損壞,那麼您正在尋找一個無法解決的難題,其中包含很多碎片,因為這種大小的文件通常會嚴重碎片化。

如果您仍然堅持歸檔,則可以考慮首先不使用隨機數據填充它;您可以改用稀疏文件並 TRIM/punch_hole 它為未使用的區域節省儲存空間。

如果覆蓋舊的未加密數據是您的目標,那麼您還必須覆蓋文件系統中的所有可用空間,而不僅僅是容器文件本身,因為您不知道它是否與您想要的未加密數據分配在同一位置擺脫。

引用自:https://unix.stackexchange.com/questions/229085