密码应用安全性评估-应用层国密改造

1、身份鉴别

身份鉴别指标通俗来说就是应用信息系统的登录方式,通常情况下应用信息系统的登录方式为用户名+口令,也就是传统意义上的用户名+密码的方式,密评为了区分密码算法和登录密码,一般将登录密码称为登录口令,但是用户名+口令的登录方式并不符合密评标准,因为用户名+口令的登录方式存在“重放攻击”的风险,身份鉴别应采用动态口令机制、基于对称密码算法或密码杂凑算法的消息鉴别码 (MAC)机制、基于公钥密码算法的数字签名机制等密码技术对登录用户进行身份鉴别, 并验证应用系统用户身份真实性实现机制是否正确和有效。

GM/T 0115-202《信息系统密码应用测评要求》 6.4.1

以“基于公钥密码算法的数字签名机制”为例:

系统用户使用合规第三方提供的基于国密算法的数字证书+智能密码钥匙的方式,实现基于数字签名技术的“挑战-响应”机制进行身份鉴别,保证用户身份的真实性。

公钥密码算法:公钥密码算法分为公钥加密算法公钥签名算法,身份鉴别用到的是公钥签名算法,公钥密码算法的密钥分为公钥私钥私钥不可明文存储,一般存储于密码产品中,由密码产品提供相应的保护机制,公钥一般以公钥数字证书,在签名算法中,私钥用于签名生成签名值,公钥提供给认证方用于验签。

流程如下:

  1. ①客户端登录时向服务端发送随机数申请,服务端向签名验签服务器服务器密码机发送随机数申请,签名验签服务器服务器密码机接收到服务端请求后向服务端发送随机数;
  2. ②服务端临时存储(如Session、redis中,登录成功后要清除)本次会话随机数后将随机数返回给客户端;
  3. ③客户端调用USB Key,输入PIN码后使用USB Key中的私钥对随机数进行签名;
  4. ④客户端获取到签名后,将证书、随机数、随机数的签名值发送给服务端;
  5. ⑤服务端确认随机数为本次会话随机数(防止重放攻击),若非本次会话则登录失败;
  6. ⑥服务端调用签名验签服务器对随机数做验签,若验签成功则登录成功,若验签失败则登录失败。
  7. 由于这种登录方式中存在随机因子,由于每次登录时随机数都不同,那么生成的签名值也就不同,消除了“重放攻击”的可能性。

注:USB Key:又称为UKey、智能密码钥匙、密码钥匙,内置单片机或智能卡芯片,有一定的存储空间,可以存储用户的私钥以及数字证书;算由于USB Key已通过商用密码产品检测,私钥由USB Key提供相应机制进行保护。

调用签名验签服务器实现身份鉴别

或采用身份认证网关实现身份鉴别

调用身份认证网关实现身份鉴别

现场测评:提供随机数、随机数的签名值和USB Key签名公钥证书,并在服务器进行抓包,进行验证,提供相应的代码片段。

易失分点:①随机数应由密码设备输出而非代码软件生成;②未使用签名验签服务器对随机数签名值进行验签,服务器密码机的行业标准中没有数字证书的签名和验签标准,所有若采用服务器密码机进行验签将会影响分数;③未确认随机数是否为本次会话请求随机数;④未对数字证书进行合规性验证;⑤随机数长度过短,随机数一般要求32位长度。

除了采用USB Key进行身份鉴别外,还可使用具有国密认证证书或通过商用密码产品检测的动态口令牌进行身份鉴别。

若存在社会用户无法采用USB Key和动态令牌的的情况下,可采用短信验证码、微信扫码登录、生物认证识别(指纹、人脸、虹膜、掌纹等)等进行弥补,但这些仅为降低风险,不得分。

除了这些弥补方式外,本文另外提供一种用户名口令登录方式的弥补方式:

流程如下:在用户登录时,服务端调用密码设备生成随机数发送给客户端,客户端输入用户名、口令后,将口令和随机数进行SM3杂凑运算生成杂凑值,将用户名、口令+随机数的杂凑值发送给服务端,服务端从数据库中获取对应的用户口令密文(SM4加密),调用密码机解密后,计算登录口令和随机数的杂凑值,对比成功则成功登陆。该方式也仅为降低风险,不得分。

