鉴权系统及其鉴权信息的加密、验证方法与装置与流程

文档序号:12838851阅读:262来源:国知局
鉴权系统及其鉴权信息的加密、验证方法与装置与流程

本发明涉及鉴权与加密解密技术领域,特别涉及一种鉴权系统及其鉴权信息的加密、验证方法与装置。



背景技术:

现行加密技术主要有3种,第一种是对称加密技术,其实施简单,破解难度较低。第二种是非对称加密技术,破解难度较大,但是实施起来较困难。第三种属于散列算法,如md5和base64等算法,实施简单,但是当前对这种算法已经有了一些破解方式。

现有技术一:对称加密算法/非对称加密

不管是对称加密或者非对称加密,都围绕着密钥(key)的生成做文章,但是很少有人考虑到如果key遗失或者被窃取怎么办,如下分析:

一种方式,如图1所示,客户端加密明文,加密使用的key放在本地,黑客可以采用读取文件、数据库、反编译等方式获取客户端存放的key,这样一来,密文反推成明文就非常简单了。

另一种方式,如图2所示,服务器端加密明文,加密使用的key放在服务器,黑客不能从客户端拿到key了,但是这种方式有两种缺点:黑客可以在拦截网络上传递的明文,使加密形同虚设,另一个缺点,黑客可以攻破服务器,然后采用读取文件、读数据库、反编译等方式获取服务器端存放的key,这样一来,密文反推成明文也非常简单了。

所以,现有的对称/非对称加密算法,key的存放是一个非常难以解决的问题。

现有技术二:散列算法

在信息安全领域中应用的散列算法,基于一个理念:只加密不解密。所以需要满足的关键特性:

第一是单向性(one-way),密码学上的hash又被称为“消息摘要(messagedigest)”,就是要求能方便的将“消息”进行“摘要”,但在“摘要”中无法得到比“摘要”本身更多的关于“消息”的信息。

第二是抗冲突性(collision-resistant),即在统计上无法产生2个散列值相同的映射。第三是映射分布均匀性和差分分布均匀性,散列结果中,为0的bit和为1的bit,其总数应该大致相等;输入中一个bit的变化,散列结果中将有一半以上的bit改变,这又叫做“雪崩效应(avalancheeffect)”。

常见散列函数(hash函数)有:

·md5:是rsa数据安全公司开发的一种单向散列算法,md5被广泛使用,可以用来把不同长度的数据块进行暗码运算成一个128位的数值。

·sha:这是一种较新的散列算法,可以对任意长度的数据运算生成一个160位的数值。

·mac:消息认证代码,是一种使用密钥的单向函数,可以用它们在系统上或用户之间认证文件或消息,常见的是hmac(用于消息认证的密钥散列算法)。

·crc:循环冗余校验码,crc校验由于实现简单,检错能力强,被广泛使用在各种数据校验应用中。占用系统资源少,用软硬件均能实现,是进行数据传输差错检测地一种很好的手段(crc并不是严格意义上的散列算法,但它的作用与散列算法大致相同,所以归于此类)。

md5一度被广泛应用于安全领域。但是由于md5的弱点被不断发现以及计算机能力不断的提升,现在已经可以构造两个具有相同md5的信息,使本算法不再适合当前的安全环境。目前,md5计算广泛应用于错误检查。例如在一些bittorrent下载中,软件通过计算md5和检验下载到的碎片的完整性。

sha-1在许多安全协议中广为使用,包括tls和ssl、pgp、ssh、s/mime和ipsec,曾被视为是md5(更早之前被广为使用的散列函数)的后继者。但sha-1的安全性如今被密码学家严重质疑。微软是第一个宣布了sha-1弃用计划,在2016年之后windows和ie将不再信任sha-1证书。mozilla也做了同样的决定。

目前sha-2被认为是绝对安全,尚未发现可能的碰撞攻击。但性能较差,对系统的要求较高。

一般来说,普通的加密算法(不管是上述哪种方式)对于用户鉴权系统中鉴权信息加密与鉴权(例如网络登录)没有很好的解决方式,若采用破解难度高的算法,则对通信双方的计算机系统有较高要求,而且对网络环境的要求也高,这就形成了性能与加密强度之间的一个矛盾。



技术实现要素:

