王路阳,郭宇,朱依水,段宗涛
(长安大学 信息工程学院,陕西西安 710064)
随着大数据时代的到来,隐私问题逐渐突显出来,越来越多领域涉及到个人隐私,社会对个人隐私泄露等问题的重视程度不断增强,如果忽视了对个人隐私的保护,可能会带来财产安全、人身安全的威胁。现阶段监控安装与信息保存基本由个人进行管理,没有统一的机构或者平台进行管理,监控随意安放,造成个人隐私大量泄漏、侵权等问题,引起了社会关注。针对目前监控管理不佳带来的隐私泄露问题,该文提出一种基于区块链和IPFS的监控信息隐私保护机制。
该文将区块链技术、IPFS 技术运用到监控信息的隐私保护之中,目的在于统一管理监控信息,在一定程度上降低隐私泄露的风险。
Meiko[1]提到了大数据环境下的隐私问题比较突出,当前应该重点研究怎么保护隐私。目前提出了几种大数据安全与隐私保护关键技术[2-6],包括数据发布匿名保护技术、社交网络匿名保护技术、数据水印技术、传统车联网身份认证系统等,并且只有将技术手段与相关政策法规等相结合,才能更好地解决在大数据环境下的隐私保护问题。
区块链是一个分布式的共享账本,并且也是一种加密分布式数据库,其中智能合约应用于多个领域[7-8]。在该设计中,每个监控用户都是区块链的一个节点,各个节点中都可以上传信息到区块链。使用区块链技术可以方便用户直接有效地上传信息到区块链数据库,并且提高数据的安全性,避免使用传统数据库所带来的数据泄露风险及较为繁琐的操作。
文献[9-11]提到了物联网中的隐私问题,认为区块链技术可以提供强大的隐私保护机制,并将区块链技术和物联网融合来解决部分隐私问题。平中[12]等认为区块链智能合约在未来的发展中要保持其不变性,并将其运用到保护用户隐私中,提出一个受隐私保护的区块链系统,其中所有数据在约定的时间内被加密。章宁[13]等提出了一种将区块链技术运用到出租车乘客的隐私保护方案,能够有效防止乘客在打车软件中的隐私泄露。
星际文件系统(InterPlanetary File System,IPFS)是用于分布式存储和共享文件的网络传输协议,在区块链中利用IPFS 网络、哈希的特征,极大地减少了区块链数据,降低了以太坊的链规模增长[14]。Kumar[9]、Sun[15]等提出将区块链和IPFS 结合用于储存患者诊断报告等数据。目前已有部分研究将区块链和IPFS 结合用于某个领域[16-18]。
基于区块链的监控信息隐私保护模型设计将监控信息储存的位置与监控所有者进行分离。首先,监控所有者将监控信息提交到MAS 系统中,MAS 系统对数据进行加密后上传到IPFS 网络中;其次,将上传的数据生成的hash 写入区块链中进行保存。当申请人需要查看监控信息时,在MAS 系统中进行申请,通过系统的授权方可获取信息。该文使用IPFS网络、区块链以及MAS 系统来进行监控信息管理。
多Agent 系统是由多个Agent 组成的系统,单个Agent 是可以在特定环境中进行交互和通信的自治实体。在提出的模型中,涉及到的对象是各项任务(包括上传监控数据、申请查看监控数据)、区块链、IPFS 网络,根据对象特征,设计4 种类型的代理,分别是主代理、授权代理、数据清理代理以及加解密代理,构成了多代理系统(MAS)模型。
主代理:与其他3 种代理进行交互。接收用户(包括监控所有者和申请查看监控信息人员)发送的任务请求,根据不同的任务类型作出对应的处理,具体包括以下几个任务。监控所有者上传监控数据请求,对上传的监控数据的特征值(包括上传地址、上传时间、视频数据时间范围等)进行判断,如果时间范围已存在,则将任务返回给监控所有者,在数据一切正常的情况下,将数据写入IPFS、区块链的操作,同时将请求发送给数据清理代理。接收申请人提交查看监控数据请求,并将请求发送给授权代理。接收到授权代理发来的授权通知后,将数据信息发送给加解密代理,将解密后的数据发送给申请人。
授权代理:授予申请人查看目标监控的权限。接收到申请人发来的申请查看请求(包括申请人地址、角色分类),调用权限控制智能合约,根据角色类别决定是否授予查看权限。
数据清理代理:对监控所有者上传的视频数据作定期清理。接收到用户发来的请求,根据监控视频的上传时间,在IPFS 网络中清理监控所有者3 个月前上传的监控数据
加解密代理:对上传的视频数据进行加解密处理。
该文设计了一种基于区块链和IPFS 的监控信息隐私保护机制,通过各个角色之间的交互行为进行数据传递。在IPFS 数据库、MAS 系统以及区块链智能合约机制的共同作用下,一定程度上能够防止监控信息被随意泄露,从而保护了被监控者的隐私信息。隐私保护机制模型系统框图如图1 所示。
图1 隐私保护机制模型系统框图
基于区块链的隐私保护系统架构中存在如下几个角色:
监控所有者(该文用U 表示):监控所有者是拥有监控设备的人员,具有的功能权限包括授予和撤销MAS 系统的数据共享权限、上传监控信息到IPFS网络。
IPFS 数据库(该文用D 表示):存储监控信息的数据库。
区块链(该文用B 表示):存储监控数据对应的hash 值、录入监控所有者的信息、审核申请人的角色权限。
MAS 系统(该文用A 表示):多个代理组成的MAS 系统用于管理监控信息,具有的功能权限包括上传监控信息、接收申请人的查看监控申请、提供对应的目标监控信息。
申请人(该文用S 表示):包括监控所有者申请人、管理员申请人和其他申请人,各种申请人可以在MAS 系统中提出目标监控查看申请。
2.3.1 相关信息加密上传
用户(监控所有者(possessor)、管理者(Administrator))在平台注册后,MAS 系统根据用户个人信息、注册时间、注册地点、角色类别通过MD5 加密生成唯一的用户ID,包括possessorID、AdministratorID。
为了确保用户身份信息、监控信息在生成和上传中不被篡改,方案中使用GPG 加密工具生成公钥、私钥,因此,用户在系统上注册后将会得到初始的3 个数字密码,包括唯一的用户ID(possessorID/AdministratorID)、公钥(publicKey)、私钥(privateKey)。
当监控所有者需要将监控信息上传时,将利用公钥(publicKey)完成对信息(message)的加密,得到加密文件(EncryptedFile);将加密文件上传到IPFS网络后返回一个Qm 开头的Qmhash,再对加密文件和IPFS 返回的Qmhash 使用MD5 加密算法,得到新的唯一的Newhash,随后将Newhash 当作索引保存在区块链中。
2.3.2 监控信息获取解密过程
当需要调取监控信息时,需要获取Newhash,通过管理者的私钥进行解密后获取Qmhash,通过Qmhash 从IPFS 中下载对应的视频文件。下载得到相关信息的加密文件,除管理员外其他人无法解密,只能够允许在系统上注册过的管理员所持有的privateKey 才能解密,得到解密文件DecryptVideo,保证了信息的安全性。
基于区块链的隐私保护系统的工作流程涉及各个角色,这些角色都积极参与其中,中间某一环节出现问题,都无法完成最后的监控查看工作,具体工作流程如图2 所示。
图2 隐私保护机制模型流程图
核心流程说明如下:
用户登录:角色包括监控所有者、管理员、申请人。
监控所有者上传监控信息、申请人获取权限:MAS 系统连接IPFS 网络,监控所有者通过MAS 系统上传监控数据到IPFS 网络。数据上传到IPFS 网络中后会生成唯一的hash,MAS 系统对返回的hash 进行加密,随后将加密的hash 值加入到区块链中。申请人如果想要查看监控内容,必须通过MAS 系统申请并获得授权,不可以直接查看。被查看监控信息的时间、次数等信息会被MAS 系统记录到数据库中。监控所有者如果允许自己上传的监控信息被其他申请人查看,其必须向MAS 系统授予数据共享权限,否则撤销数据共享权限,除管理员外其余角色不可以查看监控信息。
查看监控:申请人在MAS系统中申请。申请人要查看需要的目标监控数据信息,必须在MAS 系统中提出申请,并通过授权。申请和查看的基本流程是申请人向MAS 系统发起申请查看监控命令,MAS 系统调用权限控制智能合约,核实申请人的权限,验证成功后从区块链中调取监控信息的hash 等信息,随后从IPFS 网络中找到对应数据,并将文件解密后发给申请人。如果验证失败,则提示申请人无查看权限。
授予和获得权限:监控所有者和管理员注册后,MAS 系统将其身份信息传入权限控制智能合约,合约通过提前设置的程序自动录入两者的权限信息。
IPFS 网络有能力储存大量文件,不像传统的数据库储存模式,用户在IPFS 网络上传文件后直接形成一个Qm 开头的hash 值,其他人想要访问这个文件只需要知道对应的hash 值即可。
由于MAS 系统与各参与者都有交互行为,所以A 需要储存交互时需要的一些必要信息。对MAS 系统进行定制化设计,需要用到的信息主要包括使用GPG 工具生成的公钥及私钥、上传到IPFS 网络中的视频文件对应加密后的hash 值、视频文件在区块链中的地址、用户的ID 等。
数据库涉及与监控所有者、申请人、IPFS 网络、区块链进行交互,完成数据交互操作,具体交易过程通过数据库中定义的方法实现,方法分为自定义的方法和通用的方法,其角色类图、角色方法(图中XID 表示X 的地址ID,仅用于传递普通的明文或加密信息,比如U 的邮箱地址)如图3 所示,方法描述如下:
图3 MAS系统UML类图
generate(V) 生成密钥V。该设计中需要生成非对称密钥。非对称密钥中的公钥用于对信息加密,私钥用于对信息解密。采用GPG 加密工具生成公钥和私钥。
send(X,Y)将信息Y 发送给角色X。Y 中包含需要发送的具体内容。
read(Y)读取IPFS网络、区块链中的Y信息内容,一般是通过搜索对应的ID 值、hash 值来找Y 信息。
write(Y)将信息Y 的内容写入区块链数据库中,Y 中包含区块字段的所需信息,生成对应的区块字段。
check(X)验证角色的权限,查看角色是否可以读取监控信息,一般使用if 语句,用true、false 返回对应的值。
accredit(X)授予特定用户“查看监控信息”权限。
hash(X)哈希计算函数,将信息X 进行哈希计算得到一串哈希值。
区块链的智能合约是该设计的核心部分,主要功能是审核申请人是否具有查看权限。在MAS 系统中,设定所有注册后的监控用户和部门都是以太坊用户。用户加入系统时,以太坊将唯一的私钥分配给用户,这个私钥将用于智能合约中的参数。在MAS 系统部署权限控制智能合约在以太坊公链上,并创建智能合约中的功能,具体功能有录入监控所有者的信息、审核申请人的角色权限。
权限控制智能合约由主合约与两个子合约组成,主合约保存监控所有者和管理员的账户信息,子合约完成权限申请部分与权限信息查询部分。具体的合约流程通过智能合约中定义的方法实现,方法的具体描述如下:
addUser(X,Y)录入用户的信息X 和Y。
addApply(X,Y)提交用户的“权限审核”申请。
checkUser(X)审核用户的权限。
主要方法流程:1)监控所有者和管理员在MAS系统注册后,MAS 系统创建合约,通过调用addUser()方法,录入用户的地址、角色。2)申请人在MAS 系统提交“申请查看监控”命令后,MAS 系统调用addApply()方法提交申请人的权限,调用checkUser()方法审核申请人的权限,主要审查申请用户的角色。
该文对MAS 系统进行定制化设计,连接IPFS 网络和以太坊实现该设计。以太坊是一个开源的有智能合约功能的公共区块链平台。平台连接以太坊的工具选用浏览器端常用的以太坊MetaMask 钱包插件,通过web3.js 库集可以与本地以太坊节点进行交互。在监控所有者上传过程中,MAS 系统采用GPG加密工具将视频信息进行加密,将加密后的视频文件在MAS 系统中上传到IPFS 网络中,传入IPFS 网络后会返回对应视频文件的hash。上传成功后,将加密的hash 通过以太坊平台加入到区块链中。由于采用GPG 加密工具,对视频文件进行加密时,使用的是GPG 生成的公钥,因此对文件的解密也必须使用GPG 生成的私钥。MAS 系统收到查看监控信息的申请后,调用区块链中的权限智能合约,验证申请人权限,通过审核后,MAS 系统从IPFS 网络中下载视频文件,并用其私钥进行解密。对于参与者而言,主要是围绕MAS 系统展开,即监控所有者与其他角色进行交互。该设计的技术架构图如图4 所示。
图4 技术架构图
目前,监控隐私问题一直备受关注,尤其在监控数据的保护方面缺乏强有力的技术支持。IPFS 技术和区块链的结合就能很好地解决这个问题,该文从流程到实现手段,全面刻画了上传数据、读取数据、权限授予等方面的区块链监控信息隐私保护细节,并使用加密算法对数据作进一步处理。由于IPFS是当前的新兴技术,目前的应用还主要在实验阶段,而区块链则使用较为广泛,因此,该文的研究还存在一定的局限性,未来可以尝试通过模拟仿真等方法对该设计进行更进一步的论证,并尝试推广到其他应用场景。