一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

一种基于区块链的物联网设备匿名身份认证方法

2022-06-05 10:41:31 来源:中国专利 TAG:


1.本发明属于计算机领域,尤其涉及一种基于区块链的物联网设备匿名身份认证的方法。


背景技术:

2.物联网是通过射频识别、红外感应器、全球定位系统、激光扫描器等信息传感设备,按约定的协议,把任何物品与互联网相连接,进行信息交换和通信,以实现对物品的智能化识别、定位、跟踪、监控和管理的一种网络。随着对物联网不断的深入研究,现如今物联网技术已经被应用于制造业、能源、家具、医疗等领域。但在物联网发展的这段时期也产生了很多不可避免的安全问题。在设备安全方面,缺乏设备与设备之间相互信任的机制,所有的设备都需要和物联网平台的数据进行核对,一旦数据库崩塌,会对整个物联网造成很大的破坏。在个人隐私方面,中心化的管理架构无法自证清白,个人隐私数据被泄露的事件时有发生。在扩展能力方面,目前的物联网数据流都汇总到单一的中心控制系统,未来物联网设备将呈几何级数增长,中心化服务成本难以负担,物联网网络与业务平台需要有新型的系统扩展方案。在网间协作方面,目前,很多物联网都是运营商、企业内部的自组织网络。涉及到跨多个运营商、多个对等主体之间的协作时,建立信用的成本很高。
3.阐述了基于 p2p网络技术、加密技术、时间戳技术、区块链技术等2009年1月9日出现序号为1的区块,并与序号为0的创世区块相连接形成了链,标志着区块链的诞生。
4.各个区块之间通过随机散列(也称哈希算法)实现链接,后一个区块包含前一个区块的哈希值,随着信息交流的扩大,一个区块与一个区块相继接续,形成的结果就叫区块链。从本质上来说,区块链就是一个分布式的账本和数据库,具有去中心化、不可篡改、集体维护、公开透明等特点,是数学、密码学、互联网和计算机科学等一系列科学技术集合而成的产物。区块链的这几个特性可以用于解决物联网当前的安全问题。


技术实现要素:

5.发明目的:为克服现有技术中存在的不足,本发明提供了一种基于区块链的物联网设备匿名身份认证的方法。该方法可以有效解决设备与平台之间的信任与安全问题和物联网平台中心化架构的成本问题,为后续的物联网相关信息安全研究及工程应用提供新的思路。
6.技术方案:为了解决上述问题,本发明提出一种基于区块链的物联网设备匿名身份认证方法,包括以下步骤:
7.步骤1、构造基于物联网设备身份的智能合约,包括交易者dealer合约,设备device合约,设备签名认证ecrecovery方法,默克尔证明merkle proof方法;
8.步骤2、区块链构建与智能合约编译部署:使用区块链构建私有区块链,选取工作量证明机制proofofwork作为共识机制,创建私有链网络并保存至本地;智能合约编译完成后部署至私有链,通过对合约发起交易即可注册设备;
9.步骤3、设备信息注册、加密、上链:设备首先被分配一对公私钥对,其次使用数个设备信息参数构成默克尔树,并将默克尔根存储至合约中;然后申请者向合约发起注册交易,交易完成后将公私钥对、设备注册所用信息和标识符信息返回给申请人;
10.步骤4、设备端与平台端的匿名认证通信:设备端在本地通过设备信息文件构造认证信息payload,将payload发送给平台端;平台端通过调用链上智能合约完成认证。
11.进一步的,步骤1所述构造基于物联网设备身份的智能合约,具体为:
12.步骤1.1、定义交易者dealer合约,存储对设备发起注册交易的区块链账户地址address;
13.步骤1.2、定义设备device合约,存储设备认证信息,包括设备拥有者owner,设备标识符identity,设备信息默克尔根devicemerkleroot;
14.步骤1.3、定义设备签名认证ecrecovery方法,该方法根据消息msg的哈希值hash(msg)与签名sig恢复公钥;
15.步骤1.4、定义默克尔证明merkle proof方法,该方法根据叶节点信息info 的哈希值hash(info)与默克尔证明参数proof(hash1,hash2

)计算得出默克尔根,其中hash1,hash2