2、访问控制信息完整性

访问控制通俗来说也就是用户权限控制。其目的就是为了防止非法提权,采用密码算法、技术、产品对数据库中存储的用户权限信息进行完整性保护,采用密码技术(对称密码算法或密码杂凑算法的消息鉴别码(MAC)机制、基于公钥密码算法的数字签名机制等密码技术)的完整性功能对数据库中的控制信息(权限表、角色表、角色权限关联表、用户权限关联表等中的关键数据,可依据实际情况而定)进行完整性保护,登录时对访问控制信息的完整性进行校验。

GM/T 0115-202《信息系统密码应用测评要求》 6.4.2

以“基于公钥密码算法的数字签名机制”为例:

签名流程如下:在新增或修改用户权限是,在服务端对需要做访问控制信息的关键数据进行拼接(如用户ID+角色ID+菜单ID+菜单路径),调用签名验签服务器对拼接数据进行签名,将签名数据存储于数据库中。每次对访问控制信息做出修改都要对访问控制信息重新进行签名。

验证流程:在用户登录时对用户的访问控制信息进行验证,在用户登录时,对数据库中存储的访问控制信息的签名值做验签,验签成功则登录成功,验签失败禁止登陆并需给出相应提示。

注:对称密码算法的消息鉴别码(MAC)机制即CMAC-SM4、密码杂凑算法的消息鉴别码(MAC)机制即HMAC-SM3,采用这两种方法实现访问控制信息的完整性只要将签名改为生成MAC验签改为校验MAC即可,基本流程不变。注意,采用CMAC-SM4时,IV值要全部为0,某些密码厂商虽然提供CMAC-SM4接口,但是可以设置IV值,这并不合理。若单纯使用SM3杂凑无法做到完整性保护,需采用HAMC-SM3,密钥由密码设备提供相应的保护机制。

现场测评:演示登录成功和登录失败(篡改提示)效果,并提供签名原数据、签名值、签名验签服务器的公钥,对访问控制信息完整性进行验证,并在服务器进行抓包,提供相应代码片段。

易失分点:①访问控制信息语义不完整,保护的范围不够全面,如未对权限路径进行保护等;②数字证书存在单证双用,即一张数字证书存在签名和加密两种用法。

3、重要信息资源安全标记完整性

该指标一般在《信息系统商用密码应用方案》中将此指标作为“不适用”项,并说明本系统不存在重要信息资源安全标记。

4、重要数据的传输机密性、重要数据的传输完整性

重要数据的传输机密性:采用合规的密码算法,对传输中的重要数据进行加密保护,且加密密钥不应以明文形式出现在密码产品外(公钥除外),可采用密码产品中的非对称密钥对采用“数字信封”的方式传递会话密钥(SM4算法),采用SM4算法对数据进行机密性保护。

重要数据的传输完整性:采用智能密码钥匙、服务器密码机等建立保护机制,如采用“数字信封”的方式进行密钥的传递采用MAC的方式进行数据完整性保护。

考虑到以上方式的实现较为麻烦,可采用网络层技术进行弥补。

弥补方式:

1、采用HTTPS方式进行弥补。采用HTTPS的方式进行传输机密性和完整性保护需要基于国密算法,需采购国密浏览器。

2、采用安全接入网关的方式进行弥补,通过在访问系统的用户客户端与安全认证网关之间建立基于国密算法的SSL加密通信,通过加密通道来保证传输数据的加密传输,从而保证应用安全方面的通信保密性,采用密码技术保证通信双方会话初始化验证和整个报文或会话过程的机密性和完整性。

现场测评:需要现场对通信过程进行抓包分析。

易失分点:①非国密TLCP协议,在密评中若链路为非国密协议失分非常严重,将会影响网络和通信安全、应用和数据安全两个层面,根据商用密码应用安全性评估FAQ(2023版) 12.网络和通信安全层面的身份鉴别,网络和通信安全层面通信数据完整性、通信过程中重要数据的机密性最高可得0.5,则应用和数据安全层面重要数据的传输机密性、重要数据的传输完整性最高可得0.25。②网关设备等级不足,三级信息系统应使用二级设备。

