第18章 打造自己的“量子随机数发生器” (1/3)
打造自己的“量子随机数发生器”
#### 第十九章:打造自己的“量子随机数发生器”
上科大的冬天,湿冷入骨,但江知夏的宿舍里却热得像夏天。
自从那天在图书馆被陈默“点醒”后,江知夏就像变了一个人。他不再执着于那些虚无缥缈的理论推导,而是把所有的精力都投入到了那个让他魂牵梦绕的想法上——做一个属于自己的量子随机数发生器(RNG)。
这个念头并非一时兴起。在布达佩斯比赛时,他曾听一位教授提起过:“真正的随机,是上帝的骰子。谁能掌握它,谁就掌握了信息安全的终极钥匙。”
当时江知夏只是觉得酷,但现在,他想亲手把这把“钥匙”造出来。
“知夏,你确定要搞这个?”
周末的实验室里,陈默看着江知夏列出的采购清单,眉头皱成了川字,“这可是个无底洞。单光子探测器、FPGA开发板、高速示波器……这一套下来,少说也要几万块。而且,这通常是研究生团队才玩的东西。”
“我知道。”江知夏正在调试示波器,眼神专注,“但我查过了,有一种基于真空涨落的方案,不需要那么昂贵的单光子源,只需要一个普通的激光器和平衡零拍探测器。成本可以控制在几千块以内。”
“几千块?”陈默瞪大了眼睛,“你是想造个玩具吗?”
“不,我要造个能用的。”江知夏转过头,目光灼灼,“我要用它来生成真正的密钥,给我的文档加密。”
陈默看着他,沉默了几秒,然后笑了:“行吧,疯子。算我一个。我负责电路焊接,你负责算法。”
接下来的一个月,江知夏和陈默几乎住在了实验室。
他们从淘宝上淘来各种电子元器件,像两个拼装乐高积木的孩子,在面包板上搭建着复杂的光路。
然而,现实比想象要残酷得多。
第一次测试,激光器一开,示波器上的波形就乱成了一团麻。
“噪声太大了!”江知夏抓着头发,看着屏幕上那条几乎被噪声淹没的信号线,“这根本不是量子噪声,这是电路的热噪声和环境干扰!”
“我检查过电路了,接地没问题。”陈默也急得满头大汗,“是不是光路没对准?”
两人趴在实验台上,拿着微米级的调节架,一点点地调试光路。眼睛盯着激光束,不一会儿就被刺得流泪。
“不行,还是不行。”江知夏颓然地坐在地上,“理论上是完美的,为什么做出来就是垃圾?”
这时,实验室的门被推开了。
是那位年轻的海归教授,李教授。他手里拿着两杯咖啡,显然是路过看到灯光进来的。
“遇到瓶颈了?”李教授把咖啡递给他们,看了一眼示波器,“典型的信噪比过低。你们在试图从大象的脚印里找蚂蚁。”
“李老师,我们是不是方向错了?”江知夏沮丧地问。
“方向没错,但方法太笨。”李教授指了指屏幕,“你们在用模拟电路直接放大信号,这当然会被热噪声淹没。为什么不试试数字域处理?”
“数字域?”江知夏眼睛一亮。
“对。把模拟信号数字化,然后用算法提取随机性。”李教授笑了笑,“我记得你以前在省选的时候,用过什么……蒙特卡洛?或者差分法?为什么不试试用哈希函数来处理这些看似杂乱的数据?”
一语惊醒梦中人!
江知夏猛地站起来:“冯诺依曼提取器!或者用SHA-256算法对原始数据进行哈希运算,把偏置的随机源变成均匀的随机数!”
“没错。”李教授点点头,“物理层解决不了的问题,用信息层来解决。这就是交叉学科的魅力。”
李教授走后,实验室里再次燃起了战火。
江知夏坐在电脑前,疯狂地敲击键盘。他不再纠结于电路的完美,而是把重点放在了后处理算法上。
他写了一个Python脚本,实时采集示波器的数据,然后进行二值化、异或运算和哈希处理。
“陈默,把激光器的功率调大一点!”
“好嘞!”