CN114095154B - 一种App登录的动态口令实现方法、装置、设备和介质 - Google Patents

一种App登录的动态口令实现方法、装置、设备和介质 Download PDF

Info

Publication number
CN114095154B
CN114095154B CN202111184884.7A CN202111184884A CN114095154B CN 114095154 B CN114095154 B CN 114095154B CN 202111184884 A CN202111184884 A CN 202111184884A CN 114095154 B CN114095154 B CN 114095154B
Authority
CN
China
Prior art keywords
password
otp
app
user
value
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
Application number
CN202111184884.7A
Other languages
English (en)
Other versions
CN114095154A (zh
Inventor
张辉
卢裔剑
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Fujian Centerm Information Co Ltd
Original Assignee
Fujian Centerm Information Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Fujian Centerm Information Co Ltd filed Critical Fujian Centerm Information Co Ltd
Priority to CN202111184884.7A priority Critical patent/CN114095154B/zh
Publication of CN114095154A publication Critical patent/CN114095154A/zh
Application granted granted Critical
Publication of CN114095154B publication Critical patent/CN114095154B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/08Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
    • H04L9/0861Generation of secret information including derivation or calculation of cryptographic keys or passwords
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/08Network architectures or network communication protocols for network security for authentication of entities
    • H04L63/0876Network architectures or network communication protocols for network security for authentication of entities based on the identity of the terminal or configuration, e.g. MAC address, hardware or software configuration or device fingerprint
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/10Network architectures or network communication protocols for network security for controlling access to devices or network resources
    • H04L63/108Network architectures or network communication protocols for network security for controlling access to devices or network resources when the policy decisions are valid for a limited amount of time
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/32Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
    • H04L9/3226Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials using a predetermined code, e.g. password, passphrase or PIN
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D30/00Reducing energy consumption in communication networks
    • Y02D30/50Reducing energy consumption in communication networks in wire-line communication networks, e.g. low power modes or reduced link rate

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Computer Hardware Design (AREA)
  • Computing Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Power Engineering (AREA)
  • Storage Device Security (AREA)

Abstract

本发明提供一种App登录的动态口令实现方法、装置、设备和介质,在App初始化时,就将系统厂商代码发送给Otp服务,由Otp服务生成用户身份sn,并据此以及系统当前时间生成otp密令值,从而让otp密令与系统厂商代码联系起来。且用户可通过App调整飘移时间,并通过Otp服务与系统厂商代码、用户身份sn绑定保存,Otp服务计算出窗口活跃时间后并获取otp密令值dp的列表,以供用户登录App使用。在otp密令验证时,Otp服务根据窗口活跃时间和飘移时间计算出一组otps,用于验证用户登录App进使用的otp密令是否被使用过。从而实现了完整的统一动态密令的验证,解决了一个厂商多系统下使用不同验证的不统一性,减少了系统验证成本。

Description

一种App登录的动态口令实现方法、装置、设备和介质
技术领域
本发明涉及计算机技术领域,特别涉及一种App登录的动态口令的实现方法、装置、设备和介质。
背景技术
当前绝大多数应用的登录口令均采用静态口令作为用户身份凭证,而用户为了方便记忆或管理密码往往采用简单密码。而破解密码技术日益成熟,使得静态密码的安全风险更为突出。
OTP全称叫One-time Password,也称动态口令,是根据专门的算法每隔60秒生成一个与时间相关的、不可预测的随机数字组合。由于OTP密令基于时间戳生成,因此意味着使用次数只能为一次,随着时间变化,密令相应发生变化,对于超过一定时间的命令,直接导致密令过期失效。OTP密令的使用场景主要是替换验证码,短信验证码等的场合,可谓是一种全新的,安全可靠的,保证信息安全的身份验证工具。
但目前的OTP密令技术无法解决多系统下统一验证,然而一个厂商往往具有多个系统,若每个系统的验证均为独立进行,比如厂商A,其名下有项目管理系统、oa系统、报表系统等,每个系统都有自己的登录认证方式,这种使用不同验证的不统一性导致系统验证成本较高。
发明内容
本发明要解决的技术问题,在于提供一种App登录的动态口令实现方法、装置、设备和介质,基于OTP密令,主要是通过系统厂商代码来统一动态密令的验证方式,解决了一个厂商多系统下使用不同验证的不统一性,在保证了系统的验证安全性的基础上减少了系统验证成本。
第一方面,本发明提供了一种App登录的动态口令实现方法,包括App初始化过程、App更新过程和应用密令校验过程;
所述App初始化过程是:用户的App被打开后请求初始化,经浏览器或应用服务将系统厂商代码spid发送给Otp服务,Otp服务生成用户身份sn、密钥盐值属性seek,通过所述用户身份sn、密钥盐值属性seek以及系统当前时间time根据密令生成流程生成otp密令值dp;经浏览器或应用服务将所述otp密令值dp返回至用户的App进行显示;
所述App更新过程是:当用户通过App调整飘移时间ctime后,经浏览器或应用服务将系统厂商代码spid、tokenid、用户身份sn、飘移时间ctime发送给Otp服务,Otp服务根据飘移时间ctime计算出窗口活跃时间window并对应保存至数据库;当用户的App发出获取otp密令值dp的请求时,经浏览器或应用服务将系统厂商代码spid、tokenid、用户身份sn发送给Otp服务,Otp服务根据窗口活跃时间window和飘移时间ctime获取otp密令值dp的列表otplist,并将列表otplist中最新的otp密令值dp经浏览器或应用服务返回至用户的App进行显示;
所述应用密令校验过程是:当用户通过浏览器或应用服务输入App上显示的otp密令值dp进行应用登录时,浏览器或应用服务将otp密令值dp发送给Otp服务,Otp服务通过密令验证流程根据窗口活跃时间window和飘移时间ctime计算出一组otps,验证otps中是否有与接收到的otp密令值dp相等的元素,若有,则判断otp是否被使用过,若otp没有被使用过,则应用密令验证通过,用户的App登录成功。
第二方面,本发明提供了一种App登录的动态口令实现装置,包括:
App初始化模块,用于在用户的App被打开后请求初始化,经浏览器或应用服务将系统厂商代码spid发送给Otp服务,Otp服务生成用户身份sn、密钥盐值属性seek,通过所述用户身份sn、密钥盐值属性seek以及系统当前时间time根据密令生成流程生成otp密令值dp;经浏览器或应用服务将所述otp密令值dp返回至用户的App进行显示;
App更新模块,用于当用户通过App调整飘移时间ctime后,经浏览器或应用服务将系统厂商代码spid、tokenid、用户身份sn、飘移时间ctime发送给Otp服务,Otp服务根据飘移时间ctime计算出窗口活跃时间window并对应保存至数据库;当用户的App发出获取otp密令值dp的请求时,经浏览器或应用服务将系统厂商代码spid、tokenid、用户身份sn发送给Otp服务,Otp服务根据窗口活跃时间window和飘移时间ctime获取otp密令值dp的列表otplist,并将列表otplist中最新的otp密令值dp经浏览器或应用服务返回至用户的App进行显示;
应用密令校验模块,用于当用户通过浏览器或应用服务输入App上显示的otp密令值dp进行应用登录时,浏览器或应用服务将otp密令值dp发送给Otp服务,Otp服务通过密令验证流程根据窗口活跃时间window和飘移时间ctime计算出一组otps,验证otps中是否有与接收到的otp密令值dp相等的元素,若有,则判断otp是否被使用过,若otp没有被使用过,则应用密令验证通过,用户的App登录成功。
第三方面,本发明提供了一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现第一方面所述的方法。
第四方面,本发明提供了一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现第一方面所述的方法。
本发明实施例中提供的一个或多个技术方案,至少具有如下技术效果或优点:在App初始化时,就将系统厂商代码发送给Otp服务,由Otp服务生成用户身份sn,并据此以及系统当前时间time生成otp密令值dp,从而让otp密令分别与用户身份sn、系统厂商代码联系起来。且用户可通过App调整飘移时间,使App得到更新,调整后的飘移时间同样与系统厂商代码、用户身份sn绑定保存,计算出窗口活跃时间,Otp服务根据窗口活跃时间和飘移时间获取otp密令值dp的列表,以供用户登录App使用。在otp密令验证时,Otp服务根据窗口活跃时间和飘移时间计算出一组otps,用于验证用户登录App进使用的otp密令是否被使用过。从而实现了完整的统一动态密令的验证,即可通过系统厂商代码来统一该厂端下所有系统的动态密令的验证,解决了一个厂商多系统下使用不同验证的不统一性,在保证了系统的验证安全性的基础上减少了系统验证成本。且部署密令认证服务,可集群部署,nginx负载均衡,高可用。
上述说明仅是本发明技术方案的概述,为了能够更清楚了解本发明的技术手段,而可依照说明书的内容予以实施,并且为了让本发明的上述和其它目的、特征和优点能够更明显易懂,以下特举本发明的具体实施方式。
附图说明
下面参照附图结合实施例对本发明作进一步的说明。
图1为本发明系统的框架示意图;
图2为本发明实施例一中方法中的流程图;
图3为本发明各实施例中的密令生成流程图;
图4为本发明各实施例中的密令验证流程图;
图5为本发明实施例二中装置的结构示意图;
图6为本发明实施例三中电子设备的结构示意图;
图7为本发明实施例四中介质的结构示意图。
具体实施方式
本申请实施例通过提供一种基于OTP密令,主要是通过系统厂商代码来统一动态密令的验证方式,解决了一个厂商多系统下使用不同验证的不统一性,在保证了系统的验证安全性的基础上减少了系统验证成本。
本申请实施例中的技术方案,总体思路如下:在App初始化时,就将系统厂商代码发送给Otp服务,由Otp服务生成用户身份sn,并据此以及系统当前时间time生成otp密令值dp,从而让otp密令分别与用户身份sn、系统厂商代码联系起来。且用户可通过App调整飘移时间,使App得到更新,调整后的飘移时间同样与系统厂商代码、用户身份sn绑定保存,计算出窗口活跃时间,Otp服务根据窗口活跃时间和飘移时间获取otp密令值dp的列表,以供用户登录App使用。在otp密令验证时,Otp服务根据窗口活跃时间和飘移时间计算出一组otps,用于验证用户登录App进使用的otp密令是否被使用过。从而实现了完整的统一动态密令的验证,从而可通过系统厂商代码来统一该厂端下所有系统的动态密令的验证,解决了一个厂商多系统下使用不同验证的不统一性。
在介绍具体实施例之前,先介绍本申请实施例方法所对应的系统框架,如图1所示,系统大概分三个部分:
用户的App,可以是一系统厂商下的多个App,在初始化过程中,可经浏览器或应用服务将系统厂商代码spid自动发送给Otp服务。
浏览器或应用服务,主要用于实现用户的App与Otp服务之间的数据转发,也可用于应用登录。
Otp服务,主要用于接收App经浏览器或应用服务发送的信息,根据密令生成流程生成otp密令值dp,并返回otp密令值dp给用户的App;对用户登录App时输入的otp密令值dp进行应用密令校验。
实施例一
如图2所示,本实施例提供一种App登录的动态口令实现方法,主要包括App初始化过程、App更新过程和应用密令校验过程;
所述App初始化过程是:用户的App被打开后请求初始化,经浏览器或应用服务将系统厂商代码spid发送给Otp服务,Otp服务生成用户身份sn、密钥盐值属性seek,通过所述用户身份sn、密钥盐值属性seek以及系统当前时间time根据密令生成流程生成otp密令值dp;经浏览器或应用服务将所述otp密令值dp返回至用户的App进行显示;
所述App更新过程是:当用户通过App调整飘移时间ctime(单位通常是秒,因此也可称为飘移秒数)后,经浏览器或应用服务将系统厂商代码spid、tokenid、用户身份sn、飘移时间ctime发送给Otp服务,Otp服务根据飘移时间ctime计算出窗口活跃时间window(单位通常是分钟,因此也可称为窗口分钟数)并对应保存至数据库;当用户的App发出获取otp密令值dp的请求时,经浏览器或应用服务将系统厂商代码spid、tokenid、用户身份sn发送给Otp服务,Otp服务根据窗口活跃时间window和飘移时间ctime获取otp密令值dp的列表otplist,并将列表otplist中最新的otp密令值dp经浏览器或应用服务返回至用户的App进行显示;
所述应用密令校验过程是:当用户通过浏览器或应用服务输入App上显示的otp密令值dp进行应用登录时,浏览器或应用服务将otp密令值dp发送给Otp服务,Otp服务通过密令验证流程根据窗口活跃时间window和飘移时间ctime计算出一组otps,验证otps中是否有与接收到的otp密令值dp相等的元素,若有,则判断otp是否被使用过,若otp没有被使用过,则应用密令验证通过,用户的App登录成功。
其中,作为本实施例的一种更优或更为具体的实现方式:
如图3所示,所述密令生成流程具体包括下述步骤:
S11、获取密钥盐值属性seek、otp密令长度otplength、用户身份sn以及系统当前时间time,并将用户身份Sn,密钥盐值属性seek保存至数据库;
S12、将所述密钥盐值属性seek的十六进制字符串转化为byte数组key;
S13、创建密钥skeySpec,设置密钥规格为ASE,密钥盐值为key;
S14、创建Cipher对象,设置加密算法模式为AES/ECB/NoPadding;
S15、初始化所述Cipher对象,加入所述密钥skeySpec;
S16、根据所述系统当前时间time和所述用户身份sn生成密令盐值,所述密令盐值为byte[]数组in;
S17、使用所述Cipher对象对byte[]数组in加密,返回byte[]数组out;
S18、定义一个char数组cs,长度为out.length,计算该char数组cs:
cs[i]=(char)(48+(out[i]&0xff)%10);
即cs[i]等于out[I]和0xff做一个与运算,然后除以10取余,最后加48;
S19、将所述char数组cs转成字符串,该字符串即为otp密令值dp。
本发明中,密钥盐值属性seek为用户私有AES加密盐值,是一个长度为16的倍数的十六进制化的字符串,它是用来生成otp密令的条件之一,seek是作为Java实现类SecretKeySpec的盐值,otp密令是建立加密基础上,所用到的秘钥就是SecretKeySpec。用户身份sn为用户身份序列号,即用户身份的唯一标识。用户身份sn是生成密令的必备条件,每一个用户初始化App会生成一个用户身份序列号,用于和用户身份的绑定,这样就可以实现根据用户身份找到相应的序列号sn,从而检验otp密令。
密令采用了AES无向量加密方式,加密密钥盐值为seek。将根据当前系统时间time生成的时间戳设置为facter,生成一个长度为16的byte数组,字节数组的生成规则根据用户身份sn,对用户身份sn进行多次不同的位运算并且和255与运算,从而使不同用户拥有不同用户身份sn,用以对用户身份进行区别。接下来是根据当前系统时间time,将生成部分数组元素精确到分钟,同一个用户在两个不同时间,只要这两个时间所属的年月日天时分相同,尽管秒数不同,他们的生成的密令是相同的,反之,密令会不同。这样就可以实现生成的密令同步时间。
如图4所示,所述密令验证流程具体包括下述步骤:
S21、获取到参数otp密令长度otpLength,用户身份sn,初始化生成的种子文件seed,otp密令值dp,飘移时间ctime的值drift,窗口活跃时间window,calShift,判断calShift值是否需要效验;若不需要效验,则让drift=0;将十六进制的seek转成byte数组key,作为密钥的盐值;
S22、生成密钥skeySpec,密钥盐值是key,加密方式AES;
S23、根据所述种子文件seed创建Cipher对象,采用AES/ECB/NoPadding模式进行加密;
S24、初始化所述Cipher对象,加入秘钥skeySpec;
S25、新建时间临时参数c并设置时间临时参数c的值为drift,根据所述时间临时参数c,所述用户身份sn,所述otp密令长度otplength,所述Cipher对象,生成密令v;
S26、判断密令v和所述otp密令值dp是否相等;若是,则结束;若否,则根据窗口活跃时间window,循环修改时间临时参数c,再次生成密令v,其中,时间临时参数c的分钟数计算在窗口活跃时间window以内,给时间临时参数c循环加减分钟数i,且-window<=i<=window;
S27、比较再次生成的密令v和所述otp密令值dp是否相等,若是,则结束;若否,返回null后结束。
本发明密令的效验原理就是使用了一个时间飘移值drift(就是密令显示到系统认证过去的时间秒数)和窗口活跃时间window(窗口分钟数),根据otp生成原理可知,只要两个时刻,属于相同的分钟数,则生成的otp就会相同,otp效验就是在窗口活跃时间window的分钟数以内生成多个otp密令值(密令v),看哪个otp与之匹配,最后还需要验证这个密令是否已经被使用,使用过的密令会使用次数加1,只有使用密令次数为0时说明未被使用过,因此才可通过验证。比如:
(1)拿到一个otp。
(2)首先根据当前时间t,秒数设置drift,生成otp1,判断otp和otp1是否相等,若相等就验证通过(原理就是相同分钟数下otp生成相同)。
(3)如果验证不通过,就使用窗口分钟数window,以按照国寿密令为例:假设窗口分钟数为2,然后分别计算出t-1,t-2,t+1,t+2各个时间点的一组otps,otp1,otp2,otp3,otp4,判断otp和这一组otps中的哪个相等,相等就通过验证。
(4)最后对otp进行是否使用过验证,使用过的otp都会次数加1,定期清理超过窗口分钟数的otp,对于otp使用次数为0的,最后才真正验证通过(使用的otp存储在map集合)。
其中,作为本实施例的一种更优或更为具体的实现方式,所述方法还包括:
Sn绑定/解绑过程:当用户通过浏览器或应用服务打开密令服务地址进行登录,Otp服务接收浏览器或应用服务发送的用户名username、pwd指令后进行用户信息验证,将用户名username和App上用户身份sn绑定;或者通过令牌列表,将用户名username和用户身份sn解除绑定。
基于同一发明构思,本申请还提供了与实施例一中的方法对应的装置,详见实施例二。
实施例二
如图5所示,在本实施例中提供了一种App登录的动态口令实现装置,包括:
App初始化模块,用于在用户的App被打开后请求初始化,经浏览器或应用服务将系统厂商代码spid发送给Otp服务,Otp服务生成用户身份sn、密钥盐值属性seek,通过所述用户身份sn、密钥盐值属性seek以及系统当前时间time根据密令生成流程生成otp密令值dp;经浏览器或应用服务将所述otp密令值dp返回至用户的App进行显示;
App更新模块,用于当用户通过App调整飘移时间ctime后,经浏览器或应用服务将系统厂商代码spid、tokenid、用户身份sn、飘移时间ctime发送给Otp服务,Otp服务根据飘移时间ctime计算出窗口活跃时间window并对应保存至数据库;当用户的App发出获取otp密令值dp的请求时,经浏览器或应用服务将系统厂商代码spid、tokenid、用户身份sn发送给Otp服务,Otp服务根据窗口活跃时间window和飘移时间ctime获取otp密令值dp的列表otplist,并将列表otplist中最新的otp密令值dp经浏览器或应用服务返回至用户的App进行显示;
应用密令校验模块,用于当用户通过浏览器或应用服务输入App上显示的otp密令值dp进行应用登录时,浏览器或应用服务将otp密令值dp发送给Otp服务,Otp服务通过密令验证流程根据窗口活跃时间window和飘移时间ctime计算出一组otps,验证otps中是否有与接收到的otp密令值dp相等的元素,若有,则判断otp是否被使用过,若otp没有被使用过,则应用密令验证通过,用户的App登录成功。
其中,作为本实施例的一种更优或更为具体的实现方式,如图3所示,所述密令生成流程具体包括下述步骤:
S11、获取密钥盐值属性seek、otp密令长度otplength、用户身份sn以及系统当前时间time,并将用户身份Sn,密钥盐值属性seek保存至数据库;
S12、将所述密钥盐值属性seek的十六进制字符串转化为byte数组key;
S13、创建密钥skeySpec,设置密钥规格为ASE,密钥盐值为key;
S14、创建Cipher对象,设置加密算法模式为AES/ECB/NoPadding;
S15、初始化所述Cipher对象,加入所述密钥skeySpec;
S16、根据所述系统当前时间time和所述用户身份sn生成密令盐值,所述密令盐值为byte[]数组in;
S17、使用所述Cipher对象对byte[]数组in加密,返回byte[]数组out;
S18、定义一个char数组cs,长度为out.length,计算该char数组cs:
cs[i]=(char)(48+(out[i]&0xff)%10);
即cs[i]等于out[I]和0xff做一个与运算,然后除以10取余,最后加48;
S19、将所述char数组cs转成字符串,该字符串即为otp密令值dp。
如图4所示,所述密令验证流程具体包括下述步骤:
S21、获取到参数otp密令长度otpLength,用户身份sn,初始化生成的种子文件seed,otp密令值dp,飘移时间ctime的值drift,窗口活跃时间window,calShift,判断calShift值是否需要效验;若不需要效验,则让drift=0;将十六进制的seek转成byte数组key,作为密钥的盐值;
S22、生成密钥skeySpec,密钥盐值是key,加密方式AES;
S23、根据所述种子文件seed创建Cipher对象,采用AES/ECB/NoPadding模式进行加密;
S24、初始化所述Cipher对象,加入秘钥skeySpec;
S25、新建时间临时参数c并设置时间临时参数c的值为drift,根据所述时间临时参数c,所述用户身份sn,所述otp密令长度otplength,所述Cipher对象,生成密令v;
S26、判断密令v和所述otp密令值dp是否相等;若是,则结束;若否,则根据窗口活跃时间window,循环修改时间临时参数c,再次生成密令v,其中,时间临时参数c的分钟数计算在窗口活跃时间window以内,给时间临时参数c循环加减分钟数i,且-window<=i<=window;
S27、比较再次生成的密令v和所述otp密令值dp是否相等,若是,则结束;若否,返回null后结束。
其中,作为本实施例的一种更优或更为具体的实现方式,所述方法还包括:
Sn绑定/解绑模块,用于当用户通过浏览器或应用服务打开密令服务地址进行登录,Otp服务接收浏览器或应用服务发送的用户名username、pwd指令后进行用户信息验证,将用户名username和App上用户身份sn绑定;或者通过令牌列表,将用户名username和用户身份sn解除绑定。
由于本发明实施例二所介绍的装置,为实施本发明实施例一的方法所采用的装置,故而基于本发明实施例一所介绍的方法,本领域所属人员能够了解该装置的具体结构及变形,故而在此不再赘述。凡是本发明实施例一的方法所采用的装置都属于本发明所欲保护的范围。
基于同一发明构思,本申请提供了实施例一对应的电子设备实施例,详见实施例三。
实施例三
本实施例提供了一种电子设备,如图6所示,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,处理器执行计算机程序时,可以实现实施例一中任一实施方式。
由于本实施例所介绍的电子设备为实施本申请实施例一中方法所采用的设备,故而基于本申请实施例一中所介绍的方法,本领域所属技术人员能够了解本实施例的电子设备的具体实施方式以及其各种变化形式,所以在此对于该电子设备如何实现本申请实施例中的方法不再详细介绍。只要本领域所属技术人员实施本申请实施例中的方法所采用的设备,都属于本申请所欲保护的范围。
基于同一发明构思,本申请提供了实施例一对应的存储介质,详见实施例四。
实施例四
本实施例提供一种计算机可读存储介质,如图7所示,其上存储有计算机程序,该计算机程序被处理器执行时,可以实现实施例一中任一实施方式。
本申请实施例中提供的技术方案,至少具有如下技术效果或优点:在App初始化时,就将系统厂商代码发送给Otp服务,由Otp服务生成用户身份sn,并据此以及系统当前时间time生成otp密令值dp,从而让otp密令分别与用户身份sn、系统厂商代码联系起来。且用户可通过App调整飘移时间,使App得到更新,调整后的飘移时间同样与系统厂商代码、用户身份sn绑定保存,计算出窗口活跃时间,Otp服务根据窗口活跃时间和飘移时间获取otp密令值dp的列表,以供用户登录App使用。在otp密令验证时,Otp服务根据窗口活跃时间和飘移时间计算出一组otps,用于验证用户登录App进使用的otp密令是否被使用过。从而实现了完整的统一动态密令的验证,即可通过系统厂商代码来统一该厂端下所有系统的动态密令的验证,解决了一个厂商多系统下使用不同验证的不统一性,在保证了系统的验证安全性的基础上减少了系统验证成本。
本领域内的技术人员应明白,本发明的实施例可提供为方法、装置或系统、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
虽然以上描述了本发明的具体实施方式,但是熟悉本技术领域的技术人员应当理解,我们所描述的具体的实施例只是说明性的,而不是用于对本发明的范围的限定,熟悉本领域的技术人员在依照本发明的精神所作的等效的修饰以及变化,都应当涵盖在本发明的权利要求所保护的范围内。

Claims (10)

1.一种App登录的动态口令实现方法,其特征在于:包括App初始化过程、App更新过程和应用密令校验过程;
所述App初始化过程是:用户的App被打开后请求初始化,经浏览器或应用服务将系统厂商代码spid发送给Otp服务,Otp服务生成用户身份sn、密钥盐值属性seek,通过所述用户身份sn、密钥盐值属性seek以及系统当前时间time根据密令生成流程生成otp密令值dp;经浏览器或应用服务将所述otp密令值dp返回至用户的App进行显示;
所述App更新过程是:当用户通过App调整飘移时间ctime后,经浏览器或应用服务将系统厂商代码spid、tokenid、用户身份sn、飘移时间ctime发送给Otp服务,Otp服务根据飘移时间ctime计算出窗口活跃时间window并对应保存至数据库;当用户的App发出获取otp密令值dp的请求时,经浏览器或应用服务将系统厂商代码spid、tokenid、用户身份sn发送给Otp服务,Otp服务根据窗口活跃时间window和飘移时间ctime获取otp密令值dp的列表otplist,并将列表otplist中最新的otp密令值dp经浏览器或应用服务返回至用户的App进行显示;
所述应用密令校验过程是:当用户通过浏览器或应用服务输入App上显示的otp密令值dp进行应用登录时,浏览器或应用服务将otp密令值dp发送给Otp服务,Otp服务通过密令验证流程根据窗口活跃时间window和飘移时间ctime计算出一组otps,验证otps中是否有与接收到的otp密令值dp相等的元素,若有,则判断otp是否被使用过,若otp没有被使用过,则应用密令验证通过,用户的App登录成功。
2.根据权利要求1所述的一种App登录的动态口令实现方法,其特征在于:所述密令生成流程具体包括下述步骤:
S11、获取密钥盐值属性seek、otp密令长度otplength、用户身份sn以及系统当前时间time,并将用户身份Sn,密钥盐值属性seek保存至数据库;
S12、将所述密钥盐值属性seek的十六进制字符串转化为byte数组key;
S13、创建密钥skeySpec,设置密钥规格为ASE,密钥盐值为key;
S14、创建Cipher对象,设置加密算法模式为AES/ECB/NoPadding;
S15、初始化所述Cipher对象,加入所述密钥skeySpec;
S16、根据所述系统当前时间time和所述用户身份sn生成密令盐值,所述密令盐值为byte[]数组in;
S17、使用所述Cipher对象对byte[]数组in加密,返回byte[]数组out;
S18、定义一个char数组cs,长度为out.length,计算该char数组cs:
cs[i]=(char)(48+(out[i]&0xff)%10);
即cs[i]等于out[I]和0xff做一个与运算,然后除以10取余,最后加48;
S19、将所述char数组cs转成字符串,该字符串即为otp密令值dp。
3.根据权利要求2所述的一种App登录的动态口令实现方法,其特征在于:所述密令验证流程具体包括下述步骤:
S21、获取到参数otp密令长度otpLength,用户身份sn,初始化生成的种子文件seed,otp密令值dp,飘移时间ctime的值drift,窗口活跃时间window,calShift,判断calShift值是否需要效验;若不需要效验,则让drift=0;将十六进制的seek转成byte数组key,作为密钥的盐值;
S22、生成密钥skeySpec,密钥盐值是key,加密方式AES;
S23、根据所述种子文件seed创建Cipher对象,采用AES/ECB/NoPadding模式进行加密;
S24、初始化所述Cipher对象,加入秘钥skeySpec;
S25、新建时间临时参数c并设置时间临时参数c的值为drift,根据所述时间临时参数c,所述用户身份sn,所述otp密令长度otplength,所述Cipher对象,生成密令v;
S26、判断密令v和所述otp密令值dp是否相等;若是,则结束;若否,则根据窗口活跃时间window,循环修改时间临时参数c,再次生成密令v,其中,时间临时参数c的分钟数计算在窗口活跃时间window以内,给时间临时参数c循环加减分钟数i,且-window<=i<=window;
S27、比较再次生成的密令v和所述otp密令值dp是否相等,若是,则结束;若否,返回null后结束。
4.根据权利要求1所述的一种App登录的动态口令实现方法,其特征在于:还包括Sn绑定/解绑过程;
所述Sn绑定/解绑过程是:当用户通过浏览器或应用服务打开密令服务地址进行登录,Otp服务接收浏览器或应用服务发送的用户名username、pwd指令后进行用户信息验证,将用户名username和App上用户身份sn绑定;或者通过令牌列表,将用户名username和用户身份sn解除绑定。
5.一种App登录的动态口令实现装置,其特征在于:包括:
App初始化模块,用于在用户的App被打开后请求初始化,经浏览器或应用服务将系统厂商代码spid发送给Otp服务,Otp服务生成用户身份sn、密钥盐值属性seek,通过所述用户身份sn、密钥盐值属性seek以及系统当前时间time根据密令生成流程生成otp密令值dp;经浏览器或应用服务将所述otp密令值dp返回至用户的App进行显示;
App更新模块,用于当用户通过App调整飘移时间ctime后,经浏览器或应用服务将系统厂商代码spid、tokenid、用户身份sn、飘移时间ctime发送给Otp服务,Otp服务根据飘移时间ctime计算出窗口活跃时间window并对应保存至数据库;当用户的App发出获取otp密令值dp的请求时,经浏览器或应用服务将系统厂商代码spid、tokenid、用户身份sn发送给Otp服务,Otp服务根据窗口活跃时间window和飘移时间ctime获取otp密令值dp的列表otplist,并将列表otplist中最新的otp密令值dp经浏览器或应用服务返回至用户的App进行显示;
应用密令校验模块,用于当用户通过浏览器或应用服务输入App上显示的otp密令值dp进行应用登录时,浏览器或应用服务将otp密令值dp发送给Otp服务,Otp服务通过密令验证流程根据窗口活跃时间window和飘移时间ctime计算出一组otps,验证otps中是否有与接收到的otp密令值dp相等的元素,若有,则判断otp是否被使用过,若otp没有被使用过,则应用密令验证通过,用户的App登录成功。
6.根据权利要求5所述的一种App登录的动态口令实现装置,其特征在于:所述密令生成流程具体包括下述步骤:
S11、获取密钥盐值属性seek、otp密令长度otplength、用户身份sn以及系统当前时间time,并将用户身份Sn,密钥盐值属性seek保存至数据库;
S12、将所述密钥盐值属性seek的十六进制字符串转化为byte数组key;
S13、创建密钥skeySpec,设置密钥规格为ASE,密钥盐值为key;
S14、创建Cipher对象,设置加密算法模式为AES/ECB/NoPadding;
S15、初始化所述Cipher对象,加入所述密钥skeySpec;
S16、根据所述系统当前时间time和所述用户身份sn生成密令盐值,所述密令盐值为byte[]数组in;
S17、使用所述Cipher对象对byte[]数组in加密,返回byte[]数组out;
S18、定义一个char数组cs,长度为out.length,计算该char数组cs:
cs[i]=(char)(48+(out[i]&0xff)%10);
即cs[i]等于out[I]和0xff做一个与运算,然后除以10取余,最后加48;
S19、将所述char数组cs转成字符串,该字符串即为otp密令值dp。
7.根据权利要求5所述的一种App登录的动态口令实现装置,其特征在于:所述密令验证流程具体包括下述步骤:
S21、获取到参数otp密令长度otpLength,用户身份sn,初始化生成的种子文件seed,otp密令值dp,飘移时间ctime的值drift,窗口活跃时间window,calShift,判断calShift值是否需要效验;若不需要效验,则让drift=0;将十六进制的seek转成byte数组key,作为密钥的盐值;
S22、生成密钥skeySpec,密钥盐值是key,加密方式AES;
S23、根据所述种子文件seed创建Cipher对象,采用AES/ECB/NoPadding模式进行加密;
S24、初始化所述Cipher对象,加入秘钥skeySpec;
S25、新建时间临时参数c并设置时间临时参数c的值为drift,根据所述时间临时参数c,所述用户身份sn,所述otp密令长度otplength,所述Cipher对象,生成密令v;
S26、判断密令v和所述otp密令值dp是否相等;若是,则结束;若否,则根据窗口活跃时间window,循环修改时间临时参数c,再次生成密令v,其中,时间临时参数c的分钟数计算在窗口活跃时间window以内,给时间临时参数c循环加减分钟数i,且-window<=i<=window;
S27、比较再次生成的密令v和所述otp密令值dp是否相等,若是,则结束;若否,返回null后结束。
8.根据权利要求5所述的一种App登录的动态口令实现装置,其特征在于:还包括:
Sn绑定/解绑模块,用于当用户通过浏览器或应用服务打开密令服务地址进行登录,Otp服务接收浏览器或应用服务发送的用户名username、pwd指令后进行用户信息验证,将用户名username和App上用户身份sn绑定;或者通过令牌列表,将用户名username和用户身份sn解除绑定。
9.一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述程序时实现如权利要求1至4任一项所述的方法。
10.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,该程序被处理器执行时实现如权利要求1至4任一项所述的方法。
CN202111184884.7A 2021-10-12 2021-10-12 一种App登录的动态口令实现方法、装置、设备和介质 Active CN114095154B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202111184884.7A CN114095154B (zh) 2021-10-12 2021-10-12 一种App登录的动态口令实现方法、装置、设备和介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202111184884.7A CN114095154B (zh) 2021-10-12 2021-10-12 一种App登录的动态口令实现方法、装置、设备和介质

Publications (2)

Publication Number Publication Date
CN114095154A CN114095154A (zh) 2022-02-25
CN114095154B true CN114095154B (zh) 2023-06-27

Family

ID=80296730

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202111184884.7A Active CN114095154B (zh) 2021-10-12 2021-10-12 一种App登录的动态口令实现方法、装置、设备和介质

Country Status (1)

Country Link
CN (1) CN114095154B (zh)

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103428001A (zh) * 2013-09-05 2013-12-04 中国科学院信息工程研究所 一种隐式增强便捷web身份认证方法
KR20210006782A (ko) * 2019-07-09 2021-01-19 에스지에이 주식회사 클라이언트별 능동적 시각 오프셋 윈도우를 통한 고유 시각 방식의 otp 설정 방법

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20120203663A1 (en) * 2011-02-07 2012-08-09 Carpadium Consulting Pty. Ltd. Method and apparatus for authentication utilizing location
CN102843236B (zh) * 2012-09-12 2014-12-10 飞天诚信科技股份有限公司 一种动态口令的生成及认证方法与系统
CN103731272B (zh) * 2014-01-06 2017-06-06 飞天诚信科技股份有限公司 一种身份认证方法、系统及设备

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103428001A (zh) * 2013-09-05 2013-12-04 中国科学院信息工程研究所 一种隐式增强便捷web身份认证方法
KR20210006782A (ko) * 2019-07-09 2021-01-19 에스지에이 주식회사 클라이언트별 능동적 시각 오프셋 윈도우를 통한 고유 시각 방식의 otp 설정 방법

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
基于标识的动态口令系统;刘莹;龙毅宏;;软件(第06期);全文 *

Also Published As

Publication number Publication date
CN114095154A (zh) 2022-02-25

Similar Documents

Publication Publication Date Title
US11669465B1 (en) Secure storage of data through a multifaceted security scheme
US7571489B2 (en) One time passcode system
US9064094B1 (en) Protected resource access control utilizing intermediate values of a hash chain
US9762392B2 (en) System and method for trusted provisioning and authentication for networked devices in cloud-based IoT/M2M platforms
CN106685973B (zh) 记住登录信息的方法及装置、登录控制方法及装置
CN101258505B (zh) 安全的软件更新
US10164963B2 (en) Enforcing server authentication based on a hardware token
US10878080B2 (en) Credential synchronization management
CN111708991A (zh) 服务的授权方法、装置、计算机设备和存储介质
CN109921902B (zh) 一种密钥管理方法、安全芯片、业务服务器及信息系统
KR102013983B1 (ko) 애플리케이션 무결성 인증 방법 및 인증 서버
JP6476167B2 (ja) 自己認証デバイス及び自己認証方法
CN110740038B (zh) 区块链及其通信方法、网关、通信系统和存储介质
US10686596B2 (en) Mutually authenticated adaptive management interfaces for interaction with sensitive infrastructure
CN111405016A (zh) 用户信息获取方法及相关设备
US8732456B2 (en) Enterprise environment disk encryption
CN105681291B (zh) 一种实现多客户端统一认证方法及系统
CN114095154B (zh) 一种App登录的动态口令实现方法、装置、设备和介质
US10999074B2 (en) Dual-token authentication for electronic devices
WO2022206203A1 (en) Connection resilient multi-factor authentication
JP5963382B1 (ja) ワンタイム認証システム
CN108809651B (zh) 密钥对管理方法和终端
CN111698299A (zh) Session对象复制方法、装置、分布式微服务架构及介质
CN116647413B (zh) 应用登录方法、装置、计算机设备和存储介质
US11790057B2 (en) Controlling program execution using an access key

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant