一种基于区块链和知悉范围加密的电子文件访问控制方法与流程

文档序号:21845003发布日期:2020-08-14 16:57阅读:269来源:国知局
一种基于区块链和知悉范围加密的电子文件访问控制方法与流程

本发明属于电子文件安全管控领域,具体涉及一种基于区块链和知悉范围加密的电子文件访问控制方法。



背景技术:

当前,在电子政务网和企业网中,越来越多的信息以电子文件的形式进行存储和分发,电子文件已成为各级党政机关、部门与企事业等单位的重要数据资产之一。一旦发生电子文件失泄密事件,将会严重影响到各级党政机关、部门与企事业等单位的核心利益与自身安全,甚至威胁到国家安全与利益。如何保证这些电子文件的安全性和共享性,已成为各级党政机关、部门与企事业等单位和组织面临的管理难题。

各级党政机关、部门与企事业等单位网络中涉及众多的商业秘密或国家秘密,根据保密管理最小化原则,需要控制在最小的知悉范围,防止泄密。对电子文件进行访问控制是提高电子文件安全性的重要途径,但若以明文形式存储这些电子文件,虽然使得文件共享变得容易,但却无法保证文件的安全性。为了保证电子文件的安全性,现有技术通常是对文件进行加密后存储在服务器中,但对文件进行加密又使得文件的共享变得非常困难,而且还存在文件密文是否被恶意篡改,文件密文是否完整的问题。利用传统的加解密方式,现有对文件进行共享的方式是,每当访问者向文件拥有者请求访问电子文件时,文件拥有者利用访问者的公钥加密电子文件后再传给访问者,访问者收到电子文件密文后再利用自己的私钥解密,得到电子文件明文。这种通过公钥加解密实现数据共享的方式,增加了数据拥有者的开销和负担。另外,目前尚不能根据知悉范围对电子文件进行“一文一密”的访问控制,无法有效防止用户越权访问电子文件的行为。因此,如何对电子文件进行安全存储和共享是亟需解决的问题。



技术实现要素:

本发明的目的是针对当前技术面临的电子文件安全性和共享性问题,提出一种基于区块链和知悉范围加密的电子文件访问控制方法。

电子文件以密文的形式存储在链下的数据库中,区块链上存储该电子文件的知悉范围、密钥分发多项式以及该文件密文在数据库中的位置索引,既保证了密文文件的完整性和不可篡改性,实现了文件存储的安全性,又保证了文件的高效共享。实现了对电子文件根据知悉范围进行加密和访问控制,不同电子文件对应不同的密钥,即“一文一密”机制。本发明基于区块链技术,一方面防止了重要电子文件信息的泄露,另一方面又确保知悉范围内的合法用户能够解密并访问自己所需的电子文件。

本发明是通过以下方法实现的:

步骤(1).系统初始化;具体是:

(1-1).每个用户向系统提出注册申请,并获取其真实身份信息对应的唯一的身份标识id号idi,用户集合表示为u={u1,u2,…,un},ui是身份标识号为idi的用户,i∈(1,2,…,n),n表示系统中注册有n个用户;

(1-2).每个用户ui在注册成功并登录系统后,用户端执行公私钥对生成算法,生成一对公私钥对(pki,ski),存储在用户端供用户使用;

(1-3).用户ui将公钥pki和自己的个人身份信息发送给证书颁发机构,证书颁发机构将其存储到用户信息列表,并为该用户颁发数字证书;

(1-4).证书颁发机构为每个注册用户ui选择一个唯一的秘密值,作为用户ui的个体私钥si,si∈fq,fq为有限域;将si通过用户ui的公钥pki加密后发送给用户ui;

(1-5).用户ui通过自己的私钥ski解密后得到自己的个体私钥si,并存储到用户端。

步骤(2).加密上传电子文件,获取文件密文的存储位置索引;具体是:

(2-1).设置电子文件知悉范围并写入区块链;

当电子文件拥有者ua需要上传电子文件j时,首先在用户端设置该电子文件的知悉范围gj,知悉范围gj为可以访问电子文件j的合法用户集合,gj∈u;然后创建一个区块链交易,把电子文件j的标识符fidj、知悉范围gj、ua的公钥pka、当前的时间戳tj以及ua对上述信息的签名写入交易中;最后广播该交易到区块链网络上;区块链网络节点对该交易进行验证,验证通过后,将该交易存入正在生成的区块,并进一步写入区块链;

(2-2).为电子文件j生成加密密钥和密钥分发多项式,并把密钥分发多项式写入区块链;