本发明要解决的问题是现有技术难以同时兼顾鉴权系统中对于鉴权信息加密的密钥容易被泄露而破解、为增强安全性所采取措施而导致实施难度高以及对通信双方的计算性能要求高的问题。

为解决上述问题,本发明技术方案提供一种鉴权信息的加密方法,包括:获取鉴权信息,所述鉴权信息包括用户信息及其相应的验证密码;将所述用户信息与所述验证密码相结合形成第一混合字符串,并以第一散列算法将所述第一混合字符串生成第一密钥;将所述验证密码与所述用户信息相结合形成第二混合字符串,并以第二散列算法将所述第二混合字符串生成第二密钥;以所述第一密钥对所述用户信息进行加密形成第一密文,以所述第二密钥对所述验证密码进行加密形成第二密文。

可选的,所述第一散列算法不同于所述第二散列算法。

可选的,所述第一混合字符串不同于所述第二混合字符串。

可选的,所述第一散列算法和第二散列算法为hashcode方法、sdbmhash、rshash、jshash、elfhash、bkdrhash和djbhash方法中的其中一种。

可选的,所述第一混合字符串和第二混合字符串通过字符串拼接或字符混编的方式形成。

为解决上述问题,本发明技术方案还提供一种鉴权信息的验证方法,包括:接收由上述的鉴权信息的加密方法所形成的第一密文和第二密文;将接收到的所述第一密文、第二密文与预先存储的密文对进行配对,并根据配对 成功与否的情况返回相应的验证结果。

为解决上述问题,本发明技术方案还提供一种鉴权信息的加密装置,包括:第一获取单元,适于获取鉴权信息,所述鉴权信息包括用户信息及其相应的验证密码;密钥生成单元,适于将所述用户信息与所述验证密码相结合形成第一混合字符串,并以第一散列算法将所述第一混合字符串生成第一密钥;所述密钥生成单元还适于将所述验证密码与所述用户信息相结合形成第二混合字符串,并以第二散列算法将所述第二混合字符串生成第二密钥;加密单元,适于以所述第一密钥对所述用户信息进行加密形成第一密文,以及以所述第二密钥对所述验证密码进行加密形成第二密文。

为解决上述问题,本发明技术方案还提供一种鉴权信息的验证装置,包括:第二获取单元,适于获取由上述的鉴权信息的加密方法所形成的第一密文和第二密文;配对单元,适于将获取的所述第一密文、第二密文与预先存储的密文对进行配对,并根据配对成功与否的情况返回相应的验证结果。

为解决上述问题,本发明技术方案还提供一种鉴权系统,包括:客户端和服务器端;所述客户端包括第一通信装置和上述的鉴权信息的加密装置,所述鉴权信息的加密装置在用户登录时将用户输入的鉴权信息进行加密后形成第一密文和第二密文,由所述第一通信装置将所述第一密文和第二密文发送至所述服务器端;所述服务器端包括第二通信装置、数据库以及上述的鉴权信息的验证装置,所述数据库适于存储各个用户注册时上传的密文对,所述密文对由所述鉴权信息的加密装置形成的第一预存密文和第二预存密文构成,所述第二通信装置接收到的所述第一预存密文和第二预存密文存入所述数据库,所述第二通信装置接收到的所述第一密文和第二密文由所述鉴权信息的验证装置进行鉴权处理,所述鉴权处理后返回的验证结果由所述第二通信装置反馈至所述客户端。

可选的,所述客户端以明文的形式显示所述用户信息,以暗文的形式显示所述验证密码。

与现有技术相比,本发明的技术方案至少具有以下优点:

通过在客户端将针对用户的鉴权信息中所包含的用户信息与验证密码相 结合分别形成第一混合字符串、第二混合字符串,并以散列算法将第一混合字符串、第二混合字符串生成第一密钥、第二密钥,以第一密钥对用户信息进行加密形成第一密文,以第二密钥对验证密码进行加密形成第二密文;在服务器端将收到的第一密文、第二密文与预先存储的密文对进行配对,并根据配对成功与否的情况返回相应的验证结果,由于通过上述方式生成的密钥,无论是在客户端还是在服务器端都不需要进行保存,所以难以被获取并进而被破解,因此能够提高加密鉴权信息的破解难度,从而提高了鉴权系统的安全性,并且不会增加实施的难度,对于鉴权系统的通信双方的计算性能也没有太高要求,从而降低了成本。

