私のLinuxオペレーティングシステムはどのように高速なログインプロセスを達成しますか?

私のLinuxオペレーティングシステムはどのように高速なログインプロセスを達成しますか?

sha-516 ハッシュパスワード文字列をテストするために、次のシェルスクリプトを作成しました。

myhash='$6$nxIRLUXhRQlj$t29nGt1moX3KcuFZmRwUjdiS9pcLWpqKhAY0Y0bp2pqs3fPrnVAXKKbLfyZcvkkcwcbr2Abc8sBZBXI9UaguU.' #Which is created by mkpasswd for test

i=0
while [[ 1 -eq 1 ]]
do
        testpass=$(mkpasswd -m sha-512 "test")
        i=$[ $i + 1 ]
        if [[ "$testpass" == "$myhash" ]];
                then
                        echo -e "found\n"
                        break
        else
                echo -e "$myhash /= $testpass :-> $i Testing....\n"
        fi

done

走った後216107数値ループテスト 一致する項目が見つかりませんでした。しかし、私のLinux OS(Ubuntu)システムでは、ログイン資格情報を非常にすばやく一致させることができます。私の質問はなぜそれほど早く同じ結果が得られないのですか?

ベストアンサー1

パスワードハッシュ(入力時myhash)には、どのハッシュ関数が使用されたか、どのパラメータ(コスト、塩分、ハッシュ関数出力など)が使用されたかを示すいくつかのメタデータが含まれています。最新のUnixパスワードハッシュ形式では、部分は次のように区切られています$

  • 6表現するUnix反復SHA-512法(似ているが同じではないデザインPBKDF2)。
  • パラメータがないため、コスト要素はデフォルトです。
  • nxIRLUXhRQlj塩です。
  • t29nGt1moX3KcuFZmRwUjdiS9pcLWpqKhAY0Y0bp2pqs3fPrnVAXKKbLfyZcvkkcwcbr2Abc8sBZBXI9UaguU.予想される出力です。

実行されるたびに、mkpasswd -m sha-512ランダムなソルトを使用してパスワードハッシュを生成します。したがって、このコマンドを実行すると、毎回異なる出力が生成されます。

パスワードを入力すると、システムは計算して出力にiterated_sha512(default_cost, "nxIRLUXhRQlj", typed_password)なることを確認します"t29nGt1moX3KcuFZmRwUjdiS9pcLWpqKhAY0Y0bp2pqs3fPrnVAXKKbLfyZcvkkcwcbr2Abc8sBZBXI9UaguU."

プログラムが実行する操作は異なります。ランダムなソルトを作成し、それを暗号化ハッシュ関数の出力と比較しますmyhash。これは、無視できる確率で同じソルトを生成する場合にのみ一致します(コンピュータは生涯にわたって同じソルトを2回生成しません)。しかし、塩分を推測する必要はありません。塩分はパスワードハッシュにあります。

おすすめの本:パスワードを安全にハッシュする方法は?

おすすめ記事