`
izuoyan
  • 浏览: 9220224 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

什么是随机数漏洞,什么是脆弱的随机数

阅读更多

电脑在没有用户参与的情况不能产生真正的随机数。

脆弱的随机数(随机数漏洞)只有在程序使用普通的方式产生随机数出现,主要有以下两种情况产生:
1,本来就不是随机数
2,这个产生的随机数是可以预测的,或可以通过某种途径预测到的

如果创造良好的随机数,电脑必须有达到两个条件:
1,一个良好的随机数生成算法
2,随机数生成算法有一个随机的和不可预测随机数种子

脆弱性随机数的例子

代码片断:

srand (time (0));
x=rand();

这个代码产生脆弱的随机号码,它使用的值为1作为默认种子。
其他任何人在相同的机器上用同样编译这段代码,将得到同样的随机数

随机数漏洞:
随机数生成器本地栈溢出

受影响系统:
Linux kernel < 2.6.22

不受影响系统:
Linux kernel 2.6.22

描述:
Linux Kernel是开放源码操作系统Linux所使用的内核。

Linux kernel的随机数生成器(RNG)实现中存在栈溢出漏洞,本地攻击者可能利用此漏洞提升自己的权限。

如果本地root用户将默认的wakeup阀值设置为比输出池大小还要大的值的话,池传输函数就可能用RNG字节写入栈,触发栈溢出,导致拒绝服务或权限提升。

厂商补丁:
Linux
目前厂商已经发布了升级补丁以修复这个安全问题,请到厂商的主页下载:
http://kernel.org/pub/linux/kernel/v2.6/linux-2.6.22.3.tar.bz2

参考以下英文片段
——————————

What is a random number vulnerability?

Computers are deterministic and are therefore predictable. Computers cannot, in and of themselves, generate truly random numbers.

In the absense of outside input, computers can only create pseudo-random numbers.

A random number vulnerability occurs when a program uses a method of generating random numbers which is either:

  1. Not random
  2. Predictable

To generate good random numbers, the computer must have two things:

  1. A good random number generation algorithm
  2. A random and unpredicatable seed for the random number generation algorithm

Random Number Vulnerability Examples

Consider the following code snippet:

x=rand();

This code generated bad random numbers because when you call rand() before a seed has been established with srand(), it uses the value 1 as a default seed. Anyone else on the same machine with the same compiler who calls rand() with a seed of 1 will get the same random number as you just did.

Let’s look at another code snippet:

srand (time (0));
x=rand();

This code does call srand() with the current time as a seed. However, this code is still insecure because:

  1. The system time is a very bad seed, because it is predictable within a small range.
  2. The ANSI C rand() function itself does not generate good random numbers.

Let’s examine a third code snippet:

srandom (time (0));
x=random();

This code uses the BSD random() and srandom() functions, which generate much better random numbers than their ANSI C predecessors. However, this code still uses time() to generate the seed number. A much better source for random numbers on BSD and Linux systems is the /dev/random device.

Number Seeds and Random Number Vulnerabilities

Good seed numbers come from unpredictable events such as user keystrokes or mouse movements. These are not perfect sources of randomness, however. Human behavior is somewhat predictable and computer hardware can buffer keyboard and mouse interrupts, reducing their randomness.

Numerous other random number generators are available for various platforms and development environments. It is extremely difficult to create a good one, and even more difficult to determine if the random number generator you created really is generating random and unpredictable numbers. The best path for most applications is to implement an existing random number generator which has been subject to public cryptanalysis.

Random number vulnerabilities are of interest to hackers when they can be utilized to determine input values to cryptographic functions. This can be utilized in cryptanalysis.

Improper use of the function calls rand() and random() are the normal causes of random number vulnerabilities.

Additional Information Sources on Generating Random Numbers

For more information on generating random numbers, read RFC 1750 - Randomness Recommendations for Security.

百科地址:http://wiki.mygogou.com/doc-view-771.html
分享到:
评论

相关推荐

    随机数生成

    首先,我们来理解什么是随机数。随机数是指在一定范围内无法预测的数字,它们的出现应该是均匀且无规律的。在计算机中,由于硬件和软件的限制,生成的“随机”数实际上是伪随机数,即通过一定的算法得到的一系列看...

    RNG随机数标准FIPS140-2

    4. **退化处理**:当检测到RNG性能下降时,系统应能够采取措施恢复随机性或停止服务以防止安全漏洞。 5. **认证要求**:所有符合FIPS 140-2标准的RNG都必须经过NIST的认证。 #### 六、FIPS 140-2的适用范围 FIPS ...

    Linux随机数生成器的原理及缺陷.pdf

    攻击者可以利用这些漏洞来攻击随机数生成器,从而获取系统的敏感信息。 在设计随机数生成器时,需要考虑到安全性和性能之间的平衡。随机数生成器的安全性取决于熵值的收集和处理,而性能取决于随机数生成的速度和...

    CPP随机数_随机数生成_

    在编程领域,随机数生成是极其重要的一部分,特别是在模拟、加密、游戏开发和科学计算等领域。CPP(C++)作为一款强大的编程...对于特定的安全敏感应用,如加密算法,必须使用高质量的随机数生成器,以防止安全漏洞。

    NIST随机数测试标准详解.rar

    NIST(美国国家标准与技术研究院)随机数测试标准是一套广泛使用的评估伪随机数生成器(PRNGs)性能的规范。这套标准被称为SP 800-22,它包含了一组全面的统计测试,旨在确保生成的随机序列具有不可预测性、均匀性和...

    密码学中的随机数测试标准NIST文档。

    - **意义**:通过一套标准化的测试方法来验证随机数生成器的性能,可以提高密码系统的安全性,减少因随机数不足而引发的安全漏洞。 ##### 测试套件概览 - **发布机构**:NIST(美国国家标准与技术研究院) - **...

    NIST.SP.800-90B 随机数熵评估标准

    如果随机数不够“随机”,即熵值过低,那么密钥和随机填充等可能被预知,从而导致安全漏洞。因此,熵评估标准帮助确保使用在密码学中的随机数符合特定的随机性和不可预测性标准。 NIST SP 800-90B 专门针对用作随机...

    代码审计Forfity常见扫描 漏洞原理与修复意见介绍

    漏洞原理:不安全的随机数漏洞发生在代码中使用了不安全的随机数生成算法,例如使用了 `rand` 函数来生成随机数。 危害介绍:不安全的随机数漏洞可能会导致攻击者猜测随机数,从而实施攻击,例如猜测会话 ID、密码...

    solidity已知漏洞

    随机数误区漏洞是一种常见的漏洞,它可以被攻击者利用来攻击智能合约。该漏洞的成因是由于 Solidity 语言中随机数生成的问题所致。攻击者可以通过制造随机数误区来攻击智能合约,从而导致合约崩溃。 防御方法:使用...

    随机数生成工具

    这里的随机数必须是真正不可预测的,否则可能导致安全性漏洞。 回到我们的"随机数生成工具",从文件名"suijishu.exe"可以看出这可能是一个Windows操作系统下的可执行程序,它可能提供用户友好的界面,让用户能够...

    量子随机数发生器.pdf

    使用量子随机数发生器生成的随机数可以提高测试的随机性和不可预测性,从而更准确地发现潜在的漏洞。 在Web安全领域,量子随机数发生器的应用有助于防止中间人攻击、防止会话劫持以及提升HTTPS等安全协议的性能。在...

    NHHS_均匀随机数_源码.zip

    - 对于安全敏感的应用,如加密,需要使用经过专业认证的随机数生成器,以防止安全漏洞。 总结,"NHHS_均匀随机数_源码.zip"中的内容可能涉及到一种特定的随机数生成算法,其源代码值得深入研究,特别是对于需要高...

    神经网络与随机数的安全性分析(上) .pdf

    总的来说,神经网络对随机数安全性的威胁揭示了当前安全体系的潜在脆弱性。随着技术的发展,我们需要不断更新和强化随机数生成的安全措施,以应对不断演进的攻击手段。同时,对于大数据和云环境中的安全性,这也提出...

    智能卡的随机数

    智能卡的随机数在信息安全和加密技术中扮演着至关重要的角色。随机数在智能卡的应用主要涉及以下几个方面:会话鉴别、加密填充以及传输序列计数器...在实际操作中,随机数的生成和管理必须严谨,以防止潜在的安全漏洞。

    使用NIST统计测试集验证STM32微控制器随机数生成

    这些测试集旨在确保随机数序列符合统计随机性的要求,防止潜在的安全漏洞。 **STM32 MCU RNG概述** STM32微控制器的RNG外设通常采用物理噪声源,如电源噪声或环路振荡器噪声,来生成随机比特流。生成的随机数经过...

    网络游戏-基于量子通信网络与真随机数的多次身份认证系统和方法.zip

    在网络游戏中,真随机数的使用可以极大地提高认证的安全性,避免因密钥重复或可预测而导致的安全漏洞。 三、多次身份认证系统 传统的身份认证可能只进行一次,但随着网络安全威胁的升级,多次身份认证成为必要。...

    Web中间件常见漏洞总结.pdf

    - 对上传的文件进行重命名,加入时间戳和随机数,以防止恶意用户通过特定格式绕过安全限制。 2. IIS7.x版本漏洞 IIS7.x版本中存在Fast-CGI模块下的解析问题。若未正确配置ISAPI和CGI限制,IIS7.x可能在Fast-CGI运行...

Global site tag (gtag.js) - Google Analytics