プリセットpasswd / user-password-cryptedエントリにどのハッシュアルゴリズムを使用できますか?

プリセットpasswd / user-password-cryptedエントリにどのハッシュアルゴリズムを使用できますか?

passwd/user-password-cryptedほとんどの例では、プロファイルのステートメントに関連して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[...]

~からAskUbuntuはプロビジョニングを通じて自動的にユーザーを作成できません。

これはMD5よりも少し優れていますが、依然として無差別攻撃とレインボーテーブルに対する抵抗力はそれほど大きくありません。

他のどのアルゴリズムを使用できますか?たとえば、PBKDF2はサポートされていますか、それとも使用されている/etc/shadowアルゴリズムによって制限されていますか?MD5、フグ、SHA-256、SHA-512

答え1

/etc/shadow ファイルでサポートされているすべてを使用できます。構成ファイルに指定された文字列は /etc/shadow に置かれます。ソルトされたパスワードをより難しくするには、mkpasswdにソルトオプション(-S)を使用してください。

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

上記のコマンドでは、saltは次のように生成されます。普遍的な根

答え2

そのセクションを見るDebian インストーラのソースコードusermod USER --password=CRYPTED-PASSWORDターゲットchroot内で呼び出されたものが表示されます。

Furtherusermodのマンページには、この--passwordオプションが「crypt(3)によって返された暗号化されたパスワード」を受け入れることが示されています。 「パスワードはローカルの/etc/passwdまたは/etc/shadowファイルに書き込まれます。」これはcrypt(3)、マニュアルページに記載されている暗号化されたパスワード形式のみが利用可能であることを示します。

しかし、すべての希望が消えるわけではありません。上記のマニュアルページでは、 crypt暗号化されたパスワード文字列に実際には形式のソルトフィールドが含まれていることがわかります。したがって、少なくとも原則として、レインボーテーブルに抵抗する必要があります。$hash_id$salt$hash

レインボーテーブル攻撃に加えて、無差別攻撃(Brute Force Attack)も考慮する必要があります。私たちが見るとglibcの実装 crypt パスワード拡張を達成するために実際にSHA-512の複数のラウンドを使用することがわかります。これはまったく異なるわけではありませんが、残念ながらPBKDF2などの標準的な方法は使用しません。

cryptまた、暗号化されたパスワードに追加フィールド()を使用して、適用されるハッシュラウンドの数を実際に制御できることもわかります$rounds=$mkpasswd(1)マニュアルページを見ると、これが-Rオプションとして公開されていることがわかります。この機能を使用すると、デフォルトのラウンド数である5000(ROUNDS_DEFAULTソースコードを参照)を大幅に増やすことができ、マイコンピュータでは数秒ではなく数ミリ秒もかからず、1,000万ラウンドまで計算できます。

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

答え3

レインボーテーブルと無差別代入はここでは関係ありません。

sha-512 パスワードはソルト処理されています。つまり、どのハッシュがあっても、パスワードはソルト(この場合はONf5M3F1u)で始まります。レインボーテーブルを作成するには、「ONf5M3F1u」で始まるすべての入力可能文字列に対してsha-512ハッシュの完全なリストを生成する必要があります。

文字のみを追加し、最下位ビットから2ビットのハッシュ値を生成する理論的なハッシュアルゴリズム「CSUM-2」を使用したとします。 CSUM-2 レインボーテーブルは次のとおりです。

0 d
1 a
2 b
3 c

2つのLSBだけが関連しているので、実際には、d、a、b、cの4つのソルトがあります。

したがって、パスワード「b」のソルト処理されたハッシュ4つを想像してみてください。ソルトが前に配置されるので、「db」をハッシュして「b」を取得するか、「ab」をハッシュして「c」を取得することができます。

$-1$d$b
$-1$a$c
$-1$b$d
$-1$c$a

レインボーテーブルを使用してCSUM-2をクラックするには、それぞれ4つのエントリを持つ4つの個別のレインボーテーブルが必要です。

上記の9桁のソルトを使用してSHA-512を復号化するには、62の完全なレインボーテーブルが必要です。最大9つの英数字を収容するのに十分な大きさのsha-512レインボーテーブルは864 GBです。このソルティングには62個または52TBのテーブルが必要です。

2^512は、9桁のパスワードが提供できるよりもはるかに多くの数字です。 1.3 x 10^154ハッシュと1.35 x 10^19 9文字の英数字パスワードがあります。パスワードが長いほど、パスワードのスペースが大きくなり、エントリが増え、テーブルも大きくなります。これは塩量の線形積と塩長の指数積である。

誰かがこれらすべてのテーブルを作成して保存する必要があります。

PBKDF2は単純に複数の計算を実行しますが、PBKDF2の出力は常に同じであるため、他のアルゴリズムと同様に、Rainbowテーブルを使用してPBKDF2をハッキングします。

PAMはキー拡張にこのパラメータを使用することもできますrounds。デフォルト値は 5,000、最小値は 1,000 です。 rounds=65536SHA-512はログインしようとするたびに2^16回実行されます。事前に計算されたレインボーテーブルはまだ気にしませんが、これにより無差別代入攻撃が遅くなります。上記のように、レインボーテーブルを作成してアーカイブすることは非常に困難です。

関連情報