出品:科普中国
制作:陈星
监制:中国科学院计算机网络信息中心
想必大家对随机数都不陌生。掷骰子时,骰子出现的1-6就算是一种随机数;抛硬币时,硬币产生的正反面也是一种随机数。而在计算机中,随机数算法产生的一串数字也可以认为是随机数。
骰子(图片来源:https://www.iconspng.com/image)
随机数可以分为两类:伪随机数和真随机数。所谓的伪随机数就指看似随机实质上并非随机的随机数。平时我们在计算机程序上使用的随机数都是伪随机数,它们是用特定的算法生成的,本质上可以预测,因此是伪随机数。
伪随机数的算法一般来说都是具有周期性的,但是这种周期是非常巨大的,一般是不会被注意到的。但是通过超级计算机的演算,找出伪随机数的规律性并不是什么困难的事。
因此,伪随机数虽然完全能够满足日常生活需要,但对于银行、军事等方面的应用就不是很安全。另外,如果产生伪随机数的算法事先就已经被敌方获取,那么信息的加密更是无从谈起了。
真随机数指的是随机数的样本不可重复,无法预测,具有真正的随机性。因为经典的宏观世界本质上是可以预测的,真随机数的产生只能通过量子物理来实现,例如核裂变,单光子随机数等等。
量子物理之所以能产生真正的随机数,是因为它利用了量子态的叠加性,当测量的时候,量子态会随机坍缩到一个确定的态。这种坍缩是一类真正的随机,任何理论都无法预测,因此由量子物理产生的随机数是真随机数。目前,科学家已经证明了通过叠加的量子态产生的随机数是绝对不会被重复的。
利用分光镜产生随机数(图片来源:https://www.qdab.org/uploads/4/1/8/0/41800633/qrng_thesis.pdf)
真随机数是量子保密通讯的基础。不管是我们的量子通讯线路"京沪干线",还是量子科学实验卫星"墨子号",不同中继站之间的保密通讯的基本上都是通过交换随机数完成的,因此随机数的安全是整个量子网络安全的基础。
量子网络示意图(图片来源:https://www.museum.uestc.edu.cn)
那么随机数对于量子通讯来说为什么很重要呢?这其实还要从量子密钥分配说起。量子保密通讯最重要的一步就是进行量子密钥分配,常见的量子密钥分配算法有BB84,B92等,它们本质上都是为了实现随机数的分配。我们的"京沪干线"主要采用BB84协议进行量子密钥分配,下面我们简单讲一下BB84协议。
BB84示意图(图片来源:https://www.upchina.com/article/26652.html)
BB84需要两条信道,一条量子信道,一条经典信道。也就是说,使用BB84时,必须保留对经典信道的使用,否则无法完成密钥协商。在这个过程中,密钥分配的双方分别叫做Alice和Bob。
首先,Alice产生两串随机数a 和a', 然后根据aa'来决定通过量子信道给Bob发送什么样的量子态,aa'可能的结果有四种00,01,10,11,根据这四种结果,Alice相应会发送量子态|0>,|+>,|1>,|->;
紧接着,Bob产生一串随机数b',然后根据b'来选择不同的测量基来测量Alice发送过来的量子态,b'是0时选择Z测量基,b'是1时选择X测量基,最后得到结果b;
随后,Alice和Bob通过经典信道告知对方a'和b',通过比对a'和b',Alice和Bob就可以在a和b中选出安全的随机密钥。具体过程如下表:
Alice和Bob通过比较a'和b'就可以从a、b中获得密钥,上述例子中获得的密钥是0111。
可以看出,在整个密钥分配的过程中,无论是产生量子态还是测量量子态,都要用到随机数,一旦这个随机数被敌方破解,整个密钥分配就无法安全的进行。例如,Alice和Bob在最后获得密钥时,要通过经典信道对a'和 b'这两串随机数进行比对,但是理论上经典信道并不安全,如果敌方截获了经典信道的a'和b',而它们又恰好不是真随机数,那么产生它们的伪随机数算法则很有可能被破译。一旦知道a'和b',窃听者猜对Alice发射的量子态的概率就会增加,Alice和Bob最后分享的密钥的安全性也会降低。
做密码学研究的人都知道,轻微的概率改变都会大大地增加第三方获取信息的准确率,会使整个密钥分配体系的安全性就会受到严重威胁。对于Alice产生的随机数串a,虽然它是在本地存储的,但如果它是伪随机数,理论上也是不安全的。
因此,量子密钥分配之所以具有绝对的安全性(只要量子物理是正确的,量子密钥分配就是安全的),一个基本的前提就是在进行密钥分配时所使用的随机数是通过量子物理等方式产生的真随机数,而不是伪随机数。
(本文中标明来源的图片均已获得授权)