我有一个应用程序,它通过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
和这个问题
并且两者都提供了使用java.security.SecureRandom
的充分建议,但是我在本机生成了这些密钥对,因此欢迎本地的东西。我可以将参数从Java传递给我的本机代码,因此传递随机字节很容易,但是如果完全在本机端完成它,我会选择它。
那么,Android上有/ dev / random的替代品吗?
答案 0 :(得分:3)
Android为本机代码提供/dev/random
和/dev/urandom
。两者都是世界可读的。您应该使用/dev/urandom
,因为Android已经确保PRNG已播种。
/dev/random
/超过/dev/urandom
的唯一优势是即使PRNG没有播种,/dev/random
也是安全的。但是Android总是在PRNG上播种。所以没有优势。而且/dev/random
有很大的缺点 - 它耗尽了系统的熵池。