豪密科技第 16 期密评实操能力验证培训 - 2025/02/17 下午

2025-02-17
2025-02-18
7 min read
Hits

  有幸参加了公司安排的豪密科技第 16 期密评实操能力验证培训,本文是第二课《密码产品及应用》的培训内容。

  能力验证备考建议:

  1. 摸产品:见过、用过、实操过,知道怎么 <- 按商密规范,密码应用都是通过密码产品实现的
  2. 懂应用:理解各典型密码应用场景的正确逻辑(正确的密码应用是什么样)<- 不知对,焉知错
  3. 会分析:密评能力验证考试,代码题、数据分析题只是题目形式,核心是考察对密码应用中存在问题的分析、发现能力 <- 能力验证,在考什么?

  为什么要学习密码产品

  1. 产品承载算法、协议,支撑密码应用
  2. 场景多变,产品不变
  3. 好抓手:密码产品可见、可感知,掌握密码产品是理解抽象的密码概念,有效学习高深的密码技术基础、枯燥的技术标准、多变的密码产品……

  学习密码产品的现实困境

  1. 产品种类繁多,学不过来
  2. 缺乏资料和教材、没有成系统的学习方法:只有枯燥的“产品标准”,没有解释、讲解(标准是面向专业人士、已经学会的人,对尚在学习中的密评机构不友好),缺乏系统、高效学习的途径,机构很为难
  3. 密码产品维度多、难操练、不好下嘴:产品原理、应用、配置、数据规范一堆要求,什么关系,怎么学、难操练(密码产品本身即是一种“密码应用”……)……

  学习方法建议:理论学习 + 实操 + 思辨(总结)

  1. 分类学习
    1. 终端类:智能密码钥匙、智能 IC 卡、国密浏览器、软件密码模块、动态口令
    2. 系统类:签名验签服务器、服务器密码机、SSL/IPSec VPN 网关
    3. 服务类:数字证书认证系统、安全电子签章系统、密钥管理系统
  2. 重点(产品)突破、解剖麻雀,再举一反三:智能密码钥匙、服务器密码机、签名验签服务器、网关、CA
  3. 体系化学习、总结:把握产品背后统一的密码原理、密码模型、密码思想。

  要求高:要求掌握密码产品原理、应用及相关标准

服务器密码机及应用

什么是密码机?

  1. 密码机是以整机形态出现,具备完整密码功能的产品
    1. 实现数据加解密、签名/验证、密钥管理、随机数生成等功能
    2. 可供各类应用系统调用,为其提供数据加解密、签名/验证等密码服务
  2. 外部形态与一般的服务器、……

三种密码机

  1. 服务器密码机(通用性)

  2. 签名验签服务器(证书认证领域)

  3. 金融数据密码机(金融行业)

  4. 从硬件组成角度而言,三种密码机并无区别

    1. 工控机 +PCI/PCI-E 密码卡或者是计算机主板的功能和密码芯片集成到一个板卡上
    2. 后两类,针对特定应用场景再第一类基础上封装了特定接口,便于应用调用
  5. 签名验签服务器

    1. 三种调用方式:API 调用、通用请求响应、HTTP 请求响应
    2. 支持与 CA 连接、证书管理等功能
  6. 金融数据密码机 1.

          密码机图片(连续两张)

要存储的数据用会话密钥加密后,用密钥加密密钥(KEK)加密会话密钥后,与密文一并存储(密钥加密密钥加密的会话密钥存在密钥表),使用时再解密(加解密均须使用此密码机,因为密钥加密密钥和会话密钥都是由该密码机生成)。

          内外部RSA公钥加密输出图

服务器密码机典型应用举例

  1. 密钥初始化阶段
    1. 调用密码机接口,生成会话密钥(数据加解密密钥 DK)并用 KEK 加密输出
      • SDF_GenerateKeyWithKEK()
      • SDF_GenerateKeyWithEPK_ECC() 用对方公钥加密,不同的密钥场景
    2. 数据密钥的密文存储到信息系统的数据库(密钥表)
  2. 敏感信息加密存储
    1. 获取用户敏感信息明文
    2. 从数据库密码表读取数据加密密钥的密文
    3. 调用密码机接口,导入会话密钥并用 KEK 解密会话密钥,返回句柄
      • SDF_ImportKeyWithKEK()
      • SDF_ImportKeyWithISK_ECC() 用内部私钥解密,不同的应用场景
    4. 调用密码机,传入上一步解密得到的会话密钥(数据密钥)句柄,对用户敏感信息加密 - SDF_Encrypt()
    5. 将用户敏感信息密文存储到数据库
  3. 敏感信息解密读取
    1. 从数据库读取用户明娜信息密文、密钥表中的密钥密文
    2. 调用密码机接口,导入会话密钥并用 KEK 解密会话密钥,返回句柄
      • SDF_ImportKeyWithKEK()
      • SDF_ImportKeyWithISK_ECC() 不同的应用场景
    3. 调用密码机,传入上一步解密得到的会话密钥(数据密钥)句柄,对用户敏感信息密文做解密 - SDF_Decrypt()

  总结:服务器密码机密钥使用原则:密钥全程由密码机操作,任何其它方不能接触密钥明文

  延伸:用户记录完整性计算和校验过程类似(MAC 密钥)

          密码机的密钥体系6.3.16

