掌桥专利:专业的专利平台
掌桥专利
首页

一种云链融合应用平台的数据安全处理方法

文献发布时间:2023-06-19 19:35:22


一种云链融合应用平台的数据安全处理方法

技术领域

本发明属于计算机技术领域,尤其涉及一种云链融合应用平台的数据安全处理方法。

背景技术

大规模建设服务器的成本较高,云计算服务随之诞生,为很多互联网企业提供了便利,成为了当今互联网的基础设施。云服务极大降低了互联网企业的初创成本,拉低了创业门槛,成为了互联网创业爆发的一大助力;

而区块链技术基于云计算服务的支持下,得以迅速发展和壮大;然而,虽然区块链这种去中心化系统平台相对于传统的中心化系统平台来说,用户的存放在区块链平台的数据资产相对更加“安全”,但是仍然有很多不法分子利用黑产技术对云链平台的用户进行非法攻击来盗取信息资产,为云链平台的企业和用户带来了很大的困扰,对于去中心化系统,当有些节点有恶意行为的时候,就变得非常复杂非常不安全。

上述内容仅用于辅助理解本发明的技术方案,并不代表承认上述内容是现有技术。

发明内容

为解决背景技术提到的以上技术问题,本发明提出一种云链融合应用平台的数据安全处理方法,所述云链平台包括云存储节点和区块链节点,所述区块链节点包括用户管理模块,所述方法包括:

由所述区块链节点的用户管理模块确定所述区块链节点用户的本地DLL目的文件;获取所述DLL目的文件的预设SECTION节;所述DLL目的文件中设置有秘钥变量,所述预设SECTION节保存至云存储节点;

由所述用户管理模块创建所述DLL目的文件的副本DLL文件,将所述副本DLL文件发送至所述云存储节点使得所述云存储节点对其进行保存,并将所述副本DLL文件记录至所述区块中;

由所述用户管理模块对所述DLL目的文件进行加密,并将部分加密秘钥写入所述副本DLL文件;

在检查到所述区块链节点的用户登录账号时,由所述用户管理模块加载所述副本DLL文件,获取所述部分加密秘钥,基于所述部分加密秘钥确定解密秘钥,利用所述副本DLL文件将所述解密秘钥写入至所述预设SECTION节的秘钥变量中,利用所述解密秘钥对所述DLL目的文件进行解密。

可选的,所述确定所述区块链节点用户的本地DLL目的文件的步骤,包括:

由所述区块链节点的用户管理模块读取所述区块链节点用户的本地DLL目的文件到内存中,根据所述DLL目的文件的文件头获得节数据表的起始地址、结束地址和预设SECTION节的名称以对预设SECTION节进行加载,从而保证数据传输的安全。

可选的,所述对所述DLL目的文件进行加密,并将部分加密秘钥写入所述副本DLL文件的步骤,包括:

对所述DLL目的文件进行加密时,使用所述DLL目的文件的hash值作为第一部分密钥;在后续解密时对所述所述副本DLL文件进行哈希计算,将计算得到的hash值作为第二部分密钥,并将所述第二部分加密秘钥写入所述副本DLL文件;

根据DLL目的文件的hash值和副本DLL文件的hash值确定加密秘钥;

基于所述DLL目的文件的起始地址与结束地址确定所述预设SECTION节的偏移大小;

基于所述加密秘钥以及所述预设SECTION节的偏移大小,对所述云存储节点的预设SECTION节进行加密。

优选的,所述副本DLL文件关联一外部调用的接口,所述外部调用的接口无参数传入;

相应地,所述由所述用户管理模块加载所述副本DLL文件,获取所述部分加密秘钥的步骤,具体包括:

由所述用户管理模块加载所述副本DLL文件,获取所述副本DLL文件关联的接口,由所述副本DLL文件调用所述接口从所述DLL目的文件中获取加密密钥的第一部分密钥,针对所述第一部分密钥进行所述DLL目的文件的哈希计算得到第二部分密钥,将所述第二部分密钥作为解密密钥;

相应地,所述利用所述副本DLL文件将所述解密秘钥写入至所述预设SECTION节的秘钥变量中,利用所述解密秘钥对所述DLL目的文件进行解密的步骤,具体包括:

利用所述副本DLL文件将所述解密密钥写入至所述预设SECTION节的秘钥变量中,利用所述解密秘钥和所述预设SECTION节的偏移大小对所述云存储节点的预设SECTION节进行解密以对完成所述DLL目的文件的解密,若解密成功,则判定登录用户为安全用户,若解密失败,则判定登录用户为黑产用户。

