我真的不知道如何更好地表达这个,如果这个标题令人困惑,对不起。
基本上,我想使用来自 AM 无线电音频信号的噪声来生成随机数。为了有效地做到这一点,我需要知道我可以从一些位的信号数据中期望多少位的熵。
如果每个样本都是独立的,我可以使用概率轻松计算熵。问题是样本取决于之前的样本和之后的样本。我不知道如何解释这一点。
如何计算一部分信号的熵(以位为单位)?
我真的不知道如何更好地表达这个,如果这个标题令人困惑,对不起。
基本上,我想使用来自 AM 无线电音频信号的噪声来生成随机数。为了有效地做到这一点,我需要知道我可以从一些位的信号数据中期望多少位的熵。
如果每个样本都是独立的,我可以使用概率轻松计算熵。问题是样本取决于之前的样本和之后的样本。我不知道如何解释这一点。
如何计算一部分信号的熵(以位为单位)?
我认为答案是没有正确答案。虽然这是一个简单的问题,但答案有点开放。
您在询问与随机数生成相关的相关数据的熵。这方面的关键参考是NIST 特别出版物 800-90B,用于随机比特生成的熵源的建议。查看第 5 节和第 6 节。您将面临两个问题;我的数据是否相关(非IID),如果是,它的熵率是多少?你已经意识到标准不合适。
您的数据是否相关?
这是第一步,NIST 建议进行置换测试,如下所示:-
NIST 推荐了 11 项测试,所有这些测试都有些复杂。为了帮助(不是)他们在 GitHub 上发布了一些代码来实现这些测试。我不确定这是多么正式,但请参阅广受欢迎的How to interpret the entropy results for a NIST test file as to their soundness。一个显而易见的实施问题是,图 4 中的相等性测试,第 2.2.2 节变得困难无界。简而言之,代码不能很好地用于现场使用。
什么是熵?
如果您设法让自己确信数据是非 IID,NIST 建议将另外 10 个复杂统计测试的最小值作为最小值。熵值。类似地,Python 和 C++ 代码在输出连贯且可信的熵估计时存在问题。也许您可以以另一种方式自己实施测试。
我做什么。
我也构建了随机数生成器,并使用了类似的排列测试,但只专注于压缩测试。压缩利用相关性并消除冗余。压缩也用于上述 NIST 非 IID 确认和熵估计测试。
可以计算出我所说的相关因子,,在压缩究竟对数据的相关性说了什么? 如果那么数据是 IID,如果是非 IID . 然后我使用非置换压缩文件大小并除以 2 以获得保守的熵率。这种方法似乎和其他方法一样好,而且比大多数方法更健壮。我估计 24V 齐纳二极管在 10kSa/s 时大约为 1.6 位/字节。那是 16kbps 的加密强度熵。
笔记。