如何估计此输入的熵内容?

时间:2012-03-12 23:30:10

标签: encryption random pic entropy analog-digital-converter

我有一个1KHZ三角波发生器,我使用模拟输入从PIC微控制器测量。三角波和模拟捕获的频率源是独立的频率源。 ADC以100ksps的速度捕获12个[编辑:10]可用的精度位。

我想估计模拟样本中包含的熵,以便生成真正的随机数。我已经确定的两个熵源是开尔文噪声和频率源偏移。

从捕获的波形中,我可以连续区分每秒两个频率,我将平均每秒捕获一个开尔文输入阈值镦粗事件。所以我的估计是每秒两位熵。

有人能想出一种方法来证明更大的熵估计值吗?

根据已在S.O.发布的类似问题的答案,我将添加以下说明:

我对熵源的其他想法并不特别感兴趣,因为我仍然必须回答这些替代来源的相同问题。

对自相关的数据本身或其他随机性度量的分析不是正确的答案,因为它们会非常乐观。

3 个答案:

答案 0 :(得分:1)

我取得了一些进步,可能对其他人有所帮助。

主要资源 http://en.wikipedia.org/wiki/Johnson%E2%80%93Nyquist_noise

引脚电容会将可测量的热噪声量限制在ADC带宽内的20uV。对于各种各样的控制器,这应该或多或少相同。在信号和引脚之间使用~10K电阻。较小的值会降低噪声,但会增加可能的采样率。

信号不需要是随机的。它只需要在至少几个离散输入步骤的范围内均匀分布。请注意,在与输入相同的时钟域上输出到GPIO可能不符合此要求。

采用动态范围为3.3V的10b ADC,每个离散步长为3mV。每个样本的熵约为20uV / 3mV =每个样本0.006位。

另请注意,这不需要模拟输入。您可以使用数字输入来实现,但是bin大小会大得多(1V?),答案将更像每个样本0.000018位。因此,每隔一毫秒获取一个输入样本,生成64位随机种子大约需要一个小时。

答案 1 :(得分:0)

NIST出版物SP800-90B推荐使用 min-entropy 作为熵测量。然而,测试熵源的最小熵是非平凡的。有关这种测试的一种方法,请参见NIST SP800-90B。

答案 2 :(得分:-1)

如果我们谈论的是“物理学”熵,那么你的问题就不是主题了。但我们可以轻松地对您的模拟信号进行采样,将其转换为数字波形,然后在信息理论背景下讨论干扰。

用于测量数字信号中的熵的简单且令人惊讶的准确方法是尝试使用可用的最佳方法对其进行压缩。压缩率越高,信息内容越小。

如果您的目标是生成随机位以生成种子(如其他答案中提到的那样),一种有用的方法是压缩从环境中采样的随机性(键盘敲击,鼠标移动,模拟系统)一种常见的压缩算法,然后丢弃字典。剩下的将是重要的信息内容。