本发明属于totp认证,具体涉及一种安全的totp验证的方法和系统。
背景技术:
1、标准的totp(time-based one-time password)是一种用于身份验证的密码生成算法,基于时间的一次性密码系统。totp的实现是建立在hotp(hmac-based one-timepassword)算法之上的。它主要通过一个基于时间的因素(通常是时间戳)和一个共享的密钥来生成一个临时性的、有效期限制的一次性密码。
2、目前,标准的totp在验证一次性密码时,用户先申请密钥绑定,服务端生成totp密钥并且向用户展示,用户通过扫描二维码获取到密钥,客户端使用标准算法输入密钥和当前时间生成一次性密码(otp),此时支持的算法单一,不支持国密应用过程中可能存在风险;用户将一次性密码输入业务系统,此时用户可以多次输入一次性密码,并进行暴力破解;业务系统使用相同的算法输入服务端生成的密钥和系统时间生成一次性密码(otp);业务系统验证生成的一次性密码和用户输入的密码的有效性。
3、但是,用户在申请密钥绑定时,密钥在传输过程中可能被篡改;另外密钥是由服务端生成的,即使用户本地移除密钥,密钥仍可以继续使用,而且密钥在通过二维码扫描获取时,密钥可以被任意用户扫描获取,从而降低了密钥使用的安全性,因此我们需要提出一种安全的totp验证的方法和系统来解决上述存在的问题。
技术实现思路
1、本发明的目的在于提供一种安全的totp验证的方法和系统,能够避免恶意绑定、密钥信息篡改以及降低密钥分发泄露的风险,以解决上述背景技术中提出的问题。
2、为实现上述目的,本发明采用了如下技术方案:
3、一种安全的totp验证的方法,包括如下步骤:
4、s1、用户登录验证程序s-totp向验证系统svs申请密钥绑定,验证系统svs基于生物识别和短信验证的方式对用户进行识别认证;
5、s2、验证系统svs根据用户信息生成服务端密钥ssk及用户的数字证书,并添加绑定关系;
6、s3、验证系统svs根据rfc标准协议生成授权链接sal并要求支持国密;
7、s4、验证系统svs使用用户的私钥证书对授权链接sal进行签名,再将签名添加到授权链接sal;
8、s5、验证系统svs根据授权链接sal发送给用户,用户使用验证程序s-totp获取授权链接;
9、s6、验证程序s-totp从验证系统svs下载对应用户的公钥证书,使用公钥证书对授权链接sal进行签名验证;
10、s7、签名验证成功后验证程序s-totp生成客户端密钥sck并使用用户的公钥证书对客户端密钥sck进行加密;
11、s8、验证程序s-totp将加密后的客户端密钥sck发送给验证系统svs,验证系统svs接收到数据后,调用加密机使用用户私钥将加密的客户端密钥sck数据进行解密;
12、s9、解密成功后验证程序s-totp将用户信息、服务端密钥ssk和客户端密钥sck进行关联保存,验证程序s-totp开启生物识别验证,确保每次申请一次性密码时进行生物识别认证。
13、优选的,步骤s2中,所述用户的数字证书支持rsa或sm2的非对称算法,其中服务端密钥ssk的私钥储存在加密机,公钥证书保存到数据库。
14、优选的,步骤s5中,用户使用验证程序s-totp获取授权链接的方式是利用验证程序s-totp扫描二维码、通过短信和邮件的方式获取到授权链接。
15、优选的,步骤s6中,对所述授权链接sal进行签名验证时,使用totp算法验证获取到的signature的有效性,如果验证失败则提示绑定失败,如果验证成功则进入s7。
16、优选的,步骤s8中,在对客户端密钥sck数据进行解密时,若解密失败时,则提示绑定失败,若解密成功时,则保存用户信息、服务端密钥ssk和客户端密钥sck的关联数据。
17、优选的,步骤s9中,在进行生物识别验证过程中,用户在操作业务数据时,若涉及敏感操作,业务系统将弹出s-totp验证码输入框,要求用户进行二次验证。
18、优选的,用户在进行二次验证的步骤如下:
19、s10、用户登录验证程序s-totp,当点击获取otp时,验证程序s-totp通过生物识别技术对当前操作用户进行mfa认证;
20、s11、验证程序s-totp使用预置的加密算法将服务端密钥ssk和客户端密钥sck加密生成s-totp的安全运算密钥sok;
21、s12、验证程序s-totp使用客户端的安全运算密钥和服务端的安全运算密钥sok共同生成一次性密码otp,验证码基于时间和密钥生成,算法遵循rfc6238-totp标准;
22、s13、用户将验证程序s-totp生成的一次性密码otp输入到业务系统;
23、s14、业务系统将一次性密码otp和用户标识传入验证系统svs中;
24、s15、验证系统svs对一次性密码otp进行验证,存在以下两种情形:
25、s15.1、若一次性密码otp验证成功,验证系统svs记录已使用的一次性密码otp,在当前时间窗口继续使用相同密码验证时提示验证失败;
26、s15.2、若一次性密码otp验证失败,验证系统svs记录当前用户的验证行为,根据安全策略锁定用户,同时移除绑定的服务端密钥ssk和客户端密钥sck。
27、优选的,步骤s11中,所述加密算法满足密码算法规范及国密算法,国密算法包括sm2、sm3和sm4。
28、优选的,步骤s15.2中,在验证失败后,当用户注销账户时,验证系统svs移除用户和密钥的绑定关系,验证程序s-totp移除本地保存的用户密钥信息;所述密钥绑定的时机为根据设定的安全策略在登录时或敏感操作时对用户进行密钥绑定。
29、基于以上叙述的一种安全的totp验证的方法,本发明还提供一种安全的totp验证的系统,包括验证程序s-totp和验证系统svs,所述验证程序s-totp用于向验证系统svs申请密钥绑定并获取授权链接,所述验证系统svs基于生物识别和短信验证的方式对用户进行识别认证。
30、本发明提出的一种安全的totp验证的方法和系统,与现有技术相比,具有以下优点:
31、1、本发明用户先登录验证程序s-totp向验证系统svs申请密钥绑定,验证系统svs基于生物识别和短信验证的方式对用户进行识别认证,验证系统svs根据用户信息生成服务端密钥ssk及用户的数字证书,并添加绑定关系,再根据rfc标准协议生成授权链接sal并要求支持国密,再使用用户的私钥证书对授权链接sal进行签名,再将签名添加到授权链接sal,根据授权链接sal发送给用户,用户使用验证程序s-totp获取授权链接,验证程序s-totp从验证系统svs下载对应用户的公钥证书,使用公钥证书对授权链接sal进行签名验证,签名验证成功后验证程序s-totp生成客户端密钥sck并使用用户的公钥证书对客户端密钥sck进行加密,验证程序s-totp将加密后的客户端密钥sck发送给验证系统svs,验证系统svs接收到数据后,调用加密机使用用户私钥将加密的客户端密钥sck数据进行解密,通过此方式大大降低了密钥在传输过程中被篡改几率,提高了密钥使用的安全性。
1.一种安全的totp验证的方法,其特征在于:包括如下步骤:
2.根据权利要求1所述的一种安全的totp验证的方法,其特征在于:步骤s2中,所述用户的数字证书支持rsa或sm2的非对称算法,其中服务端密钥ssk的私钥储存在加密机,公钥证书保存到数据库。
3.根据权利要求2所述的一种安全的totp验证的方法,其特征在于:步骤s5中,用户使用验证程序s-totp获取授权链接的方式是利用验证程序s-totp扫描二维码、通过短信和邮件的方式获取到授权链接。
4.根据权利要求3所述的一种安全的totp验证的方法,其特征在于:步骤s6中,对所述授权链接sal进行签名验证时,使用totp算法验证获取到的signature的有效性,如果验证失败则提示绑定失败,如果验证成功则进入s7。
5.根据权利要求4所述的一种安全的totp验证的方法,其特征在于:步骤s8中,在对客户端密钥sck数据进行解密时,若解密失败时,则提示绑定失败,若解密成功时,则保存用户信息、服务端密钥ssk和客户端密钥sck的关联数据。
6.根据权利要求5所述的一种安全的totp验证的方法,其特征在于:步骤s9中,在进行生物识别验证过程中,用户在操作业务数据时,若涉及敏感操作,业务系统将弹出s-totp验证码输入框,要求用户进行二次验证。
7.根据权利要求6所述的一种安全的totp验证的方法,其特征在于:用户在进行二次验证的步骤如下:
8.根据权利要求7所述的一种安全的totp验证的方法,其特征在于:步骤s11中,所述加密算法满足密码算法规范及国密算法,国密算法包括sm2、sm3和sm4。
9.根据权利要求8所述的一种安全的totp验证的方法,其特征在于:步骤s15.2中,在验证失败后,当用户注销账户时,验证系统svs移除用户和密钥的绑定关系,验证程序s-totp移除本地保存的用户密钥信息;所述密钥绑定的时机为根据设定的安全策略在登录时或敏感操作时对用户进行密钥绑定。
10.一种安全的totp验证的系统,基于权利要求1-9任意一项所述的一种安全的totp验证的方法,其特征在于:包括验证程序s-totp和验证系统svs,所述验证程序s-totp用于向验证系统svs申请密钥绑定并获取授权链接,所述验证系统svs基于生物识别和短信验证的方式对用户进行识别认证。