9

シードされたSHA1PRNGアルゴリズムでSecureRandomを使用して、2つのプロセス間で共有ランダム性を作成しています。最近、SHA1がNISTの標準に従って非推奨になっていることを知り、SHA256への切り替えに取り組んでいます。私が発見した問題は、少なくともOracleのドキュメントによれば、SecureRandomはSHA1PRNGのみをサポートしているということです。SecureRandomをSHA256で使用する方法があるかどうか、またはおそらくもっと良い方法があるかどうか疑問に思っていましたが、SecureRandomを使用する代わりの適切な方法は何ですか?

4

3 に答える 3

15

デビッド、私が理解しているように、あなたはこのドキュメントを参照しています:http: //csrc.nist.gov/publications/nistpubs/800-131A/sp800-131A.pdf

たぶん、何かが足りない。しかし、それが言うこと:

From January 1, 2011 through December 31, 2013, the use of SHA-1 is deprecated 
for digital signature generation. The user must accept risk when SHA-1 is used, 
particularly when approaching the December 31, 2013 upper limit.

しかし、その下には

For all other hash function applications, the use of SHA-1 is acceptable. The 
other applications include HMAC, Key Derivation Functions (KDFs), Random Number 
Generation (RNGs and RBGs), and hash-only applications (e.g., hashing passwords 
and using SHA-1 to compute a checksum, such as the approved integrity technique 
specified in Section 4.6.1 of [FIPS 140-2]). 

したがって、私が理解しているように、SHA1は乱数の生成に問題はありません。

于 2012-10-05T18:55:31.907 に答える
3

私はビクターの声明に全体的に同意します。しかし、さらに明確にするために、NIST SP800-131aのセクション4には、NISTSP800-90またはANSIX9.62-2005で言及されているようにRBGを使用しないRNGを分離する表があります。2015年にタイムアウトになります。

于 2013-02-07T21:15:47.820 に答える
0

Android(Java)の場合は次のコードを使用します。

SecureRandom random = null;
if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.O) {
   random = SecureRandom.getInstanceStrong();
} else {
   random = SecureRandom.getInstance("NativePRNG");
}
于 2021-06-29T10:28:52.530 に答える