HSM KitHSM Kit
中文

Thales LMK 密钥加密:方案、变体与密钥类型

Key Management# Thales# LMK# 密钥加密# HSM
Last Updated: 2026年5月21日5 min readBy HSM Kit Team
Need to calculate this now?
Use our free online Thales 密钥工具 tool.

Thales(前身为 nCipher 和 SafeNet)是支付 HSM 市场的领导者,其 payShield 系列广泛使用。Thales LMK(本地主密钥)系统是这些设备密钥管理的基础。本指南解释 Thales LMK 加密的工作原理、密钥方案和基于变体的密钥保护。

什么是 Thales LMK?

本地主密钥(LMK)是存储在 Thales HSM 内部的根密钥。它是保护系统中所有其他密钥的主密钥。

主要特性

  • 存储在防篡改硬件中
  • 永远不会以明文形式离开 HSM
  • 在密钥仪式期间分成多个组件
  • 用于加密/解密所有工作密钥
  • 不同密钥类型使用不同变体

LMK 变体系统

Thales 使用基于变体的加密系统,将不同的 XOR 掩码应用于 LMK,为不同密钥类型创建不同的加密上下文。

变体工作原理

有效密钥 = LMK XOR 变体掩码
加密密钥 = E(有效密钥, 明文密钥)

这确保不同类型的密钥在密码学上相互隔离。

标准变体掩码

密钥类型变体代码XOR 掩码
ZMK00LMK XOR 00000000 00000000 00000000 00000000
ZMK(变体)01LMK XOR 00000000 00000000 00000000 000000FF
ZPK02LMK XOR 00000000 00000000 00000000 0000FF00
TPK03LMK XOR 00000000 00000000 00000000 00FF0000
TMK04LMK XOR 00000000 00000000 00000000 FF000000
PVK05LMK XOR 00000000 00000000 000000FF 00000000
CVK06LMK XOR 00000000 00000000 0000FF00 00000000
DEK07LMK XOR 00000000 00000000 00FF0000 00000000

密钥方案格式

Thales 使用特定格式表示加密密钥,称为密钥方案。

ZMK 方案

区域主密钥方案用于 HSM 之间的密钥交换:

ZMK 方案:[变体] [加密密钥] [KCV]

示例:

U 1A2B3C4D5E6F7890 ABCD12

其中:

  • U = 双长度密钥
  • 1A2B3C4D5E6F7890 = LMK 加密的 ZMK
  • ABCD12 = 密钥校验值

ZPK 方案

区域 PIN 密钥方案保护 PIN 加密密钥:

ZPK 方案:[变体] [加密密钥] [KCV]

TMK/TPK 方案

终端密钥使用类似格式:

TMK 方案:[变体] [加密密钥] [KCV]

密钥类型详解

区域主密钥(ZMK)

  • 用于在 HSM 之间建立安全通道
  • 手动或通过安全协议交换
  • 加密其他密钥以进行传输
  • 也称为密钥交换密钥(KEK)

区域 PIN 密钥(ZPK)

  • 在 ATM 和 POS 终端加密 PIN
  • 用于区域之间的 PIN 翻译
  • 在 LMK 变体下保护

终端主密钥(TMK)

  • 特定终端的主密钥
  • 在终端初始化期间加载
  • 保护终端特定密钥

终端 PIN 密钥(TPK)

  • 终端用于 PIN 加密
  • 从 TMK 派生或受 TMK 保护
  • 每个终端专用

PIN 验证密钥(PVK)

  • 用于离线验证 PIN
  • 生成 PVV(PIN 验证值)
  • 两端必须相同

卡验证密钥(CVK)

  • 生成 CVV/CVC/CID 值
  • 印在卡磁条或芯片上
  • 用于无卡交易验证

数据加密密钥(DEK)

  • 加密持卡人数据
  • 用于 PAN 加密
  • PCI DSS 要求

密钥校验值(KCV)

KCV 验证对所有 Thales 密钥操作至关重要。

标准 KCV 计算

KCV = E(Key, 0000000000000000) 的前 3 字节

密钥交换中的 KCV

交换密钥时:

  1. 从源 HSM 导出密钥并附带 KCV
  2. 将密钥导入目标 HSM
  3. 目标 HSM 计算 KCV
  4. 比较 KCV——必须完全匹配
  5. 如果不匹配,密钥在传输过程中损坏

密钥导入和导出

导入密钥

将密钥导入 Thales HSM:

  1. 接收在 ZMK 加密下的密钥
  2. HSM 使用 LMK 变体解密 ZMK
  3. HSM 使用 ZMK 解密密钥
  4. HSM 在适当的 LMK 变体下重新加密密钥
  5. 存储密钥并附带 KCV

导出密钥

从 Thales HSM 导出密钥:

  1. 从 LMK 变体中解密密钥
  2. 在目标 ZMK 下加密密钥
  3. 计算 KCV
  4. 返回加密密钥和 KCV

实际应用场景

银行之间的密钥交换

当银行 A 向银行 B 发送 ZPK 时:

  1. 银行 A 在 HSM 中生成 ZPK
  2. 银行 A 在 ZMK 加密下导出 ZPK
  3. ZMK 之前已交换(手动或自动)
  4. 银行 B 将 ZPK 导入他们的 HSM
  5. 双方验证 KCV 匹配

ATM 密钥加载

向 ATM 加载密钥:

  1. 在 HSM 中生成 TMK
  2. 在 ZMK 加密下导出 TMK
  3. 通过主密钥加载将 TMK 加载到 ATM
  4. 为 ATM 生成 TPK
  5. 在 TMK 加密下导出 TPK
  6. 将 TPK 加载到 ATM

常见问题

变体不匹配

使用错误变体是常见问题:

  • 操作前验证密钥类型
  • 检查变体掩码文档
  • 先用已知密钥测试

KCV 不匹配

如果交换后 KCV 不匹配:

  • 验证 ZMK 是否正确加载
  • 检查传输错误
  • 确保双方使用相同的密钥类型
  • 确认变体代码匹配

密钥长度混淆

Thales 支持单长度、双长度和三长度密钥:

  • 单长度:8 字节(16 个十六进制字符)
  • 双长度:16 字节(32 个十六进制字符)
  • 三长度:24 字节(48 个十六进制字符)

确保方案中的长度指示符正确。

在线体验

使用我们的 Thales 密钥工具

  • 在 LMK 变体下加密和解密密钥
  • 为任何密钥计算 KCV
  • 了解密钥方案格式
  • 练习密钥导入/导出场景

该工具完全在浏览器中运行——数据不会离开您的设备。

Related Tool
Thales 密钥工具