Insecure Randomness
来源:互联网 发布:中日技术贸易 数据 编辑:程序博客网 时间:2024/06/05 08:52
ABSTRACT
标准的伪随机数生成器不能抵挡各种加密攻击。
EXPLANATION
在对安全性要求较高的环境中,使用一个能产生可预测数值的函数作为随机数据源,会产生 Insecure Randomness 错误。
电脑是一种具有确定性的机器,因此不可能产生真正的随机性。伪随机数生成器 (PRNG) 近似于随机算法,始于一个能计算后续数值的种子。
PRNG 包括两种类型:统计学的 PRNG 和密码学的 PRNG。统计学的 PRNG 可提供有用的统计资料,但其输出结果很容易预测,因此数据流容易复制。若安全性取决于生成数值的不可预测性,则此类型不适用。密码学的 PRNG 通过可产生较难预测的输出结果来应对这一问题。为了使加密数值更为安全,必须使攻击者根本无法、或极不可能将它与真实的随机数加以区分。通常情况下,如果并未声明 PRNG 算法带有加密保护,那么它有可能就是一个统计学的 PRNG,不应在对安全性要求较高的环境中使用。
示例: 下面的代码可利用统计学的 PRNG 为购买产品后仍在有效期内的收据创建一个 URL。
...function genReceiptURL (baseURL){var randNum = Math.random();var receiptURL = baseURL + randNum + ".html";return receiptURL;}...
这段代码使用
Math.random()
函数来为收据页面生成独特的标识符。因为 Math.random()
是一个统计出的 PRNG,攻击者很容易就能猜到它生成的字符串。尽管收据系统的底层设计也存在错误,但如果使用了一个不生成可预测收据标识符的随机数生成器(如密码学的 PRNG),会更安全一些。REFERENCES
[1] Standards Mapping - OWASP Top 10 2010 - (OWASP 2010) A7 Insecure Cryptographic Storage
[2] Standards Mapping - OWASP Top 10 2007 - (OWASP 2007) A8 Insecure Cryptographic Storage
[3] Standards Mapping - OWASP Top 10 2004 - (OWASP 2004) A8 Insecure Storage
[4] Standards Mapping - Security Technical Implementation Guide Version 3 - (STIG 3)APP3150.2 CAT II
[5] Standards Mapping - Security Technical Implementation Guide Version 3.4 - (STIG 3.4)APP3150.2 CAT II
[6] J. Viega, G. McGraw Building Secure Software Addison-Wesley
[7] Standards Mapping - Common Weakness Enumeration - (CWE) CWE ID 330
[8] Standards Mapping - Web Application Security Consortium 24 + 2 - (WASC 24 + 2)Information Leakage
[9] JavaScript crypto:window.crypto.random() Mozilla
[10] Standards Mapping - FIPS200 - (FISMA) MP
[11] Standards Mapping - SANS Top 25 2009 - (SANS 2009) Porous Defenses - CWE ID 330
[12] Standards Mapping - Payment Card Industry Data Security Standard Version 1.2 - (PCI 1.2)Requirement 6.3.1.3, Requirement 6.5.8
[13] Standards Mapping - Payment Card Industry Data Security Standard Version 2.0 - (PCI 2.0)Requirement 6.5.3
[14] Standards Mapping - Payment Card Industry Data Security Standard Version 1.1 - (PCI 1.1)Requirement 6.5.8
转载自:http://sebug.net/paper/books/vulncat/javascript/insecure_randomness.html
- Insecure Randomness
- Insecure Randomness
- Insecure Randomness
- fortify——Insecure Randomness
- Insecure Randomness引发对随机数生成器抵挡加密攻击的方法
- 《Fooled by Randomness》读书笔记
- Insecure Configuration Management
- Chrome block insecure content
- booting in insecure mode
- docker insecure-registry
- go get -insecure 修改URL(uses insecure protocol)
- eclipse perl 中的Insecure dependency
- 【Android Debug】 Skipping insecure file ...
- SecurityError: The operation is insecure.
- 【Android Debug】 Skipping insecure file ...
- [ZOJ2715]Insecure in Prague && 枚举
- --insecure-registry docker-reg:5000
- SecurityError: The operation is insecure.
- eclipse打不开试试这个
- 整形提升与溢出
- 用例和功能的区别
- 表单控件状态(禁用状态)
- [UnityShader]Blending
- Insecure Randomness
- java gc及jvm调优
- 查找单链表的倒数第K个元素
- nyoj zb的生日 (DFS)
- 基于Ubuntu 15.04 LTS编译Android5.1.0源代码
- Android Socket 发送与接收数据问题: 发送后的数据接收到总是粘包
- 115个Java面试题和答案——终极列表
- Insecure Randomness
- MapReduce之join和sort