当前位置: 首页 > 科技观察

密码学应用安全评价要点中动态口令技术常见问题探讨

时间:2023-03-23 09:51:09 科技观察

在信息系统安全保护中,身份认证作为系统访问的必要手段,一直是绕不开的重要课题。身份通常被理解为:根据“你知道什么”、“你有什么”、“你是谁”来证明“你”的身份。身份认证信息/介质从传统的物理密钥和密码,到静态密码、ID标签卡,再到CPU卡、UKeys、动态令牌,再到指纹、人脸、虹膜等,各有所长。多因素身份认证是通过组合多种身份认证方式来增强认证强度。原则上,无论是物理钥匙、密码、静态密码、身份标签,还是指纹、人脸、虹膜等生物识别,都只是一种静态的身份识别信息/媒介,所以理论上存在复制、易丢失、丢失等风险。难以抵抗重放攻击。密码学作为保障网络与信息安全最有效、最可靠、最经济的关键核心技术,具有与生俱来的加密和认证属性,已成为最自然、最强大的身份认证手段。动态口令认证技术是利用密码技术实现身份认证的典型例子。动态令牌是生成和显示动态密码(OTP/One-TimePassword)的载体。常见的银行电子密码和谷歌的Authenticator软件都属于动态令牌的范畴。由于动态口令认证技术的实现原理不同,这给评价机构和信息系统责任单位在对信息系统进行合规性检查时带来了一定的困扰。本文总结了常用的动态口令认证技术,简要描述了动态令牌和动态口令认证系统的主要功能和安全要求,并对动态口令认证的评估、实施和判断提出了一些建议,以实现身份认证。一、相关概念和标准OTP:One-TimePasswordHOTP:HMAC-BasedOne-TimePasswordTOTP:Time-BasedOne-TimePasswordHMAC:TheKeyed-HashMessageAuthenticationCodeRFC4226HOTP:AnHMAC-BasedOne-TimePasswordAlgorithmRFC6238TOTP:Time-基于一次性密码算法FIPSPUB198TheKeyed-HashMessageAuthenticationCode(HMAC)GM/T0021-2012《动态口令密码应用技术规范》GB/T38556-2020《信息安全技术 动态口令密码应用技术规范》GB/T37092-2018《信息安全技术 密码模块安全要求》GB/T15852.2-2012年《信息技术 安全技术 消息鉴别码 第2部分采用专用杂凑函数的机制》GB/T15843.1-2017年《信息技术 安全技术 实体鉴别 第1部分:总则》GB/T15843.4-2008年《信息技术 安全技术 实体鉴别 第4部分:采用密码校验函数的机制》2、动态密码计算方法对于动态密码生成方法,我们主要关注以下要素:动态因子种子密钥动态密码generationalgorithm动态密码生成算法中使用的基本密码算法为了方便,我们将4和3分开。此时动态密码生成算法并没有指定具体的基本密码算法,而是理论上可以替换的同类密码算法.比如对称加密算法,哈希加密算法。HOTP生成:HOTP(K,C)=Truncate(HMAC-HASH(K,C)),其中HASH=SHA-1TOTP生成:TOTP(K,T)=Truncate(HMAC-HASH(K,T)),其中HASH=SHA-1/SHA-256/SHA-512GMOTP生成: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,XOR改为算术加法,高位溢出丢弃)。注4:其他细节未在本文档中详细说明,如时间因子转换、数据编码/填充/截断等,请参考相关标准。3、动态令牌实现身份认证,将动态因子对应到时变参数:时间因子T→时间戳事件因子C→序列号挑战因子Q→随机数认证发起者和验证者共享种子密钥(认证密钥),并达成一致在动态因子的选取上,双方通过相同的动态密码算法(验证函数)计算相同的动态因子和种子密钥(时变参数和认证密钥),分别生成相同的动态密码(校验值),符合GB/T15843.4-2008《信息技术?安全技术?实体鉴别?第4部分:采用密码校验函数的机制》规定的认证机制。当只包括时间因素或事件因素时,为one-pass单向认证;当包含挑战因素时,它是两次单向认证。4.动态令牌认证系统工作流程动态口令认证系统为应用系统提供动态口令认证服务,由动态令牌、认证模块和密钥管理模块组成。动态令牌生成动态口令,认证模块验证动态口令的正确性,密钥管理模块负责动态口令的密钥管理,应用系统将动态口令发送给认证模块进行认证。指定的协议消息。5.时间同步动态令牌可以看作是一个离线设备,它通过内部时钟或维护的计数器或应用服务生成的质询码(手动输入令牌)保持与认证系统相同的动态因素。当实时时间由内部时钟作为时间因子生成时,在动态令牌的使用寿命期间可能会出现轻微偏差,此时需要同步令牌。注意token同步不是调整token本身,而是修改认证系统中对应token的偏移量。同步分为大窗口(±10个认证周期)、中窗口(±5个认证周期)、小窗口同步(±2个认证周期),用于判断offset的大小。6、常见问题分析(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是不是用SM3算法代替了SHA系列哈希算法,根据采用的动态因素成为HOTP和TOTP的国密版本?国密OTP不仅与基本加密算法和HOTP/TOTP不一致,而且动态密码生成算法本身也不一样。国密OTP可以使用SM3算法或SM4算法。使用SM3算法时,不使用HMAC算法对种子密钥和动态因子进行运算,而是在种子密钥和动态因子拼接后进行SM3哈希;当使用SM4算法时,种子密钥用于计算动态因子。加密处理,这种采用对称密码算法的方法比较独特。动态因子种子密钥基本密码算法动态密码生成算法HOTPC≥128bitSHA-1见第2节TOTPTHMAC输出长度SHA-1/SHA256/SHA512国密OTP(SM3)T|C|Q≥128bitSM3国密OTP(SM4)T|C|Q≥128bitSM4(4)如何判断动态令牌密码产品的合规性?在商用密码产品认证系统中,动态令牌(SRK)和动态令牌认证系统(SRT)是两种加密产品,用于商用密码产品认证。在评估过程中,一般需要对动态令牌和动态令牌认证系统进行合规性检查。动态令牌一般为硬件密码模块,通过商业秘密产品认证的动态令牌密码模块的安全等级仅为一级。不排除未来会有通过更高级别认证的动态代币产品。动态令牌认证系统是一种没有密码模块级别的系统级密码产品。在评估过程中很难理想地表征其形式。建议咨询客户和厂商是否包含密码模块(服务器密码机、软件密码模块等)或密钥管理系统,并进一步追溯密码模块的安全级别。(5)厂商提供动态令牌的商业秘密产品认证证书,但客户实际使用的是手机APP令牌。在这种情况下,加密产品是否可以被视为合规?GM/T0021-2012《动态口令密码应用技术规范》和GB/T38556-2020《信息安全技术 动态口令密码应用技术规范》是该类加密产品的技术标准,主要规定了硬件形式的动态令牌的要求。在原商用密码产品型号证书中,给动态令牌产品型号的前缀是“SRK”,第三个“K”表示形式为板型。此外,对于软件形式的动态令牌,我们需要研究其种子密钥的生成、分发、存储和使用的生命周期管理,尤其是密钥存储方面。很难将来源追溯到可靠的“安全根”。软件密码模块设计的痛点。当然,为了方便客户使用和管理,厂商可能开发了相关的软件产品。厂商只有通过本软件产品的商用密码产品认证,才能认为该密码产品合规。在现行的商用密码产品认证体系中,认证编号的第6~7位代表产品类型,14为动态令牌/动态令牌认证系统,22为其他密码模块(包括软件密码模块),如查询在商业秘密认证服务网上显示,GM00441142021xxxx是某公司开发的动态令牌。如果未来有动态令牌以软件形式通过商业秘密产品认证,产品类型可能是“22”而不是“14”,这一点值得注意。(6)如果动态令牌/动态令牌认证系统具有有效的商用密码产品认证证书,是否可以直接判定相关评估项的“密钥管理”维度符合要求?不能。至少需要考虑以下几点:如果用于应用系统身份认证,需要测试是否有效应用了动态口令认证。当动态令牌认证系统本身作为设备层面的评估对象时,管理时仍然需要对身份认证机制和远程管理通道进行评估。有必要对动态令牌/动态令牌认证系统中种子密钥的生命周期管理进行评估,特别是生成/分发、导入(分发)、存储和使用的过程。需要查看动态令牌认证系统的管理接口,如令牌序列号管理、密钥管理、令牌状态、连续错误次数、令牌偏移量、算法配置等(如果有)。需要检查评估级别是否与密码模块的安全级别相匹配。例如,三级信息系统应采用符合GB/T37092Level2及以上标准的动态令牌产品。理论上,动态令牌认证系统中包含的密码模块组件也应满足GB/T37092Level2及以上的要求。(7)使用GoogleAuthenticator或MicrosoftAuthenticator作为服务器运维人员身份认证的动态令牌,如何判断服务器的“身份认证”评价项?GoogleAuthenticator和MicrosoftAuthenticator是应用商店中常见的OTP。下面给出一个评估示例(暂时不考虑OTP认证服务器)。量化评估风险判断DAKGoogleAuthenticator√支持HOTP、TOTP。×使用了不合规的密码算法和动态密码生成算法。×密钥生成、分发、存储等不合规,加密产品不合规。1、如果使用HOTP,需要根据SHA-1算法判断为高风险;如果使用基于SHA-1的TOTP,则判断为高风险。2、关键管理人员的风险等级需根据实际情况确定。MicrosoftAuthenticator√支持TOTP。×使用了不合规的密码算法和动态密码生成算法。×密钥生成、分发、存储等不合规,加密产品不合规。1.如果使用基于SHA-1的TOTP,则判断为高风险。2、关键管理人员的风险等级需根据实际情况确定。市面上开源的OTP或OTP认证服务器种类繁多,如GoogleAuthenticator(与商店版本不一致,已停止维护)、FreeOTP/FreeOTP+、LinOTP等,大部分支持HOTP和TOTP,且具体结论以实际评测情况为准。