本发明涉及区块链、数据共享和数据加密,具体涉及一种基于区块链技术的加密通讯方法和系统。
背景技术:
1、网络技术的快速发展使得人们对通讯过程中的身份识别和数据保密有了更高的要求。用于保护数据和通信安全的传统基础设施是公钥基础设施(pki)。为了给用户提供一个安全的通信平台,pki使用非对称加密算法和数字证书,通过一个被称为证书机构(ca)的可信第三方保证用户的公钥安全。然而,pki证书的管理需要大量的存储和计算,这将需要大量的资源。此外,还需要在多个ca之间进行交叉认证,且存在固有的密钥代管问题。密钥生成中心可以生成用户的私钥来解密任何加密文本并伪造数据。
2、区块链是集分布式数据存储、密码学、数据一致性算法等的一种综合技术。区块链为用户加密通讯提供了一种构建去中心化安全信任关系的方案,允许用户直接在网络上进行交易,而不需要依赖第三方中介。区块链的主要特征是分布式记账、全过程记录、不可篡改和加密。具体地说,分布式结构确保了链中一个节点的损坏不会影响整个系统。此外,系统中的节点之间可相互监督,防止数据被篡改,保证通信的不可抵赖性,不可篡改并利用加密技术增强了通信的安全性。因此,对于加密通讯系统的构建,将区块链技术整合到用户密钥发布过程中,可以保证用户密钥不易泄露且安全。此外,对通讯过程中消息明文的加密方式的研究也是至关重要的,可进一步保证通讯的安全性、不可泄漏性与完整性。
技术实现思路
1、有鉴于此,本发明的目的之一是提供一种基于区块链技术的加密通讯方法,能够为通讯双方创造兼具安全性、可回溯、不可篡改、不易泄露的加密通讯场景。
2、本发明的目的之一是通过以下技术方案实现的:
3、一种基于区块链技术的加密通讯方法,包括以下步骤:
4、步骤s1:底层区块链网络构建与初始化;
5、步骤s2:用户向监督节点发起身份认证请求;
6、步骤s3:监督节点进行用户身份验证并发起验证共识,若达成共识则将部分私钥s1发送至用户;
7、步骤s4:保护节点检查交易及用户信息,进行加密签名并转发至生成节点;
8、步骤s5:生成节点收到至少一半以上保护节点的加密签名,生成有效区块并达成共识,然后计算剩余部分私钥s2,并发送至用户;
9、步骤s6:用户结合s1、s2计算完整私钥s;
10、步骤s7:通信双方包括消息发送方、接收方,使用系统分配的密钥对进行相互身份认证,并建立安全通信通道;
11、步骤s8:消息发送方使用同态加密算法在本地执行消息加密,并通过通道将密文传输至接收方;
12、步骤s9:消息接收方对密文进行解密,得到消息明文;
13、步骤s10:客户端为此次通讯生成提案并分发给网络所有节点,以达成交易共识并生成有效区块提交到帐本,区块链网络执行更新帐本操作。
14、进一步,还包括底层区块链网络构建与初始化的步骤,具体包括:
15、步骤s101:区块链网络为其中的网络节点分配私钥si与公钥pi,其中pi=si*p,p为系统发布的一个随机数;
16、步骤s102:区块链网络随机选择n个节点作为监督节点,并协作生成系统公钥y=s0*s1*…*sn*p,为保证系统并行处理用户请求,设置n不小于3且不大于总节点数的1/3;
17、步骤s103:为网络中的剩余节点随机分配角色,分别为n个生成节点与m个保护节点,其中需保证n<m<2n,以确保有效的共识。
18、进一步,用户向监督节点发起身份认证请求具体包括:
19、步骤s201:用户选择一个随机数x,并计算其公钥qx=x*qid以及基于随机数p的签名sigx(p)=x-1*p,其中qid=h1(id),h1为系统指定的哈希函数,id为用户号;
20、步骤s202:用户将认证信息(qid,qx,sigx(p))发送至客户端,客户端将其广播至区块链网络并为其分配处于空闲状态的一个监督节点和一个生成节点。
21、进一步,监督节点进行用户身份验证并发起验证共识的过程具体包括:
22、步骤s301:监督节点基于用户公钥qx生成签名sigs0(qx)=s0*qx,并向所有生成节点与保护节点发起验证共识;
23、步骤s302:所有生成节点与保护节点通过用户号、哈希函数h1与随机数p验证用户签名,并保留监督节点签名sigs0(qx),验证通过的节点基于自己的私钥生成签名并转发至监督节点;
24、步骤s303:监督节点检查收到的签名数量,若大于(n+m)/2+1,则网络对此用户身份验证达成共识,监督节点计算部分私钥发送至用户,并生成一个有效区块。
25、进一步,生成节点发起第二步验证共识,由所有保护节点参与,保护节点检查交易信息和用户信息,如sigx(p),若检查通过则使用其密钥加密签名并转发给生成节点。
26、进一步,生成节点检查第二部分共识结果,若成功则生成有效区块并达成共识,然后计算剩余部分私钥s2,并发送至用户,若失败则用户身份认证失败,具体包括:
27、步骤s501:生成节点检查接收到的签名数,若大于m/2+1,则达成共识并生成一个有效的区块,并进入下一步骤,反之则用户身份认证失败;
28、步骤s502:该生成节点结合收到的签名计算剩余部分私钥并转发至用户,其中s'=s1+s2+…+st。
29、进一步,用户结合s1、s2计算完整私钥s,其具体计算过程如下:
30、
31、
32、其中,s=s0+s'。
33、进一步,通信双方包括消息发送方、接收方,使用系统分配的密钥对进行相互身份认证,并建立安全通信通道,具体包括:
34、步骤s701:消息发送方使用消息接收方的公钥加密请求认证消息m(qr,requesttime(qs,n1)),并发送至接收方,其中qs、qr分别为消息发送方和接收方的公钥,n1为发送方生成的一个随机数;
35、步骤s702:接收方接收到请求认证消息,使用私钥sr对其执行解密操作,并向发送方响应回复消息m(qs,replytime(f(n1),n2,hash)),其中f(n1)为n1的一个变换,n2为接收方生成的一个随机数,hash是上述消息的一个哈希值,用于验证消息的完整性;
36、步骤s703:消息发送方解密回复消息,确认接收方身份,若确认成功则发送确认消息m(qr,confirmtime(f(n2),ms,hash)),其中ms为通信内容,包括随机生成的一组密钥(k1,k2,…,kn);
37、步骤s704:消息接收方解密确认消息,确认发送方身份,若确认成功则向发送方发送确认回复消息m(qs,confirmreplytime(mr,hash))。
38、进一步,消息发送方使用同态加密算法在本地执行消息加密,并通过通道将密文传输至接收方,具体包括:
39、步骤s801:消息发送方在本地生成椭圆曲线c及曲线上随机基点g;
40、步骤s802:发送方将基点g与密钥(k1,k2,…,kn)进行标量乘运算以生成公钥(q1,q2,…,qn),其中qi=g*ki;
41、步骤s803:对明文(m1,m2,…,mn)进行加密操作,发送方将明文嵌入到椭圆曲线c中,获取明文点(pm1,pm2,…,pmn);
42、步骤s804:发送方生成一组随机整数序列(l1,l2,…,ln),保证序列中每个随机数不大于基点g的阶数;然后使用公钥(q1,q2,…,qn)、随机数序列(l1,l2,…,ln)与基点g对明文点进行加密运算,得到加密密文e1(e11,e21)…en(e1n,e2n),并通过区块链网络发送至接收方,加密运算具体操作如下:
43、e1i=li*g
44、e2i=e3i*pmi
45、e3i=li*qi
46、进一步,消息接收方对密文进行解密,得到消息明文,具体计算公式如下:
47、
48、
49、
50、
51、得到嵌入在椭圆曲线c上的明文点乘积,经过对应解码得到明文(m1,m2,…,mn)。
52、进一步,客户端为此次通讯生成提案并分发给网络所有节点,以达成交易共识并生成有效区块提交到帐本,区块链网络执行更新帐本操作,此次通讯结束,消息发送方与消息接受方公私钥失效,并将其上传至安全存储模块,此外区块链网络也将此次通讯的相关详细信息上传至安全存储模块进行保存。
53、本发明的目的之二是提供一种基于区块链技术的加密通讯系统,包括用户层、底层区块链网络以及安全存储模块;
54、所述用户层有消息发送方、消息接收方两种类型用户,任一类型用户每次发起通讯请求或接收到通讯请求后,均在本地动态更新其公钥并由区块链网络为其分发私钥,然后通讯双方正式进入相互身份认证过程;
55、所述区块链网络包括有客户端、监督节点、生成节点以及保护节点,用于完成用户密钥分发任务以及安全通信通道构建,其中,所述客户端用于与用户进行交互,并在用户发起身份认证请求时为其分配一对处于空闲状态的监督节点和生成节点对,所述监督节点用于用户的身份认证并发布部分私钥,所述生成节点用于生成剩余部分的私钥并参与验证用户身份的共识过程,所述保护节点用于对验证用户身份与分发密钥的过程达成共识,三种不同类型的网络节点间会发生角色转换,监督节点与生成节点在产生一定数量的有效区块后将转变为保护节点,所述监督节点可从所有生成节点与保护节点中通过选举产生,选举需要获得一半以上监督节点的同意,所述生成节点可从保护节点中选举产生,选举需要获得一半以上生成节点的同意;
56、所述安全存储模块用于保存用户密钥历史记录、通讯数据信息以及数据密文,用于在用户发生分歧的情况下进行信息核验,其中用户密钥历史记录将在每次通讯结束且当前密钥对失效后写入,通讯数据信息包括通讯双方id、通讯开始时间戳、结束时间戳以及通讯结果。
57、本发明的有益效果是:
58、(1)本发明的方法使用区块链网络代替传统的公钥基础设施和密钥生成中心,结合基于身份的加密,用户的公开密钥直接来源于其身份信息(如id号),并由区块链网络节点担任密钥生成中心的角色,将用户私钥的生成与网络中多个节点相联系。具体地讲,由监督节点完成对用户的身份认证并提供部分私钥,由生成节点提供剩余部分私钥,保护节点在其中参与用户身份验证和密钥分发的共识过程。这使得用户的私钥不仅仅由一个中心节点或机构生成,解决了密钥托管问题由中心节点管理密钥从而导致的不安全性的缺点和在其传递过程中存在的安全性问题,即使某个恶意节点获取了大部分保护节点的加密签名,也无法破解用户私钥以窃取通讯内容;
59、(2)本发明根据不同的职责将区块链网络中的节点分为监督节点、生成节点与保护节点三类,提出使用监督节点完成用户身份认证并发布部分用户私钥,使用生成节点生成剩余部分用户私钥并参与用户身份认证共识过程,而保护节点则用于参与用户身份认证共识过程与私钥发布验证共识过程,在该网络中完成各类数据验证、保障网络安全性并协调全节点的账本一致性。各类节点的分工合作可以有效避免出现某个中心化节点有过高的决策权,达到约束去中心化网络中的每个分散节点并维持系统运作有序性与公平性的目的,进而提高网络的可信性;
60、(3)区块链网络中三种不同类型的节点会进行节点角色转换操作,具体地讲,监督节点与生成节点在产生一定数量的有效区块后将转变为保护节点,缺少的监督节点将从所有生成节点与保护节点中通过选举产生,选举需要获得一半以上监督节点的同意,缺少的生成节点将从保护节点中选举产生,选举需要获得一半以上生成节点的同意。执行角色转换操作可以进一步加强网络的去中心化,使得单个节点的职责和权限不断变化,用户的私钥发布不再取决于网络中的特定节点,减少由节点被劫持所产生的严重后果,如扰乱用户私钥发布过程导致用户无法进行后续通讯、恶意方发布提前预设的私钥以窃取通讯密文等,进一步保证了网络的去中心化、可信性与安全性;
61、(4)在用户通讯过程中使用椭圆加密技术和同态加密算法对消息明文进行加密,确保消息的不可泄露与安全性,通过区块链技术与消息加密技术的双重保障,使得双方的加密通讯更加的安全、稳定以及可信。
62、本发明的其他优点、目标和特征在某种程度上将在随后的说明书中进行阐述,并且在某种程度上,基于对下文的考察研究对本领域技术人员而言将是显而易见的,或者可以从本发明的实践中得到教导。本发明的目标和其他优点可以通过下面的说明书和前述的权利要求书来实现和获得。