密码是网络安全的核心技术和基础支撑,是保护国家的战略性资源,在传统想信息系统中,例如电力、居民身份证、防伪税控、社保、金融中发挥着巨大的作用。移动互联网时代的到来,密码凸显了越来越重要的作用,特别是区块链、量子通信、云计算、物联网等新应用中,密码发挥着关键作用。
>>> 区块链中的密码关键技术 <<<
区块链是一种按照时间顺序将数据区块以顺序相连的方式组合成的一种链式数据结构,并以密码学方式保证的不可篡改和不可伪造的分布式账本,利用块链式数据结构来验证与存储数据、利用分布式节点共识算法来生成和更新数据、利用密码学的方式保证数据传输和访问的安全、利用由自动化脚本代码组成的智能合约来编程和操作数据的一种全新的分布式基础架构与计算范式。区块链是分布式数据存储、点对点传输、共识机制、加密算法等计算机技术的新型应用模式,作为构造信任的机器,可能改变社会价值传递的方式。
区块链的一个重要基础就是利用密码技术保障数据传输、数字签名的安全性和杂凑函数的单向性。例如其重要应用——数字货币中就使用了杂凑链实现区块之间链接,对杂凑值提出要求实现挖矿机制及困难调整;利用公钥机制实现交易的抗抵赖,只使用公钥,不使用证书,实现交易的匿名,采用 Hash 二叉树结构实现交易合法性的快速检查,如图 1 所示,采用环签名非交换零知识证明实现交易的不可跟踪。
图 1 区块数据结构
杂凑算法实现链式结构
数字货币中,每一个区块除了包含交易及其签名、时间戳等,还包含有前一个区块的杂凑值,并且本区块也产生一个杂凑值,这样就能保证该区块在链中不被篡改(除非将该区块及后续所有区块均篡改,但因为区块发布在全网上,不可能同时篡改多个节点),为激励用户共同维护账本,在一些区块链中(例如比特币)设计了 POW(工作量证明)机制,保障通过有难度的挖矿,获得奖励和交易手续费,同时,为了保证产生区块频率,通过调整难度系数,使得大约每十分钟产生一个区块,其设计的难题是:通过一个随机数的调整使得本区块杂凑值(目标杂凑值)符合特定条件,例如小于 2n(即杂凑值高位有连续 256-n 个零),根据产生前2016 个区块(约两周)时间与两周时间比例,调整 n 值就能够改变区块产生时间。
通过杂凑二叉树(Merkle 根)结构实现少量存储,快速查询交易完整性
区块链中交易为达到可追溯目标,采用杂凑二叉树方式实现,将所有交易作为叶子形成一个二叉树,父节点为下一级两个子节点的杂凑值,如图 1 所示。对交易 i 的完整性查询,只需要计算其兄弟节点联合杂凑值,父节点及其兄弟节点联合杂凑值,层层追溯,直至计算根节点(所有交易的联合杂凑值),这个值称为Merkle 根,如果与链上存储的 Merkle 根一致,则交易为合法未被篡改交易。
只使用公钥而不是证书机制,实现交易的匿名
每次交易用户都自行产生一对公私钥,而不是用固定的,与自己身份绑定的公私钥,实现交易的匿名,但该机制无法实现交易的不可跟踪。
采用环签名非交换零知识证明实现交易的不可跟踪
为了实现交易的不可跟踪,一些区块链采用了环签名机制 ,如图 2 所示,实现非交互的零知识证明,从而保证交易的不可跟踪。
图 2 环签名机制
设 Ek 为对称密码,密钥为 k=H(m, L)
gi 为公开置换
(1)计算 yi=gi (xi) 容易
(2)而只有知道陷门才能计算 xi=g-1i (yi)
签名实现:
(1) 随机产生 v, x1,…, xs-1,xs+1, …, xr
(2) 求解 ys,使得 Ek(… Ek(Ek (v ⊕ y1) ⊕ y2)…)=v
(3) 使用陷门计算 xs=gs-1(ys)
例如,将若一个或干个交易定义为x1,…, xr中的元素至少要有一个随机数,即上述 xs。
从 x 计算 y 简单,所以验证 x 对应的 y,以及 Ek(… Ek(Ek (v ⊕ y1) ⊕ y2)…)=v 很容易,但生成则需要知道陷门。
具体计算方式:
Ek(…Ek(Ek(v ⊕ y1) ⊕ y2)…⊕ ys=dk(…dk(v ⊕yr) ⊕ yr-1)… ⊕ ys+1) 求出 ys, 再 通 过 陷 门 求出 xs。
区块链技术的发展对密码提出了新的挑战,从杂凑链、杂凑二叉树,到环签名技术,都是密码协议在新技术中的重要应用。
>>> 量子通信的密码关键技术<<<
目前主流的量子通信有单光子方案、连续光子方案、测量设备无关通信,还有其他例如量子直接通信、隐形传态等技术。而最成熟的是 BB84 协议。BB84 协议可利用量子的偏振及其不可克隆、(非相同基)测不准原理,协议如图 3 所示。
图 3 BB84 量子通信协议
发送方 Alice 随机产生一系列随机数(初始密钥),再随机生成一组基,将随机数制备到这组基上,发送给 Bob,Bob 随机产生一组测量基,对接收到的光子进行测量,完成测量后公布自己的基,Alice 告诉 Bob 哪些是正确的基,Bob 扔掉错误基,再进行保密放大即可实现密钥的协商。
我国在量子通信领域已经走在世界的前列,但是目前量子通信还存在一些问题,需要较长时间来解决。
(1) 经典信道与量子信道的交互会形成信息泄漏点,例如随机数的产生与传输、协商前共享参数的分发、协商后密钥的分发。
(2) 单光子产生安全性是一个风险点,比如如何实现抗分束攻击,为抵抗该类攻击,一般采用预共享数据加诱骗态方式,这样对首次通信的双方增加了困难。单光子探测器难度比较大,因为毕竟只能接收一个光子,有时候外界其他的光子进来了会误认为是发送的光子,这样就会出现暗计数。
(3) 单光子衰减很大,目前点对点通信举例大约 100 公里,超过这个距离就需要中继,而中继实际必须落地,相当于变成了三方通信或多方通信。这种对中继的可信安全要求也给量子通信带来困难,要求有很强的访问控制策略、权限管理、以及物理安全防护。如果要形成量子通信网络则困难呈指数上升,特别是非群组通信组网,如何实现可信中继成为亟待解决的问题。
(4) Bob 测量以后应该广播公开自己的基,但很多工程实现中经常只和 Alice 点对点通信,这样 Bob 和 Eve 就没有差别了,非广播形成了新的安全隐患,尽管可以通过预共享密钥解决,但预共享密钥又反过来给组网带来了更大的困难。
(5) 量子通信系统很脆弱,只要检测到监听则通信终端,健壮性不如传统网络。
量子通信、量子技术是高精尖技术,其成熟不是一蹴而就,由于量子通信理论上具备信息论安全,将其逐步完善,将会成为对抗量子计算的重要利器。
>>> 移动互联网及云计算下密码新形态<<<
移动互联网和物联网的兴起,特别是手机等移动智能终端的普及,密码由传统的硬件形态变得更加多样化,一是移动端形态、计算能力、安全防护能力差别很大且不是系统可以掌控的(例如智能在手机上装应用软件)。二是很多数据都在云端,如何保证云端数据安全和隐私保护,并且云端不一定有确定的位置,例如内容分发网络 CDN,如何实现密钥的安全分发成为新的难题。
(1) 算法白盒化或将敏感数据秘密共享,利用混淆等技术,在 TEE 或者 SE 环境中实现安全计算。
为了在软件环境中不泄露密钥,一般都采用多种机制共同防护,一是使用白盒密码,将密钥隐藏,或是将密钥分成不同的成分,通过协同计算实现密码运算。二是将算法中关键步骤和数据加以混淆,例如操作混淆和替换、控制流扁平化不透明、函数混淆、代码随机指令等方式,加大软件逆向工程困难,三是在安全模块 SE 或者可信执行环境 TEE 中运行敏感操作,与其他应用形成物理 / 逻辑隔离。
(2) 通过虚拟机技术、秘密共享技术、同态算法和严格的内部审计实现云端安全计算环境。
一是采用同态算法实现云端数据的密态计算和密态查询;如果因为效率等其他原因,不便采用同态算法的,由于云计算虚拟机的隔离不是物理意义上的隔离,密码边界防护需加强,特别是内部审计已经变成了依靠云端自身的安全审计。
二是云端提供的服务不同,密码防护能力需求也不同,安全计算、安全存储较为容易实现密码防护;批量数据的代签代验优于单个数据的代签代验,但是代签存在私钥托管,无法抗抵赖的风险;租户与云端是否需要安全通道,如需要,则安全通信向云端迁移难度很大,效率很低。
纵观信息时代的发展,从 PC 机到互联网再到移动互联网,乃至物联网时代的到来,人们的交互越来越便利,正在从物理世界向电子世界(互联网世界,虚拟世界)迁移。社交、资讯、游戏、购物、出行、工作都发生了重要的改变。如何解决虚拟世界的信任机制,是虚拟世界能否走向繁荣的关键一步,密码是解决机器信任的最后保障,新时代,新需求给密码带来了新的机遇和挑战,也将带来更多新的机遇和挑战。
作者 >>>
李智虎,男,北京邮电大学硕士,国家密码管理局副调研员,专业从事密码学理论及密码工程研究。
声明:本文来自信息安全与通信保密杂志社,版权归作者所有。文章内容仅代表作者独立观点,不代表士冗科技立场,转载目的在于传递更多信息。如有侵权,请联系 service@expshell.com。