我们何时需要使用Android提供我们自己的随机初始化向量(IV)?

时间:2018-02-01 22:52:02

标签: android security

有许多已发布的报告称,在旧版Android上,我们需要提供自己的基于SecureRandom的初始化向量(IV),因为默认值不是随机的:

相反,从API级别23开始,如果您尝试提供自己的IV,则还必须Android cryptography API not generating safe IV for AES,否则您在加密时不会获得"来电者提供的IV"异常。

据推测,在线路的某个地方,Android来自可怕的"足够好"在IV生成方面。

什么是截止值,在此之下我们应该生成自己的IV而不是使用Android生成的IV?

1 个答案:

答案 0 :(得分:2)

从安全的角度来看,您应该始终提供自己的IV,因为您可以完全控制其随机化质量,并消除一个潜在的安全弱点。

关于例外情况,在您看来,IV是随机且好的。但是从Android的角度来看,你提供的IV是固定的,因此不好,API不知道它是否是随机生成的。因此异常"Caller-provided IV not permitted when encrypting"只是一个警告,试图警告开发人员不要使用坏IV并鼓励他们使用内置的IV。

但请注意,内置IV只是构建IV的一种方法。正如您所看到的,从API级别23开始,没有人能够保证其质量,因此最佳做法仍然是自己确保自己的IV质量。