基于区块链的物联网密钥协商协议
2019-01-08
何德彪/HE Debiao
李莉/LI Li
(武汉大学,湖北武汉430070)
国际电信联盟(ITU)将物联网(IoT)定义为:信息社会全球基础设施(通过物理和虚拟手段)将基于现有和正在出现的、信息互操作和通信技术的物质相互连接,以提供先进的服务。它起源于1999年美国麻省理工学院(MIT)提出的无线射频识别(RFID)的思想,并在2005年的信息社会世界峰会(WSIS)被正式确定概念[1]。IoT本质上是一个传感器智能网,它通过RFID、红外感应器、激光扫描仪等传感设备将物与互联网相连,从而实现智能化识别、定位、监测控制与管理。IoT被认为是信息产业继计算机、互联网之后的第3次浪潮,是实现智慧城市[2]的关键技术;但其自身存在一些技术瓶颈。传感网络的大规模和分布式特性使得IoT的安全运维成为一大挑战,例如:基于Mirai僵尸物联网的分布式拒绝服务(DDoS)攻击就曾使得Dyn瘫痪,Twitter、Paypal等人气网站停止服务。随着IoT设备的指数级增长,数据流的中心化管理负载过重,容易造成信息堵塞。此外,IoT还存在数据标准不一致引起的通信兼容问题。
图1 区块链在物联网的应用
区块链作为一种新兴的信息技术,具有公开可验证、可编程、可追溯、防篡改等性质。通过区块链技术构建IoT系统(如图1所示),由区块链充当通用的数字账本,节点设备广播交易,经区块共识后记录上链,可实现数据的可证溯源。同时,加密算法保障了交易数据的隐私性、完整性,共识算法实现了节点间数据的一致性。区块链去中心化的运行机制规避了高额的运维成本,数以亿计闲置设备的算力、存储被充分利用,实现了IoT安全扩容。此外,其激励机制促进了数据升值,点对点(P2P)网络打破了信息孤岛桎梏,促进了设备间的多方协作和信息交流。2015年出现的比特币电脑可实现区块链小微支付网络与IoT的连接。通过分布式资源调配,构建起真正的分享经济模式。2017年全球首个IoT区块链(BOT)项目成立,定义了可信IoT服务平台框架。区块链与IoT的结合有效地解决了IoT缺乏隐私、运维高昂、通信不兼容等行业痛点,有力地推动了智慧城市[3]的发展。
为了实现IoT设备安全可靠的数据通信,亟需一个安全的密钥协商协议以提供身份认证。文献[4]首次提出2个比特币密钥交换协议,以实现交易后比特币用户间端到端的安全通信。然而在该方案中,交易双方使用椭圆曲线数字签名算法(ECDSA)确定交易的所有权。随着IoT设备的指数级增长,数以亿计的设备都需要生成和维护一个公钥证书。为了规避证书颁发与维护的巨额开销,我们提出使用基于身份的Schnorr签名替换原有的ECDSA签名,不再使用公钥证书,从而实现了物联网设备轻量级的身份认证。进一步地,我们提出了2种密钥协商方式:基于Diffie-Hellman的比特币密钥协商协议、基于YAK的比特币密钥协商协议。其中,基于YAK的比特币密钥协商协议通过零知识证明(ZKP)提供了前向安全性。
1 关键技术
1.1 基于身份的Schnorr签名方案
该方案由以下4个算法组成。
(1)Setup:输入安全参数k,系统选择一个阶q为 2k≤q<2k+1的群G,令g为G的生成元。系统选择2个安全的密码哈希函数H1,H2:{0 ,1}*→Zq,并随机 选择s∈RZq作为系统主私钥。最后,系统秘密保存s并公开参数
(2)Extract:给 定 用 户 身 份id∈{0 ,1}*,系统随机选择r∈RZq,计算did=r+sH1(gr,id)modq,并通过安全信道发送did给用户。
(3)Sign:给定消息m∈{0 ,1}*,用户随机选择t∈RZq,计算e=t+did∙H2(id,gt,m)modq,用户输出消息m的签名σ=(gt,e,gr)。
(4)Verify:给定消息签名对(m,σ),验证者通过式(1)验证签名σ的有效性:
若签名σ有效,返回“1”;否则,返回“0”。
1.2 比特币
比特币[5]是区块链技术在数字金融领域的第一个应用,是一种基于P2P网络的虚拟加密货币。它为每个比特币用户生成公私钥对,其中私钥用于签名交易,公钥用于验证数据。比特币网络可以实现用户匿名识别、比特币转移,以及历史交易的记录上链,具有去中心化、匿名性、通胀预防等特点。目前,一些主流交易平台有:btc-e.com、bitstamp;中国的主流交易平台有比特币中国、OKCoin、火币等。截至日前,比特币的流通市值已达到7 743.97亿元人民币,日成交额达到280.328亿元人民币。
1.2.1 比特币交易
比特币交易是相互关联的输入输出交易事务,使用未经使用的交易的输出(UTXO)作为输入,并生成新的输出。同一笔交易可以有多个输入和多个输出,具体交易格式如表1所示。
比特币地址由公钥经一系列哈希、编码而来,即:
比特币地址=Base58{Hash160||前4字节(SHA256(SHA256(Hash160||地址版本号)))}
其中,Hash160=RIPEMD160(SHA256(65字节公钥))。
1.2.2 区块
网络中的所有交易由背书节点收集验证打包上链,经过6个区块确认后交易不可逆转。平均每10 min生成一个新区块链接到最长的链尾部。整个区块链是一个链式结构[6],如图2所示,其中Tx表示交易。
1.2.3 共识机制
共识机制[7-8]是分布式网络中互不信任节点间建立共识的规则与方法。现有的共识机制根据通信方式可分为异步通信共识机制和同步通信共识机制。异步通信共识机制的代表为有向无环图(DAG),与定期检查同步点的日志机制不同,DAG采用异步处理事务操作的方式,极大地提高了系统吞吐量。区块链主要使用同步通信共识机制。其中,同步通信共识机制包括强一致性共识算法和最终一致性共识算法。最终一致性共识算法多用于私有链、联盟链的共识,可进一步细分为具备拜占庭容错特性[9]的一类,如授权拜占庭容错(DBFT)、实用拜占庭容错(PBFT)、资产证明(PoA)、Ripple、Pool验证池等;不具备拜占庭容错特性的一类,如Paxos、Raft等。强一致性共识算法多用于公有链的共识,包括工作量证明(PoW)、权益证明(PoS)、股份授权证明(DPoS)、重要性证明(PoI)等,具体分类参见表2。
比特币区块链的共识主要采用强一致性算法中的PoW、PoS、DPoS。
表1 比特币交易格式
(1)PoW。寻找随机数n,使得:SHA(SHA(v||hp||t||n||hm))<目标哈希,最先找到随机数n的矿工获得记账权并获得比特币奖励,这一过程也称“挖矿”。挖矿难度的调整周期为2周,目的是使区块的生成时间稳定在10 min左右。PoW具有完全去中心化、节点可自由进出等优点,但挖矿行为造成大量的资源浪费,且共识周期较长,存在51%攻击,不适合商业应用。
图2 区块链的链式结构
表2 共识机制的分类
(2)PoS。系统中具有最高权益的节点(如币龄最长)获得记账权。PoS的优点在于减少了PoW的资源消耗,缩短了共识时间,且恶意节点只有掌握超过全网1/3的资源,才能破坏整个共识过程;但共识过程需等待多个确认,容易产生分叉。
(3)DPoS。记账权由101位受托人轮流实现。其中,受托人由股东根据股份权益选出,且需保证99%以上的在线时间。DPoS机制大幅度缩减了验证和记账节点的数量,可以达到秒级验证;但其去中心化的程度不足,依赖于代币的特性限制了其应用领域。
2 方案设计
考虑IoT中的2台设备Alice和Bob。区块链充当数据管理系统,IoT中所有的交易都记录上链。Alice和Bob通过以下方式实现密钥协商。
2.1 基于Diffie-Hellman的比特币密钥协商协议
图3 基于Diffie-Hellman的比特币密钥交换协议
如图3所示,协议的具体执行过程如下:首先,Alice利用私钥提取出与交易TA相关的一次性随机数然后,Alice在链上获取Bob的交易签名对并从中提取与公钥相关的Alice根据计算会话密钥同理,Bob计算一次性随机数tB,从σTA中提取,进一步计算会话密钥κ。
本协议实现了IoT设备基于交易的密钥协商,任意2个设备节点只需从链上获取自身及对方的交易签名对,就能线下计算会话密钥κ。本协议中,与交易相关的随机数可直接利用私钥计算,避免了随机数存储的开销,克服了IoT设备资源受限的缺陷。
2.2 基于YAK的比特币密钥协商协议
如图4所示,协议的具体执行过程如下:首先,Alice(Bob)利用私钥提取出与交易TA(TB))相关的一次性随机数tA(tB)。然后,Alice(Bob)在链上获取 Bob(Alice)的交易签名对 (TB,σTB)((TA,σTA))。Alice(Bob)选取随机数wA∈Zq(wB∈Zq),计算WA(WB)以及wA(wB)的零知识证明ZKP(wA)(ZKP(wB))并发送给对 方 。 Alice(Bob)通 过ZKP(wB)(ZKP(wA))验证随机数wB(wA)的真实性并计算会话密钥κ。
同2.1类似,本协议中节点可直接利用私钥计算与交易相关的随机数。不同的是:此协议是交互性的,双方进行密钥协商时需选取随机数wA、wB作为与会话相关的秘密值并做ZKP,对方通过ZKP验证随机数的真实性后方可计算κ。假设IoT节点私钥的安全性被攻陷,敌手截获了交易后的某次会话。由于每次会话都重新选取随机数,则实现了后续会话的不可追踪,提供了前向安全性。
图4 基于 YAK的比特币密钥交换协议
本文中我们采用了Schnorr ZKP方案[10],假设Alice对秘密值wA做了零知识证明ZKP(wA),可通过如下方式使Bob相信自己拥有这一秘密而不向Bob泄露秘密wA的任何信息。
(1)ZKP产生(ZKP-Gen)
1)Alice随机选取l∈RZq,计算L=gl,h=H(g,L,wA,idA),r=l-wAh;
2)Alice→Bob:WA,{idA,L,r}。
(2)ZKP验证(ZKP-Verify)
给定WA,{idA,L,r},Bob相信Alice拥有秘密值wA当且仅当式(2)成立:Alice拥有秘密值
同理,Alice通过此方式验证Bob确实拥有秘密值wB。
3 安全分析
对于密钥协商协议的安全,我们考虑以下3种安全特性。
(1)私钥安全:一次性会话中秘密值的泄露不影响设备节点静态私钥的安全性。
(2)前向安全:即使用户私钥被攻陷,已建立会话的会话密钥的安全性不受影响。
(3)会话密钥安全:攻击者冒充用户,但无法访问用户的私钥,则无法计算会话密钥。
3.1 基于Diffie-Hellman的比特币密钥协商协议
假设Alice和Bob分别从链上获取了交易签名对(TA,σTA),(TB,σTB),我们证明所提协议可以提供私钥安全和会话密钥安全。
(1)私钥安全的证明
假设存在一个概率多项式时间的被动敌手A,已掌握Bob的与交易相关的随机数tB。若A获得了Alice的秘密值wA,A可通过计算得到会话密钥,然而A无法获得didA的任何信息。
(2)会话密钥安全证明
假设存在一个概率多项式时间的主动敌手B,冒充Bob与Alice进行通信。现假定Alice和Bob选取的与交易相关的随机数分别为tA=φ,tB=φ。给定一个计算型Diffie-Hellman 问题 (gφ,gφ,gφφ),假定敌手B能成功计算K,由可得gφφ=K,则困难问题计算型 Diffie-Hellman(CDH),与实际矛盾。
3.2 基于YAK的比特币密钥协商协议
假设Alice和Bob分别从链上获取 了 交 易 签 名 对 (TA,σTA) ,(TB,σTB)。与3.1节不同,此协议会话密钥的产生依赖于与交易相关的随机数(tA,tB),以及交互过程中选取的秘密值(wA,wB)。我们证明了此协议可以提供私钥安全、会话密钥安全以及前向安全。
(1)私钥安全
证明如下:假设存在一个概率多项式时间的主动敌手A,已掌握Bob的与交易相关的随机数tB以及Bob某一次会话选取的秘密值wB。若A获得了Alice的秘密值wA,A可通过计算会话密钥,然而A无法获得didA的任何信息。
(2)前向安全
证明如下:假设存在一个概率多项式时间的被动敌手A,已获取Alice和Bob的与交易相关的随机数tA和tB。现假定Alice和Bob交互过程中选取的随机数分别为wA=φ,wB=φ。给定一个计算型Diffie-Hellman 问题 (gφ,gφ,gφφ),假定敌手A能成功计算K,由可得则困难问题CDH可解,与实际矛盾。
(3)会话密钥安全
证明如下:假设存在一个概率多项式的主动敌手B,冒充Bob与Alice进行通信。B已获取Alice的与交易相关的随机数tA,并从公开信道上截获了WB。现假定Alice交互过程中选取的随机数为wA=φ,Bob选取的与交易相关的随机数为tB=φ。给定一个计算型Diffie-Hellman问题(gφ,gφ,gφφ),假定敌手B能成功计算K,由可 得则困难问题CDH可解,与实际矛盾。故会话密钥不能被成功计算,此协议可以提供会话密钥安全。
4 性能分析
文章中,我们在Ubuntu平台搭建regtest测试链,基于c++版本的比特币代码,使用make编译器编译程序。我们采用的仿真平台如表3所示,测试链参数如表4所示。
假定交易查询阶段记为P1,密钥协商阶段记为P2,原始交易检索时间为tgtx,交易解析时间为tdtx,协议执行的总时间为Total。我们通过bitcoin-cli查询测试链1 000次得到了交易的平均检索时间t=tgtx+tdtx为:real(21.212 s)、user(0.164 s)、sys(0.196 s),我们实际采用user时间。同时,我们通过运行miracl库10 000次得到了协议的平均执行时间,实验结果如表5、6所示。
由表6可知:文中提出的2种比特币密钥协商协议都具有合理的运行开销,适用于设备资源受限的IoT环境。
5 结束语
我们使用基于身份的Schnorr签名替换比特币交易原有的ECDSA签名,提出了2种密钥协商协议,避免了设备资源受限的IoT环境下公钥证书管理的巨额开销。我们分析了所提协议的安全性,并搭建了比特币测试链模拟了交易查询及密钥协商过程,结果表明协议在实际应用中是切实可行的。
表3 仿真平台参数信息
表4 测试链参数信息
表5 操作的执行时间
表6 协议的执行时间