HDR PRNG
当您从本书的网站下载电子表格并仔细查看公式时,您可能会注意到我们实际上并没有在Excel中使用rand()函数。不用担心,此时它与您如何使用电子表格无关。但我们将简要提及为什么我们使用不同的方法。
Hubbard在2019年冬季模拟会议上提出了该算法。这是一个简单的开源方程,已被概率管理组织采用作为标准PRNG,该组织的成立是为了促进和创建蒙特卡洛模拟标准。我们将其称为HDR PRNG,它具有许多优点。
首先,它是一个基于多维“计数器”的PRNG。随机数是根据一组唯一的整数输入生成的。每个风险、变量和试验都有一个唯一的标识符,这些整数的特定组合将始终产生相同的数字。Excel的rand()无法做到这一点。一旦重新计算rand(),所有先前的随机值都会被替换,并且无法“倒带”到先前的值。
HDR PRNG的设计使得语言之间的舍入和精度差异不会改变结果。如果给定相同的试验标识符、变量等,该公式的Python或R版本将始终生成彼此相同的答案。
最后,它在统计测试中表现良好。“Dieharder”是一组114项随机性统计测试。这些测试甚至可以检测非常微妙的非随机模式。在Dieharder测试中,HDR PRNG的性能优于Excel的rand(),并且达到或击败了Python、R甚至可以从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种网络安全损失场景
如果您想了解有关数据表的更多信息,Excel的帮助页面可以引导您了解基础知识,但我们确实在示例电子表格中进行了一项修改。通常,您需要输入“列输入单元格”或“行输入单元格”(我们在示例中仅使用“列输入单元格”)来确定数据表将重复更改哪个值以产生不同的结果。在这种情况下,我们实际上不需要识别要更改的输入,因为我们已经有了rand()函数,每次重新计算时该函数都会更改。因此,我们的“输入”值只是从1到我们想要运行的场景数量的任意数字。
模拟网络安全事件时,试验次数是一个重要的考虑因素。我们经常关注罕见但影响深远的事件。如果每年某个事件的可能性仅为1%,那么大多数情况下10,000次试验将产生大约100个此类事件,但这会略有不同。在这个试验次数中,它可以从精确值100开始随机变化(就像抛硬币100次不一定会产生恰好50个正面一样)。在这种情况下,大约90%的时间结果将在84到116之间。
现在,每次事件发生时,我们都必须产生损失。如果该损失有长尾,则每次运行蒙特卡罗模拟时可能会出现显着的变化。我们所说的“长尾”是指损失远大于平均损失并非不可行。例如,我们可以有一个损失分布,其中最有可能的结果是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
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论