数字随机生成器(随机数生成器)

乍看之下,电子游戏、赌博和密码学似乎没有任何关系,但实际上,它们都使用“随机数”,没有随机数,现代人的生活就无法构建。这篇文章将解释计算机如何产生这样的随机数。生成随机数

本文最后更新时间:  2023-04-11 23:21:54

乍看之下,电子游戏、赌博和密码学似乎没有任何关系,但实际上,它们都使用“随机数”,没有随机数,现代人的生活就无法构建。这篇文章将解释计算机如何产生这样的随机数。

生成随机数比你想象的难多了!

例如,如果您想在编程中使用随机数,请使用Ruby中的“rand”或Python中的“random()”等方法。此时产生的是通过计算得到的伪随机数,而不是完全随机数。

首先,计算机是“输入数据,输出数据”的逻辑机器。为了让计算机生成随机数,它需要数据作为随机数的来源。这个随机数的来源是什么数据,取决于随机数生成器。有两种主要类型的随机数发生器。

一个叫做“伪随机数发生器(PRNG)”。要使用此PRNG生成数字,您需要两个特定的数字,即“种子值”和“随机数生成算法”。PRNG的随机数生成算法包括'平方抽取法','线性同余法','线性移位寄存器'还有'梅森图斯特'。

PRNG不能生成完美的随机数,但它可以快速、廉价地生成看似随机的数字。另外,如果准备了特定的种子值,就可以获得重现性,所以测试操作也是个大问题。这就是为什么PRNG经常被用于游戏和编程语言中的随机方法。

但是,由于PRNG产生的数字的随机性取决于种子值,所以仍然存在一个漏洞,即如果种子值泄露,则可以预测数字的产生。其实卡巴斯基实验室(一种安全软件)就有一个密码管理器的例子,在获取种子值上有问题,让随机生成的密码可以预测。

另一种是“固有随机数生成器(TRNG)”随机生成数据作为随机数源。TRNG的特点是用熵代替种子值,种子值是一个特定的数,可以生成更完美的随机数。因此,TRNG被用于数字赌博领域,如骰子、洗牌和轮盘赌。

问题是如何用熵作为随机数来源的数据,这就要求组成计算机的部件是随机的。TRNG利用记忆易失性和光电效应等量子现象,将物理噪音转化为数字1和0,从而产生高度随机的数字。

另一方面,TRNG的缺点是生成数字需要时间。另外,作为随机数来源的数据需要熵,所以空空闲或新服务器无法像活动服务器那样随机创建数据。

由于PRNG和TRNG有各自的弱点,它们可以毫无问题地用于视频游戏或赌博,但不能用于要求高安全性和高速度的密码学。

为此,设计了加密伪随机数发生器,实现了PRNG的速度和TRNG的安全性。

CSPRNG是一个生成器,它从“高质量的熵源创建种子值,并将它们输入到算法中,以生成高度安全的随机数”。简而言之,CSPRNG是一种“利用TRNG产生PRNG种子价值”的机制。/Dev/random用于类Unix操作系统,Linux使用这个CSPRNG。

下次,当你玩视频游戏,随机播放音乐或在编程中拨打随机号码时,也许你可以想一想计算机中发生了什么。

温馨提示:内容均由网友自行发布提供,仅用于学习交流,如有版权问题,请联系我们。