证书颁发机构获取区块链上的交易信息中的文件标识符和知悉范围信息,从有限域fq中为电子文件j随机选择一个加密密钥kj,并根据电子文件j的知悉范围gj构建密钥kj的分发多项式:

首先,利用gj中合法用户的个体私钥si,构造访问多项式其中vidj为虚拟标识,它的值不同于所有用户的个体私钥,为每个电子文件和访问多项式λj(x)随机选取的,x是多项式的自变量;对于知悉范围内的合法用户ui,λj(si)=1;对于知悉范围外的非法用户uf,λj(sf)为一个随机值;然后,计算密钥分发多项式最后,将电子文件j的标识符fidj、密钥分发多项式φj(x)、证书颁发机构的公钥pkca、当前时间戳tj以及证书颁发机构对上述信息的签名写入交易中,然后广播该交易到区块链网络上;区块链网络节点对该交易进行验证,验证通过后,将该交易存入正在生成的区块,并进一步写入区块链;

(2-3).加密电子文件上传至文件存储服务器,获取文件的存储位置索引,具体是:

ua的用户端首先根据在区块链上获得的密钥分发多项式φj(x)和用户的个体私钥sa计算恢复出电子文件j的加密密钥kj,kj=φj(sa);

使用加密算法e和加密密钥kj对电子文件j的明文数据mj进行加密,得到电子文件j的密文并计算该密文的哈希值

将电子文件j的密文上传至文件存储服务器进行存储,得到电子文件j的密文存储位置索引urlj;

把电子文件j的文件标识符fidj、文件存储位置索引urlj、文件密文的哈希值ua的公钥pka、当前的时间戳tj和ua对上述信息的签名写入区块链交易中,然后广播该交易到区块链网络上;区块链网络节点对该交易进行验证,在验证通过的情况下,区块链网络节点将该交易置入区块,并写入区块链。

步骤(3).下载电子文件密文并解密;

下载电子文件密文具体是:当用户ub申请访问电子文件j时,通过在区块链上获得的文件存储位置索引urlj申请从文件存储服务器下载电子文件j的密文服务器检查用户ub是否在电子文件j的知悉范围内,若不在电子文件j的知悉范围内,则拒绝该下载申请,用户ub访问电子文件失败;若用户ub在电子文件j的知悉范围内,则允许该用户ub下载电子文件j的密文文件存储服务器把该下载电子文件j的行为记录在区块链上;

解密电子文件具体是:用户ub的用户端根据在区块链上获得的电子文件j的密文的哈希值和从文件存储服务器下载的电子文件j的密文验证密文的完整性;若验证密文不完整,则说明密文已被篡改,不进行解密;若验证密文完整,则进行解密;用户ub的用户端根据在区块链上获得的密钥分发多项式φj(x)和用户ub的个体私钥sb计算恢复出电子文件j的解密密钥kj,kj=φj(sb);使用解密算法d和解密密钥kj对电子文件j的密文进行解密,恢复出明文数据用户ub可以对电子文件j进行阅读和查看。

步骤(4).密钥更新;

当电子文件j的知悉范围发生改变时,若在知悉范围内增加新的用户,则只需要根据新的知悉范围为其生成新的密钥分发多项式,并写入到区块链上即可;若删除在知悉范围内的用户,则需要对该电子文件的加密密钥、密钥分发多项式以及电子文件的密文进行更新,以防止已不在知悉范围内的用户继续访问该电子文件;具体方法是:

(4-1).从域fq中为电子文件j随机选择一个新的电子文件加密密钥kj′;

(4-2).计算新的密钥分发多项式

(4-3).将密钥分发多项式φ′j(x)转为区块链交易,然后广播到区块链网络上,区块链网络节点将该交易置入区块,并写入区块链;

(4-4).采用新的加密密钥k′j加密电子文件j的明文,生成电子文件j的新的密文,并计算新密文的哈希值;

(4-5).将电子文件j新的密文上传至文件存储服务器进行存储,得到新的文件存储位置索引;

(4-6).把电子文件j的文件标识符、新的文件存储位置索引、新密文的哈希值、ua的公钥、当前的时间戳、以及ua对上述信息的签名写入区块链交易,然后广播到区块链网络上,区块链网络节点将该交易置入区块,并写入区块链。

所述区块链网络是由多个区块链网络节点组成,该区块链网络节点包括用户设备,证书颁发机构和文件存储服务器,以及其他任意形式的节点;区块链网络节点负责运行共识算法,生成区块,维护所生成的区块链,区块链为联盟链或私有链。

