1.一种可监管恶意投票的区块链时间锁加密电子投票系统,其特征在于:包括投票者User A、投票者客户端Client A、监管机构RA、系统管理者Admin、Web服务器和Fabric区块链网络;所述Fabric区块链网络中的颁发证书机构Fabric‑CA作为可信的第三方颁发证书机构;
所述投票者User A,利用所述投票客户端Client A参加投票;
所述监管机构RA,包括监管者User B和监管客户端Client B,用于对投票者User A的投票行为进行监管以避免恶意投票行为的发生;
所述系统管理者Admin用于部署投票者客户端和智能合约,每次进行投票活动开始前,设定投票者名单、投票主题、投票选择候选项、椭圆曲线参数;其中,所述智能合约,用于操作账本实现数据存储和提取,实现功能业务逻辑;
所述Web服务器,用于处理投票者User A通过投票者客户端发出的请求;
所述Fabric区块链网络,是基于Fabric的具有管理权限的区块链网络;其中,所述Fabric提供了Fabric SDK两种接口模块,分别是访问颁发证书机构Fabairc‑CA接口和访问区块链网络接口,前者主要负责整个网络的节点准入机制、分发证书、交易的数字签名以及验证功能,后者实现智能合约功能的调用。
2.一种可监管恶意投票的区块链时间锁加密电子投票方法,其特征在于,包括以下步骤:步骤1:系统初始化;
智能合约生成主密钥MK、系统公钥PK,区块链地址;系统管理者Admin设置投票主题和投票候选项、投票结果预计公布时间T;根据设置的投票结果预计公布时间T,系统管理者Admin选择合适阶数的椭圆曲线E使得必须花费设置时间T这么长的时间才能解决该椭圆曲线E上的离散对数问题,以实现在设置时间T之后才能公布投票结果,并将对应的时间锁加密解密函数部署在智能合约上;
智能合约设定连接序列功能函数,用于连接投票者User A发送到智能合约上的密钥相*关序列;智能合约设定哈希函数He:{0,1}n—>E,用于将一个01串映射为椭圆曲线上的一个点;
系统管理者Admin部署基于CP‑ABE属性加密解密功能函数在智能合约上;
步骤2:用户注册,包括投票者User A注册和监管者UserB注册;
系统为每个注册用户生成唯一的公钥、私钥以及区块链地址,分别作用于投票数据加密、数字签名以及投票记录追溯,投票者User A根据监管者User B的属性设置访问控制策略PA,用于后续步骤中监管机构RA对投票者User A的投票行为的监管;
步骤3:投票;
投票者User A投票完成后,得到相应的投票数据;投票者的投票数据进行属性加密并(ABE) (ABE)上链存储,得到密文CTA ,并将密文作为交易的负载形式Tx(CTA )发送至区块链网络;
(TimeClock)
投票者的投票数据进行时间锁加密,得到密文CTA ,在设置时间T内进行投票数据保(TimeClock)护;投票者User A通过投票者客户端Client A对密文CTA 进行签名后发送到区块链(TimeClock)网络中,网络节点对发送的交易和签名进行验证,并将包含加密投票数据CTA 的合法交易添加到区块链账本中;
步骤4:监票;
(ABE)
投票数据密文CTA 交易的区块上链时,整个相应通道的节点需要对上链区块进行同步;在其通道的节点监管者User B通过监管客户端Client B请求区块链网络中包含User A(ABE)投票数据密文CTA 的信息来对投票者User A的投票行为进行监督;
步骤5:查票;
经过时间TU,投票者User A通过投票客户端Client A使用查询投票功能,若TU
步骤6:计票;
智能合约对解密得到的各投票者的投票数据按候选项进行累加统计;智能合约将统计结果储存和发布在区块链上,公布候选项对应的投票结果。
3.根据权利要求2所述的可监管恶意投票的区块链时间锁加密电子投票方法,其特征在于,步骤2的具体实现包括以下子步骤:步骤2.1:监管者User B通过监管客户端Client B发送用户证书请求至Fabric‑CA以申请证书;监管者User B的用户证书请求包含监管者User B的属性以及监管者User B的公私钥对(UPKB,USKB);颁发证书机构Fabric‑CA为公私钥对(UPKB,USKB)生成相应的证书UcertB,并计算证书UcertB的签名 颁发证书机构Fabric‑CA还根据监管者User B提供的属性为其生成属性私钥BSK,并利用监管者User B的公钥UPKB对生成的属性私钥BSK进行加密得到密文CTBSK,颁发证书机构Fabric‑CA将 返回给监管者User B;
步骤2.2:投票者User A通过投票客户端Client A发送用户证书请求至颁发证书机构Fabric‑CA以申请证书;投票者User A的用户证书请求包含投票者User A的公私钥对(UPKA,USKA),颁发证书机构Fabric‑CA为(UPKA,USKA)生成相应的证书UcertA,并计算证书UcertA的签名颁发证书机构Fabric‑CA将 返回给投票者User A。
4.根据权利要求2所述的可监管恶意投票的区块链时间锁加密电子投票方法,其特征在于,步骤3中所述投票者的投票数据进行属性加密并上链存储,具体实现包括以下子步骤:(1)投票者User A通过投票客户端Client A调用智能合约中的属性加密功能函数对其(ABE) (ABE)投票数据MA进行加密,得到密文CTA ,并将密文作为交易的负载形式Tx(CTA )发送至区块链网络;
(ABE)
(2)区块链网络接收到投票者User A提交的Tx(CTA ),区块链网络按照交易提案发(ABE)送给背书节点,对Tx(CTA )进行背书,背书节点主要对交易提案的格式、重复性、签名以及交易提交者权限进行验证,然后模拟执行交易并生成背书响应返回给投票者User A,当投票者客户端Client A收到足够的背书响应时,投票者客户端Client A将密文交易Tx(CTA(ABE))封装生成Envelope发送至排序节点进行排序;
(3)排序节点完成排序后生成区块BlockA,并将其发送至特定通道以分发给其中的所有主节点,由主节点进行组织内的区块同步,最终收到交易后各节点验证交易内容和签名,将合法的交易添加到区块链账本中,完成加密投票数据的上链储存,等待监管机构RA中的监管者User B进行访问监管;所述特定通道为监管机构RA中包含的所有监管者所在的通道。
5.根据权利要求2所述的可监管恶意投票的区块链时间锁加密电子投票方法,其特征在于,步骤3中所述投票者的投票数据进行时间锁加密,具体实现包括以下子步骤:*
(1)投票者User A生成随机串{0,1} 作为密钥相关序列,通过投票客户端Client A发送到智能合约,智能合约根据设定的连接功能函数进行连接得到所有参与投票者的串联密钥相关序列;n个投票者{User A1,User A2,…,User An}分别生成密钥相关序列之后,智能合*约将得到n个投票者的串联密钥相关序列{0,1}n;
* *
(2)智能合约将n个投票者的串联密钥相关序列{0,1}n作为哈希函数He:{0,1}n—>E的输入得到椭圆曲线E上的一个点,将其坐标作为时间锁加密的随机公钥PKP;
(3)智能合约使用随机公共密钥PKP对投票者User A的投票数据MA进行时间锁加密,得(TimeClock)到密文CTA 。
6.根据权利要求2所述的可监管恶意投票的区块链时间锁加密电子投票方法,其特征在于,步骤4的具体实现包括以下子步骤:步骤4.1:监管者User B通过监管客户端Client B与Fabric网络交互,请求区块链网络(ABE)中包含投票者User A交易密文CTBSK的对应信息,从而得到对应的加密投票数据CTA ;
步骤4.2:监管者User B利用自己的私钥USKB对密文CTBSK进行解密得到自己的属性私钥(ABE)BSK,然后通过监管客户端Client B对密文CTA 进行解密,由于User B的属性私钥与密文CTBSK相对应,即属性匹配访问控制策略,则得到明文投票数据MA。
7.根据权利要求2所述的可监管恶意投票的区块链时间锁加密电子投票方法,其特征在于,步骤5的具体实现包括以下子步骤:步骤5.1:智能合约执行对椭圆曲线E进行Pollard‑rho攻击;
步骤5.2:经过时间TU,投票者User A请求查询,若TU
8.根据权利要求2‑7任意一项所述的可监管恶意投票的区块链时间锁加密电子投票方法,其特征在于:步骤1中所述CP‑ABE属性加密解密功能函数,是基于现有的Fabric和Fabric‑CA,在Fabric‑CA中嵌入CP‑ABE实现,即将Fabric‑CA作为属性加密方案中的可信第三方,其功能可管理用户所用证书,同时对CP‑ABE方案初始化和用户属性私钥BSK的生成和分发。
9.根据权利要求2‑7任意一项所述的可监管恶意投票的区块链时间锁加密电子投票方法,其特征在于:步骤2中所述访问控制策略PA,包括3种通用策略;通用策略PA1:通道ID={Channel1,Channel2,…},属于特定通道内的所有用户都可解密;通用策略PA2:(通道ID=Channel1)&&(组织ID=Organ{Organ1,Organ2,…}),属于特定通道内的特定组织的所有用户都可解密;通用策略PA3:(通道ID=Channel1)&&(组织ID=Organ1)&&(用户ID=User{User1,User2,…}),属于特定通道内的特定组织中的特定用户都可解密。