Password

我可以在 preseed 的 passwd/user-password-crypted 條目中使用哪些雜湊算法?

  • March 29, 2022

當涉及到passwd/user-password-cryptedpreseed 文件中的語句時,大多數範例使用 MD5 雜湊。例子:

# Normal user's password, either in clear text
#d-i passwd/user-password password insecure
#d-i passwd/user-password-again password insecure
# or encrypted using an MD5 hash.
#d-i passwd/user-password-crypted password [MD5 hash]

來自Debian 的附錄 B。使用預置自動安裝

一些消息來源表明也可以使用 SHA-512:

嘗試使用這樣的雜湊密碼:

$ mkpasswd -m sha-512

$$ … $$ 然後在你的預置文件中:

d-i passwd/user-password-crypted password $6$ONf5M3F1u$bpljc9f1SPy1w4J2br[...]

來自Can’tautomated user creation with preseeding on AskUbuntu

這比 MD5 略好,但仍然不能很好地抵抗暴力和彩虹表。

我還可以使用哪些其他算法?例如,是否支持 PBKDF2,或者我是否受到 MD5、Blowfish、SHA-256 和 SHA-512 中使用的算法/etc/shadow限制

您可以使用 /etc/shadow 文件中支持的任何內容。預種子文件中給出的字元串只是放入 /etc/shadow 中。要創建加鹽密碼以使其更加困難,只需將 mkpasswd 與加鹽選項 (-S) 一起使用:

mkpasswd -m sha-512 -S $(pwgen -ns 16 1) mypassword
$6$bLyz7jpb8S8gOpkV$FkQSm9YZt6SaMQM7LPhjJw6DFF7uXW.3HDQO.H/HxB83AnFuOCBRhgCK9EkdjtG0AWduRcnc0fI/39BjmL8Ee1

在上面的命令中,鹽是由pwgen生成的。

查看debian-installer 原始碼的適當部分,我們可以看到它只是usermod USER --password=CRYPTED-PASSWORD在目標 chroot 內部呼叫。

進一步usermod的手冊頁暗示該--password選項接受“加密密碼,由 crypt(3) 返回”。並且“密碼將寫入本地 /etc/passwd 或 /etc/shadow 文件中。”。這表明我們只能使用crypt(3)手冊頁中描述的加密密碼格式。

然而,所有的希望都沒有失去。從前面提到的手冊頁中,我們了解到 crypt實際上在加密的密碼字元串中包含了一個 salt 欄位,格式為. 所以至少在原則上它應該能抵抗彩虹表。$**hash_id**$**salt**$**hash**

除了彩虹表攻擊,我們還必須考慮暴力攻擊。如果我們查看glibc 的實現, crypt 我們會發現它實際上使用多輪 SHA-512 來實現密碼拉伸,這並不完全不同,但不幸的是,它沒有使用諸如 PBKDF2 之類的標準方法。

此外,我們看到我們實際上可以通過crypt使用加密密碼 ( $rounds=$) 中的附加欄位來控制應用的雜湊輪數。查看手冊頁,我們發現這是作為選項mkpasswd(1)公開的 。-R使用此功能,我們可以顯著提高預設輪數 5000(請參閱ROUNDS_DEFAULT原始碼),在我的機器上,這需要不到幾毫秒的時間來計算,比如說,1000 萬輪需要幾秒鐘:

> mkpasswd -R 10000000 -m sha-512 mypassword
$6$rounds=10000000$Rq30Hdd.0LzWq3x$XRXHvd5MnIi5MD2H8Jtn5W0cjvq4siGtUgWUaETc4QZyvuR4iY0Af.DoNfj1E6SvoHaVotAEjIiOPS3GvwJjM0

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