在信息系统安全防护中,身份鉴别作为系统准入的必要手段,始终是一个绕不开又至关重要的话题。身份鉴别经常被解释为:根据“你知道什么”、“你拥有什么”、“你是谁”来证明“你”的身份。身份鉴别信息/介质从传统的物理钥匙、暗号,到静态口令、ID标签卡,到CPU卡、UKey、动态令牌,再到指纹、人脸、虹膜等,推陈出新、各有所长。多因素身份鉴别则是通过综合多种身份鉴别方式,以增强鉴别的强度。
从原理上看,无论是物理钥匙、暗号、静态口令、ID标签卡,还是指纹、人脸、虹膜等生物特征,都只是一种静态的身份鉴别信息/介质,因此在理论上都存在着可复制、易丢失、难以抵抗重放攻击等风险。密码技术作为保障网络与信息安全最有效、最可靠、最经济的关键核心技术,具有内蕴的加密和认证属性,成为了实现身份鉴别最自然、最有力的手段。动态口令认证技术就是使用密码技术实现身份鉴别的典型例子。
动态令牌是生成并显示动态口令(OTP/One-Time Password)的载体,常见的银行电子密码器、Google的Authenticator身份认证器软件,都属于动态令牌的范畴。由于动态口令认证技术的实现原理不一,这在对信息系统进行合规性检查时,给测评机构和信息系统责任单位带来了一定的困扰。本文总结了常见的动态口令认证技术,对动态令牌和动态令牌认证系统的主要功能和安全要求进行了简述,并对动态口令认证实现身份鉴别的测评实施和判定提出了一些建议。
一、相关概念与标准
OTP:One-Time Password
HOTP:HMAC-Based One-Time Password
TOTP:Time-Based One-Time Password
HMAC:The Keyed-Hash Message Authentication Code
RFC4226 HOTP: An HMAC-Based One-Time Password Algorithm
RFC6238 TOTP: Time-Based One-Time Password Algorithm
FIPS PUB 198 The Keyed-Hash Message Authentication Code(HMAC)
GM/T 0021-2012《动态口令密码应用技术规范》
GB/T 38556-2020《信息安全技术 动态口令密码应用技术规范》
GB/T 37092-2018《信息安全技术 密码模块安全要求》
GB/T 15852.2-2012《信息技术 安全技术 消息鉴别码 第2部分采用专用杂凑函数的机制》
GB/T 15843.1-2017《信息技术 安全技术 实体鉴别 第1部分:总则》
GB/T 15843.4-2008《信息技术 安全技术 实体鉴别 第4部分:采用密码校验函数的机制》
二、动态口令运算方法
对于动态口令生成方式,我们主要关注以下要素:
- 动态因子
- 种子密钥
- 动态口令生成算法
- 动态口令生成算法中使用的基础密码算法
为了方便起见,我们将4从3中独立了出来,此时动态口令生成算法不指定具体的基础密码算法,而是同一类理论上可替换的密码算法,如对称密码算法、杂凑密码算法。
- HOTP生成:HOTP(K,C) = Truncate(HMAC-HASH(K,C)),其中HASH=SHA-1
- TOTP生成:TOTP(K,T) = Truncate(HMAC-HASH(K,T)),其中HASH=SHA-1/SHA-256/SHA-512
- GMOTP生成:GMOTP(K,T|C|Q)=Truncate(F(K,T|C|Q)),其中F=SM3/SM4
注1:K为种子密钥,T为时间因子,C为事件因子,Q为挑战因子,Truncate()为截位函数。
注2:T|C|Q的含义为T和C必选一个、Q可选,然后进行拼接。
注3:当F为SM3算法时,F(X,Y)=SM3(X|Y);当F为SM4算法时,F(X,Y)=SM4_ENCX(Y),采用类似于CBC的模式(IV为0串,异或改为算术加,高位溢出舍去)。
注4:其他细节本文档暂不详解,如时间因子的转化、数据编码/填充/截断等,请以相关标准为准。
三、动态令牌实现身份鉴别
将动态因子对应到时变参数:
- 时间因子T→时间戳
- 事件因子C→序号
- 挑战因子Q→随机数
鉴别发起方和验证方共同拥有种子密钥(鉴别密钥),并约定好动态因子的选取,两方通过相同的动态口令算法(校验函数),对相同的动态因子和种子密钥(时变参数和鉴别密钥)进行计算,分别生成相同的动态口令(校验值),因此满足GB/T 15843.4-2008《信息技术安全技术实体鉴别第4部分:采用密码校验函数的机制》规定的鉴别机制。仅含时间因子或事件因子时,为一次传递单向鉴别;含挑战因子时,为两次传递单向鉴别。
四、动态令牌认证系统工作流程
动态口令认证系统为应用系统提供动态口令鉴别服务,由动态令牌、鉴别模块、密钥管理模块组成。
动态令牌生成动态口令,鉴别模块验证动态口令的正确性,密钥管理模块负责动态口令的密钥管理,应用系统将动态口令按照指定的协议报文发送至鉴别模块进行鉴别。
五、时间同步
动态令牌可以当作是一个离线设备,通过内部时钟或维护的计数器或应用服务产生的挑战码(手动输入进令牌)来与认证系统保持相同的动态因子。当通过内部时钟生成实时时间来作为时间因子时,在动态令牌的使用年限内,是有可能出现小幅偏移的情况的,此时需要对令牌进行同步。注意令牌同步并不是调整令牌本身,而是修改认证系统中对应令牌的偏移量。
同步分大窗口(±10认证周期)、中窗口(±5认证周期)、小窗口同步(±2认证周期),用于判断偏移量的大小。
六、常见问题分析
(1)HOTP与TOTP有什么区别?
HOTP的“H”意为“HMAC-Based”,即“基于HMAC”。从形式上看,TOTP也可以认为是一种广义的HOTP。
当然,现行标准已规定了HOTP和TOTP的动态因子和特定算法,因此在实践中还是有必要区分:HOTP使用事件因子C(具体为计数器),通过HMAC-SHA-1算法进行计算;而TOTP使用时间因子T,通过HMAC-SHA-1 / HMAC-SHA256 / HMAC-SHA512算法进行计算。
(2)使用短信验证码进行认证是否属于动态口令认证技术?
不属于。短信验证码是应用服务商为确认用户身份是否真实而采用的有别于传统静态口令验证的认证手段,在接收到客户端请求后,通过第三方服务向用户手机发送一条即时的包含一串定长字符的短信,用户将该串字符输入应用的鉴别界面,以确认是机主本人在进行登录等敏感操作。
注意到此处仅利用到真实用户持有一种不同于静态口令的鉴别介质——一台在注册时与用户绑定的可收发讯息的移动终端(准确来说是SIM卡),并没有利用到用户及用户终端的计算能力,用户及用户终端未持有密钥这一关键鉴别信息。此外,下发短信中的字符串本身就是敏感信息,而在合规的身份鉴别过程中(包括动态口令验证),鉴别方不发送数据,或者仅发送不含显式敏感数据的中间信息。因此短信验证码认证不属于动态口令认证技术,也不是合规的身份鉴别方式。
(3)国密OTP是否就是将SHA系列哈希算法替换成SM3算法,根据采用的动态因子成为国密版的HOTP和TOTP?
国密OTP不仅是基础密码算法与HOTP/TOTP不一致,动态口令生成算法本身也不一样。国密OTP可以采用SM3算法或SM4算法。当采用SM3算法时,并不是采用HMAC算法对种子密钥和动态因子进行运算,而是将种子密钥和动态因子拼接后进行SM3杂凑;当采用SM4算法时,用种子密钥对动态因子进行加密处理,这种使用对称密码算法实现的方法比较别致。
动态因子 | 种子密钥 | 基础密码算法 | 动态口令生成算法 | |
HOTP | C | ≥128bit | SHA-1 | 见第二节 |
TOTP | T | HMAC输出长度 | SHA-1/SHA256/SHA512 | |
国密OTP(SM3) | T|C|Q | ≥128bit | SM3 | |
国密OTP(SM4) | T|C|Q | ≥128bit | SM4 |
(4)动态令牌的密码产品合规性如何进行认定?
在商用密码产品认证体系中,动态令牌(SRK)和动态令牌认证系统(SRT)为两类密码产品,分别进行商密产品认证。在测评时,一般需要分别对动态令牌和动态令牌认证系统进行合规性考察。
动态令牌一般为硬件密码模块,目前已通过商密产品认证的动态令牌的密码模块安全等级只有一级。不排除后续有动态令牌产品通过更高等级的认证。
动态令牌认证系统为系统级密码产品,无密码模块等级,在测评时难以理想化地定性其形态,建议咨询一下客户和厂商是否含密码模块(服务器密码机、软件密码模块等)或密钥管理系统,有则进一步追溯密码模块的安全等级。
(5)厂商提供了动态令牌的商密产品认证证书,但客户实际使用的是手机APP令牌,这种情况可以认定密码产品合规吗?
GM/T 0021-2012《动态口令密码应用技术规范》和GB/T 38556-2020《信息安全技术 动态口令密码应用技术规范》作为该类密码产品的技术标准,主要规定了硬件形态的动态令牌要求。在原商用密码产品型号证书中,赋予动态令牌产品型号的前缀为“SRK”,第三位“K”代表形态为板卡类。
此外,对于软件形态的动态令牌,我们需要追究其种子密钥的生成、分发、存储、使用等生存周期管理,尤其是密钥存储方面,难以溯源到一个可靠的“安全根”,这也是软件密码模块设计的一个痛点。
当然,厂商为了客户使用和管理方便,可能开发了相关的软件产品。厂商以此软件产品通过商用密码产品认证,才能认为密码产品合规。在现行的商用密码产品认证体系中,认证证书编号上的数字第6~7位代表产品类型,14为动态令牌/动态令牌认证系统,22为其他密码模块(包括软件密码模块),例如查询商密认证业务网得知,GM00441142021xxxx为某公司研发的动态令牌。若将来出现了动态令牌以软件形态通过商密产品认证的,产品类型可能是“22”而不一定是“14”,这一点值得留意。
(6)动态令牌/动态令牌认证系统具有有效的商用密码产品认证证书,相关测评项的“密钥管理”维度是否可直接判为合规?
不能。还至少需要考虑以下内容:
- 如用于应用系统身份鉴别,需测试动态口令认证是否得到了有效应用。
- 在将动态令牌认证系统本身作为设备层面的测评对象时,仍需测评对其进行管理时的身份鉴别机制和远程管理通道等。
- 需测评在动态令牌/动态令牌认证系统中种子密钥的生存周期管理,尤其是生成/分散、导入(分发)、存储、使用等流程。
- 需查看动态令牌认证系统的管理界面,如令牌序列号管理、密钥管理、令牌状态、连续错误次数、令牌偏移量、算法配置等(如有)。
- 需核查测评等级与密码模块安全等级是否匹配,如第三级信息系统应采用符合GB/T 37092二级及以上的动态令牌产品,理论上动态令牌认证系统中含有的密码模块部件也应符合GB/T 37092二级及以上要求。
(7)使用Google Authenticator或Microsoft Authenticator作为动态令牌用于服务器运维人员的身份鉴别,如何对服务器的“身份鉴别”测评项进行判定?
Google Authenticator和Microsoft Authenticator是应用商店里常见的OTP,以下给出了一个测评示例(暂不考虑OTP认证服务端)。
量化评估 | 风险判定 | |||
D | A | K | ||
Google Authenticator | √ 支持HOTP、TOTP。 | × 使用了非合规的密码算法和动态口令生成算法。 | × 密钥生成、分发、存储等不合规,密码产品不合规。 | 1.如使用HOTP,需针对SHA-1算法判定高风险;如使用基于SHA-1的TOTP,判为高风险。 2.密钥管理方面的风险等级需根据实际情况判定。 |
Microsoft Authenticator | √ 支持TOTP。 | × 使用了非合规的密码算法和动态口令生成算法。 | × 密钥生成、分发、存储等不合规,密码产品不合规。 | 1. 如使用基于SHA-1的TOTP,判为高风险。 2.密钥管理方面的风险等级需根据实际情况判定。 |
市面上开源的OTP或OTP认证服务端种类较多,如Google Authenticator(与商店版不太一致,且已停止维护)、FreeOTP/FreeOTP+、LinOTP等,大都支持HOTP和TOTP,具体结论以实际测评情况为准。