MAC 是带密钥的杂凑

  应用层重要数据存储加密方案:

  1. 直接使用密码机内置密钥,作为数据加密密钥 DK:安全性高、密钥数量有限、单个密钥保护数据范围过大
  2. 从密码机申请会话密钥,并用密码机密钥 KEK 加密存储,作为数据加密密钥 DK(密钥管理系统 KMS 的原型):密钥数量不受限、密钥保护数据范围小/精细/颗粒度小

签名验签服务器及应用(基于数字证书的典型密码应用)

内容

  1. SVS 功能概述、与服务器密码机的区别(接口对比)
  2. SVS 典型应用场景(及其接口调用)
  3. SVS 的配置及实验操作演示(应用管理、证书、证书链管理)

三个基本问题

  1. 已经有了服务器密码机,为什么还需要签名验签服务器?
  2. 签名验签服务器中的“证书”(及密钥)是谁的,是签名验签服务器的吗?
  3. 签名验签服务器中的“证书链”是谁的证书链?

信息系统不管理证书(证书的本质是密钥)或密钥(信息系统不能干跟密码相关的任何事)

签名验签服务器的应用

  1. 与 CA 的接口
    1. 下载 CRL
    2. 查询数字证书
    3. 查询数字证书实时状态(OCSP)
  2. 与时间戳服务器的接口
    1. 同步系统时间
    2. 在时间敏感型交易中,对时间和内容共同签名(时间戳)
  3. 与应用服务器的接口
    1. 应用服务器和签名验签服务器直连
    2. 签名验签服务器支持多个应用
    3. 每个应用被授权使用一组密码
  4. 主要标准
    1. GM/T 0020《证书应用综合服务接口规范
    2. GM/T 0029《签名验签服务器技术规范
    3. GM/T 0060《签名验签服务器检测规范
    4. GM/T 0033《时间戳接口规范》

用户密钥包含签名密钥对和加密密钥对(GM/T 0020-2023《证书应用综合服务接口规范》)

签名验签服务器的功能

  1. PKI 连接
    1. CRL 连接
    2. OCSP 连接
  2. 应用管理
    1. 应用实体注册
    2. 配置密钥
    3. 设置私钥授权码
  3. 证书管理和验证
    1. 应用实体的密钥产生、证书申请
    2. 证书导入
    3. 证书更新
    4. 证书验证
  4. 数字签名和验证
    1. 签名
    2. 验证
  5. 日志管理和时间源(是 NTP 不是时间)同步

          签名验签服务器VS服务器密码机图

GM/T 0020《证书应用综合服务接口规范》

密码机签名验签服务器
基于裸密钥

          数据签名、消息签名的区别-1和-2

  总结:为什么有了密码机还需要签名验签服务器?

  1. 服务器密码机(通用性)
    1. 含通用(基础)签名运算
    2. 签名、验签直接基于公私钥
    3. 没有“应用”……

签名验签服务器的应用场景

          以下表格有些问题,等老师更新

序号安全层面应用场景实现安全指标调用的密码服务考题/实际项目应用
1应用层信息系统终端用户身份鉴别(基于数字证书的挑战-响应)真实性签名验证√√√
2应用层信息系统终端用户关键业务数据提交传输完整性、不可否认性签名验证√√√
3应用层信息系统数据存储完整性(基于签名)存储完整性签名(用谁的证书?)√√
4应用层信息系统终端用户关键业务数据提交存储完整性、不可否认性验签√√

          签名验签服务器的应用流程图

签名验签服务器典型应用一

  基于证书的用户登录身份鉴别(挑战-响应)

  应用方案 1.0 流程:

  1. 终端用户发起登录请求 login()
  2. 应用服务向签名验签服务器请求随机数 random
  3. 应用服务向终端发送挑战值 random
  4. 终端调用 ukey,用签名私钥对挑战值签名 sign()
  5. 终端将签名值、签名证书发送给应用服务,请求验证签名 verify()
  6. 应用服务调用签名验签服务器……

  应用方案 2.0 优化点:

  1. 应用服务向终端发送挑战值 Rs 并签名
  2. 终端调用 ukey,生成随机 Rc,用签名私钥对挑战值和客户端随机值 Rc|Rs 做签名 sign()

签名验签服务器典型应用二

  关键业务数据签名(不可否认性)

  流程:

  1. 终端调用 ukey,用签名私钥对业务操作做签名
  2. 终端将业务数据原文、签名值、签名证书发送给应用服务
  3. 信息系统调用签名验签服务器做验签,并验证用户签名证书(……)……

签名验签服务器典型应用三

  应用系统间业务数据签名、数字信封加密传输

  调用流程:

  1. 业务系统之间互相进行签名验证,身份鉴别
  2. 业务数据加密
  3. 用对方加密证书公钥将加密密钥进行加密,用自己的签名私钥对业务数据签名
  4. 对方用加密私钥解密加密密钥、解密业务数据,并应对方签名证书公钥验证数据签名

这是一个典型的“应用层传输机密性、完整性”范例

数字证书认证系统 CA

内容

  1. 证书签发及密钥管理:证书签发整体流程,双证书、双中心;
  2. PKI 典型部署方案
  3. 设备证书(含签名服务器)、用户证书、代码证书签发实验演示
  4. 证书申请 P10 文件和证书签发 P12 文件解析
  5. 证书吊销管理及 CRL 订阅操作演示

  证书类型:根证书、用户证书、设备证书/站点证书、代码签名证书、计算机证书、域控制器(Domain Controller)证书

签名验签服务器-总结

  1. 签名验签服务器面向数字证书应用场景的特定封装,(相对于密码机)更面向应用
  2. 支持多应用,