有可能从iPhone的安全飞地获得真正的随机数字吗?我读到安全飞地包括一个TRNG.我不确定是否有可能使用它来获取随机数字,或者它是否仅用于安全飞地的内部使用.有什么主意吗?
我读了一些关于这个安全飞地的苹果官方文档,上面说它确实有一个TRNG,但还没有找到任何代码样本或任何关于如何使用它的信息,如果可能的话.
有可能从iPhone的安全飞地获得真正的随机数字吗?我读到安全飞地包括一个TRNG.我不确定是否有可能使用它来获取随机数字,或者它是否仅用于安全飞地的内部使用.有什么主意吗?
我读了一些关于这个安全飞地的苹果官方文档,上面说它确实有一个TRNG,但还没有找到任何代码样本或任何关于如何使用它的信息,如果可能的话.
通过CryptoKit
模块直接访问安全飞地,但这只能用于通过SecureEnclave.P256
命名空间的NIST P-256签名操作.
没有通过安全飞地expose 的direct TRNG功能.
在SWIFT中,使用SystemRandomNumberGenerator
by default生成随机值(例如当您呼叫Bool.random()
时).
文档指出,这些数据的实际来源取决于平台,但在Apple平台上,内部使用的是arc4random_buf(3)
,而arc4random_buf(3)
本身就是种子.
这意味着从SystemRandomNumberGenerator
生成的任何随机数据最终都来自getentropy(2)
,getentropy(2)
从内核的CPRNG获取数据.
这个CPRNG是来自安全飞地的硬件TRNG(以及其他来源)的seeded,取决于可用性.
尽管TRNG是内核的实现细节,但您可以将内核的CPRNG视为随机数据的安全来源.
由于这一随机数据来源在Apple平台上的SWIFT中默认expose 于.random()
个API,因此默认情况下可以期待高质量的随机数据.