描述
切尔诺贝利骰子是一种量子随机数发生器 [0],它使用来自弱放射性样本的核衰变作为熵源。你可以在这里查看GitHub仓库和所有构建所需的文件:
https://github.com/nategri/chernobyl_dice
它由四个主要部分组成:
使用以下算法将盖革计数器事件(“点击”)转换为随机位:
1. 在环形缓冲区中,对于每个毫秒记录,要么是 0 要么是 1,具体取决于盖革事件是否发生
2. 使用 von Neumann 的方法 [0] 对这个 0 支配的流进行初始去偏
3. 通过将上一步中生成的位与自设备开机以来经过的 4 微秒间隔的 mod2 进行异或运算,进一步消除偏置
在每次盖革事件中,铀玻璃样品都会被一系列紫外线 LED 照亮,从而发出明亮的绿色荧光。这与样品的放射性无关,但它看起来确实很酷。
手术
该设备具有三种操作模式,可通过旋转开关进行选择:
时钟模式
显示当前时间,盖革板未通电。可以通过打开和关闭拨动开关来设置时间(“16”拨动增加小时,“8”拨动增加 10 分钟,“4”拨动增加 1 分钟,“1”拨动重置秒).
串流模式
重复生成由切换指定大小的随机数(如果未设置切换,则为 0-255 的随机字节)。在此模式下生成的数字通过 USB 通过串行传输。此模式还有一个“turbo”设置以方便统计测试,可以通过按住按钮启用。当启用“turbo”时,显示屏上的 LED 会指示位生成,并且 Geiger“咔嗒”声将无声。
骰子模式
在骰子模式下,随机数生成是通过按钮启动的,要生成的随机数的大小由切换开关的总和设置(未设置开关,设备将生成 0-255 范围内的随机字节)。按一次生成号码,再按一次清除显示。要生成的号码的大小以闪烁的数字显示。
需要进一步测试以确认结果的一致性,但目前切尔诺贝利骰子能够生成 1.5+ 兆位的文件,该文件通过了 NIST 统计测试套件 [1] 的 Python 实现。这意味着切尔诺贝利骰子可能是一个非常公平的骰子。
SUMMARY
-------
monobit_test 0.279698915238 PASS
frequency_within_block_test 0.404035783453 PASS
runs_test 0.0688862287393 PASS
longest_run_ones_in_a_block_test 0.959135200804 PASS
binary_matrix_rank_test 0.532456847429 PASS
dft_test 0.000155432528185 FAIL
non_overlapping_template_matching_test 0.999998184707 PASS
overlapping_template_matching_test 0.55898054206 PASS
maurers_universal_test 0.224223569722 PASS
linear_complexity_test 0.672504584189 PASS
serial_test 0.424389760139 PASS
approximate_entropy_test 0.425255814114 PASS
cumulative_sums_test 0.348500456103 PASS
random_excursion_test 0.0753308212732 PASS
random_excursion_variant_test 0.207160448911 PASS
SUMMARY
-------
monobit_test 0.105735760191 PASS
frequency_within_block_test 0.436487225319 PASS
runs_test 0.648059641506 PASS
longest_run_ones_in_a_block_test 0.184787158208 PASS
binary_matrix_rank_test 0.310400523277 PASS
dft_test 0.156504142574 PASS
non_overlapping_template_matching_test 1.00000015958 PASS
overlapping_template_matching_test 0.629208901365 PASS
maurers_universal_test 0.938296605093 PASS
linear_complexity_test 0.0880093291441 PASS
serial_test 0.131826155057 PASS
approximate_entropy_test 0.137234909215 PASS
cumulative_sums_test 0.112328349057 PASS
random_excursion_test 0.17207234069 PASS
random_excursion_variant_test 0.299605480729 PASS
设备生成的两个212667字节随机二进制序列(“rand.binary.1”和“rand.binary.2”)的统计测试套件结果。专家注意:第一个序列的最后两个测试生成消息:“J 太小(J=181 < 500),结果不可靠”,因此对于该数据集,这些测试可能会被忽略。
该目录statistical_testing
包含一些用于从设备评估和收集数据的实用程序,包括示例随机二进制数据文件rand.binary.1
和rand.binary.2
.
可以通过以下 URL 查看和下载该设备的 Fusion 360 CAD 绘图:
感谢以下 GrabCAD 用户提供的模型:
警告:这些说明和资源未经完善,并且未经测试。这是一个面向高级制造商的项目,您应该充分期待在构建自己的切尔诺贝利骰子时进行一些冒险!也就是说:如果您遇到麻烦,请给我发消息,我会尽力帮助您并改进说明。
以下是组装所需步骤的粗略概述:
1. 从 GitHub 存储库中的文件打印或制作以下自定义部件
2. 订购其他组件(参见零件列表中的 URL)
3. 将黄铜支架嵌入外壳(这就是前后面板和定制 PCB 的安装方式)
提示
4. 使用构建照片作为指南组装定制 PCB 和“exixe”数码管驱动板
提示
5. 将丙烯酸背板和面板安装 USB 电缆连接到外壳后部
6. 在外壳内安装定制 PCB 并进行布线(参见布线示意图和构建照片)
7. 部分拆卸旋转开关以将其连接到“锁板”(lock_plate.stl)
8. 对不锈钢前面板进行任何必要的整理
提示
9. 在前面板上安装开关和 PCB 组件、带支架的 LED 组件、旋转开关和锁板组件以及按钮
小费
10. 进行控制面板的接线(见接线示意图和搭建照片)
11. 将八个数码显示驱动板安装到数码显示板的母头中
12. 将控制面板连接到逻辑板
13. 将前面板安装到外壳上,注意确保旋转开关锁板上的孔与放射性样品架前部的左上角对齐
支架尺寸指南
注意:对于较大的内部支架距离(例如数码显示器支架),可以堆叠两个支架以获得所需的距离。
如何连接切尔诺贝利骰子的内部接线。
插入支架的外壳
您可以忽略外壳左侧的白色面包板。这些有助于项目的早期迭代,并且不需要组装。
逻辑板安装
请注意,UV LED 阵列的电线在逻辑板下方。
数码管接线
数码显示板安装和逻辑板接线
盖革板安装
注意:您必须将 JMP2 跳线拉到 Geiger 板的中心附近(这会关闭板的内置扬声器——我们希望这些咔嗒声是可选的,而是由固件控制)。单击此处查看大图。
铀样品架下半部细节
UV LED 和压电扬声器使用氰基丙烯酸酯(强力胶)粘合剂粘合安装到位。当安装上半部分时,铀玻璃弹珠将被机械固定到位。单击此处查看大图。
铀样品架下半安装
中间支座用螺母固定在底部。单击此处查看大图。
铀样品架上半安装
单击此处查看大图。
控制面板电路板有线
单击此处查看大图。
控制面板电路板接线详图
非常感谢 Emily Velasco ( @MLE_Online ) 对不锈钢表面打磨的建议,以及对这个项目的热情。
[0] “量子随机数发生器。” M. Herrero-Collantes 和 JC Garcia-Escartin。https://arxiv.org/abs/1604.03304
[1] “用于加密应用程序的随机和伪随机数生成器的统计测试套件”。https://csrc.nist.gov/publications/detail/sp/800-22/rev-1a/final
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
全部0条评论
快来发表一下你的评论吧 !