我有一个关于随机数生成器的问题。

我已经阅读了一个基于网络摄像头(“ randcam”)的真实随机数生成器。我的问题是,我不太了解随机数的生成方式。以前有没有人听说过这个原则,并且可以给出一些提示如何实现的?而且我已经读过这种方法的随机性,它应该给出真实的随机数,但这是真的吗?我已经找到了C ++的实现,但是我不太了解该实现的工作方式,因为我对C ++不太了解。

#1 楼

在网上快速搜索“ randcam”后,我看到了这个德语页面“ Zufallszahlen aus der Webcam”,该页面翻译为“网络摄像头中的随机数”。 (第一个Google结果页上的所有其他匹配均与无关的无活塞式旋转引擎有关。)

此页与同一站点上的程序有关,该程序试图从网络摄像头收集熵并产生由此得出“真实”随机数。从链接的页面(我没有尝试阅读源代码),该程序尝试通过计算后续帧之间的差异来从光电传感器中提取电噪声,然后将差异字节组合为块并使用MD5对其进行哈希处理。这些块的大小(以及数量)会根据所测量的熵针对每个差异帧进行调整(但并未说明如何进行测量),并且还取决于一些可调整的因子。使用来自网络摄像头的电子噪音,因为熵输入听起来不错。当然,我希望看到可以收集的对熵的更多理论分析,而不仅仅是统计检验(存在通过所有统计检验的加密糟糕的RNG),并且我将使用对数据进行更合理的加密处理。

从加密方面来说,我不会使用MD5,而是使用像SHA-2系列之一这样的较新的哈希函数。虽然在这里MD5的抗碰撞强度不成问题,但是当您的对手可以插入其自己的设备并提供任意位而不是图像时,使用MD5进行任何与安全相关的事情对您的声誉都是不利的。 br />
我将使用熵池设计密码随机数生成器。来自网络摄像头的熵将被添加到熵池中,该池使用伪随机函数进行混合,然后使用另一个伪随机函数提取出的随机数。有标准化的结构。

但是作为D.W.评论说,仍然缺少一些分析(例如,我们实际上从差异中得到多少熵?),以及围绕这一点的加密论证。因此,我不建议将其用于任何生产用途。

评论


$ \ begingroup $
更好的是,将网络摄像头与操作系统的熵池连接起来,这样,您除了将其输入某些功能之外,甚至不需要执行任何工作。
$ \ endgroup $
–托马斯
2012年12月2日,0:42

$ \ begingroup $
在将其推荐给密码学用户之前,我希望看到比“听起来不错”的想法更为详尽的分析。换句话说:我认为这对最终用户不是很好的建议。我认为它没有为用户提供服务,不能鼓励他们像这样滚动自己的熵源。我认为,向用户提供此类建议可能会导致种子不良的冷冻机发生率增加。相反,我认为最好还是建议他们使用系统提供的标准的,经过严格审查的加密PRNG。
$ \ endgroup $
– D.W.
2012年12月3日,下午3:49

$ \ begingroup $
与该技术相关的风险之一是,使用网络摄像头驱动程序的内置合法功能,攻击者可以访问网络摄像头的输出,更不用说其后门了。同样,网络摄像头驱动程序崩溃时,很可能会退化为没有可用的熵。
$ \ endgroup $
–fgrieu♦
2012年12月3日在21:17

$ \ begingroup $
@PaulUszak对JPEG说了什么吗?网络摄像头可以为您提供纯净的未压缩图像数据,您可以减去这些数据。 (该网页似乎不再可用。)我也看不到将整个JPEG文件作为一个熵源如何使事情变得更好。
$ \ endgroup $
–PaŭloEbermann
15年8月30日在9:25

$ \ begingroup $
您必须忘记JPEG是图像,并且威胁它只是您随后要处理的唯一位文件。解码JPEG后,就会创建伪熵作为JPEG算法的产物。每个噪声像素被人为地转换为相邻像素的云。适合图像。不利于随机数。
$ \ endgroup $
–Paul Uszak
2015年9月3日,0:04

#2 楼

摄像机可以获取熵,但是只能以相当低的速率获得熵,并且只有在允许看到“不寻常”的场景时……例如像做鬼脸,异常动作等的人。当然,这只能在没有视频错误的房间中使用。

理论解释…

根据您的知识范围,以下来源可能能够解释如何将网络摄像头用于随机数生成:


专利US 5732138 A —“一种为伪随机数生成器注入混沌系统数字化密码散列的方法。”
发明人:罗伯特·G·门德(Robert G. Mende),兰登·库特·诺尔(Landon Curt Noll),桑耶夫Sisodiya
原始受让人:Silicon Graphics,Inc.,申请日期:1996-01-29,出版日期:1998-03-24
从音频和视频源生成的随机数
2013,I -台湾医疗行政管理与医学信息学系-Chen Chen
从摄像头白噪声产生的随机数
蔡杰敏,I-Te Chen,曾建南
2009第五届国际会议智能信息隐藏和多媒体信号处理
ISBN:978-0-7695-3762-7

更实用……

