量子密钥分发和BB84协议-程序员宅基地

技术标签: 量子技术  

1984年,物理学家Bennett和密码学家Brassard提出了利用“单量子不可克隆定理”实现密钥分发的方案,后称BB84协议。“单量子不可克隆定理”(No-CloningTheorem)是“海森堡测不准原理”的推论,它是指量子力学中对任意一个未知的量子态进行完全相同的复制的过程是不可实现的,因为复制的前提是测量,而测量必然会改变该量子的状态。下面将通过示意图,解释如何利用光子的量子特性在理论上可以万无一失地传送密钥。只要耐心地读完下面不含任何数学公式的解说文字,你对量子密钥分发原理就一清二楚了。图1是提供预备知识,图2是量子密钥分发的原理图,量子密钥分发技术的奥秘全在这张图中。
在这里插入图片描述

图中的小黄球代表单个光子,黑色箭头代表光子的偏振方向,左边蓝色人是信息发送方,而绿色人是接收方。收发双方都手持偏振滤色片,发送方有四种不同的滤色片,分别为上下、左右偏振(第一组)、上左下右、上右下左偏振(第二组)四种滤色片,发送方把不同的滤色片遮于单光子源前,就可分别得到四种不同偏振的光子,分别用来代表“0”和“1”。请注意,每个代码对应于两种不同的光子偏振状态,它们出自两组不同偏振滤色片(见图1中的左下角,它和通常光通讯的编码不尽相同)。接收方就只有两种偏振滤色片,上下左右开缝的“十”字式和斜交开缝的“X”字式。由于接收方无法预知到达的每个光子的偏振状态,他只能隨机挑选两种偏振滤色片的一种。接收方如果使用了“十”字滤色片,上下或左右偏振的光子可以保持原量子状态顺利通过(见图中上面的第一选择,接收方用了正确的滤色片),而上左下右、上右下左偏振的光子在通过时量子状态改变,变成上下或左右偏振且状态不确定(见图中第四选择,用了错误的滤色片)。接送方如果使用X字滤色片情况正好相反,见图中第二选择(错误)和第三选择(正确)。
在这里插入图片描述

