3

OpenSSL 1.0.1c を介して ECDSA 公開/秘密鍵ペアを生成するアプリケーションを作成しました。私が理解していることから、OpenSSL は Linux で /dev/random を使用しますが、Android には /dev/random がないため、暗号的に弱いキーペアを提供している可能性があります。

これ両方読んだ

https://security.stackexchange.com/questions/2152/do-mobile-oss-provide-crypto-quality-randomness

そしてこの質問

https://security.stackexchange.com/questions/14669/how-to-select-dev-random-or-dev-urandom-in-the-code-in-android

どちらも を使用するための適切な提案を提供しますjava.security.SecureRandomが、ネイティブ側でこれらのキーペアを生成するため、ネイティブなものは大歓迎です。Java からネイティブ コードに引数を渡すことができるので、ランダムなバイトを渡すのは簡単ですが、完全にネイティブ側で行う方法がある場合は、それを選択します。

では、Android で /dev/random に代わるものはありますか?

4

1 に答える 1

4

Android は、 と の両方をネイティブ コードに提供し/dev/randomます/dev/urandom。どちらも誰でも読み取り可能です。/dev/urandomAndroid はすでに PRNG がシードされていることを確認しているため、使用する必要があります。

/dev/random/ overの唯一の利点は、PRNG がシードされていなくても安全で/dev/urandomあることです。/dev/randomしかし、Android は常に PRNG をシードします。だからメリットがない。また/dev/random、システムのエントロピー プールが枯渇するという大きな欠点もあります。

于 2012-10-24T18:41:01.193 に答える