指的是设备端需要提供的认证参数。
16.进一步的,步骤3所述设备信息注册、加密、上链,包括以下步骤:
17.步骤3.1、使用椭圆曲线加密算法获取公私钥对(pubk
device
,pvtk
decice
),其中 pubk
device
为公钥,pvtk
decice
为私钥;
18.步骤3.2、使用散列算法计算pubk
device
的哈希值,计算出公钥对应地址,使用该地址作为该设备的唯一设备标识符identity;
19.步骤3.3、使用设备信息参数构造默克尔树并返回设备信息;
20.步骤3.4、对该合约地址发起注册交易;
21.步骤3.5、交易写入区块链;
22.步骤3.6、交易完成后返回给交易人设备信息文件,包含设备拥有者owner,设备标识符identity,公私钥对(pubk
device
,pvtk
decice
),所有注册使用信息infodata;
23.步骤3.7、链上合约存储设备拥有者owner,设备标识符identity,设备信息默克尔根devicemerkleroot;
24.步骤3.8、设备端保存该设备信息文件。
25.进一步的,步骤3.3所述使用设备信息参数构造默克尔树,具体为:设备信息参数包括设备名称、出厂时间、序列号、生产商关键信息参数,将设备信息参数逐个计算哈希值,作为叶节点信息的哈希值;进一步将这些叶节点信息的哈希值两两拼接,继续计算哈希值;重复上述步骤直至计算出唯一的设备信息默克尔根devicemerkleroot。
26.进一步的,步骤4所述设备端在本地通过设备信息文件构造认证信息payload,将payload发送给平台端,包括以下步骤:
27.步骤4.1.1、选取设备构造默克尔树的任意叶节点信息info作为消息msg;
28.步骤4.1.2、对该消息msg的哈希值hash(msg)使用椭圆曲线签名算法获取签名sig;
29.步骤4.1.3、计算所有注册使用信息infodata的哈希值,构造默克尔树;
30.步骤4.1.4、使用所选取叶节点信息构造默克尔证明参数proof(hash1,hash2

);
31.步骤4.1.5、构造认证信息payload,包含消息msg、签名sig、默克尔证明参数proof(hash1,hash2

),发送至平台端。
32.进一步的,步骤4.1.2所述使用椭圆曲线签名算法获取签名sig,具体为:使用椭圆曲线加密算法获取公私钥对,选择任意消息的哈希值hash(msg),使用私钥对该哈希值作签名,得到一对256位二进制签名结果{r,s}即签名sig。
33.进一步的,所述使用椭圆曲线加密算法获取公私钥对,方法为:选取随机256 位二进制数作为私钥pvtk
decice
,选取任意一条椭圆曲线y2=x3 ax b且满足 4a3 27b2≠0的点集,a、b为常数,选取曲线上的一个基点g,计算公钥pubk
device
=pvtk
decice
×
g。
34.进一步的,步骤4所述平台端通过调用链上智能合约完成认证,包括以下步骤:
35.步骤4.2.1、连接区块链网络,获取部署完成的智能合约实例;
36.步骤4.2.2、调用智能合约函数ecrecovery,使用payload中的hash(msg)与签名sig恢复公钥pubk
device
,使用散列算法计算pubk
device
的哈希值,得出该公钥对应地址,将该地址与链上数据设备标识符identity做对比,完成对该签名和传递数据的认证;
37.步骤4.2.3、调用智能合约函数merkle proof方法,使用payload中的消息 msg与默克尔证明参数proof(hash1,hash2

)计算默克尔根merkleroot';将 merkleroot'与设备信息默克尔根devicemerkleroot作比较,完成对设备信息的认证。
38.进一步的,所述merkle proof方法为:将一个叶节点信息的哈希值hash(info) 与proof(hash1,hash2

)中的第一个参数hash1拼接并出计算哈希值hash1',再将该哈希值hash1'与第二个参数hash2拼接并计出算哈希值hash2',直至得出最终的默克尔根merkleroot'。
39.有益效果:与现有技术相比,本发明具有以下优点:
40.第一,本发明使用去中心化的物联网平台架构,数据存储使用区块链作为载体,平台端只需充当区块链全节点即可进行设备管理与认证,并且对单个节点区块链数据的篡改或区块节点丢失并不会被区块链上其他节点所共识,使得本发明的方法实现了物联网设备数据的不可篡改性,保证了设备信息存储的安全性;
41.第二,本发明使用非对称加密算法标识设备身份,区块链存储设备公钥通过哈希运算之后的散列值;设备端只需使用私钥对消息进行签名,即可在不暴露自身信息的情况下完成设备认证,保证了认证过程中设备的匿名性,防止了认证过程中设备信息的泄露问题;
42.第三,本发明使用默克尔树存储设备关键身份信息,若设备使用n个自身设备参数,则区块链上只需o(1)的空间保存上述所有信息,需要o(log
2 n)的时间计算根哈希值。设备端构造默克尔证明时需要o(log
2 n)的时间构造证明,需要 o(log
2 n)的空间在网络中传输数据。平台端接收端只需计算log
2 n次即可对设备的n个信息参数完成认证,对设备的任意一处篡改都将导致最终的根哈希值不同,保证了认证过程中设备的不可篡改性,防止其他恶意节点通过设备接入对物联网平台的入侵。
附图说明
43.图1为本发明简化流程图;
44.图2为本发明实施用户端、设备端和平台端具体流程图;
45.图3为构造默克尔树示意图;
46.图4为默克尔证明merkleproof示意图。
具体实施方式
47.为了使本发明的目的、技术方案和优点更加清楚,下面结合附图对本发明实施方案作进一步详细描述。
48.本发明的一种基于区块链的物联网设备匿名身份认证方法,流程如图1所示,包括以下步骤:
49.步骤1,构造基于物联网设备身份的智能合约:定义交易者dealer合约,定义设备device合约,定义设备签名认证ecrecovery方法,定义默克尔证明merkleproof方法;
50.步骤2,区块链构建与智能合约编译部署:使用支持智能合约的区块链,例如ethereum,stratis,hyperledgerfabric及其他所有支持智能合约的区块链。区块链共识机制可以选择工作量证明proofofwork,权益证明proofofstake等其它任意共识机制;
51.步骤3,设备信息注册、加密、上链:设备首先被分配一对公私钥对,其次使用数个设备信息参数构成默克尔树,并将默克尔根存储至合约中。完成上述步骤后申请者向合约发起注册交易,交易完成后将设备所有者、公私钥对、设备注册所用信息,标识符信息返回给申请人;
52.步骤4,设备端与平台端的匿名认证通信:设备端在本地通过设备信息文件构造认证信息payload,将该payload发送给平台端。平台端通过调用链上智能合约认证函数完成认证。
53.实施例使用ethereum作为区块链架构。区块链共识机制选用工作量证明pow。使用solidity语言编写编译智能合约。使用椭圆曲线secp256k1,即y2=x3 7作为椭圆曲线加密算法(ellipticcurvecryptography,ecc)所使用曲线。使用散列函数keccak256作为单向散列函数使用。选取设备注册的第一个叶节点信息info1作为merkleproof的叶节点。
54.具体介绍如下:
55.步骤1、编写基于物联网设备身份的智能合约:
56.智能合约需要定义设备的存储与匿名认证方式。使用任意支持编写与编译的合约语言并拥有其运行时的区块链环境,包括ethereum所使用的solidity语言,stratis所使用的c#语言,hyperledgerfabric所使用的golang或node.js语言及其他所有支持编写与编译的合约语言并拥有其运行时的区块链环境。
57.(1)定义设备device合约,包括设备拥有者owner,设备标识符identity,设备信息默克尔根devicemerkleroot。其中为了方便存储,在合约内部使用数组管理设备,设备所在数组下标定义为设备id(deviceid),并且在设备注册完成后作为设备配置信息返回给注册人。使用椭圆曲线签名算法(ellipticcurvedigitalsignaturealgorithm,ecdsa)的secp256k1椭圆曲线获取公私钥对(pubk
device
,pvtk
decice
),其中pubk
device
为公钥,pvtk
decice
为私钥;并使用散列算法keccak256计算pubk
device
的哈希值,转化为十六进制字符串,取十六进制字符串的后40位作为该设备的唯一标识符identity。
58.(2)定义设备交易者dealer合约。交易者即为与区块链合约交易者,使用的是区块链公私钥对(pubk
eth
,pvtk
eth
),同样使用keccak256计算出公钥所对应地址,存储至设备的
属性owner中。
59.(3)定义签名认证函数ecrecovery方法。函数参数为消息的哈希值 hash(msg)和签名sig,通过参数恢复出设备公钥pubk
device
,通过对比存储至链上的设备标识符完成对该签名的认证。
60.需要注意的是只有使用ecc算法生成的公私钥对才能恢复公钥,其他数字签名算法只能使用私钥对消息的哈希值hash(msg)进行签名,并使用公钥验证签名,无法恢复公钥。
61.(4)定义默克尔证明merkle proof方法。函数参数为叶节点信息info的哈希值hash(info)与默克尔证明参数proof(hash1,hash2

),计算得出默克尔根,其中hash1,hash2

