专栏首页湛卢工作室量子密钥分发技术介绍

量子密钥分发技术介绍

一、量子基本信息

1、量子概念

量子(Quantum)属于一个微观的物理概念。如果一个物理量存在最小的不可分割的基本单位,那么称这个物理量是可量子化的,并把物理量的基本单位称为量子。现代物理中,将微观世界中所有的不可分割的微观粒子(光子、电子、原子等)或其状态等物理量统称为量子。

量子这个概念最早由德国物理学家普朗克在1900年提出的,他假设黑体辐射中的辐射能量是不连续的,只能取能量基本单位的整数倍,这很好地解释了黑体辐射的实验现象。即假设对于一定频率的电磁辐射,物体只以“量子”的方式吸收和发射,每个“量子”的能量可以表示为:E=hν,h为普朗克常数。

2、量子基本特性

作为一种微观粒子,量子具有许多特别的基本特性,如量子力学三大基本原理:

量子测不准

也称为不确定性原理,即观察者不可能同时知道一个粒子的位置和它的速度,粒子位置的总是以一定的概率存在某一个不同的地方,而对未知状态系统的每一次测量都必将改变系统原来的状态。也就是说,测量后的微粒相比于测量之前,必然会产生变化。

量子不可克隆

量子不可克隆原理,即一个未知的量子态不能被完全地克隆。在量子力学中,不存在这样一个物理过程:实现对一个未知量子态的精确复制,使得每个复制态与初始量子态完全相同。

量子不可区分

量子不可区分原理,即不可能同时精确测量两个非正交量子态。事实上,由于非正交量子态具有不可区分性,无论采用任何测量方法,测量结果的都会有错误。

除此之外,还包括以下基本特性:

量子态叠加性(superposition)

量子状态可以叠加,因此量子信息也是可以叠加的。这是量子计算中的可以实现并行性的重要基础,即可以同时输入和操作个量子比特的叠加态。

量子态纠缠性(entanglement)

两个及以上的量子在特定的(温度、磁场)环境下可以处于较稳定的量子纠缠状态,基于这种纠缠,某个粒子的作用将会瞬时地影响另一个粒子。爱因斯坦称其为: “幽灵般的超距作用”。

量子态相干性(interference)

量子力学中微观粒子间的相互叠加作用能产生类似经典力学中光的干涉现象。

二、密码学基础

1、密码学基本原则

在设计算法时,必须假设敌人已经知道了算法和密文,唯一不知道的是密钥。密码学的研究目标就是,让敌人在这种情况下破译不了密文。算法、密文、密钥三个元素,缺一个密钥,让你死活破译不了;三缺一干着急,这是设计密码体系时的基本原则。

2、一次性便签--one time pad

(1)密钥是一串随机的字符串;

(2)密钥的长度跟明文一样,甚至更长;

(3)每传送一次密文就更换密钥,即“一次一密”。

香农证明了一个数学定理:密钥如果满足以上三个条件,那么通信就是“绝对安全”的。

三、加密通信

四、量子密钥分发(Quantum Key Distribution)

量子密钥是一串随机的字符串,长度也可随意设定,而且每次需要传输信息时都重新产生一段密钥,这样就完全满足了香农定理的三个要求(密钥随机,长度不小于明文,一次一密),因此用量子密钥加密后的密文是不可破译的。

------------------------------------------------

以下内容涉及较多计算,请读者耐心阅读

------------------------------------------------

五、BB84协议

1、名称由来

BB84协议是美国科学家Charles H. Bennett和加拿大科学家Gilles Brassard在1984年提出的,BB84是两人姓的首字母加上年份的缩写。

2、操作过程