附图说明

图1是现有技术中通过客户端加密明文的示意图;

图2是现有技术中通过服务器端加密明文的示意图;

图3是本发明实施例提供的鉴权系统的结构示意图;

图4是本发明实施例的鉴权系统中针对鉴权信息的加密与鉴权的示意图。

具体实施方式

现有技术中普通的加密算法对于用户鉴权系统中鉴权信息的加密与鉴权,(例如网络登录)没有很好的解决方式,主要是由于存在以下问题难以被解决:首先是key容易被泄露的问题,无论是存放与客户端还是服务器端,都有可能被获取到,且一旦被获取就存在被破解的可能,从而使系统安全性较差;其次是实施难度高的问题,因为一旦涉及采用非对称加密、证书等方式提高安全性,势必会增加实施难度;最后是对通信双方的计算性能要求高的问题,即便抛开实施难度不提,现有技术中为了提高安全性所采用的措施都无法避免地对客户端或服务器端的计算性能提出了更高的要求,这就使系统成本增加,不利于实际应用。

此外,还有一些所谓“加壳”的方式对key进行加密,但实际上这是循环递归的。即,如果要对key进行加密,那么意味着必须要存放加密算法的另一套key(记为key’),如果key’被泄露,那么key也会被破解,那么真正的密文也会被破解,因此同样无法解决上述问题。

对此,本申请的发明人认为,本领域技术人员所采用的一般的数据加密方式有两个显著特点:1)要对明文加密,还要对密文解密;2)加密的数据都是一段明文。为此,本发明技术方案提供的加密方式针对上述两种情况做了不同的迂回:1)本发明技术方案采取的方式能够做到“只加密,不解密”,因为解密是不必要的;2)本发明技术方案涉及的加密数据一定是有两段数据,其中一段是明文(用户名之类)的,另一段是用户心里记得的密码。

因此,本发明技术方案的技术关键点之一在于key的生成方式。一般的key要么是存在文件或数据库里,要么硬编码到代码里,只要能获取出来,就能被破解;而本发明技术方案中生成的key无论是在客户端还是在服务器端都不需要进行保存,即便也将其存放在同样的位置(客户端本地),但即使被取出来也较难被反推出密码。

为使本发明的上述目的、特征和优点能够更为明显易懂,下面结合附图对本发明的具体实施例作详细的说明。

如图3所示,本发明实施例提供的鉴权系统包括:客户端1和服务器端2;

所述客户端1包括第一通信装置20和鉴权信息的加密装置10,所述鉴权信息的加密装置10则可以包括:第一获取单元101,适于获取鉴权信息,所述鉴权信息包括用户信息(例如用户名,通常可以是字母、数字、符号或字母、数字、符号相组合的形式)及其相应的验证密码(具体可以是指与用户名相对应的密码);密钥生成单元102,适于将所述用户信息与所述验证密码相结合形成第一混合字符串,并以第一散列算法将所述第一混合字符串生成第一密钥;所述密钥生成单元102还适于将所述验证密码与所述用户信息相结合形成第二混合字符串,并以第二散列算法将所述第二混合字符串生成第二密钥;加密单元103,适于以所述第一密钥对所述用户信息进行加密形成第一密文,以及以所述第二密钥对所述验证密码进行加密形成第二密文;在具体实施时,所述客户端1通过所述鉴权信息的加密装置10,可以在用户登录时将用户输入的鉴权信息进行加密后形成第一密文和第二密文,由所述第一通信装置20将所述第一密文和第二密文发送至所述服务器端2;

所述服务器端2包括第二通信装置40、数据库50以及鉴权信息的验证装 置30,所述鉴权信息的验证装置30可以包括:第二获取单元301,适于获取由上述鉴权信息的加密装置10所形成的且由所述第一通信装置所传送的第一密文和第二密文;配对单元302,适于将获取的所述第一密文、第二密文与预先存储的密文对进行配对,并根据配对成功与否的情况返回相应的验证结果;所述数据库50适于存储各个用户注册时上传的密文对,所述密文对由所述鉴权信息的加密装置10于用户注册时所形成的第一预存密文和第二预存密文构成,所述第二通信装置40接收到的所述第一预存密文和第二预存密文会被存入所述数据库50,所述第二通信装置40接收到的所述第一密文和第二密文由所述鉴权信息的验证装置30进行鉴权处理,所述鉴权处理后返回的验证结果由所述第二通信装置40再反馈至所述客户端1。

