基于区块链技术的物联网终端安全通信方法与流程

文档序号:17600347发布日期:2019-05-07 20:11阅读:137来源:国知局
基于区块链技术的物联网终端安全通信方法与流程

本发明具体涉及一种基于区块链技术的物联网终端安全通信方法。



背景技术:

随着经济技术的发展,物联网已经广泛应用于人们的生产和生活中,给人们的生产和生活带来了无尽的便利。

从智能电网、智慧交通、智慧城市到工业4.0等应用场景,物联网(iot)终端设备及系统成爆炸式增长,物联网应用越来越广泛。然而设备一旦接入网络,势必存在被攻击的可能性,一旦遭受攻击,导致数据和隐私泄露,严重的可导致交通瘫痪、电网中断等重大事故,物联网系统安全受到越来越多的关注。

目前在实际应用中多采用比较传统的方法,如为iot设备设定用户名和密码,通过控制中心实现安全认证与数据交互。这种机制存在着一定不足:(1)许多iot设备通常采用默认出厂用户名和密码,增加了暴力破解的可能性。(2)每次iot设备会话都要经过中心服务器进行认证与信息传输,随着iot设备的不断增加,极大增加中心服务器负载。(3)密码数据在服务端的常规保存,容易造成用户隐私泄露。(4)在数据存储的可靠性保障上,服务中心多采用主从备份机制,能够解决单点失败问题,但对数据本身并未实现完整性保护。

许多学者针对物联网安全问题开展了相关研究,提出了加密、身份认证、隐私保护、入侵检测等安全机制。然而,学术界比较关注技术上的安全研究,许多物联网设备的计算和存储资源非常有限,在实际应用中实现难度比较高。随着区块链技术的发明及兴起,在物联网安全方面也引起了关注。

西安电子科大申请的专利(cn108270571a)提出了一种基于区块链的物联网身份认证系统及其方法,借助可信第三方搭建区块链网络,部署智能合约,基于pow共识算法记账,进行设备交易信息创建与验证,关联、控制设备交易信息创建与验证,实现模块和用户的合法性验证、隐私保护等。但设备关联与控制均需要验证,通信和计算开销较大,影响效率。中国联通申请的专利(cn107749848a)提供了一种物联网数据的处理方法、装置及物联网系统,第一物联网设备负责数据采集,发送包含设备和数据标识的身份验证信息到第二物联网设备,第二物联设备根据各自对应的区块链进行身份验证,验证通过添加新的区块,并将数据、标识和块号一同存入数据库。主要实现物联网数据存储的不可篡改和可追溯性。

电子科技大学申请的专利(cn108111312a)提出了一种基于区块链的智能终端安全通信方法。各个终端作为区块,通过pow共识机制生成安全测试数据,依据智能合约进行数据交互,组合成为链式结构,通过加密算法来保证块链间信息传递的安全性,实现了智能终端的安全防护。在各终端间实现存储与共识,计算和存储开销较大,不符合物联网设备资源受限的特点。



技术实现要素:

本发明的目的在于提供一种可靠性高、保密性好且效率较高的基于区块链技术的物联网终端安全通信方法。

本发明提供的这种基于区块链技术的物联网通信方法,包括如下步骤:

s1.物联网通信服务器生成密钥;

s2.各iot设备生成密钥生成参数;

s3.各iot设备根据步骤s2生成的密钥生成参数,生成各自的私钥;

s4.通信双方根据密钥生成参数和私钥,计算得到各自的公钥;

s5.通信双方获取物联网通信服务器的公钥;

s6.通信双方将各自的公钥提交物联网通信服务器进行进行区块链存储;

s7.通信双方通过物联网通信服务器获取通信对方的公钥;

s8.通信双方计算当次通信的通信密钥;

s9.通信双方通过当次通信的通信密钥进行安全通信。

步骤s1所述的物联网通信服务器生成密钥,具体为采用ecc非对称加密算法生成服务器密钥对;服务器密钥对包括服务器公钥和服务器私钥,其中服务器私钥保存在物联网通信服务器,服务器公钥传输给各个iot设备。

步骤s2所述的密钥生成参数,具体包括通过通信双方协商生成的素数p、椭圆曲线系数a和b、基点g和子群阶数n。