Alice拿一个随机数发生器,产生1个随机数0或者1(记作a),用a来决定选择哪个基组:得到0就用|0>和|1>的基组,得到1就用|+>和|->的基组;选定基组之后,再产生1个随机数(记作a′),根据这第二个随机数决定在基组中选择哪个状态:得到0就在|0>和|1>中选择|0>或者在|+>和|->中选择|+>,得到1就在|0>和|1>中选择|1>或者在|+>和|->中选择|->。经过这样双重的随机选择之后,A把选定的随机数 a' 保留,把由a'的值所决定的光子发送出去(一个一个连续的发出,a'决定的是光子的状态)。

B接到光子的时候,并不知道它是属于哪个基组的。B也拿一个随机数发生器,产生1个随机数(记作b),得到0的时候就在|0>和|1>的基组中测量,得到1的时候就在|+>和|->的基组中测量。B测得|0>或者|+>就记下一个0,测得|1>或者|->就记下一个1,我们把这个数记为b′。

如果Bob猜对了基组,也就是a = b,那么所得到的那个光子的状态就是B的基组中的一个,测量以后不会变,a′必然等于b′。而如果B猜错了基组,a ≠ b,那么光子的状态就不是B的基组中的一个,所以测量后会突变,a′和b′就不一定相等了(有一半的概率不同)。把这样的操作重复若干次,双方发送和测量若干个光子。

结束后,双方公布自己的第一个序列,也就是a和b随机数序列(注意不是把发送出去的光子随机数序列公布,而是第1个序列),比如说Alice这一方的a序列是0110,Bob这一方的b序列是1100。然后找出其中相同的部分,就是第2位(1)和第4位(0)。那么Bob就知道自己这里接收到的光子的第2个和第4个,与Alice那边是同一个基组,所以测量以后得到的结果b'(b'的第2个与第4个)必然与Alice那里所保留的a' (a'的第2个与第4个)相同。

简要来说,BB84协议操作过程中同时利用了量子信道和经典信道:

量子信道部分

(1) Alice发送随机的量子比特串给Bob。Alice随机选择四种偏振片,制备不同偏振状态的光量子,得到足够多的随机量子比特并将其发送给Bob。

(2) Bob随机选择测量基测量量子比特。由于Bob并不知道光量子是由发送端那一种测量基编码的,所以他也只能随机选择测量基来进行测量。当选择正确的测量基时,测量的结果正确。当使用错误的测量结果时,测量结果错误。

经典信道部分

(3) Bob将使用的测量基发送给Alice。

(4) Alice将接收的测量基与使用的测量基进行比较,并通过信息告诉Bob哪些位置的测量基是正确的。

(5) Bob根据Alice的消息剔除错误的量子比特,并将选择少部分正确的测量结果告诉Alice。

(6) Alice确认Bob测量结果的正确性。若错误,则说明存在量子信道可能存在窃听,停止通信或者返回第 (1) 步(由于实际的量子信道中也存在噪声,因此会根据一个错误率阈值判断是否窃听和停止通信)。若正确,剔除部分的量子比特,剩下的二进制串作为最终的密钥。并发送确认信息给Bob。

(7) Bob收到确认信息。同样剔除部分的量子比特,剩下的二进制串作为最终的密钥。

3、Eve窃听

