特殊规格说明
内置密钥使用与攻击场景防护
- ECM内生密码模块提供内置密钥,对应内置密钥通过管理工具或管理接口生成,生成非对称密钥或者主密钥时需要配置密码。
- 密码模块满足国标0018-2023标准,对应SDF接口不直接提供给用户调用,而是提供给密码设备服务层调用。密码设备服务层通过调用管理工具生成内部密钥,正常使用过程中,服务层调用SDF_GetPrivateKeyAccessRight或者SDF_GetKEKAccessRight不会出现密码错误问题。
- 若隔离的环境中存在攻击者通过恶意多次调用SDF_GetPrivateKeyAccessRight或SDF_GetKEKAccessRight接口暴力破解密码,密码模块会记录连续调用输入错误密码次数,若输入次数超过500次,则会将该密码模块对应索引的密钥文件置为不可用状态,调用相应接口会返回错误码SDR_COMMFAIL。用户在遇到调用SDF_GetPrivateKeyAccessRight或SDF_GetKEKAccessRight接口报错,除了排查接口参数是否正确外,还应该向管理员咨询使用的密码是否正确。
密码模块初始化
设备在初始化时,需要调用管理工具,生成内置密钥并配置可访问的应用路径。完成配置后,应用通过输入对应密钥密码,获得密钥使用权限,使用密码模块提供的能力。文件操作只允许在Host执行,容器内不能使用文件类操作的接口。
加密密钥使用说明
内部密钥非对称私钥需要使用SDF_GetPrivateKeyAccessRight接口获取使用权限,密钥加密密钥需要使用SDF_GetKEKAccessRight接口获取使用权限。
非对称密钥密码强度
非对称密钥的密码需要满足以下格式要求:
- 口令必须包含如下至少两种字符的组合。
- 至少一个小写字母。
- 至少一个大写字母。
- 至少一个数字。
- 至少一个特殊字符:`~!@#$%^&*()-_=+\|[{}];:'",<.>/? 和空格。
- 长度最少8字节,最多128字节。
算法自测试
根据国密认证标准要求,密码模块新增算法自测试功能。该功能旨在验证密码模块中关键算法的正确性,确保模块运行的安全性。
自测试包括全量自测试和条件自测试。全量自测试在密码模块初始化启动时执行,对认证要求的国密算法进行一次性完整测试,若任一算法自测试失败,则判定为全量自测试失败,密码模块将启动失败,无法正常提供服务,需重启密码模块再次进行全量自测试;密码模块正常启动后,每次执行某一特定算法之前,将进行对应算法的条件自测试,若该算法的条件自测试失败,将无法使用该算法的服务,需重新调用该算法进行条件自测试。
算法自测试可通过配置文件进行配置,调用SDF_OpenDeviceWithConf接口读取并解析配置文件。配置格式为
selftest:true
配置项参数表如下:
取值 |
说明 |
|---|---|
true (不区分大小写) |
开启自测试功能 |
false (不区分大小写) |
关闭自测试功能(默认状态) |
其他值 |
非法。解析将失败,不会执行自测试。 |
性能影响警告:开启自测试功能(全量自测试和条件自测试)将大幅增加算法运算时间,降低性能。
自测试算法清单如下:
测试函数 |
算法描述 |
|---|---|
sm2_sign_selftest |
SM2 签名 |
sm2_verify_selftest |
SM2 验签 |
sm2_encrypt_selftest |
SM2 加密 |
sm2_decrypt_selftest |
SM2 解密 |
sm3_hash_selftest |
SM3 哈希 |
sm3_hmac_selftest |
SM3 HMAC |
sm4_ecb_encrypt_selftest |
SM4 ECB 加密 |
sm4_ecb_decrypt_selftest |
SM4 ECB 解密 |
sm4_cbc_encrypt_selftest |
SM4 CBC 加密 |
sm4_cbc_decrypt_selftest |
SM4 CBC 解密 |
sm4_gcm_encrypt_selftest |
SM4 GCM 加密 |
sm4_gcm_decrypt_selftest |
SM4 GCM 解密 |
sm4_mac_selftest |
SM4 MAC |
random_selftest |
随机数(扑克测试) |