步骤s3所述的生成各自的私钥,具体为通信双方依据椭圆曲线参数n,在[1,n-1]区间使用random()函数各自产生一个随机数da和db,作为各自的私钥并保存在本地。

步骤s4所述的计算得到各自的公钥,具体为采用如下算式计算公钥:

ha=da*g

hb=db*g

式中,ha为通信方a的公钥,hb为通信方b的公钥,da和db为通信方在步骤s3中各自产生的私钥,g为基点。

步骤s5所述的通信双方获取物联网通信服务器的密钥,具体为通信双方通过以明文的方式,获取物联网通信服务器的公钥。

步骤s6所述的通信双方将各自的公钥提交物联网通信服务器进行进行区块链存储,具体为通信双方通过获取的物联网通信服务器的公钥对各自的公钥和id进行单端非对称加密,并提交物联网通信服务器进行存储,通信服务器达成共识后,存储到各自区块链中。

步骤s7所述的通信双方通过物联网通信服务器获取通信对方的公钥,具体为将通信方id和通信对方id数据使用通信服务器公钥加密,上传到通信服务器中,从服务器存储的区块链中查询到所存储的两个设备id所对应的公钥,物联网通信服务器采用各自的公钥对对方的公钥进行加密,并将加密后的数据分别发送至通信对方;通信双方采用各自的私钥对接收的加密数据进行解密即可获取通信对方的公钥。

步骤s8所述的通信双方计算当次通信的通信密钥,具体为,根据d-h密钥交换协议,获取对方公钥后,通信双方采用如下公式计算当次通信的通信密钥:

k=da*hb=db*ha

式中,ha为通信方a的公钥,hb为通信方b的公钥,da和db为通信方在步骤s3中各自产生的私钥。

所述的物联网通信服务器,具体为采用raft共识协议实现。

所述的采用raft共识协议实现,具体为采用如下步骤进行实现:

a.leader节点选举;

b.iot设备的数据同步;

c.iot设备的数据存储;

d.物联网通信服务器的响应;

e.iot设备数据的重发;

f.leader节点重选。

所述的leader节点选举,具体为各服务器节点将初始状态设置为follower状态;若某节点在某随机时段内未收到leader节点下发的心跳信息,则将自身状态转换为candidate状态;candidate状态的节点向剩余节点发送投票请求;剩余节点接收到投票请求后,每个节点判断自身设定的随机时间段是否到期,如果未到期,且未投票给自己或者其它节点,则对收到的当前candidate的节点发出确认投票响应消息;最终获取最多数投票的节点转换为leader节点。

所述的iot设备的数据同步,具体为若在随机周期内leader节点未收到新上传的iot终端的公钥数据,则leader节点向剩余节点发送数据同步请求;若同步数据内容为空时,作为心跳检测数据,向剩余节点确认leader节点依然活跃;若leader节点接收到剩余iot设备新提交的公钥数据,则leader节点向剩余节点发送记录请求,并要求剩余节点接收iot设备新提交的公钥数据;剩余节点接收新的iot设备公钥后,向leader节点发出信息并确认成功接收。

所述的iot设备的数据存储,具体为当leader节点接收到超过设定比例的剩余节点的确认消息后,将新得iot公钥数据提交到自己的区块链中;同时在下一个心跳中,leader节点通知所有的剩余节点将新接收的iot公钥数据追加到各自的区块链中。

所述的iot设备重发,具体为若iot设备在设定时间内未收到通信服务器的响应,重新提交公钥数据,尝试到超时而终止。

所述的leader节点重选,具体为一旦leader失效或者与其它节点失去联系,通过心跳检测数据识别后,触发通信服务器重新开始leader节点选举,再执行数据共识和存储等流程。

所述的区块链,使用hash指针链接一系列区块构成区块链表,每个区块包含数据以及指向链中前一个区块的哈希指针,并还提供哈希值去验证这个区块所包含的数据是否发生变化,同时规定区块链表的头哈希指针所指向的头区块单元内容不可改变。

区块链的单元,将pow共识机制相关的nonce随机数和objective_hash值字段更换为term任期号字段和表示区块高度的height字段,保留hash指针和merkle树。

所述的hash指针,具体为hash指针数据结构包括一个指向前一个区块单元的指针,同时还通过哈希函数维护前一区块iot设备公钥数据的哈希值。

选用sha256算法实现存储数据的哈希值计算。

