一种基于区块链技术的设备全生命周期管理系统及其方法
技术领域
本发明涉及信息安全领域,具体涉及一种基于区块链技术的设备全生命周期管理系统及其方法。
背景技术
目前大部分传感器设备在获取到传感器数据后,将传感器数据传递给设备商并使用云存储方案存储于设备商数据库中。设备的出厂信息和销售信息,由设备商收集与存储,并且其中的销售信息多与用户手机号或姓名等个人信息存在强绑定关系。故存在以下问题:
1.个人数据难以确权。数据持有者通常是设备商而非用户,用户同意权、知情权、异议权等权利被剥夺,一般只具有查阅数据的权利。
2.数据可靠性差且不可证伪。如果数据存储于设备商数据库,那么设备商对云存储数据库具有绝对控制权,从而能够篡改用户数据,并且设备商数据库也存在被攻破的可能性;如果数据存储于用户手中,就不能避免用户对数据的篡改。数据存在篡改的可能性导致相关研究机构与数据持有者之间难以达成数据信任关系,从而破坏了数据本身拥有的价值。
3.用户隐私难以得到保护。通常数据与用户个人信息之间存在强绑定关系,存在泄露个人信息风险。广泛存在的隐私泄露风险,严重影响了用户数据共享的积极性。
4.设备来源、设备所有者无法确定。即使有相关的出厂信息和数据信息云存储,这些相关信息因为是中心化存储,只要权限足够或者拥有攻破云存储服务器的攻击手段,就可以更改甚至生成伪造信息。
5.数据分享对非权威设备商支持性差。只有规模大或具备业内权威水平的设备商的设备产生的数据易被信任,规模较小的设备商开发的设备产生的数据往往不被认可。
发明内容
本发明是为了解决上述现有技术存在的不足之处,提供一种基于区块链技术的设备全生命周期管理系统及其方法,以期能利用区块链技术和密钥签名技术,实现设备全生命周期区块链存储,从而能为设备产生的数据提供数据可靠性保证和数据来源查询支持,提高数据价值,使数据具有分享性,并且可以保护设备使用者的隐私及数据所有权。
本发明为解决技术问题采用如下技术方案:
本发明一种基于区块链技术的设备全生命周期管理系统的特点是包括:用户终端、设备商、设备、区块链上的智能合约和区块链下的分布式数据库;
所述用户终端包括:用户密钥生成模块、设备通信模块、数据封装模块;
所述设备商包括:设备商密钥生成模块、设备商密钥分发模块;
所述设备包括:数据生成模块、设备存储模块、设备签名模块;
所述区块链上的智能合约包括:智能合约接口、设备全生命周期管理合约、数据防篡改合约;
所述设备商密钥生成模块生成自身的设备商公私钥对,并通过所述智能合约接口将设备商的公钥发送到所述设备全生命周期管理合约进行注册;
所述设备商密钥生成模块生成设备公私钥对后,通过所述设备商密钥分发模块将所述设备公私钥对分发保存到相应设备的设备存储模块中,并通过所述智能合约接口将设备商的公钥和设备的公钥进行绑定后发送到所述设备全生命周期管理合约;
所述设备全生命周期管理合约将绑定后的设备商公钥和设备公钥一起存储于所述区块链下的分布式数据库中,并在所述分布式数据库中生成相应的出厂日志记录;
所述用户密钥生成模块生成所述用户终端的公私钥对,并通过所述设备通信模块将用户终端的公钥发送至所述设备签名模块;
所述设备签名模块对所述用户终端的公钥进行签名,得到签名文件后,通过所述智能合约接口将所述签名文件传输给所述设备全生命周期管理合约;
所述全生命周期管理合约对所述签名文件进行验证,若验证成功,则将所述设备的公钥和所述用户终端的公钥保存在区块链下的分布式数据库中,并在所述分布式数据库中生成相应的绑定日志记录;若验证失败,则不进行保存和生成操作;
所述数据生成模块生成元数据,并根据所述元数据构造相应的数据基本信息,所述数据基本信息为所述设备商的公钥、所述设备的公钥、所述用户终端的公钥和当前时间戳;
若所述设备存储模块能存储全部的元数据,则用所述设备的私钥对所述元数据和相应的数据基本信息两者的哈希值进行签名,得到数据签名文件后,与所述数据基本信息以及所述元数据一起发送到所述数据封装模块;
若所述设备存储模块无法存储全部的元数据时,则将所述元数据直接发送至所述数据封装模块,再用所述设备的私钥对所述数据基本信息的哈希值进行签名,得到基本信息签名文件后,定时将所述基本信息签名文件发送到所述数据封装模块;
所述数据封装模块获得所述元数据、所述数据基本信息、所述数据签名文件或基本信息签名文件后,将三者封装成一个数据包;并在获取到一定量的数据包后,将所述一定量的数据包整合为一个数据区块,将所述数据区块的哈希值过所述智能合约接口保存在所述数据防篡改合约中,再将从所述智能合约接口中获取的数据区块序列号存储在所述数据区块中。
本发明一种基于区块链技术的设备全生命周期管理方法的特点也在于应用于由m个用户终端、任意一个设备商、n个设备、区块链上的智能合约和区块链下的分布式数据库所构成的系统中,并按如下步骤进行:
步骤1.所述设备商生成自身的设备商公私钥对,将设备商的公钥发送到所述智能合约中进行注册;
步骤2.所述设备商生成n个设备公私钥对后,将相应的设备公私钥对分发保存到相应的n个设备中,并将n个设备公钥分别与设备商的公钥进行绑定后发送给所述智能合约;
步骤3.所述智能合约根据绑定后的设备商公钥和设备公钥,在所述分布式数据库中生成n个出厂日志记录;
步骤4.以第i个设备作为目标设备,判断所述目标设备是否对应一个用户终端,若是,则执行步骤5;否则表示所述目标设备对应多个用户终端,则直接执行步骤8;
步骤5.所述目标设备所对应的用户终端生成自身的公私钥对,并将用户终端的公钥发送至所述目标设备;
步骤6.所述目标设备对所述用户终端的公钥进行签名,得到签名文件后,将所述签名文件传输给所述智能合约;
步骤7.所述智能合约对所述签名文件进行验证,若验证成功,则将所述目标设备的公钥和对应的用户终端的公钥保存在所述分布式数据库中,并在所述分布式数据库中生成相应的绑定日志记录;若验证失败,则不进行保存和生成操作;
步骤8.与所述目标设备对应m个用户终端中,将当前使用目标设备的用户终端将自身的用户终端公钥发送至所述目标设备;
步骤9.所述目标设备生成元数据,并根据所述元数据构造相应的数据基本信息,所述数据基本信息为所述设备商的公钥、所述设备的公钥、所述用户终端的公钥和当前时间戳;
步骤10.若所述目标设备能存储全部的元数据,则用所述目标设备的私钥对所述元数据和相应的数据基本信息两者的哈希值进行签名,得到数据签名文件后,与所述数据基本信息以及所述元数据一起发送到当前使用的目标设备的用户终端;
若所述目标设备无法存储全部的元数据时,则将所述元数据直接发送至所述当前使用的目标设备的用户终端,再用所述目标设备的私钥对所述数据基本信息的哈希值进行签名,得到基本信息签名文件后,定时将所述基本信息签名文件发送到所述当前使用的目标设备的用户终端;
步骤11.所述当前使用的目标设备的用户终端获得所述元数据、所述数据基本信息、所述数据签名文件或基本信息签名文件后,将三者封装成一个数据包;并在获取到一定量的数据包后,将所述一定量的数据包整合为一个数据区块,将所述数据区块的哈希值保存到所述智能合约中,再将从所述智能合约中获取的数据区块的哈希值所保存的地址存储在所述数据区块中;
步骤12.判断所述当前设备是否会被所述设备商回收销毁,若会,则所述设备商访问所述智能合约,将所述当前设备的公钥状态设置为已销毁,并在所分布式数据库生成相应的销毁日志记录;若不会,则无操作。
与现有技术相比,本发明的有益效果体现在于:
1、本发明通过一种设备全生命周期管理系统,将设备在出厂、用户绑定、数据产生及回收销毁四个重要生命周期过程中的关键信息,在区块链中完成存储,从而让设备产生的数据具有可证伪、可溯源等属性,增强了设备数据可靠性,提高了设备数据价值,使设备数据变现成为可能。
2、本发明通过将元数据和数据基本信息发送至用户终端,由用户终端打包并分配数据区块存储位置。通过用户终端,用户可以选择本地存储、分布式数据库存储、设备商云服务器存储等存储方案,数据所有权归于用户,解决了个人数据无法确权的问题。
3、本发明通过数据防篡改合约,将数据区块哈希值保存在区块链中,并将哈希值在区块链中的保存地址保存在数据区块中。当获得数据区块后,可以通过区块链保存地址获取其哈希值,在比对自身哈希值后,即可判断数据是否被篡改,有效保证了数据可靠性,为数据证伪提供了方法。
4、本发明通过使用用户终端自身的公钥来标识用户,而不是使用手机号或邮箱等个人信息,从而避免了用户隐私泄露,提高了用户数据共享的积极性。
5、本发明使用设备全生命周期合约,生成设备出厂日志和设备绑定日志,通过设备出厂日志的设备商公钥和区块链区块生成时间戳,可以确定设备来源和设备出厂大致时间;通过设备绑定日志和区块链区块生成时间戳,可以确定设备所有者和设备绑定时间。从而实现了去中心化存储设备来源和设备所有者等信息,保证了设备数据可溯源。
6、本发明通过区块链技术保证数据信息可靠,而不是通过设备商信用保证数据信息可靠,并且通过出厂日志等大大提升了设备商的造假成本,减少了设备商造假可能,使得非权威设备商的数据也能获得其他机构的信任,从而能进行数据分享。
附图说明
图1为本发明系统结构示意图;
图2为设备全生命周期时序图;
图3为数据封装示意图。
具体实施方式
本实施例中,一种基于区块链技术的设备全生命周期管理系统,如图1所示,包括:用户终端、设备商、设备、区块链上的智能合约和区块链下的分布式数据库;
区块链为以太坊区块链,区块链下的分布式数据库即以太坊区块链本身。
用户终端为用户所持的智能终端应用如:台式计算机、平板电脑、智能手机等终端的应用。用户终端主要用于实现以太坊钱包功能、连接设备、将获取的设备数据进行封装等,用户终端包括:用户密钥生成模块、设备通信模块、数据封装模块;
设备商是指生产开发设备的厂家或者公司,主要用于区分设备种类和设备来源,设备商包括:设备商密钥生成模块、设备商密钥分发模块;
设备为具备有通信功能的硬件设备,其本身可以产生数据或者可以通过传感器获取传感数据,这里以配备蓝牙的心率测量仪器为例。设备包括:数据生成模块、设备存储模块、设备签名模块;
区块链上的智能合约包括:智能合约接口、设备全生命周期管理合约、数据防篡改合约其中设备全生命周期合约和数据防篡改合约是使用Solidity语言编写,通过以太坊Geth客户端发送合约部署交易部署到区块链上。设备商和用户终端可以发送交易至智能合约地址从而调用合约内方法;
设备商密钥生成模块生成自身的设备商公私钥对,并通过智能合约接口将设备商的公钥发送到设备全生命周期管理合约进行注册。密钥生成模块使用ECDSA椭圆曲线算法生成密钥。设备全生命周期管理合约会将设备商公钥以设备商列表的形式保存在分布式数据库中,并生成设备公钥列表用于存储该设备商生产的设备的公钥;设备商在注册后,需要在官网中公布自身公钥,便于他人分辨该设备商公钥属于何种设备商;
设备商密钥生成模块生成设备公私钥对后,通过设备商密钥分发模块将设备公私钥对分发保存到相应设备的设备存储模块中,将设备公钥作为设备的唯一标识,并通过智能合约接口将设备商的公钥和设备的公钥进行绑定后发送到设备全生命周期管理合约,设备商会使用自身私钥签名发送交易;
设备全生命周期合约在判断交易签名为设备商私钥签名后,查询设备商列表,将设备公钥存储于该设备商的设备公钥列表,设备全生命周期管理合约将绑定后的设备商公钥和设备公钥一起存储于区块链下的分布式数据库中,并在分布式数据库中生成相应的出厂日志记录,出厂日志记录包括设备商公钥、设备公钥、当前区块链区块时间戳,并以设备商公钥和设备公钥为索引。设备商监听以自身公钥为索引的出厂日志记录,可以及时获取设备出厂日志情况;他人可以通过搜索以设备公钥为索引的出厂日志记录,可以获取设备所属的设备商和设备出厂的大致时间;
用户密钥生成模块生成用户终端的公私钥对,并通过设备通信模块将用户终端的公钥发送至设备签名模块;
设备签名模块对用户终端的公钥进行签名,签名方法为:先使用Sha-3keccak哈希算法对用户终端公钥取哈希后获得32byte的哈希值,然后对该哈希值进行签名。得到签名文件后,通过智能合约接口将签名文件传输给设备全生命周期管理合约,这里因为心率测量仪器不具备直接与智能合约通信能力,所以将签名文件传输给用户终端由用户终端发送。发送签名文件时,需要附带上用户终端公钥、设备公钥以及是否解绑前用户条件,是否解绑前用户条件可以缺省,默认为解绑前用户;
全生命周期管理合约对签名文件进行验证,验证交易签名是否为设备私钥或者用户终端私钥、签名文件使用的是否为设备私钥、签名对象是否为用户终端公钥的哈希值,若全为是则验证成功。若验证成功,则将设备的公钥和用户终端的公钥保存在区块链下的分布式数据库中,并在分布式数据库中生成相应的绑定日志记录,绑定日志记录以设备公钥为索引;若验证失败,则不进行保存和生成操作;
用户打开设备后,设备可以通过传感器接收到用户心率数据,数据生成模块生成元数据,元数据即产生的心率数据,并根据元数据构造相应的数据基本信息,数据基本信息为设备商的公钥、设备的公钥、用户终端的公钥和当前时间戳;
若设备存储模块能存储全部的元数据,则用设备的私钥对元数据和相应的数据基本信息两者的哈希值进行签名,获取哈希值的方法为对数据基本信息和元数据使用Sha-3Keccak哈希算法取哈希值,得到数据签名文件后,与数据基本信息以及元数据一起发送到数据封装模块;
若设备存储模块无法存储全部的元数据时,则将元数据直接发送至数据封装模块,再用设备的私钥对数据基本信息的哈希值进行签名,获取哈希值的方法为对数据基本信息使用Sha-3Keccak哈希算法取哈希值。得到基本信息签名文件后,定时将基本信息签名文件发送到数据封装模块;
因为心率测量仪器往往为连续传输心率数据,所以我们采取第二种方案,将每次获取的心率数据直接传输给用户终端,并每隔三十分钟传输一次数据基本信息和基本信息签名文件。
数据封装模块获得元数据、数据基本信息、数据签名文件或基本信息签名文件后,将三者封装成一个数据包,其中数据产生方式和数据结构如图3所示,数据以Json格式存储,数据基本信息、数据签名文件或基本信息签名文件作为数据包的头,元数据作为数据包的主体,元数据包括此次签名文件产生时到下一次签名文件产生时的所有心率数据,在头中预留Merkle tree和区块链保存地址两者的位置,以保证每个数据包都可以通过Merkletree和区块链保存地址独立验证数据可靠性;并在获取到一定量的数据包后,将一定量的数据包整合为一个数据区块,将数据区块的哈希值过智能合约接口保存在数据防篡改合约中,数据区块的哈希值获取方法为:通过获取每个数据包的Sha256哈希值后,使用所有数据包使用Sha256算法获取的哈希值构造Merkle tree,将Merkle tree数据结构保存在数据包头,然后将获得Merkle Tree根结点作为整个数据区块的哈希值。再将从智能合约接口中获取的数据区块序列号存储在数据区块中,每个设备均有自己的数据区块序列号,数据区块序列号初始值为0,每当提交一次该设备的数据区块哈希值后,数据区块序列号加一,通过本地运行数据防篡改合约,可以获取到当前设备的数据区块序列号。将该数据区块序列号保存在所有数据包头中,通过数据包头中的设备商公钥、设备公钥以及数据区块序列号,即可在数据防篡改合约中获取当前数据区块的Merkle tree根结点,从而验证数据包是否被篡改。
本实施例中,一种基于区块链技术的设备全生命周期管理方法,其时序图如图2所示,应用于由m个用户终端、任意一个设备商、n个设备、区块链上的智能合约和区块链下的分布式数据库所构成的系统中,其中一个设备商会有多个设备,每个设备可能有一个或多个用户终端,并按如下步骤进行:
步骤1.设备商生成自身的设备商公私钥对,将设备商的公钥发送到智能合约中进行注册;
步骤2.设备商生成n个设备公私钥对后,将相应的设备公私钥对分发保存到相应的n个设备中,并将n个设备公钥分别与设备商的公钥进行绑定后发送给智能合约;同一个设备商可以生产多台设备,每台设备都需要独立的公私钥对来标识,私钥做为设备签名使用,不对外开放。
步骤3.智能合约根据绑定后的设备商公钥和设备公钥,在分布式数据库中生成n个出厂日志记录;出厂日志会以设备公钥和设备商公钥作为索引,设备商可以通过查询设备商公钥相应的日志查找自己已生成的出厂记录,他人可以查询设备公钥以获取相应设备的出厂日志。
步骤4.以第i个设备作为目标设备,判断目标设备是否对应一个用户终端,若是,则执行步骤5;否则表示目标设备对应多个用户终端,则直接执行步骤8;如果是一个设备为多个用户终端所使用,则表示其为共享设备,绑定用户所产生的花费较大,故不进行绑定或多用户同时绑定。
步骤5.目标设备所对应的用户终端生成自身的公私钥对,并将用户终端的公钥发送至目标设备,使用用户公钥作为用户的身份唯一标识,不使用个人信息来标识用户,有效保护用户隐私。当公钥存在泄漏个人隐私风险时,可以通过变换公私钥对来避免个人信息进一步泄漏;
步骤6.目标设备对用户终端的公钥进行签名,得到签名文件后,将签名文件传输给智能合约,多数情况下设备无法直接访问智能合约接口,实施时主要是按如下途径:设备将签名文件传输给用户终端,用户终端用自身私钥签名交易,将签名文件传输给智能合约;
步骤7.智能合约对签名文件进行验证,若验证成功,则将目标设备的公钥和对应的用户终端的公钥保存在分布式数据库中,并在分布式数据库中生成相应的绑定日志记录;若验证失败,则不进行保存和生成操作;
步骤8.与目标设备对应m个用户终端中,将当前使用目标设备的用户终端将自身的用户终端公钥发送至目标设备,因为存在多个用户终端的可能,为了保证用户终端公钥准确,每次使用设备时,将重新传输用户终端公钥;
步骤9.目标设备生成元数据,并根据元数据构造相应的数据基本信息,数据基本信息为设备商的公钥、设备的公钥、用户终端的公钥和当前时间戳;
步骤10.若目标设备能存储全部的元数据,则用目标设备的私钥对元数据和相应的数据基本信息两者的哈希值进行签名,得到数据签名文件后,与数据基本信息以及元数据一起发送到当前使用的目标设备的用户终端;
若目标设备无法存储全部的元数据时,则将元数据直接发送至当前使用的目标设备的用户终端,再用目标设备的私钥对数据基本信息的哈希值进行签名,得到基本信息签名文件后,定时将基本信息签名文件发送到当前使用的目标设备的用户终端;
步骤11.当前使用的目标设备的用户终端获得元数据、数据基本信息、数据签名文件或基本信息签名文件后,将三者封装成一个数据包;并在获取到一定量的数据包后,将一定量的数据包整合为一个数据区块,将数据区块的哈希值保存到智能合约中,再将从智能合约中获取的数据区块的哈希值所保存的地址存储在数据区块中;
步骤12.判断当前设备是否会被设备商回收销毁,若会,则设备商访问智能合约,将当前设备的公钥状态设置为已销毁,并在所分布式数据库生成相应的销毁日志记录;若不会,则无操作。为了防止硬件公私钥对被盗取滥用,在设备商回收后,需要进行销毁操作,表示之后该公私钥对不再标识该设备,销毁日志后使用该设备公私钥对进行可靠性保证的数据为虚假数据。