如果以上对您来说太理论化而你为了更详细地说明如何完成操作,inventgeek.com上有一篇很酷的“操作方法”文章,展示了如何在一小时内从头开始使用网络摄像头和常规烟雾创建“α辐射可视化仪”,报警设备作为辐射源。


编辑

有时,我偶然发现一股虚假信息浪潮在互联网上晃动(在这种情况下,我并不是在谈论Crypto.SE,到目前为止,它似乎已经摆脱了这一浪潮)。在大多数情况下,我都会闭上嘴,但这是在那些罕见的场合中,我感到渴望在业余聊天和实际密码安全之间划清界线。毕竟,当创建自己的“随机性”东西时,您不想介入最明显的陷阱……对吗?

始终牢记,让您的“随机性”变得不安全,就像将钥匙卡在您的前门一样不安全。必须告诉人们告诉全世界可以依靠通过其网络摄像头软件提供的JPEG的观点不同,该网络摄像头软件会自动存储在磁盘上,然后再提取以从这些图像中提取“随机性”。让我们弄清楚一些事情:这样做的时候,您正在积极地从加密以及从信息安全的角度来忽略一些问题。提供一些思考的食物...



信任

您所依赖的第三方网络摄像头软件的可信度如何?

想想一秒钟,在假设您完全信任您的网络摄像头软件是因为(例如)您自己编写代码之后,我们将跳过这个颇有争议的问题。

为进一步限制编辑范围,我也不再赘述将这些图像存储到HD,USB记忆棒或任何可能使用的存储介质中而引起的潜在问题。除了可以迅速进入InfoSec领域的事实之外,只有您才能知道我们是否可以或应该假设您的磁盘和系统始终不受任何第三方访问的影响,因为(例如)您是已知的最佳系统管理员对人类来说永远都不会睡觉。


JPEG甚至还不能接近原始信号数据!

不要仅仅跳到下一个可用的图像格式,除非您知道特定图像格式(读为:文件格式)实际包含的内容,该格式如何影响实现的安全性以及单独选择的潜在含义图像/文件格式可以得到保护。

如果您不直接插入网络摄像头硬件,至少要足够聪明,可以使用尽可能多的原始信号数据……这是一回事。当然:使用JPEG不是最明智的选择。请记住,JPEG(与大多数图像格式一样)引入了可重复且可预测的数据块(图像标题),并且丢失了一些所需的熵(由于有损数据压缩等原因),而所有后处理都需要时间。为了解决相关问题,您必须对已经由软件处理的“随机数据”进行后处理,从而创建了JPEG(与示例一起使用)。到目前为止,您自己的逻辑应该已经让您大吃一惊了,使用直接从网络摄像头硬件中提取的原始图像数据是更聪明,更安全和更快的选择。

我个人建议您要么使用原始信号数据(可通过硬件修改获得),或直接从网络摄像头获取原始图像数据(使用适当的软件和/或驱动程序)。


“网络摄像头仅提供JPEG”和“网络摄像机不提供原始图像数据”是直言不讳的谎言!

迟早,您会发现有些人试图告诉您无法从网络摄像头和网络摄像头中获取原始图像数据仅提供JPEG输出。尽管我有点钦佩人们将这样的轻便小动物推向数字空白的勇气,但老实说,我不禁感到有必要明确声明它们绝对是错误的。

那些人忘记(或主动忽略)的事实是,它不是网络摄像头本身,而是网络摄像头软件,它从软件从网络摄像头获取的原始图像日期生成那些JPEG图像。除了与单个硬件相关的潜在许可限制外,没有理由您无法执行网络摄像头程序使用的相同原始图像数据-如果不应用JPEG压缩或其他图像处理。

对于为方便起见,这里有一些软件项目的提示,它们可以从网络摄像头中获取原始图像数据,以防万一您想证明此类声明有误:



fswebcam (quote:RAW - Reads images straight from a device or file.

AviRaw-读取原始网络摄像头AVI(尤其是用来看星星)
Creative WebCam Go的图像采集器

请您有动力进行自己的研究。搜索引擎往往会吐出大量类似的软件解决方案和源代码,这些实际上可以使您从各种网络摄像头和相关系统中获取原始图像数据。

从现在开始,请确信有人声称可以要么不被告知,要么就将自己的无知掩盖在容易发现的谎言后面。不要在这样的人身上浪费时间-只是转身,深呼吸,然后尝试找到一个更聪明的人来交谈。


总是“ Combine&Hash”

不需要坐在黑窗货车上的3个字母的代理商来破坏您的“随机性”。实际上,即使您的邻居使用的那台旧微波炉也可能放置不当,从而影响您希望从硬件中获得的噪声。屏蔽不良的扬声器也容易造成不良后果。而且,第三方WiFi活动以及屋外的移动电话也有很好的机会改变您的嘈杂模式。屏蔽网络摄像头以及其余硬件可能是一种选择,但是要简短一些:应该始终假设原始信号数据可以并且会被主动和/或被动地弄乱……而且您几乎不可能

因此,我衷心建议通常通过加密方式将捕获的(原始)信号数据(最好与其他来源的其他随机数据结合)推送安全哈希。当然,加密安全的哈希需要花时间来计算……但是将时间花在一个好的哈希上要比上面#2中所述的一些多余的图像格式处理(以及用于处理相关问题的后处理)要好得多。

根据您的个人设置和方案,HMAC可能更加适用,因为它可以在某些常规的(加密安全)散列可能无法解决的极端“失败随机性”情况下为您提供保护保护您。

或者,您可能会像几年前我创建一个与业余项目相关的东西时那样疯狂。我最终以CTR模式向AES提供了一些随机性源,同时从其他随机性源的散列组合中提取了随机IV和密钥…想想:用IV和从其他组合随机源的哈希产生的密码来加密组合随机源,其中所有随机来源绝对彼此独立。你们中的大多数人肯定会同意,此设置更像是“加密技术的杀手…”……但是,它能够“盲目地信任网络摄像头和公司”。提供”。为了我的辩护:从那时起,我还很年轻,很上进。从那时起,我就学会了用更少的开销创建更智能的东西。 ;)

