本发明涉及计算机网络通信领域、信息安全领域以及分布式数据库领域,特别是涉及一种适用于移动定位系统的安全分布式数据库交互方法。
背景技术:
本申请所针对的移动定位系统所使用的数据库与市面上存在的分布式追踪定位系统有一个共同的特点,无法提供安全服务,无法在保证数据机密性和完整性的同时,还要保证高效性。本发明专利所研究的分布式数据库面向开放的互联网进行连接,由于互联网的开放性,各种各样的攻击行为威胁着分布式系统数据库的安全。近年来,数据的安全问题频发,例如2014年的携程漏洞事件,任何第三方都可以遍历下载携程安全支付日志,导致大量用户银行卡信息泄露;又如亚马逊卖家listing被劫持事件,通过劫持合法卖家的listing,销售盗版产品;再如2013年发生的信息劫持钓鱼事件,导致全国百万用户感染病毒。在绝大部分情况下,分布式数据库交互的数据内容要求只有符合规定的用户才能够获取。因此,加密算法被应用在了分布式数据库的数据交互中,通过仅有符合条件的用户才能完成数据解密,从而确保安全的数据交互。此外,加密也防止了被拦截数据的泄露。
然而,现有的技术还存在许多常见问题,系统的数据交互大多还是明文数据传输,即使采用加密传输也还存在各种问题。比如,如何能够安全且方便地完成对合法用户密钥的分发?如何保证在数据交互时满足一次一密的要求?如何防止各类常见的攻击对数据安全性造成的威胁?如何保障数据来源的可靠性与完整性?如何在尽可能不影响系统效率的情况下实现对数据的机密性与完整性保护?针对上述问题虽然存在一些解决方法,但是大部分的方案都无法同时解决上述问题,有的方法可以保证机密性却无法实现高效访问,有的方法可以解决效率问题却无法实现一次一密的要求。
专利申请201410457693.7一种分布式数据库安全访问的方法,该方法通过设置通过通信网络相互连接的节点,所述的节点上存放有分布式数据库的数据,每一个节点还设置有用于数据发送的安全模块和用于接收的安全模块,这样就有效的避免了现有技术还是只能对分布式数据库之间的通信数据的读或写权限操作方面的验证而不是和现在的需要更加详细的访问约束的要求的缺陷。但是该发明存在以下缺陷,第一,在通信过程中,需要保护的数据仍然是以明文的形式进行传递;第二,读写操作放在一起会严重影像数据库的访问效率;第三,对于非本地服务器上的数据库,每个操作都要重新连接,大幅度的降低了效率。
专利申请201410457691.8一种分布式数据库安全存储数据的方法,该方法在用于分布式数据库的数据存储的节点上,当需要对分布式数据库的数据进行存储时,先将整个待加密的数据分为若干随机长度的部分,再用一个随机生成的des密钥对每一个随机长度的部分进行加密,获得的密文长度,密文数据和des密钥本身再由rsa公钥加密。这样就有效的避免了现有技术容易受到恶意攻击而导致分布式数据库存储数据不安全的缺陷。但是该发明存在以下缺陷:第一,该加密操作使用两次加密,步骤繁琐且密钥得不到更新;第二,rsa公钥加密,会面临密钥分发的问题;第三,读写数据在同一个库中进行,解密操作过于繁琐,会很大程度降低数据库的访问效率;第四,无法进行身份验证。
专利申请201410601699.7一种基于集群管理器的分布式数据库高可用方法及系统,每个数据库组设有主节点和从节点,分布式数据代理中间件部署于代理主服务器和代理从服务器上,主代理服务器通过主连接与个数据库组件的主节点相连,通过从连接与个数据库组的从连接进行连接,主代理服务器内设置主集群管理器,从代理服务器中设置从集群管理器;主集群管理器监管主代理服务器的代理进程,从集群管理器监管从代理服务器的代理进程,主集群管理器和从集群管理器相互监控。但是该发明存在以下缺点:第一,数据库之间数据以明文的形式进行传递,没有安全性;第二,读写操作未分离。
专利申请201510997376.9一种分布式数据库的数据迁移方法与装置,其中所述方法包括:获取数据迁移参数,其中所述数据迁移参数包括:待迁移业务表分片信息,源端服务节点信息以及目标端服务节点信息;以及依据所述数据迁移参数,控制源端服务节点与目标端服务节点之间的数据迁移。通过本发明提供的分布式数据库的数据迁移方案,既能够节省人力资源又能够提升数据迁移的效率,数据迁移也是数据传输的一种。但是改发明依旧存在缺点:数据的传输中没有对传输数据进行安全保护,这样传输的数据很大可能遭受破坏于丢失。
专利申请201611102927.1一种分布式数据库数据传输方法、中间层服务器及系统,该分布式数据库传输方法包括:接收客户端发送的数据插入请求,所述数据插入请求中包括带插入的数据;根据分布式数据库系统中服务器集群的数据库实例的数目对插入的数据进行分割,获得n个数据块,将所述的n个数据块发送至服务器集群中的n个数据库实例中;更新全局系统表,所述的全局系统表中包括各个数据库实例与各个数据节点的对应关系。本发明实施通过在客户端与数据库实例之间设置中间层服务器,客户端通过所述中间层服务器与所述服务器集群中的数据库实例进行数据传输,对于应用来说是透明的,应用无需改造即可通过中间层服务器实现数据的分布式传输。但是该发明存在一下缺陷:第一,客户端与中间件以及中间件与数据库实例之间传输的数据均为明文,容易造成信息窃取等;第二,中间件需要单独运行在一个服务器之上,增加了系统的成本;第三,数据库的存储未实现读写分离,导致读写效率低下;第四,所发送的数据无完整性保护机制,较容易被第三方篡改。
专利申请201010567045.9一种分布式数据库访问方法及系统,该分布式数据库访问方法包括:步骤1.web服务器向代理服务器发送数据库访问请求;步骤2.代理服务器根据预置的解析规则解析该数据库访问请求,并将解析后的数据库访问请求发送至相应的目标数据库;步骤3.代理服务器将目标数据库返回的结果发送至web服务器,该发明规避了数据库集中管理所带来的费用高,单台数据库故障导致全部瘫痪和不易于扩展等风险。但是该发明存在以下缺陷:第一,所有信息传递均是明文很容易被第三方截获;第二,对于非本地数据库,某一用的每一个请求都需要一次远程连接会消耗大量资源,第三,读写未分离,使得数据库的执行效率大幅度降低。
专利申请201710269347.x一种分布式数据库及其访问方法,数据库包括数据存储节点模块、数据存储节点访问模块和数据切分管理模块;数据切分管理模块用于管理当前使用的数据节点切分规则;记录规则的变更历史;监控数据存储节点模块,在数据节点切分规则发生变化的时候,通知数据存储节点访问模块,当数据存储节点访问模块接收到新的数据时,数据存储节点访问模块对数据根据数据产生时间字段来查找变更时间小于该时间的最新数据节点切分规则,使用最新规则对数据进行哈希计算,获取该数据需要存储的数据存储节点并发送。再增加数据节点或回复失效节点的时候能够避免大量的数据迁移,占据分布式数据库的服务带宽,提高分布式数据库的并发服务能力和可靠性。但是该发明存在以下缺陷:第一,数据库之间的数据传输是明文的形式,很容易收到攻击;第二,读写未分离,降低了数据库的效率。
专利申请201810607688.8本发明公开一种分布式数据集群存储系统,该存储系统包括:多个存储节点用于存储代理节点发送的带存储数据,所述的存储节点由多个存储实例组成,同一个存储节点中的多个存储实例保存相同的数据,同一个存储节点的多个存储实例都部署在相同的物理服务器上;多个主控服务器用于维护所述存储节点的参数配置信息;所述代理节点用于接收客户端发送的待存储数据,计算所述待存储数据的hash值并根据所述参数配置信息确定与所述存储数据对应的hash值和存储节点。本存储系统具有构建和维护简单,扩容灵活可靠,高灵活性高可用性的特点。但是改发明存在以下缺陷:第一,数据库之间的信息虽然有hash验证其完整性却无法保证机密性,更无法防止重放攻击,且传输数据均为明文,易受攻击;第二,数据库未实现读写分离,读写效率较低。
2008年中国过程控制会议论文《一种分布式数据库安全模型》构建了一个较完整的分布式数据库安全模型。模型主要包括三个级别的身份认证,基于角色的多层访问控制,基于安全通信服务的安全通信策略,安全检测和反应。本模型从最基本的安全策略进行建模,有着清晰的分层结构,这为安全评估提供了很大的方便。数据库安全通信服务正是在对数据库与应用程序在通信过程中存在的问题作出深入细致分析的基础上,结合pki公钥基础设施,对通信链路进行改造使其更安全的一种服务。改论文存在以下缺陷:第一,对于分布式数据库的读写效率低下未作考虑;第二,公钥基础设施实施成本较大,且密钥分发较难;第三,数据传输中无法保证一次一密机制且无完整性保护机制。
2015年硕士论文《分布式数据库关键技术研究与应用》,实现了一种分布式数据库,这样可以管理各个地方的结点并研究分布式数据库的一些关键技术。上述技术是指数据同步、数据加密等方面。所谓数据同步实际上是指复制及维持分散数据库的操作。这类系统的架构是基于一系列的递送服务器将报告反馈给中心数据库。通过递送服务器数量的拓展来提升自身的规模。第二项分布式数据库技术为数据加密安全,为了保持用户数据的安全,要进行数据加密以保证用户与服务器处于安全状态。对建立在mysql基础上的分布式数据库中的各项关键技术加以研究,其中,最重要部分是分析数据同步和文件加密。但是该论文还是存在以下缺陷:第一,论文中仅仅考虑到存储数据的加密,这样的加密无法保证一次一密的产生;第二,论文中没有考虑分布式数据库在进行数据交互的时候对交互的数据进行加密与完整性保护;第三,在效率方面未考虑到读写分离,导致数据库读写效率较低。
期刊《产业与科技论坛》2017.16期论文“分布式数据库系统的安全机制”,提出分布式数据库系统中的服务器之间,以及服务器与客户机之间都是需要在网络良好的状态下才能进行互相连接的,而这就会存在网络中的一些不良隐患对其造成威胁,例如一些网络黑客对计算机的入侵,会严重影响到系统的安全问题,为了防止这种现象的出现,最直接有效的方法就是让用户在登入时先进行身份检验并且对访问进行控制。其中身份验证主要是让用户在进行数据库系统之前,先将自己的用户标志、口令或者是密钥卡提交给系统,然后系统对其提交的信息进行检验,确定其是否与用户的真实身份吻合,在确保用户提交的数据与其真实身份吻合之后,系统才能让其进入数据库系统中。而访问控制主要是指在用户登录进入数据库系统之后,对数据库的访问提交请求时,系统就需要对其甄别,检验此用户是否具有访问权限,当用户符合访问的标准时,系统才能通过其访问的请求。但是该论文中存在以下缺陷:第一,仅仅在系统中加入访问控制只能保证某一台服务器上的数据是安全的,在不同服务器之间,传输的数据信息依然是明文,很容易受到攻击;第二,数据库没有读写分离,处理数据的效率较低;
期刊《现代电子技术》2017.15期论文“分布式数据库安全代理的研究与实现”,该系统分别封装了代理客户端以及代理服务端,为其他模块进行调用提供基础,通过组件技术实现代理客户端以及代理服务端的设计,给出设计模型内各模块的运行原理和功能。通过代理客户端中的组件创建同应用程序的接口以及同网络通信客户端的接口实现访问数据库的功能,向代理服务端反馈处理后的访问结果。给出网络通信平台设计过程以及代理客户端、服务端设计过程。经测试表明,分布式数据库安全代理系统可实现用户和服务器间的安全通信,可有效实现身份认证,访问性能高,可靠性高。但是该发明存在以下缺陷:第一,服务器之间通信传输的数据是明文,容易受到攻击;第二,数据库中的读写是一起的,大幅度降低了数据库的数据存取效率。
期刊《通信技术》2018.2期论文“基于交换中心的分布式系统数据同步技术”提出了一种基于交换中心的分布式数据库系统同步方案。方案中,各数据库站点只需要直接与交换中心进行数据交换,可有效避免各数据库站点之间相互维护的麻烦;可灵活配置同步模式和数据下发方式,并有利于以后系统的扩充或删减;系统采用java相关技术进行开发,具有很好的跨平台适应能力;传输过程采用符合一定格式的xml文本进行传输,很好地解决了异构数据库系统间的不兼容性;传输数据按照安全协议数据格式封装,有效保证了数据的安全性、完整性和抗抵赖性。但是改论文存在以下缺陷:第一,未考虑到分布式数据库的读写分离进行高效读写;第二,传输数据按照安全协议数据格式封装,在安全协议被得知的情况下无法保证数据的安全;第三,使用安全协议数据格式封装,每次加密的协议都是相同的,无法达到一次一密的要求。
技术实现要素:
为了解决以上问题,本发明提供一种适用于移动定位系统的安全分布式数据库交互方法,通过设计改进的sm4算法对传输的数据进行加密;针对数据库无读写分离且效率低下,设计基于统计的读写分离算法对数据库进行高效的读写;针对数据库之间交互无身份认证、无法实现一次一密,设计基于预共享密钥的密钥交换协议,使得每次会话通信都采用一个会话密钥加密;针对无法实现本地化处理的问题,建立临时表对非本地用户实现本地化处理。本发明方法可针对不同规模的分布式数据库,保证了数据库之间交互数据时的安全,完成对通信的两方数据库的认证,实现读写分离达到数据库的高效存取,同时在加密过程中采用自主设计改进的密钥交换协议,使交换中不会受到中间人攻击,将加密算法模块化以应对数据库规模的变动,扩展性强;另外,通过临时表的建立和使用,将非本地用户的数据保存至临时表并进行相应的业务处理,数据处理完毕后加密返回至非本地数据库实现本地化处理,为达此目的,本发明提供一种适用于移动定位系统的安全分布式数据库交互方法,包括rest数据收发与归属地区分模块、读写分离本地数据库模块、本地密钥协商模块、归属地密钥协商模块、本地数据加解密与完整性保护模块、归属地数据加解密与完整性保护模块和读写分离归属地数据库模块;
所述的rest数据收发与归属地区分模块通过设计改进的trie树算法,负责接收与处理来自客户端的请求,加以json格式化,并进行归属地判断;
所述的读写分离本地数据库模块采用自主设计的基于统计的读写分离算法,进行数据库的操作,通过数据的读写分离保障数据的高可用性,通过同步主从关系保障数据的一致性,并建立本地数据库,完成对本地用户的直接存储,对于非本地用户,创建临时数据表,在本地进行业务处理,并将结果在处理完成之后返回给本地数据加解密与完整性保护模块;
所述的本地密钥协商模块以预共享密钥为基础设计密钥协商协议,同时确认发送方和接收方的身份,在每次数据库的数据传输过程中,产生一个新的会话密钥,并且在密钥分发过程中,可以抵抗中间人攻击与重放攻击;归属地密钥协商模块负责与本地密钥协商模块进行交互,确认双方身份并产生会话密钥;
所述的本地数据加解密与完整性保护模块通过设计改进的sm4加密算法,负责解密来自归属地数据加解密与完整性保护模块所发送的数据,同时对数据的完整性进行验证,并对来自读写分离本地数据库模块的数据进行加密;
所述的归属地数据加解密与完整性保护模块通过设计改进的sm4加密算法,负责解密来自本地数据加解密与完整性保护模块所发送的数据,加密由读写分离归属地数据库模块发送的数据,并保护数据的完整性,实现与本地数据加解密与完整性保护模块的安全交互;
所述的读写分离归属地数据库模块通过设计基于统计的读写分离算法对数据进行高效读写,然后进行格式封装,最后把封装数据发送给归属地数据加解密与完整性保护模块。
作为本发明进一步改进,所述的rest数据收发与归属地区分模块包括rest监听与协议解析模块、数据格式化与归属地判断模块和持久层数据访问模块;负责接收来自客户端的请求,并根据业务需求进行进一步的处理;通过设计改进的trie树算法对归属地进行查找,将结果封装后传输至读写分离本地数据库模块;
所述的rest监听与协议解析模块,基于http协议,提供rest服务,包括处理get、post、put、delete请求,同时接收客户端发送的服务请求,解析服务请求中的http消息,创建服务名参数,并根据服务名参数访问rest相应服务,将服务处理结果发送至数据格式化与归属地判断模块;
所述的数据格式化与归属地判断模块将消息中所包含的信息处理为json格式的数据,然后采用改进的trie树算法对json格式化数据进行归属地查找,并根据查找结果和当前所在地进行比较,将比较结果与该用户的身份信息一同发送给持久层数据访问模块;
所述的持久层数据访问模块接收来自数据格式化与归属地判断模块的数据信息,并通过改进多线程与队列算法,对连接数据库的连接池进行初始化处理,同时建立与读写分离本地数据库模块的socket连接,将处理后的数据发送至读写分离本地数据库模块中的持久层数据收发模块。
作为本发明进一步改进,所述的读写分离本地数据库模块包括持久层数据收发模块、读写分离模块、数据存取模块、临时表创建模块以及临时表数据存取模块;通过设计基于统计的读写分离算法,完成对本地用户数据的直接存取,对非本地用户的数据采用基于业务设计的临时表,进行本地化处理;实现读库、写库过程中的数据安全同步;
所述的持久层数据收发模块,接收来自持久层数据访问模块的数据信息,并根据数据信息中所包含的身份信息与归属地比较信息决定是否启动临时表创建模块,若比较信息显示该用户归属地即为当前所在地,则将该用户信息发送至读写分离模块,否则将该用户信息连同临时表创建启动信息一起发送至临时表创建模块;
所述的读写分离模块接收来自持久层数据收发模块的数据,根据自己设计的基于统计的读写分离算法,对每一种数据服务进行分类,在数据库的读、写过程中,由于写的时间消耗往往是读的百倍,因此把读、写操作存放在同一数据库中会严重影响读的效率,因此将读、写分开操作可大幅提升数据库的高可用性,将读操作标记为r,将写操作标记为w,根据读取和写入的数据量进行细分,将单条记录的操作标记为r1和w1,一次操作n条记录的操作标记为rn和wn,n越大优先级越大,对于同一优先级的操作根据时间顺序进行顺序执行,将经过读写分离处理后的读写请求信息发送至数据存取模块;
所述的数据存取模块接收来自读写分离模块的读写请求信息,进行分析转化为最终的sql语句,然后高效读出本地数据库从库中的数据,并将处理后的数据写入本地数据库主库,最后将主数据库和从数据库中的数据进行安全同步;
所述的临时表创建模块接收来自持久层数据收发模块的用户信息以及临时表创建启动信息,由于接收的用户信息为非本地用户信息,创建临时表时需要根据业务建立表的结构,并使用其唯一用户名对表进行命名,使之与服务要求相吻合,确保在高并发情况下,每一个非本地用户的信息都存储在以自己用户名所建立的临时表中,最后在一次完整的数据交互后销毁所创建的临时表;
所述的临时表数据存取模块接收来自数据解密与完整性验证模块的数据,在临时数据库中进行存取操作,待用户请求服务完成后将数据发送至数据加密与完整性保护模块。
作为本发明进一步改进,所述的本地密钥协商模块包括挑战生成模块和身份验证与共享密钥计算模块;通过采用预共享密钥,自主设计密钥协商协议,实现在每一次数据库数据交互过程中产生一个新的会话密钥,保证一次一密,而且该密钥协商协议,通过增加身份认证,可以完全抵抗中间人攻击,实现身份保护,同时缓解拒绝服务攻击;
所述的挑战生成模块,获取系统生成的大素数q及q的本原根a;挑战生成模块产生发送方随机数xa,并计算出发送方密钥协商参数
所述的身份验证与共享密钥计算模块接收来自应答生成模块的消息
作为本发明进一步改进,所述的归属地密钥协商模块包括应答生成模块和归属地身份认证与共享密钥计算模块;负责与本地密钥协商模块进行交互数据,并依据交互过程中的数据完成对发送方的身份认证,生成最终的会话密钥;
所述的应答生成模块产生随机数xb,生成接收方密钥协商参数
所述的归属地身份认证与共享密钥计算模块接收来自挑战生成模块所发送的消息,获得发送者身份信息ida与密文信息
作为本发明进一步改进,所述的本地数据加解密与完整性保护模块包括数据解密与完整性验证模块和数据加密与完整性保护模块;通过设计改进的sm4算法,在每一次数据库间数据调用过程中,对来自读写分离本地数据库模块的数据明文进行加密,对来自归属地数据加解密与完整性保护模块的密文进行解密;对sm4加密算法进行设计改进,采用32轮迭代非平衡feistel结构,将原密钥长度和分组长度从128位增加为256位,同时采用一种改进的循环移位s盒掩码算法,在每一轮迭代中对s盒进行循环移位,将循环移位后的s盒与固定值掩码相异或,得到最终s盒;最后加入hash算法用于数据完整性保护,满足一次一密的高安全性要求,并且可以抵御例如抗差分,窃听,能量分析等攻击;
所述的数据解密与完整性验证模块接收来自归属地数据加密与完整性保护模块所发送密文信息
所述的数据加密与完整性保护模块对来自读写分离本地数据库模块的明文m,计算出哈希值hash(m),然后采用自主改进的sm4算法,将hash(m)结合明文m一起以会话密钥k进行加密,并与随机数rn进行异或得到最终密文
作为本发明进一步改进,所述的归属地数据加解密与完整性保护模块与本地数据加解密与完整性保护模块进行交互,包括归属地数据解密与完整性验证模块,归属地数据加密与完整性保护模块;通过设计改进的sm4算法,实现在一次一密的密钥基础上,对每一次数据库间的调用数据进行加解密,对来自读写分离归属地数据库模块的数据进行加密,并进行完整性保护;对来自本地数据加解密与完整性保护模块所发送的数据进行解密与完整性验证,在保证高安全性的同时也确保证了接收和发送数据的完整性;
所述的归属地数据解密与完整性验证模块接收来自本地数据加密与完整性保护模块所发送的加密消息密文
所述的归属地数据加密与完整性保护模块接收来自读写分离归属地数据库模块的数据,通过设计改进的sm4算法采用会话密钥
作为本发明进一步改进,所述的读写分离归属地数据库模块包括归属地读写分离模块和归属地数据存取模块;通过设计基于统计的读写分离算法,完成对归属地数据库的高效读写;同时当收到归属地数据加解密与完整性保护模块的请求时,将所请求数据发送至归属地数据加解密与完整性保护模块;
所述的归属地读写分离模块接收来自归属地数据加解密与完整性保护模块所发送的数据信息;采用基于统计的读写分离算法,对数据信息进行分类,将读操作标记为r,将写操作标记为w,根据读取和写入的数据量进行细分,单条记录的操作标记为r1和w1,一次操作n条记录的操作标记为rn和wn,n越大优先级越大,对于同一优先级的操作根据时间顺序进行顺序执行,最后将处理后的信息发送至归属地数据存取模块;
所述的归属地数据存取模块根据归属地读写分离模块所发送的请求,将请求解析处理为数据库可执行的sql语句,完成对归属地数据库的高效读取数据、写入或更新数据操作,对于读的操作全部放在从数据库中进行,对于写的操作全部放于主数据库中进行,将主数据库和从数据库中的数据进行安全同步,最后将读出的数据发送至归属地数据加解密与完整性保护模块。
本申请一种适用于移动定位系统的安全分布式数据库交互方法,其有益效果如下:
针对以上数据库之间通信为明文问题,本发明通过设计改进的sm4算法对传输的数据进行加密;针对数据库无读写分离且效率低下,设计基于统计的读写分离算法对数据库进行高效的读写;针对数据库之间交互无身份认证、无法实现一次一密,设计基于预共享密钥的密钥交换协议,使得一次会话对应一个会话密钥;针对无法实现本地化处理的问题,建立临时表对非本地用户实现本地化处理,并采用读写分离技术实现数据库的高效读写。本发明采用模块化设计,耦合性低,可以对不同规模的数据库实现更好的扩展和应用。数据库采用临时表处理非本地数据,在业务完成后将临时表及时销毁,大幅度减小服务器的压力,并高效实现非本地用户的本地处理。本发明设计rest方式调用服务,直接处理http的请求,简单高效;数据库间的数据交互采用改进的sm4加密算法进行加密传输,同时设计完整性保护方案,通过基于预共享密钥设计的密钥协商协议建立会话密钥,确保数据的机密性与完整性。本发明的系统完整、实用便捷,其整体安全性能好,可操作性强,具有良好的扩展性。
附图说明
图1是本发明的整体框图;
图2是本发明的整体原理结构图;
图3是本发明的整体流程图;
图4是本发明的rest数据收发与归属地区分模块结构图;
图5是本发明的读写分离本地数据模块结构图;
图6是本发明的本地密钥协商模块结构图;
图7是本发明的归属地密钥协商模块结构图;
图8是本发明的本地数据加解密与完整性保护模块结构图;
图9是本发明的读写分离归属地数据库模块结构图;
图10是本发明的密钥协商过程原理图;
图11是本发明的加密过程图。
具体实施方式
下面结合附图与具体实施方式对本发明作进一步详细描述:
本发明提供一种适用于移动定位系统的安全分布式数据库交互方法,本发明通过设计改进sm4加密算法,采用预共享密钥进行自主设计密钥协商协议,设计基于统计的读写分离算法与具备数据完整性保护的模型提供一种适用于移动定位系统的安全分布式数据库交互方法,该方法可应用于移动定位系统的分布式数据库,对分布式数据库进行读写分离,对数据库之间交互的数据进行加密,对加密提供一次一密的标准,凭借面向业务设计的临时表对非本地用户进行本地化处理,保障了数据库的高效读写,传输安全,本地化服务,提供了可扩展的模型。另外,在基于预共享密钥的密钥协商中等提供了身份认证,以及协商数据的可靠性。
如图1所示为本发明的整体框图,本发明所提出的一种安全传输高可用分布式数据库交互方法包括:rest数据收发与归属地区分模块1,读写分离本地数据库模块2,本地密钥协商模块3,归属地密钥协商模块4,本地数据加解密与完整性保护模块5,归属地数据加解密与完整性保护模块6,读写分离归属地数据库模块7。rest数据收发与归属地区分模块1使用基于http协议的rest服务,接收并响应客户端发送的服务请求。客户端与该模块通过http协议进行连接,rest数据收发与归属地区分模块1与读写分离本地数据库模块2,本地密钥协商模块3与本地数据加解密与完整性保护模块5均通过socket接口完成数据交互,归属地密钥协商模块4,归属地数据加解密与完整性保护模块6,读写分离归属地数据库7均通过socket接口完成数据交互。
如图2所示为本发明的整体原理结构图,本发明主要包括7大部分:rest数据收发与归属地区分模块1,读写分离本地数据库模块2,本地密钥协商模块3,归属地钥密钥协商模块4,本地数据加解密与完整性保护模块5,归属地数据加解密与完整性保护模块6,读写分离归属地数据库模块7。所述的rest数据收发与归属地区分模块1包括rest监听与协议解析模块1-1,数据格式化与归属地判断模块1-2以及持久层数据访问模块1-3;所述的读写分离本地数据库模块2包括持久层数据收发模块2-1,读写分离模块2-2,数据存取模块2-3,临时表创建模块2-4以及临时表数据存取模块2-5;所述的本地密钥协商模块3包括挑战生成模块3-1,身份认证与共享密钥计算模块3-2;所述的归属地密钥协商模块4包括应答生成模块4-1,归属地身份认证与共享密钥计算模块4-2;所述的本地数据加解密与完整性保护模块5包括数据解密与完整性验证模块5-1,数据加密与完整性保护模块5-2;所述的归属地数据加解密与完整性保护模块6包括归属地数据解密与完整性验证模块6-1,归属地身份认证与共享密钥计算模块6-2;所述的读写分离归属地数据库模块7包括归属地读写分离模块7-1,归属地数据存取模块7-2。
本发明的服务请求流程如图3所示:
第一步,客户端向服务器发送服务请求;系统启动,rest监听与协议解析模块1-1在后台运行,监听并接收来自客户端的服务请求http消息,然后对http消息进行解析;
第二步,将解析后的数据与客户端的信息发送至数据格式化与归属地判断模块1-2进行格式化转为json格式,并设计改进trie树算法对归属地进行查找;
第三步,若请求来自本地用户;对本地用户请求进行响应,并将请求数据通过持久层数据访问模块1-3发送至持久层数据收发模块2-1,通过基于统计的读写分离算法的读写分离模块2-2进行分类,最后由数据存取模块2-4依据分类后的请求进行数据的存取,在存取的同时保证读写数据同步。
第四步,若请求来自非本地用户;则在读写分离本地数据库模块2中启动临时表创建模块2-3创建以用户唯一身份信息为表名,并根据业务设计生成的临时表,用来存取非本地用户的用户信息和业务信息,临时表中存储该用户在本地所办理业务信息,也存储来自本地数据解密与完整性验证模块5-1的数据(数据存储在用户身份与表名相符的临时表中),该部分数据由数据解密与完整性验证模块5-1得到来自归属地加密与完整性保护6-2的密文
rest数据收发与归属地区分模块1如图4所示,负责监听客户端的服务请求,并对请求进行格式化以及对用户归属地进行查找。所述的数据收发与归属地区分模块1包括rest监听与协议解析模块1-1,数据格式化与归属地区分模块1-2,持久层数据访问模块1-3。所述的rest监听与协议解析模块1-1,rest服务基于http协议,rest服务主要包括get、post、put、delete,接收客户端发送的服务请求,解析服务请求中的http消息,创建服务名参数,并根据服务名参数访问rest服务对应的服务方法;所述的数据格式化与归属地区分模块1-2将接收到来自rest监听与协议解析模块1-1处理后的数据,将处理后的数据格式化为json格式,并通过设计改进trie树算法对归属地进行查找,最后将归属地信息与格式化后的信息一并发送至持久层数据访问模块1-3,所述的持久层数据访问模块1-3接收到归属地信息与格式化后的信息后,利用改进多线程与队列算法,对连接数据库的连接池进行初始化,同时建立与读写分离本地数据库模块2的socket连接,通过此连接将归属地信息与格式化后的信息发送至读写分离本地数据库模块2。
读写分离本地数据库模块2如图5所示,主要负责通过设计基于统计的读写分离算法对数据进行存取,同时针对非本地用户可以根据用户唯一身份信息为表名建立以业务为相应字段的临时表,实现对非本地用户的本地化处理功能;所述的持久层数据收发模块2-1接收持久层数据访问模块1-3所发送的消息并提供数据库的连接入口并根据归属地信息选择将数据发送至读写分离模块2-2或是临时表创建模块2-4,若归属地信息为本地用户则将数据发送至读写分离模块2-2,若是归属地信息为非本地用户则将数据发送至临时表创建模块2-4;所述的读写分离模块2-2直接依据自行设计的基于统计的读写分离算法,对来自持久层数据收发模块的数据进行处理,算法细节为根据数据接收到的来自持久层数据收发模块的操作请求进行读写分离,将读请求标记为r,将写请求标记为w,将单条读操作的记录标记为r1,将批量操作(n条操作)标记为rn,同理将单条写操作标记为w1,批量写操作(n条操作)标记为wn,n越大优先级越高,同等优先级的操作根据请求时间顺序进行响应,这样就可以达到读写效率的大幅度提升,根据算法得出结果发送至数据存取模块2-3;所述的数据存取模块2-3接收到来自读写分离模块2-2的数据后,将数据信息转化为最终需要执行的sql语句,将读操作发送至读库,写操作发送至写库,完成数据的读取,写入,待写入完毕后使用主从复制技术将从数据库的数据进行更新;所述的临时表创建模块2-4接收到来自持久层数据收发模块2-1的数据后,依据用户唯一身份信息为表名,业务信息为字段创建临时表,并将已处理的数据存入用户对应的临时表;所述的临时表存取模块2-5负责与本地数据加解密与完整性保护模块5进行通信,并根据数据走向来读取临时表中的数据,以及将来自数据解密与完整性验证模块的数据存入临时表中。
本地密钥协商模块3如图6所示,负责在每次数据库之间的交互中产生一个新的会话密钥,并且在产生会话密钥的同时,提供通信双方的身份验证,抵御中间人攻击以及重放攻击;所述的本地密钥协商模块3包括挑战生成模块3-1,身份认证与共享密钥计算模块3-2;所述的挑战生成模块3-1负责获取系统选择的大素数q和其本原根a,同时生成随机数rn,以及随机数xa,并计算出发送方密钥协商参数
归属地密钥协商模块4如图7所示,负责与本地密钥协商模块进行交互,在每次数据库的交互中产生一个新的会话密钥,且完成对交互双方的身份认证;所述的归属地密钥协商模块7包括应答生成模块7-1,归属地身份认证与共享密钥计算模块7-2;所述的应答生成模块7-1生成随机数xb,并结合q和a产生接收方协商参数
本地数据加解密与完整性保护模块5如图8所示,主要负责与读写分离本地数据库模块2通信并将进出数据库的数据进行解密和加密;所述的本地数据加解密与完整性保护模块5,包括数据解密与完整性验证模块5-1,数据加密与完整性保护模块5-2;所述的数据加密与完整性保护模块5-2接收的本地密钥协商模块3所产生的密钥
读写分离归属地数据库模块7如图9所示,负责与归属地加解密与完整性保护模块6进行交互,接收来自归属地数据加解密与完整性保护模块6的数据,所述的归属地读写分离模块6-1通过设计基于统计的读写分离算法,对来自归属地数据加解密与完整性保护模块6的数据进行处理,将处理结果发送至归属地数据存取模块6-2,算法和本地数据库的读写分离算法相同;所述的数据存取模块6-2将归属地读写分离模块6-1的处理结果解析为可执行的sql语句并执行,将数据写入归属地数据库,同时将从归属地数据库中读出的数据发送至归属地数据加解密与完整性保护模块6。
密钥协商具体过程如图10所示,其中hash(ida)代表发送方身份的散列值,hash(idb)代表接收方身份的散列值,其中kab代表预共享密钥,q和a代表公开的大素数和该素数的本原根,ida和idb代表发送方和接收方的身份,ya和yb表示双方所生成的密钥协商参数;
本地发送方用a表示,归属地接收方用b表示,过程(1)中发送方a发送身份信息ida,密文
本地数据加解密与完整性保护模块和归属地数据加解密与完整性保护模块通信过程如图11所示,数据加密与完整性保护模块5-2(本地a)发送
以上所述,仅是本发明的较佳实施例而已,并非是对本发明作任何其他形式的限制,而依据本发明的技术实质所作的任何修改或等同变化,仍属于本发明所要求保护的范围。