快速风险审计:HDR PRNG

admin 2024年6月19日20:58:12评论14 views字数 2770阅读9分14秒阅读模式

HDR PRNG

将前面公式中的rand()函数视为生成01之间的随机(或伪随机)数的任何函数。Rand()恰好是Excel编写该函数的方式,但每种编程语言都有某种形式的伪随机数数字生成器(PRNG)。

当您从本书的网站下载电子表格并仔细查看公式时,您可能会注意到我们实际上并没有在Excel中使用rand()函数。不用担心,此时它与您如何使用电子表格无关。但我们将简要提及为什么我们使用不同的方法。

Hubbard2019年冬季模拟会议上提出了该算法这是一个简单的开源方程,已被概率管理组织采用作为标准PRNG,该组织的成立是为了促进和创建蒙特卡洛模拟标准。我们将其称为HDR PRNG,它具有许多优点。

首先,它是一个基于多维计数器PRNG。随机数是根据一组唯一的整数输入生成的。每个风险、变量和试验都有一个唯一的标识符,这些整数的特定组合将始终产生相同的数字。Excelrand()无法做到这一点。一旦重新计算rand(),所有先前的随机值都会被替换,并且无法倒带到先前的值。

HDR PRNG的设计使得语言之间的舍入和精度差异不会改变结果。如果给定相同的试验标识符、变量等,该公式的PythonR版本将始终生成彼此相同的答案。

最后,它在统计测试中表现良好。“Dieharder”是一组114项随机性统计测试。这些测试甚至可以检测非常微妙的非随机模式。在Dieharder测试中,HDR PRNG的性能优于Excelrand(),并且达到或击败了PythonR甚至可以从Amazon Web Services购买的加密密钥的随机集中的PRNG

增加风险

对于大量的事件和影响,我们可以制作一个像表3.2这样的表格来模拟所有事件的所有损失。表3.4表3.2相似,但右侧多了一个列,显示单个随机生成的结果。www.howtomeasureanything.com/cybersecurity提供了一个示例可供下载。

表3.4所示的该特定试验的利息价值是总损失:23,345,193美元。现在您所要做的就是再进行数千次试验,看看损失的分布情况。每次重新计算此表时,您都会看到总数中出现不同的值。(如果您是PC上的MS Office用户,重新计算应该是您的F9键。)如果您能够以某种方式记录数千次试验中的每个结果,那么您就可以获得蒙特卡洛模拟的输出。

Excel中执行此操作的最简单方法是使用假设分析工具中的数据表。您可以根据需要运行任意多次试验并显示每个单独的结果,而无需复制表3.4中的结果数千次。如果一次可以更改一个输入,数据表可让Excel用户看到公式中的一系列答案会是什么样子。例如,您可能有一个非常大的电子表格用于计算退休收入,其中包括当前储蓄率、市场增长和其他几个因素。如果您将每月节省金额从100美元修改为5,000美元,增量为100美元,您可能希望了解项目持续时间的估计值有何变化。数据表会自动显示所有结果,就好像您每次自己手动更改该输入并记录结果一样。您可以从www.howtomeasureanything.com/cybersecurity下载电子表格,该电子表格就使用了这种方法。

表3.4随机场景的一对一替换

攻击向量 损失类型 年损失概率 90%的影响置信区间 随机结果(事件未发生时为零)
下界 上限
勒索软件 数据泄露 0.05 100,000美元 10,000,000美元 $8,456,193
勒索软件 业务中断 0.01 20万美元 25,000,000美元 0
勒索软件 勒索 0.03 100,000美元 15,000,000美元 0
商业电子邮件泄露 欺诈罪 0.05 25万美元 30,000,000美元 0
云妥协 数据泄露 0.1 20万美元 2,000,000美元 0
ETC ETC ETC ETC ETC ETC
全部的: $23,345,193美元

表3.5Excel数据表显示10,000种网络安全损失场景

快速风险审计:HDR PRNG

如果您想了解有关数据表的更多信息,Excel的帮助页面可以引导您了解基础知识,但我们确实在示例电子表格中进行了一项修改。通常,您需要输入列输入单元格行输入单元格(我们在示例中仅使用列输入单元格)来确定数据表将重复更改哪个值以产生不同的结果。在这种情况下,我们实际上不需要识别要更改的输入,因为我们已经有了rand()函数,每次重新计算时该函数都会更改。因此,我们的输入值只是从1到我们想要运行的场景数量的任意数字。

模拟网络安全事件时,试验次数是一个重要的考虑因素。我们经常关注罕见但影响深远的事件。如果每年某个事件的可能性仅为1%,那么大多数情况下10,000次试验将产生大约100个此类事件,但这会略有不同。在这个试验次数中,它可以从精确值100开始随机变化(就像抛硬币100次不一定会产生恰好50个正面一样)。在这种情况下,大约90%的时间结果将在84116之间。

现在,每次事件发生时,我们都必须产生损失。如果该损失有长尾,则每次运行蒙特卡罗模拟时可能会出现显着的变化。我们所说的长尾是指损失远大于平均损失并非不可行。例如,我们可以有一个损失分布,其中最有可能的结果是100,000美元的损失,但出现重大损失(5000万美元或更多)的可能性为1%。首先,每年发生概率只有1%的风险的百分之一最坏情况是,发生概率为1/100×1/100,即万分之一。年。由于我们的试验次数为10,000次,因此我们可以运行一个模拟,其中最坏情况事件在10,000次试验中发生一次或多次,然后我们可以再运行10次,000次试验根本没有发生过。这意味着每次运行蒙特卡罗模拟时,您都会看到平均总损失略有跳跃。

对于不想太辛苦工作的蒙特卡罗建模者来说,解决这个问题的最简单方法就是进行更多试验。如果我们进行100,000次或100万次试验,这种模拟与模拟之间的差异就会缩小。您可能会惊讶地发现,在速度相当快的计算机上,在Excel中执行此操作所需的时间是如此之少。我们使用Excel在几秒钟内运行了100,000次试验,听起来不像是一个主要的限制。我们甚至在15分钟或更短的时间内运行了100万个模型场景(在普通的原生Excel中),并进行了多次大型计算。然而,随着事件变得越来越罕见和规模越来越大,除了大幅增加试验次数之外,还有更有效的方法可用。但现在我们将保持简单,只用廉价的计算能力来解决问题。

现在,我们有了一种使用本机Excel在蒙特卡罗模拟中生成数千个结果的方法,无需运行任何加载项或Visual Basic代码。鉴于Excel的使用如此广泛,几乎可以肯定任何网络安全分析师都拥有使用它的工具。然后,我们可以将这些数据用于风险分析的另一个重要元素——定量可视化风险。

 

原文始发于微信公众号(河南等级保护测评):快速风险审计:HDR PRNG

免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2024年6月19日20:58:12
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   快速风险审计:HDR PRNGhttps://cn-sec.com/archives/2863146.html
                  免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉.

发表评论

匿名网友 填写信息