加密技术只有在实现时才聪明。不会在任何潜在的情况下都让您伤脑筋,但是当您通过将原始网络摄像头数据与其他独立的随机性源相结合来观察自己的脚步时,对批次进行哈希处理可能会增加自制“随机性”的(加密)生存的可能性。

尽管如此,诸如“静止图像”之类的东西仍具有提供不足够熵的潜力。这是为什么您通常不应该假设“任何图片都可以”并且在可能的情况下将从网络摄像头中提取的随机性与其他​​随机性提供程序(基于硬件或软件)进行混合的主要原因之一。如果您不知道要使用其他随机性来源,那么这里有个提示:在撰写本文时,所有主要操作系统都提供了自己的方式,可以通过软件提取加密安全的数据。如果您想了解有关RTFM的消息,请注意。

/ * Nota Bene:由于第4点可能会激发一些很酷的Crypt.SE问题,因此我将其保持不变。 * /


无需重新发明车轮就可以制造新车。

确保不要仅仅因为您摆弄自己的硬件而陷入“我将创建自己的……”的口号。加密领域中有数十种经过严格审查的解决方案,它们可能能够满足您的个人设置,实现和/或需求-这实际上意味着您可能不需要“创建自己的”。如有疑问,请点击该“询问”链接,并在简短而即时的描述中给出您要达到的目标的问题。 Crypto.SE周围有很多专家可以回答您可能遇到的任何与加密有关的问题。寻求帮助和信息总比以后再后悔好。



#3 楼

是的,一点没错。我相信网络摄像头是出色的真正随机数生成器,但是。摄像机必须在视觉管理的环境中操作。为了质量控制目的,确定和控制所得图像的熵是必要的。诀窍不是依靠相机看到的场景,而是依靠图像噪点。只有上帝本人才能预测这种噪音,因此才是真正的熵。考虑到这一点-世界上生成的所有弱光网络摄像头图像都是唯一的。

如上所述,它们可能很慢。网络摄像头没有光束散射。我估计您将从VGA摄像机获得0.5Mb / s的真实随机性。仍然比/ dev / random快几个数量级。不过,这可能是生成真实熵的最简单方法。随后的问题将是随机性提取。这意味着将图像噪声转换为统一的字节,范围从0-255。有些代码会告诉您将其推升为加密功能,该功能虽然有效但很无聊。还有其他方法。下图显示了正确的网络摄像头熵,并且具有放大且均等的视图。您不需要,也确实不应该在相机上拉有趣的脸:-





基于熵的生成器现在,此精确的网络摄像头原理已经在线上。根据非常保守的度量,三条通道线代表约11位的总熵。

评论


$ \ begingroup $
您能为您提到的0.5Mb / s提供任何理由吗?它不取决于帧率和压缩率(如果有)吗?
$ \ endgroup $
–otus
15年8月30日在12:31

$ \ begingroup $
好的,谢谢。不过,您最后添加的一段是沉重的猜测,因此我不同意这一点。据我们所知,正确使用AES是安全的。
$ \ endgroup $
–otus
2015年9月3日下午6:15

$ \ begingroup $
为什么OTP有优势?如果需要,您也可以轻松销毁AES密钥。 (转发秘密协议正是这样做的。)
$ \ endgroup $
–otus
2015年9月13日下午5:44

$ \ begingroup $
这个答案仍然很大程度上取决于猜测。诸如“只有上帝本人才能预测这种噪音,因此才是真正的熵”之类的句子。太不科学了,以至于它们都可笑。那里也存在虚假信息,例如/ dev / random无法提供500KB / s的速度。这完全取决于实现,并且通常不是正确的。诸如“增加密码功能”之类的句子试图通过取笑它们来消除已建立的方法,而赞成“没有其他方法或方案的其他方法”。
$ \ endgroup $
–马腾·博德威斯♦
18年11月23日在0:53

$ \ begingroup $
世界上所有微光网络摄像头图像都是独一无二的。所有车辆牌照也都是唯一的,但这并不意味着它们是不可预测的。
$ \ endgroup $
–森林
18年11月23日在1:49