所述的修正merkle树,具体为在区块单元中对于iot公钥数据以merkle树形式组织存储。

若任意一个区块中的iot公钥数据发生变化,该区块后面的全部已有区块和新增区块也必须重新计算哈希值,且计算算力必须超过区块增加速度,否则leader节点维护的区块链总是最新的,从而能够识别篡改。

本发明提供的这种基于区块链技术的物联网终端安全通信方法,改变了传统的手动密码配置,结合ecc和d-h等加密工具,实现iot设备与服务中心以及iot设备间的自动加密通信;通过将iot设备授权认证与iot设备间通信相分离,既减少了服务中心负载量,又实现了数据通信的高效性;最后综合区块链数据结构和raft共识机制,实现了iot设备公钥等数据的可靠存储,保证了存储的完整性和难以篡改性,满足了密钥存储安全的要求。

附图说明

图1为本发明方法的方法流程示意图。

图2为本发明方法的物联网系统安全架构示意图。

图3为本发明方法的区块链结构示意图。

图4为本发明方法的区块链单元的结构示意图。

图5为本发明方法的iot设备数据示意图。

具体实施方式

为减轻服务中心负载压力,实现iot终端设备间的高效、安全的通信与数据传输,保证数据的不可篡改性,设备使用的便捷性,基于区块链技术,提出了一种折中的物联网终端设备间信息安全传输与存储方法,系统的安全架构如图2所示。该方案可同时解决异地通信、传输安全问题,满足负载小、安全存储等实际应用需求。主要包括三个方面工作:(1)以iot设备授权与设备间通信相分离为出发点,基于非对称加密算法和d-h密钥交换机制,实现物联网终端设备的安全通信;(2)设计raft共识算法,满足通信服务器中对于存储的iot设备公钥数据强一致性和正确性需求,保证iot设备通信的实时性和正确性。(3)设计基于区块链的数据存储结构,采用哈希指针、merkled树、时间戳等技术,实现高效的iot公钥数据的完整性验证和数据的难以篡改。

具体的,本发明提供的这种基于区块链技术的物联网终端安全通信方法,其方法流程如图1所示:

本发明提供的这种基于区块链技术的物联网终端安全通信方法,包括如下步骤:

s1.物联网通信服务器生成密钥;具体为采用ecc非对称加密算法生成服务器密钥对;服务器密钥对包括服务器公钥和服务器私钥,其中服务器私钥保存在物联网通信服务器,服务器公钥传输给各个iot设备;

s2.各iot设备生成密钥生成参数;具体包括通过通信双方协商生成的素数p、椭圆曲线系数a和b、基点g和子群阶数n等参数;

s3.各iot设备根据步骤s2生成的密钥生成参数,生成各自的私钥;具体为通信双方依据椭圆曲线参数n,在[1,n-1]区间使用random()函数各自产生一个随机数da和db,作为各自的私钥并保存在本地;

s4.通信双方根据密钥生成参数和私钥,计算得到各自的公钥;具体为采用如下算式计算公钥:

ha=da*g

hb=db*g

式中,ha为通信方a的公钥,hb为通信方b的公钥,da和db为通信方在步骤s3中各自产生的私钥,g为基点;

s5.通信双方获取物联网通信服务器的密钥;具体为通信双方通过以明文的方式,获取物联网通信服务器的公钥;

s6.通信双方将各自的公钥提交物联网通信服务器进行进行区块链存储,具体为通信双方通过获取的物联网通信服务器的公钥对各自的公钥和id进行单端非对称加密,并提交物联网通信服务器进行存储;

具体的,为防止公钥提交时的可能性暴露,并且要为后期扩展通信服务器中iot公钥数据访问权限管理提供便利,iot设备公钥和id使用获取的通信服务器端的公钥进行单端非对称加密,再提交到通信服务器,通信服务器达成共识后,存储到各自区块链中;

s7.通信双方通过物联网通信服务器获取通信对方的公钥;具体为将通信方id和通信对方id数据使用通信服务器公钥加密,上传到通信服务器中,从服务器存储的区块链中查询到所存储的两个设备id所对应的公钥,物联网通信服务器采用各自的公钥对对方的公钥进行加密,并将加密后的数据分别发送至通信对方;通信双方采用各自的私钥对接收的加密数据进行解密即可获取通信对方的公钥;