需要说明的是,在本实施例中,出于系统安全性的考虑,所述密钥生成单元102在用户注册时生成第一密钥和第二密钥,使所述加密单元103并根据第一密钥对用户注册时提供的用户名加密形成第一预存密文以及根据第二密钥对用户注册时设定的验证密码加密形成第二预存密文之后,便会将生成第一密钥和第二密钥删除,如此能有效避免被非法从客户端获取到key,所述鉴权信息也就不能被破解。

当然,在其他实施例中,所述密钥生成单元102也可以在用户注册时生成第一密钥和第二密钥后,将生成的第一密钥和第二密钥保存于客户端1,而在用户以后登录时,加密单元103可以根据保存于客户端1的第一密钥和第二密钥,分别生成相应的第一密文和第二密文,如此所述第一密钥和第二密钥并不需要在每次获取到用户名及其相应的密码时都生成一次,而仅需要在用户注册时生成一次即可,一定程度上减少了后续登陆时客户端所产生的计算量,从而提高系统性能;然而,这种方式会给系统安全性带来一定风险,不过相对于现有技术,即便是将第一密钥和第二密钥保存于客户端,且被非法获取,由于第一密钥和第二密钥是用散列算法处理过的短数字,这个数字重复的几率是比较大的,也较难被反推出对应的用户名和密码,所以也很难被破解。

本实施例中,所述客户端以明文的形式显示所述用户信息,以暗文的形式显示所述验证密码。

在实际实施时,所述鉴权信息的加密装置10可以是以客户端应用程序的形式予以实施,类似地,所述鉴权信息的验证装置30也可以是以服务器端应用程序的形式予以实施。当然,所述鉴权信息的加密装置10和鉴权信息的验证装置30不局限于纯软件的实施方式,也可以是软硬件相结合的实施方式。

下面结合图4对本发明实施例的鉴权系统中针对鉴权信息的加密与鉴权过程进行说明。

需要指出的是,本发明实施例的关键点之一在于生成key的方式与现有技术存在明显区别。对于一个登陆系统,用户名和密码一般是必须具备的两个要素。排除用户自己泄露密码或者黑客采用物理手段获取到密码,密码只有用户知道,而且应用系统本身也不应该保存密码,而用户名可以在一定范围内公开。

本实施例中,通过把用户名与密码相结合(比如字符串拼接、字符混编等)的方式,利用简单的hash码生成算法,比如java里的hashcode方法,复杂一点的可以采用sdbmhash,rshash,jshash,elfhash,bkdrhash,djbhash等等,总而言之把这段混合字符串生成一个短整数。这个短整数就是对称加密算法里的key(记为key1)。然后用这个key1对用户名进行加密。

本实施例中以java里的hashcode方法为例,此时所述第一散列算法即为图4所示的hashcode1,将所述第一混合字符串生成第一密钥即为key1。

再次,使用密码与用户名相结合(比如字符串拼接、字符混编等)的方式,使用上述类似的hash算法(可以不一样,也可以相同)生成另一个key(记为key2),在本实施例中,注意此处密码与用户名相结合的方式与上述的用户名与密码相结合的方式必须不一样,这样保证key1和key2很大的概率很不相同。然后用key2对密码进行加密。

本实施例中以所述第二散列算法与所述第一散列算法相同为例进行说明,即此时所述第二散列算法为图4所示的hashcode2,将所述第二混合字符串生成第二密钥即为key2。

客户端应用程序会把生成的key1和key2暂时放在客户端本地,在通过key1加密用户名,通过key2加密密码,各自形成相应的密文后,便将key1 和key2删除,即客户端本地并不会对key1和key2予以永久保存。

最后,客户端应用程序把用户注册时所形成的加密的用户名和密码(即:第一预存密文和第二预存密文)发到服务器端的数据库进行保存。

每次用户登录客户端时,必须先用上述流程生成密钥并形成密文(第一密文和第二密文),当鉴权的时候,客户端程序把新生成的密文发到服务器端,服务器端程序通过数据库查找并匹配出完全相同的密码,进行查找之后再把查找结果返回给客户端。