进一步,步骤(2)中加密算法e采用对称加密算法,步骤(3)中解密算法d与加密算法e使用相同的密钥。

本发明使用区块链技术保证了密文文件的完整性和不可篡改性,保证了文件存储的安全性;区块链上的密文文件存储索引和密钥分配多项式保证了文件的高效共享。同时减轻了数据拥有者的开销和负担。

本发明基于区块链技术实现了根据知悉范围对电子文件进行加密和访问控制,解决了电子文件共享中的安全问题,特别是访问权限控制问题。电子文件在应用系统流转过程中始终处于加密状态,在密文情况下实现了电子文件的共享,既防止了重要电子文件信息的泄露,又确保了知悉范围内的合法用户能够访问自己所需的电子文件,利用技术手段有效保护了电子文件的安全。

本发明提高了电子文件在存储和共享过程中的安全性,实现了“一文一密”机制。不同电子文件对应不同的加解密密钥,且只有知悉范围内的用户才可以访问并解密电子文件,把对电子文件的访问控制具体到个人的控制,实现了电子文件的细粒度访问控制。

附图说明

图1为本发明方法总流程图

图2为本发明实施例的初始化流程图;

图3为本发明实施例的文件拥有者加密上传电子文件,获取文件存储位置索引流程图;

图4为本发明实施例的文件访问者访问电子文件流程图;

具体实施方式

下面结合附图对本发明的实施作进一步详细说明。

如图1所示,一种基于区块链和知悉范围加密的电子文件访问控制方法,具体流程是:

步骤1.系统初始化;

步骤2.文件拥有者根据知悉范围加密上传电子文件,获取文件密文的存储位置索引;

步骤3.文件访问者下载电子文件密文并解密,得到电子文件明文;

步骤4.当电子文件的知悉范围发生改变时更新密钥。

为了更好地理解本发明实施例中的方法与过程,以一次电子文件共享过程进行详细说明。该过程中,用户ua是文件的拥有者,用户ub是文件的访问者。为了对用户进行管理和验证,用户ua和用户ub在首次登陆系统时需要进行初始化,过程如图2所示,具体是:

(1).用户ua和用户ub用户向系统提出注册申请,并获取其真实身份信息对应的唯一的身份标识id号ida和idb。

(2).用户ua和用户ub在注册成功并登录系统后,用户端执行公私钥对生成算法,分别生成一对公私钥对(pka,ska)和(pkb,skb),并存储在用户端供用户使用。

(3).用户ua和用户ub将公钥pka和pkb和自己的个人身份信息发送给证书颁发机构。(4).证书颁发机构把上述信息存储到用户信息列表,并为用户ua和用户ub颁发数字证书。所述证书颁发机构负责系统用户的数字证书的发放与管理,同时还负责密钥的分发与管理。

(5).证书颁发机构为用户ua和用户ub分别选择一个唯一的秘密值sa∈fq和sb∈fq,作为用户的个体私钥;并用用户ua和用户ub的公钥pka和pkb加密后分别发送给用户ua和用户ub。

(6).用户ua和用户ub分别用自己的私钥解密后得到自己的个体私钥,并存储到用户端。

本发明实施例的文件拥有者ua根据知悉范围加密上传电子文件,获取文件存储位置的过程如图3所示,具体是:

步骤a1:设置电子文件知悉范围并写入区块链,具体是:

(1).用户ua在用户端为电子文件j设置知悉范围。所述知悉范围是指可以访问该电子文件的合法用户。电子文件j的合法用户集合为gj,gj∈u。

(2).创建一个区块链交易,把电子文件j的标识符fidj、电子文件j的知悉范围gj、ua的公钥pka、当前的时间戳tj以及ua的签名写入交易中,并广播该交易到区块链网络。

(3).区块链网络节点把该交易存入正在生成的区块,并进一步写入区块链。

区块链网络是由多个网络节点组成,该网络节点可以包括用户设备,证书颁发机构和文件存储服务器,也可以包括其他任意形式的节点。区块链网络节点负责运行共识算法,生成区块,维护所生成的区块链。区块链为联盟链或私有链。

步骤a2:为电子文件j生成加密密钥和密钥分发多项式,并把密钥分发多项式写入区块链。

证书颁发机构获取区块链上的交易信息中的文件标识符和知悉范围信息,从有限域fq中为电子文件j随机选择一个加密密钥kj,并根据电子文件j的知悉范围gj构建密钥kj的分发多项式,具体是:

(1).利用集合gj中合法用户的个体私钥,构造访问多项式其中vidj为虚拟标识,它的值不同于所有用户的个体私钥,是为每个电子文件和λj(x)随机选取的。对于知悉范围内的合法用户ui,λj(si)=1。而对于知悉范围外的非法用户uf,λj(sf)是一个随机值。虚拟标识vidj的目的是为了使得所有λj(x)中即使包含相同的合法用户个体私钥也互不相同。

(2).计算密钥分发多项式该密钥分发多项式保证知悉范围内的合法用户可计算得到加密密钥kj,而知悉范围外的非法用户无法计算得到加密密钥kj,只能得到一个随机值。

(3).把电子文件j的标识符fidj、密钥分发多项式φj(x)、证书颁发机构的公钥pkca、当前时间戳tj以及证书颁发机构对上述信息的签名写入交易中,并广播该交易到区块链网络。

(4).区块链网络节点将该交易存入正在生成的区块,并进一步写入区块链。

步骤a3:加密电子文件上传至文件存储服务器,获取文件的存储位置索引,具体是:

(1).ua的用户端首先根据在区块链上获得的密钥分发多项式φj(x)和用户的个体私钥sa计算恢复出电子文件j的加密密钥kj,kj=φj(sa)。

(2).使用加密算法e和加密密钥kj对电子文件j的明文数据mj进行加密,得到电子文件j的密文并计算该密文的哈希值加密所用的加密算法为对称加密算法,如sm4、aes等,因此电子文件加密密钥也是电子文件解密密钥。

(3).把电子文件j的密文上传至文件存储服务器进行存储。服务器给用户返回电子文件j的密文存储位置索引urlj。

(4).把电子文件j的文件标识符fidj、文件存储位置索引urlj、文件密文的哈希值ua的公钥pka、当前的时间戳tj和ua对上述信息的签名写入区块链交易中,并广播该交易到区块链网络。

(5).区块链网络节点将该交易置入正在生成的区块,并进一步写入区块链。

如图4所示,文件访问者ub下载电子文件密文并解密,得到电子文件明文的具体过程包括以下步骤:

步骤b1:下载电子文件密文,具体步骤为:

(1).用户ub通过在区块链上获得的文件存储位置索引urlj申请从文件存储服务器下载电子文件j的密文

(2).服务器检查用户ub是否在电子文件j的知悉范围内,若不在电子文件j的知悉范围内则拒绝该下载申请,用户ub访问电子文件失败;若用户ub在电子文件j的知悉范围内,则允许该用户ub下载电子文件j的密文

(3).文件存储服务器把该下载电子文件j的行为记录在区块链上,从而,当文件信息泄露发生在线下时,有助于调查和确定责任的归属。

步骤b2:解密电子文件。具体步骤为:

(1).用户ub的用户端根据在区块链上获得的电子文件j的密文的哈希值和从文件存储服务器下载的电子文件j的密文验证密文的完整性。若验证密文不完整,则说明密文已被篡改,不进行解密;若验证密文完整,则进行解密。

(2).用户ub的用户端根据在区块链上获得的密钥分发多项式φj(x)和用户ub的个体私钥sb计算恢复出电子文件j的解密密钥kj,kj=φj(sb)。

(3).使用解密算法d和解密密钥kj对电子文件j的密文进行解密,恢复出明文数据则用户ub可以对电子文件j进行阅读和查看。

当电子文件j的知悉范围发生改变时,需要更新密钥或密钥分发多项式。若在知悉范围内增加新的用户,则只需要根据新的知悉范围为其生成新的密钥分发多项式,并写入到区块链上即可。若删除在知悉范围内的用户,则需要对该电子文件的加密密钥、密钥分发多项式以及电子文件的密文进行更新,以防止已不在知悉范围内的用户继续访问该电子文件。

具体方法是:

(1).从域fq中为电子文件j随机选择一个新的电子文件加密密钥kj′。

(2).计算新的密钥分发多项式

(3).将密钥分发多项式φ′j(x)转为区块链交易,然后广播到区块链网络上。

(4).区块链网络节点将该交易置入区块,并写入区块链。

(5).采用新的加密密钥k′j加密电子文件j的明文,生成电子文件j的新的密文并计算新密文的哈希值

(6).把电子文件j新的密文上传至文件存储服务器进行存储,得到新的文件存储位置索引url'j。

(7).把电子文件j的文件标识符fidj、新的文件存储位置索引url'j、新密文的哈希值ua的公钥pka、当前的时间戳t′j、以及ua对上述信息的签名写入区块链交易,并广播到区块链网络。

(8).区块链网络节点将该交易置入正在生成的区块,并进一步写入区块链。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1