作者:村头二旧 (加密二锅头)
波尔说过,如果有人在第一次听到量子理论的时候,没有感到恼火,说明他根本没有听明白。
这句话说明了和量子有关的一切都变得复杂、反常识、反直觉,也就是不好理解。
下面的电影图片只是增加一些课堂前的放松,下面的内容依然非常烧脑,请不要因为娱乐而失去了严肃性。希望我们团结紧张,希望气氛严肃活泼。
电影中总是出现窃听的情节,正派反派都在用,只是电影中的密码学比较简单,也就是高性能军用的窃听器而已,而反侦察一般是怀疑后,拿着探测器去找,这是非常弱鸡的做法,如何反窃听?最好的反窃听就是,一旦有人窃听,我立即知道有人窃听了。下面我们讲的就是这样一个方法,而且是目前人类最高端的玩儿法:量子通讯。
前面的文章讲了很多很多的加密,但是有一个问题没有解决,就是通信问题,钥匙复杂到让别人很难破解是一回儿事儿,比如恩尼格玛机加密;整体的安全性是另外一回事儿,比如这个加密的钥匙被别人知道了,这个人是接收者以外的人。
回顾密码学的基本原理
A(alice)想传输一个词给B(bob),于是她想到了之前文章学到的移位替换加密法,比如这个单词是btc,“字母加一”就是cud,没有什么含义或者说真实的含义不是原文的含义。
Btc这个词就是原文或者明文,而实际输出的文字就是密文。秘钥是什么呢?字母加一,对于收到信息的Bob就知道了这个秘钥,于是他对cud每个字母减一,就得到了原文BTC,这样的话就是解密了。
传输的东西叫做钥匙(秘钥),这个秘钥理论上是存在可以破解的可能的,即使是现在破解不了的钥匙,如果钥匙被人窃听了,也是会直接破解。
所以密码学有两块内容:秘钥和传递秘钥。这两个都安全,才是真正的安全。
如果有一种措施,只要别人窃听了你的秘钥,在窃听后,钥匙就变了,那这个传输就会非常安全。
量子通讯
这是一个非常复杂的问题,我们今天只是讲述下量子通讯中的量子秘钥分发机制,不涉及量子纠缠以及量子计算。这种机制最早的是BB84协议,是量子密码学中第一个密钥分发协议,由Bennett和Brassard在1984年提出,也是使用和实验最多的量子密钥分发方案之一(后面有改进版本,大致原理是接近的,同属一类)。
这种协议要实现有两个通道,经典通道和量子通道。经典通道是保证收发信息双发的信息交流的,比如email、电话等等都可以,在本文的语境下,经典通道被窃听也没太大关系;量子通道,顾名思义,就是传递量子态的。
下面的内容就是关于量子秘钥分发的两种解释方法,之所以写两种解释的模型,你一定可以通过其中一种解释或者结合两种模型,理解量子秘钥分发这个神奇的东西。
第一种解释的简化模型
测不准原理的简化阐述
比如,光子有圆形偏振状态和线性偏振状态,左旋、右旋、上下(竖直)、左右(水平)。
诡异的事情来了,测量的过程会影响对光子偏振状态的测定。
比如有个棚子里,我去观测一下,为了更加逼真地类比,正常人类是一下子看到这是一头白牛,这样,我们透过牛棚墙上的孔去看,一次只能看到一小片区域,比如先看到了是白色的,然后移动下视角,看到是个牛角。然后就是一头白色的牛。
无论我去先看颜色还是先看头上的角,得到的最后结论就是白色的牛。不会是黑色的羊、白色的羊、黑色的牛这三种情况。但是,量子的世界里,不是这么回事儿。你看到的可能是一头奶牛——这是开玩笑,你看到的可能是一头白羊、黑牛等等,因为两者之间的关系是随机的。
量子里面测量的结果是和测量过程有关系的。在没有观测之前是纠缠态。不清楚到底是什么状态,测量完了也不知道测量前是什么状态。
比如你测量的是一个光子,光子的状态简化一下是:圆偏振和线偏振。你先观测圆偏振,再测量线偏振,你得到的是一个左旋水平偏振光。如同上文观测的先看颜色后看物种,你得到的就是白牛。
但是,如果你先看线性偏振后观测圆形偏振的话,你得到的可能是各种状态,是随机的。类比宏观现象就是,你先看物种,后看颜色,不一定是白牛,得到的可能是黑牛、白羊、黑羊。
这个就比较诡异。而且测量完之后,光子的状态就变了,测量之前是纠缠态,类似薛定谔的猫咪,不知道死没死,测量完,变化了。类似棚子里一头白牛,你看完后变成了黑羊。
观测顺序影响观测结果。
好了,理论解释完毕,现在让Alice给Bob再发一次信息。只需要保证秘钥给Bob很安全,密文就可以公开发给Bob,
Alice发射一些光子给Bob,比如说是六个光子。她去测量一下如A图。
这个时候Bob也收到了光子,他也测量一下,按照自己的方法,如B图。
当然,你把上文中的类型改成黑白和牛羊的类比也是一样的。
然后Alice给Bob去个电话说一声,说你的1、5和6的测量方法是一样的。
那么,1、5和6的结果应该是一样的。别的策略方法不同就不要了。
不同的状态在计算机面前都可以简单的记录为1和0,比如规定左旋是1,右旋是0,竖直是1,水平是0. 这个时候上图的秘钥就是111. 这个光子数多一些,这样可以得到一组随机数,然后这个就是秘钥了。有可能出来是101010000010100010这样的数字串。
这个时候,出现了窃听者名C,叫Caocao吧,这个时候,他“窃听”了光子1,他也是测量圆偏振,发现是左旋,这时候,Bob收到光子1,他测量也是圆偏振,结果不变。Bob不会发现这件事儿。
但是呢caocao不知道a和b是怎么测量的,caocao去用线偏振去测量光子1,这时候得到的结果是水平,这时候Bob收到了光子,然后他测量的圆偏振状态就不一定是左旋了,因为根据上文说的,测量过程会影响测量结果,这时候他的结果就和Alice不一样了,然后就知道他有窃听者了。Caocao窃听的时候不可能每一次都猜对,这样的数字串达到一定的长度后,只要出现窃听者,A和B经过一些比对,就会知道自己的信息被窃听了,不用这个钥匙了,换一组密码。
第二种解释的简化模型:
BB84协议还有一种更通用的经典的解释。
四种不同偏振态的光子,0度,90度,45度,135(度线偏振光子和圆偏振光子的两个状态各自正交,但是线偏振光子和圆偏振光子之间的状态互不正交,所以有不同的角度,这一点和第一种解释的模型可以关联对应上),如上图所示。
1, Alice可以随机选择偏振片,+形或者x形偏振片随机生成偏振态;
2, 选定偏振方向的光子通过量子通道发给B;
3, Bob这时候也随机选用+形或者x形偏振片去测量光子的偏振方向;
4, B将测量结果保密,同时,将他使用的偏振片通过经典通道告诉Alice;
5, A对比和B使用的偏振片,然后经典通道告诉B那些和她一样,那些不一样;
6, B抛弃和A使用的不同的偏振片的结果,保留和A一样的偏振片的结果,统计学上显示应该是扔掉一半的结果。
随机排布偏振片,和A比对后,钥匙才形成,加密过程才开始。规定好什么状态对应0什么状态对应1就可以很简单的对应成由0和1组成的钥匙。
简单来说,就是量子秘钥的制备过程就是利用光子的偏振性。这很安全吗?是的,这个时候,C出现了他要窃听,拦截光子后,开始用偏振片测量,这时候他的错误率也是50%,测量完之后,发给B,B也不知道,然后通过窃听经典通道的信息去知道怎么去排出来正确的偏振片,但是也不对,因为他测量光子的时候光子已经变化了,俩人只要核对测量结果,就会发现B是解不了密的,那么这就说明这个通路已经被人窃听了。
当然,你要问C在窃听光子后,可以不测量,而是生成一个一模一样的光子,然后把原来的光子发给C,这样不就可以了吗?这样也不会让量子态变化?但是,也不可能,因为量子,还有另外一个特性就是不可克隆性,根本无法生成另外一个一模一样的光子。
说得更饶一些,其实,量子秘钥的传输和生成是同时发生的。
因为B接受到光子后,经典通道告诉A,他用的是怎样的测量方式(十字还是叉字的偏振片)的时候,A才会用和B一样顺序的偏振片去加密信息。B收到光子没有测量的时候,其实秘钥还没有产生呢。
以上都是量子秘钥分发的基本方式之一。量子加密是目前世界上最高端的加密方法,有应用但是还没有大规模应用。注意,上面所讲的只是量子加密中的秘钥分发原理,并不是钥匙本身的加密。最近量子计算、量子加密等等词汇变得常见,这个概念也走入了人们视野。
量子计算到底怎么样?是不是可以破解我们的比特币私钥,是不是我的加密资产已经不安全了?
先不要着急,着急也是交易所先着急,这么说吧,如果现在有人能够使用量子算力加密解密的话,人家根本看不到你钱包里那几万个比特币(如果您有的话),直接攻击全球金融系统就好了。
量子计算更加复杂,下一篇文章会说一说最近这个甚嚣尘上的概念。