有了以上的预备知识,就容易理解量子密钥分发技术了。图2第一横排是发送方使用的不同偏振滤色片,从左至右将九个不同偏振状态的光子随时间先后逐个发送给下面绿色接收方,这些光子列于第二排。接收方隨机使用“十”字或“X”字偏振滤色片将送来的光子逐一过滤,见第三排,接收到的九个光子的状态显示在第四排。这里是密钥(Key)产生的关键步骤:接收方通过公开信道(电子邮件或电话)把自己使用的偏振滤色片的序列告知发送方,发送方把接收方滤色片的序列与自己使用的序列逐一对照,然后告知接收方哪几次用了正确的滤色片(打勾️的1,4,5,7,9)。对应于这些用了正确滤色片后接收到的光子状态的代码是:00110,接发双方对此都心知肚明、毫无疑义,这组代码就是它们两人共享的密钥。为什么第三者不可能截获这个密钥呢?假设窃密者在公开信道上得知了接送方使用的偏振滤色片序列,也知道了发送方的确认信息(打勾️的1,4,5,7,9),但是窃密者依旧无法确认密钥序列。譬如对第一列,窃密者知道接收方用的是“十”字滤色片,而且发送方确认是对的,但这可能对应于上下或左右偏振的两种不同的光子,它们分别代表“1”或“0”,除了发送和接收双方都清楚知道,窃密者是无法确认的。窃密者真要确认的话,也要在中途插入偏振滤色片来观察,但它又无法事先知道应该使用“十”还是“X”滤色片,一旦使用错误滤色片,光子状态改变,窃密的行为立即暴露。再以第一列光子为例,如果窃密者在接收端前插入“X”滤色片,光子偏振状态可能改变成上右下左的斜偏振,接收方仍使用“十”滤色片,得到左右偏振光子,经确认后此位变成“1”。结果通信双方的密钥在第一位不一致,这种出错经过奇偶校验核对非常容易发现和纠正。通常的做法是通信双方交换很长的光子序列,得到确认的密钥后分段使用奇偶校验核对,出错段被认为是技术误差或已被中间窃听,则整段予以刪除,留下的序列就是绝对可靠的共享密钥。有必要指出本文仅作基本原理的介绍,工程实现中的细节不再赘述。量子密钥分发方法除了本文介绍的BB84规约外还有E91规约,有兴趣的读者可去网上搜索。量子密钥分发技术中的密钥的每一位是依靠单个光子传送的,单个光子的量子行为使得窃密者企图截获并复制光子的状态而不被察觉成为不可能。而普通光通信中每个脉冲包含千千万万个光子,其中单个光子的量子行为被群体的统计行为所淹没,窃密者在海量光子流中截取一小部光子根本无法被通信两端用户所察觉,因而传送的密钥是不安全的,用不安全密钥加密后的数据资料一定也是不安全的。量子密钥协商分发技术的关键是产生、传送和检测具有多种偏振态的单个光子流,特种的偏振滤色片,单光子感应器和超低温环境使得这种技术成为可能。量子密钥分发虽在理论上具有无条件安全性,但由于原始方案要求使用理想的单光子源和单光子探测器,在现实条件下很难实现,这导致现实的量子密钥分发系统可能存在各种安全隐患。随后开发的诱骗态量子密钥分发,成功解决了非理想单光子源带来的安全漏洞,但探测器的不完美性又成为“量子黑客”主要攻击点。新开发的高效低噪声上转换单光子探测器,实现了测量器件无关的量子密钥分发,成功解决了现实环境中单光子探测系统易被黑客攻击的安全隐患。这些都是基于BB84协议的改进方案,是量子通信工程化前的重要实验成果。必须强调,量子密钥分发光纤网络上传送的是单个光子序列,所以数据传输速度远远低于普通光纤通信网络,它不能用来传送大量的数据文件和图片,它是专门用来传送对称密码体制中的密钥,当通信双方交换并确认共享了绝对安全的密钥后,再用此密钥对大量数据加密后在不安全的高速网络上传送。“量子通信”这个词容易使人误解,到目前为止,实际上量子通信指的就是量子密钥分发技术。量子密钥分发光纤虽然是低速网络,但每秒种传送上千位的密钥没有任何问题,通信双方有确保安全的几百位长的密钥,而且分分秒秒可以隨时更换密钥,这是量子密钥协商分发技术的长处。2013年10月10日,巴特尔公司(Battelle)建立了第一条商用量子密钥分发网络,一条全长110公里的专用光纤线路连结了俄亥俄州哥伦布市它们的公司总部和在都柏林的分部办公室,使用的是ID Quantique提供的硬件设备,用来保护公司的财务资料、知识产权、图纸和设计数据。一百公里已经接近量子密钥分发的光纤网络的长度极限了,这是由单个光子在光纤中可以传播的最大距离所决定的。这个问题严重影响该技术的实用价值。目前的解决方案是设立光子传送中继站。这种中继站与通常光通讯的放大中继有着本质的区别,因为让中继站接收单个光子后又送出一个量子状态不变的光子是十分困难的,这个中继站必须为通信双方所信任,实际上量子密钥是通过可信任中继站接力递送的[1]。据报导,连接北京和上海的量子密钥分发光纤网络于2017年开通运行,使用的就是可信任光子中继站方案。使用量子密钥分发技术的通讯双方必须建立点对点连接的专用光纤,使人不禁又会想起上世纪初城市的街道上空密密麻麻缠成一团的电话线,点到点直接相联的网络结构非常不易拓展,这个问题将成为该技术推广应用中更大的障碍。目前一组英国剑桥的研究小组开发成功一种新技术,使得量子密钥分发过程能在普通光纤通信线路上进行。这种技术有些像“时分复用”通讯,通常的高强度数据激光与微弱的光量子流传送在同一根光纤上按时间分隔高速切換。该技术有相当的难度,通讯中的收发两端对两种讯号必须保持精准的同步,而且感应器必须正确适应强度差异十分巨大的两种光讯号,犹如一会儿面对太阳,一会儿感应微弱的星光!这种技术使得通讯双方可以在同一条光纤上交换密钥,但是这依然没有解决量子密钥分发的组网难题。为了让量子密钥分发技术为更多的终端用户服务,美国Los Alamos国家实验室研发了一种称之为QKarD技术。只要带有闪存U盘大小的一只专用光纤接口,任何用户终端通讯设备诸如手提电脑、平板电脑和手机就可以通过光纤与邻近的中央服务器交换量子密钥。QKarD服务器有些像电话中继交换中心,各终端客户发送光量子向各自邻近的QKarD服务器配送密钥,当各个终端与服务器之间的密钥配送完毕,同时各个服务器之间密钥也配送完毕后,终端用户A将信息用密钥加密后以传统方式送达邻近的QKarD服务器,信息在服务器解密和重新加密后转交另一个服务器,直到接力传送至最终用户B为止。
在这里插入图片描述

