基于国密的P2P 数据开放共享平台设计与实现

2023-12-18 08:58谷蒙蒙叶展翔
现代电子技术 2023年24期
关键词:国密关键字哈希

谷蒙蒙, 叶展翔

(1.温州职业技术学院, 浙江 温州 325000; 2.温州市网络安全检测与防护工程技术研究中心, 浙江 温州 325000)

0 引 言

近年来,随着互联网、物联网、云计算等新兴科技的迅猛发展,网络空间已成为人们生产生活的新家园。根据《中国互联网发展情况统计报告》,截至2022 年底,中国网民人数达到10.67 亿,互联网普及率[1]达到75.6%。随着各类互联网新兴技术在社会生活中的广泛应用,人们对于各类电子设备的使用也越来越广泛,每天都在产生大量的数据,包括电子邮件、在线聊天记录、录音和影像视频等。文件的共享和安全传输为互联网用户数据安全提供了基础。如今的数据安全产业逐步成为实现网络强国与数字中国的重要组成以及中国式现代化的基础支撑,数据安全建设已由“或有”转变为“刚需”。

P2P(Peer to Peer)技术是数据共享的热门技术之一。与传统的C/S(Client/Server)模式相比,P2P 架构具有非中心化、健壮性、可扩展性、高性价比、负载均衡及隐私保护等优势。P2P 技术主要应用在分布式计算、交互应用及文件功能三大场景。在基于P2P 的数据共享应用过程中,文件的接收者希望保证文件的完整性,管理员希望对文件内容做一定的审记,在保证文件安全传输的同时,也要防止数据在传输期间可能受到的拦截攻击[2]。

国产商用密码简称国密,是数据共享的“安全底座”。国密算法为人们提供了一个新的选择,在必要的场合中替代那些国际主流算法,大规模推广和采用国密算法将为国内重要的网络基础设施提供可靠的数据安全保障。文献[3-4]将国密算法与国际上的典型同类算法进行比较发现,国密算法在安全性和实现效率方面都具有明显的优势。国密算法在具体应用和推广中还存在不足。《中华人民共和国密码法》[5]于2020 年正式实施,从法律层面规范了国家商用密码的应用和管理,这也为推广和应用国密提供了必要的法律保障。本文使用多种国密算法,包括SM2、SM3、SM4 三种算法,设计一种混合加密方案,并应用到数据开放共享平台中。

其中,SM2 是基于椭圆曲线多倍点运算单向函数的公钥密码算法,广泛应用于信息系统身份鉴别、网络通信密钥交换、电子印章数字签名,以及可信计算等领域[6-8]。密码杂凑算法是三类基础密码算法之一,它可以将任意长度的消息压缩成固定长度的摘要,主要用于数字签名和数据完整性保护等[9-10]。SM4 分组密码算法是一个选代分组密码算法,主要用于数据加密[11-12]。

1 总体设计

1.1 设计原则

数据开放共享平台为网络中的各个节点提供文件管理及共享服务,需要满足稳定性、可扩展性及负载均衡的P2P 应用等一般设计原则,在此基础上,结合国密算法增加安全性要求,即平台共享数据机密性、完整性和不可否认性。

1) 稳定性

要求平台搭建的P2P 网络能够自动调整内部结构,适应网络规模的变化。当有节点加入、离开或失效时,正在进行的查询或数据传输不会受到影响。

2) 可扩展性

假设P2P 网络中节点总数为N,可以自由地增加节点,没有参数限定网络节点的数量,要求网络开销随着网络规模的扩大,按O(logN)的复杂度增加,可以用于大型的网络中。

3) 负载均衡

P2P 网络中所有节点都参与数据共享全流程,并采用一致性哈希算法,保证网络中所有节点以同等的概率分担系统的负载,避免某些节点负载过重的情况。

4) 机密性

在数据传输前对数据进行加密处理,若传输过程中被第三方截获,要求加密数据无法被破解。每个用户都拥有一对SM2 非对称密钥。由于非对称密钥加密大文件的开销过大,使用SM4 对称密钥进行文件加密,每一个文件传输进程均随机产生一次对称密钥。

5) 完整性

