暗号には安全な擬似乱数生成 (PRNG) が必要です。java.util.Random のような標準の Java クラスは十分なランダム性を提供しないため、実際に攻撃者が生成される次の値を推測し、この推測を使用して別のユーザーになりすましたり機密情報にアクセスしたりするおそれがあります。
java.util.Random
一般的に、SecureRandom を使用すべきです。しかし、Android 4.4 (API レベル 19) 以前の Android バージョンをサポートする場合には、 PRNG を適切に初期化できないarrow-up-right Android 4.1-4.3 (API レベル 16-18) バージョンのバグを回避するために更なる注意が必要です。
SecureRandom
ほとんどの開発者は引数なしでデフォルトコンストラクタを介して SecureRandom をインスタンス化する必要があります。他のコンストラクタはより高度な用途のためにあり、誤って使用されると、ランダム性やセキュリティが低下するおそれがあります。SecureRandom を支援する PRNG プロバイダは AndroidOpenSSL (Conscrypt) プロバイダから SHA1PRNG を使用します。
AndroidOpenSSL
SHA1PRNG
詳細については Android ドキュメントarrow-up-right を確認してください。
Last updated 1 month ago