一个QKarD的示范网络已经试运行。据估计,一个连接一千个终端的QKarD服务器价格约一万美元,QKarD终端接口约50美元。这种办法的最大缺陷在服务器安全上,它们必须成为可信任服务器。这种网络与互联网的协调配合也是一个大问题,现在看来美国洛斯阿拉莫斯已经放弃了这种方案。量子密码技术刚跚跚起步,针对它的黑客早已蠢蠢欲动,非要把它扼杀在摇篮中而不可,俗话说:道高一尺,魔高一丈,这大概应是天道的第一定律。目前针对量子密码技术的黑客手段有下列几种。1)量子密钥的关键是通过一个又一个光子传递密码,中间窃听者无法截取光子而又不改变光子的状态。但工程实施时很难保证发射端每个脉冲只含有一个光子,如果每个脉冲有两个以上光子,黑客仍可以只截取一个光子並设法放过另一个光子,让接收端无法感觉到讯号已被截取。2)一组挪威的研究人员通过激光朿短暂“致盲”光子感应设备成功地破获传送的量子密钥。这种方法和设备过于专业和复杂,目前还没有构成现实的威胁。3)另一种方法完全就是流氓行为,针对光子通信的精密脆弱,直接用强激光长时间野蛮干涉,使得量子密码传递双方通过微弱的光子交换过程根本进行不下去。总之,BB84量子密钥协商分发方案的主要意义仅在理论研究上,而不是在工程技术方面。[1]可信任量子密钥中继站不是光量子接收、放大和再传送,而是密钥在可信任中继站之间的接力递送。具体的技术实现手段又有多种,有兴趣的可以读一读附件。简单地可以这样来理解:用户A先后通过两个可信任中继站N和M与用户B配送密钥,A先与N通过光量子交换得密钥K,N又与M之间交换得密钥K2,然后N通过公共信道用公钥保护后送K和K2的混合码给M,只有M明白了A送出的是密钥K,然后M再与用户B光量子交换得密钥K3,并且也通过公共信道把K和K3混合码送给用户B,只有B明白了A送给自己的真正密钥是K。

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/zeroctu/article/details/84893010

智能推荐

c# 调用c++ lib静态库_c#调用lib-程序员宅基地

文章浏览阅读2w次,点赞7次,收藏51次。四个步骤1.创建C++ Win32项目动态库dll 2.在Win32项目动态库中添加 外部依赖项 lib头文件和lib库3.导出C接口4.c#调用c++动态库开始你的表演...①创建一个空白的解决方案,在解决方案中添加 Visual C++ , Win32 项目空白解决方案的创建:添加Visual C++ , Win32 项目这......_c#调用lib

deepin/ubuntu安装苹方字体-程序员宅基地

文章浏览阅读4.6k次。苹方字体是苹果系统上的黑体,挺好看的。注重颜值的网站都会使用,例如知乎:font-family: -apple-system, BlinkMacSystemFont, Helvetica Neue, PingFang SC, Microsoft YaHei, Source Han Sans SC, Noto Sans CJK SC, W..._ubuntu pingfang

html表单常见操作汇总_html表单的处理程序有那些-程序员宅基地

文章浏览阅读159次。表单表单概述表单标签表单域按钮控件demo表单标签表单标签基本语法结构<form action="处理数据程序的url地址“ method=”get|post“ name="表单名称”></form><!--action,当提交表单时,向何处发送表单中的数据,地址可以是相对地址也可以是绝对地址--><!--method将表单中的数据传送给服务器处理,get方式直接显示在url地址中,数据可以被缓存,且长度有限制;而post方式数据隐藏传输,_html表单的处理程序有那些

