移动操作系统是否提供加密质量的随机性?

信息安全 密码学 移动的 随机的
2021-08-31 06:57:30

哪些移动操作系统提供了一种原语来生成应用程序可以使用的加密质量随机性?

在桌面系统上,这些功能无处不在。Unix 提供 /dev/urandom。Windows 提供 CryptGenRandom。移动操作系统是否提供这样的功能?他们是否提供任何支持,以便开发人员不必编写自己的代码来从多个来源收集熵并将其组合以获得种子?(对于开发人员来说,这很容易出错并且很重要,所以我正在寻找平台的支持——无论是操作系统、库还是其他东西。)

我欢迎指定移动操作系统的答案,它是否提供这种支持,如果是,开发人员使用的界面是什么。

4个回答

iPhone 上的 iOS 提供来自所有标准输入(如加速度计、指南针、无线电基带)的熵,以及来自接收各级干扰的电路的某些部分的熵。应用程序开发人员可以通过该SecRandomCopyBytes()功能使用随机位

我没有其他平台的信息。

Android在其基于 Java 的 API 中提供java.util.SecureRandom,该 API 应该是一个加密安全的 PRNG,以基础平台提供的任何东西作为健壮 alea 的来源。Android 基于 Linux 内核,因此很有可能存在/dev/urandom某种类型的内核。

同样,诺基亚的Maemo及其继任者MeeGo基于 Linux,提供/dev/urandom.

黑莓操作系统提供net.rim.device.api.crypto.RandomSource给签名的应用程序。它从设备上的各种来源获取随机性,就像 iOS RNG 一样。请注意,该crypto包还包含各种 PRNG 类,它们不是加密随机的。

完成图片:Silverlight 和 XNA 都提供通常的 .NET System.Security.Cryptography,其中包括RNGCryptoServiceProvider因此,该类可以在 Windows Phone 7 上使用。文档说这提供了加密强的随机性,但没有解释如何确保这一点。