man 5 shadow
2番目のフィールドについては、次のように言います。
暗号化されたパスワード
最近本当にそうですか? 「ハッシュされたパスワード」と言わなければならないと思います。私は正しいですか?
答え1
いいえ、シャドウファイルには暗号化されたパスワードは含まれていません。私が見たUnixのバリエーションにはありません。これにはどこかに暗号化キーが必要です。どこにいますか?
原作もcrypt
機能実際にはハッシュ関数です。パスワードをキーとして使用します。DES。の出力は、crypt
すべてのビットが0のブロックの暗号化です。これは実装の一部として暗号化機能を使用しますが、crypt
操作は暗号化操作ではありません。ハッシュ関数: 逆関数を計算するのが難しく、同じ出力を生成する2つの値を見つけるのが難しい関数です。
制約内で、元のDESベースのcrypt
実装は、次の基本原則に従いました。良い暗号化ハッシュ関数:元に戻せない機能、塩、減速係数。今日のコンピューティングのパフォーマンスを考慮すると、適切ではないのはデザインではなく制限のためです。パスワード最大8文字、フルサイズのため、無差別代入攻撃が容易で、ソルトが短すぎ、繰り返し回数が短すぎます。
この名前のためにcrypt
(そして暗号化が内部的に使用されるという事実のためにcrypt
)そして最近まで暗号化について訓練された人がほとんどいなかったので、この機能に関する広範な文書と他の文脈crypt
で同等の文書ではこれを「暗号化暗号化」と説明します。しかし、実際にはパスワードハッシュであり、いつもそうでした。
最新のシステムは、より強力なアルゴリズムに基づく暗号化ハッシュ関数を使用しています。これらのアルゴリズムのいくつかは「MD5」、「SHA-256」、「SHA-512」と呼ばれていますが、ハッシュ計算はMD5(パスワード+ソルト)とは異なり、遅い速度要件を満たす繰り返しハッシュです(一般的な方法ではGPUベースの加速を防ぐためのメモリ硬度が不足しています。
答え2
man 5 shadow
「暗号化されたパスワード」セクションでこれを参照してくださいcrypt(3)
。マニュアル()を読むと、man 3 crypt
既存のDES暗号化パスワードと現在使用されているハッシュアルゴリズムの両方が利用可能であることがわかります。したがって、「暗号化されたパスワード」には、そのフィールドに含まれる可能性のある内容が完全に含まれていないと考えたことが正しいです。より良い説明は「暗号化またはハッシュされたパスワード」です。
答え3
設定によって異なります。シャドウファイルには暗号化された(自己およびソルトを含む)パスワードを含めることができますが、ハッシュの有無は形式によって異なります。
システムはハッシュ関数に基づいて新しいパスワードを入力できますが、それでも古い形式をサポートする可能性が高いです。
項目がaで始まらない場合、サポートされているハッシュ関数の1つを使用せずに出力されたと$
見なされます。crypt
「$1$」はMD5を表し、「$2a$」はBlowfish、「$2y$」はBlowfish(8ビット文字を正しく処理する)、「$5$」はSHA-256、「$6$」はSHA- 512,