2017-01-20 12 views

答えて

1

scrypt、bcrypt、またはPBKDF2のようなソルト値(辞書攻撃を防止するため)と良好なキー偏差関数を使用する必要があります。

鍵を生成するためにハッシュ関数のみを使用すると、生成される鍵がSHA256( "abcd")またはSHA256( "password")である可能性が高くなります。つまり、この方法はブルートフォース攻撃に対して非常に脆弱です。

3

パスワードベースのキー導出機能を使用して暗号化キーをパスワードから派生させます。PBKDF2(別名Rfc2898DeriveBytes)。導出に約100msの計算時間がかかるように、ランダムな塩と繰り返し回数を使用します。

復号化の鍵を導出するために同じ塩と繰り返し回数を使用する必要があります。秘密にする必要はないため、暗号化されたデータの前に付加することができます。

ハッシュ関数を使用するだけでは不十分です。ちょうど塩を追加するだけでセキュリティを向上させることはほとんどありません。

ポイントは、攻撃者が無差別にパスワードを見つけるのに多くの時間を費やすことです。

+0

「約100msの計算時間」...どのハードウェアで、どのレベルの並列計算リソースで...? –

+0

生産マシン上で100ミリ秒、それは人間の使用のためにほぼ正しいです。確かに速いコンピュータは良くなるが、<1usと比較するとSHA512では攻撃者にとって大きなペナルティがあり、〜10万倍遅くなる。 NIST [パスワードベースのキー導出のための推奨](http://nvlpubs.nist.gov/nistpubs/Legacy/SP/nistspecialpublication800-132.pdf)を参照してください。ここでは抜粋を示します:*反復の回数は高く設定する必要があります許容可能な性能を維持しながら、環境に対して許容されるものである。 – zaph

関連する問題