s8.通信双方计算当次通信的通信密钥;具体为,根据d-h密钥交换协议,获取对方公钥后,通信双方采用如下公式计算当次通信的通信密钥:

k=da*hb=db*ha

式中,ha为通信方a的公钥,hb为通信方b的公钥,da和db为通信方在步骤s3中各自产生的私钥;

s9.通信双方通过当次通信的通信密钥进行安全通信;生成会话共享密钥后,通信双方使用共享密钥进行对称加密即可进行安全通信,消除了对称加密的计算法复杂度,提高通信效率。

在上述的通信过程中,物联网通信服务器具体为采用raft协议实现;搭建raft集群服务器,将达成共识的iot设备id与其公钥数据提交到raft集群维护的区块链中,实现数据可靠存储。当raft集群中出现单点故障时,仍可以为iot设备提供正常服务。在我们的安全架构中,对存储的iot设备公钥数据有很强的一致性和正确性需求,因此采用简单高效的raft协议实现共识。方案中的记账请求实质上就是各个iot设备请求将本身的公钥数据存储在raft集群的区块链中。

采用raft协议实现,具体为采用如下步骤进行实现:

a.leader节点选举;在iot公钥等数据存储之前,raft集群需选出一个leader节点,进行记账管理

具体为各服务器节点将初始状态设置为follower状态;若某节点在某随机时段内未收到leader节点下发的心跳信息,则将自身状态转换为candidate状态;candidate状态的节点向剩余节点发送投票请求;剩余节点接收到投票请求后,每个节点判断自身设定的随机时间段是否到期,如果未到期,且未投票给自己或者其它节点,则对收到的当前candidate的节点发出确认投票响应消息;最终获取最多数投票的节点转换为leader节点;

b.iot设备的数据同步:若在随机周期内leader节点未收到新上传的iot终端的公钥数据,则leader节点向剩余节点发送数据同步请求,向剩余节点确认leader节点依然活跃;若leader节点接收到剩余iot设备新提交的公钥数据,则leader节点向剩余节点发送记录请求,并要求剩余节点接收iot设备新提交的公钥数据;剩余节点接收新的iot设备公钥后,向leader节点发出信息并确认成功接收;

具体的,leader节点选出后,如果在随机周期时间值内,若未接收到新上传的iot公钥数据,leader节点向其它节点发送数据同步请求,当同步数据内容为空时,作为心跳检测机制,让其它follower节点用来确定leader节点是否仍然活跃;若接收到iot设备新提交的公钥数据,则向其它follower节点发送记录请求,即要求其它follower节点接收iot设备新提交的公钥数据;其它follower节点成功接收新的iot公钥数据后,向leader节点发出成功接收确认信息;

c.iot设备的数据存储:当leader节点接收到超过设定比例的剩余节点的确认消息后,将新得iot公钥数据提交到自己的区块链中;同时在下一个心跳中,leader节点通知所有的剩余节点将新接收的iot公钥数据追加到各自的区块链中;

具体的,当leader节点接收到全部follower节点或者超过50%以上的follower节点的确认消息,将新iot公钥数据提交到自己的区块链中,即将之前记录的但未提交的公钥数据进行提交;在下一个心跳中,leader会通知所有follower节点将新接收的iot公钥数据追加到各自的区块链中,即将leader节点中已经达成共识的新区块单元进行全网确认;

d.物联网通信服务器的响应:当raft通信服务器完成数据共识和存储后,发送确认消息给iot设备,完成此次数据提交;

e.iot设备数据的重发:若iot设备在一定时间内未收到通信服务器响应,重新提交公钥数据,尝试到超时而终止;

f.leader节点重选:一旦leader失效或者与其它节点失去联系,通过心跳检测机制识别后,触发raft集群服务器重新开始leader节点选举,再执行数据共识和存储等流程。

raft共识协议保证了服务中心在单机故障后仍可为iot设备提供一致性的公钥数据内容,但某个节点中某些iot公钥数据可能会被篡改,数据完整性和难以篡改性仍没有得到保证。为此,引入区块链数据结构,利用哈希指针、merkled树、时间戳等技术实现数据的安全存储。

区块链,使用hash指针链接一系列区块构成区块链表,每个区块包含数据以及指向链中前一个区块的哈希指针,并还提供哈希值去验证这个区块所包含的数据是否发生变化,同时规定区块链表的头哈希指针所指向的头区块单元内容不可改变。