指的是设备端需要提供的认证参数。
62.步骤2、区块链构建与智能合约编译部署:
63.使用区块链构建私有区块链,选取工作量证明机制proofofwork作为共识机制,创建私有链网络并保存至本地。智能合约编译完成后部署至该私有链,通过对该合约发起交易即可注册设备。
64.步骤3、设备信息注册、加密、上链:
65.如图2的用户端流程所示,设备首先被分配一对公私钥对,其次使用数个设备信息参数构成默克尔树,并将默克尔根存储至合约中。完成上述步骤后申请者向合约发起注册交易,交易完成后将上述信息(设备所有者、公私钥对、设备注册所用信息,标识符信息)返回给申请人,具体如下:
66.步骤3.1、使用椭圆曲线加密算法获取公私钥对(pubk
device
,pvtk
decice
),方法为:选取随机256位二进制数作为私钥pvtk
decice
,选取任意一条椭圆曲线y2=x3 ax b且满足4a3 27b2≠0的点集,a、b为常数,选取该曲线上的一个基点 g,计算公钥pubk
device
=pvtk
decice
×
g。本实施例使用椭圆加密算法中的 secp256k1算法获取公私钥对(pubk
device
,pvtk
decice
);
67.步骤3.2、使用散列算法keccak256计算pubk
device
的哈希值,转化为十六进制字符串,取十六进制字符串的后40位作为该设备的唯一标识符identity;
68.步骤3.3、使用设备信息参数构成默克尔树并返回设备信息; merkleroot=mrt(info1,info2,info3

),其中merkleroot为默克尔根,mrt 为计算函数,info1,info2,info3