PHP设置谷歌验证器(Google Authenticator)实现操作二步验证_php otp 验证器-程序员宅基地

文章浏览阅读1.2k次。使用说明:开启Google的登陆二步验证(即Google Authenticator服务)后用户登陆时需要输入额外由手机客户端生成的一次性密码。实现Google Authenticator功能需要服务器端和客户端的支持。服务器端负责密钥的生成、验证一次性密码是否正确。客户端记录密钥后生成一次性密码。下载谷歌验证类库文件放到项目合适位置(我这边放在项目Vender下面)https://github.com/PHPGangsta/GoogleAuthenticatorPHP代码示例://引入谷_php otp 验证器

【Python】matplotlib.plot画图横坐标混乱及间隔处理_matplotlib更改横轴间距-程序员宅基地

文章浏览阅读4.3k次,点赞5次,收藏11次。matplotlib.plot画图横坐标混乱及间隔处理_matplotlib更改横轴间距

docker — 容器存储_docker 保存容器-程序员宅基地

文章浏览阅读2.2k次。①Storage driver 处理各镜像层及容器层的处理细节,实现了多层数据的堆叠,为用户 提供了多层数据合并后的统一视图②所有 Storage driver 都使用可堆叠图像层和写时复制(CoW)策略③docker info 命令可查看当系统上的 storage driver主要用于测试目的,不建议用于生成环境。_docker 保存容器

随便推点

网络拓扑结构_网络拓扑csdn-程序员宅基地

文章浏览阅读834次,点赞27次,收藏13次。网络拓扑结构是指计算机网络中各组件(如计算机、服务器、打印机、路由器、交换机等设备)及其连接线路在物理布局或逻辑构型上的排列形式。这种布局不仅描述了设备间的实际物理连接方式,也决定了数据在网络中流动的路径和方式。不同的网络拓扑结构影响着网络的性能、可靠性、可扩展性及管理维护的难易程度。_网络拓扑csdn

JS重写Date函数,兼容IOS系统_date.prototype 将所有 ios-程序员宅基地

文章浏览阅读1.8k次,点赞5次,收藏8次。IOS系统Date的坑要创建一个指定时间的new Date对象时,通常的做法是:new Date("2020-09-21 11:11:00")这行代码在 PC 端和安卓端都是正常的,而在 iOS 端则会提示 Invalid Date 无效日期。在IOS年月日中间的横岗许换成斜杠,也就是new Date("2020/09/21 11:11:00")通常为了兼容IOS的这个坑,需要做一些额外的特殊处理,笔者在开发的时候经常会忘了兼容IOS系统。所以就想试着重写Date函数,一劳永逸,避免每次ne_date.prototype 将所有 ios

如何将EXCEL表导入plsql数据库中-程序员宅基地

文章浏览阅读5.3k次。方法一:用PLSQL Developer工具。 1 在PLSQL Developer的sql window里输入select * from test for update; 2 按F8执行 3 打开锁, 再按一下加号. 鼠标点到第一列的列头,使全列成选中状态,然后粘贴,最后commit提交即可。(前提..._excel导入pl/sql

Git常用命令速查手册-程序员宅基地

文章浏览阅读83次。Git常用命令速查手册1、初始化仓库git init2、将文件添加到仓库git add 文件名 # 将工作区的某个文件添加到暂存区 git add -u # 添加所有被tracked文件中被修改或删除的文件信息到暂存区,不处理untracked的文件git add -A # 添加所有被tracked文件中被修改或删除的文件信息到暂存区,包括untracked的文件...

分享119个ASP.NET源码总有一个是你想要的_千博二手车源码v2023 build 1120-程序员宅基地

文章浏览阅读202次。分享119个ASP.NET源码总有一个是你想要的_千博二手车源码v2023 build 1120

【C++缺省函数】 空类默认产生的6个类成员函数_空类默认产生哪些类成员函数-程序员宅基地

文章浏览阅读1.8k次。版权声明:转载请注明出处 http://blog.csdn.net/irean_lau。目录(?)[+]1、缺省构造函数。2、缺省拷贝构造函数。3、 缺省析构函数。4、缺省赋值运算符。5、缺省取址运算符。6、 缺省取址运算符 const。[cpp] view plain copy_空类默认产生哪些类成员函数

推荐文章

热门文章

相关标签