需要说明的是,图4中示出了两个加密模块,而在实际实施时,这两个加密模块完全可以是指同一个加密模块,或者是将两个不同的加密模块集成在一起,形成图3所示的加密单元103。

下面分析一下上述鉴权系统的安全性。

在上述针对鉴权信息的加密与鉴权过程中,假设以下情况:

1.黑客获取了网络上的密文,由于不知道密文的key,故无法破解。

2.黑客反汇编代码,由于代码里根本没有硬编码key1和key2,所以无法获取key,故无法破解。

3.黑客获取客户端文件或数据库(db)里存放的key1和key2(本实施例中key1和key2并不会存放在客户端,此处假设存放在客户端的情况),但此时的key1和key2是用hash算法(散列算法)处理过的短数字,这个数字重复的几率是比较大的,几乎不能反推出对应的用户名和密码,故很难破解。

4.黑客攻破了服务器端,然后采用拖库撞库的方式对存放密码的数据库暴力破解。由于采用的不是大部分系统的md5或sha1方式,而每个用户的key都完全不一样,更重要的是服务器端也没有保存任何key,所以很难破解。

综上分析,本实施例提供的鉴权系统,采用对称加密技术结合明文变换的方式,能够提高加密鉴权信息的破解难度,从而提高了鉴权系统的安全性,并且不会增加实施的难度,对于鉴权系统的通信双方的计算性能也没有太高要求,从而降低了成本。

基于上述鉴权系统及其鉴权信息的加密装置,本发明实施例还提供一种 鉴权信息的加密方法,包括:获取鉴权信息,所述鉴权信息包括用户信息及其相应的验证密码;将所述用户信息与所述验证密码相结合形成第一混合字符串,并以第一散列算法将所述第一混合字符串生成第一密钥;将所述验证密码与所述用户信息相结合形成第二混合字符串,并以第二散列算法将所述第二混合字符串生成第二密钥;以所述第一密钥对所述用户信息进行加密形成第一密文,以所述第二密钥对所述验证密码进行加密形成第二密文。

具体实施时,所述第一散列算法和第二散列算法可以为hashcode方法、sdbmhash、rshash、jshash、elfhash、bkdrhash和djbhash方法中的其中一种。当然,在其他实施例中,所述第一散列算法和第二散列算法也可以选用其他类型的散列算法。

需要指出的是,所述第一散列算法可以与所述第二散列算法相同,也可以与所述第二散列算法不相同。例如:第一散列算法和第二散列算法可以同时选取java里的hashcode方法、sdbmhash、rshash、jshash、elfhash、bkdrhash和djbhash方法中的同一种;也可以使第一散列算法采用上述散列算法中的其中一种,而使第二散列算法采用上述散列算法中的另一种。

在实际实施时,为了应当尽量使所述第一混合字符串不同于所述第二混合字符串,这就要求密码与用户名相结合的方式与用户名与密码相结合的方式必须不一样,这样能保证生成key1和key2很大的概率很不相同,从而增强鉴权系统的安全性。当然,所述第一混合字符串和第二混合字符串均可以通过字符串拼接、字符混编等方式形成。

此外,基于上述鉴权系统及其鉴权信息的验证装置,本发明实施例还提供一种鉴权信息的验证方法,包括:接收由上述的鉴权信息的加密方法所形成的第一密文和第二密文;将接收到的所述第一密文、第二密文与预先存储的密文对进行配对,并根据配对成功与否的情况返回相应的验证结果。

所述鉴权信息的加密方法和鉴权信息的验证方法的具体实施也可以参考上述鉴权系统及其鉴权信息的加密装置与验证装置的实施相关内容,此处不再赘述。

本领域技术人员可以理解,实现上述鉴权系统及其鉴权信息的加密装置 与验证装置的全部或部分是可以通过程序来指令相关的硬件来完成,所述的程序可以存储于计算机可读存储介质中,所述存储介质可以是rom、ram、磁碟、光盘等。

本发明虽然已以较佳实施例公开如上,但其并不是用来限定本发明,任何本领域技术人员在不脱离本发明的精神和范围内,都可以利用上述揭示的方法和技术内容对本发明技术方案做出可能的变动和修改,因此,凡是未脱离本发明技术方案的内容,依据本发明的技术实质对以上实施例所作的任何简单修改、等同变化及修饰,均属于本发明技术方案的保护范围。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1