APP下载

基于TOTP的移动端双因子身份认证方法

2021-10-16张佳梁少华

湖北汽车工业学院学报 2021年3期
关键词:服务端计数器口令

张佳,梁少华

(1.湖北文理学院 理工学院,湖北 襄阳 441025;2.长江大学 计算机科学学院,湖北 荆州 434020)

身份认证是指用户在进入目标系统访问特定资源时,目标系统对身份的确认和权限的授予。一般情况下,能够唯一标识用户身份的介质包括:1)私密信息,仅用户自己知道的信息,如用户密码;2)私人物品,用户的个人用品,如RFID标签、身份证、U盾、手机等;3)生物特征,用户的生理或行为特征,如指纹、面部、虹膜、步态等。这3种方式为身份认证的3种“因子”,理论上在应用系统中采用的认证因子越多,则用户的身份真实性越可靠、系统的安全性越高。基于静态口令进行移动端身份认证,除了易于泄露之外,还难以记忆且易被攻击。私人物品识别大多需要特定的识别方式,如RFID标签和身份证等需要相应的射频读卡设备才能识别,U盾需要通过USB接口支持,因此移动终端大多采用了生物特征识别的方式进行身份认证。隐式身份认证是目前移动端的主要研究方向。文献[1]对基于移动终端的隐式身份认证技术现状进行了综述,并提出了基于本地和网络的2种隐式身份认证框架。文献[2]提出将用户使用系统的多个正常行为习惯作为基本属性并赋以各自的权重,构建相应的决策矩阵,从而最终实现基于移动终端的隐式因子身份认证。文献[3]提出对于物联网环境下的移动设备,针对用户的步态、击键习惯进行识别,从而实现用户身份认证。这一类隐式身份认证方式虽然简化了用户身份认证的复杂性,但目前其准确性和抗攻击性还有待进一步增强,尚未有成熟的产品应用。文献[4]提出移动端的双因子身份认证方法,将用户静态口令作为第一认证因子,移动设备的动态特征作为第二认证因子,解决移动环境下的用户身份认证问题。但该方法需要获取用户移动设备的相关权限,若设备未同意授权则无法获取设备的动态特征,因此具有一定的局限性。针对上述方法存在的局限性,考虑到生物特征识别技术的日趋成熟以及安全性的不断提升[5],提出基于“生物特征+手机动态口令(一次性口令)”的方法,实现移动端的双因子身份认证。

1 OTP算法

一次性口令(one time password,OTP)也称动态口令,基于某种算法自动生成,能够保证唯一性,每次生成的口令具有指定的超时时间,使用过1次或超时未使用都将导致该口令失效。OTP算法包括HOTP算 法(hmac-based one-time password algo⁃rithm)和TOTP算法(time-based one-time password algorithm),TOTP算法基于HOTP算法实现。

1)基于HOTP的一次性口令IETF RFC4266发布了HOTP一次性口令算法,有K、C、P共3个输入参数。其中K为在服务端和客户端之间共享的密钥,且每个HOTP算法都有唯一的密钥;C为运动因子,是1个长度为8B的计数器,每次生成新的口令时都会自增,在服务端和客户端之间保持同步;P为最终生成口令的长度。HOTP算法为

式中:Truncate表示由K、C计算得到长度为160bit的哈希值转换为一次性口令的过程。主要步骤如图1所示:1)基于HMAC-SHA-1算法,根据K与C生成1个长度为20B的字符串HS;2)获取HS最后1个字节(93)的后4位(3)作为偏移地址Offset,然后从HS中截取HS[Offset]…HS[Offset+3],得到1个长度为4B的字符串25B91AB2,返回该字符串的后31位25B91AB2(避免某些处理器将最高位作为符号位);3)将Sbits转换成为十进制632887986;4)根据P(P≥6),将Snum对10P取模,得到最终长度为P的口令887986。

图1 HOTP算法步骤

2)基于时间计数器的HOTP-TOTP TOTP算法与HOTP算法基本一致,TOTP中C为

式中:T0为生成口令时的初始计数时间戳;T为当前时间戳;X为时间窗口,表示生成1次新计数器的间隔时间,取30s。

2 OTP算法优化

2.1 计数器不同步问题

OTP的客户端与服务端通过各自计数器的当前值计算得到新口令,正常情况下,两端的计数器是同步的。OTP客户端(硬件设备如口令卡、软件令牌)计数器Cclient自增后,计算得到新的动态口令Dclient。当OTP服务端接收到该口令后,与通过服务端计数器Cserver计算得到的动态口令Dserver进行比对,每次新生成的口令相同,可以通过验证。

若出现如下计数器不同步的情况,则无法通过验证:1)HOTP客户端请求获取OTP口令(获取后计数器自增),但未输入并发送到服务端进行验证;2)TOTP客户端与服务端的时间不同步。

2.2 同步处理机制

2.2.1 TOTP算法

