CN101420297B - 协商密钥的方法和系统 - Google Patents
协商密钥的方法和系统 Download PDFInfo
- Publication number
- CN101420297B CN101420297B CN2008102220759A CN200810222075A CN101420297B CN 101420297 B CN101420297 B CN 101420297B CN 2008102220759 A CN2008102220759 A CN 2008102220759A CN 200810222075 A CN200810222075 A CN 200810222075A CN 101420297 B CN101420297 B CN 101420297B
- Authority
- CN
- China
- Prior art keywords
- service end
- dynamic password
- client
- module
- obtains
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Abstract
本发明公开了一种协商密钥的方法和系统,属于信息安全领域。该方法包括:客户端接收用户输入的动态口令生成装置的标识信息和第一动态口令,采用单向散列算法加密该口令后与标识信息一起发给服务端;服务端以收到的标识信息为索引,查询动态因子并生成第二动态口令,采用单向散列算法对其加密,验证加密后的第二动态口令与加密后的第一动态口令是否相同;若相同,客户端生成会话密钥,用第一动态口令对其加密得到第一数据包并发给服务端,服务端收到后用第二动态口令解密得到会话密钥;若不同,根据验证次数提示出错或重新生成第二动态口令继续验证。该系统包括;客户端、服务端和动态口令生成装置。本发明提高了通信双方协商密钥过程的安全性。
Description
技术领域
本发明涉及信息安全领域,特别涉及一种协商密钥的方法和系统。
背景技术
随着互联网的发展,各种传统应用已经搬到网络上来,由于互联网的先天不足,给一些不法分子可乘之机,他们利用病毒、木马或其他恶意程序随意入侵别人的电脑,或者随意截获别人正在传送的信息,给用户造成了极大的损失。
目前,针对这些问题的解决方法主要有:通信双方首先协商一个密钥,发送方对要传输的数据进行加密,接收方接收到后又用之前协商的密钥进行解密,但是往往通信双方协商密钥的过程是不安全的,攻击者采用网络监听、偷窥、木马窃取、猜测、穷举攻击等方法就能破解别人的密码,从而知道传输的机密内容。
在现有技术中,协商密钥的方法可能有很多种,但是在大部分方案中,密钥都是以明文的形式在网络中进行传输的,使得密钥很容易被他人获取,因而其安全性极差。而采用公私钥加密的方法来协商密钥又会导致协商密钥的过程变得非常慢。
发明内容
为了提高密钥协商的安全性,本发明提供了一种协商密钥的方法和系统。
一方面,本发明提供了一种协商密钥的方法,所述方法包括:
客户端接收用户输入的动态口令生成装置的标识信息和第一动态口令,对所述第一动态口令采用单向散列算法进行加密,将加密后的第一动态口令和所述标识信息发送给服务端请求验证,所述第一动态口令是所述动态口令生成装置根据当前动态因子生成的;
所述服务端收到所述标识信息和所述加密后的第一动态口令后,以所述标识信息为索引,查询与所述动态口令生成装置对应的动态因子,将所述查询到的动态因子作为当前动态因子,根据所述服务端的当前动态因子生成第二动态口令,并对所述第二动态口令采用所述单向散列算法进行加密;
所述服务端验证所述加密后的第二动态口令与收到的加密后的第一动态口令是否相同;
如果相同,则所述服务端保存自身的当前动态因子并发送验证成功信息给所述客户端,所述客户端收到后生成一个随机数,将所述随机数作为会话密钥,用所述第一动态口令对所述会话密钥进行加密,得到第一数据包,然后将所述第一数据包发送给所述服务端,所述服务端接收所述第一数据包,用所述第二动态口令对所述第一数据包进行解密,得到所述会话密钥;
如果不同,则所述服务端判断验证次数是否超过预设的验证次数门限值,如果超过,则提示出错信息,否则,修改所述服务端的当前动态因子,并根据修改后的动态因子重新生成第二动态口令继续验证,直到验证成功并得到会话密钥或超过所述验证次数门限值为止。
所述服务端得到所述会话密钥之后,还包括:
所述服务端对所述会话密钥采用单向散列算法加密,得到第一散列值,将所述第一散列值发送给所述客户端请求验证;
所述客户端接收所述第一散列值,采用与所述服务端相同的单向散列算法对所述会话密钥进行加密,得到第二散列值;
所述客户端验证所述第一散列值与第二散列值是否相同;
若不相同,则向所述服务端提示出错信息,结束;
若相同,则所述客户端用所述会话密钥对待传输给所述服务端的文件进行加密,得到第二数据包,将所述第二数据包和验证成功信息发送给所述服务端;
所述服务端接收所述第二数据包和所述验证成功信息,用所述会话密钥对所述第二数据包进行解密,得到所述文件。
所述服务端得到所述会话密钥之后,还包括:
所述服务端对所述会话密钥采用单向散列算法加密,得到第三散列值并发给所述客户端请求验证;
所述客户端接收所述服务端发送的第三散列值,采用与所述服务端相同的单向散列算法对所述会话密钥进行加密,得到第四散列值;
所述客户端验证所述第三散列值与第四散列值是否相同;
若不相同,则向所述服务端提示出错信息,结束;
若相同,则所述客户端向所述服务端发送获取加密文件的申请;
所述服务端收到所述申请后,用所述会话密钥对文件进行加密,得到加密文件,并将所述加密文件发送给所述客户端;
所述客户端接收所述加密文件,用所述会话密钥对所述加密文件进行解密,得到所述文件。
所述动态因子是共享密钥、认证次数或时间。
另一方面,本发明还提供了一种协商密钥的方法,所述方法包括:
客户端接收用户输入的动态口令生成装置的标识信息和第一动态口令,对所述第一动态口令采用单向散列算法进行加密,将加密后的第一动态口令和所述标识信息发送给服务端请求验证,所述第一动态口令是所述动态口令生成装置根据当前动态因子生成的;
所述服务端收到所述标识信息和所述加密后的第一动态口令后,以所述标识信息为索引,查询与所述动态口令生成装置对应的动态因子,将所述查询到的动态因子作为当前动态因子,根据所述服务端的当前动态因子生成第二动态口令,并对所述第二动态口令采用所述单向散列算法进行加密;
所述服务端验证所述加密后的第二动态口令与收到的加密后的第一动态口令是否相同;
如果相同,则所述服务端保存自身的当前动态因子并生成一个随机数,将所述随机数作为会话密钥,用所述第二动态口令对所述会话密钥进行加密,得到第一数据包,并将所述第一数据包与验证成功信息一起发送给所述客户端,所述客户端接收所述第一数据包和验证成功信息,用所述第一动态口令对所述第一数据包进行解密,得到所述会话密钥;
如果不同,则所述服务端判断验证次数是否超过预设的验证次数门限值,如果超过,则提示出错信息,否则,修改所述服务端的当前动态因子,并根据修改后的动态因子重新生成第二动态口令继续验证,直到验证成功并得到会话密钥或超过所述验证次数门限值为止。
所述客户端得到所述会话密钥之后,还包括:
所述客户端对所述会话密钥采用单向散列算法加密,得到第三散列值并发送给服务端请求验证;
所述服务端接收所述第三散列值,采用与所述客户端相同的单向散列算法对所述会话密钥进行加密,得到第四散列值;
所述服务端验证所述第三散列值与第四散列值是否相同;
若不相同,则向所述客户端提示出错信息,结束;
若相同,则向所述客户端发送验证成功信息;
所述客户端接收所述服务端返回的验证成功信息,用所述会话密钥对待传输给所述服务端的文件进行加密,得到第二数据包,将所述第二数据包发送给所述服务端;
所述服务端接收所述第二数据包,用所述会话密钥对所述第二数据包进行解密,得到所述文件。
所述客户端得到所述会话密钥之后,还包括:
所述客户端采用单向散列算法对所述会话密钥加密,得到第一散列值并发送给所述服务端请求验证;
所述服务端接收所述客户端发送的所述第一散列值,采用与所述客户端相同的单向散列算法对所述会话密钥进行加密,得到第二散列值;
所述服务端验证所述第一散列值与第二散列值是否相同;
若不相同,则向所述客户端提示出错信息,结束;
若相同,则向所述客户端发送验证成功信息;
所述客户端接收所述服务端发送的验证成功信息,向所述服务端发送获取加密文件的申请;
所述服务端收到所述申请后,用所述会话密钥对文件进行加密,得到加密文件,并将所述加密文件发送给所述客户端;
所述客户端接收所述加密文件,用得到的所述会话密钥对所述加密文件进行解密,得到所述文件。
所述动态因子是共享密钥、认证次数或时间。
再一方面,本发明还提供了一种协商密钥的系统,所述系统包括客户端、服务端和动态口令生成装置;
所述客户端包括:
接收模块,用于接收用户输入的第一动态口令和所述动态口令生成装置的标识信息,所述第一动态口令是所述动态口令生成装置根据当前动态因子生成的,还用于接收所述服务端发送的验证信息;
生成模块,用于在所述接收模块收到所述服务端发送的验证成功信息后,生成一个随机数,将所述随机数作为会话密钥;
加密模块,用于对所述接收模块收到的第一动态口令采用单向散列算法进行加密,并用所述第一动态口令对所述生成模块得到的会话密钥进行加密,得到第一数据包;
发送模块,用于将所述接收模块收到的所述动态口令生成装置的标识信息和所述加密模块加密后的第一动态口令,发送给所述服务端请求验证,还用于发送所述加密模块得到的第一数据包给所述服务端;
所述服务端包括:
接收模块,用于接收所述客户端发送的所述动态口令生成装置的标识信息和所述加密后的第一动态口令,还用于接收所述客户端发送的第一数据包;
生成模块,用于以所述服务端的接收模块收到的所述标识信息为索引,查找与所述动态口令生成装置对应的动态因子,将所述查找到的动态因子作为当前动态因子,根据所述当前动态因子生成第二动态口令;
加密模块,用于对所述服务端的生成模块生成的第二动态口令,采用单向散列算法进行加密;
验证模块,用于验证所述服务端的接收模块收到的加密后的第一动态口令和所述服务端的加密模块得到的加密后的第二动态口令是否相同,如果相同,则通知存储所述服务端的当前动态因子并将验证成功信息发送给所述客户端,如果不同,则判断验证次数是否超过预设的验证次数门限值,如果超过,则提示出错信息,否则,修改所述服务端的当前动态因子,并触发所述服务端的生成模块根据所述修改后的动态因子重新生成第二动态口令;
存储模块,用于在收到所述验证模块的通知后,存储所述服务端的当前动态因子;
发送模块,用于发送所述验证模块得到的验证信息给所述客户端;
解密模块,用于用所述服务端的生成模块生成的第二动态口令,对所述服务端的接收模块收到的第一数据包进行解密,得到所述会话密钥;
所述动态口令生成装置包括:
生成模块,用于根据所述动态口令生成装置的当前动态因子生成第一动态口令;
显示模块,用于将所述动态口令生成装置的生成模块生成的第一动态口令显示在屏幕上,供用户查看;
存储模块,用于存储所述动态口令生成装置的当前动态因子。
所述客户端的加密模块还用于用所述会话密钥对待传输给所述服务端的文件进行加密,得到第二数据包;
所述服务端的加密模块还用于对所述服务端得到的会话密钥采用单向散列算法加密,得到第一散列值;
所述服务端的发送模块还用于将所述第一散列值发送给所述客户端请求验证;
所述客户端的接收模块还用于接收所述第一散列值;
所述客户端的加密模块还用于采用与所述服务端相同的单向散列算法对所述客户端生成的会话密钥加密,得到第二散列值;
相应地,所述客户端还用于验证所述第一散列值与第二散列值是否相同,如果不同,则所述客户端的发送模块还用于向所述服务端提示出错信息;如果相同,则所述客户端的加密模块还用于用所述会话密钥对待传输给所述服务端的文件进行加密,得到第二数据包;
所述客户端的发送模块还用于将所述第二数据包和验证成功信息发送给所述服务端;
所述服务端的接收模块还用于接收所述客户端的发送模块发送的所述第二数据包和验证成功信息;
所述服务端的解密模块还用于用所述会话密钥对所述第二数据包进行解密,得到所述文件。
所述服务端的加密模块还用于对所述服务端得到的会话密钥采用单向散列算法加密,得到第三散列值;
所述服务端的发送模块还用于将所述第三散列值发送给所述客户端请求验证;
所述客户端的接收模块还用于接收所述第三散列值;
所述客户端的加密模块还用于采用与所述服务端相同的单向散列算法对所述客户端生成的会话密钥加密,得到第四散列值;
相应地,所述客户端还用于验证所述第三散列值与第四散列值是否相同,如果不同,则所述客户端的发送模块还用于向所述服务端提示出错信息;如果相同,则所述客户端的发送模块还用于发送获取加密文件的申请给所述服务端;
所述服务端的接收模块还用于接收所述客户端的发送模块发送的所述申请;
所述服务端的加密模块还用于用所述会话密钥对文件进行加密,得到所述加密文件;
所述服务端的发送模块还用于发送所述加密文件给所述客户端;
所述客户端的接收模块还用于接收所述服务端的发送模块发送的所述加密文件;
所述客户端还包括:
解密模块,用于用所述会话密钥对所述加密文件进行解密,得到所述文件。
所述动态口令生成装置的生成模块具体包括:
接收单元,用于接收用户发送的动态口令生成命令;
生成单元,用于在所述接收单元收到所述动态口令生成命令后,根据所述动态口令生成装置的当前动态因子生成第一动态口令。
所述接收单元具体为按钮、指纹扫描单元、声控开关、人体体温感应单元、压力感应单元和光电感应单元。
又一方面,本发明还提供了一种协商密钥的系统,所述系统包括客户端、服务端和动态口令生成装置;
所述客户端包括:
接收模块,用于接收用户输入的第一动态口令和所述动态口令生成装置的标识信息,所述第一动态口令是所述动态口令生成装置根据当前动态因子生成的,还用于接收所述服务端发送的第一数据包和验证信息;
加密模块,用于对所述接收模块收到的第一动态口令采用单向散列算法进行加密;
发送模块,用于将所述接收模块收到的所述动态口令生成装置的标识信息和所述加密模块加密后的第一动态口令,发送给所述服务端请求验证;
解密模块,用于用所述客户端的接收模块接收的第一动态口令,对所述客户端的接收模块收到的第一数据包进行解密,得到会话密钥;
所述服务端包括:
接收模块,用于接收所述客户端发送的所述动态口令生成装置的标识信息和所述加密后的第一动态口令;
生成模块,用于以所述服务端的接收模块收到的所述标识信息为索引,查找与所述动态口令生成装置对应的动态因子,将所述所述查找出的动态因子作为当前动态因子,根据所述服务端的当前动态因子生成第二动态口令,还用于在所述服务端验证成功后,生成一个随机数,将所述随机数作为会话密钥;
加密模块,用于对所述服务端的生成模块生成的第二动态口令,采用单向散列算法进行加密,并用所述第二动态口令对所述会话密钥进行加密,得到第一数据包;
验证模块,用于验证所述服务端的接收模块收到的加密后的第一动态口令和所述服务端的加密模块得到的加密后的第二动态口令是否相同,如果相同,则通知存储所述服务端的当前动态因子以及通知所述服务端的生成模块生成会话密钥,并生成验证成功信息,如果不同,则判断验证次数是否超过预设的验证次数门限值,如果超过,则提示出错信息,否则,修改所述服务端的当前动态因子,并触发所述服务端的生成模块根据所述修改后的动态因子重新生成第二动态口令;
存储模块,用于在收到所述验证模块的通知后,存储所述服务端的当前动态因子;
发送模块,用于发送所述服务端的加密模块得到的第一数据包和所述验证模块得到的验证信息给所述客户端;
所述动态口令生成装置包括:
生成模块,用于根据所述动态口令生成装置的当前动态因子生成第一动态口令;
显示模块,用于将所述动态口令生成装置的生成模块生成的第一动态口令显示在屏幕上,供用户查看;
存储模块,用于存储所述动态口令生成装置的当前动态因子。
所述客户端的加密模块还用于对所述客户端得到的会话密钥采用单向散列算法加密,得到第三散列值;
所述客户端的发送模块还用于将所述第三散列值发送给所述服务端请求验证;
所述服务端的接收模块还用于接收所述客户端的发送模块发送的第三散列值;
所述服务端的加密模块还用于采用与所述客户端相同的单向散列算法对所述服务端生成的会话密钥加密,得到第四散列值;
相应地,所述服务端的验证模块还用于验证所述第三散列值与第四散列值是否相同,如果不同,则所述服务端的发送模块还用于向所述客户端提示出错信息;如果相同,则所述服务端的发送模块还用于向所述客户端发送验证成功信息;
相应地,所述客户端的接收模块还用于接收所述验证成功信息;
所述客户端的加密模块还用于用所述客户端的解密模块得到的所述会话密钥,对待传输给所述服务端的文件进行加密,得到第二数据包;
所述客户端的发送模块还用于将所述第二数据包发送给所述服务端;
所述服务端的接收模块还用于接收所述客户端的发送模块发送的所述第二数据包;
所述服务端还包括:
解密模块,用于用所述服务端的生成模块得到的所述会话密钥对所述第二数据包进行解密,得到所述文件。
所述客户端的加密模块还用于对所述客户端的得到的会话密钥采用单向散列算法加密,得到第一散列值;
所述客户端的发送模块还用于将所述第一散列值发送给所述服务端请求验证;
所述服务端的接收模块还用于接收所述客户端的发送模块发送的第一散列值;
所述服务端的加密模块还用于采用与所述客户端相同的单向散列算法对所述服务端生成的会话密钥加密,得到第二散列值;
相应地,所述服务端的验证模块还用于验证所述第一散列值与第二散列值是否相同,如果不同,则所述服务端的发送模块还用于向所述客户端提示出错信息;如果相同,则所述服务端的发送模块还用于向所述客户端发送验证成功信息;
相应地,所述客户端的接收模块还用于接收所述验证成功信息;
所述客户端的发送模块还用于发送获取加密文件的申请给所述服务端;
所述服务端的接收模块还用于接收所述客户端的发送模块发送的所述申请;
所述服务端的加密模块还用于用所述服务端的生成模块得到的所述会话密钥对文件进行加密,得到所述加密文件;
所述服务端的发送模块还用于发送所述加密文件给所述客户端;
所述客户端的接收模块还用于接收所述服务端的发送模块发送的所述加密文件;
所述客户端的解密模块还用于用所述会话密钥对所述加密文件进行解密,得到所述文件。
所述动态口令生成装置的生成模块具体包括:
接收单元,用于接收用户发送的动态口令生成命令;
生成单元,用于在所述接收单元收到所述动态口令生成命令后,根据所述动态口令生成装置的当前动态因子生成动态口令。
所述接收单元具体为按钮、指纹扫描单元、声控开关、人体体温感应单元、压力感应单元或光电感应单元。
本发明的有益效果在于:本发明提供了一种简单、高效、保证安全的协商密钥的方法,从而提高了协商密钥的效率,保证了协商密钥的安全性。
附图说明
图1是本发明实施例1提供的一种协商密钥的方法流程图;
图2是本发明实施例1提供的客户端验证散列值后客户端传输文件给服务端的流程图;
图3是本发明实施例1提供的服务端验证散列值后客户端传输文件给服务端的流程图;
图4是本发明实施例2提供的另一种协商密钥的方法流程图;
图5是本发明实施例2提供的服务端验证散列值后服务端传输文件给客户端的流程图;
图6是本发明实施例2提供的客户端验证散列值后服务端传输文件给客户端的流程图;
图7是本发明实施例3提供的一种协商密钥的系统结构图;
图8是本发明实施例4提供的另一种协商密钥的系统结构图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明实施方式作进一步地详细描述。
实施例1
参见图1,本发明实施例提供了一种协商密钥的方法,应用于客户端向服务端传送加密文件的场景,具体包括:
步骤101:用户向动态口令生成装置发送动态口令生成命令,动态口令生成装置接收到用户发送的动态口令生成命令后,根据当前动态因子生成第一动态口令,并将第一动态口令显示在屏幕上,供用户查看。
具体的,用户可以通过按钮、指纹扫描、声控开关、人体体温感应、压力感应和光电感应等方式来发送动态口令生成命令。
其中,当前动态因子是动态口令生成装置在初始化时预先设置的,可以是共享密钥、认证次数或时间。
步骤102:用户将动态口令生成装置的标识信息和动态口令装置显示的第一动态口令输入到客户端,客户端收到用户输入的标识信息和第一动态口令后,对第一动态口令采用单向散列算法进行加密,然后将动态口令生成装置的标识信息和加密后的第一动态口令发送给服务端请求验证。
步骤103:服务端接收动态口令生成装置的标识信息和加密后的第一动态口令,并将动态口令生成装置的标识信息作为索引条件,在服务端中查询与该动态口令生成装置对应的动态因子,将查找出的动态因子作为当前动态因子。
其中,服务端预先存储有动态口令生成装置预先设置的动态因子和动态口令生成装置的标识信息,存储的方式有多种,例如存储在数据库中。
步骤104:服务端根据自身的当前动态因子生成第二动态口令,并对第二动态口令采用单向散列算法进行加密。
步骤105:服务端验证加密后的第二动态口令与收到的加密后的第一动态口令是否相同,如果不同,执行步骤106,如果相同,执行步骤109。
步骤106:服务端判断验证次数是否超过预设的验证次数门限值,若超过验证次数门限值,执行步骤107,否则,执行步骤108。
步骤107:服务端向客户端提示出错信息,结束。
步骤108:服务端修改自身的当前动态因子,并将修改后的动态因子作为当前动态因子,然后执行步骤104,即服务端根据该修改后的动态因子重新生成第二动态口令,继续验证,直到验证成功或超过验证次数门限值。
步骤109:服务端保存自身的当前动态因子,并向客户端发送验证成功信息。
步骤110:客户端收到服务端发送的验证成功信息后,生成一个随机数,将该随机数作为第一会话密钥,用第一动态口令对该第一会话密钥进行加密,得到第一数据包,然后将第一数据包发送给服务端。
具体的,客户端可以通过对称算法用第一动态口令对第一会话密钥进行加密,如Des或IDEA。
步骤111:服务端收到第一数据包后,用第二动态口令对第一数据包进行解密,得到该第一会话密钥。
具体的,服务端可以采用与步骤110中相同的对称算法对第一数据包进行解密,如Des或IDEA。进一步地,服务端还可以保存该第一会话密钥。
进一步地,参见图2,本实施例提供的上述方法还可以包括以下步骤:
步骤112:服务端对得到的第一会话密钥采用单向散列算法进行加密,得到第一散列值,并把该第一散列值发送到客户端请求验证。
步骤113:客户端接收到第一散列值,采用与本实施例步骤112中相同的单向散列算法对客户端生成的第一会话密钥进行加密,得到第二散列值。
步骤114:客户端验证第一散列值与第二散列值是否相同,如果不同,则执行步骤115,如果相同,则执行步骤116。
步骤115:客户端向服务端提示出错信息,结束。
步骤116:客户端用第一会话密钥对待传输给服务端的文件进行加密,得到第二数据包,并将该第二数据包与验证成功信息一起发送给服务端。
步骤117:服务端接收第二数据包与验证成功信息,并用得到的第一会话密钥对第二数据包进行解密,得到上述文件。
另外,本实施例中除了上述由客户端生成会话密钥的方式外,还可以采用由服务端生成会话密钥的方式,参见图3,本实施例中的步骤109~111还可以由以下步骤进行替换:
步骤109′:服务端保存当前动态因子并生成一个随机数,将该随机数作为第二会话密钥。
步骤110′:服务端用第二动态口令对该第二会话密钥进行加密,得到第三数据包,并将该第三数据包和验证成功信息一起发送给客户端。
具体的,服务端可以通过对称算法用第二动态口令对该第二会话密钥进行加密,如Des或IDEA。
步骤111′:客户端接收第三数据包和验证成功信息,并用第一动态口令对第三数据包进行解密,得到上述第二会话密钥。
具体的,客户端可以采用与步骤110′中相同的对称算法对第三数据包进行解密,如Des或IDEA。进一步地,客户端还可以保存该第二会话密钥。
同样的,本实施例中的步骤112~117还可以由以下步骤进行替换:
步骤112′:客户端对得到的第二会话密钥采用单向散列算法进行加密,得到第三散列值,并把该第三散列值发送到服务端请求验证。
步骤113′:服务端接收第三散列值,采用与步骤112′中相同的单向散列算法对服务端生成的第二会话密钥进行加密,得到第四散列值。
步骤114′:服务端验证第三散列值与第四散列值是否相同,如果不相同,则执行步骤115′,如果相同,则执行步骤116′。
步骤115′:服务端向客户端发送出错信息,结束。
步骤116′:服务端向客户端发送验证成功信息。
步骤117′:客户端收到该验证成功信息后,用得到的第二会话密钥对待传输给服务端的文件进行加密,得到第四数据包,并将该第四数据包发送给服务端。
步骤118′:服务端接收第四数据包,并用生成的第二会话密钥对该第四数据包进行解密,得到上述文件。
实施例2
参见图4,本发明实施例还提供了一种协商密钥的方法,应用于客户端从服务端获取加密文件的场景,具体包括:
步骤201:用户向动态口令生成装置发送动态口令生成命令,动态口令生成装置收到用户发送的动态口令生成命令后,根据当前动态因子生成第一动态口令,并将第一动态口令显示在屏幕上,供用户查看。
具体的,用户可以通过按钮、指纹扫描、声控开关、人体体温感应、压力感应和光电感应等方式来发送动态口令生成命令。
其中,当前动态因子是动态口令生成装置在初始化时预先设置的,可以是共享密钥、认证次数或时间。
步骤202:用户将动态口令生成装置的标识信息和动态口令装置显示的第一动态口令输入到客户端,客户端收到用户输入的标识信息和第一动态口令后,对第一动态口令采用单向散列算法进行加密,然后将动态口令生成装置的标识信息和加密后的第一动态口令发送给服务端请求验证。
步骤203:服务端接收动态口令生成装置的标识信息和加密后的第一动态口令,并将动态口令生成装置的标识信息作为索引条件,在服务端中查询与该动态口令生成装置对应的动态因子,将查找到的动态因子作为当前动态因子。
其中,服务端预先存储有动态口令生成装置预先设置的动态因子和动态口令生成装置的标识信息,存储的方式有多种,例如存储在数据库中。
步骤204:服务端根据自身的当前动态因子生成第二动态口令,并对第二动态口令采用单向散列算法进行加密。
步骤205:服务端验证加密后的第二动态口令与收到的加密后的第一动态口令是否相同,如果不同,执行步骤206,如果相同,执行步骤209。
步骤206:服务端判断验证次数是否超过预设的验证次数门限值,若超过验证次数门限值,执行步骤207,否则,执行步骤208。
步骤207:服务端向客户端提示出错信息,结束。
步骤208:服务端修改自身的当前动态因子,并将修改后的动态因子作为当前动态因子,然后执行步骤204,即根据修改后的动态因子重新生成第二动态口令,继续验证,直到验证成功或超过验证次数门限值。
步骤209:服务端保存自身的当前动态因子,并生成一个随机数,将该随机数作为第一会话密钥。
步骤210:服务端用第二动态口令对该第一会话密钥进行加密,得到第一数据包,然后将第一数据包和验证成功信息发送给客户端。
具体的,服务端可以通过对称算法用第二动态口令对第一会话密钥进行加密,如Des或IDEA。
步骤211:客户端收到第一数据包和验证成功信息后,用第一动态口令对第一数据包进行解密,得到上述第一会话密钥。
具体的,客户端可以采用与步骤210中相同的对称算法用第一动态口令对第一数据包进行解密,如Des或IDEA。进一步地,客户端还可以保存得到的该第一会话密钥。
进一步地,参见图5,本实施例提供的上述方法还可以包括以下步骤:
步骤212:客户端采用单向散列算法对得到的第一会话密钥进行加密,得到第一散列值,将第一散列值发送给服务端请求验证。
步骤213:服务端收到第一散列值后,对生成的第一会话密钥采用与客户端相同的单向散列算法进行加密,得到第二散列值。
步骤214:服务端验证第一散列值与第二散列值是否相同,如果不同,则执行步骤215,如果相同,则执行步骤216。
步骤215:服务端向客户端提示出错信息,结束。
步骤216:服务端向客户端发送验证成功信息。
步骤217:客户端收到该验证成功信息后,向服务端发送获取加密文件的申请。
步骤218:服务端收到客户端发送的获取加密文件的申请后,用生成的第一会话密钥对文件进行加密,并将该加密文件发送给客户端。
步骤219:客户端收到该加密文件后,用得到的第一会话密钥对该加密文件进行解密,得到文件。
另外,本实施例中除了上述由服务端生成会话密钥的方式外,还可以采用由客户端生成会话密钥的方式,参见图6,本实施例中,上述步骤209~211还可以由以下步骤进行替换:
步骤209′:服务端保存自身的当前动态因子,并向客户端发送验证成功信息。
步骤210′:客户端接收到服务端发送的验证成功信息后,生成一个随机数,将该随机数作为第二会话密钥,并用第一动态口令对该第二会话密钥进行加密,得到第二数据包,并将该第二数据包发送给服务端。
步骤211′:服务端接收第二数据包,并用第二动态口令对第二数据包进行解密,得到该第二会话密钥。
同样的,本实施例中的步骤212~219还可以由以下步骤进行替换:
步骤212′:服务端对得到的第二会话密钥采用单向散列算法进行加密,得到第三散列值,并把该第三散列值发送到客户端请求验证。
步骤213′:客户端接收第三散列值,采用与步骤212′中相同的单向散列算法对生成的第二会话密钥进行加密,得到第四散列值。
步骤214′:客户端验证第三散列值与第四散列值是否相同,如果不相同,则执行步骤215′,如果相同,则执行步骤216′。
步骤215′:客户端向服务端发送出错信息,结束。
步骤216′:客户端向服务端发送获取加密文件的申请。
步骤217′:服务端收到客户端发送的获取加密文件的申请后,用得到的第二会话密钥对文件进行加密,并将该加密文件发送给客户端。
步骤218′:客户端接收到该加密文件后,用生成的该第二会话密钥对该加密文件进行解密,得到该文件。
实施例3
参见图7,本发明实施例还提供了一种协商密钥的系统,包括客户端300、服务端400和动态口令生成装置500;
客户端300包括:
接收模块301,用于接收用户输入的第一动态口令和动态口令生成装置500的标识信息,第一动态口令是动态口令生成装置500根据当前动态因子生成的,还用于接收服务端400发送的验证信息;
生成模块302,用于在接收模块301收到服务端400发送的验证成功信息后,生成一个随机数,将该随机数作为会话密钥;
加密模块303,用于对接收模块301收到的第一动态口令采用单向散列算法进行加密,并用第一动态口令对生成模块302得到的会话密钥进行加密,得到第一数据包;
发送模块304,用于将接收模块301收到的动态口令生成装置500的标识信息和加密模块303加密后的第一动态口令,发送给服务端400请求验证,还用于发送加密模块303得到的第一数据包给服务端400;
服务端400包括:
接收模块401,用于接收客户端300发送的动态口令生成装置500的标识信息和加密后的第一动态口令,还用于接收客户端300发送的第一数据包;
生成模块402,用于以接收模块401收到的标识信息为索引,查找与动态口令生成装置500对应的动态因子,将查找到的动态因子作为当前动态因子,根据当前动态因子生成第二动态口令;
加密模块403,用于对生成模块402生成的第二动态口令,采用单向散列算法进行加密;
验证模块404,用于验证接收模块401收到的加密后的第一动态口令和加密模块403得到的加密后的第二动态口令是否相同,如果相同,则通知存储服务端的当前动态因子并生成验证成功信息,如果不同,则判断验证次数是否超过预设的验证次数门限值,如果超过,则提示出错信息,否则,修改服务端400的当前动态因子,并触发生成模块402根据修改后的动态因子重新生成第二动态口令;
存储模块405,用于在收到验证模块404的通知后,存储服务端400的当前动态因子;
发送模块406,用于发送验证模块404得到的验证信息给客户端300;
解密模块407,用于用生成模块402生成的第二动态口令,对接收模块401收到的第一数据包进行解密,得到会话密钥;
动态口令生成装置500包括:
生成模块501,用于根据动态口令生成装置500的当前动态因子生成第一动态口令;
显示模块502,用于将生成模块501生成的第一动态口令显示在屏幕上,供用户查看;
存储模块503,用于存储动态口令生成装置500的当前动态因子。
进一步地,本实施例中,客户端300的加密模块303还用于用会话密钥对待传输给服务端400的文件进行加密,得到第二数据包;
相应地,客户端300的发送模块304还用于将第二数据包发送给服务端400;服务端400的接收模块401还用于接收客户端300的发送模块304发送的第二数据包;服务端400的解密模块407还用于用会话密钥对第二数据包进行解密,得到文件。
进一步地,本实施例中,客户端300在生成加密文件之前,还可以先对双方生成的散列值进行验证,即服务端400的加密模块403对解密模块407得到的会话密钥采用单向散列算法进行加密,得到第一散列值,由发送模块406把该第一散列值发送到客户端300请求验证;客户端300的接收模块接收该第一散列值后,加密模块303采用与服务端400相同的单向散列算法对生成模块302生成的会话密钥进行加密,得到第二散列值;相应地,客户端还用于验证上述第一散列值与第二散列值是否相同,如果不同,则向服务端400提示出错信息,如果相同,则通知加密模块303进行文件加密,生成第二数据包。
另外,本实施例中,还可以由服务端400生成会话密钥,并且在客户端生成加密文件给服务端之前,由客户端300对双方生成的散列值进行验证,即服务端400的存储模块保存当前动态因子后,生成模块402还可以生成一个随机数,并将该随机数作为会话密钥;相应地,加密模块403用第二动态口令对生成模块402得到的该会话密钥进行加密,得到第三数据包,由发送模块406将该第三数据包和验证成功信息一起发送给客户端300;客户端300的接收模块301接收该第三数据包和验证成功信息,并且客户端300还用于用第一动态口令对该第一数据包进行解密,得到上述会话密钥,并由加密模块303对该会话密钥采用单向散列算法进行加密,得到第三散列值,由发送模块304把该第三散列值发送到服务端请求验证;服务端400的接收模块401接收该第三散列值,加密模块403采用与客户端300相同的单向散列算法对生成模块402生成的会话密钥进行加密,得到第四散列值,由验证模块404验证第三散列值与第四散列值是否相同,如果不相同,则提示客户端300出错信息,如果相同,则生成验证成功信息,并由发送模块406将验证成功信息发送给客户端300以及通知客户端生成加密文件。
另外,本实施例中,进一步地,客户端300的发送模块304还用于发送获取加密文件的申请给服务端400;
相应地,服务端400的接收模块401还用于接收客户端300的发送模块304发送的申请;服务端400的加密模块403还用于用会话密钥对文件进行加密,得到加密文件;服务端400的发送模块406还用于发送加密文件给客户端300;客户端300的接收模块301还用于接收服务端400的发送模块406发送的加密文件;客户端300还包括:解密模块305,用于用会话密钥对加密文件进行解密,得到文件。
本实施例中,动态口令生成装置500的生成模块501可以具体包括:
接收单元501a,用于接收用户发送的动态口令生成命令;
生成单元501b,用于在接收单元501a收到动态口令生成命令后,根据动态口令生成装置500的当前动态因子生成第一动态口令。
其中,接收单元501a可以具体为按钮、指纹扫描单元、声控开关、人体体温感应单元、压力感应单元和光电感应单元。
实施例4
参见图8,本发明实施例还提供了一种协商密钥的系统,包括客户端600、服务端700和动态口令生成装置800;
客户端600包括:
接收模块601,用于接收用户输入的第一动态口令和动态口令生成装置800的标识信息,第一动态口令是动态口令生成装置800根据当前动态因子生成的,还用于接收服务端700发送的第一数据包和验证信息;
加密模块602,用于对接收模块601收到的第一动态口令采用单向散列算法进行加密;
发送模块603,用于将接收模块601收到的动态口令生成装置800的标识信息和加密模块602加密后的第一动态口令,发送给服务端700请求验证;
解密模块604,用于用接收模块601接收的第一动态口令,对接收模块601收到的第一数据包进行解密,得到会话密钥;
服务端700包括:
接收模块701,用于接收客户端600发送的动态口令生成装置800的标识信息和加密后的第一动态口令;
生成模块702,用于以接收模块701收到的标识信息为索引,查找与动态口令生成装置800对应的动态因子,将查找出的动态因子作为当前动态因子,根据服务端700的当前动态因子生成第二动态口令,还用于在服务端验证成功后,生成一个随机数,将随机数作为会话密钥;
加密模块703,用于对生成模块702生成的第二动态口令,采用单向散列算法进行加密,并用第二动态口令对会话密钥进行加密,得到第一数据包;
验证模块704,用于验证接收模块701收到的加密后的第一动态口令和加密模块703得到的加密后的第二动态口令是否相同,如果相同,则通知存储服务端700的当前动态因子以及通知服务端的生成模块生成会话密钥,并生成验证成功信息,如果不同,则判断验证次数是否超过预设的验证次数门限值,如果超过,则提示出错信息,否则,修改服务端700的当前动态因子,并触发生成模块702根据修改后的动态因子重新生成第二动态口令;
存储模块705,用于在收到验证模块704的通知后,存储服务端700的当前动态因子;
发送模块706,用于发送加密模块703得到的第一数据包和验证模块704得到的验证信息给客户端600;
动态口令生成装置800包括:
生成模块801,用于根据动态口令生成装置800的当前动态因子生成第一动态口令;
显示模块802,用于将生成模块801生成的第一动态口令显示在屏幕上,供用户查看;
存储模块803,用于存储动态口令生成装置800的当前动态因子。
进一步地,本实施例中,客户端600的加密模块602还用于用解密模块604得到的会话密钥,对待传输给服务端700的文件进行加密,得到第二数据包;
相应地,客户端600的发送模块603还用于将第二数据包发送给服务端700;服务端700的接收模块701还用于接收客户端600的发送模块603发送的第二数据包;服务端700还包括:解密模块707,用于用生成模块702得到的会话密钥对第二数据包进行解密,得到文件。
另外,本实施例中,客户端600的发送模块603还用于发送获取加密文件的申请给服务端;
相应地,服务端700的接收模块701还用于接收客户端600的发送模块603发送的申请;服务端700的加密模块703还用于用服务端700的生成模块702得到的会话密钥对文件进行加密,得到加密文件;服务端700的发送模块706还用于发送加密文件给客户端600;客户端600的接收模块601还用于接收服务端700的发送模块706发送的加密文件;客户端600的解密模块604还用于用会话密钥对加密文件进行解密,得到文件。
进一步地,本实施例中,客户端600发送获取加密文件的申请前,还可以先由服务端对双方生成的散列值进行验证,即客户端600的加密模块602采用单向散列算法对客户端得到的会话密钥进行加密,得到第一散列值,由发送模块603将第一散列值发送给服务端700请求验证;服务端700的接收模块收到第一散列值后,由加密模块703对服务端生成的会话密钥采用与客户端相同的单向散列算法进行加密,得到第二散列值;验证模块704验证第一散列值与第二散列值是否相同,如果不同,则向客户端提示出错信息,如果相同,则由发送模块706向客户端发送验证成功信息;客户端600收到该验证成功信息后,由发送模块603向服务端发送获取加密文件的申请。
另外,本实施例中,还可以由客户端600生成会话密钥,并且客户端600发送获取加密文件的申请前,还可以先由客户端对双方生成的散列值进行验证,即客户端600还用于生成一个随机数,并将该随机数作为会话密钥,加密模块602用第一动态口令对该会话密钥进行加密,得到第二数据包,并由发送模块603将该第二数据包发送给服务端700,服务端700的接收模块701收到后,服务端700用第二动态口令对第二数据包进行解密,得到该会话密钥;加密模块703对得到的该会话密钥采用单向散列算法进行加密,得到第三散列值,并由发送模块706把该第三散列值发送到客户端600请求验证;客户端600的接收模块601接收第三散列值,加密模块602采用与服务端相同的单向散列算法对客户端生成的会话密钥进行加密,得到第四散列值;并且客户端600还用于验证第三散列值与第四散列值是否相同,如果不相同,则向服务端发送出错信息,如果相同,则向服务端发送获取加密文件的申请。
本实施例中,动态口令生成装置800的生成模块801可以具体包括:
接收单元801a,用于接收用户发送的动态口令生成命令;
生成单元801b,用于在接收单元801a收到动态口令生成命令后,根据动态口令生成装置800的当前动态因子生成动态口令。
其中,接收单元801a可以具体为按钮、指纹扫描单元、声控开关、人体体温感应单元、压力感应单元或光电感应单元。
本发明实施例的有益效果在于:本发明实施例提供了一种简单、高效、保证安全的协商密钥的方法,从而提高了协商密钥的效率,保证了协商密钥的安全性。
以上所述仅为本发明的较佳实施例,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (18)
1.一种协商密钥的方法,其特征在于,所述方法包括:
客户端接收用户输入的动态口令生成装置的标识信息和第一动态口令,对所述第一动态口令采用单向散列算法进行加密,将加密后的第一动态口令和所述标识信息发送给服务端请求验证,所述第一动态口令是所述动态口令生成装置根据当前动态因子生成的;
所述服务端收到所述标识信息和所述加密后的第一动态口令后,以所述标识信息为索引,查询与所述动态口令生成装置对应的动态因子,将所述查询到的动态因子作为当前动态因子,根据所述服务端的当前动态因子生成第二动态口令,并对所述第二动态口令采用所述单向散列算法进行加密;
所述服务端验证所述加密后的第二动态口令与收到的所述加密后的第一动态口令是否相同;
如果相同,则所述服务端保存自身的当前动态因子并发送验证成功信息给所述客户端,所述客户端收到所述验证成功信息后生成一个随机数,将所述随机数作为会话密钥,用所述第一动态口令对所述会话密钥进行加密,得到第一数据包,然后将所述第一数据包发送给所述服务端,所述服务端接收所述第一数据包,用所述第二动态口令对所述第一数据包进行解密,得到所述会话密钥;
如果不同,则所述服务端判断验证次数是否超过预设的验证次数门限值,如果超过,则提示出错信息,否则,修改所述服务端的当前动态因子,并根据修改后的动态因子重新生成第二动态口令继续验证,直到验证成功并得到会话密钥或超过所述验证次数门限值为止。
2.根据权利要求1所述的协商密钥的方法,其特征在于,所述服务端得到所述会话密钥之后,还包括:
所述服务端对所述会话密钥采用单向散列算法加密,得到第一散列值,将所述第一散列值发送给所述客户端请求验证;
所述客户端接收所述第一散列值,采用与所述服务端相同的单向散列算法对所述会话密钥进行加密,得到第二散列值;
所述客户端验证所述第一散列值与第二散列值是否相同;
若不相同,则向所述服务端提示出错信息,结束;
若相同,则所述客户端用所述会话密钥对待传输给所述服务端的文件进行加密,得到第二数据包,将所述第二数据包和验证成功信息发送给所述服务端;
所述服务端接收所述第二数据包和所述验证成功信息,用所述会话密钥对所述第二数据包进行解密,得到所述文件。
3.根据权利要求1所述的协商密钥的方法,其特征在于,所述服务端得到所述会话密钥之后,还包括:
所述服务端对所述会话密钥采用单向散列算法加密,得到第三散列值并发给所述客户端请求验证;
所述客户端接收所述服务端发送的第三散列值,采用与所述服务端相同的单向散列算法对所述会话密钥进行加密,得到第四散列值;
所述客户端验证所述第三散列值与第四散列值是否相同;
若不相同,则向所述服务端提示出错信息,结束;
若相同,则所述客户端向所述服务端发送获取加密文件的申请;
所述服务端收到所述申请后,用所述会话密钥对文件进行加密,得到加密文件,并将所述加密文件发送给所述客户端;
所述客户端接收所述加密文件,用所述会话密钥对所述加密文件进行解密,得到所述文件。
4.根据权利要求1所述的协商密钥的方法,其特征在于,所述动态因子是共享密钥、认证次数或时间。
5.一种协商密钥的方法,其特征在于,所述方法包括:
客户端接收用户输入的动态口令生成装置的标识信息和第一动态口令,对所述第一动态口令采用单向散列算法进行加密,将加密后的第一动态口令和所述标识信息发送给服务端请求验证,所述第一动态口令是所述动态口令生成装置根据当前动态因子生成的;
所述服务端收到所述标识信息和所述加密后的第一动态口令后,以所述标识信息为索引,查询与所述动态口令生成装置对应的动态因子,将所述查询到的动态因子作为当前动态因子,根据所述服务端的当前动态因子生成第二动态口令,并对所述第二动态口令采用所述单向散列算法进行加密;
所述服务端验证所述加密后的第二动态口令与收到的所述加密后的第一动态口令是否相同;
如果相同,则所述服务端保存自身的当前动态因子并生成一个随机数,将所述随机数作为会话密钥,用所述第二动态口令对所述会话密钥进行加密,得到第一数据包,并将所述第一数据包与验证成功信息一起发送给所述客户端,所述客户端接收所述第一数据包和验证成功信息,用所述第一动态口令对所述第一数据包进行解密,得到所述会话密钥;
如果不同,则所述服务端判断验证次数是否超过预设的验证次数门限值,如果超过,则提示出错信息,否则,修改所述服务端的当前动态因子,并根据修改后的动态因子重新生成第二动态口令继续验证,直到验证成功并得到会话密钥或超过所述验证次数门限值为止。
6.根据权利要求5所述的协商密钥的方法,其特征在于,所述客户端得到所述会话密钥之后,还包括:
所述客户端对所述会话密钥采用单向散列算法加密,得到第三散列值并发送给服务端请求验证;
所述服务端接收所述第三散列值,采用与所述客户端相同的单向散列算法对所述会话密钥进行加密,得到第四散列值;
所述服务端验证所述第三散列值与第四散列值是否相同;
若不相同,则向所述客户端提示出错信息,结束;
若相同,则向所述客户端发送验证成功信息;
所述客户端接收所述服务端返回的验证成功信息,用所述会话密钥对待传输给所述服务端的文件进行加密,得到第二数据包,将所述第二数据包发送给所述服务端;
所述服务端接收所述第二数据包,用所述会话密钥对所述第二数据包进行解密,得到所述文件。
7.根据权利要求5所述的协商密钥的方法,其特征在于,所述客户端得到所述会话密钥之后,还包括:
所述客户端采用单向散列算法对所述会话密钥加密,得到第一散列值并发送给所述服务端请求验证;
所述服务端接收所述客户端发送的所述第一散列值,采用与所述客户端相同的单向散列算法对所述会话密钥进行加密,得到第二散列值;
所述服务端验证所述第一散列值与第二散列值是否相同;
若不相同,则向所述客户端提示出错信息,结束;
若相同,则向所述客户端发送验证成功信息;
所述客户端接收所述服务端发送的验证成功信息,向所述服务端发送获取加密文件的申请;
所述服务端收到所述申请后,用所述会话密钥对文件进行加密,得到加密文件,并将所述加密文件发送给所述客户端;
所述客户端接收所述加密文件,用得到的所述会话密钥对所述加密文件进行解密,得到所述文件。
8.根据权利要求5所述的协商密钥的方法,其特征在于,所述动态因子是共享密钥、认证次数或时间。
9.一种协商密钥的系统,其特征在于,所述系统包括客户端、服务端和动态口令生成装置;
所述客户端包括:
接收模块,用于接收用户输入的第一动态口令和所述动态口令生成装置的标识信息,所述第一动态口令是所述动态口令生成装置根据当前动态因子生成的,所述接收模块还用于接收所述服务端发送的验证信息;
生成模块,用于在所述接收模块收到所述服务端发送的验证成功信息后,生成一个随机数,将所述随机数作为会话密钥;
加密模块,用于对所述接收模块收到的第一动态口令采用单向散列算法进行加密,并用所述第一动态口令对所述生成模块得到的会话密钥进行加密,得到第一数据包;
发送模块,用于将所述接收模块收到的所述动态口令生成装置的标识信息和所述加密模块加密后的第一动态口令,发送给所述服务端请求验证,还用于发送所述加密模块得到的第一数据包给所述服务端;
所述服务端包括:
接收模块,用于接收所述客户端发送的所述动态口令生成装置的标识信息和所述加密后的第一动态口令,还用于接收所述客户端发送的第一数据包;
生成模块,用于以所述服务端的接收模块收到的所述标识信息为索引,查找与所述动态口令生成装置对应的动态因子,将所述查找到的动态因子作为当前动态因子,根据所述当前动态因子生成第二动态口令;
加密模块,用于对所述服务端的生成模块生成的第二动态口令,采用单向散列算法进行加密;
验证模块,用于验证所述服务端的接收模块收到的加密后的第一动态口令和所述服务端的加密模块得到的加密后的第二动态口令是否相同,如果相同,则通知存储所述服务端的当前动态因子并生成验证成功信息,如果不同,则判断验证次数是否超过预设的验证次数门限值,如果超过,则提示出错信息,否则,修改所述服务端的当前动态因子,并触发所述服务端的生成模块根据所述修改后的动态因子重新生成第二动态口令;
存储模块,用于在收到所述验证模块的通知后,存储所述服务端的当前动态因子;
发送模块,用于发送所述验证模块得到的验证信息给所述客户端;
解密模块,用于用所述服务端的生成模块生成的第二动态口令,对所述服务端的接收模块收到的第一数据包进行解密,得到所述会话密钥;
所述动态口令生成装置包括:
生成模块,用于根据所述动态口令生成装置的当前动态因子生成第一动态口令;
显示模块,用于将所述动态口令生成装置的生成模块生成的第一动态口令显示在屏幕上,供用户查看;
存储模块,用于存储所述动态口令生成装置的当前动态因子。
10.根据权利要求9所述的协商密钥的系统,其特征在于,
所述服务端的加密模块还用于对所述服务端得到的会话密钥采用单向散列算法加密,得到第一散列值;
所述服务端的发送模块还用于将所述第一散列值发送给所述客户端请求验证;
所述客户端的接收模块还用于接收所述第一散列值;
所述客户端的加密模块还用于采用与所述服务端相同的单向散列算法对所述客户端生成的会话密钥加密,得到第二散列值;
相应地,所述客户端还用于验证所述第一散列值与第二散列值是否相同,如果不同,则所述客户端的发送模块还用于向所述服务端提示出错信息;如果相同,则所述客户端的加密模块还用于用所述会话密钥对待传输给所述服务端的文件进行加密,得到第二数据包;
所述客户端的发送模块还用于将所述第二数据包和验证成功信息发送给所述服务端;
所述服务端的接收模块还用于接收所述客户端的发送模块发送的所述第二数据包和验证成功信息;
所述服务端的解密模块还用于用所述会话密钥对所述第二数据包进行解密,得到所述文件。
11.根据权利要求9所述的协商密钥的系统,其特征在于,
所述服务端的加密模块还用于对所述服务端得到的会话密钥采用单向散列算法加密,得到第三散列值;
所述服务端的发送模块还用于将所述第三散列值发送给所述客户端请求验证;
所述客户端的接收模块还用于接收所述第三散列值;
所述客户端的加密模块还用于采用与所述服务端相同的单向散列算法对所述客户端生成的会话密钥加密,得到第四散列值;
相应地,所述客户端还用于验证所述第三散列值与第四散列值是否相同,如果不同,则所述客户端的发送模块还用于向所述服务端提示出错信息;如果相同,则所述客户端的发送模块还用于发送获取加密文件的申请给所述服务端;
所述服务端的接收模块还用于接收所述客户端的发送模块发送的所述申请;
所述服务端的加密模块还用于用所述会话密钥对文件进行加密,得到所述加密文件;
所述服务端的发送模块还用于发送所述加密文件给所述客户端;
所述客户端的接收模块还用于接收所述服务端的发送模块发送的所述加密文件;
所述客户端还包括:
解密模块,用于用所述会话密钥对所述加密文件进行解密,得到所述文件。
12.根据权利要求9所述的协商密钥的系统,其特征在于,所述动态口令生成装置的生成模块具体包括:
接收单元,用于接收用户发送的动态口令生成命令;
生成单元,用于在所述接收单元收到所述动态口令生成命令后,根据所述动态口令生成装置的当前动态因子生成第一动态口令。
13.根据权利要求12所述的协商密钥的系统,其特征在于,所述接收单元具体为按钮、指纹扫描单元、声控开关、人体体温感应单元、压力感应单元和光电感应单元。
14.一种协商密钥的系统,其特征在于,所述系统包括客户端、服务端和动态口令生成装置;
所述客户端包括:
接收模块,用于接收用户输入的第一动态口令和所述动态口令生成装置的标识信息,所述第一动态口令是所述动态口令生成装置根据当前动态因子生成的,所述接收模块还用于接收所述服务端发送的第一数据包和验证信息;
加密模块,用于对所述接收模块收到的第一动态口令采用单向散列算法进行加密;
发送模块,用于将所述接收模块收到的所述动态口令生成装置的标识信息和所述加密模块加密后的第一动态口令,发送给所述服务端请求验证;
解密模块,用于用所述客户端的接收模块接收的第一动态口令,对所述客户端的接收模块收到的第一数据包进行解密,得到会话密钥;
所述服务端包括:
接收模块,用于接收所述客户端发送的所述动态口令生成装置的标识信息和所述加密后的第一动态口令;
生成模块,用于以所述服务端的接收模块收到的所述标识信息为索引,查找与所述动态口令生成装置对应的动态因子,将所述所述查找出的动态因子作为当前动态因子,根据所述服务端的当前动态因子生成第二动态口令,还用于在所述服务端验证成功后,生成一个随机数,将所述随机数作为会话密钥;
加密模块,用于对所述服务端的生成模块生成的第二动态口令,采用单向散列算法进行加密,并用所述第二动态口令对所述会话密钥进行加密,得到第一数据包;
验证模块,用于验证所述服务端的接收模块收到的加密后的第一动态口令和所述服务端的加密模块得到的加密后的第二动态口令是否相同,如果相同,则通知存储所述服务端的当前动态因子以及通知所述服务端的生成模块生成会话密钥,并生成验证成功信息,如果不同,则判断验证次数是否超过预设的验证次数门限值,如果超过,则提示出错信息,否则,修改所述服务端的当前动态因子,并触发所述服务端的生成模块根据所述修改后的动态因子重新生成第二动态口令;
存储模块,用于在收到所述验证模块的通知后,存储所述服务端的当前动态因子;
发送模块,用于发送所述服务端的加密模块得到的第一数据包和所述验证模块得到的验证信息给所述客户端;
所述动态口令生成装置包括:
生成模块,用于根据所述动态口令生成装置的当前动态因子生成第一动态口令;
显示模块,用于将所述动态口令生成装置的生成模块生成的第一动态口令显示在屏幕上,供用户查看;
存储模块,用于存储所述动态口令生成装置的当前动态因子。
15.根据权利要求14所述的协商密钥的系统,其特征在于,
所述客户端的加密模块还用于对所述客户端得到的会话密钥采用单向散列算法加密,得到第三散列值;
所述客户端的发送模块还用于将所述第三散列值发送给所述服务端请求验证;
所述服务端的接收模块还用于接收所述客户端的发送模块发送的第三散列值;
所述服务端的加密模块还用于采用与所述客户端相同的单向散列算法对所述服务端生成的会话密钥加密,得到第四散列值;
相应地,所述服务端的验证模块还用于验证所述第三散列值与第四散列值是否相同,如果不同,则所述服务端的发送模块还用于向所述客户端提示出错信息;如果相同,则所述服务端的发送模块还用于向所述客户端发送验证成功信息;
相应地,所述客户端的接收模块还用于接收所述验证成功信息;
所述客户端的加密模块还用于用所述客户端的解密模块得到的所述会话密钥,对待传输给所述服务端的文件进行加密,得到第二数据包;
所述客户端的发送模块还用于将所述第二数据包发送给所述服务端;
所述服务端的接收模块还用于接收所述客户端的发送模块发送的所述第二数据包;
所述服务端还包括:
解密模块,用于用所述服务端的生成模块得到的所述会话密钥对所述第二数据包进行解密,得到所述文件。
16.根据权利要求14所述的协商密钥的系统,其特征在于,
所述客户端的加密模块还用于对所述客户端的得到的会话密钥采用单向散列算法加密,得到第一散列值;
所述客户端的发送模块还用于将所述第一散列值发送给所述服务端请求验证;
所述服务端的接收模块还用于接收所述客户端的发送模块发送的第一散列值;
所述服务端的加密模块还用于采用与所述客户端相同的单向散列算法对所述服务端生成的会话密钥加密,得到第二散列值;
相应地,所述服务端的验证模块还用于验证所述第一散列值与第二散列值是否相同,如果不同,则所述服务端的发送模块还用于向所述客户端提示出错信息;如果相同,则所述服务端的发送模块还用于向所述客户端发送验证成功信息;
相应地,所述客户端的接收模块还用于接收所述验证成功信息;
所述客户端的发送模块还用于发送获取加密文件的申请给所述服务端;
所述服务端的接收模块还用于接收所述客户端的发送模块发送的所述申请;
所述服务端的加密模块还用于用所述服务端的生成模块得到的所述会话密钥对文件进行加密,得到所述加密文件;
所述服务端的发送模块还用于发送所述加密文件给所述客户端;
所述客户端的接收模块还用于接收所述服务端的发送模块发送的所述加密文件;
所述客户端的解密模块还用于用所述会话密钥对所述加密文件进行解密,得到所述文件。
17.根据权利要求14所述的协商密钥的系统,其特征在于,所述动态口令生成装置的生成模块具体包括:
接收单元,用于接收用户发送的动态口令生成命令;
生成单元,用于在所述接收单元收到所述动态口令生成命令后,根据所述动态口令生成装置的当前动态因子生成动态口令。
18.根据权利要求17所述的协商密钥的系统,其特征在于,所述接收单元具体为按钮、指纹扫描单元、声控开关、人体体温感应单元、压力感应单元或光电感应单元。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2008102220759A CN101420297B (zh) | 2008-09-08 | 2008-09-08 | 协商密钥的方法和系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2008102220759A CN101420297B (zh) | 2008-09-08 | 2008-09-08 | 协商密钥的方法和系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101420297A CN101420297A (zh) | 2009-04-29 |
CN101420297B true CN101420297B (zh) | 2010-11-03 |
Family
ID=40630923
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2008102220759A Active CN101420297B (zh) | 2008-09-08 | 2008-09-08 | 协商密钥的方法和系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN101420297B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108400870A (zh) * | 2018-01-30 | 2018-08-14 | 浙江易云物联科技有限公司 | 动态双密钥算法 |
Families Citing this family (17)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102045210B (zh) * | 2009-10-10 | 2014-05-28 | 中兴通讯股份有限公司 | 一种支持合法监听的端到端会话密钥协商方法和系统 |
CN101777158B (zh) * | 2010-01-13 | 2012-05-23 | 飞天诚信科技股份有限公司 | 一种安全交易的方法和系统 |
CN102833259B (zh) * | 2012-09-03 | 2015-08-05 | 中科华核电技术研究院有限公司 | 系统间数据防篡改检测方法、校验码生成方法及装置 |
US8997179B2 (en) * | 2012-09-26 | 2015-03-31 | Empire Technology Development Llc | Shared secret identification for secure communication |
CN102983974B (zh) * | 2012-11-12 | 2016-02-24 | 天地融科技股份有限公司 | 动态口令显示系统 |
CN104104687B (zh) * | 2014-07-28 | 2017-02-22 | 飞天诚信科技股份有限公司 | 一种安全登录的方法和系统 |
CN104135493A (zh) * | 2014-08-22 | 2014-11-05 | 上海众人科技有限公司 | 一种文件压缩方法及其系统 |
CN105741116B (zh) * | 2014-12-11 | 2019-08-13 | 北京握奇智能科技有限公司 | 一种快捷支付方法、装置及系统 |
CN104835497A (zh) * | 2015-04-14 | 2015-08-12 | 时代亿宝(北京)科技有限公司 | 一种基于动态口令的声纹打卡系统及方法 |
CN105721443B (zh) * | 2016-01-25 | 2019-05-10 | 飞天诚信科技股份有限公司 | 一种链路会话密钥协商方法及装置 |
CN105827652B (zh) * | 2016-05-24 | 2019-06-18 | 飞天诚信科技股份有限公司 | 一种认证动态口令的方法和设备 |
CN109802834A (zh) * | 2017-11-16 | 2019-05-24 | 航天信息股份有限公司 | 一种对业务层数据进行加密、解密的方法及系统 |
CN108509787B (zh) * | 2018-03-14 | 2022-06-10 | 深圳市中易通安全芯科技有限公司 | 一种程序认证方法 |
CN109150891B (zh) * | 2018-09-05 | 2020-03-17 | 北京深思数盾科技股份有限公司 | 一种验证方法、装置和信息安全设备 |
CN110460446B (zh) * | 2019-07-10 | 2022-03-18 | 北京信安世纪科技股份有限公司 | 消息认证码的获取方法及装置 |
CN112491787B (zh) * | 2020-10-18 | 2022-12-27 | 苏州浪潮智能科技有限公司 | 一种用户数据的安全管理的方法和设备 |
CN113162928B (zh) * | 2021-04-19 | 2023-03-31 | 广州小鹏汽车科技有限公司 | 通信方法、装置、ecu、车辆及存储介质 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1731721A (zh) * | 2004-08-22 | 2006-02-08 | 西安海星现代科技股份有限公司 | 动态口令生成方法 |
CN101051908A (zh) * | 2007-05-21 | 2007-10-10 | 北京飞天诚信科技有限公司 | 动态密码认证系统及方法 |
-
2008
- 2008-09-08 CN CN2008102220759A patent/CN101420297B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1731721A (zh) * | 2004-08-22 | 2006-02-08 | 西安海星现代科技股份有限公司 | 动态口令生成方法 |
CN101051908A (zh) * | 2007-05-21 | 2007-10-10 | 北京飞天诚信科技有限公司 | 动态密码认证系统及方法 |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108400870A (zh) * | 2018-01-30 | 2018-08-14 | 浙江易云物联科技有限公司 | 动态双密钥算法 |
Also Published As
Publication number | Publication date |
---|---|
CN101420297A (zh) | 2009-04-29 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101420297B (zh) | 协商密钥的方法和系统 | |
CN101420298B (zh) | 协商密钥的方法和系统 | |
Wang et al. | Dependable and secure sensor data storage with dynamic integrity assurance | |
CN104796265B (zh) | 一种基于蓝牙通信接入的物联网身份认证方法 | |
KR102124413B1 (ko) | 아이디 기반 키 관리 시스템 및 방법 | |
CN101510877B (zh) | 单点登录方法和系统、通信装置 | |
CN101005361B (zh) | 一种服务器端软件保护方法及系统 | |
KR101753859B1 (ko) | 서버 및 이에 의한 스마트홈 환경의 관리 방법, 스마트홈 환경의 가입 방법 및 스마트 기기와의 통신 세션 연결 방법 | |
CN104158827B (zh) | 密文数据共享方法、装置、查询服务器和上传数据客户端 | |
CN103248479A (zh) | 云存储安全系统、数据保护以及共享方法 | |
JP2009529832A (ja) | 発見不可能、即ち、ブラック・データを使用するセキュアなデータ通信 | |
CN113067699B (zh) | 基于量子密钥的数据共享方法、装置和计算机设备 | |
CN111404664B (zh) | 基于秘密共享和多个移动设备的量子保密通信身份认证系统和方法 | |
CN101815091A (zh) | 密码提供设备、密码认证系统和密码认证方法 | |
CN102946392A (zh) | 一种url数据加密传输方法及系统 | |
CN102664898A (zh) | 一种基于指纹识别的加密传输方法、装置及系统 | |
CN104243494B (zh) | 一种数据处理方法 | |
WO2015024426A1 (zh) | 身份认证系统、装置、方法以及身份认证请求装置 | |
CN110247881A (zh) | 基于可穿戴设备的身份认证方法及系统 | |
CN101621794A (zh) | 一种无线应用服务系统的安全认证实现方法 | |
CN104754571A (zh) | 用于多媒体数据传输的用户认证实现方法、装置及其系统 | |
WO2005088892A1 (en) | A method of virtual challenge response authentication | |
CN111080299B (zh) | 一种交易信息的防抵赖方法及客户端、服务器 | |
CN109951513A (zh) | 基于量子密钥卡的抗量子计算智能家庭量子云存储方法和系统 | |
CN102404337A (zh) | 数据加密方法和装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
C56 | Change in the name or address of the patentee |
Owner name: FEITIAN CHENGXIN TECHNOLOGY CO., LTD. Free format text: FORMER NAME: BEIJING FEITIAN CHENGXIN SCIENCE + TECHNOLOGY CO. LTD. |
|
CP03 | Change of name, title or address |
Address after: 100085 Beijing city Haidian District Xueqing Road No. 9 Ebizal building B block 17 layer Patentee after: Feitian Technologies Co., Ltd. Address before: 100083, Haidian District, Xueyuan Road, No. 40 research, 7 floor, 5 floor, Beijing Patentee before: Beijing Feitian Chengxin Science & Technology Co., Ltd. |