可选的,对所述区块链节点的用户登录账号进行检查的流程,包括:

云链平台响应用户终端发出的登录请求,基于智能合约生成密钥对和随机数,所述密钥对包括第一密钥和第二密钥;

云链平台将所述第一密钥和所述随机数反馈至所述区块链节点,将所述第二密钥和所述随机数发送给所述云存储节点;所述区块链节点通过所述第一密钥对所述随机数进行加密,将加密后得到的随机信息发送给所述云存储节点进行登录验证;所述云存储节点通过所述第二密钥对区块链节点发送的随机信息进行解密,若解密后的随机数与由所述云链平台发送的随机数一致,则登录验证成功。

本发明的有益效果在于云链平台的用户在登录区块节点账号时,区块节点能够自动对黑产用户进行有效检测筛别,防止黑产用户对本地DLL文件的非法操作,为云链平台的数据安全提供了有效保障。

附图说明

图1为本发明一种云链平台的数据安全处理方法流程示意图。

具体实施方式

下面结合附图和实施例对本发明作进一步的详细说明。可以理解的是,此处所描述的具体实施例仅仅用于解释本发明,而非对本发明的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与本发明相关的部分而非全部结构。

本申请实施例涉及云技术和区块链。基于云技术中的云计算和云存储。

云技术指在广域网或局域网内将软硬件和网络等系列资源统一起来,实现数据的计算、储存、处理和共享的一种托管技术。云技术基于云计算商业模式应用的网络技术、信息技术、整合技术、管理平台技术、应用技术等的总称,可以组成资源池,按需所用,灵活便利。云计算技术将变成重要支撑。技术网络系统的后台服务需要大量的计算、存储资源。伴随着互联网行业的高度发展和应用,未来每个物品都有可能存在自己的识别标志,都需要传输到后台系统进行逻辑处理,不同程度级别的数据将会分开处理,各类行业数据皆需要强大的系统后盾支撑,只能通过云计算来实现。

云计算是一种计算模式,它将计算任务分布在大量计算机构成的资源池上,使各种应用系统能够根据需要获取计算力、存储空间和信息服务。提供资源的网络被称为“云”。

“云”中的资源在使用者看来是可以无限扩展的,并且可以随时获取,按需使用,随时扩展,按使用付费。