数据传输过程中,要求确保数据不被未授权地篡改,即使篡改后也能够迅速发现,使用SM3 算法对文件进行摘要并验证。

6) 不可否认性

数据传输完成后,对数据的发送者身份进行认证,同时发送者不能否认自己发送数据的行为和数据的内容。

1.2 功能模块设计

数据开放共享平台的功能模块如图1 所示,包括对等网络搭建、文件数据处理及辅助功能三类。对等网络搭建模块包括对等网络的创建及网络节点的加入/离开。文件数据处理模块包括共享文件的关键字信息发布、搜索、删除以及文件的点对点下载传输。辅助功能模块主要是文件关键字的自动提取。

图1 数据开放共享平台的功能模块

1) 对等网络构建

用户在使用共享服务前,可以扫描本机的IP 并指定一个默认端口号,组成URL,用其创建一个新的对等网络,或者输入已存在的对等网络中某节点URL,与其进行连接,加入其所在对等网络。用户结束与其他节点的数据传输进程后,可以选择退出对等网络,退出后,用户所有共享的信息将被删除。

2) 数据处理

用户输入的文件关键字及文件路径进行哈希运算后,组成<K,V>序偶对,根据特定算法存储到某节点中,从而在没有中心服务器的情况下,实现文件的共享。文件始终保存在用户节点本地,文件共享过程中并没有文件传输的过程。

用户可以输入想要搜索的关键字,将关键字进行哈希映射,在对等网络中进行搜索,获取文件所在节点标志符及文件路径。已经共享文件可以由文件拥有者进行删除操作,将文件相应的<K,V>序偶对从存储它的节点上删除。删除前需要先判断相关文件是否存在。

节点A通过共享文件搜索功能,获取文件所在的节点B标志符及文件路径,通过标志符中的IP 和端口号建立socket 连接,结合国密算法将安全文件传输到节点A。

3) 辅助功能——文件关键字提取

辅助功能模块只针对文字类型的文件,主要包括txt、Word 等能够提取文字的文件。提取文件内容中具有具体意义的名词,在文件预处理和分词处理的基础上进一步提炼这些名词,作为文件共享前的辅助功能。

1.3 网络架构设计

数据开放共享平台使用Chord 协议[13]进行P2P 组网。Chord 协议是一种高效、可扩展的完全分布结构化对等网[14]。Chord 网络中的一个节点代表一个用户,每个用户都有一个唯一的m位节点标识符ID,由IP 地址和端口号哈希得到。所有节点根据标识符从小到大排列在一个逻辑的标识符环(Chord 环)上,每个节点都有一个逻辑上的前驱和后继。

共享文件索引由一个序偶对<K,V>组成。其中,K表示关键字(如文件名、作者等属性)的哈希值,V表示实际存储该文件的节点标志符及路径。所有这样的序偶对构成了一张文件索引哈希表,输入目标文件信息K,就能够从中查询到存储该文件的目的节点信息。文件索引被哈希到Chord 环上,映射规则为:文件索引关键字K所对应的序偶对存储在节点标识符等于K的节点上,若该节点不存在,则存储在已存在的且紧跟在K后的节点上。Chord 环文件索引存储示例如图2 所示。

图2 Chord 环文件索引存储示例

图2 中N代表节点,K代表文件关键字。按照映射规则,K为2 的序偶对本应存储在节点N2上,但由于节点N2不存在,则存储在标志符大于2 且离节点N2最近的节点N3上。同理,关键字7 和9 存储在节点N10上,关键字11 存储在节点N12上。当网络拓扑发生动态变化时,上述映射规则依然要满足。当节点N8进入Chord 环后,K为7 的序偶对要重新分配到节点N8上;当节点N3退出时,K为2 的序偶对将被存储到节点N6上。

2 平台流程设计

2.1 节点加入及退出对等网络

节点加入或退出对等网络时,需要对网络拓扑结构与资源共享存储进行调整,具体流程如图3 所示。

用户节点加入对等网络时,随机生成一个SM2 密钥对<P,S>,P表示公钥,S表示私钥,将节点标识符ID 和公钥P组成键值对<ID,P>,添加到自己的文件索引哈希表中,公布在对等网络中。私钥则保存在节点本地,为后续数据加密、用户验证提供基础。

