私が十分な長さとエントロピーの秘密鍵を持っていると仮定します(長さを決定し、適切なランダムソースを持っています)。
ルートキーを各キーの名前でハッシュすることにより、256の長さのキーを生成したいと思います。例:
key1 = sha256(rootKey +"key1")
key2 = sha256(rootKey +"key2")
...
keyN = sha256(rootKey +"keyN")
Sha256ハッシュは良い選択ですか?
はいの場合、ルートシークレットはどのくらいの長さにする必要がありますか? 256ビットはかなり良いと思いますが、それを大きくするのにそれほどコストはかかりません...
入力キー自体が十分にエントロピーであり、入力キーと識別子の両方が固定長であると仮定すると、SHA-256を安全に使用して追加のキーを導出できます。 SHA-256を含むすべての切り捨てられていないMerkle–Damgårdハッシュに影響を与える 長さ拡張攻撃 を回避するには、固定長が必要です。ただし、これを行うためのより安全な方法は 鍵導出用のHMAC を使用することです。これにより、このスキームがより柔軟になり、長さ拡張攻撃が心配されなくなります。 HMACを使用する場合、入力キーはHMACキーとして使用され、識別子はハッシュされるメッセージです。 [〜#〜] hkdf [〜#〜] などの標準KDFを使用することもできます。