为设备的信息。如图3所示,先计算n叶节点信息的info的哈希值,再将这n个哈希值成对组合计算,生成n/2个次一层节点。重复上述步骤直至得到最后的merkelroot,将该值作为设备信息默克尔根 devicemerkleroot存储在合约中;
69.步骤3.4、对该合约地址发起交易;
70.步骤3.5、通过pow机制将该交易记录至链上;
71.步骤3.6、交易完成后返回给交易人设备信息文件,包括设备拥有者owner,设备标识符identity,公私钥对(pubk
device
,pvtk
decice
),所有注册使用信息infodata;
72.步骤3.7、链上合约存储设备拥有者owner,设备标识符identity,设备信息默克尔根devicemerkleroot;
73.步骤3.8、设备端保存该设备信息文件,文件信息使用json格式保存。
74.步骤4、匿名认证过程:
75.步骤4.1、如图2所示的设备端流程所示、设备端构造认证信息payload;
76.步骤4.1.1、选取设备构造默克尔树的任意叶节点信息info作为消息msg;
77.步骤4.1.2、对该消息msg的哈希值hash(msg)使用椭圆曲线签名算法{r,s}=ecsign(hash(msg),pvtk
device
),其中hash(msg)表示对该msg作哈希运算,ecsign函数表示使用该哈希值与设备私钥pvtk
device
作运算,得到一对256位二进制签名结果{r,s};
78.步骤4.1.3、将签名结果{r,s}转化为适合数据传输的远程过程调用(remoteprocedurecall,rpc)形式的rpc签名:sig
rpc
=torpcsig(r,s),其中torpcsig表示将二进制签名结果{r,s}转化成适合数据传输的二进制比特流序列;
79.步骤4.1.4、计算所有注册使用信息infodata的哈希值,并构造默克尔树;
80.步骤4.1.5、使用该树与第一个叶节点info1构造默克尔证明。如图4所示,虚线框代表不需要提供的参数,实体线框代表需要提供的参数。本图例中选取hash2,hash6,hash8等作为默克尔证明的参数进行传递,即proof(hash2,hash6,hash8),其中hash2,hash6,hash8指的是默克尔树中需要参与默克尔证明的节点值。
81.步骤4.1.6、构造认证信息payload,包含设备序号deviceid,消息msg,rpc签名sig
rpc
,默克尔证明参数proof(hash2,hash6,hash8),发送至平台端。
82.步骤4.2、如图2的平台端流程所示,平台端调用链上合约方法完成认证:
83.步骤4.2.1、连接区块链网络,获取部署完成的智能合约实例;
84.步骤4.2.2、将payload参数传入合约函数isvalidsignature(deviceid,msg,sigrpc)。使用哈希值hash(msg)和rpc签名sig
rpc
恢复出设备公钥pubk
device
,使用keccak256计算出该公钥所对应地址,将该地址与链上数据设备标识符identity作对比,完成对该签名和传递数据的认证;
85.步骤4.2.3、将payload参数传入合约函数isvaildmerkleroot(deviceid,proof(hash2,hash6,hash8),msg),验证默克尔证明。如图4所示,当通过签名认证后表示该叶节点信息的哈希值hash(info1)合法,可用于默克尔证明。虚线框代表的是使用设备端提供的默克尔证明参数得到的哈希值,将叶节点信息的哈希值hash1与hash2拼接计算得到哈希值hash5',将该哈希值hash5'与hash6拼接计算得到哈希值hash7',最终将该哈希值hash7'与hash8计算得出根哈希merkelroot'。然后将该值与设备注册时所构造的devicemerkleroot值作比较,即可对设备信息作完整认证。
86.注意:使用散列函数计算哈希值,使用符合sha-3标准的单向散列函数算法,如keccak等。应当注意的是,整个认证流程需只使用一种单向散列函数算法。
87.以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以所述权利要求的保护范围为准。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献