目前是否有关于随机抽取器实现的研究?


20

是否进行过实施随机性提取器构造的研究?

提取器证明似乎利用了Big-Oh,留下了大的隐藏常量的可能性,从而使程序实现可能不切实际。

一些背景:我对使用随机性提取器作为蒙特卡罗模拟中使用的(可证明的)随机数的快速来源感兴趣。我们(ETHZ计算物理小组)从量子随机数生成器中偏向了高熵源,我们希望从中提取随机性。先前的一名学生尝试实施Trevisan构造并遇到了空间复杂性问题。除了那个学生以外,我还没有找到任何尝试实现提取器的人的参考。

注意:我是CS本科生,他是理论CS和随机性提取器领域的新手。


您可能还会发现ARNAB的回答我的问题有趣:cstheory.stackexchange.com/questions/36/...
苏雷什Venkat

Answers:


19

提取器的许多文献都关于最小化种子长度,这对于非随机化应用很重要。但是,这对您来说可能并不重要。同样,文献通常集中在相对较大的误差(例如1/100)上,这对于去随机化是很好的,但在其他情况下可能会成问题,需要指数级地减小误差。

在您的设置中,可以一劳永逸地生成一个长随机种子(例如扔硬币),然后使用它进行提取。在这种情况下,您可以使用具有相当高效的实现的成对独立哈希函数。我与Shaltiel和Tromer撰写了有关此问题的论文。您也许还可以使用几乎独立的哈希函数,这些函数可以更高效且种子更小。(尽管对此有好几项工作,但暂且不知道如何有效地实现它们是很好的参考。)

如果您有多个独立的资源,那么您可以做得更好。如果熵率大于50%(在上面的调查中应提及),则经典的Hadamard提取器将起作用。如果熵小于50%,则我们可以使用Impagliazzo和Wigderson进行一个简单的构造。尽管要真正理解它,您需要查看当今最先进的和积定理给出的确切范围,但是源数量与所实现的误差之间的依存关系并不是很理想。(并且,如果您愿意假设某些数字理论猜想,则可以得到更有效的提取器。)此结构已通过各种方式得到了极大的改进,其中有些可能与您的应用程序相关。Anup Rao的论文


感谢您的书面答复/概述。我浏览了您与Shaltiel和Tromer撰写的TRNG论文。看起来很有希望。我想知道论文的网页(和实现代码)是否可以在任何地方使用,因为论文中引用的链接(people.csail.mit.edu/tromer/trng)不包含任何信息。
菲利普·梅茨

6

首先,请参阅Wikipedia上的相关主题。其次,您可以看一下以下论文:

罗恩·沙尔蒂尔(Ronen Shaltiel)在提取器显式结构方面的最新进展

本文以调查的形式撰写,可以帮助您找到“最新动态”。

最后,如果只需要一个“看起来”随机的位序列(但不一定是密码安全的),则可以将哈希函数(例如MD5或SHA-1)应用于您的高熵源,并获得一个几乎没有时间获得出色的结果(用于物理实验)。


1
感谢您的哈希建议和链接。在链接中,我没有看到有人试图实现提取器。我对此是否尝试感到很好奇。我读过的大多数抽取器论文都提到了抽取器的实际应用,但没有引用任何尝试的实现。有人告诉我,我们避免使用散列函数的原因是它们不是可证明的随机性,这在MC模拟领域中非常有用,因为伪RNG有时会显示出不准确的结果[ref:prl。 aps.org/abstract/PRL/v69/i23/p3382_1 ]
菲利普·梅茨

4

Dodis,Gennaro 等人也发表了一篇不错的论文考虑了可用于提取的实用密码原语。他们表明,哈希函数不是很好的提取器,但是CBC-MAC模式下的分组密码可以(带有一些精细的打印)。他们还考虑了HMAC的构造。该方法吸引人,因为您可以使用标准的加密库。

对于CBC-MAC,“细则”大致如下:

  • 假设分组密码是伪随机排列
  • 必须使用可重复使用的真正随机(但不一定是秘密)密钥进行加密
  • 如果输出为m位,则输入必须至少具有2m位的最小熵
  • 块长度和密钥长度必须相同(因此,如果您使用的是AES,则意味着仅AES-128有效)
  • 输入长度有界,但界高

3

对于加密的伪随机数生成器,还可以查看HKDF。在本文中,他们在概念上和实践上讨论了随机性提取器,并提供了很好的参考。

作为为蒙特卡洛生成随机性的附带说明,当然还有HAVEGE。如果它的位速度和“可证明性”足够,那么您可以避免不得不浪费量子发生器。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.