用户节点退出当前对等网络时,删除其公钥信息所对应的键值对,同时将节点上存储的共享信息移动到下一节点上。

2.2 文件共享发布、搜索、删除

文件共享发布、搜索、删除的流程如图4 所示。

图4 文件共享发布、搜索、删除流程

用户节点共享发布文件时,在本地选择文件,将文件的关键字哈希值H(kw)和文件所在节点路径ID+path组成键值,根据Chord 算法映射原则,存储到对等网络中的某一节点上。

用户节点搜索文件时,输入要搜索的关键字,通过关键字哈希值在对等网络中搜索键值对<H(kw), ID+path>,获取相应文件的所在节点与路径。

用户删除已共享的文件时,输入文件关键字,通过关键字哈希值在对等网络中进行搜索,并删除共享信息<H(kw), ID+path>。

2.3 文件下载

由于文件始终存放在本地,文件下载时需要文件拥有者和文件申请者之间建立TCP 连接。下载前,申请者需先通过搜索得到所需文件的节点与路径。文件下载流程如图5 所示。

图5 数据安全传输流程

当节点B想要下载节点A上的文件F1,发送下载文件请求时,需要将文件F1路径信息发送给节点A。

节点A接收到请求后,随机生成SM4 密钥K1作为文件密钥对源文件进行加密处理,得到加密文件CF1,如公式(1)所示,保证文件的机密性。

由于文件加密采用一次一密的方式,文件密钥需要和加密文件一起安全传输给对方。节点A在对等网络中以节点B标识符为关键字进行搜索,得到B的公钥PB,使用PB 对K1进行加密,得到加密密钥CK1,如式(2)所示,实现文件密钥的安全传输。

为了保证文件传输的完整性和不可抵赖性,节点A使用SM3 算法对文件进行摘要,并使用自己的SM2 私钥SA 对摘要进行签名,得到Sig1,公式如下:

节点A将加密文件CF1、文件密钥密文CK1以及签名同时发送给节点B。节点B收到后,首先使用自己的SM2 私 钥SB 对CK1进 行 解 密,得 到 文 件 密 钥K1,公 式如下:

其次,使用K1将CF1进行解密得到源文件F1,公式为:

节点B使用节点A的标志符在对等网络中搜索节点A的SM2 公钥PA,并用它对签名Sig1 进行验签,得到文件摘要Sm3(F1),公式如下:

最后,节点B对解密得到的文件进行SM3 摘要计算,并与后得到的Sm3(F1)进行比较,若一致,说明文件确实由节点A发送且在传输过程中没有被篡改。

3 结 语

本文设计了一种基于国密算法的P2P 数据开放共享平台,使用Java 语言进行Windows 应用程序开发,并在多台终端与虚拟机上进行安装测试。与现有的FTP服务器、网盘等文件共享方式相比,所设计平台不需要将共享文件上传至中心服务器,而是将文件信息以键值对的形式存储在文件索引哈希表中,共享的数据信息占用空间小,且能够摆脱对中心服务器和数据库的依赖。所有节点既是服务器也是客户端,既能共享数据也可以参与存储数据,达到负载均衡的效果,且节点数量不受限制,适用于大型网络。由于P2P 平台存在不可控的问题,平台采用了一种混合SM2、SM3、SM4 算法的加密方式,在平台文件传输过程中对数据安全进行把控。使用SM4 算法保障数据的机密性,使用SM2 算法保障文件密钥的保密性和文件发送方的不可抵赖性,使用SM3 算法保障文件的完整性。本文平台将P2P 技术与国密算法的优势进一步融合,实现简单,运维成本低,是一种可推广的数据开放共享方式。

猜你喜欢
国密关键字哈希
履职尽责求实效 真抓实干勇作为——十个关键字,盘点江苏统战的2021
国密技术在智能燃气表系统的应用与分析
Hyperledger Fabric平台的国密算法嵌入研究
成功避开“关键字”
自助终端设备国密改造方法探究
基于国密算法的银行移动营销终端安全系统研究
基于维度分解的哈希多维快速流分类算法
基于同态哈希函数的云数据完整性验证算法
一种基于Bigram二级哈希的中文索引结构
智能垃圾箱