一、为什么医疗与社保自助终端需要一个“硬件身份锚点”
过去十年,医院的自助挂号机、自助缴费机、检验报告打印机,以及社保大厅的待遇资格自助核验终端,已经从一线城市的三甲医院下沉到县域医共体和乡镇便民服务中心。设备变多了,但身份问题反而更难了。
在 HIS(医院信息系统)与医保结算流程里,一台自助终端并不是“匿名机器”,它要以某个可信身份去调用医生工作站、医保网关和电子处方流转平台。一旦身份被冒用,轻则出现冒名挂号、套取医保基金,重则伪造电子处方、串换药品。传统的“用户名+口令”在公共空间里几乎形同虚设:口令会被肩窥、会被写在便签上、会被共享账号绕过。
更麻烦的是举证。当监管来查一笔异常的电子处方时,系统往往只能证明“某个账号在某台机器上操作过”,却无法把操作牢牢绑定到一台具体的、被信创认证的硬件载体上。这就引出一个核心思路:把身份锚点从“人记得住的口令”下沉到“机器带得走的硬件密钥”——也就是国密UKey 这类智能密码钥匙。
本文聚焦一个技术主线:用国密智能密码钥匙在医疗与社保自助终端上做身份认证与电子处方签名,让 HIS/医保场景里的每一次关键操作都有硬件级身份锚点和合规留痕。
二、智能密码钥匙到底解决了什么
所谓智能密码钥匙,本质上是一颗内置安全芯片的 USB 形态密码模块。它和单纯做存储的 U 盘、做软算法的加密库有本质区别:密钥在芯片内生成,私钥不可导出,所有加解密和签名运算都在芯片内部完成。这就把“信任根”锁死在硬件里,软件层即使被攻破,也拿不到私钥原文。
在医疗终端语境下,这种硬件加密能力对应三类刚需:
- 身份锚点:终端开机或调用医保接口前,先验证持有者是否插着合法 UKey,把“谁能操作这台机器”从逻辑账号升级为物理载体。
- 电子处方签名:医生或授权药师在终端确认处方时,由 UKey 内部用 SM2 私钥对处方摘要做签名,处方hash与签名一并上送,事后可验签、可举证。
- 会话加密:终端与 HIS/医保网关之间的敏感字段(如身份证号、医保凭证)用 SM4 会话密钥加密,防止链路侧窃听。
这三点凑齐,才构成“身份真实、行为不可抵赖、传输保密”的闭环。
把视角拉到攻击面,自助终端尤其脆弱。它部署在开放大厅,物理上谁都能碰到;它长期通电、少人看护,容易被拔插、被接旁路;它的操作系统为兼容外设往往开着调试口。于是常见的攻击路径包括:用录屏狗或肩窥窃取口令、把终端程序整体克隆到另一台机器上冒充、用伪造证书骗过 Web 登录、在链路侧抓包拿到明文医保凭证。软算法方案对这几类攻击几乎无解,因为“秘密”都躺在磁盘或内存里,被人拿到机器就等于拿到秘密。硬件加密的意义正在于此——把最该保护的那一小段(私钥)从“可被复制的文件”变成“焊死在芯片里的运算能力”,攻击者即便搬走整机,也提取不出可用于伪造处方的密钥材料。
从合规侧看,医疗电子签名要过三道关:其一是电子签名相关法律对“可靠电子签名”的定义,要求签署数据由签名人专有控制、签署后对数据改动可被发现;其二是医保对处方可追溯、防串通的要求;其三是信创目录对密码产品国产化、国密算法合规性的要求。三套要求叠在一起,恰好把“国密智能密码钥匙+SM2 签名+私钥不出硬件”推成了最省心的技术公约数。
三、硬件内核:从芯片到算法的可信底座
要谈硬件身份锚点,先得看芯片本身。一颗合格的国密智能密码钥匙,通常采用 32 位 RISC 安全芯片,片上存储约 128KB。这个体量不大,但足够容纳固件、密钥槽和算法引擎。
算法层面,这类钥匙同时支持国密与国际算法:
| 类型 | 算法 | 典型用途 |
|---|---|---|
| 国密对称 | SM1 / SM4 | 会话加密、本地数据加密 |
| 国密非对称 | SM2 | 签名验签、密钥协商 |
| 国密摘要 | SM3 | 电子处方摘要、固件签名校验 |
| 国际对称 | AES | 兼容遗留系统 |
| 国际非对称 | RSA / ECC | 兼容既有证书体系 |
| 国际摘要 | SHA | 兼容既有签名流程 |
值得强调的是固件签名。UKey 上跑的固件本身也要防篡改:出厂和升级时,用 SM2 对固件镜像做固件签名,设备启动前校验签名合法性,杜绝被刷入恶意固件。这一步是“硬件可信”的前提——如果固件都能被替换,芯片再安全也毫无意义。
进一步看,128KB 的片上存储要同时容纳算法引擎、密钥槽、固件与日志缓冲,注定不能做成“大而全”的通用计算机,而必须是被严格裁剪的专用密码协处理器。这也带来一个工程上的取舍:密钥槽数量、是否支持多证书、是否预留管理员 Key 与用户 Key 的双槽结构,都会在出厂时固化,后期无法靠软件升级改变。因此选型阶段就要把“一台终端要承载几个身份”想清楚——例如自助机可能需要一个管理 Key(运维用)、一个业务 Key(调用医保接口用),而医生工作站往往只需一个医生个人 Key。提前规划槽位,能避免后期换硬件的返工。
此外,32 位 RISC 内核配安全存储的组合,决定了随机数来源必须可靠。SM2 签名的安全性建立在私钥随机性的基础上,而私钥生成依赖芯片内置真随机数发生器(TRNG)。如果 TRNG 熵源不足,存在私钥可预测风险,那么再严格的“私钥不出硬件”也救不回安全性。合格的国密产品会在出厂前对 TRNG 做统计检测与自检测,启动后每次生成密钥都先过一遍健康性自检,这部分虽然对业务透明,却是审计时值得向厂商索证的一环。
四、五大能力方向与四种认证方案
从产品形态看,这类国密智能密码钥匙通常覆盖五大方向:
- Web 双因素:浏览器侧业务系统登录时,口令之外叠加 UKey 持有因子。
- C/S 认证:桌面客户端(如 HIS 护士站程序)通过本地接口校验 UKey。
- 软件授权保护:把软件 license 与 UKey 序列号绑定,防止终端程序被随意拷贝。
- 会话加密:终端与服务端之间建立基于 UKey 的加密会话。
- OS 双因素:操作系统登录也要求插 Key,构成从开机到业务的连续信任链。
落到认证协议上,常见有四种递进方案:
- KeyID 认证:服务端只校验 UKey 的唯一标识,确认“这台机器插的是登记过的 Key”。
- UserName + KeyID:账号与 Key 绑定,一人一 Key,防止账号被拿到别的机器上用。
- 签名验签:挑战-应答式,服务端发随机数,UKey 用私钥签名,服务端验签通过才算认证成功。这是抗重放、抗抵赖的关键一档。
- CA 证书:UKey 内装载 X.509 证书,走标准 PKI,从而满足更严苛的合规场景要求。
这四种方案不是互斥的,实际项目里往往按接口敏感度分级:普通查询用 KeyID,开方、结算等高危动作走签名验签或 CA 证书。
五、电子处方签名:私钥不出硬件的落地细节
电子处方是医保合规里最敏感的动作之一。一张合法电子处方要满足:医生身份真实、处方内容完整、签署时间可信、事后不可篡改。用 UKey 做签名,核心流程如下。
5.1 签名前:构造待签摘要
处方在 HIS 侧组装完成后,先对结构化字段做 SM3 摘要,而不是对整张明文处方签名(既保护隐私,又减小签名数据量)。
处方摘要 = SM3( 患者ID || 诊断编码 || 药品列表 || 剂量 || 开方医生ID || 时间戳 )5.2 签名中:私钥在芯片内运算
UKey 插入终端后,HIS 客户端把摘要送进钥匙,由内部 SM2 私钥完成签名。关键点:私钥从不在内存里以明文出现,软件层只能拿到签名结果。这一步直接满足“私钥不出硬件”的合规要求。
/* C 动态库调用示例:对处方摘要做 SM2 签名 */#include"ukey_capi.h"intsign_prescription(constunsignedchar*digest,intdigest_len,unsignedchar*sig_out,int*sig_len){UKEY_HANDLE h=ukey_open(0);/* 打开第 0 把钥匙 */if(h==NULL)return-1;intrc=ukey_sm2_sign(h,/* 私钥不出硬件,仅返回签名值 */digest,digest_len,sig_out,sig_len);ukey_close(h);returnrc;}5.3 签名后:上送与验签
签名值与处方摘要一起写入处方流转平台。下游医保网关或监管系统用 UKey 对应的 SM2 公钥做签名验签,校验通过才认可处方效力。由于签名绑定了医生 Key 与处方内容,任何一方想事后篡改处方,验签都会失败——这就形成了不可抵赖的留痕。
以安当UKey为例,其四档认证方案中的“签名验签”档正好对应电子处方的抗抵赖需求:服务端下发挑战随机数,UKey 内部用 SM2 私钥对(随机数+处方摘要)签名,HIS 侧只收签名值,私钥始终锁在芯片里,既满足《电子签名法》对可靠电子签名的“签署数据由签名人专有控制”的要求,也契合医保对处方可追溯的技术路线。
六、HIS/医保场景的集成形态
在真实医院环境里,UKey 不会只服务一个系统,而是横跨多个触点。下面按终端类型拆解。
6.1 医生/药师工作站(C/S 认证)
医生站是开方主阵地。工作站程序启动时先校验 UKey 是否在位、证书是否有效;每次点击“签署处方”都触发一次芯片内签名。这里用 C 动态库直连本地钥匙效率最高,避免走网络带来的延迟与单点。
6.2 自助终端(USBKey双因素)
挂号、缴费、报告打印等自助机面向公众,用 USBKey双因素 把“插 Key 的管理员/运维身份”与“公众自助流程”分开:公众走普通流程,涉及参数配置、对账导出、证书更新等高危动作时,必须插管理 Key 并完成签名验签。
6.3 Web 医保经办入口(Web 双因素)
医保经办人员在 Web 端处理报销审核时,在口令之外叠加 UKey 因子,防止共享账号、防止离职人员账号残留后被冒用。
6.4 软件授权保护
终端上运行的 HIS 前置程序、医保控件,可用软件授权保护 把 license 与 UKey 序列号绑定。机器被整体克隆到别处,没有对应 Key 也无法启动业务程序,降低非法部署风险。
七、离线应急:断网也不丢身份能力
医疗场景最怕“一断网就停摆”。医保专网抖动、机房割接、灾备切换期间,终端不能因为连不上认证服务器就拒绝一切操作。
UKey 的本地密码运算能力天然适合离线应急:
- 离线签名:SM2 签名在芯片本地完成,不需要实时联网,断网也能签署处方,签名值事后在网恢复时再上送验签。
- 本地 KeyID 校验:终端可缓存已登记 Key 的白名单指纹,断网时仍做本地身份锚点判断。
- 时钟与序号:处方签名内带本地可信时间戳与递增序号,网恢复后按序补传,避免重排攻击。
需要强调的是,离线不等于无审计。离线期间产生的每笔签名都应落本地审计日志(含 Key 序列号、摘要、时间戳),恢复联网后统一回传,保证审计举证链条不断。
八、审计举证:把“谁、在哪台机器、签了什么”钉死
监管检查的逻辑永远是三个问题:是谁、在哪台终端、做了什么。UKey 让这三个问题都有硬件级答案。
| 举证维度 | 传统口令方案 | 国密UKey 方案 |
|---|---|---|
| 身份归属 | 账号,可被共享 | Key 序列号,一人一 Key |
| 操作绑定 | 仅应用日志 | 签名值绑定处方摘要 |
| 抗抵赖 | 弱,可抵赖“不是我” | 强,私钥不出硬件 |
| 离线留痕 | 易丢失 | 本地审计日志回传 |
| 篡改检测 | 依赖数据库权限 | SM3 摘要+SM2 验签 |
一套合格的审计举证设计,应把每次签名事件记录为:Key 序列号、证书主题、处方摘要、签名值、终端编号、时间戳。五元组齐备,监管来查时就能完整复现“某医生用某把 Key 在某终端签署了某处方”,且无法被事后否认或篡改。
九、信创适配:从芯片到系统的全栈兼容
医疗与社保属于重点信创推进领域。终端操作系统可能是国产 Linux 发行版或国产桌面系统,CPU 可能是不同架构。国密智能密码钥匙要真正落地,必须做信创认证层面的适配:
- 驱动与接口:提供适配国产系统的 C 动态库与 RESTful 接口,让 HIS/医保前置程序跨平台调用。
- 算法一致:在国产密码软件栈(如国密 SM 系列服务)下,UKey 的 SM2/SM3/SM4 行为与软栈对齐,避免“硬件算的和软件对不上”。
- CA 互通:装载的国密证书能与信创 PKI 体系互信,满足政务/医保对证书链的要求。
- 固件签名闭环:在信创环境下仍能完成固件签名校验,防止在非标准系统上被降级刷写。
以安当UKey为例,其公布的接口形态包含 RESTful API(默认端口 2300)与 C 动态库两套,前者方便 Web/微服务侧远程调用,后者适合工作站本地直连;两者都建立在同一套“私钥不可导出、运算在芯片内”的硬件模型之上,因此无论上层是国产系统还是传统环境,身份锚点的信任根都保持一致。
下面给出一个 RESTful 调用签名的示意(端点与端口仅作示例,实际以部署配置为准):
POST /api/v1/sm2/sign Host: 127.0.0.1:2300 Content-Type: application/json { "key_slot": 0, "digest": "3a7f...(SM3 处方摘要,十六进制)", "pin_cache": "session" /* 本次会话内缓存 PIN,避免长时间重复输码 */ } => 200 OK { "signature": "30 44 02 20 ...(SM2 签名值,十六进制)", "key_sn": "UK2026xxxxxx", "algo": "SM2" }服务端拿到signature与key_sn后,用对应公钥做签名验签,再与本地 HIS 处方摘要比对,一致则认定该处方由这把 Key 合法签署。
十、工程落地的几个坑
实践中容易踩的坑,提前说明:
- PIN 策略过严导致体验崩盘:自助终端前排长队,PIN 输错锁定会把业务堵死。建议 PIN 与签名解耦,高危动作才要求 PIN,普通身份锚点用 KeyID 即可。
- 证书过期无人管:CA 证书有有效期,终端分散在几十个院区,必须建证书到期预警,避免某天集体验签失败。
- 离线日志不回传:断网期间的签名若只落本地不回传,审计就会出现空洞。要有“恢复即补传”的兜底机制。
- 固件签名校验被关:为图升级省事禁用固件签名校验,等于拆掉硬件可信的最后一道门,绝不能省。
- 把私钥当配置下发:任何“把私钥放到配置中心”的做法都违背私钥不出硬件,必须让私钥只在芯片内生成与使用。
十一、小结与落地路线
回到主线:医疗与社保自助终端的身份问题,靠“人记的口令”补不完,必须靠“机器带的硬件密钥”做锚点。国密智能密码钥匙以 32 位 RISC 安全芯片、128KB 存储、SM1/SM2/SM3/SM4 加 RSA/AES/ECC/SHA 的完整算法栈,把身份锚点、电子处方签名、会话加密、软件授权保护 与 OS 双因素 收敛到一把可便携的 USB 载体上。
对医院信息科与医保集成商来说,落地的优先级建议是:先把高危动作(开方、结算、对账)切到签名验签档;再把自助终端的管理动作纳入 USBKey双因素;最后补齐离线应急与审计举证闭环,并完成信创认证适配。
方案参考
通用落地建议,不针对单一产品,供医疗与社保自助终端做硬件身份建设时参考:
- 硬件身份锚点的选型:优先选择私钥不可导出、运算在芯片内的国密智能密码钥匙;确认其支持 SM2/SM3/SM4,并具备固件签名校验能力,防止固件被替换导致信任根失效。
- 电子处方签名流程:由 HIS 侧对处方结构化字段做 SM3 摘要,送 UKey 内部用 SM2 私钥签名,私钥不出硬件;签名值与摘要上送医保/处方平台,下游用公钥做签名验签,确保不可篡改、不可抵赖。
- 分级认证策略:普通查询用 KeyID,账号敏感操作叠加 UserName+KeyID,开方结算等高危动作走签名验签或 CA 证书;按接口敏感度分档,兼顾安全与体验。
- USBKey双因素与软件授权保护:公众自助流程与管理动作分离,参数配置、对账导出等高危动作要求插管理 Key 并完成验签;终端业务程序可用 license 与 Key 序列号绑定,抑制非法克隆部署。
- 私钥不出硬件的边界:密钥仅在芯片内生成与使用,软件层只拿签名结果;切勿把私钥写入配置文件或配置中心,PIN 与签名按需解耦以降低自助场景的排队阻塞。
- 离线应急:依赖 UKey 本地密码运算,断网也能完成处方签名与本地 KeyID 校验;离线期间落本地审计日志(Key 序列号、摘要、时间戳),恢复联网后按序补传,保证链条不断。
- 审计举证闭环:每次签名事件记录 Key 序列号、证书主题、处方摘要、签名值、终端编号、时间戳五元组,监管来查时可完整复现“谁在哪台机器签了什么”,且无法事后否认或篡改。
- 信创适配:确认 UKey 提供适配国产系统的 C 动态库与 RESTful 接口(常见默认端口 2300),其 SM2/SM3/SM4 行为与国密软栈对齐,装载证书能与信创 PKI 互信,并在国产环境下仍完成固件签名闭环。
- 运维兜底:建立证书到期预警、PIN 锁定恢复、固件签名校验不可关闭等机制,避免分散终端出现集体验签失败或信任根被绕过。