为了解决由于时间不同步导致的计数器不同步的问题,可设置1个偏移量Tc,当服务端根据本地时间T生成的口令与客户端发送的口令不匹配时,可分别向前T-X、T-2X、…、T-(Tc-1)X、T-TcX和向后T+X、T+2X、…、T+(Tc-1)X、T+TcX进行探测。若得到相匹配的口令后,此时返回验证通过,否则返回验证失败。解决方案如图2所示。

图2 TOTP同步处理机制

1)正常情况 客户端与服务端的本地时间同步,两端的计数器也同步。客户端每生成1次动态口令后,便发送至服务端进行验证,服务端根据通过相同的计数器得到相匹配的口令,验证通过。

2)计数器不同步情况 当出现客户端生成了口令但用户输入滞后、客户端时间发生漂移,或由于网络延迟等问题,都将导致Ccltent与Cserver不同步。

3)下一次验证 在Ccltent与Cserver不同步的情况下,客户端生成动态口令后发送到服务端进行验证,此时服务端根据计数器得到的口令与客户端不匹配,可设置1个时间窗口,分别向前和向后进行探测,在探测偏移量不超过Tc时,若计算得到相匹配的口令时返回验证通过,否则返回验证失败。

4)异常行为 在第3种情况下,若返回验证失败时,客户端仍能够再次提交口令并发起验证申请,此时服务端重复上1步的验证过程。为了避免恶意用户(无有效的计数器)采用暴力方式破解,算法设置累计探测次数的阈值S,若探测次数N大于S,则认定为异常行为。

2.2.2 HOPT算法

在计数器不同步的情况下,服务端生成的口令与客户端发送的口令不匹配。此时Cserver自增,继续向前探测(N≤S),若能够匹配则返回成功(此时计数器已同步),否则返回失败。

3 方案设计

3.1 身份认证流程

基于TOTP算法实现了移动终端应用的双因子身份认证,其核心流程如图3所示。

图3 身份认证流程

3.1.1 用户注册

用户通过手机进行注册,注册时提交包含人脸和声纹的基本信息到服务端。此时服务端将产生并保存1个用于生成一次性口令的唯一密钥,并将该密钥返回给移动终端应用,保存在手机中。

3.1.2 用户身份验证

用户身份验证分为生物特征识别和动态口令验证,实现双因子身份认证。

1)生物特征识别 首先通过用户ID获取用户的基本信息,并提取服务端存储的用户人脸和声纹信息;然后通过移动终端录制1段不超过10s的视频(基于Android提供的MediaRecorder实现视频录制以及压缩)。录制视频时,要求用户读出1段指定的随机文本,并对视频中的人脸图像进行采集(基于Android提供的统一接口MediaMetadataRe⁃triever实现视频文件的解析并获取帧和元数据,得到指定时间点的截图)、预处理以及特征提取,同时对声纹特征进行提取;最后采用指定的模式匹配算法对人脸和声纹进行比对。

2)动态口令验证 每次认证时分别在移动端和服务端基于OTP算法生成动态口令,并进行一致性比对:在移动端,首先从手机中读取预先存储的OTP密钥,然后基于手机的当前时间戳生成相应的Dclient并显示在用户界面中,最后用户根据提示的Dclient进行输入并提交;在服务端,首先根据用户请求(含用户ID与填写的动态口令)获取动态口令密钥,其次根据密钥务器当前时间生成相应的Dserver,最后将Dserver与Dclient进行比对,并返回验证结果到客户端进行显示。

3.2 动态口令算法

1)基于时间的一次性口令生成算法 假设系统支持hmac-sha1加密算法,且服务端与客户端已保存相同的密钥;输入为共享密钥、当前时间、动态口令长度;输出为动态口令。

2)动态口令验证算法 假设服务端与客户端已保存相同的密钥;输入为共享密钥、服务端当前时间、用户输入的动态口令、时间窗口、探测偏移量、动态口令长度;输出为是否验证通过。

3.3 运行结果

移动终端运行界面如图4所示。用户首先录制不超过10s的视频并读出1段随机文本,程序从中截取人脸和声纹信息;验证通过后输入手机上显示的6位动态口令,并发送到服务端进行验证,实现了“生物特征+动态口令”的双因子验证过程。

图4 身份认证界面

4 结论

文中提出“生物特征+动态口令”的双因子身份认证方法。采用人脸和声纹的组合方式进行生物特征验证,基于TOTP算法生成动态口令进行二次验证,提高了系统的安全性。文中提出的TOTP同步处理机制中,探测时间窗口设置偏大可能给恶意用户暴露了更大的攻击时间窗口,设置偏小则可能无法实现正常情况下的身份认证,后续将根据具体情况在安全性和可用性之间进行权衡。

猜你喜欢

服务端计数器口令
采用虚拟计数器的电子式膜式燃气表
五十一进制计数器的设计与仿真实现
高矮胖瘦
口 令
新时期《移动Web服务端开发》课程教学改革的研究
好玩的“反口令”游戏
SR620型与53230A型计数器的性能测试
算盘是个“小气鬼”
健身气功·五禽戏教学口令
摸清黑客套路防范木马侵入