web-dev-qa-db-ja.com

SHAラウンドとは何ですか?

私はより多くのシャラウンドが/ etc/shadowでハッシュされたパスワードをブルートフォースにすることを困難にすることを理解しています。より高いラウンドでは、Sudoコマンドを実行してUnixアカウントにログインするときに、より多くのCPU処理を使用します。しかしsha-roundsとは実際には何ですかchpasswdマニュアルは、シャラウンドの技術的な定義を実際に提供していません。

-s, --sha-rounds ROUNDS
           Use the specified number of rounds to encrypt the passwords.

           The value 0 means that the system will choose the default number of rounds for the crypt method (5000).

           A minimal value of 1000 and a maximal value of 999,999,999 will be enforced.

           You can only use this option with the SHA256 or SHA512 crypt method.

           By default, the number of rounds is defined by the SHA_CRYPT_MIN_ROUNDS and SHA_CRYPT_MAX_ROUNDS variables in /etc/login.defs.

SHA-2 wikiは実際にはどちらも言っていません。

SHA-256 and SHA-512 ... use different shift amounts and additive constants, but their structures are otherwise virtually identical, differing only in the number of rounds.

ChpasswdマニュアルとSHA-2 wikiの両方で、「sha-rounds」とは何か、またはSHA512とどのように関連するかを判断するための十分なコンテキストがありません。

14
user201199

マニュアルがラウンドと呼んでいるものは、おそらくiterationsと呼ぶほうがよいでしょう。 SHA-2関数の内部で固定されたラウンド数(使用されるハッシュに応じて64または80)があることは事実ですが、それはこのマニュアルでは説明していません。ハッシュされたパスワードをより安全にするために、プログラムはパスワードをPBKDF2などのKDF関数にかけることがよくあります。PBKDF2は、単一のハッシュ関数を何回も実行してブルートフォース攻撃を遅くします。これは、この文脈で「ラウンド」が指すものです。ラウンド数が大きいほど、パスワードの処理に時間がかかり、より安全になります。

19
forest

安全なシステムは、パスワードを直接、または暗号化された形式で保存するのではなく、ソルト処理された低速のハッシュとして保存します。詳細は パスワードを安全にハッシュする方法? を参照してください。

暗号化ではなくハッシュメカニズムを使用する目的は、パスワードハッシュ(_/etc/shadow_に格納されているもの)からパスワード自体に戻ることを不可能にすることです。ただし、パスワードを推測して計算する「簡単な」方法を除きます対応するハッシュとそれをデータベースエントリと比較します。ハッシュ計算を遅くする目的は、そのようなブルー​​トフォースの試行を遅くすることです。

遅いハッシュを作成する一般的な方法の1つは、SHA-256やSHA-512などの通常の暗号化ハッシュ関数を使用して何回も実行することです。基本的にはSHA-256(SHA-256(…(SHA-256(salt + password))))です。 (これは実際の計算ではありません。ここでは関連する側面を示しているだけです。)x自体を推測して検証するのに不足しているSHA-256(x)を指定してxを見つけることは不可能ですSHA-256(guess)を計算して推測すると、推測を行って検証するのではなく反復ハッシュが与えられた場合、passwordを見つけることは不可能です。これは現在ほとんどのUnixシステムが SHAcrypt と呼ばれる方法を使用して使用しているものです(ただし、一般的に使用される名前は実際にはありません)。 PBKDF2 はよく知られた名前です。これは非常によく似たスキームであり、ハッシュ関数を複数回繰り返すという同じ原理に基づいて構築されていますが、構造がわずかに異なります。

chpasswdのドキュメントで「number of SHA rounds」と呼ばれているのは、salted-iterated-SHA2構造がハッシュ関数を呼び出す回数です。これは一般的に「反復数」。

SHA-256およびSHA-512を含む一部の暗号化プリミティブは、内部で複数のラウンドを使用すると説明されていますが、これはchpasswdのドキュメントでWordの「ラウンド」の使用とは関係ありません。 SHAcryptは標準のハッシュ関数(SHA-256またはSHA-512)をブラックボックスとして使用し、それを複数回呼び出します。