发明内容
为了提高密钥协商的安全性,本发明提供了一种协商密钥的方法和系统。
一方面,本发明提供了一种协商密钥的方法,所述方法包括:
客户端接收用户输入的动态口令生成装置的标识信息和第一动态口令,对所述第一动态口令采用单向散列算法进行加密,将加密后的第一动态口令和所述标识信息发送给服务端请求验证,所述第一动态口令是所述动态口令生成装置根据当前动态因子生成的;
所述服务端收到所述标识信息和所述加密后的第一动态口令后,以所述标识信息为索引,查询与所述动态口令生成装置对应的动态因子,将所述查询到的动态因子作为当前动态因子,根据所述服务端的当前动态因子生成第二动态口令,并对所述第二动态口令采用所述单向散列算法进行加密;
所述服务端验证所述加密后的第二动态口令与收到的加密后的第一动态口令是否相同;
如果相同,则所述服务端保存自身的当前动态因子并发送验证成功信息给所述客户端,所述客户端收到后生成一个随机数,将所述随机数作为会话密钥,用所述第一动态口令对所述会话密钥进行加密,得到第一数据包,然后将所述第一数据包发送给所述服务端,所述服务端接收所述第一数据包,用所述第二动态口令对所述第一数据包进行解密,得到所述会话密钥;
如果不同,则所述服务端判断验证次数是否超过预设的验证次数门限值,如果超过,则提示出错信息,否则,修改所述服务端的当前动态因子,并根据修改后的动态因子重新生成第二动态口令继续验证,直到验证成功并得到会话密钥或超过所述验证次数门限值为止。
所述客户端得到所述会话密钥之后,还包括:
所述客户端用所述会话密钥对待传输给所述服务端的文件进行加密,得到第二数据包,将所述第二数据包发送给所述服务端,所述服务端接收所述第二数据包;
所述服务端得到所述会话密钥之后,还包括:
所述服务端用所述会话密钥对所述第二数据包进行解密,得到所述文件。
所述服务端得到所述会话密钥之后,还包括:
所述客户端向所述服务端发送获取加密文件的申请;
所述服务端收到所述申请后,用所述会话密钥对文件进行加密,得到加密文件,并将所述加密文件发送给所述客户端;
所述客户端接收所述加密文件,用所述会话密钥对所述加密文件进行解密,得到所述文件。
所述动态因子是共享密钥、认证次数或时间。
另一方面,本发明还提供了一种协商密钥的方法,所述方法包括:
客户端接收用户输入的动态口令生成装置的标识信息和第一动态口令,对所述第一动态口令采用单向散列算法进行加密,将加密后的第一动态口令和所述标识信息发送给服务端请求验证,所述第一动态口令是所述动态口令生成装置根据当前动态因子生成的;
所述服务端收到所述标识信息和所述加密后的第一动态口令后,以所述标识信息为索引,查询与所述动态口令生成装置对应的动态因子,将所述查询到的动态因子作为当前动态因子,根据所述服务端的当前动态因子生成第二动态口令,并对所述第二动态口令采用所述单向散列算法进行加密;
所述服务端验证所述加密后的第二动态口令与收到的加密后的第一动态口令是否相同;
如果相同,则所述服务端保存自身的当前动态因子并生成一个随机数,将所述随机数作为会话密钥,用所述第二动态口令对所述会话密钥进行加密,得到第一数据包,并将所述第一数据包与验证成功信息一起发送给所述客户端,所述客户端接收所述第一数据包和验证成功信息,用所述第一动态口令对所述第一数据包进行解密,得到所述会话密钥;
如果不同,则所述服务端判断验证次数是否超过预设的验证次数门限值,如果超过,则提示出错信息,否则,修改所述服务端的当前动态因子,并根据修改后的动态因子重新生成第二动态口令继续验证,直到验证成功并得到会话密钥或超过所述验证次数门限值为止。
所述客户端得到所述会话密钥之后,还包括:
所述客户端用所述会话密钥对待传输给所述服务端的文件进行加密,得到第二数据包,将所述第二数据包发送给所述服务端;
所述服务端接收所述第二数据包,用所述会话密钥对所述第二数据包进行解密,得到所述文件。
所述服务端将所述随机数作为会话密钥之后,还包括:
所述客户端向所述服务端发送获取加密文件的申请;
所述服务端收到所述申请后,用所述会话密钥对文件进行加密,得到加密文件,并将所述加密文件发送给所述客户端;
所述客户端接收所述加密文件,用得到的所述会话密钥对所述加密文件进行解密,得到所述文件。
所述动态因子是共享密钥、认证次数或时间。
再一方面,本发明还提供了一种协商密钥的系统,所述系统包括客户端、服务端和动态口令生成装置;
所述客户端包括:
接收模块,用于接收用户输入的第一动态口令和所述动态口令生成装置的标识信息,所述第一动态口令是所述动态口令生成装置根据当前动态因子生成的,还用于接收所述服务端发送的验证信息;
生成模块,用于在所述接收模块收到所述服务端发送的验证成功信息后,生成一个随机数,将所述随机数作为会话密钥;
加密模块,用于对所述接收模块收到的第一动态口令采用单向散列算法进行加密,并用所述第一动态口令对所述生成模块得到的会话密钥进行加密,得到第一数据包;
发送模块,用于将所述接收模块收到的所述动态口令生成装置的标识信息和所述加密模块加密后的第一动态口令,发送给所述服务端请求验证,还用于发送所述加密模块得到的第一数据包给所述服务端;
所述服务端包括:
接收模块,用于接收所述客户端发送的所述动态口令生成装置的标识信息和所述加密后的第一动态口令,还用于接收所述客户端发送的第一数据包;
生成模块,用于以所述服务端的接收模块收到的所述标识信息为索引,查找与所述动态口令生成装置对应的动态因子,将所述查找到的动态因子作为当前动态因子,根据所述当前动态因子生成第二动态口令;
加密模块,用于对所述服务端的生成模块生成的第二动态口令,采用单向散列算法进行加密;
验证模块,用于验证所述服务端的接收模块收到的加密后的第一动态口令和所述服务端的加密模块得到的加密后的第二动态口令是否相同,如果相同,则通知存储所述服务端的当前动态因子并将验证成功信息发送给所述客户端,如果不同,则判断验证次数是否超过预设的验证次数门限值,如果超过,则提示出错信息,否则,修改所述服务端的当前动态因子,并触发所述服务端的生成模块根据所述修改后的动态因子重新生成第二动态口令;
存储模块,用于在收到所述验证模块的通知后,存储所述服务端的当前动态因子;
发送模块,用于发送所述验证模块得到的验证信息给所述客户端;
解密模块,用于用所述服务端的生成模块生成的第二动态口令,对所述服务端的接收模块收到的第一数据包进行解密,得到所述会话密钥;
所述动态口令生成装置包括:
生成模块,用于根据所述动态口令生成装置的当前动态因子生成第一动态口令;
显示模块,用于将所述动态口令生成装置的生成模块生成的第一动态口令显示在屏幕上,供用户查看;
存储模块,用于存储所述动态口令生成装置的当前动态因子。
所述客户端的加密模块还用于用所述会话密钥对待传输给所述服务端的文件进行加密,得到第二数据包;
所述客户端的发送模块还用于将所述第二数据包发送给所述服务端;
所述服务端的接收模块还用于接收所述客户端的发送模块发送的所述第二数据包;
所述服务端的解密模块还用于用所述会话密钥对所述第二数据包进行解密,得到所述文件。
所述客户端的发送模块还用于发送获取加密文件的申请给所述服务端;
所述服务端的接收模块还用于接收所述客户端的发送模块发送的所述申请;
所述服务端的加密模块还用于用所述会话密钥对文件进行加密,得到所述加密文件;
所述服务端的发送模块还用于发送所述加密文件给所述客户端;
所述客户端的接收模块还用于接收所述服务端的发送模块发送的所述加密文件;
所述客户端还包括:
解密模块,用于用所述会话密钥对所述加密文件进行解密,得到所述文件。
所述动态口令生成装置的生成模块具体包括:
接收单元,用于接收用户发送的动态口令生成命令;
生成单元,用于在所述接收单元收到所述动态口令生成命令后,根据所述动态口令生成装置的当前动态因子生成第一动态口令。
所述接收单元具体为按钮、指纹扫描单元、声控开关、人体体温感应单元、压力感应单元和光电感应单元。
又一方面,本发明还提供了一种协商密钥的系统,所述系统包括客户端、服务端和动态口令生成装置;
所述客户端包括:
接收模块,用于接收用户输入的第一动态口令和所述动态口令生成装置的标识信息,所述第一动态口令是所述动态口令生成装置根据当前动态因子生成的,还用于接收所述服务端发送的第一数据包和验证信息;
加密模块,用于对所述接收模块收到的第一动态口令采用单向散列算法进行加密;
发送模块,用于将所述接收模块收到的所述动态口令生成装置的标识信息和所述加密模块加密后的第一动态口令,发送给所述服务端请求验证;
解密模块,用于用所述客户端的接收模块接收的第一动态口令,对所述客户端的接收模块收到的第一数据包进行解密,得到会话密钥;
所述服务端包括:
接收模块,用于接收所述客户端发送的所述动态口令生成装置的标识信息和所述加密后的第一动态口令;
生成模块,用于以所述服务端的接收模块收到的所述标识信息为索引,查找与所述动态口令生成装置对应的动态因子,将所述所述查找出的动态因子作为当前动态因子,根据所述服务端的当前动态因子生成第二动态口令,还用于在所述服务端验证成功后,生成一个随机数,将所述随机数作为会话密钥;
加密模块,用于对所述服务端的生成模块生成的第二动态口令,采用单向散列算法进行加密,并用所述第二动态口令对所述会话密钥进行加密,得到第一数据包;
验证模块,用于验证所述服务端的接收模块收到的加密后的第一动态口令和所述服务端的加密模块得到的加密后的第二动态口令是否相同,如果相同,则通知存储所述服务端的当前动态因子以及通知所述服务端的生成模块生成会话密钥,并生成验证成功信息,如果不同,则判断验证次数是否超过预设的验证次数门限值,如果超过,则提示出错信息,否则,修改所述服务端的当前动态因子,并触发所述服务端的生成模块根据所述修改后的动态因子重新生成第二动态口令;
存储模块,用于在收到所述验证模块的通知后,存储所述服务端的当前动态因子;
发送模块,用于发送所述服务端的加密模块得到的第一数据包和所述验证模块得到的验证信息给所述客户端;
所述动态口令生成装置包括:
生成模块,用于根据所述动态口令生成装置的当前动态因子生成第一动态口令;
显示模块,用于将所述动态口令生成装置的生成模块生成的第一动态口令显示在屏幕上,供用户查看;
存储模块,用于存储所述动态口令生成装置的当前动态因子。
所述客户端的加密模块还用于用所述客户端的解密模块得到的所述会话密钥,对待传输给所述服务端的文件进行加密,得到第二数据包;
所述客户端的发送模块还用于将所述第二数据包发送给所述服务端;
所述服务端的接收模块还用于接收所述客户端的发送模块发送的所述第二数据包;
所述服务端还包括:
解密模块,用于用所述服务端的生成模块得到的所述会话密钥对所述第二数据包进行解密,得到所述文件。
所述客户端的发送模块还用于发送获取加密文件的申请给所述服务端;
所述服务端的接收模块还用于接收所述客户端的发送模块发送的所述申请;
所述服务端的加密模块还用于用所述服务端的生成模块得到的所述会话密钥对文件进行加密,得到所述加密文件;
所述服务端的发送模块还用于发送所述加密文件给所述客户端;
所述客户端的接收模块还用于接收所述服务端的发送模块发送的所述加密文件;
所述客户端的解密模块还用于用所述会话密钥对所述加密文件进行解密,得到所述文件。
所述动态口令生成装置的生成模块具体包括:
接收单元,用于接收用户发送的动态口令生成命令;
生成单元,用于在所述接收单元收到所述动态口令生成命令后,根据所述动态口令生成装置的当前动态因子生成动态口令。
所述接收单元具体为按钮、指纹扫描单元、声控开关、人体体温感应单元、压力感应单元或光电感应单元。
本发明的有益效果在于:本发明提供了一种简单、高效、保证安全的协商密钥的方法,从而提高了协商密钥的效率,保证了协商密钥的安全性。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明实施方式作进一步地详细描述。
实施例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可以具体为按钮、指纹扫描单元、声控开关、人体体温感应单元、压力感应单元或光电感应单元。
本发明实施例的有益效果在于:本发明实施例提供了一种简单、高效、保证安全的协商密钥的方法,从而提高了协商密钥的效率,保证了协商密钥的安全性。
以上所述仅为本发明的较佳实施例,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。