一种密码使用方法与流程

文档序号:12486167阅读:458来源:国知局
一种密码使用方法与流程

本发明涉及密码技术领域,具体地说是涉及一种能增强用户密码及用户敏感数据安全性的密码使用方法。



背景技术:

目前,软件系统的应用已经深入到个各行各业,大多数人都会有某个软件系统的帐号并在系统中存储了一些敏感的数据如银行卡号、身份证号码等。

现有软件系统常见的密码使用方式是:用户设置密码时,在客户端用户输入用户名和密码后,用户名和密码以明文形式发送到服务端,在服务端将用户密码加盐经过散列运算后存储,也有少数系统直接存储密码明文;用户登录时在登录界面输入用户名和密码然后将用户名和密码以明文的方式发送到服务端进行验证,在传输过程中数据会经过很多网络节点,任意一个节点被监听就会造成用户密码被窃取。

使用SSL可以一定程度上解决上述问题,但大部分访问量大的软件系统都是分布式架构有多台应用服务器,客户端先连到网关,再由网关分发到具体的应用服务器,为了减少服务器的压力或实现某些功能往往只有用户到网关的连接会使用SSL在从网关到应用服务器的传输中还是可以通过数据监听来窃取用户密码及数据。

由于用户密码及敏感数据明文会传输到服务器,如果服务器被入侵用户密码及敏感数据也很容易被窃取。

此外,在某些系统中服务端不需要知道内容或不需要单独使用的用户敏感数据通常也是明文存储,如证件号码、银行卡号、用户备份的通讯录、日程表、备忘录等数据;有数据访问权限的人员可以轻易地获取到这些数据,如数据库管理员、成功入侵的黑客,也有系统会把用户敏感信息加密后存储但加密的密钥往往是放在服务端,若密钥被窃取所有或一批用户数据就能被解密,这样会使用户信息泄露造成经济或其它方面的损失。



技术实现要素:

为了克服现有系统用户密码及敏感数据容易泄露的问题,本发明专利提供一种密码使用方法。

本发明解决其技术问题所采用的技术方案是:

1. 一种密码使用方法,其特征在于:先将用户密码与目标密码因子经过目标密码运算得到目标密码,改变目标密码因子同一个用户密码可得到多个不能相互推导的目标密码,再把目标密码用于用户认证、数据加密。

一种密码使用方法,其特征在于:目标密码因子随机或按规则生成,若生成的密码因子不固定则生成后需要存储使用时从存储区读取,否则可不存储在使用时用相同的方法再重新生成,比如目标密码因子根据用户名生成则生成的目标密码因子是固定的,若目标密码因子是随机生成,或者加入了一些变化的参数如当前时间则生成的目标密码因子不是固定的;目标密码因子可以是一个或多个;目标密码运算使用不可从结果计算出输入参数的算法或算法组合;用户名也可作为目标密码运算的参数。

一种密码使用方法,其特征在于:用于数据加密包括以下步骤:

(1)加密时,生成目标密码因子,将用户密码和目标密码因子经过目标密码运算得到目标密码;

(2)使用目标密码对数据明文加密得到数据密文;

(3)存储数据密文,若生成的目标密码因子不固定也需要存储;

(4)解密时,读取数据密文,读取或生成对应的目标密码因子;

(5)将用户密码和目标密码因子经过目标密码运算得到目标密码;

(6)使用目标密码对数据密文解密得到数据明文。

一种密码使用方法,其特征在于:用于用户认证包括以下步骤:

(1)设置密码时,生成目标密码因子,将用户密码和目标密码因子经过目标密码运算得到目标密码;

(2)存储目标密码,目标密码可直接存储或经过运算后存储,若生成的目标密码因子不固定也需要存储;

(3)用户登录时,输入用户名密码后,读取或生成对应的目标密码因子;

(4)将用户密码和目标密码因子经过目标密码运算得到目标密码;

(5)验证生成的目标密码和存储的目标密码是否相同,相同则用户认证成功否则失败。

一种密码使用方法,其特征在于:添加密码因子进行密码运算的次数可以是1次或多次;在生成目标密码前可添加一次密码运算---基础密码运算,先将用户密码和基础密码因子通过基础密码运算得到基础密码,再将基础密码与目标密码因子经过目标密码运算得到目标密码。

一种密码使用方法,其特征在于:本方法可单独用于用户认证或数据加密,也可同时用于用户认证和数据加密,同时用于用户认证和数据加密时用于用户认证和数据加密的用户密码可相同也可不同;加密不同的数据可使用不同的目标密码以提高安全性;若用户认证和数据加密使用相同的用户密码,数据加密可添加基础密码运算,用于数据加密的基础密码可以在用户登录后计算,解密数据前进行目标密码运算时,用户不用再次输入密码直接使用已经计算的基础密码。

一种密码使用方法,其特征在于:目标密码可以直接加密用户数据也可以加密密钥, 再使用密钥加密用户数据。

本发明的有益效果是,不存储和传输用户密码可防止通过破解数据存储区、监听网络数据包来窃取用户密码,目标密码泄露也不能获取用户密码,其中一个目标密码泄露不影响其它的目标密码的安全,提高了用户密码及数据的安全性;若目标密码泄露用户只需使用新的密码因子重新生成目标密码,原用户密码可继续使用,给用户带来了方便;本发明可实现同一个用户密码即用于用户认证又用于用户数据加密,加密的数据保存到服务端而服务端又不知道加密后数据的密码,对用户来说既安全又方便;目标密码运算可采用SHA、AES等公认安全的算法或算法组合,实现可靠、简便。

附图说明

下面结合附图和示例对发明进一步说明。

图1是本发明密码生成基本原理流程图。

图2是用于用户认证—密码设置及存储流程图。

图3是用于用户认证—密码验证流程图。

图4是用于数据加密—加密数据及存储流程图。

图5是用于数据加密—解密数据流程图。

具体实施方式

实施示例1

本示例的场景是一个网络软件系统,在系统中用户需要登录,并且对用户身份证号码加密存储;用户认证、数据加密使用相同的目标密码算法;目标密码算法是:将用户密码进行SHA256运算然后将结果加上目标密码因子进行SHA256运算,目标密码=SHA256(SHA256(用户密码)+目标密码因子);目标密码存储前先加盐(SALT),加盐算法为SHA256(目标密码+SALT)。

具体过程如下:

1)用户设置密码或新建时,在客户端,用户输入认证密码后随机生成一个目标密码因子A,对用户密码和目标密码因子A进行目标密码运算SHA256(SHA256(用户密码)+目标密码因子A)得到用于用户认证的目标密码C,将目标密码因子A和目标密码C发送到服务端。

2)在服务端,对目标密码C加盐(SALT),随机生成32位长的字符串SALT D,对目标密码加SALT算法是SHA256(目标密码C + SALT D),得到加SALT后的目标密码E,存储加SALT后的目标密码E、目标密码因子A、SALT D以及与用户名的关系。

3)用户登录时,在客户端,用户输入用户名和认证密码F后,发送用户名到服务端获取存储的目标密码因子A,对用户输入的认证密码F和目标密码因子A进行目标密码运算,目标密码=SHA256(SHA256(认证密码F) + 目标密码因子A),得到目标密码H,将目标密码H发送到服务端。

4)在服务端,取出SALT D,对目标密码H和SALT D进行加盐运算SHA256(目标密码H + SALT D)得到加盐后的目标密码I,然后与存储的加盐后的目标密码E作比较,如果相同则用户密码输入正确认证成功,否则用户密码输入不正确,用户认证失败。

5)当用户设置身份证号码J时,在客户端,用户输入数据保护用户密码K(可与用户认证的密码相同);随机生成一个目标密码因子L;将用户密码K和目标密码因子L进行目标密码运算SHA256(SHA256(用户密码K)+目标密码因子L)得到目标密码N,使用Aes256加密算法以目标密码N为密钥对身份证号码J进行加密Aes256_Encrypt(身份证号码J, 目标密码N)得到身份证号码数据密文O,将身份证号码数据密文O、目标密码因子L发送到服务端并存储。

