java由nextint()实施的随机数生成器不能抵挡加密攻击,Fortify漏洞之Insecure Randomness(不安全随机数)...
继续对Fortify的漏洞进行总结,本篇主要针对Insecure Randomness漏洞进行总结,以下:html
一、Insecure Randomness(不安全随机数)
1.一、产生缘由:
成弱随机数的函数是 random()。 java
电脑是一种具备肯定性的机器,所以不可能产生真正的随机性。伪随机数生成器 (PRNG) 近似于随机算法,始于一个能计算后续数值的种子。 算法
PRNG 包括两种类型:统计学的 PRNG 和密码学的 PRNG。统计学的 PRNG 可提供有用的统计资料,但其输出结果很容易预测,所以数据流容易复制。若安全性取决于生成数值的不可预测性,则此类型不适用。密码学的 PRNG 经过可产生较难预测的输出结果来应对这一问题。为了使加密数值更为安全,必须使攻击者根本没法、或极不可能将它与真实的随机数加以区分。一般状况下,若是并未声明 PRNG 算法带有加密保护,那么它有可能就是一个统计学的 PRNG,不该在对安全性要求较高的环境中使用,其中随着它的使用可能会致使严重的漏洞(如易于猜想的密码、可预测的加密密钥、会话劫持攻击和 DNS 欺骗)。安全
示例: 下面的代码可利用统计学的 PRNG 为购买产品后仍在有效期内的收据建立一个 URL。网络
String GenerateReceiptURL(String baseUrl) {dom
Random ranGen = new Random();函数
ranGen.setSeed((new Date()).getTime());加密
return (baseUrl + ranGen.nextInt(400000000) + ".html");spa
} 设计
这
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!
