首页
游戏
影视
直播
广播
听书
音乐
图片
更多
看书
微视
主播
统计
友链
留言
关于
论坛
邮件
推荐
我的云盘
我的搜索
我的记录
我的图片
我的图书
我的笔记
我的音乐
我的影视
我的邮件
Search
1
virtuoso和empyrean alps模拟仿真和混仿教程
165 阅读
2
在IC617中进行xa+vcs数模混仿
163 阅读
3
科普:Memory Compiler生成的Register file和SRAM有何区别?
153 阅读
4
文档内容搜索哪家强? 15款文件搜索软件横向评测
119 阅读
5
vcs debug rtl或者netlist 中的loop
85 阅读
默认分类
芯片市场
数字电路
芯片后端
模拟电路
芯片验证
原型与样片验证
算法与架构
DFX与量产封装
PC&Server OS设置
移动OS设置
软件方案
新浪备份
有道备份
登录
Search
标签搜索
AI
python
Docker
vcs
PyQT
STM32
cadence
linux
systemverilog
EDA
Alist
vscode
uos
package
MCU
C
QT
CXL
sed
sv
bennyhe
累计撰写
378
篇文章
累计收到
31
条评论
首页
栏目
默认分类
芯片市场
数字电路
芯片后端
模拟电路
芯片验证
原型与样片验证
算法与架构
DFX与量产封装
PC&Server OS设置
移动OS设置
软件方案
新浪备份
有道备份
页面
游戏
影视
直播
广播
听书
音乐
图片
看书
微视
主播
统计
友链
留言
关于
论坛
邮件
推荐
我的云盘
我的搜索
我的记录
我的图片
我的图书
我的笔记
我的音乐
我的影视
我的邮件
搜索到
32
篇与
的结果
2025-08-07
关于量子通信与量子计算,终于有人讲透了!
EET0P2018年09月17日11:59来源:绿盟博客 作者:陈磊 原地址:http://blog.nsfocus.net/quantum-information-technology/本文首先介绍量子相关的基本概念、性质及基本原理;接着,从量子通信和量子计算两个部分阐述其原理与发展现状;然后,简单介绍了后量子密码学(也称抗量子密码体制)的发展情况;最后,对量子信息技术的发展进行总结与展望。文章目录1 引言2 量子信息简介2.1 量子概念2.2 量子基本特性2.3 量子信息2.4 量子信息学3 量子通信3.1 量子通信系统基本模型3.2 量子通信技术优势3.3 量子密钥分配基本原理3.4 量子隐形传态基本原理3.5 理论与试验研究进展3.6 产业化进展与面临的挑战4 量子计算4.1 典型量子算法4.2 量子机器学习与深度学习算法4.3 量子计算机4.4 量子编码5 后量子密码6 总结1 引言量子信息科学(Quantum Information)是以量子力学为基础,把量子系统“状态”所带有的物理信息,进行信息编码、计算和传输的全新信息技术。量子信息技术主要包括量子通信和量子计算,由于它们具有潜在的应用价值和重大的科学意义,正引起人们广泛的关注和研究。本文首先介绍量子相关的基本概念、性质及基本原理;接着,从量子通信和量子计算两个部分阐述其原理与发展现状;然后,简单介绍了后量子密码学(也称抗量子密码体制)的发展情况;最后,对量子信息技术的发展进行总结与展望。2 量子信息简介在本章中,首先介绍量子和量子信息基本概念及相关特性;然后介绍量子信息学领域的研究分支及其研究内容。2.1 量子概念量子(Quantum)属于一个微观的物理概念。如果一个物理量存在最小的不可分割的基本单位[1],那么称这个物理量是可量子化的,并把物理量的基本单位称为量子。现代物理中,将微观世界中所有的不可分割的微观粒子(光子、电子、原子等)或其状态等物理量统称为量子。量子这个概念最早由德国物理学家普朗克在1900年提出的,他假设黑体辐射中的辐射能量是不连续的,只能取能量基本单位的整数倍,这很好地解释了黑体辐射的实验现象。即假设对于一定频率的电磁辐射,物体只以“量子”的方式吸收和发射,每个“量子”的能量可以表示为:,为普朗克常数。量子假设的提出有力地冲击了牛顿力学为代表的经典物理学,促进物理学进入微观层面,奠定了现代物理学基础,进入了全新的领域。2.2 量子基本特性作为一种微观粒子,量子具有许多特别的基本特性,如量子力学三大基本原理:量子测不准也称为不确定性原理,即观察者不可能同时知道一个粒子的位置和它的速度,粒子位置的总是以一定的概率存在某一个不同的地方,而对未知状态系统的每一次测量都必将改变系统原来的状态。也就是说,测量后的微粒相比于测量之前,必然会产生变化。量子不可克隆量子不可克隆原理,即一个未知的量子态不能被完全地克隆。在量子力学中,不存在这样一个物理过程:实现对一个未知量子态的精确复制,使得每个复制态与初始量子态完全相同。量子不可区分量子不可区分原理,即不可能同时精确测量两个非正交量子态。事实上,由于非正交量子态具有不可区分性,无论采用任何测量方法,测量结果的都会有错误。除此之外,还包括以下基本特性:量子态叠加性(superposition)量子状态可以叠加,因此量子信息也是可以叠加的。这是量子计算中的可以实现并行性的重要基础,即可以同时输入和操作个量子比特的叠加态。量子态纠缠性(entanglement)两个及以上的量子在特定的(温度、磁场)环境下可以处于较稳定的量子纠缠状态,基于这种纠缠,某个粒子的作用将会瞬时地影响另一个粒子。爱因斯坦称其为: “幽灵般的超距作用”。量子态相干性(interference)量子力学中微观粒子间的相互叠加作用能产生类似经典力学中光的干涉现象。2.3 量子信息一个经典的二进制存储器只能存一个数:要么存 0,要么存 1。但一个二进制量子存储器却可以同时存储0和1这两个数。两个经典二进制存储器只能存储以下四个数的一个数: 00,01,10 或 11。倘若使用两个二进制量子存储器,则以上四个数可以同时被存储下来。按此规律,推广到N个二进制存储器的情况,理论上,N个量子存储器与N个经典存储器分别能够存储个数和1个数。由此可见,量子存储器的存储能力是呈指数增长的,它比经典存储器具有更强大的存储数据的能力,尤其是当 N很大时(如 N=250 ),量子存储器能够存储的数据量比宇宙中所有原子的数目还要多[1]。2.4 量子信息学量子信息学是量子力学与信息科学形成的一个交叉学科,该领域主要包括两个领域:量子通信和量子计算。其中量子通信主要研究的是量子介质的信息传递功能进行通信的一种技术,而量子计算则主要研究量子计算机和适合于量子计算机的量子算法。图 1 量子信息学的研究分支3 量子通信所谓量子通信,从概念角度来讲就是利用量子介质的信息传递功能进行通信的一种技术。它主要包括量子密钥分配、量子隐形传态等技术。量子密码 (Quantum Cryptography)是利用量子力学属性开发的密码系统。与传统的密码系统不同的是,它的安全性依赖于量子力学属性(不可测量和不可克隆等)而不是数学的复杂度理论。量子密钥分配是研究最为成熟的量子密码技术。在本章中,我们首先简单地介绍量子通信系统的基本模型以及优势,然后介绍量子密钥分配和量子隐形传态的基本原理。接着,概述量子通信的目前研究与发展现状。最后,总结量子通信目前存在的问题。3.1 量子通信系统基本模型量子通信体系架构包括量子态发生器、量子通道和量子测量装置以及经典信道等部分,其基本模型如图2所示。图 2 量子通信系统基本模型量子通信过程可以从发送端和接收端两个角度理解。在发送端,量子信源模块产生消息,消息通过量子编码模块转换成量子比特,量子比特通过量子调制模块得到以量子态为载体的量子信息,量子信息通过量子信道进行传输。除此以外,量子调制的模式信息(传统的信息)需要使用经典信道进行传输。在接收端,将接收到两部分信息:量子信道接收量子信息;经典信道接收额外的经典信息。这两部分信息通过解调和解码模块后,获得最终的消息。3.2 量子通信技术优势量子通信与传统通信技术相比,具有如下主要特点和优势:(1) 时效性高。量子通信的线路时延近乎为零,量子信道的信息效率相对于经典信道量子的信息效率高几十倍,传输速度快。(2) 抗干扰性能强。量子通信中的信息传输不通过传统信道(如传统移动通信为了使得通信不被干扰,需要约定好频率,而量子通信不需要考虑这些因素),与通信双方之间的传播媒介无关,不受空间环境的影响,具有完好的抗干扰性能。(3) 保密性能好。根据量子不可克隆定理,量子信息一经检测就会产生不可还原的改变,如果量子信息在传输中途被窃取,接收者必定能发现。(4) 隐蔽性能好。量子通信没有电磁辐射,第三方无法进行无线监听或探测。(5) 应用广泛。量子通信与传播媒介无关,传输不会被任何障碍阻隔,量子隐形传态通信还能穿越大气层。因此,量子通信应用广泛,既可在太空中通信,又可在海底通信,还可在光纤等介质中通信。3.3 量子密钥分配基本原理量子密钥分配 (Quantum Key Distribution, QKD)以量子态为信息载体,通过量子信道使通信收发双方共享密钥,是密码学与量子力学相结合的产物。QKD 技术在通信中并不传输密文,而是利用量子信道将密钥分配给通信双方,由于量子力学的测不准和量子不可克隆定理,攻击者无法获取正确的密钥。基于QKD 技术的保密通信系统结构如图3所示,其中上路负责密钥分配,下路负责传输加解密数据。在上路中,量子信道负责传输量子密钥,经典信道负责传输测量基[2]等额外需要的信息。下面,将以BB84[5]方案为例,具体地介绍两条信道起到的作用。图 3 基于QKD 的量子保密通信系统BB84 方案。1984 年,Brassard与Bennett联合提出了第一个实用型量子密钥分配系统—BB84 方案,系统架构如图4 所示。图 4 BB84协议示意图[20]该方案通过量子信道传送密钥,量子信道的信息载体是单个量子,通过量子的相位、极化方向或频率等物理量携带量子密钥信息。BB84 方案利用单个量子作为信息载体两组共扼基,每组基中的两个极化互相正交。由于理想状态的量子信道无法实现,BB84 方案还利用经典信道进行量子态测量方法的协商和码序列的验证。有趣的现象:接收端必须使用正确的测量基,才能正确地测出量子比特(光量子的偏振态);使用错误的测量基,测量结果将发生错误,同时光量子的偏振态发生改变,如图5所示。图 5测量基对测量结果的影响[20]有了以上基础后,理解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收到确认信息。同样剔除部分的量子比特,剩下的二进制串作为最终的密钥。我们对BB84协议的安全性做一个简单的分析:如果Eve在量子信道中旁路窃听,由于量子不可克隆,因此Eve无法复制出一份相同的量子比特副本;如果他在量子信道中直接测量光量子,由于Eve不知正确的测量基,他也会随机选择,有50%的概率选择正确,50%的概率选择错误。若选择的测量基错误,有上述的有趣的现象可知,测量结果错误,同时光量子的偏振态发生改变。当协议的步骤由 (2) 执行到 (6) 时,Alice将发现到量子信道的窃听,那么她将终止这一过程。如果在经典信道进行窃听呢?实际上也是无效的。即使Eve知道了测量基信息(步骤 (3)),然而由于量子不可克隆,无法得到正确的量子比特串副本。由以上分析可知,BB84协议基于量子不可克隆等原理,实现安全的密钥分配过程。3.4 量子隐形传态基本原理量子隐形传态( Quantum Teleportation) 又称量子远程传态或量子离物传态,是利用量子纠缠的不确定特性,将某个量子的未知量子态通过EPR对(纠缠量子对)的一个量子传送到另一个地方(即EPR对中另一个量子),而原来的量子仍留在原处。如图所示6所示,Alice想和Bob通信,具体流程如下:(1) 制备两个有纠缠的EPR量子(粒子)对,然后将其分开,Alice和Bob各持一个,分别是粒子1和粒子2。(2) Alice粒子1和某一个未知量子态的粒子3进行联合测量,然后将测量结果通过经典信道传送给接Bob。此时,神奇的事情发生了:Bob持有的粒子2将随着Alice测量同时发生改变,由一量子态变成新的量子态。这是由于量子纠缠的作用,粒子2和粒子1之间如同有一根无形。(3) Bob根据接收的息和拥有粒子2做相应幺正变换(一种量子计算变换),根据这些信息,可以重构出粒子3的全貌。图 6 量子隐形传态原理图3.5 理论与试验研究进展1993年,学术界给出了一种利用量子技术传输信息的实际方案,4年后量子通信技术在奥地利科学家的实验室中正式完成了实验验证。经过十多年的发展,量子通信先后实现了信息传递从600m(2007年)到通信距离144km(2012年)的巨大跨越,标志量子通信从理论阶段走向实用化阶段。下面从量子密钥分配和量子隐形传态两个主要研究领域进行介绍。(1) 量子密钥分配国外:1993年,英国研究小组首先在光纤中,使用相位编码的方法实现了BB84方案,通信传输距离达10km;1995年,该小组将距离提升到30km。瑞士于1993年用偏振光子实现了BB84方案,光子波长1.3mm,传输距离1.1km,误码率0.54%;1995年,将距离提升到23km,误码率为3.4%;2002年,传输距离达到67km。2000年,美国实现自由空间量子密钥分配通信,传输距离达1.6km。2003年,欧洲研究小组实现自由空间中23km的通信。2008年10月,欧盟开通了8个用户的量子密码网络;同月,日本将量子通信速率提高100倍,20km时通信速率达到1.02Mbit/s,100km时通信速率达到10.1kbit/s。目前,国外光纤量子密钥分配的通信距离达300km,量子密钥协商速率最高试验记录在50km光纤传输中超过1Mb/s[2]。图7 北京—天津量子密码实验[1]国内:2004年,郭光灿团队完成了途径北京望京—河北香河—天津宝坻的量子密钥分配,距离125km。2008年,潘建伟团队建成基于商用光纤和诱骗态相位编码的3节点量子通信网络,节点间距离达20km,能实现实时网络通话和3方通话。2009年,郭光灿团队建成世界上第一个“量子政务网”。同年9月,中国科技大学建成世界上第一个5节点全通型量子通信网络,实现实时语音量子密码通信。2011年5月,王建宇团队研发出兼容经典激光通信的“星地量子通信系统”,实现了星地之间同时进行量子通信和经典激光通信。2012年2月17日,合肥市城域量子通信实验示范网建成并进入试运行阶段,具有46个节点,光纤长度1700km,通过6个接入交换和集控站,连接40组“量子电话”用户和16组“量子视频”用户。2013年5月,中科院在国际上首次成功实现星地量子密钥分发的全方位地面试验。同年11月,济南量子保密通信试验网建成,包括三个集控站、50个用户节点[2]。在2016年8月16日,我国发射首颗“墨子号”量子卫星,这标志着我国在全球已构建出首个天地一体化广域量子通信网络雏形,为未来实现覆盖全球的量子保密通信网络迈出了新的一步。(2) 量子隐形传态1997 年,奥地利Zeilinger小组首次成功实现了量子隐形传态通信; 1998 年初,意大利Rome 小组实现将量子态从纠缠光子对中的一个光子传递到另一个光子上的方案; 同年底,美国CIT 团队实现了连续变量(连续相干光场) 的量子隐形传态,美国学者用核磁共振( NMR) 的方法,实现了核自旋量子态的隐形传送。2001 年,美国Shih Y H 团队在脉冲参量下转换中,利用非线性方法实施Bell 基的测量,完成量子隐形传态。2002年,澳大利亚学者将信息编码的激光束进行了“远距传物”。1997 年,我国潘建伟和荷兰学者波密斯特等人合作,首次实现了未知量子态的远程传输;2004 年,潘建伟小组在国际上首次实现五光子纠缠和终端开放的量子态隐形传输,此后又首次实现6光子、8光子纠缠态; 2011 年,在国际上首次成功实现了百公里量级的自由空间量子隐形传态和纠缠分发,解决了通讯卫星的远距离信息传输问题。2012年9月,奥地利、加拿大、德国和挪威研究人员,实现了长达143公里的“隐形传输”[2]。3.6 产业化进展与面临的挑战量子通信的战略意义吸引了西方各国科研机构的关注,IBM、NIST、Battelle、NTT、东芝、西门子等著名公司和机构一直密切关注其发展并投资相关研究。英国政府在2013年发布了为期5年的量子信息技术专项,投入2.7亿英镑用于量子通信和量子计算等方面的研究成果转化,促进新应用和新产业的形成。国外成立了多个专门从事量子通信技术成果转化和商业推广的实体公司。例如美国的MagiQ公司和瑞士日内瓦大学成立的idQuantique公司等,能够提供QKD量子通信的商用化器件、系统和解决方案。法国电信研究院成立的SeQureNet公司从事连续变量量子密钥分发产品的开发。美国洛斯阿拉莫斯国家实验室成立了Qubittek公司,主攻智能电网安全通信领域[4]。国内开展量子通信相关研究的代表性机构包括中国科学技术大学、中国科学院微系统所和技术物理所、清华大学、山西大学和南京大学等。以中国科学技术大学相关研究团队为核心发起成立了科大国盾量子、安徽问天量子和山东量子等产业化实体,进行量子通信前沿研究成果向应用技术和用化产品的转化,国家对量子通信领域持续的专项投入和政策扶持为其发展提供了强劲动力。(a) 量子密钥分发机 (b) 量子安全加密手机图 8 科大国盾量子公司的产品相比其他量子信息技术,QKD无论在理论中、试验中还是实际应用中,都已经取得了一些重要的进展。然而,大规模的应用和推广仍然面临一系列的困难和挑战[4],主要表现以下四个方面:(1) 初期市场规模和用户群体十分有限。量子通信目前主要面向的是有高安全性要求的特定应用场景,如银行、政务和国防等通信网络环境。传统通信业界对于量子通信的应用目前仍然持观望态度,参与度和热情较低。(2) 产业化供应链的建立尚需时日。QKD 系统采用的单光子源和光子探测器等核心器件与传统光学器件完全不同,生产将面临量子设备特有的器件参数、制造工艺等新的挑战,因此需要一段时间的发展与适应。(3) 行业标准与规范研尚不完善。对于任何高新技术而言,测试认证和标准化是商用化推广的必备条件,而新型测试认证技术的开发通常是非常复杂、昂贵和耗时的。目前测评技术和标准化研究已经成为量子通信实用化的一大瓶颈。(4) 基础设施建立目前难以实现。QKD 系统前期需要更多的投入与改造,将原有传统的通信系统升级量子通信系统,将消耗巨额的经济成本。QKD 系统的量子态信号和传统强光信号的混传,所以大规模量子通信组网需要额外的光纤资源进行支持,将对量子通信系统的应用造成限制。此外,量子通信无法共享传统光通信设备等基础设备,需要进行全新部署, 造成前期大量软硬件升级改造的高投入要求。4 量子计算量子计算利用量子态的叠加性和纠缠性信息的运算和处理,其最显著优势在于“操作的并行性”,即个叠加态的量子信息进行一次变换,相当于对个量子信息同时进行操作。在本章中,我们将首先介绍三种典型的量子算法的原理,进而介绍量子机器学习与深度学习算法相关知识,最后介绍量子计算机的基本原理和量子编码相关知识。4.1 典型量子算法量子算法是量子计算的灵魂。可以说,没有量子算法就无法实现量子计算的并行性。因此,寻找和设计量子算法是量子计算的关键。在量子算法的研究中,出现了三个里程碑式的重要算法:Shor算法,Grove算法和HHL算法,它们都具有较高的理论意义和应用价值。(1) Shor算法1994年,应用数学家Shor 提出了一个实用的量子算法,通常称为Shor算法[12]。它的出现使得大整数分解问题在量子计算机中在多项式时间内解决成为可能,它计算复杂度仅为 。显然,相比经典算法,Shor算法相当于进行了指数加速。算法主要思想是将整数质因子分解问题转化为求解量子傅里叶变换的周期,将多个输入制备为量子态叠加,进行并行处理和操作,从而到到了量子加速的目的。在实际应用中, 2001年,IBM公司的研究小组首次在开发的核磁共振(Nuclear magnetic resonance,NMR)量子计算机中使用Shor算法,成功将15分解成3×5,这一成果引起业界广泛的关注和讨论。理论上,一旦更多量子比特的量子计算机研究成功,对于1000位大整数,采用 Shor算法可以在不到1秒内即可进行素因子分解,而采用传统计算机分解需要年(而宇宙的年龄为年)。由此可见在量子计算机面前,现有的公开密钥 RSA体系不再安全。(2) Grove算法搜索问题指的是从个未分类的元素中寻找出某个特定的元素。对于该问题,经典算法逐个地进行搜寻,直到找到满足的元素为止,平均需要,时间复杂度为。由于很多问题都可以看作一个搜索问题,如寻找对称密码(DES/AES等)的正确密钥,搜索方程的最佳参数等,因此Grover算法的用途十分广泛。(3) HHL算法由于机器学习算法中的某些求参过程同样可看作是该类问题,因此学者们已经将 HHL 算法应用到机器学习领域,比如 K-means 聚类,支持向量机,数据拟合等算法中,从而达到加速的目的。4.2 量子机器学习与深度学习算法在量子算法中,有一类算法是应用在机器学习或深度学习领域。由于近年来人工智能和机器学习/深度学习的研究热潮,同样带动了量子机器学习/深度学习的发展和研究。众所周知,传统的机器学习/深度学习算法仍然面临计算瓶颈的挑战。然而,若充分利用量子计算的并行性,则可以进一步优化传统机器学习算法的效率,突破计算瓶颈,加速人工智能进程。量子机器学习的研究可追溯到1995年,Kak最先提出量子神经计算的概念[15]。相继学者们提出了量子聚类、量子深度学习和量子向量机等算法。2015年,潘建伟教授团队在小型光量子计算机上,首次实现了量子机器学习算法[16]。从经典—量子的二元概念出发可以将机器学习问题按照数据和算法类型的不同分为4类,如表1所示[9]。表1 机器学习分类量子机器学习的训练数据必须以某种可以为量子计算机识别的格式载入(即制备量子叠加态),经过量子机器学习算法处理以后形成输出,而此时的输出结果是量子叠加态的,需要经过测量得到最终结果[9],该流程如图9所示。图9量子机器学习的基本流程表2概述了目前文献中见到的一些典型量子机器学习算法,及其所需资源和性能改善特征[9]。表2 主要量子机器学习算法如前所述,量子机器学习算法相比经典算法,有以下显著优势:(1) 量子加速。由于量子态的可叠加性,相比传统计算机,量子算法可以在不增加硬件的基础上实现并行计算,在此基础上利用Shor算法、HHL算法和Grover搜索等算法,可实现相对于完成同样功能的经典算法的二次甚至指数加速[4]。(2) 节省内存空间。将经典数据通过制备量子态叠加编码为量子数据,并利用量子并行性进行存储,可实现指数级地节省存储硬件需求。4.3 量子计算机所谓量子计算机,它是指具有量子计算能力的物理设备。为什么要出现这种设备呢?主要有两个原因:(1) 外部原因:摩尔定律失效。根据摩尔定律,集成电路上可容纳的晶体管数目每隔24个月增加一倍,性能也相应增加一倍。然而,一方面随着芯片元件集成度的提高会导致单位体积内散热增加,由于材料散热速度有限,就会出现计算速度上限,产生“热耗效应”。另一方面元件尺寸的不断缩小,在纳米甚至埃尺度下经典世界的物理规律不再适用,出现“尺寸效应”。(2) 内部原因:量子计算机的强并行性。这是量子计算机相比传统计算机的显著优势,量子计算机和量子算法相互结合,可以将计算效率进行二倍加速甚至指数加速,例如传统计算机计算需要1年的任务,使用量子计算机可能需要不足1秒的时间。不同于传统计算机,量子计算机用来存储数据的对象是量子比特;不同于传统计算机,量子计算机用使用量子逻辑门进行信息操作,如对单个量子操作的逻辑门:泡利-X门,泡利-Y门,泡利-Z门和Hadamard门等;对两个量子操作的双量子逻辑门:受控非门CNOT,受控互换门SWAP等等。这些量子的逻辑门的操作可以看做一种矩阵变换,即乘以幺正矩阵(可看做正交矩阵从实数域推广到复数域)的过程。图10以Hadamard门为例,表述了对量子态的形象操作过程。图 10 量子门的操作示意图由图可知,Hadamard门可以将一个量子态变成两个量子态的叠加状态。形象地说,猫生的状态通过Hadamard门转换成生和死的叠加态(概率为状态幅度的平方,概率各为50%)。这种性质十分有用,是实现并行计算基础,可以将N个输入数据转换成一个叠加的量子态,一次量子计算操作,相当于进行了N个数据操作,即实现了N次的并行,后文提到的量子算法正是利用这些量子逻辑门的变换特性。其他量子逻辑门的幺正矩阵有所不同,但操作也类似,这里不做赘述。此外,量子计算机用使用的量子逻辑门是可逆的;而传统计算机的逻辑门一般是不可逆的。前者操作后产生的能量耗散,而后者进行幺正矩阵变换可实现可逆计算,它几乎不会产生额外的热量,从而解决能耗上的问题。与传统的计算机相同的是,量子计算机的理论模型仍然是图灵机。不同的是,量子计算目前并没有操作系统,代替用量子算法进行控制,这决定了目前的量子计算机并不是通用的计算机,而属于某种量子算法的专用计算机。量子计算机和传统计算机的比较结果如表3所示。表3 量子计算机VS 传统计算机量子计算机的基本原理如图11所示。它主要的过程如下:(1) 选择合适的量子算法,将待解决问题编程为适应量子计算的问题。(2) 将输入的经典数据制备为量子叠加态。(3) 在量子计算机中,通过量子算法的操作步骤,将输入的量子态进行多次幺正操作,最终得到量子末态。(4) 对量子末态进行特殊的测量,得到经典的输出结果。图 11 量子计算机工作原理流程图[20]迄今为止,科学家用来尝试实现量子计算机的硬件系统有许多种,包括液态核磁共振、离子阱、线性光学、超导、半导体量子点等。其中,超导和半导体量子点由于可集乘度高,容错性好等优点,目前被认为是实现量子计算机的两种可能方案[1]。最近,IBM宣布的研制50比特和谷歌研制的72比特量子计算机都是基于低温超导系统的方案。4.4 量子编码理论上,需要极少的量子比特便可在量子计算机中实现复杂的量子计算。然而现实中,一方面量子信道上和量子设备中总存在各种噪声,如量子比特的热量等;另一方面量子的“退相干性”[5]。在量子计算,需要使得所有的量子位都持续处于一种“相干态”,然而在现实中很难做到,目前“相干态”仅能维持几百毫秒,随着量子比特的数量以及与环境相互作用的可能性增加,这个挑战将变得越来越大。这两个因素都能导致量子比特的状态翻转或随机化,导致从而导致量子计算失败。量子编码的目的正是为了纠正或防止这些量子比特发生的错误。虽然量子编码和经典编码的基本想法类似,即要以合适的方式引进信息冗余,以提高信息的抗干扰能力,但量子码可不是经典码的简单推广。在在量子情况下,编码存在着一些基本困难,表现在如下3方面[7]:(1) 经典编码中,为引入信息冗余,需要将一个比特复制多个比特。但在量子力学中,量子态不可克隆。(2) 经典编码在纠错时,需要进行测量,以确定错误图样。在量子情况下,测量会引起态坍缩,从而破坏量子相干性。(3) 经典码中的错误只有一种,即0,1之间的跃迁。而量子错误的自由度要大得多,对于一个确定的输入态,其输出态可以是二维空间中的任意态。量子编码按其原理,可分为量子纠错码、量子防错码、和量子避错码,其中量子纠错码是经典纠错码的量子推广。在各种量子纠错方案,实际上都假设了发生错误的量子比特数是给定的,例如常见的有纠一位错的量子码。典型的方案是Shor首次给出了一个新颖的纠错编码技术[17],利用9个量子比特来编码一个量子比特信息,可以纠正一位比特错误。5 后量子密码量子计算的快速发展,对当前广泛成熟使用的经典密码算法,特别是公钥密码算法(如RSA和ECC等)产生了极大的威胁和挑战,具体包括[11]:(1) 所有基于整数分解和离散对数上的非对称密码体制都是不安全的。如RSA、EEC公钥密码算法,它们在多项式时间内可以破解。那么当前主流的公钥加密、数字签名算法将不再安全。(2) 分组密码和序列密码的比特安全性将降低为原来密钥长度的1/2。为了抵抗这种攻击,对称加密算法通过增加密钥长度(2倍密钥长度)即可。(3) Hash 算法比特安全性将降低为原来的2/3。为了抵抗量子计算的攻击,人们提出抗量子密码体制,也称为后量子密码体制(Post-Quantum Cryptography),即在量子计算机出现之后仍然安全的密码体制。它主要包含基于 Hash的密码体制、基于编码的密码体制、基于格的密码体制和基于多变量的密码体制。事实上,从上述的影响结果来看,目前量子计算仅对公钥密码影响最大,而对分组密码、序列密码、哈希算法相对影响较小,因此可以看作它们也具有一定的抗量子计算攻击的特性。表4 抗量子密码体制及其具体算法目前,美国和欧洲正在大力对其投入研究,并快速推动其实用化。2015 年8月,美国国家安全局 NSA 宣布将当前美国政府所使用的“密码算法 B 套件”进行安全性升级,用于2015年至抗量子密码算法标准正式发布的空窗期,并最终过渡到抗量子密码算法。2016 年秋到2017年11月,NIST面向全球征集抗量子密码算法,然后进行 3~5年的密码分析工作,预计在 2022年到2023年,完成抗量子密码标准算法起草并发布。6 总结量子信息技术主要包含量子通信和量子计算两个分支,本文分别介绍了这两个分支技术。从理论角度的看,可用数学证明QKD能达到“绝对安全”。然而实践中由于设备和技术的缺陷,QKD不可能达到理想的“绝对安全”,离完全实用化进程还有很长的路需要探索。对此持既批判吹捧量子密码替代传统密码的极端观点,也看好未来量子密码的发展前景。从目前技术成熟度来看,量子密钥分配 ( QKD ) 是最为成熟的量子技术,它结合对称加密技术形成安全的保密通信系统,目前已经实现了商用化,但主要面向政务、国防、金融等安全性要求很高的特定应用场景,离全面推广和实用化还有很长的距离。从工业界研究热度来看,多数IT和互联网公司致力于研究量子计算,提出“量子计算+人工智能”,以解决计算力瓶颈问题。它具有广泛的应用价值,值得持续关注。从影响程度来看,量子计算的发展对以RSA和ECC为代表公钥密码学产生了巨大威胁,但对对称加密算法(如AES)的威胁较少。可预见将来,即使量子计算机被研发出来,传统密码也不会完全被替代,而将出现传统密码与量子密码(QKD)相互促进、共同繁荣的景象。从我国发展状况来看,量子通信技术发展速度迅猛,在理论研究和实验技术上均取得了许多重大突破,成果卓越。然而,量子算法、量子计算机的研究与欧美发达国家相比,仍有很大的差距,相关研究仍需努力。参考文献[1] 郭光灿,张昊,王琴. 量子信息技术发展概况[J]. 南京邮电大学学报(自然科学版), 2017, 37(3):1-14.[2] 徐兵杰,刘文林,毛钧庆,等. 量子通信技术发展现状及面临的问题研究[J]. 通信技术, 2014(5):463-468.[3] 王矿岩. 量子通信技术发展现状及面临的问题研究[J]. 通讯世界, 2017(1):110-111.[4] 赖俊森,吴冰冰,汤瑞,等. 量子通信应用现状及发展分析[J]. 电信科学, 2016, 32(3):123-129.[5] Bennett C H, Brassard G. Quantum cryptography: Public key distribution and coin tossing[J]. Theoretical Computer Science, 2014, 560:7-11.[6] 陈锦俊, 吴令安, 范桁. 量子保密通讯及经典密码[J]. 物理, 2017, 46(3):137-144.[7] 段路明, 郭光灿. 量子信息讲座 第三讲 量子编码[J]. 物理, 1998(8):496-499.[8] 韩永建. 量子计算原理及研究进展[J]. 科技导报, 2017, 35(23):70-75.[9] 陆思聪, 郑昱, 王晓霆,等. 量子机器学习[J]. 控制理论与应用, 2017(11).[10] 黄一鸣, 雷航, 李晓瑜. 量子机器学习算法综述[J]. 计算机学报, 2018(1).[11] 刘文瑞. 抗量子计算攻击密码体制发展分析[J]. 通信技术, 2017, 50(5): 1054-1059.[12] Shor P W. Algorithms for quantum computation: Discrete logarithms and factoring [C]// Proceedings of the 35th Annual IEEE Symposium on the Foundations of Computer Science. Piscataway, NJ: IEEE, 1994:124-134.[13] Grover L K. A fast quantum mechanical algorithm for database search[C]// Twenty-Eighth ACM Symposium on Theory of Computing. ACM, 1996:212-219.[14] Harrow A W, Hassidim A, Lloyd S. Quantum algorithm for linear systems of equations. Phys Rev Lett, 2009, 103:150502.[15] Kak S. On quantum neural computing[J]. Systems Control & Information, 1995, 52(3-4):143-160.[16] Su Z E, Wang X L, Lu C Y, et al. Entanglement-based machine learning on aquantum computer[J]. Physical Review Letters, 2015, 114(11):110504.[17] Shor P W. Scheme for reducing decoherence in quantum computer memory[J]. Physical Review A, 1995, 52(4):R2493.[18] 孙晓明. 量子计算若干前沿问题综述[J]. 中国科学:信息科学, 2016, 46(8):982.[19] 赵红敏. 量子纠错与经典纠错的比较[J]. 河北科技大学学报, 2008, 29(3):211-213.[20] Makarov V. Quantum cryptography and quantum cryptanalysis [D]. 2007.[1] 这里“不可分割”的含义应该这样理解,比如不可能分割出0.5个原子。[2]如图4所示,测量基对应为两种不同的偏振片,每个偏振片有两个正交的方向。当偏振片方向可以通过偏振片时,测量结果正确。当偏振片方向不是偏振片的方向,无法通过偏振片,测量结果错误。[3]由2.3节可知,20个量子比特可同时存储100万个号码。[4] 表示计算复杂度从降为。[5]通俗地讲,两束频率完全相同的光源产生相干的量子,它们是相互关联的,即对一个量子进行处理,影响就会立即传送到另一个量子,它们是量子并行处理的基础。但由于外部环境的原因,量子由“相干态”退化为“非相干态”,操作一个量子不会影响另一个量子,它们之间是独立的(类似经典计算机的比特),这就是所谓的“退相干性”。来自微信
2025年08月07日
3 阅读
0 评论
0 点赞
2025-08-07
一份数学小白也能读懂的「马尔可夫链蒙特卡洛方法」入门指南
机器之心2017年12月24日12:46作者:Ben Shaver机器之心编译参与:黄小天、刘晓坤在众多经典的贝叶斯方法中,马尔可夫链蒙特卡洛(MCMC)由于包含大量数学知识,且计算量很大,而显得格外特别。本文反其道而行之,试图通过通俗易懂且不包含数学语言的方法,帮助读者对 MCMC 有一个直观的理解,使得毫无数学基础的人搞明白 MCMC。在我们中的很多人看来,贝叶斯统计学家不是巫术师,就是完全主观的胡说八道者。在贝叶斯经典方法中,马尔可夫链蒙特卡洛(Markov chain Monte Carlo/MCMC)尤其神秘,其中数学很多,计算量很大,但其背后原理与数据科学有诸多相似之处,并可阐释清楚,使得毫无数学基础的人搞明白 MCMC。这正是本文的目标。那么,到底什么是 MCMC 方法?一言以蔽之:MCMC 通过在概率空间中随机采样以近似兴趣参数(parameter of interest)的后验分布。我将在本文中做出简短明了的解释,并且不借助任何数学知识。首先,解释重要的术语。「兴趣参数」(parameter of interest)可以总结我们感兴趣现象的一些数字。我们通常使用统计学评估参数,比如,如果想要了解成年人的身高,我们的兴趣参数可以是精确到英寸的平均身高。「分布」是参数的每个可能值、以及我们有多大可能观察每个参数的数学表征,其最著名的实例是钟形曲线:在贝叶斯统计学中,分布还有另外一种解释。贝叶斯不是仅仅表征一个参数值以及每个参数有多大可能是真值,而是把分布看作是我们对参数的「信念」。因此,钟形曲线表明我们非常确定参数值相当接近于零,但是我们认为在一定程度上真值高于或低于该值的可能性是相等的。事实上,人的身高确实遵从一个正态曲线,因此我们假定平均身高的真值符合钟形曲线,如下所示:很明显,上图表征是巨人的身高分布,因为据图可知,最有可能的平均身高是 6'2"(但他们也并非超级自信)。让我们假设其中某个人后来收集到一些数据,并且观察了身高在 5"和 6"之间的一些人。我们可以用另一条正态曲线表征下面的数据,该曲线表明了哪些平均身高值能最好地解释这些数据:在贝叶斯统计中,表征我们对参数信念的分布被称为「先验分布」,因为它在我们看到任何数据之前捕捉到了我们的信念。「可能性分布」(likelihood distribution)通过表征一系列参数值以及伴随的每个参数值解释观察数据的可能性,以总结数据之中的信息。评估最大化可能性分布的参数值只是回答这一问题:什么参数值会使我们更可能观察到已经观察过的数据?如果没有先验信念,我们可能无法对此作出评估。但是,贝叶斯分析的关键是结合先验与可能性分布以确定后验分布。它可以告诉我们哪个参数值最大化了观察到已观察过的特定数据的概率,并把先验信念考虑在内。在我们的实例中,后验分布如下所示:如上所示,红线表征后验分布。你可以将其看作先验和可能性分布的一种平均值。由于先验分布较小且更加分散,它表征了一组关于平均身高真值的「不太确定」的信念。同时,可能性分布在相对较窄的范围内总结数据,因此它表征了对真参数值的「更确定」的猜测。当先验与可能性分布结合在一起,数据(由可能性分布表征)主导了假定存在于这些巨人之中的个体的先验弱信念。尽管该个体依然认为平均身高比数据告诉他的稍高一些,但是他非常可能被数据说服。在两条钟形曲线的情况下,求解后验分布非常容易。有一个结合了两者的简单等式。但是如果我们的先验和可能性分布表现很差呢?有时使用非简化的形状建模数据或先验信念时是最精确的。如果可能性分布需要带有两个峰值的分布才能得到最好地表征呢?并且出于某些原因我们想要解释一些非常奇怪的先验分布?通过手动绘制一个丑陋的先验分布,我已可视化了该情景,如下所示:可视化由 Matplotlib 渲染,并使用 MS Paint 做了改善如前所述,存在一些后验分布,它给出了每个参数值的可能性分布。但是很难得到完整的分布,也无法解析地求解。这就是使用 MCMC 方法的时候了。MCMC 允许我们在无法直接计算的情况下评估后验分布的形状。为了理解其工作原理,我将首先介绍蒙特卡洛模拟(Monte Carlo simulation),接着讨论马尔可夫链。蒙特卡洛模拟只是一种通过不断地生成随机数来评估固定参数的方法。通过生成随机数并对其做一些计算,蒙特卡洛模拟给出了一个参数的近似值(其中直接计算是不可能的或者计算量过大)。假设我们想评估下图中的圆圈面积:由于圆在边长为 10 英寸的正方形之内,所以通过简单计算可知其面积为 78.5 平方英寸。但是,如果我们随机地在正方形之内放置 20 个点,接着我们计算点落在圆内的比例,并乘以正方形的面积,所得结果非常近似于圆圈面积。由于 15 个点落在了圆内,那么圆的面积可以近似地为 75 平方英寸,对于只有 20 个随机点的蒙特卡洛模拟来说,结果并不差。现在,假设我们想要计算下图中由蝙蝠侠方程(Batman Equation)绘制的图形的面积:我们从来没有学过一个方程可以求这样的面积。不管怎样,通过随机地放入随机点,蒙特卡洛模拟可以相当容易地为该面积提供一个近似值。蒙特卡洛模拟不只用于估算复杂形状的面积。通过生成大量随机数字,它还可用于建模非常复杂的过程。实际上,蒙特卡洛模拟还可以预测天气,或者评估选举获胜的概率。理解 MCMC 方法的第二个要素是马尔科夫链(Markov chains)。马尔科夫链由存在概率相关性的事件的序列构成。每个事件源于一个结果集合,根据一个固定的概率集合,每个结果决定了下一个将出现的结果。马尔科夫链的一个重要特征是「无记忆性」:可能需要用于预测下一个时间的一切都已经包含在当前的状态中,从事件的历史中得不到任何新信息。例如 Chutes and Ladders 这个游戏就展示了这种无记忆性,或者说马尔科夫性,但在现实世界中很少事物是这种性质的。尽管如此,马尔科夫链也是理解现实世界的强大工具。在十九世纪,人们观察到钟形曲线在自然中是一种很常见的模式。(我们注意到,例如,人类的身高服从钟形曲线分布。)Galton Boards 曾通过将弹珠坠落并通过布满木钉的板模拟了重复随机事件的平均值,在弹珠的最终数量分布中重现了钟形曲线:俄罗斯数学家和神学家 Pavel Nekrasov 认为钟形曲线,或者更一般的说,大数规律只不过是小孩子的游戏和普通的谜题中的伪假象,其中每个事件之间都是完全独立的。他认为现实世界中的互相依赖的事件,例如人类行为,并不遵循漂亮的数学模式或分布。Andrey Markov(马尔科夫链正是以他的名字命名)试图证明非独立的事件可能也遵循特定的模式。他的其中一个最著名的例子是从一份俄罗斯诗歌作品中数出几千个两字符对(two-character pairs)。他使用这些两字符对计算了每个字符的条件概率。即,给定一个确定的上述字母或空白,关于下一个字母将是 A、T 或者空白等,存在一个确定的概率。通过这些概率,Markov 可以模拟一个任意的长字符序列。这就是马尔科夫链。虽然早先的几个字符很大程度上依赖于初始字符的选择,Markov 表明在长字符序列中,字符的分布会出现特定的模式。因此,即使是互相依赖的事件,如果服从固定的概率分布,将遵循平均水平的模式。举一个更有意义的例子,假设你住在一个有 5 个房间的房子里,里面有一个卧室、浴室、客厅、厨房、饭厅。然后我们收集一些数据,假定只需要当前你所处的房间和相应的时间就可以预测下一个你所处的房间的概率。例如,如果你在厨房,你有 30% 的概率会留在厨房,有 30% 的概率会走到饭厅,有 20% 的概率会走到客厅,有 10% 的概率会走到浴室,以及有 10% 的概率会走到卧室。使用每个房间的概率集合,我们可以构建一个关于你接下来要去的房间的预测链。如果想预测一个人处于厨房之后所在的房间,基于几个状态而做出预测可能有效。但由于我们的预测仅仅基于一个人在房子中的单次观察,可以合理地认为预测结果是不够好的。例如,如果一个人从卧室走到浴室,相比从厨房走到浴室的情况,他更可能会返回原来的房间。因此,马尔科夫链并不真正适用于现实世界。然而,通过迭代运行马尔科夫链数千次,确实能给出关于你接下来可能所处的房间的长期预测。更重要的是,这个预测并不受这个人起始所处的房间的影响。对此可以直观地理解为:在模拟和描述长期过程(或普遍情况)一个人所处房间的概率时,时间因素是不重要的。因此,如果我们理解了控制行为的概率,就可以使用马尔科夫链计算变化的长期趋势。希望通过介绍一些蒙特卡洛模拟和马尔科夫链,可以使你对 MCMC 方法的零数学解释有更直观的理解。回到原来的问题,即评估平均身高的后验分布:这个平均身高的后验分布的实例没有基于真实数据。我们知道后验分布在某种程度上处于先验分布和可能性分布的范围内,但无论如何都无法直接计算。使用 MCMC 方法,我们可以有效地从后验分布中提取样本,然后计算统计特征,例如提取样本的平均值。首先,MCMC 方法选择一个随机参数值。模拟过程中会持续生成随机的值(即蒙特卡洛部分),但服从某些能生成更好参数值的规则。即对于一对参数值,可以通过给定先验信度计算每个值解释数据的有效性,从而确定哪个值更好。我们会将更好的参数值以及由这个值的解释数据有效性决定的特定概率添加到参数值的链中(即马尔科夫链部分)。为了可视化地解释上述过程,首先强调一下,一个分布的特定值的高度代表的是观察到该值的概率。因此,参数值(x 轴)对应的概率(y 轴)可能或高或低。对于单个参数,MCMC 方法会从随机在 x 轴上采样开始。红点表征随机参数采样。由于随机采样服从固定的概率,它们倾向于经过一段时间后收敛于参数的高概率区域:蓝点表示当采样收敛之后,经过任意时间的随机采样。注意:垂直堆叠这些点仅仅是为了说明目的。收敛出现之后,MCMC 采样会得到作为后验分布样本的一系列点。用这些点画直方图,然后你可以计算任何感兴趣的统计特征:通过 MCMC 模拟生成的样本集合计算的任何统计特征,都是对真实后验分布的统计特征的最佳近似。MCMC 方法也可以用于评估多于一个参数的后验分布(例如,人类身高和体重)。对于 n 个参数,在 n 维空间中存在高概率的区域,其中特定的参数值集合可以更有效地解释数据。因此,我认为 MCMC 方法的本质,就是在一个概率空间中进行随机采样以近似后验分布。原文链接:https://towardsdatascience.com/a-zero-math-introduction-to-markov-chain-monte-carlo-methods-dcba889e0c50机器之心推出「Synced Machine Intelligence Awards」2017,希望通过四大奖项记录这一年人工智能的发展与进步,传递行业启示性价值。来自微信
2025年08月07日
23 阅读
0 评论
0 点赞
2025-07-09
什么选择物理不可克隆函数(PUF)?
什么选择物理不可克隆函数(PUF)?20年前,数字安全只在银行卡或支付终端等专用电子设备上实现。今天,每个人都在使用以 "https://"标志的安全互联网连接到银行,我们都希望我们用智能手机操作的信息能够得到保护。加密或数字签名等加密技术已经被部署以满足这些要求。因此,越来越多的ASIC、微控制器和SoC都嵌入了硬件加密加速器或软件加密库。物联网(IoT)的兴起将加快对加密的需求。现在就让我们讨论密码学的普及情况。因为在现代密码学中算法都是公开和标准化的,使得加密技术的普及成为可能。公开算法的直接后果是密钥成为最有价值的资产,因此它们必须得到强有力的保护。历史上,第一个被设计用来保护密钥的集成电路(IC)是智能卡。随着人们对数字安全需求的日益增长,加密已经在越来越多的芯片(如通用微控制器)中得到应用,但密钥的保护一直是一个挑战。今天我们可以看到有以下几种方案:l未未实施特定保护。这种情况不应该发生,但不幸的是,这种情况还是会发生!l内部逻辑保护,如TrustZone™. 密钥可以防止逻辑攻击(如恶意软件),但不能防止物理攻击。l电路内逻辑和物理保护。l密钥存储在位于主处理器外部独立的被称为“安全元件”专用集成电路中。在集成电路(IC)中,密钥保护方案的选择取决于许多因素:lIC制造技术的可用性:非易失性存储器如EEPROM或Flash的存在直接影响到密钥的物理保护方式l市场要求:在集成电路中实现的安全级别取决于其最终用途lIC设计师专有技术:硬件保护单元的设计仍然是专家的事l上市时间l开发成本l单位成本(额外的芯片面积)人们可能认为,在大多数情况下,物理保护是没有必要的。但事实已不再是这样,因为与失效分析技术相关的自动反向工程已经使物理攻击变得可负担得起[1]。传统的安全密钥存储的设计方式包括将密钥存储在非易失性存储器(OTP、EEPROM或Flash)中,并实现布局反击措施或混淆,如芯片屏蔽、总线加扰或伪过孔等[2]。一个更稳健的解决方案依赖于通过主密钥对存储器进行加密,但随后的挑战是对主密钥本身的保护,我们又回到了最初的挑战。以这种方法是有效的并且已通过通用标准之类的认证。典型的如EAL4 +认证(或更高版本AVA_VAN.5),用来对IC的物理攻击抵抗力进行评级。这个评级是基于成功进行攻击的难度来判定,主要基于以下要求:l专业水平l时间l设备成本一般来说,如果上述标准的综合水平与攻击者所能获得的利益相比足够高,那么该实现就被认为是有效的,尽管事实上,只要有足够的时间、专业知识和预算,仍然有可能检索到密钥。上面列出的混淆方法的主要缺点是它们同样需要高度的专业知识,而只有少数IC设计人员才能掌握。这些解决方案无法轻易获得,因此在许多情况下并不适用。我们将看到,以IP形式交付的物理不可克隆功能(PUF)即使对非安全专家来说,也能实现最高级别的安全性。PUF和传统技术之间的一个基本区别是PUF本质上不受逆向工程技术的影响。PUF解决的另一个挑战是需要在密钥注入IC之前保护它们:传统方法需要在制造过程的某些步骤中注入密钥,这可能发生在晶圆测试(CP)、IC终测(FT)或PCB制造过程中。但无论选择什么步骤,秘钥必须通过测试或制造设备注入到IC中,因此安全的周边环境是必需的。安全地注入密钥是一个像给银行卡加密操作的过程,但对于医疗、工业或消费品来说,这可能是负担不起的。通常情况下,制造工作由位于偏远地区的分包商负责,而且要求分包商提供安全设施是具有挑战性的,因此必须投资访问控制设备、编写程序和定期进行审计。PUF用例私钥和秘钥存储如上所述,密钥存储通常是主要问题。 PUF生成的密钥用于片上非易失性存储器(例如EEPROM,Flash 或OTP)中建立安全库。 图1使用PUF实施高度安全的密钥库 软件IP保护一些用于医学诊断或生命体征测量的算法是多年积累和研发的结果。因此,它们是极有价值的资产,应该得到强有力的保护。而PUF生成的密钥可以通过加密保护这些软件IP。 图2基于PUF的软件IP保护设备认证身份验证是连接设备的首要安全要求之一,即确保设备是真实的。最安全的方法是执行挑战应答认证(challenge-response authentication)。该方案将随机数(挑战)发送到要进行身份验证的设备,然后该设备使用其私钥对挑战进行签名。同样,私钥必须受到严格保护。PUF原理与传统技术(涉及定制设计)相比,用于实现安全存储且保护等级更高的交钥匙解决方案听起来像是安全圣杯。我们将看到一个健壮且易于集成的PUF现在已成为现实。PUF依赖于微小的制造差异。制造差异会导致设备不一致。 这个想法是,设计上完全相同的两个(或多个)设备实际上将具有不同的电性能参数。电性能参数的差异是无法预测的,无法通过光学或SEM观察来估计。 图3 PUF晶体管对的原理图和布局图在上面的示意图中,尽管两个晶体管A和B在设计上是相同的,但在实践中它们始终具有略微不同的物理特征, 如作为阈值电压(VT),漏源电流(IDS)或漏源电阻(RDSON)等参数是不同的。 设计人员可以选择不同的参数来构建其PUF。 为了为了在本文中保持通用,我们将使用 PA和 PB来表示不同的参数,需要注意的是它可以是任何晶体管参数或它们的组合。由于晶体管A和B在设计上是相同的,因此无论是通过仿真还是逆向工程都不可能预测每个结构的PA>PB还是PA<PB。 如果我们武断的认为PA> PB生成“ 0”而PA <PB生成“ 1”,则无法猜测该对晶体管在被探测时生成的是“ 0”还是“ 1”。通过将该结构重复N次,我们可以生成N位不可预测的数据流。其实我们刚刚已经设计了一个物理不可克隆函数。 图4多个实例晶体管对创建的不可预测的比特流 PUF挑战如图所示,实现一系列多个晶体管实例(instance)或任何其他器件并不是什么大事。因此基于此原理构建PUF似乎非常容易。但其实并不是!如介绍中所述,PUF是基于硅制造中的微小变化。在我们的例子中,这些微小的变化转换成PA > PB或PA < PB。 但是由于制造偏差很小,因此△P=PA-PB之差也是如此。由于△P小,因此必须进行高精度测量。 如果测量不准的话,“ 0”很容易翻转为“ 1”(反之亦然),那么PUF不能用于生成密钥。因此,测量精度是一个重大挑战。更糟糕的是,△P通常对老化、温度、工艺和电源变化很敏感。△P本质上很小而且是随机分布的,因此最低的△P的单元在不同温度下使用时会有发生翻转的趋势。我们可以将这些单元视为“弱”,而将具有较高△P的单元视为“强”,后者对变化的敏感性较小。像在存储器设计中那样,添加额外的或冗余单元是将弱单元替换为强单元的一种有效途径。 图5 弱单元强单元的特性 虽然实现PUF元素相对简单,但要获得上述参数的稳定性是一个真正的挑战。有几种技术可以建立稳定的PUF:l 选择合适的参数(VT、IDS、RDSON)以便容易地进行高精度测量;l 冗余:设计更多的PUF元件来消除“弱”实例。 同样这里需要仔细的估计弱单元的数量。 没有足够的冗余单元会导致良率问题,而增加太多的冗余单元会使PUF的硅面积过大。这两个问题都会增加实际的芯片成本。l 纠错:假设不稳定单元的百分比足够低,实施适当的纠错机制(例如汉明编码)将会“修复”密钥。但局限性在于你需要对潜在的有缺陷的PUF单元进行相当有力的估算。除了测量精度之外,使PUF方案具有价值的实际上是纠错或冗余方案的效率成本。和其他密钥生成过程一样,可靠性是必不可少的,PUF的不可预测性和唯一性也是人们所期望的。不可预测性意味着在给定的芯片上,即使知道PUF对一系列挑战的响应,也无法猜测对下一个挑战的响应。唯一性是给定的PUF设计能够针对每个芯片和相同的挑战生成唯一的响应能力[3]。INVIA PUF:灵活、可靠、安全的解决方案架构我们的PUF基于晶体管失配,并且包括关键的多样化特性。一个实例可提供128个安全位,并且可由经过验证的多样化工艺而生成多个密钥。 图6 INVIA PUF架构 老化韧性让我们看看已知的老化现象如何影响INVIA PUF技术和其他PUF技术 老化现象 描述 对 INVIA PUF的影响 对其他技术的影响热载流子注入(HCI) NMOS晶体管的栅极电介质中捕获的载流子会产生Vt和gm漂移 在125°C下放置10年,PUF晶体管的Vt和gm变化小于1% 中等影响-晶体管在低Vds下工作显著影响-晶体管在高Vds下工作介质层时变击穿(TDDB) 氧化层击穿是由电子隧穿电流引起的 影响非常有限,因为我们的PUF单元的最大工作电压为〜0.5 Vdd 显著影响-MOSFET晶体管的工作电压接近最大规定的工作电压有限影响-正常电压负偏压温度不稳定性(NBTI) 由于正电荷在栅极下方的氧化物半导体边界处捕获,Vt和gm发生偏移。当Vg <Vs时会发生这种现象,这在导通的PMOS晶体管中很普遍 没有影响:-我们的技术仅基于NMOS晶体管-PUF晶体管在Vg> Vs下工作 基于SRAM的PUF技术对NBTI敏感,因为它们使用Vg<Vs的PMOS晶体管上表显示,我们的PUF具有与生俱来的抗老化特性。为了获得更高的可靠性而增加了冗余。如前所述,我们实现了比所需数量更多的单元来消除了弱单元。我们为PUF建立的模型使我们能够设置正确的区分阈值,以消除不可靠的PUF元素。实验已验证了模型的正确性并进行了高温工作寿命试验(HTOL)。模拟结构允许在老化后进行参数漂移测量,这比Go/No-go测试提供了更高的置信度。此外,PUF晶体管只有在被有效感知且在极短的时间内才通电。与持续供电的存储阵列PUF结构相比这自然减少了应力等级。熵除了消除弱单元之外,还建立辅助数据来增强针对外部参数变化和老化的鲁棒性。这可能导致熵损失。INVIA PUF在17亿比特位上显示出一个极好的熵>0.998建模INVIA设计的PUF IP不仅要耐高温、电压和工艺变化而且还能够对其建模,避免了任何形式的黑魔法。因为PUF本质上依赖于非常随机的现象,所以人们可能会通过实验和特性描述来实现PUF单元并凭经验判断其是否工作,然后发布相关IP产品。这可能有用但不能提供最高层次的信任。拥有PUF模型具有以下明显的优势:l方案具有可信性。确保密钥的构建具有足够的熵和健壮性是非常基本的要求。l结果可预测性。将方案移植到其他工艺节点变得更加容易。lIP可以通过认证 结论使用具有可靠性、不可预测性和唯一性保证的PUF IP,即使对于不是安全专家的设计人员,也可以为ASIC或SoC提供最高级别的安全性。 参考文献References[1] e. a. S. Quadir, 《A survey on chip to system reverse engineering》 ACM Journalon Emerging Technologies in Computing Systems, April 2016.[2] D. F. M. M. T. Q. S. Huanyu Wang, 《Probing Attacks on Integrated Circuits:Challenges and Research Opportunities》, IEEE Design & Test , October 2017.[3] M. Bhargava, 《Reliable, Secure, Efficient Physical Unclonable Functions. Thesis》,01 May 2013. [En ligne]. Available: https://doi.org/10.1184/R1/6721310.v1.
2025年07月09日
11 阅读
0 评论
0 点赞
2025-07-08
XTS-AES模式主要是解决什么问题,是怎样解决的?
XTS-AES模式主要是解决什么问题,是怎样解决的?作者:蒋伟伟链接:https://www.zhihu.com/question/26452995/answer/142440391来源:知乎著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。XTS即基于XEX(XOR-ENCRYPT-XOR)的密文窃取算法的可调整的密码本模式(Tweakable Codebook mode),该算法主要用于以数据单元(包括扇区、逻辑磁盘块等)为基础结构的存储设备中静止状态数据的加密。以上是官方的解释,谈一下我的理解。我们都知道磁盘上的数据是有一定格式的,比如一个扇区是512字节,磁盘加密直接要对写入扇区的明文进行加密,记录在磁盘扇区上的是相应的密文。而我们通过传统的AES加密方法,比如CBC加密模式,密文须包含一个128bit的初始向量。那么问题来了,我们岂不是要腾出额外的128个bit专门存储初始向量?这样做是增加了磁盘的开销,而且明文和密文在扇区上的存储也不是一一对应的,这给磁盘底层的加密实现带来很大的麻烦。更为关键的是,传统的加密算法,更改密匙非常不便,一旦更改,就意味着要重新进行密匙扩展算法,对磁盘来说要增加很大的开销,同时还要担心密匙泄露的问题。在这种情况下,针对磁盘加密的特点,2002年,Moses Liskov,Ronald L.Rivest, David Wagner,首次提出了可调整的分组密码这个概念,跟传统的分组密码相比,除了密匙和明文这两个输入外,还引入另外一个输入---tweak,即可调整值。这样做的好处是,在不更改密匙的情况下,仅仅改变tweak值,就可以给加密系统提供多变性,既减少了磁盘的开销,也不怕密匙泄露,因为tweak值是公开的,就算泄露了tweak值,如果不知道密匙,是无法破解系统的。而且,这种算法,不需要初始向量,也就避免我们上面所述的明文和密文在扇区上的存储不对应的问题。XTS-AES算法是基于以上思想,被IEEE采用的一个标准。简单介绍下其原理,以传输单个128bit数据块为例:i为128-bit调整值,j为128-bit数据块在数据单元中的位置值,C为128-bit密文数据块。AES-enc为标准AES算法,key2为调整值密匙,key1为数据密匙,模乘操作中 α为GF(2^128)域中对应于多项式x的本源。计算的步骤顺序如下:T <---- AES-enc(key2,i) ⓧ (α^j );PP <----P⊕Thttp://3.CC<---AES-enc(Key1,PP)C<--CC⊕T需要指出的是,j代表数据块在数据单元里的index,比如256个bit数据块,那么 0bit-127bit的j=1,128bit-256bit 的j=2。j 的引入,是让各个数据块的加密保持独立。Disk encryption theoryFrom Wikipedia, the free encyclopediaJump to navigationJump to searchDisk encryption is a special case of data at rest protection when the storage medium is a sector-addressable device (e.g., a hard disk). This article presents cryptographic aspects of the problem. For an overview, see disk encryption. For discussion of different software packages and hardware devices devoted to this problem, see disk encryption software and disk encryption hardware.Contents1Problem definition2Block cipher-based modes2.1Cipher-block chaining (CBC)2.1.1Encrypted salt-sector initialization vector (ESSIV)2.1.2Malleability attack2.2Liskov, Rivest, and Wagner (LRW)2.3Xor–encrypt–xor (XEX)2.3.1XEX-based tweaked-codebook mode with ciphertext stealing (XTS)2.3.2XTS weaknesses2.4CBC–mask–CBC (CMC) and ECB–mask–ECB (EME)3Patents4See also5References6Further reading7External linksProblem definition[edit]Disk encryption methods aim to provide three distinct properties:1.The data on the disk should remain confidential.2.Data retrieval and storage should both be fast operations, no matter where on the disk the data is stored.3.The encryption method should not waste disk space (i.e., the amount of storage used for encrypted data should not be significantly larger than the size of plaintext).The first property requires defining an adversary from whom the data is being kept confidential. The strongest adversaries studied in the field of disk encryption have these abilities:1.they can read the raw contents of the disk at any time;2.they can request the disk to encrypt and store arbitrary files of their choosing;3.and they can modify unused sectors on the disk and then request their decryption.A method provides good confidentiality if the only information such an adversary can determine over time is whether the data in a sector has or has not changed since the last time they looked.The second property requires dividing the disk into several sectors, usually 512 bytes (4096 bits) long, which are encrypted and decrypted independently of each other. In turn, if the data is to stay confidential, the encryption method must be tweakable; no two sectors should be processed in exactly the same way. Otherwise, the adversary could decrypt any sector of the disk by copying it to an unused sector of the disk and requesting its decryption.The third property is generally non-controversial. However, it indirectly prohibits the use of stream ciphers, since stream ciphers require, for their security, that the same initial state not be used twice (which would be the case if a sector is updated with different data); thus this would require an encryption method to store separate initial states for every sector on disk—seemingly a waste of space. The alternative, a block cipher, is limited to a certain block size (usually 128 or 256 bits). Because of this, disk encryption chiefly studies chaining modes, which expand the encryption block length to cover a whole disk sector. The considerations already listed make several well-known chaining modes unsuitable: ECB mode, which cannot be tweaked, and modes that turn block ciphers into stream ciphers, such as the CTR mode.These three properties do not provide any assurance of disk integrity; that is, they don't tell you whether an adversary has been modifying your ciphertext. In part, this is because an absolute assurance of disk integrity is impossible: no matter what, an adversary could always revert the entire disk to a prior state, circumventing any such checks. If some non-absolute level of disk integrity is desired, it can be achieved within the encrypted disk on a file-by-file basis using message authentication codes.Block cipher-based modes[edit]Like most encryption schemes, block cipher-based disk encryption makes use of modes of operation, which allow encrypting larger amounts of data than the ciphers' block-size (typically 128 bits). Modes are therefore rules on how to repeatedly apply the ciphers' single-block operations.Cipher-block chaining (CBC)[edit]Main article: Cipher-block chainingCipher-block chaining (CBC) is a common chaining mode in which the previous block's ciphertext is xored with the current block's plaintext before encryption:Since there isn't a "previous block's ciphertext" for the first block, an initialization vector (IV) must be used as . This, in turn, makes CBC tweakable in some ways.CBC suffers from some problems. For example, if the IVs are predictable, then an adversary may leave a "watermark" on the disk, i.e., store a specially created file or combination of files identifiable even after encryption. The exact method of constructing the watermark depends on the exact function providing the IVs, but the general recipe is to create two encrypted sectors with identical first blocks and ; these two are then related to each other by . Thus the encryption of is identical to the encryption of , leaving a watermark on the disk. The exact pattern of "same-different-same-different" on disk can then be altered to make the watermark unique to a given file.To protect against the watermarking attack, a cipher or a hash function is used to generate the IVs from the key and the current sector number, so that an adversary cannot predict the IVs. In particular, the ESSIV approach uses a block cipher in CTR mode to generate the IVs.Encrypted salt-sector initialization vector (ESSIV)[edit]ESSIV[1] is a method for generating initialization vectors for block encryption to use in disk encryption. The usual methods for generating IVs are predictable sequences of numbers based on, for example, time stamp or sector number, and prevents certain attacks such as a watermarking attack. ESSIV prevents such attacks by generating IVs from a combination of the sector number SN with the hash of the key. It is the combination with the key in form of a hash that makes the IV unpredictable.ESSIV was designed by Clemens Fruhwirth and has been integrated into the Linux kernel since version 2.6.10, though a similar scheme has been used to generate IVs for OpenBSD's swap encryption since 2000.[2]ESSIV is supported as an option by the dm-crypt[3] and FreeOTFE disk encryption systems.Malleability attack[edit]While CBC (with or without ESSIV) ensures confidentiality, it does not ensure integrity of the encrypted data. If the plaintext is known to the adversary, it is possible to change every second plaintext block to a value chosen by the attacker, while the blocks in between are changed to random values. This can be used for practical attacks on disk encryption in CBC or CBC-ESSIV mode.[4]Liskov, Rivest, and Wagner (LRW)[edit]In order to prevent such elaborate attacks, different modes of operation were introduced: tweakable narrow-block encryption (LRW and XEX) and wide-block encryption (CMC and EME).Whereas a purpose of a usual block cipher is to mimic a random permutation for any secret key , the purpose of tweakable encryption is to mimic a random permutation for any secret key and any known tweak . The tweakable narrow-block encryption (LRW)[5] is an instantiation of the mode of operations introduced by Liskov, Rivest, and Wagner[6] (see Theorem 2). This mode uses two keys: is the key for the block cipher and is an additional key of the same size as block. For example, for AES with a 256-bit key, is a 256-bit number and is a 128-bit number. Encrypting block with logical index (tweak) uses the following formula:Here multiplication and addition are performed in the finite field ( for AES). With some precomputation, only a single multiplication per sector is required (note that addition in a binary finite field is a simple bitwise addition, also known as xor): , where are precomputed for all possible values of . This mode of operation needs only a single encryption per block and protects against all the above attacks except a minor leak: if the user changes a single plaintext block in a sector then only a single ciphertext block changes. (Note that this is not the same leak the ECB mode has: with LRW mode equal plaintexts in different positions are encrypted to different ciphertexts.)Some security concerns exist with LRW, and this mode of operation has now been replaced by XTS.LRW is employed by BestCrypt and supported as an option for dm-crypt and FreeOTFE disk encryption systems.Xor–encrypt–xor (XEX)[edit]Main article: Xor–encrypt–xorAnother tweakable encryption mode, XEX (xor–encrypt–xor), was designed by Rogaway[7] to allow efficient processing of consecutive blocks (with respect to the cipher used) within one data unit (e.g., a disk sector). The tweak is represented as a combination of the sector address and index of the block within the sector (the original XEX mode proposed by Rogaway[7] allows several indices). The ciphertext, , is obtained using:where: is the plaintext, is the number of the sector, is the primitive element of defined by polynomial ; i.e., the number 2, is the number of the block within the sector.The basic operations of the LRW mode (AES cipher and Galois field multiplication) are the same as the ones used in the Galois/Counter Mode (GCM), thus permitting a compact implementation of the universal LRW/XEX/GCM hardware.XEX has a weakness.[8]XEX-based tweaked-codebook mode with ciphertext stealing (XTS)[edit]Ciphertext stealing provides support for sectors with size not divisible by block size, for example, 520-byte sectors and 16-byte blocks. XTS-AES was standardized on 2007-12-19[9] as IEEE P1619.[10] The standard supports using a different key for the IV encryption than for the block encryption; this is contrary to the intent of XEX and seems to be rooted in a misinterpretation of the original XEX paper, but does not harm security.11 As a result, users wanting AES-256 and AES-128 encryption must supply 512 bits and 256 bits of key respectively.On January 27, 2010, NIST released Special Publication (SP) 800-38E[12] in final form. SP 800-38E is a recommendation for the XTS-AES mode of operation, as standardized by IEEE Std 1619-2007, for cryptographic modules. The publication approves the XTS-AES mode of the AES algorithm by reference to the IEEE Std 1619-2007, subject to one additional requirement, which limits the maximum size of each encrypted data unit (typically a sector or disk block) to 220 AES blocks. According to SP 800-38E, "In the absence of authentication or access control, XTS-AES provides more protection than the other approved confidentiality-only modes against unauthorized manipulation of the encrypted data."XTS is supported by BestCrypt, Botan, NetBSD's cgd,[13] dm-crypt, FreeOTFE, TrueCrypt, VeraCrypt,[14] DiskCryptor, FreeBSD's geli, OpenBSD softraid disk encryption software, OpenSSL, Mac OS X Lion's FileVault 2, Windows 10's BitLocker[15] and wolfCrypt.XTS weaknesses[edit]XTS mode is susceptible to data manipulation and tampering, and applications must employ measures to detect modifications of data if manipulation and tampering is a concern: "...since there are no authentication tags then any ciphertext (original or modified by attacker) will be decrypted as some plaintext and there is no built-in mechanism to detect alterations. The best that can be done is to ensure that any alteration of the ciphertext will completely randomize the plaintext, and rely on the application that uses this transform to include sufficient redundancy in its plaintext to detect and discard such random plaintexts." This would require maintaining checksums for all data and metadata on disk, as done in ZFS or Btrfs. However, in commonly used file systems such as ext4 and NTFS only metadata is protected against tampering, while the detection of data tampering is non-existent.[16]The mode is susceptible to traffic analysis, replay and randomization attacks on sectors and 16-byte blocks. As a given sector is rewritten, attackers can collect fine-grained (16 byte) ciphertexts, which can be used for analysis or replay attacks (at a 16-byte granularity). It would be possible to define sector-wide block ciphers, unfortunately with degraded performance (see below).[17]CBC–mask–CBC (CMC) and ECB–mask–ECB (EME)[edit]CMC and EME protect even against the minor leak mentioned above for LRW. Unfortunately, the price is a twofold degradation of performance: each block must be encrypted twice; many consider this to be too high a cost, since the same leak on a sector level is unavoidable anyway.CMC, introduced by Halevi and Rogaway, stands for CBC–mask–CBC: the whole sector encrypted in CBC mode (with ), the ciphertext is masked by xoring with , and re-encrypted in CBC mode starting from the last block. When the underlying block cipher is a strong pseudorandom permutation (PRP) then on the sector level the scheme is a tweakable PRP. One problem is that in order to decrypt one must sequentially pass over all the data twice.In order to solve this problem, Halevi and Rogaway introduced a parallelizable variant called EME (ECB–mask–ECB). It works in the following way:the plaintexts are xored with , shifted by different amount to the left, and are encrypted: ;the mask is calculated: , where and ;intermediate ciphertexts are masked: for and ;the final ciphertexts are calculated: for .Note that unlike LRW and CMC there is only a single key .CMC and EME were considered for standardization by SISWG. EME is patented, and so is not favored to be a primary supported mode.[18]Patents[edit]While the authenticated encryption scheme IAPM provides encryption as well as an authentication tag, the encryption component of the IAPM mode completely describes the LRW and XEX schemes above, and hence XTS without the ciphertext stealing aspect. This is described in detail in Figures 8 and 5 of the US patent 6,963,976.[19]See also[edit]Data remanenceCold boot attackDisk encryption softwareDisk encryption hardwareIEEE P1619, standardization project for encryption of the storage dataReferences[edit]1.^ Clemens Fruhwirth (July 18, 2005). "New Methods in Hard Disk Encryption" (PDF). Institute for Computer Languages: Theory and Logic Group (PDF). Vienna University of Technology.2.^ "Encrypting Virtual Memory" (Postscript).3.^ Milan Broz. "DMCrypt dm-crypt: Linux kernel device-mapper crypto target". gitlab.com. Retrieved April 5, 2015.4.^ Jakob Lell (2013-12-22). "Practical malleability attack against CBC-encrypted LUKS partitions".5.^ Latest SISWG and IEEE P1619 drafts and meeting information are on the P1619 home page [1].6.^ M. Liskov, R. Rivest, and D. Wagner. Tweakable block ciphers [2], CRYPTO '02 (LNCS, volume 2442), 2002.7.^ Jump up to:a b c Rogaway, Phillip (2004-09-24). "Efficient Instantiations of Tweakable Blockciphers and Refinements to Modes OCB and PMAC" (PDF). Dept. Of Computer Science(PDF). University of California, Davis.8.^ https://link.springer.com/content/pdf/10.1007/978-3-540-74462-7_8.pdf section 4.1.9.^ Karen McCabe (19 December 2007). "IEEE Approves Standards for Data Encryption". IEEE Standards Association. Archived from the original on 2008-03-06.10.^ Standard for Cryptographic Protection of Data on Block-Oriented Storage Devices. IEEE Xplore Digital Library. April 18, 2008. doi:10.1109/IEEESTD.2008.4493450. ISBN 978-0-7381-5363-6.11.^ Liskov, Moses; Minematsu, Kazuhiko (2008-09-02). "Comments on XTS-AES" (PDF)., On the Use of Two Keys, pp. 1–3.12.^ Morris Dworkin (January 2010). "Recommendation for Block Cipher Modes of Operation: The XTS-AES Mode for Confidentiality on Storage Devices" (PDF). NIST Special Publication 800-38E. National Institute of Standards and Technology.13.^ "NetBSD cryptographic disk driver".14.^ "Modes of Operation". VeraCrypt Documentation. IDRIX. Retrieved 2017-10-13.15.^ "What's new in BitLocker?". November 12, 2015. Retrieved 2015-11-15.16.^ Standard for Cryptographic Protection of Data on Block-Oriented Storage Devices (PDF), IEEE P1619/D16, 2007, p. 34, archived from the original (PDF) on 14 April 2016, retrieved 14 September 201217.^ Thomas Ptacek; Erin Ptacek (2014-04-30). "You Don't Want XTS".18.^ P. Rogaway, Block cipher mode of operation for constructing a wide-blocksize block cipher from a conventional block cipher, US Patent Application 20040131182 A1.19.^ * U.S. Patent 6,963,976, "Symmetric Key Authenticated Encryption Schemes" (filed Nov. 2000, issued Nov. 2005, expires 25 Nov. 2022) 3.Further reading[edit]S. Halevi and P. Rogaway, A Tweakable Enciphering Mode, CRYPTO '03 (LNCS, volume 2729), 2003.S. Halevi and P. Rogaway, A Parallelizable Enciphering Mode [5], 2003.Standard Architecture for Encrypted Shared Storage Media, IEEE Project 1619 (P1619), [6].SISWG, Draft Proposal for Key Backup Format [7], 2004.SISWG, Draft Proposal for Tweakable Wide-block Encryption [8], 2004.James Hughes, Encrypted Storage — Challenges and Methods [9]J. Alex Halderman, Seth D. Schoen, Nadia Heninger, William Clarkson, William Paul, Joseph A. Calandrino, Ariel J. Feldman, Jacob Appelbaum, and Edward W. Felten (2008-02-21). "Lest We Remember: Cold Boot Attacks on Encryption Keys" (PDF). Princeton University. Archived from the original (PDF) on 2008-05-14.Niels Fergusson (August 2006). "AES-CBC + Elephant Diffuser: A Disk Encryption Algorithm for Windows Vista" (PDF). Microsoft.External links[edit]Security in Storage Working Group SISWG."The eSTREAM project". Retrieved 2010-03-28.
2025年07月08日
14 阅读
0 评论
0 点赞
2025-06-26
五种加解密模式(CBC、ECB、CTR、OCF、CFB)
分组密码有五种工作体制:1.电码本模式(Electronic Codebook Book (ECB));2.密码分组链接模式(Cipher Block Chaining (CBC));3.计算器模式(Counter (CTR));4.密码反馈模式(Cipher FeedBack (CFB));5.输出反馈模式(Output FeedBack (OFB))。以下逐一介绍一下:1.电码本模式(Electronic Codebook Book (ECB) 这种模式是将整个明文分成若干段相同的小段,然后对每一小段进行加密。 2.密码分组链接模式(Cipher Block Chaining (CBC)) 这种模式是先将明文切分成若干小段,然后每一小段与初始块或者上一段的密文段进行异或运算后,再与密钥进行加密。 3.计算器模式(Counter (CTR)) 计算器模式不常见,在CTR模式中, 有一个自增的算子,这个算子用密钥加密之后的输出和明文异或的结果得到密文,相当于一次一密。这种加密方式简单快速,安全可靠,而且可以并行加密,但是在计算器不能维持很长的情况下,密钥只能使用一次。CTR的示意图如下所示: 4.密码反馈模式(Cipher FeedBack (CFB)) 这种模式较复杂。 5.输出反馈模式(Output FeedBack (OFB)) 这种模式较复杂。 以下附上C++源代码:/** *@autho stardust *@time 2013-10-10 *@param 实现AES五种加密模式的测试*/ #include <iostream>using namespace std; //加密编码过程函数,16位1和0int dataLen = 16; //需要加密数据的长度int encLen = 4; //加密分段的长度int encTable[4] = {1,0,1,0}; //置换表int data[16] = {1,0,0,1,0,0,0,1,1,1,1,1,0,0,0,0}; //明文int ciphertext[16]; //密文 //切片加密函数void encode(int arr[]) { for(int i=0;i<encLen;i++) { arr[i] = arr[i] ^ encTable[i]; } } //电码本模式加密,4位分段void ECB(int arr[]) { //数据明文切片 int a[4][4]; int dataCount = 0; //位置变量 for(int k=0;k<4;k++) { for(int t=0;t<4;t++) { a[k][t] = data[dataCount]; dataCount++; } } dataCount = 0;//重置位置变量 for(int i=0;i<dataLen;i=i+encLen) { int r = i/encLen;//行 int l = 0;//列 int encQue[4]; //编码片段 for(int j=0;j<encLen;j++) { encQue[j] = a[r][l]; l++; } encode(encQue); //切片加密 //添加到密文表中 for(int p=0;p<encLen;p++) { ciphertext[dataCount] = encQue[p]; dataCount++; } } cout<<"ECB加密的密文为:"<<endl; for(int t1=0;t1<dataLen;t1++) //输出密文 { if(t1!=0 && t1%4==0) cout<<endl; cout<<ciphertext[t1]<<" "; } cout<<endl; cout<<"---------------------------------------------"<<endl; } //CBC//密码分组链接模式,4位分段void CCB(int arr[]) { //数据明文切片 int a[4][4]; int dataCount = 0; //位置变量 for(int k=0;k<4;k++) { for(int t=0;t<4;t++) { a[k][t] = data[dataCount]; dataCount++; } } dataCount = 0;//重置位置变量 int init[4] = {1,1,0,0}; //初始异或运算输入 //初始异或运算 for(int i=0;i<dataLen;i=i+encLen) { int r = i/encLen;//行 int l = 0;//列 int encQue[4]; //编码片段 //初始化异或运算 for(int k=0;k<encLen;k++) { a[r][k] = a[r][k] ^ init[k]; } //与Key加密的单切片 for(int j=0;j<encLen;j++) { encQue[j] = a[r][j]; } encode(encQue); //切片加密 //添加到密文表中 for(int p=0;p<encLen;p++) { ciphertext[dataCount] = encQue[p]; dataCount++; } //变换初始输入 for(int t=0;t<encLen;t++) { init[t] = encQue[t]; } } cout<<"CCB加密的密文为:"<<endl; for(int t1=0;t1<dataLen;t1++) //输出密文 { if(t1!=0 && t1%4==0) cout<<endl; cout<<ciphertext[t1]<<" "; } cout<<endl; cout<<"---------------------------------------------"<<endl; } //CTR//计算器模式,4位分段void CTR(int arr[]) { //数据明文切片 int a[4][4]; int dataCount = 0; //位置变量 for(int k=0;k<4;k++) { for(int t=0;t<4;t++) { a[k][t] = data[dataCount]; dataCount++; } } dataCount = 0;//重置位置变量 int init[4][4] = {{1,0,0,0},{0,0,0,1},{0,0,1,0},{0,1,0,0}}; //算子表 int l = 0; //明文切片表列 //初始异或运算 for(int i=0;i<dataLen;i=i+encLen) { int r = i/encLen;//行 int encQue[4]; //编码片段 //将算子切片 for(int t=0;t<encLen;t++) { encQue[t] = init[r][t]; } encode(encQue); //算子与key加密 //最后的异或运算 for(int k=0;k<encLen;k++) { encQue[k] = encQue[k] ^ a[l][k]; } l++; //添加到密文表中 for(int p=0;p<encLen;p++) { ciphertext[dataCount] = encQue[p]; dataCount++; } } cout<<"CTR加密的密文为:"<<endl; for(int t1=0;t1<dataLen;t1++) //输出密文 { if(t1!=0 && t1%4==0) cout<<endl; cout<<ciphertext[t1]<<" "; } cout<<endl; cout<<"---------------------------------------------"<<endl; } //CFB//密码反馈模式,4位分段void CFB(int arr[]) { //数据明文切片,切成2 * 8 片 int a[8][2]; int dataCount = 0; //位置变量 for(int k=0;k<8;k++) { for(int t=0;t<2;t++) { a[k][t] = data[dataCount]; dataCount++; } } dataCount = 0; //恢复初始化设置 int lv[4] = {1,0,1,1}; //初始设置的位移变量 int encQue[2]; //K的高两位 int k[4]; //K for(int i=0;i<2 * encLen;i++) //外层加密循环 { //产生K for(int vk=0;vk<encLen;vk++) { k[vk] = lv[vk]; } encode(k); for(int k2=0;k2<2;k2++) { encQue[k2] = k[k2]; } //K与数据明文异或产生密文 for(int j=0;j<2;j++) { ciphertext[dataCount] = a[dataCount/2][j] ^ encQue[j]; dataCount++; } //lv左移变换 lv[0] = lv[2]; lv[1] = lv[3]; lv[2] = ciphertext[dataCount-2]; lv[3] = ciphertext[dataCount-1]; } cout<<"CFB加密的密文为:"<<endl; for(int t1=0;t1<dataLen;t1++) //输出密文 { if(t1!=0 && t1%4==0) cout<<endl; cout<<ciphertext[t1]<<" "; } cout<<endl; cout<<"---------------------------------------------"<<endl; } //OFB//输出反馈模式,4位分段void OFB(int arr[]) { //数据明文切片,切成2 * 8 片 int a[8][2]; int dataCount = 0; //位置变量 for(int k=0;k<8;k++) { for(int t=0;t<2;t++) { a[k][t] = data[dataCount]; dataCount++; } } dataCount = 0; //恢复初始化设置 int lv[4] = {1,0,1,1}; //初始设置的位移变量 int encQue[2]; //K的高两位 int k[4]; //K for(int i=0;i<2 * encLen;i++) //外层加密循环 { //产生K for(int vk=0;vk<encLen;vk++) { k[vk] = lv[vk]; } encode(k); for(int k2=0;k2<2;k2++) { encQue[k2] = k[k2]; } //K与数据明文异或产生密文 for(int j=0;j<2;j++) { ciphertext[dataCount] = a[dataCount/2][j] ^ encQue[j]; dataCount++; } //lv左移变换 lv[0] = lv[2]; lv[1] = lv[3]; lv[2] = encQue[0]; lv[3] = encQue[1]; } cout<<"CFB加密的密文为:"<<endl; for(int t1=0;t1<dataLen;t1++) //输出密文 { if(t1!=0 && t1%4==0) cout<<endl; cout<<ciphertext[t1]<<" "; } cout<<endl; cout<<"---------------------------------------------"<<endl; } void printData() { cout<<"以下示范AES五种加密模式的测试结果:"<<endl; cout<<"---------------------------------------------"<<endl; cout<<"明文为:"<<endl; for(int t1=0;t1<dataLen;t1++) //输出密文 { if(t1!=0 && t1%4==0) cout<<endl; cout<<data[t1]<<" "; } cout<<endl; cout<<"---------------------------------------------"<<endl; }int main() { printData(); ECB(data); CCB(data); CTR(data); CFB(data); OFB(data); return 0; }
2025年06月26日
15 阅读
0 评论
0 点赞
1
...
5
6
7