web-dev-qa-db-ja.com

sha256は、十分な長さとエントロピーの秘密から256ビットのキーを導出するための優れた機能ですか?

私が十分な長さとエントロピーの秘密鍵を持っていると仮定します(長さを決定し、適切なランダムソースを持っています)。

ルートキーを各キーの名前でハッシュすることにより、256の長さのキーを生成したいと思います。例:

key1 = sha256(rootKey +"key1") 
key2 = sha256(rootKey +"key2") 
...
keyN = sha256(rootKey +"keyN") 

Sha256ハッシュは良い選択ですか?

はいの場合、ルートシークレットはどのくらいの長さにする必要がありますか? 256ビットはかなり良いと思いますが、それを大きくするのにそれほどコストはかかりません...

2
Max L.

入力キー自体が十分にエントロピーであり、入力キーと識別子の両方が固定長であると仮定すると、SHA-256を安全に使用して追加のキーを導出できます。 SHA-256を含むすべての切り捨てられていないMerkle–Damgårdハッシュに影響を与える 長さ拡張攻撃 を回避するには、固定長が必要です。ただし、これを行うためのより安全な方法は 鍵導出用のHMAC を使用することです。これにより、このスキームがより柔軟になり、長さ拡張攻撃が心配されなくなります。 HMACを使用する場合、入力キーはHMACキーとして使用され、識別子はハッシュされるメッセージです。 [〜#〜] hkdf [〜#〜] などの標準KDFを使用することもできます。

3
forest