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/urandom,因为 Android 已经确保 PRNG 已播种。

/dev/random/ over的唯一优点/dev/urandom/dev/random即使 PRNG 没有播种也是安全的。但安卓总是播种 PRNG。所以没有优势。并且/dev/random有很大的缺点——它耗尽了系统熵池。

于 2012-10-24T18:41:01.193 回答