SHA パスワードハッシュ

提供: ArchWiki
ナビゲーションに移動 検索に移動

関連記事

セキュアハッシュアルゴリズム(SHA)は、さまざまなハッシュ関数のセットで、広範な用途に頻繁に使用されます。

Arch Linux での SHA ハッシュ関数の使用例には以下があります:

SHA パスワードハッシュ

デフォルトでは、Arch Linux は shadow パッケージのリリースで4.1.4.3-3 (バグ13591) から4.14.0まで、パスワードに SHA-512 を使用していました (yescrypt に置き換えられる前) これは、MD5 ハッシュ関数を置き換えたもので、MD5 は衝突脆弱性によって危険であることが判明しています。詳細については wikipedia:Secure Hash Algorithms#Comparison of SHA functions をご覧ください。

設定

SHA-512 パスワードハッシュは、キー強化を改善するために、rounds=N オプションで設定できます。例えば、rounds=65536 という設定は、攻撃者が /etc/shadow のパスワードファイルのハッシュに対してテストするたびに65536回のハッシュ計算を行わなければならないことを意味します。

そのため、攻撃者は65536倍の遅延を受けます。これにより、コンピュータはログインのたびに65536回のハッシュ計算を行う必要がありますが、遅いコンピュータでもそれには1秒未満しかかかりません。

pam のリリース1.6.0以降、SHA-512 の rounds オプションは、/etc/login.defs ファイルを編集して SHA_CRYPT_MAX_ROUNDS パラメータに値を設定するか、/etc/pam.d/passwd を編集して適切な値で rounds を追加することで設定できます。[1]

もし rounds オプションを使用しない場合、PAM は /etc/login.defs でコメントされた 5000 ラウンドの例とは異なる[2]を使用します。

例えば、次のように設定できます:

/etc/pam.d/passwd
password	required	pam_unix.so sha512 shadow nullok rounds=65536
警告: 上記の例のようにハッシュを sha512 で明示的に設定すると、その後の passwd コマンド実行でデフォルトの yescrypt ハッシュが上書きされます。

/etc/pam.d/passwd のパスワードオプションに関する詳細な説明については、pam_unix(8) のマニュアルページをご覧ください。

使用方法

暗号化設定を変更した後でも、パスワードは自動的には再ハッシュされません。これを修正するためには、すべてのユーザーのパスワードをリセットして再ハッシュさせる必要があります。

rootとして以下のコマンドを実行します。

# passwd username

ここで、username はパスワードを変更するユーザーの名前です。その後、現在のパスワードを再入力すると、パスワードが再ハッシュされます。

パスワードが再ハッシュされたことを確認するためには、root として /etc/shadow ファイルを確認します。SHA-256 でハッシュ化されたパスワードは $5 で始まり、SHA-512 でハッシュ化されたパスワードは $6 で始まり、yescrypt ハッシュは $y で始まります。