区块链的单元,将pow共识机制相关的nonce随机数和objective_hash值字段更换为term任期号字段和表示区块高度的height字段,采用hash指针和merkle树;具体的,为保证强一致性,我们借鉴比特币区块链结构,并根据我们自己的安全方案进行相应的修改,将与比特币pow共识机制相关的nonce随机数与objective_hash值字段去掉,换成term任期号字段和表示区块高度的height字段。另外,区块链数据结构主要涉及到hash指针以及merkle树。

hash指针,具体为采用的hash指针,包括一个指向前一个区块单元的指针,同时还通过哈希函数维护前一区块iot设备公钥数据的哈希值。

选用sha256算法实现存储数据的哈希值计算。

merkle树,具体为在区块单元中对于iot公钥数据以merkle树形式组织存储;具体的,在区块单元中对于iot公钥数据以merkle树形式组织存储。叶子节点存储iot公钥数据的哈希值,而非叶子节点上的值是将该节点的所有子节点的组合结果的哈希值。使用merkle哈希树进行iot公钥数据完整性验证时,只需将iot公钥数据所在分支进行hash值计算,简单高效;

若任意一个区块中的iot公钥数据发生变化,该区块后面的全部已有区块和新增区块也必须重新计算哈希值,且计算算力必须超过区块增加速度,否则leader节点维护的区块链总是最新的,从而能够识别篡改。

图2示出了能够应用于物联网信息安全传输与存储的实施例的示例系统安全架构,系统由通信服务器和物联网设备终端节点构成。方框内四个节点是通信服务器,也称为raft集群服务器,相互之间通常经使用有线网络相互通信。iot设备1到6是对各类型物联网终端的抽象,无特定指代,各iot设备采用通常采用无线通信方式。图中的服务器数目和iot设备数目仅仅是示意性的,具体系统可根据实际应用需求进行增减。

为保证iot设备的公钥、设备id等数据的强一致性,以及数据存储和验证时间效率,在图2中的每一个服务器节点,引入了区块链数据结构,如图3所示。

图3结构中使用hash指针链接一系列区块单元构成区块链表,每个区块单元包含数据部分和指向链中前一个区块的哈希指针。每一个区块不仅可告知前一区块位置,还能够提供哈希值去验证这个区块所包含的数据是否发生变化。

区块链中区块单元的设计如图4所示,借鉴了比特币区块链结构,并根据我们自己的安全方案进行了相应的修改,term字段表示任期号,height字段表示区块高度,其它字段基本与比特币区块链结构含义相同。

图4所示的区块单元结构中,以merkle树形式来组织存储iot设备公钥和id等数据。merkle树叶子节点存储iot设备数据的哈希值,而非叶子节点上的值是将该节点的所有子节点的组合结果的哈希值。使用merkle哈希树进行iot设备公钥数据完整性验证时,只需将iot公钥数据所在分支进行hash值计算,简单高效。

对于图4中hash值计算,可选用sha256来实现存储数据的哈希值计算操作。首先完成数据的填充和扩展填充,将所输入的原始数据转换为n个512比特的信息块,再对每个信息块利用sha256压缩函数进行处理,通过迭代计算,产生一个256位的数据摘要,即所需要的哈希值。

对于通信服务器采用ecc非对称加密算法生成密钥对。首先选择椭圆曲线,依据选定的椭圆曲线生成椭圆曲线参数group,包括素数p、基点g、子群阶n、曲线系数a和b等;根据曲线参数group生成公私钥;私钥保存本地,公钥可传输给各iot终端设备。

各iot设备也使用ecc加密算法,设备使用相同椭圆曲线及曲线参数,包括素数p、基点g、子群阶n、曲线系数a和b等参数,以此生成iot设备的公私钥。例如,iot终端设备1和设备2,使用椭圆曲线参数,分别生成私钥d1和d2,,然后分别计算各自的公钥h1=d1*g和h2=d2*g。iot设备公钥生成后,传输到raft服务器端存储。在传输之前raft集群服务器应当已正常运行,即应该已经选举好leader节点,否则iot设备由于接收不到raft集群的响应结果而不断尝试提交,直到尝试超时而中止。