Eve进行窃听的话,对基组进行猜测,就有一半的概率猜错,猜错以后就会改变光子的状态。例如Alice发出的状态是|+>(这对应于a= 1, a′ = 0),Eve用|0>和|1>的基组来测量|+>,就会以一半的概率把它变成|0>,一半的概率把它变成|1>;然后B再去测量这个光子。如果Bob用的基组是|0>和|1>(b = 0),测量结果是|1> ,公布后会发现这里a ≠ b,这个数据就被抛弃。而如果Bob用的基组是|+>和|->(b = 1),公布后会发现这里a = b, 这个数据要保留。这时b′等于什么呢?无论光子状态是|0>还是|1>(E测量后状态变成|0>或|1>,正常该是|+>),在|+>和|->的基组下测量时都以一半的概率变成|+>(b′ = 0),一半的概率变成|->(b′ = 1);而无E窃听测量的情况下B应该测得的是 |+> 状态(b'=0); 也就是在有E窃听测量的情况下B得出的密钥有一定比例和A的密钥不同。

只要Eve猜错了基组,a′和b′就会有一半的概率不同;Eve猜错基组的概率是一半;所以在E做了测量的情况下a′和b′不同的概率是1/2 × 1/2= 1/4。

为了知道有没有窃听,Alice和Bob在得到a′和b′序列后,再挑选一段公布。这是BB84协议中的第二次公布。

第一次公布的是双方随机选择的基组的情况,基组一样的就认为是要保留的;第二次公布是保留下来的数据的一部分,这个保留的数据原本是要作为密钥的不能全公布出来,可是为了安全、不被窃听,只能牺牲掉一段;如果发现公布出来的那一部分双方有很大差异,就说明有人窃听。

如果Eve选错了测量基(50%概率),那么必然会改变信号,使得Alice发送的信号和Bob接收的信号不一致。经过上述协议后,Alice和Bob端的量子密钥不一样,会造成Bob端无法解码或者误码率增大。因而B可以通过上述现象,判断是否存在窃听者Eve。事实上通过计算可以发现,Eve在窃听100个码元后,不被发现的概率仅为3.2* 10^(-13),更何况现实通信的数据远不止100个码元。

六、量子密码术的安全性

1、如果成功生成了密钥,那么密文即使被截获了也不会被破译;

2、没有传递密钥的信使;

3、不会被计算技术的进步破解;

4、如果在密钥生成过程中有人窃听,那么会被通信方发现,仍然不会泄密。

本文分享自微信公众号 - 湛卢工作室(xuehao_studio)

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2019-08-07

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

推荐阅读

  • 远程办公经验为0,如何将日常工作平滑过度到线上?

    我是一名创业者,我的公司(深圳市友浩达科技有限公司)在2018年8月8日开始运营,现在还属于微型公司。这个春节假期,我一直十分关注疫情动向,也非常关心其对公司带来的影响。

    TVP官方团队
    TAPD 敏捷项目管理腾讯乐享企业邮箱企业编程算法
  • 数据中台,概念炒作还是另有奇效? | TVP思享

    作者简介:史凯,花名凯哥,腾讯云最具价值专家TVP,ThoughtWorks数据智能业务总经理。投身于企业数字化转型工作近20年。2000年初,在IBM 研发企业级中间件,接着加入埃森哲,为大型企业提供信息化架构规划,设计,ERP,云平台,数据仓库构建等技术咨询实施服务,随后在EMC负责企业应用转型业务,为企业提供云迁移,应用现代化服务。现在专注于企业智能化转型领域,是数据驱动的数字化转型的行业布道者,数据中台的推广者,精益数据创新体系的创始人,2019年荣获全球Data IQ 100人的数据赋能者称号,创业邦卓越生态聚合赋能官TOP 5。2019年度数字化转型专家奖。打造了行业第一个数据创新的数字化转型卡牌和工作坊。创建了精益数据创新方法论体系构建数据驱动的智能企业,并在多个企业验证成功,正在向国内外推广。

    TVP官方团队
    大数据数据分析企业
  • 扩展 Kubernetes 之 CRI

    使用 cri-containerd 的调用流程更为简洁, 省去了上面的调用流程的 1,2 两步

    王磊-AI基础
    Kubernetes
  • 扩展 Kubernetes 之 Kubectl Plugin

    kubectl 功能非常强大, 常见的命令使用方式可以参考 kubectl --help,或者这篇文章

    王磊-AI基础
    Kubernetes
  • 多种登录方式定量性能测试方案

    最近接到到一个测试任务,某服务提供了两种登录方式:1、账号密码登录;2、手机号+验证码登录。要对这两种登录按照一定的比例进行压测。

    八音弦
    测试服务 WeTest
  • 线程安全类在性能测试中应用

    首先验证接口参数签名是否正确,然后加锁去判断订单信息和状态,处理用户增添VIP时间事务,成功之后释放锁。锁是针对用户和订单的分布式锁,使用方案是用的redis。

    八音弦
    安全编程算法
  • 使用CDN(jsdelivr) 优化博客访问速度

    PS: 此篇文章适用于 使用 Github pages 或者 coding pages 的朋友,其他博客也类似.

    IFONLY@CUIT
    CDNGitGitHub开源
  • 扩展 Kubernetes 之 CNI

    Network Configuration 是 CNI 输入参数中最重要当部分, 可以存储在磁盘上

    王磊-AI基础
    Kubernetes
  • 聚焦【技术应变力】云加社区沙龙online重磅上线!

    云加社区结合特殊时期热点,挑选备受关注的音视频流量暴增、线下业务快速转线上、紧急上线防疫IoT应用等话题,邀请众多业界专家,为大家提供连续十一天的干货分享。从视野、预判、应对等多角度,帮助大家全面提升「技术应变力」!

    腾小云
  • 京东购物小程序购物车性能优化实践

    它是小程序开发工具内置的一个可视化监控工具,能够在 OS 级别上实时记录系统资源的使用情况。

    WecTeam
    渲染JavaScripthttps网络安全缓存

扫码关注云+社区

领取腾讯云代金券