6)使用身份证号码时,用户输入数据保护的用户密码P,接着从服务端读取身份证号码数据密文O、目标密码因子L,再将用户密码P和读取的目标密码因子L进行目标密码运算SHA256(SHA256(用户密码P)+目标密码因子L)得到目标密码R,再使用目标密码R对身份证号码数据密文O进行解密,如果用户密码P输入正确则能正确解密出身份证号码J,否则解密失败。

实施示例2

本示例的场景是一个网络软件系统,功能之一是用户可备份通讯录到服务端并可把备份到服务端的通讯录恢复到本地,在系统中用户需要登录,并且要对备份的通讯录数据进行保护加密存储。用户认证密码采用一次密码运算---目标密码运算,数据保护采用两次密码运算---基础密码运算、目标密码运算。用户认证目标密码算法:目标密码=SHA256(SHA256(用户密码)+目标密码因子);目标密码直接存储,登录时使用CHAP类似的协议。数据保护基础密码算法:基础密码=SHA256(用户密码+基础密码因子),目标密码算法是:目标密码=SHA256(基础密码+目标密码因子)。

具体过程如下:

1)用户设置密码时,在客户端,用户输入认证用户密码后随机生成一个目标密码因子A,然后对用户密码和目标密码因子A进行目标密码运算SHA256(SHA256(用户密码)+目标密码因子A)得到用于用户认证的目标密码C,再将目标密码因子A和目标密码C发送到服务端。

2)在服务端,随机生成用于数据加密的基础密码因子D,然后存储目标密码因子A、目标密码C、数据加密基础密码因子D及其与用户的关系。

3)用户登录时,在客户端,当用户输入用户名和密码E后,将用户名发送到服务端,在服务端,通过用户名找到存储的目标密码因子A,并生成一个认证随机数据F,将目标密码因子A、认证随机数据F发送到客户端。

4)在客户端,先对用户密码E和目标密码因子A进行目标密码运算SHA256(SHA256(用户密码E)+ 目标密码因子A),得到目标密码G;以目标密码G为密钥对认证随机数据F进行Aes256加密运算, Aes256_Encrypt(认证随机数据F, 目标密码G),得到认证串H,将认证串H发送到服务端。

5)在服务端,从存储区读取目标密码C,以读取的目标密码C为密钥对认证随机数据F进行Aes256加密运算Aes256_Encrypt(认证随机数据F, 目标密码C),得到认证串I,比较认证串H和I是否相同,如果相同则用户密码输入正确认证成功,否则用户密码输入不正确,用户认证失败。

6)用户认证成功后,服务端发送数据加密基础密码因子D到客户端;在客户端,将用户密码E和数据加密基础密码因子D进行数据保护基础密码运算SHA256(用户密码E+基础密码因子D)得到数据保护基础密码J,然后删除内存中的用户密码。

7)当用户备份通讯录时,随机生成一个目标密码因子K;将基础密码J和目标密码因子K进行目标密码运算SHA256(基础密码J+目标密码因子K)得到数据保护目标密码L,使用Aes256加密算法以目标密码L为密钥对通讯录数据M加密Aes256_Encrypt(通讯录数据M,目标密码L),得到通讯录数据密文N,将目标密码因子K、通讯录数据密文N发送到服务端。

8)在服务端,存储目标密码因子K、通讯录数据密文N。

9)恢复通讯录时,客户端从服务端获取目标密码因子K、通讯录数据密文N,将基础密码J和目标密码因子K进行目标密码运算SHA256(基础密码J+目标密码因子K)得到目标密码L,再使用目标密码L对通讯录数据密文N进行解密Aes256_Decrypt(通讯录数据密文N,目标密码L),得到通讯录数据,然后将通讯录数据恢复到本地。

以上所述仅为本发明的较佳实施例而已,因此并不以此来限定本发明之权利范围,凡在本发明的原则和精神之内所作的任何修改、等同替换和改进等,均就包含在本发明的保护范围之内。

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