商用密码应用安全性评估FAQ(2023版) 12

5、重要数据存储的机密性

采用密码技术对用户信息进行机密性保护。

系统调用服务器密码机中的SM4算法对数据库中存储的关键数据进行加密存储。接口文档相关问题可咨询服务器密码机设备厂商

或采购数据库加密机对数据库中的字段进行加密保护,需确认采购的数据库加密机是对数据库的字段加密还是对数据库文件加密,若对文件做加密可能不被密评机构认可。

注意:若想该指标得分高,可采用SM4-CBC模式进行加密(但根据2023版FAQ,ECB模式不扣分),CBC模式下除了密钥外还存在初始向量IV,用于加解密时IV是一个初始向量,无须保密,但必须随着消息的更换而更换,即每条需要加密的数据所用的初始向量IV均不相同,IV值的不同保证相同的明文加密后密文不同,IV值另起一个字段保存在数据库中。

在密评过程中,需要现场进行抓包分析,提供相应代码片段。

商用密码应用安全性评估FAQ(2023版) 21.2

6、重要数据存储的完整性

采用密码技术对数据库表中的关键数据进行完整性保护,以下以签名技术为例,若采用HMAC-SM3,流程相同仅将签名改为HMAC-SM3。

签名流程:对关联关键数据进行拼接,调用签名验签服务器对拼接后的数据进行签名,将签名数据存储在数据库中,每次对数据修改时都需要对修改过的关键数据进行重新签名。

验证流程:

1、自动对重要数据的完整性进行验证。在数据加载时,服务端自动对重要数据进行验签,验签失败需要对用户做出验证并给出相应提示。

2、定时对关键数据进行完整性验证。系统定时调用签名验签服务器对数据库中的签名值进行验证,并将验证结果保存在日志表中。

需要对应用服务器、数据库服务器中的日志进行完整性保护。

需要完整性保护的服务器日志:(根据操作系统类型而定)

1、Windows系统:应用程序日志、安全日志、系统日志

2、Linux系统:secure日志、wtmp日志、audit日志

3、UNIX系统:syslog.log

7、不可否认性

采用密码技术提供数据原发证据和数据接受证据,实现数据原发行为的不可否认性和数据接收行为的不可否认性。一至三级系统可作为不适用指标。

可通过时间戳服务器、签名验签服务器、电子签章系统,对在系统中流转的文件数据进行签章并加盖时间戳,实现操作的不可否认性。电子签章系统适用于盖章文件的不可否认,盖章文件格式需为符合国标或密标的OFD文件或PDF文件。

以签名验签服务器为例:

在客户端进行关键操作时,客户端对关键操作的操作人、操作事项、操作时间进行拼接字符串、拼接后客户端调用USB Key对拼接字符串进行签名,将操作人+操作事项+操作时间拼接字符串、
签名值、签名证书发送给服务端,服务端调用签名验签服务器对操作人+操作事项+操作时间拼接字符串、签名值、签名证书进行验签,验签成功,则将执行关键操作,并将签名值、签名公钥证书信息、等保存数据库,若验签失败,则返回失败提示,若应用系统对操作有不可否定要求,可加操作执行后对拼接字段加盖时间戳。

界面保留操作验签按钮或加载操作结果界面时调用签名验签服务器和时间戳服务器进行验签,并给出相应的验签提示。

不可否认性实现可参照:

GB/T 17903.1-2008《信息技术 安全技术 抗抵赖 第1部分:概述》

GB/T 17903.2-2021《信息技术 安全技术 抗抵赖 第2部分:采用对称技术的机制》

GB/T 17903.3-2008《信息技术 安全技术 抗抵赖 第3部分:采用非对称技术的机制》

注:本文仅作为国密改造中应用层改造的参考,具体情况需以国家标准、行业标准、密评机构测评结果为准。

  • 9
    点赞
  • 60
    收藏
    觉得还不错? 一键收藏
  • 7
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值