作为云计算的基础能力提供商,会建立云计算资源池(简称云平台,一般称为基础设施即服务(InfrastructureasaService,IaaS)平台,在资源池中部署多种类型的虚拟资源,供外部客户选择使用。

云存储是在云计算概念上延伸和发展出来的一个新的概念,分布式云存储系统是指通过集群应用、网格技术以及分布存储文件系统等功能,将网络中大量各种不同类型的存储设备(存储设备也称之为存储节点)通过应用软件或应用接口集合起来协同工作,共同对外提供数据存储和业务访问功能的一个存储系统。

目前,存储系统的存储方法为:创建逻辑卷,在创建逻辑卷时,就为每个逻辑卷分配物理存储空间,该物理存储空间可能是某个存储设备或者某几个存储设备的磁盘组成。

客户端在某一逻辑卷上存储数据,也就是将数据存储在文件系统上,文件系统将数据分成许多部分,每一部分是一个对象,对象不仅包含数据而且还包含数据标识(IDentity,ID)等额外的信息,文件系统将每个对象分别写入该逻辑卷的物理存储空间,且文件系统会记录每个对象的存储位置信息,从而当客户端请求访问数据时,文件系统能够根据每个对象的存储位置信息让客户端对数据进行访问。

存储系统为逻辑卷分配物理存储空间的过程,具体为:按照对存储于逻辑卷的对象的容量估量(该估量往往相对于实际要存储的对象的容量有很大余量)和独立冗余磁盘阵列的组别,预先将物理存储空间划分成分条,一个逻辑卷可以理解为一个分条,从而为逻辑卷分配了物理存储空间。

区块链是分布式数据存储、点对点传输、共识机制、加密算法等计算机技术的新型应用模式。区块链本质上是一个去中心化的数据库,是一串使用密码学方法相关联产生的数据块,每一个数据块中包含了一批次网络交易的信息,用于验证其信息的有效性(防伪)和生成下一个区块。区块链可以包括区块链底层平台、平台产品服务层以及应用服务层。

区块链底层平台可以包括用户管理、基础服务、智能合约以及运营监控等处理模块。其中,用户管理模块负责所有区块链参与者的身份信息管理,包括维护公私钥生成(账户管理)、密钥管理以及用户真实身份和区块链地址对应关系维护(权限管理)等,并且在授权的情况下,监管和审计某些真实身份的交易情况,提供风险控制的规则配置(风控审计);

基础服务模块部署在所有区块链节点设备上,用来验证业务请求的有效性,并对有效请求完成共识后记录到存储上,对于一个新的业务请求,基础服务先对接口适配解析和鉴权处理(接口适配),然后通过共识算法将业务信息加密(共识管理),在加密之后完整一致的传输至共享账本上(网络通信),并进行记录存储;智能合约模块负责合约的注册发行以及合约触发和合约执行,开发人员可以通过某种编程语言定义合约逻辑,发布到区块链上(合约注册),根据合约条款的逻辑,调用密钥或者其它的事件触发执行,完成合约逻辑,同时还提供对合约升级注销的功能;运营监控模块主要负责产品发布过程中的部署、配置的修改、合约设置、云适配以及产品运行中的实时状态的可视化输出,例如:告警、监控网络情况、监控节点设备健康状态等。

平台产品服务层提供典型应用的基本能力和实现框架,开发人员可以基于这些基本能力,叠加业务的特性,完成业务逻辑的区块链实现。应用服务层提供基于区块链方案的应用服务给业务参与方进行使用。

下面对本申请实施例提供的云链平台的数据安全处理方法进行介绍,本实施例中,所述云链平台包括云存储节点和区块链节点,所述区块链节点包括用户管理模块,所述方法包括:

步骤S10:由所述区块链节点的用户管理模块确定所述区块链节点用户的本地DLL目的文件;获取所述DLL目的文件的预设SECTION节;所述DLL目的文件中设置有秘钥变量,所述预设SECTION节保存至云存储节点;

需要说明的是,本实施例适用于借助window操作系统来登录云链技术平台的的用户;

本实施例的执行主体是用户管理模块,用户管理模块负责所有区块链参与者的身份信息管理,包括维护公私钥生成(账户管理)、密钥管理以及用户真实身份和区块链地址对应关系维护(权限管理)等;

DLL文件(动态链接库英文为,DynamicLinkLibrary)为windows平台的核心功能组件,DLL是一个包含可由多个程序,同时使用的代码和数据的库。如果不对DLL文件进行加密保护,那么黑产也可以通过逆向破解来破解DLL文件中的核心功能,而区块链技术作为一种共享账本技术,如果其中某个节点对用户本地终端上的DLL文件有恶意行为,就会导致整个云链系统编得复杂而不安全。

可理解的是,DLL文件由许多SECTION节组成,每个SECTION节都具有读、写、查询和分享的功能代码指令,通常,编译器在编译源程序生成DLL文件时会把编译后的代码指令、数据以及其他的信息放入标准的SECTION节中;

步骤S20:由所述用户管理模块创建所述DLL目的文件的副本DLL文件,将所述副本DLL文件发送至所述云存储节点使得所述云存储节对其进行保存,并将所述副本DLL文件记录至所述区块中;

需要说明的是,本实施例使用两个DLL文件,从而其中核心需要保护的DLL文件单独是无法进行解密也无法使用的,那么相应地EXE执行文件被执行时黑客也无法对DLL文件进行破解;

在具体实现中,所述DLL目的文件为X.DLL,则所述用户管理模块创建X.DLL的副本文件Y.DLL,进而可以防止X.DLL文件在相应地文件被运行时其被破解。

步骤S30:由所述用户管理模块对所述DLL目的文件进行加密,并将部分加密秘钥写入所述副本DLL文件;

在具体实现中,对所述DLL目的文件进行加密时,使用所述DLL目的文件的hash值作为第一部分密钥;在后续解密时对所述所述副本DLL文件进行哈希计算,将计算得到的hash值作为第二部分密钥,并将所述第二部分加密秘钥写入所述副本DLL文件;根据DLL目的文件的hash值和副本DLL文件的hash值确定加密秘钥;基于所述DLL目的文件的起始地址与结束地址确定所述预设SECTION节的偏移大小;基于所述加密秘钥以及所述预设SECTION节的偏移大小,对所述云存储节点的预设SECTION节进行加密;

步骤S40:在检查到所述区块链节点的用户登录账号时,由所述用户管理模块加载所述副本DLL文件,获取所述部分加密秘钥,基于所述部分加密秘钥确定解密秘钥,利用所述副本DLL文件将所述解密秘钥写入至所述预设SECTION节的秘钥变量中,利用所述解密秘钥对所述DLL目的文件进行解密。需要说明的是,所述副本DLL文件关联一外部调用的接口,所述外部调用的接口无参数传入;

在具体实现中,由所述用户管理模块加载所述副本DLL文件,获取所述副本DLL文件关联的接口,由所述副本DLL文件调用所述接口从所述DLL目的文件中获取加密密钥的第一部分密钥,针对所述第一部分密钥进行所述DLL目的文件的哈希计算得到第二部分密钥,将所述第二部分密钥作为解密密钥;

利用所述副本DLL文件将所述解密密钥写入至所述预设SECTION节的秘钥变量中,利用所述解密秘钥和所述预设SECTION节的偏移大小对所述云存储节点的预设SECTION节进行解密以对完成所述DLL目的文件的解密,若解密成功,则判定登录用户为安全用户,若解密失败,则判定登录用户为黑产用户。

可理解的是,由于X.DLL和Y.DLL都会被加密,且在检测到该区块链节点的有用户登录账号时,该区块链节点的用户管理模块会先加载Y.DLL,而Y.DLL则会对X.DLL进行操作,从而X.DLL才能够正确的进行解密执行;

具体地,在一实施例中,在设计副本DLL文件(即Y.DLL文件)时,首先会采用下文实施例方案中的加密方案来对核心功能加密,但是Y.DLL的解密只需要自身则可以进行解密;

同时Y.DLL提供一个外部调用的接口,目的是给后续X.DLL来调用,来对X.DLL的秘钥进行处理;

此处Y.DLL则可以来对X.DLL的秘钥进行处理,此处接口只是一个调用并没有传入参数,目的是保障秘钥数据的隐蔽性,如果传入参数则容易暴露秘钥的位置。而Y.DLL如何查找到X.DLL中的秘钥,本实施例会依据后续X.DLL的秘钥变量,从X.DLL中进行搜索秘钥变量,从而能够找到X.DLL中存储秘钥的目标变量,得到目标变量则可以把实际解密的秘钥数据填入此目标变量中。

其中,本实施例搜索目标变量,则必须是读取内存中加载的X.DLL,而不能是从设备中读取X.DLL,因为内存中加载的X.DLL是后续马上需要执行的,后续马上需要使用的。

进一步地,本实施例在设计DLL目的文件(即X.DLL文件)的加密方法时,和传统的文件加密方式不一样,本实施例只对X.DLL文件中的一个节(SECTION)进行加密,而其他节则不进行加密。传统的加密是对整个文件进行加密,而本文则相当于只对X.DLL文件中部分进行加密。

本实施例的上述方案的有益效果在于:

1,部分加密则更好的可以隐藏了X.DLL文件的核心功能,而不易于被黑产发现区块链节点的核心功能进行了加密,从而保护和隐藏效果更好。因为如果整个文件加密那么则整个文件则已经不是一个DLL文件,所以更易于被发现加密了。

2,只加密部分DLL文件,那么加解密速度更快,那么整个程序的性能更高,尤其是程序启动时如果性能更快用户体验则更好。

3,只加密部分功能,那么整个X.DLL还是一个正常的DLL文件,那么其与区块链程序的兼容性正确性会更好。

具体地,在一实施例中,具体加密算法如下:

开发X.DLL中的核心函数到预设SECTION节中。

在设计发X.DLL的过程中,本实施例将需要保护的函数单独的放到一个SECTION节中,则后续会对此SECTION节中的代码进行加密,即得到预设SECTION节;那么通过在函数定义上面加上特殊的字段定义则表示把此函数存放到此SECTION节中,从而和X.DLL中其他SECTION节分开。

本实施例为了更好的伪装预设SECTION节,将所述预设SECTION节保存至云存储节点,能够更好进行伪装。

设计X.DLL文件中的秘钥存储。

在我们开发X.DLL的过程中,X.DLL的秘钥后续会使用与其解密对应的功能,此时X.DLL后续是使用独立工具进行加密的,而在X.DLL解密时是需要解密秘钥的。本实施例在之前提到X.DLL的解密是依赖于Y.DLL这个副本DLL文件的,同时为了提升安全性以及防止X.DLL被篡改,因此后续秘钥的生成是依赖于X.DLL文件的整个内容的哈希值。

本实施例设计了在X.DLL中定义一个秘钥变量用于存储秘钥数据,而此秘钥变量是后续X.DLL解密时需要用的解密秘钥。

而解密秘钥是需要后续加密后得知的,因此无法在开发X.DLL时提前知道解密秘钥,同时解密秘钥与X.DLL的整个代码的完整性相关,因此只有X.DLL编译后才能够得到。本实施例则设计了一个在X.DLL中定义一个秘钥变量,后续Y.DLL则依据这个秘钥变量来查找到X.DLL中的这个变量,并将秘钥数据写入到X.DLL的这个特征变量中,从而将X.DLL的解密深度依赖于Y.DLL。因此本实施例的云链方案则能够绑定2个DLL文件,使得本地独立的DLL目的文件(X.DLL)无法进行解密。

在具体实现中,本实施例设计了一个char*var[128]={0};

具体则是定义了一个全局变量var,其中其大小是一个128个字节的字符串,那么其中填入一段内容做为特征值,后续Y.DLL则会从X.DLL中查找此特征,从而查找到var在X.DLL中的位置。

其中特征值不能与X.DLL中其他字符串存在相同的,否则则会造成Y.DLL查找时找到2份或者多份,从而无法使用。

同时为了提升特征值的隐蔽性,每次可以更换特征值。

例如全局变量的长度是128个字节,加上最后一个结尾符0,因此使用一个127个字节的字符串并且其中没有为0的字符。

对X.DLL中的云存储节点中的预设SECTION节进行加密。

在设计完成X.DLL后,会对代码进行编译,最终我们得到一个编译后的X.DLL文件,此时的X.DLL是未被加密过的,现在本实施例需要对云存储节点中的预设SECTION节进行加密,因此需要在X.DLL编译完成后对X.DLL进行加密,因此我们需要开发一个工具来对云存储节点中的预设SECTION节进行加密。具体算法如下:

解析文件头得到节表,本实施例使用mmap内存映射的方式来读取X.DLL文件,其性能更高,而在读取时我们则依据文件头来获取到节表的起始地址及结束地址。根据所述DLL目的文件的文件头获得节数据表的起始地址、结束地址和预设SECTION节的名称对预设SECTION节进行加载。

对云存储节点中的预设SECTION节进行加密,有了预设SECTION节的偏移大小,本实施例则可以对此段进行加密。在加密时,有一点原则则是加密后的大小必须和原始大小一致。

本实施例是对预设SECTION节进行加密,而预设SECTION节本身已经在DLL文件中,其大小已经是固定的,而预设SECTION节本身是在DLL文件中间,如果加密后的内容超过原始的内容,那么则会覆盖其他数据,造成DLL被破坏,而如果需要增加此节的大小,那则需要修改DLL的地方非常多,造成整个方案更为复杂和兼容性不太好。

因此我们加密后和加密前内容大小保持一致。

因此本实施例则选取使用RC4加密算法,该算法则能够保持加密前的长度和加密后的长度一致。

其中加密秘钥则会使用X.DLL的文件的hash值作为秘钥的一部分,从而在后续解密时会对X.DLL进行hash计数得到另一部分的秘钥,从而只用X.DLL不被修改才能够正确解密,否则解密则会失败。

而X.DLL的完整性正好则和解密进行了关联,所以X.DLL一旦被修改那么则无法进行解密。

具体秘钥我们则可以设置为如下:X.DLL的文件hash得到32位的字符串,作为秘钥的一部分数据,而另一部份数据则是Y.DLL的文件hash,作为32为字符串,128位秘钥则由2个文件的32位hash和剩余的随机数来组成。

那么Y.DLL在往X.DLL的秘钥处写入数据时则只写入随机数据,剩下的秘钥数据则由X.DLL来计算X.DLL的文件hash和Y.DLL的文件hash来得到。如果是破坏表头,那么此种方式则表示将DLL中表头数据进行破坏,从而其他逆向工具解析DLL时,造成其解析不到DLL中的SECTION节,从而对DLL目的文件进行保护。

注意,上述仅为本发明的较佳实施例及所运用技术原理。本领域技术人员会理解,本发明不限于这里所述的特定实施例,对本领域技术人员来说能够进行各种明显的变化、重新调整和替代而不会脱离本发明的保护范围。因此,虽然通过以上实施例对本发明进行了较为详细的说明,但是本发明不仅仅限于以上实施例,在不脱离本发明构思的情况下,还可以包括更多其他等效实施例,而本发明的范围由所附的权利要求范围决定。

相关技术
  • 一种基于区块链的数据处理平台及数据处理方法
  • 一种区块链云数据安全处理方法及云平台系统
  • 一种应用于数据安全处理平台的数据安全处理方法
技术分类

06120115960571