发明内容
发明人发现,与采用HTTPS的服务器通信并不能完全保证安全性,如,不能确保服务器自己是安全的,这点甚至已被攻击者利用,常见例子是模仿银行域名的钓鱼攻击,少数罕见攻击在网站传输客户数据时发生,攻击者会尝试窃听传输中的数据,给用户带来损失。
本公开的一个目的在于提高通信的安全性。
根据本公开的一个方面,提出一种通信方法,包括:客户端根据当前时刻信息生成动态口令;客户端将动态口令和报文通过客户端对称密钥加密,生成加密数据;客户端将加密数据发送给服务器,以便服务器根据服务器对称密钥解密加密数据,并在解密成功且动态口令在有效期内的情况下,读取数据中的客户端报文。
在一些实施例中,通信方法还包括:客户端接收来自服务器的加密数据;根据客户端对称密钥解密来自服务器的加密数据,读取服务器报文。
在一些实施例中,通信方法还包括:客户端生成客户端公有密钥和客户端私有密钥,并将客户端公有密钥发送给服务器,以便服务器根据服务器公有密钥、服务器私有密钥和客户端公有密钥,基于非对称算法生成服务器对称密钥。
在一些实施例中,通信方法还包括:客户端接收来自服务器的服务器握手信息;根据客户端公有密钥和客户端私有密钥,以及服务器握手信息中的服务器公有密钥,基于非对称算法生成客户端对称密钥。
在一些实施例中,通信方法还包括以下至少一项:客户端校验服务器握手信息中的验证信息,在验证通过的情况下,允许运用生成的客户端对称密钥加密报文;客户端根据服务器握手信息中的时间信息同步自身的时间,以便根据同步后的当前时刻信息生成动态口令;或根据来自服务器端的对称密钥过期指令,重新执行生成客户端公有密钥和客户端私有密钥的操作。
通过这样的方法,客户端能够基于时间信息生成动态口令,并将动态密钥和报文一起采用与服务器端的对称密钥加密后发送给服务器端,使得服务器端在采用密钥解密和验证动态密钥有效性的双重保障情况下读取报文,从而提高了通信的安全性。
根据本公开的另一个方面,提出一种通信方法,包括:服务器接收来自客户端的加密数据,其中,加密数据由客户端根据客户端对称密钥加密;根据服务器对称密钥解密加密数据;在解密成功的情况下,获取数据中的动态口令;若动态口令在有效期内,则读取数据中的客户端报文。
在一些实施例中,通信方法还包括:通过服务器对称密钥加密报文,生成加密数据并发送给客户机,以便客户端根据客户端对称密钥解密来自服务器的加密数据。
在一些实施例中,通信方法还包括:服务器接收来自客户端的客户端公有密钥;生成服务器私有密钥和客户端公有密钥;根据服务器公有密钥、服务器私有密钥和客户端公有密钥,基于非对称算法生成服务器对称密钥。
在一些实施例中,通信方法还包括:服务器根据服务器公有密钥生成服务器握手信息;向客户端发送服务器握手信息,以便客户端根据客户端私有密钥、客户端公有密钥和服务器公有密钥,基于非对称算法生成客户端对称密钥。
在一些实施例中,通信方法还包括以下至少一项:服务器根据服务器公有密钥和验证信息生成服务器握手信息;向客户端发送服务器握手信息,以便客户端在根据验证信息验证通过的情况下,根据客户端私有密钥、客户端公有密钥和服务器公有密钥,基于非对称算法生成客户端对称密钥;服务器根据服务器公有密钥和当前时间生成服务器握手信息;向客户端发送服务器握手信息,以便客户端根据服务器握手信息中的时间信息同步自身的时间;或,在服务器对称密钥或客户端对称密钥中的至少一个达到预定有效期的情况下,向客户端发送对称密钥过期指令。
通过这样的方法,服务器能够采用密钥解密和验证动态密钥有效性对来自客户端的数据进行双重认证,在双重认证均通过的情况下读取报文,从而提高了通信的安全性。
根据本公开的又一个方面,提出一种客户端,包括:动态口令生成单元,被配置为根据当前时刻信息生成动态口令;客户端加密单元,被配置为将动态口令和报文通过客户端对称密钥加密,生成加密数据;客户端数据发送单元,被配置为加密数据发送给服务器,以便服务器根据服务器对称密钥解密加密数据,并在解密成功且动态口令在有效期内的情况下,读取数据中的客户端报文。
在一些实施例中,客户端还包括:客户端数据接收单元,被配置为接收来自服务器的加密数据;客户端解密单元,被配置为根据客户端对称密钥解密来自服务器的加密数据,读取服务器报文。
在一些实施例中,客户端还包括:客户端密钥生成单元,被配置为生成客户端公有密钥和客户端私有密钥,并将客户端公有密钥发送给服务器,以便服务器根据服务器公有密钥、服务器私有密钥和客户端公有密钥,基于非对称算法生成服务器对称密钥。
在一些实施例中,客户端密钥生成单元还被配置为:接收来自服务器的服务器握手信息;根据客户端公有密钥和客户端私有密钥,以及服务器握手信息中的服务器公有密钥,基于非对称算法生成客户端对称密钥。
在一些实施例中,客户端还包括以下至少一项:验证单元,被配置为校验服务器握手信息中的验证信息,在验证通过的情况下,允许运用生成的客户端对称密钥加密报文;时间同步单元,被配置为根据服务器握手信息中的时间信息同步自身的时间,以便根据同步后的当前时刻信息生成动态口令。
这样的客户端能够基于时间信息生成动态口令,并将动态密钥和报文一起采用与服务器端的对称密钥加密后发送给服务器端,使得服务器端在采用密钥解密和验证动态密钥有效性的双重保障情况下读取报文,从而提高了通信的安全性。
根据本公开的再一个方面,提出一种服务器,包括:服务器数据接收单元,被配置为接收来自客户端的加密数据,其中,加密数据由客户端根据客户端对称密钥加密;服务器解密单元,被配置为根据服务器对称密钥解密加密数据;服务器动态口令校验单元,被配置为在解密成功的情况下,获取数据中的动态口令;服务器报文读取单元,被配置为在动态口令校验单元确定动态口令在有效期内的情况下,读取数据中的客户端报文。
在一些实施例中,服务器还包括:服务器加密单元,被配置为通过服务器对称密钥加密报文,生成加密数据;服务器数据发送单元,被配置为将生成的加密数据发送给客户机,以便客户端根据客户端对称密钥解密来自服务器的加密数据。
在一些实施例中,服务器还包括服务器密钥生成单元,被配置为:接收来自客户端的客户端公有密钥;生成服务器私有密钥和客户端公有密钥;根据服务器公有密钥、服务器私有密钥和客户端公有密钥,基于非对称算法生成服务器对称密钥。
在一些实施例中,服务器还包括握手信息生成和发送单元,被配置为:根据服务器公有密钥生成服务器握手信息;向客户端发送服务器握手信息,以便客户端根据客户端私有密钥、客户端公有密钥和服务器公有密钥,基于非对称算法生成客户端对称密钥。
在一些实施例中,握手信息生成和发送单元还被配置为执行以下至少一项功能:根据服务器公有密钥和验证信息生成服务器握手信息;向客户端发送服务器握手信息,以便客户端在根据验证信息验证通过的情况下,根据客户端私有密钥、客户端公有密钥和服务器公有密钥,基于非对称算法生成客户端对称密钥;或,根据服务器公有密钥和当前时间生成服务器握手信息;向客户端发送服务器握手信息,以便客户端根据服务器握手信息中的时间信息同步自身的时间。
在一些实施例中,服务器还包括:过期指令发送单元,被配置为在服务器对称密钥或客户端对称密钥中的至少一个达到预定有效期的情况下,向客户端发送对称密钥过期指令。
这样的服务器能够采用密钥解密和验证动态密钥有效性对来自客户端的数据进行双重认证,在双重认证均通过的情况下读取报文,从而提高了通信的安全性。
根据本公开的其中一个方面,提出一种通信装置,包括:存储器;以及耦接至存储器的处理器,处理器被配置为基于存储在存储器的指令执行上文中任意一种通信方法。
这样的通信装置执行客户端执行的通信方法时,能够基于时间信息生成动态口令,并将动态密钥和报文一起采用与服务器端的对称密钥加密后发送给服务器端,执行服务器执行的通信方法时,能够采用密钥解密和验证动态密钥有效性对来自客户端的数据进行双重认证,在双重认证均通过的情况下读取报文,从而提高了通信的安全性。
根据本公开的其中另一个方面,提出一种计算机可读存储介质,其上存储有计算机程序指令,该指令被处理器执行时执行上文中任意一种通信方法的步骤。
通过执行这样的计算机可读存储介质上的执行,能够基于时间信息生成动态口令,并将动态密钥和报文一起采用与服务器端的对称密钥加密后发送给服务器端;能够采用密钥解密和验证动态密钥有效性对来自客户端的数据进行双重认证,在双重认证均通过的情况下读取报文,从而提高了通信的安全性。
另外,根据本公开的一个方面,提出一种通信系统,包括:上文中任意一种客户端;和上文中任意一种服务器。
这样的通信系统中,客户端能够基于时间信息生成动态口令,并将动态密钥和报文一起采用与服务器端的对称密钥加密后发送给服务器端,服务器能够采用密钥解密和验证动态密钥有效性对来自客户端的数据进行双重认证,在双重认证均通过的情况下读取报文,从而提高了通信的安全性。
具体实施方式
下面通过附图和实施例,对本公开的技术方案做进一步的详细描述。
本公开的通信方法的一个实施例的流程图如图1所示。
在步骤101中,客户端根据当前时刻信息生成动态口令(One-Time Password,OTP)。在一些实施例中,动态口令可以根据客户端的时刻信息生成,以便服务器根据解析出的动态口令中的时刻信息,结合预定有效期判断动态口令是否过期。
在步骤102中,客户端将动态口令和报文通过客户端对称密钥加密,生成加密数据。客户端对称密钥和服务器端对称密钥是采用不同的原始密钥信息分别生成,且客户端对称密钥与服务器端对称密钥相同。在一些实施例中,可以采用DH(Diffie-Hellman,密钥交换)算法生成对称密钥。
在步骤103中,客户端将加密数据发送给服务器,以便服务器根据服务器对称密钥解密加密数据,并在解密成功且动态口令在有效期内的情况下,读取数据中的客户端报文。
通过这样的方法,客户端能够基于时间信息生成动态口令,并将动态密钥和报文作为一个整体采用与服务器端的对称密钥加密后发送给服务器端,服务器在读取每个报文前,均需要对加密数据采用密钥解密和验证动态密钥有效性的双重验证,从而有效防止了重放攻击,提高了通信的安全性。
本公开的通信方法的另一个实施例的流程图如图2所示。
在步骤201中,服务器接收来自客户端的加密数据,其中,加密数据由客户端根据客户端对称密钥加密。客户端对称密钥和服务器端对称密钥是采用不同的原始密钥信息分别生成,且客户端对称密钥与服务器端对称密钥相同。在一些实施例中,可以采用DH算法生成对称密钥。
在步骤202中,服务器利用服务器对称密钥解密获得的加密数据,若解密成功,则执行步骤203,否则执行步骤204。
在步骤203中,从解密后的数据中获取动态口令,判断动态口令是否在有效期内。在一些实施例中,动态口令可以位于数据的预定字段,通过数据定位读取动态口令。若确定动态口令超出有效期,则执行步骤204;若确定动态口令在有效期内,则执行步骤205。在一些实施例中,动态口令可以根据客户端的时刻信息生成,服务器根据解析出的动态口令中的时刻信息,结合预定有效期判断动态口令是否过期。
在步骤204中,确定获取的数据为非合法客户端的数据、被篡改的数据,或超过有效期的数据,抛弃获取的数据。
在步骤205中,读取数据中的客户端报文。
通过这样的方法,服务器能够采用密钥解密和验证动态密钥有效性对来自客户端的数据进行双重认证,在双重认证均通过的情况下读取报文,从而提高了通信的安全性。
在一些实施例中,客户端收到的来自服务器的加密数据为服务器采用服务器对称密钥加密生成,客户端采用客户端对称密钥解密和读取收到的加密数据。通过这样的方法,能够确保客户端收到的报文未经篡改,保证双向通信的安全性。
在一些实施例中,客户端可以通过发起与服务器交换通信公钥的方式生成对称密钥。在一些实施例中,客户端可以生成客户端公有密钥和客户端私有密钥,并将客户端公有密钥发送给服务器,服务器在收到公有密钥后,生成根据服务器公有密钥和服务器私有密钥,并根据服务器公有密钥、服务器私有密钥和客户端公有密钥,基于非对称算法生成服务器对称密钥。服务器将服务器公有密钥发送给客户端,客户端根据客户端公有密钥、客户端私有密钥和服务器公有密钥基于与服务器相匹配的非对称算法生成客户端对称密钥。
本公开的通信方法的又一个实施例的流程图如图3所示。
在步骤301中,客户端生成客户端公有密钥和客户端私有密钥,并将客户端公有密钥发送给服务器。在一些实施例中,客户端公有密钥和客户端私有密钥可以为客户端生成的随机数。
在步骤302中,服务器接收来自客户端的客户端公有密钥,生成服务器私有密钥和服务器公有密钥。在一些实施例中,服务器可以在客户端公有密钥的触发下生成与该客户端通信的专有服务器私有密钥和服务器公有密钥。在一些实施例中,服务器私有密钥和服务器公有密钥可以为随机数,也可以为根据客户端公有密钥,采用预定算法生成。
在步骤303中,服务器根据服务器公有密钥、服务器私有密钥和客户端公有密钥,基于非对称算法生成服务器对称密钥。在一些实施例中,非对称算法可以包括DH算法。
在步骤304中,服务器根据服务器公有密钥生成服务器握手信息,并向客户端发送服务器握手信息。
在一些实施例中,服务器还可以生成验证信息,与公有密钥一起经过加密后生成握手信息发送给客户端,客户端需要解析握手信息得到验证信息和公有密钥。客户端可以通过校验验证信息判断握手信息的完整性和可靠性。若验证不通过,则向服务器请求重新发送握手信息,从而保证获取正确、可靠的服务器公有密钥。在一些实施例中,验证信息可以为HMAC(Hash-based Message Authentication Code,哈希消息认证码),利用哈希算法,以一个密钥和一个消息为输入,生成一个消息摘要作为输出,从而能够防止或及时发现消息被篡改。
在一些实施例中,握手信息中还可以包括服务器的当前时间信息,客户端根据当前时间信息校准自身的时间,从而避免服务器与客户端所处设备的时钟差距过大而影响动态密钥的实际有效期,保证通信的成功率。
在步骤305中,客户端根据客户端公有密钥和客户端私有密钥,以及服务器握手信息中的服务器公有密钥,基于对称算法生成客户端对称密钥。
在步骤306中,客户端根据当前时刻信息生成动态口令。在一些实施例中,客户端需要在根据服务器的当前时间信息校准自身时间后,根据校准后的当前时刻信息生成动态口令。
在步骤307中,客户端将动态口令和报文通过客户端对称密钥加密,生成加密数据。
在步骤308中,客户端将加密数据发送给服务器。
在步骤309中,服务器接收来自客户端的加密数据,根据服务器对称密钥解密加密数据。在解密成功的情况下,执行步骤310。
在步骤310中,服务器验证动态口令的有效期。在验证通过的情况下,执行步骤311。
在步骤311中,服务器读取数据中的客户端报文。
通过这样的方法,客户端和服务器能够在仅交互双方公有密钥的基础上,利用双方的公有密钥和自身的私有密钥生成对称密钥,由于私有密钥在通信过程中未进行交互,因此能够提高对称密钥的保密性,提高通信的安全性。
发明人发现,HTTPS技术仅仅针对HTML(HyperText Markup Language,超文本标记语言)页面或者是用HTTP通信协议的数据进行公网通信段的保护,而数据在用户客户端到路由,数据进入企业内网后是缺乏保护和容易被破解的;HTTPS默认使用是不强制校验服务端证书,造成了通信数据的可破解性;HTTPS信息如果被截获,在握手的生命周期内,不具备防止重放攻击的能力;移动应用程序APP使用HTTPS还无法完全保护HTTP通信头部的数据安全;在握手建立完成前,无法进行安全通信。它的安全保护依赖浏览器的正确实现以及服务器软件、实际加密算法的支持。
通过采用本发明上述实施例中的方法,能够使通信过程在兼具HTTPS的安全特性的同时,解决了HTTPS的诸多安全缺陷:上述通信方法不限定数据通信协议,HTTP、HTTPS、TCP(Transmission Control Protocol,传输控制协议)、UDP(User Datagram Protocol,用户数据报协议)等通信协议均可使用;不仅仅保护数据公网通信安全,同时保护,数据在用户客户端到局域网路由,以及数据进入企业内网后的全数据通信周期安全保护;可以有效防止目前成熟的中间人攻击;可以实现对HTTP通信头部的安全保证;安全信息如果被截获,即使在握手的生命周期内,也可以防止重放攻击。在安全通道握手建立完成前,能够通过保留信息不发送、增加验证信息等的方式保证通信的可靠性。
在一些实施例,服务器在服务器对称密钥或客户端对称密钥中的至少一个达到预定有效期的情况下,向客户端发送对称密钥过期指令,客户端会重新生成客户端公有密钥和客户端私有密钥,并将客户端公有密钥发送给服务器,触发服务器生成服务器公有密钥和服务器私有密钥。在一些实施例中,若密钥过期,则客户收到报文发送失败的错误返回。客户端依据报文发送错误信息进行主动的报文发送重试。
通过这样的方法,能够使密钥具有生命周期,定期的替换密钥能够降低密钥被破译并使用的可能性,进一步提高安全性。
在一些实施例中,考虑到服务端在万级TPS(Transaction Per Second,每秒处理的消息数)的访问要求下系统性能开销与通信延时的影响,需要对非对称信封方案进行性能与函数体积优化,保证服务端的解密性能,降低多样设备的客户端的崩溃率与时间效率。同时,还可以考虑例如移动APP端的库函数体积大小问题,由于对通用OPENSSL(开放式安全套接层协议)库进行优化仅仅能够保证系统函数的性能,但是对于包体积要求严格的APP,OPENSSL体积过大,因此可以使用去OPENSSL的加解密解决方案来降低对移动设备端资源的消耗。
本公开的通信方法的一个实施例的信令交互图如图4所示。
在401中,客户端生成客户端公有密钥和客户端私有密钥。
在402中,客户端将客户端公有密钥发送给服务器。
在403中,服务器接收来自客户端的客户端公有密钥,生成服务器私有密钥和服务器公有密钥。
在404中,服务器根据服务器公有密钥、服务器私有密钥和客户端公有密钥,基于非对称算法生成服务器对称密钥。
在405中,服务器生成验证信息。
在406中,服务器获取当前时间信息。
在407中,服务器根据服务器公有密钥、验证信息和当前时间信息生成握手信息,发送给客户端。
在408中,客户端根据客户端公有密钥和客户端私有密钥,以及服务器握手信息中的服务器公有密钥,基于对称算法生成客户端对称密钥。
在409中,客户端通过校验验证信息判断握手信息的完整性和可靠性。若验证不通过,则向服务器请求重新发送握手信息。若验证通过,则继续执行接下来的步骤。
在一些实施例中,408、409中的操作可以调换顺序。
在410中,客户端根据握手信息中的当前时间信息校准自身的时间。
在411中,客户端根据当前时刻信息生成动态口令。
在412中,客户端将动态口令和报文通过客户端对称密钥加密,生成加密数据,发送给服务器。
在413中,服务器接收来自客户端的加密数据,根据服务器对称密钥解密加密数据,在解密成功的情况下,继续执行接下来的步骤。
在414中,服务器验证动态口令的有效期。在验证通过的情况下,执行接下来的步骤。
在415中,服务器读取数据中的客户端报文。
通过这样的方法,能够在客户端与服务器的握手过程采用非对称算法,保证服务器对称密钥和客户端对称密钥不会通过交互过程泄露;在握手过程中通过验证信息的校验保证握手过程的可靠性,通过时间校准保证通信双方时间接近,使得动态口令能够正常使用;在报文传输过程中通过动态口令和加密双重保障,进一步提高了通信的可靠性。
在一些实施例中,如图4所示,服务器向客户端发送报文的过程可以包括:
在416中,服务器利用服务器对称密钥加密报文。在一些实施例中,服务器可以根据当前时刻生成动态口令,并与报文一起加密生成加密报文。
在417中,服务器将加密报文发送给客户端。
在418中,客户端采用客户端对称密钥解密和读取收到的加密数据,获取报文。在一些实施例中,客户端还可以验证动态口令的有效性,在确认动态口令有效的情况下读取报文。
通过这样的方法,能够确保客户端收到的报文未经篡改,保证双向通信的安全性。在服务器向客户端发送的加密数据中加入动态口令的功能能够进一步增加安全保障。
采用上文中实施例中的方式,每个客户端每次与服务器通信时的密钥均不相同,实现了通信维度整体信道加密,支持建立移动客户端与服务端的多对多的动态加密通道;支持多线程,保证线程无关;不需要系统服务器,保证移动访问在多服务器间的正常解密;支持动态过期当前移动通信加密通道;支持OTP验证报文的时间有效性,防止重放攻击;利用HMAC对报文进行签名,实现报文的防篡改。
在一些实施例中,在完成服务器对称密钥和客户端对称密钥生成之前,可以使用数字信封方式,异步的使用非对称方式进行数据包传输,保证各阶段通信的可靠性。
本公开的客户端50的一个实施例的示意图如图5所示。动态口令生成单元501能够根据当前时刻信息生成动态口令。客户端加密单元502能够将动态口令和报文通过客户端对称密钥加密,生成加密数据。客户端对称密钥和服务器端对称密钥是采用不同的原始密钥信息分别生成,且客户端对称密钥与服务器端对称密钥相同。客户端数据发送单元503能够将加密数据发送给服务器,以便服务器根据服务器对称密钥解密加密数据,并在解密成功且动态口令在有效期内的情况下,读取数据中的客户端报文。
这样的客户端能够基于时间信息生成动态口令,并将动态密钥和报文作为一个整体采用与服务器端的对称密钥加密后发送给服务器端,服务器在读取每个报文前,均需要对加密数据采用密钥解密和验证动态密钥有效性的双重验证,从而提高了通信的安全性。
在一些实施例中,如图5所示,客户端50还可以包括客户端数据接收单元504和客户端解密单元505。客户端数据接收单元504能够接收来自服务器的加密数据,该加密数据为服务器采用服务器对称密钥加密生成。客户端解密单元505能够采用客户端对称密钥解密和读取收到的加密数据。
这样的客户端能够保证读取的报文未经篡改,保证双向通信的安全性。
在一些实施例中,如图5所示,客户端50还可以包括客户端密钥生成单元506,能够生成客户端公有密钥和客户端私有密钥,并将客户端公有密钥发送给服务器,以便服务器根据服务器公有密钥、服务器私有密钥和客户端公有密钥,基于非对称算法生成服务器对称密钥,保证客户端私有密钥不会在握手过程中交互,提高密钥的私密性,提高通信的安全性。
在一些实施例中,客户端密钥生成单元506还能够接收来自服务器的服务器握手信息;根据客户端公有密钥和客户端私有密钥,以及服务器握手信息中的服务器公有密钥,基于非对称算法生成客户端对称密钥,从而保证服务器私有密钥和服务器对称密钥不会在握手过程中交互,提高密钥的私密性,提高通信的安全性。
在一些实施例中,客户端50还可以包括验证单元507,能够校验服务器握手信息中的验证信息,在验证通过的情况下,执行生成客户端对称密钥的操作。在一些实施例中,客户端对称密钥可以先于验证单元507的验证生成,在验证通过的情况下,生成的客户端对称密钥可以被允许用于加密报文。这样的客户端能够保证获取正确、可靠的服务器公有密钥,从而保证客户端对称密钥与服务器对称密钥的一致性。
在一些实施例中,客户端50还可以包括时间同步单元508,能够根据服务器握手信息中的时间信息同步自身的时间,以便客户端根据同步后的当前时刻信息生成动态口令,从而避免服务器与客户端所处设备的时钟差距过大而影响动态密钥的实际有效期,保证通信的成功率。
在一些实施例中,客户端密钥生成单元506还能够在收到来自服务器的对称密钥过期指令的情况下,重新与服务器握手生成客户端对称密钥,降低密钥被破译并使用的可能性,进一步提高安全性。
本公开的服务器60的一个实施例的示意图如图6所示。服务器数据接收单元601能够接收来自客户端的加密数据,其中,加密数据由客户端根据客户端对称密钥加密。服务器解密单元602能够利用服务器对称密钥解密获得的加密数据。服务器动态口令校验单元603能够从解密后的数据中获取动态口令,判断动态口令是否在有效期内。服务器报文读取单元604能够在确定动态口令在有效期内的情况下,读取数据中的客户端报文。
这样的服务器能够采用密钥解密和验证动态密钥有效性对来自客户端的数据进行双重认证,在双重认证均通过的情况下读取报文,从而提高了通信的安全性。
在一些实施例中,服务器60还可以包括服务器加密单元605和服务器数据发送单元606。服务器加密单元605能够用服务器对称密钥加密报文。服务器数据发送单元606能够将加密报文发送给客户端。这样的服务器能够确保客户端识别报文是否经过篡改,保证双向通信的安全性。
在一些实施例中,服务器60还可以包括服务器密钥生成单元607,能够接收来自客户端的客户端公有密钥,生成服务器私有密钥和客户端公有密钥,并根据服务器公有密钥、服务器私有密钥和客户端公有密钥,基于非对称算法生成服务器对称密钥,保证客户端私有密钥不会在握手过程中交互,提高密钥的私密性,提高通信的安全性。
在一些实施例中,服务器60还可以包括握手信息生成和发送单元608,能够根据服务器公有密钥生成服务器握手信息,并向客户端发送服务器握手信息,从而使得客户端能够根据客户端私有密钥、客户端公有密钥和服务器公有密钥,基于非对称算法生成客户端对称密钥,保证服务器私有密钥和服务器对称密钥不会在握手过程中交互,提高密钥的私密性,提高通信的安全性。
在一些实施例中,握手信息生成和发送单元608还能够根据服务器公有密钥和验证信息生成服务器握手信息,使得客户端只有在根据验证信息验证通过的情况下,才生成或使用客户端对称密钥,从而能够保证获取正确、可靠的服务器公有密钥,从而保证客户端对称密钥与服务器对称密钥的一致性。
在又一个实施例中,握手信息生成和发送单元608还能够根据服务器公有密钥和当前时间生成服务器握手信息,从而使得客户端根据服务器握手信息中的时间信息同步自身的时间,避免服务器与客户端所处设备的时钟差距过大而影响动态密钥的实际有效期,保证通信的成功率。
在一些实施例中,服务器60还可以包括过期指令发送单元609,能够在服务器对称密钥或客户端对称密钥中的至少一个达到预定有效期的情况下,向客户端发送对称密钥过期指令,使得双发重新生成密钥,降低密钥被破译并使用的可能性,进一步提高安全性。
本公开通信装置的一个实施例的结构示意图如图7所示。通信装置包括存储器701和处理器702。其中:存储器701可以是磁盘、闪存或其它任何非易失性存储介质。存储器用于存储上文中通信方法的对应实施例中的指令。处理器702耦接至存储器701,可以作为一个或多个集成电路来实施,例如微处理器或微控制器。该处理器702用于执行存储器中存储的指令,能够提高通信的安全性。
在一些实施例中,还可以如图8所示,通信装置800包括存储器801和处理器802。处理器802通过BUS总线803耦合至存储器801。该通信装置800还可以通过存储接口804连接至外部存储装置805以便调用外部数据,还可以通过网络接口806连接至网络或者另外一台计算机系统(未标出)。此处不再进行详细介绍。
在该实施例中,通过存储器存储数据指令,再通过处理器处理上述指令,能够提高通信的安全性。
在另一个实施例中,一种计算机可读存储介质,其上存储有计算机程序指令,该指令被处理器执行时实现通信方法对应实施例中的方法的步骤。本领域内的技术人员应明白,本公开的实施例可提供为方法、装置、或计算机程序产品。因此,本公开可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本公开可采用在一个或多个其中包含有计算机可用程序代码的计算机可用非瞬时性存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本公开的通信系统的一个实施例的示意图如图9所示。服务器91可以为上文中任意一种服务器,运行上文中任意一种由服务器执行的通信方法;客户端921~92n可以为上文中任意一种客户端,运行上文中任意一种由客户端执行的通信方法。在一些实施例中,服务器可以同时与多个客户端交互,服务器与不同客户端之间采用不同的密钥对报文加密。在一些实施例中,一个终端设备中可以包括多个客户端,每个客户端与其对应的服务器交互,不同客户端采用的对报文加密、解密的密钥不同。
这样的通信系统中,客户端能够基于时间信息生成动态口令,并将动态密钥和报文一起采用与服务器端的对称密钥加密后发送给服务器端,服务器能够采用密钥解密和验证动态密钥有效性对来自客户端的数据进行双重认证,在双重认证均通过的情况下读取报文,从而提高了通信的安全性。
在一些实施例中,采用本公开的通信系统与采用设备原生AES(AdvancedEncryption Standard,高级加密标准)进行测试对比,下表1为采用2万真机或模拟器测试的APP环境,在Android及IOS原生算法与本发明的通信方法延时性能对比表。
另外,运算效率如图10所示,纵坐标代表算法运算时间,单位是毫秒,横坐标是把APP原生AES算法,本公开的通信方法的运算时间做降序排列,最慢机器的在坐标的左边。粗的两条线为原生加密算法的加密、解密耗时示意线(高的一条为加密,低的一条为解密),细的两条线为本发明的通信系统的加密、解密耗时示意线(高的一条为加密,低的一条为解密)。
可以看出,本发明的通信系统不仅可以广泛的解决网络通信中广泛存在的中间人攻击、重放攻击、报文破解、报文篡改等攻击手段,同时提升了效率和稳定性。
本公开是参照根据本公开实施例的方法、设备(系统)和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
至此,已经详细描述了本公开。为了避免遮蔽本公开的构思,没有描述本领域所公知的一些细节。本领域技术人员根据上面的描述,完全可以明白如何实施这里公开的技术方案。
可能以许多方式来实现本公开的方法以及装置。例如,可通过软件、硬件、固件或者软件、硬件、固件的任何组合来实现本公开的方法以及装置。用于所述方法的步骤的上述顺序仅是为了进行说明,本公开的方法的步骤不限于以上具体描述的顺序,除非以其它方式特别说明。此外,在一些实施例中,还可将本公开实施为记录在记录介质中的程序,这些程序包括用于实现根据本公开的方法的机器可读指令。因而,本公开还覆盖存储用于执行根据本公开的方法的程序的记录介质。
最后应当说明的是:以上实施例仅用以说明本公开的技术方案而非对其限制;尽管参照较佳实施例对本公开进行了详细的说明,所属领域的普通技术人员应当理解:依然可以对本公开的具体实施方式进行修改或者对部分技术特征进行等同替换;而不脱离本公开技术方案的精神,其均应涵盖在本公开请求保护的技术方案范围当中。