为实现iot设备公钥和id数据在集群服务器中基于区块链共识存储,在iot设备数据提交到服务器之前,需选举leader节点。

如图2所示,方框内为通信服务器节点,服务器节点启动时,状态均设为follower状态。如果在设定的选举超时时间内未收到leader的心跳信息,follower状态的节点转换为candidate状态。同时,为避免选举冲突,选举超时时间为某个时间区间的随机值。

接着成为candidate状态的服务器节点向其它follower/candidate状态节点发出投票给自己的请求。

其它follower节点收到投票请求后,经过判断本地区块链更新程度和candidate节点区块链的更新程度的一致性后,发出确认投票响应消息给candidate节点。

如果在这个过程中,有一个follower状态节点宕机而没有接收到请求选举信息,此时candidate节点可以为自己投票。candidate节点得到n/2+1的大多数票后,candidate状态节点转换成leader节点。

成为leader节点后,在下一个随机时间周期中,可向其它follower状态节点发送指令。如果leader节点在某随机时间内未接收到新提交的iot公钥数据,则向其它follower节点发送包含leader节点区块链更新程度的消息,作为follower节点检测leader节点是否活跃的心跳检测信息。

服务器端leader节点选举完成后,iot设备请求将本身公钥数据存储到raft集群图4所示的区块链中,流程如图5所示。首先iot设备将自己的公钥和id信息使用服务器端的公钥进行加密,然后提交到leader节点或follower节点。

对于iot公钥数据在提交时的加密,是有如下情形考虑:若在图1中,iot5设备属于a用户家庭,iot3和iot4设备属于b用户家庭,两者在提交公钥数据内容时未加密,那么双方都可未经raft集群查询而直接截取对方的公钥数据,然后使用d-h密钥交换协议,a用户家庭的iot设备与b用户家庭的iot设备可以直接通信,这在现实中是不可取的,具有很大的安全隐患。

若iot设备公钥数据提交到follower节点,将会继续转发给leader节点。leader收到iot设备消息后,向所有的其它follower节点发送记录请求,即要求其它follower节点接受iot设备新提交的一个公钥和id数据。

follower节点接受了新的iot公钥数据后,确认接受成功,并向leader节点发出成功接受信息。当leader节点接收到全部follower节点或者超过50%以上的follower节点的确认消息,则将新iot公钥数据提交到自己的区块链中,存储到如图3所示的区块单元中。

在下一个时间周期中,leader会通知所有follower节点将新接受的iot公钥数据追加到各自的区块链中,即将服务器节点中已经达成共识的新区块单元进行全网确认,正式提交到全网的区块链中,使得各个服务器节点保持的区块链数据高度一致。

当通信服务器完成数据共识和存储后,发送确认消息给iot设备,完成此次数据提交。如果iot设备在一定时间内未收到raft服务器的响应,重新提交公钥数据,尝试到超时而终止。

一旦leader失效或者与其它节点失去联系,通过心跳检测机制识别后,触发通信服务器重新开始leader节点选举,再执行数据共识和存储等流程。

leader节点选举完成后,当iot设备需要相互通信时,将某iot设备本身id和通信对方id使用通信服务器的公钥加密,上传到通信服务器,在服务器的区块链中,根据两个设备的id查询所对应的设备公钥,接着使用通信方自己公钥对通信对方的公钥进行加密,然后从服务器发送到通信方设备,通信方设备使用自己的私钥进行解密,获得通信对方公钥。

例如,通信方iot设备1与通信对方iot设备2进行通信,发送iot设备1和2的id到服务器,在服务器区块链中,查询到设备2的公钥h2和设备1的公钥h1,使用设备1的公钥h1对设备2的公钥h2加密,传输到设备1,设备1使用私钥d1解密,获取设备2的公钥h2,即可计算共享密钥k=d1*h2;对于设备2,使用2的公钥h2对设备1的公钥h1加密,传输到设备2,设备2使用私钥d2解密,获取设备1的公钥h1,即可计算共享密钥k*=d2*h1,根据ecdh协议,可以得到k=k*,因此k作为通信双方会话共享密钥。

生成会话共享密钥k后,通信双方使用共享密钥进行对称加密即可进行安全通信,消除了非对称加密的计算法复杂度,提高通信效率。通信时不在经过服务器端验证,减轻了服务器的负载压力。

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