3. 密码学基础在医疗场景中的选用原则
在医疗信息系统中,密码学不是“越强越好”的堆叠,而是“匹配场景”的工程选择。同一份电子病历,在数据库落盘、跨院区传输、移动端调阅、审计留痕四个环节中,所需的密码学原语往往完全不同。若把非对称加密用于大批量影像数据,系统吞吐会迅速崩塌;若只用哈希保护可逆的检验结果,数据将无法还原;若对每个字段都做独立加密,密钥数量和运维复杂度又会失控。因此,本节的核心不是罗列算法,而是建立一套可操作的选用判断:先看数据是否需要还原、再看参与方数量、最后看性能预算与合规要求。
三类原语的本质差异与医疗适用条件
对称加密使用同一密钥完成加密与解密,典型算法为 AES-128/256-GCM、SM4。它的优势是速度快、适合大数据量,缺点是密钥必须安全共享。医疗场景中,它最适合“静态数据落盘保护”和“已建立会话后的批量传输”,例如病历数据库表空间加密、影像归档(PACS)中的 DICOM 文件加密、备份磁带加密。AES-256-GCM 在现代服务器上单核可达 1~3 GB/s 量级(示例量级,实际取决于 CPU 指令集),足以支撑影像流水线。
非对称加密使用公钥加密、私钥解密,或私钥签名、公钥验签,典型算法为 RSA-2048/3072、ECC P-256、SM2。它的优势是解决密钥分发与身份绑定问题,缺点是运算慢、密文膨胀。医疗场景中,它不适合直接加密大文件,而适合:一是密钥封装,即用接收方公钥加密一个临时对称密钥(信封加密);二是数字签名,用于处方、检验报告、电子病历的不可否认性;三是身份认证,如医生工作站与前置机之间的双向证书认证。RSA-2048 单次解密约 1~3 ms,ECC P-256 约 0.2~0.5 ms(示例量级),但相比 AES 仍慢几个数量级。
哈希与消息认证码常被混用,但目标不同。哈希(SHA-256、SM3)是单向摘要,用于完整性校验和去重索引,例如判断两份检验报告是否一致、构建患者主索引的匹配指纹。它不提供密钥,因此无法抵御主动篡改。消息认证码(HMAC-SHA256、CMAC)在哈希基础上引入共享密钥,既能验证完整性又能验证来源,适合“内部系统间可信通道”的报文防篡改,例如 LIS 向 HIS 推送结果时的报文校验。若需要同时验证来源和不可否认性,则应使用数字签名而非 HMAC。
性能与安全的权衡:信封加密是医疗系统的主力模式
医疗数据体量大、参与方多,单一原语很难同时满足安全与性能。工程上最常用的组合是信封加密:每次加密生成一个随机的数据加密密钥(DEK),用 AES-GCM 加密病历或影像;再用接收方的公钥(RSA 或 ECC)加密 DEK,形成“数字信封”。这样既保留了对称加密的高吞吐,又利用非对称加密解决了密钥分发。示例流程如下:
1. 生成随机 DEK:32 字节(AES-256)
2. 用 DEK + 随机 IV 对病历明文做 AES-256-GCM 加密
→ 得到密文 C 和认证标签 Tag
3. 用接收方公钥加密 DEK
→ 得到 encrypted_DEK
4. 输出:{encrypted_DEK, IV, C, Tag}
5. 接收方用私钥解出 DEK,再解密密文并校验 Tag
这里的关键判断是:GCM 的认证标签必须校验。如果只解密不验签,攻击者篡改密文后系统可能返回错误明文而不报错。医疗系统中,检验结果、用药剂量一旦被篡改,后果严重,因此 GCM 或 CCM 这类带认证的加密模式应优先于 CBC。
避免过度加密:三个常见误区
误区一:全库字段级加密。对患者姓名、性别、年龄、诊断、处方逐字段加密,会导致无法做范围查询、无法建立索引、无法做统计分析,且密钥数量随字段膨胀。合理做法是:对直接标识符(姓名、身份证号、手机号)做加密或令牌化,对诊断、药品等准标识符采用访问控制与脱敏,而非全部加密。
误区二:用非对称加密保护大文件。RSA 只能加密小于密钥长度的数据,且速度慢。若直接对 DICOM 影像做 RSA 加密,单张影像可能耗时数秒,PACS 调阅将不可用。正确做法是信封加密,非对称只保护 DEK。
误区三:哈希当加密用。哈希不可逆,不能用于需要还原的检验结果。若把可逆数据哈希后存储,等于永久丢失原始值。哈希只应用于完整性校验、去重索引和口令存储(配合盐值与慢哈希如 bcrypt/Argon2)。
医疗场景选用对照与合规约束
下表给出常见医疗对象的选用建议,参数为示例配置,实际应结合等保、密评和医院安全策略调整。
| 医疗对象 | 推荐原语 | 示例参数 | 关键理由 |
|---|---|---|---|
| 病历数据库表空间 | 对称加密 | AES-256-GCM,密钥由 KMS 托管 | 数据量大,需高吞吐,落盘保护 |
| PACS 影像归档 | 信封加密 | AES-256-GCM + RSA-2048 封装 DEK | 影像大,需兼顾性能与密钥分发 |
| 跨院区传输 | 非对称 + 对称 | TLS 1.3(ECDHE + AES-GCM) | 前向安全,双向认证 |
| 电子处方签名 | 数字签名 | SM2 或 ECDSA P-256 | 不可否认,符合电子签名法 |
| LIS 报文校验 | HMAC | HMAC-SHA256,共享密钥 | 内部可信通道,防篡改 |
| 患者主索引去重 | 哈希 | SHA-256 + 盐值 | 不可逆比对,保护隐私 |
最后需要强调:密码学选用的终点不是算法本身,而是密钥生命周期管理。无论选择哪种原语,都必须回答密钥如何生成、如何存储、如何轮换、如何销毁、如何审计。医疗系统中,密钥一旦泄露,再强的算法也形同虚设。因此,在完成原语选型后,应把 DEK、KEK、根密钥的层级关系与轮换周期一并纳入设计,避免“加密做了、密钥裸奔”的过度加密假象。