赵明宇
(黑龙江省科学院智能制造研究所,哈尔滨 150090)
区块链技术可通过匿名化及加密保护用户的身份与交易内容提供更高水平的隐私保护。例如,在联盟链中,只有特定的参与方被允许访问及验证交易记录,而私有链则更加严格地限制访问权限。区块链技术还可利用零知识证明、环签名等密码学技术来实现更高级别的隐私保护,但其在隐私保护方面还存在一些问题。由于区块链的去中心化特性,数据的完全删除比较困难,可能导致个人隐私长期存储及泄露风险。公链上的交易信息虽然能够通过假名来保护用户身份,但仍可能通过关联分析等手段被攻击者破解。由于隐私保护需要消耗大量的计算资源,因此在性能及效率方面存在一定的问题。
需进一步探索区块链技术在安全通信领域中的应用,针对不同的场景及需求设计更加灵活、强大的隐私保护机制,结合其他技术如多方计算、同态加密等来提升隐私保护能力。制定相应的法律及规范,保护用户隐私权益,防止滥用及侵犯隐私。
该方案设计了一个基于区块链及IPFS的联盟链系统,为业务参与者提供安全、可靠的通信,保证消息记录的完整性验证。该系统由多个节点组成,这些节点部署在业务机构A和B中,形成一个联盟链网络,确保参与的业务机构之间的通信安全可靠,记录并验证所有通信消息的完整性。为了减轻联盟链网络的存储压力,采用IPFS分布式存储技术来缓解通信压力[1]。IPFS技术可存储业务通信过程中产生的大量数据,只通过联盟链网络传输这些数据的唯一索引。这种机制可大大降低联盟链网络的存储压力,保证所有数据的安全性及完整性。在这个系统中,业务机构A和B及它们对应的用户A1和B1是主要的参与者。用户端包含多个IPFS节点,这些节点可为用户提供更加安全、可靠的通信服务。模型如图1所示。
图1 基于智能合约的链上安全通信系统模型Fig.1 Intelligent contract-based secure on-chain communication system model
该方案结合了联盟链与IPFS技术的优势,为业务参与者提供了一种安全、可靠的通信方式。通过控制联盟链存储方式大大减轻了存储压力,这种安全通信方案可保证用户隐私不被泄露,高效地验证通信消息的完整性。
基于智能合约的链上安全通信方法由消息预处理算法、消息路由算法、通信管控算法及消息接收算法组成。
1.1.1 消息预处理算法
在信息加密中使用了两种加密算法,即AES加密与ECC加密[2],在两种算法的基础上又融合了数字签名[3],保证数据传输过程中的安全性,预防伪造等恶意行为。发送方选择合适的加密算法即密钥对消息进行加密,使用私钥签署消息和密文,加密后的信息及数字签名打包发给收件方。接收方使用公钥验证数字签名,使用私钥解密密文,并再次验证数字签名来确认消息未被篡改。
ECC密钥生成算法:选择一条椭圆曲线Ep(a,b),选择曲线上的一点G作为基点,则可生成发送方和接收方的公钥PK及私钥SK,即(PK1、SK1)和(PK2、SK2)。
ECC加密:输入明文M和接收方的公钥PK2,通过ECC加密算法生成密文C,即C=EncryptECC(PK2,M)。
ECC解密:输入密文C和接收方的私钥SK2,通过ECC解密算法获取原始明文M,即M=DecryptECC(SK2,C)。
签名生成:输入明文数据M和发送方的私钥SK1,通过数字签名算法生成签名S,即S=Sign(SK1,M)。
签名验证:输入明文数据M、发送方的公钥PK1和签名S,通过验签算法验证签名的有效性,即True/False=Verify(PK1,S)。
AES密钥生成:输入安全参数λ,通过AES密钥生成算法生成对称密钥K,即K=KeyGenAES(λ)。
AES加密:输入明文M和对称密钥K,通过AES加密算法生成密文C,即C=EncryptAES(K,M)。
AES解密:输入密文C和对称密钥K,通过AES解密算法获取原始明文M,即M=DecryptAES(K,C)。
通过以上加解密算法的组合使用,发送方可在本地对要发送的消息进行加密存储,使用数字签名算法对消息进行签名,从而确保数据的安全性及完整性,增加信息传递的安全性,为数据通信提供更高的安全保障。
1.1.2 消息路由算法
设计了一种高效合理的消息发送机制,以公链中的节点作为传递媒介,使用CP-ABE方法作为消息路由算法[4]。在发送过程中对消息进行加密,使用KeyGen CPABE(MK,Atrrx)为公链上的用户分发私钥SKx,实现对链上消息的精确控制及访问,确保只有联盟内的机构能够读取并处理链上消息,有效保护数据的安全性及隐私性。
消息发送算法:
输入:对输入的消息进行预处理(D,S,Ie,EKi),消息预处理后对其加密PKa
输出:完成状态T
获取用户所属群组列表Li,Li ← getUserGroup(EKi)
构造访问策略p,p ← constructPolicy(Li)
将策略嵌入密文中,C1 ← EncryptCPABE(PKa, p, Ie|壹)
将存证存储到区块链中,T ← storeInChain(D, S, C1)
返回完成状态T
消息中转算法:
输入:密文C,属性加密公钥PKa,属性加密私钥SKa
输出:完成状态
判断群组是否能解密密文,如果能解密,则执行下一步,否则返回解密失败
获取消息索引密文和用户列表,(Ie|EKi)← DecryptCPABE(PKa, SKa, C)
等待用户上线
返回完成状态
1.1.3 通信管控算法
输入:发送方公钥PK0,接收方公钥列表PKi,持续次数n,持续时间t
输出:授权值A,状态信息M
生成授权值算法(GenAuth):
根据参与方公钥PK0、接收方公钥列表PKi和一个随机数r,计算哈希值x,x ← Hash(PK0|PKi|r)
拼接当前时间戳,生成授权值A,A ←(x|current_time)
返回授权值A
通信管理算法(LinkManage):
验证授权值算法(verifyAuth):
对授权值进行验证,若验证通过返回ok,否则返回验证失败标志。
如果验证通过(flg is ok):
将持续次数n减1,表示使用了一次通信次数。
如果n为0(通信次数已达上限)或者当前时间超过了持续时间t,返回false。
如果验证不通过:
返回false。
1.1.4 消息接收算法
对公链中用户接收消息Ie及EKi进行解密的算法描述[5]:
输入:接收信息SK,接收信息索引Ie,接收方用户列表EKi
输出:消息明文M,消息附件A
数据接收算法(DataReceive):
利用接收方用户私钥SK和接收信息的用户李彪EKi进行解密,获取对称密钥K,K ← DecryptECC(SK, EK)
接收方使用对称密钥K索引Ie进行解密,获取消息索引I,I ← DecryptAES(K, Ie)
通过接收方用户自己的IPFS节点向网络中的其他节点查询资源所在的节点信息,获取消息密文C,C ← getFromIPFS(I)
利用对称密钥K对消息密文C进行解密,获取消息明文M和消息附件A,M|A ← DecryptAES(K, C)
返回消息明文M和消息附件A
以上是对机构托管到用户的消息索引密文Ie及EKi进行解密的算法描述。用户通过私钥解密出对称密钥K,使用K解密消息索引密文Ie获取消息索引I,查询IPFS上的消息密文C,再使用K解密C获取消息明文M和消息附件A。
为了实现链上隐私通信,防止数据关联分析及泄露业务联盟参与方的隐私行为,采用新型密码学技术,利用区块链的不可篡改性,实现链上通信消息的不可更改特性,并具备消息的隐私性。基于VRF零只是证明算法[6],保证了消息的安全性及可靠性,令消息传递者之间的关联不被暴露,对发出方与接收方的隐私进行了最大限度的保护。这种设计保障了链上通信的隐私性及安全性,确保了参与方的隐私行为不被泄露,可验证数据的完整性及真实性。这种隐私保护的链上通信方法可应用于各种场景,确保信息传输的安全性及隐私性。
系统架构如图2所示:
图2 链上电子公文系统流程Fig.2 Process of on-chain electronic document system
具体实现方案如下:
在现有的星链上通过区块链的不可更改性进行消息加密传输,实现对公文索引的不可篡改存证。将公文内容进行加密,利用IPFS节点将公文密文保存在链下存储中,保证公文内容的安全性[7]。将信息通过星链传递,保证数据的完整性及可溯源性。在进行公文传输时,接收方利用秘钥对接收文件进行解密获取信息,使用IPFS技术来降低网络拥堵,减轻中心节点服务器的压力,达到实时传递的效果。垃圾信息与无用文件可使用删除功能进行删除。系统还可提供公文操作记录的可验证性,以便审计及溯源。
由于采用了链下存储与链上存证的方式,解决了区块链信息存储的难题,保证了系统的可扩展性及灵活性。
本系统采用四层架构,包括前端层、后端层、合约层及持久层。系统架构如图3所示:
图3 链上电子公文系统架构Fig.3 Architecture of on-chain electronic document system
前端层接收用户输入,根据用户请求将操作传递给后端层,提供用户界面及交互。合约层是智能合约的部署及执行区域,能拓展系统功能,负责存储用户之间的通信数据,确保数据的可靠性及安全性。持久层利用区块链技术特性确保消息的安全性,其中区块链网络保存公文操作记录,所有的信息都存储在各个节点中,确保文件的安全存储及高效传输。
通过以上架构,系统实现了良好的模块分离及功能划分,前端层提供用户界面及交互,后端层处理用户请求并调用相应功能,智能合约层实现链上操作的拓展,持久层保证数据的安全存储及高效传输。整个系统能够满足电子公文安全隐私传输的需求。
根据图4的测试结果显示,本链上安全通信方案的消息预处理算法在用户100、200、300及数据0~100kb数据上进行测试。
图4 消息预处理算法处理性能Fig.4 Performance of message preprocessing algorithm
算法在处理数据时,执行时间随着输入数据块的大小而线性增长,即时间复杂度为O(n)。在接收方用户数量为100的情况下,处理1 MB数据的计算耗时约为20 ms,显示出该算法的处理速度较快。每当测试数量增加100,算法额外需要约10 ms的执行时间。这是因为需要根据测试的公钥来加密对称密钥,这一过程需要额外的时间,且这个时间与测试数量呈正相关。
本方案的算法执行时间随数据块大小与接收方用户数量的增长而线性增加,每MB数据的处理耗时约为20 ms,相比于参考方案的60 ms,本方案的性能表现更优。
根据图5,消息路由算法的执行性能如下所示:
图5 消息路由算法执行性能Fig.5 Message routing algorithm execution performance
消息路由算法的执行时间与输入数据的大小有着密切关系。这个算法的执行时间随着输入数据的增长而近似线性增长,表明算法的时间复杂度可能是O(n)。具体来说,消息发送算法在构造属性策略并将其嵌入到密文中这一过程需要较长时间,可能是因为它需要额外的计算及加密步骤。因此每处理1 MB的数据,消息发送算法大约需要消耗10 ms的时间。尽管输入数据量增加,但算法的执行时间也相应线性增加。消息中转算法的执行时间大约是消息发送算法的一半。这意味着机构节点在接收发送方的中转数据时性能开销更少。虽然它的执行速度相对较快,但随着输入数据的增加,其执行时间也会相应地线性增加。
根据消息路由算法的执行时间发展趋势可知,随着输入数据大小的增加,算法的执行时间呈现线性增长的趋势。消息发送算法需要更多的时间来处理,而消息中转算法则具有更快的执行速度。
根据图6,消息接收算法的处理性能如下所示:
图6 消息接收算法处理性Fig.6 Processing of message receiving algorithm
消息接收算法是接收方在接收到由机构节点传输的消息后,通过本地对加密信息进行解码。实验结果表明,当本地接收解码10 MB的消息数据时,解码时间约为25 ms,在实际的实验中,因为网络拥堵问题或数据量较大时,解码时间可能会进一步加长。这种波动可能是由于网络延迟导致的,需进行进一步的优化及改进,以提高算法的效率及稳定性。解密过程需要消耗一定的计算资源及时间,因此在实际应用中需考虑计算能力的限制及优化,以适应大规模数据处理场景。
根据图6中的消息接收算法处理性能,可以得出结论:在解密消息密文方面,当接收方用户解密10 MB大小的数据时,计算所需的时间约为25 ms。在处理较大数据时可能会出现性能波动,可采用负载均衡的方式来优化系统性能。
提出了一种基于智能合约的链上安全通信方案,通过引入IPFS分布式存储技术及密文属性加密算法,解决了区块链应用对安全通信的技术需求。该方案可确保消息数据的完整性及安全分发,在离线状态下保护用户数据,并在上线时正确解密消息密文,通过链下分布式存储及安全加密操作,实现高效性与安全性的平衡。