HSM KitHSM Kit
中文

ZKA:德国银行会话密钥与 PIN 标准

Payment Security# ZKA# 德国银行# 会话密钥# PIN
Last Updated: 2026年5月21日6 min readBy HSM Kit Team
Need to calculate this now?
Use our free online ZKA 工具 tool.

ZKA(Zentraler Kreditausschuss,德国中央信贷委员会)是德国银行业用于安全 PIN 处理和消息认证的标准。本指南涵盖 ZKA 规范、会话密钥派生及其密码学操作。

什么是 ZKA?

ZKA 是由德国中央信贷委员会定义的标准,用于保护德国电子银行交易的安全。它规定:

  • PIN 加密和验证
  • 会话密钥派生
  • MAC(消息认证码)计算
  • 银行终端的密钥管理

ZKA 广泛应用于德国银行基础设施,包括 ATM、POS 终端和网上银行系统。它为德国银行生态系统特有的交易安全提供了标准化方法。

会话密钥派生

ZKA 的核心概念是会话密钥——为每个银行会话或交易派生的临时密钥。这限制了任何单个密钥泄露时的影响。

会话密钥组件

会话密钥从以下内容派生:

  • 主密钥:存储在 HSM 中的长期密钥
  • 交易数据:来自当前交易的唯一数据(例如时间戳、序列号)
  • 随机数据:随机数或随机值以确保唯一性

派生过程

会话密钥 = KDF(主密钥, 交易数据 || 随机数据)

密钥派生函数(KDF)通常使用:

  • CBC 模式下的 3DES 加密
  • 较新实现使用 AES
  • 基于 CMAC 的派生以获得更强的安全性

密钥层次结构

主密钥(MK)
 ├── PIN 加密会话密钥
 ├── MAC 会话密钥
 └── 数据加密会话密钥

每个会话密钥独立派生,为不同安全功能提供密钥分离。

SK-pac(PIN 和认证密文会话密钥)

SK-pac 是 ZKA 框架中用于 PIN 加密和认证的特定会话密钥。

用途

SK-pac 用于:

  • 加密传输的 PIN 块
  • 生成认证密文
  • 验证交易完整性

派生

SK-pac 使用以下方式从主密钥派生:

SK-pac = Derive(MK, "pac" || 会话数据)

派生包含上下文标签("pac"),以确保密钥仅用于其预期目的。

使用

  1. 终端请求新会话
  2. HSM 从主密钥派生 SK-pac
  3. SK-pac 用于加密客户的 PIN
  4. PIN 块安全传输
  5. 接收方的 HSM 派生相同的 SK-pac 进行解密

ZKA 中的 PIN 加密

ZKA 定义了如何加密 PIN 以进行安全传输:

PIN 块格式

ZKA 通常使用 ISO 9564 格式 0 作为 PIN 块格式:

PIN 块 = PIN 字段 XOR PAN 字段

PAN 字段使用标准 ISO-0 格式,包含 PAN 最右边 12 位数字。

加密过程

  1. 客户在终端输入 PIN
  2. 终端将 PIN 格式化为 ISO-0 PIN 块
  3. PIN 块使用 SK-pac 加密
  4. 加密的 PIN 块放入交易消息中
  5. 消息发送到银行的 HSM 进行验证

密钥安全

  • SK-pac 是会话密钥,仅对当前会话有效
  • 即使被截获,密钥在会话后过期
  • 主密钥永远不会在 HSM 外暴露

ZKA 中的 MAC 计算

ZKA 使用消息认证码确保交易完整性:

MAC 算法

ZKA 通常使用基于 3DES 的 CBC-MAC:

  1. 将消息分成 8 字节块
  2. 使用 MAC 会话密钥加密第一块
  3. 将结果与下一块进行 XOR
  4. 再次加密
  5. 对所有块重复此过程
  6. 最终结果是 MAC(截断为 4 或 8 字节)

MAC 密钥派生

MAC 会话密钥从 SK-pac 单独派生:

SK-mac = Derive(MK, "mac" || 会话数据)

这提供了密钥分离——即使 PIN 密钥泄露,MAC 密钥仍然安全。

MAC 验证

  1. 发送方对交易消息计算 MAC
  2. MAC 附加到消息中
  3. 接收方使用相同密钥重新计算 MAC
  4. 如果 MAC 匹配,则消息是真实的且未被修改

实际交易流程

ATM 交易

  1. 客户插入卡片并输入 PIN
  2. ATM 与银行的 HSM 建立安全会话
  3. HSM 为会话派生 SK-pac 和 SK-mac
  4. ATM 使用 SK-pac 加密 PIN 块
  5. ATM 使用 SK-mac 计算 MAC
  6. 交易消息发送到银行
  7. 银行的 HSM 验证 MAC 和 PIN
  8. 交易授权或拒绝

POS 交易

与 ATM 类似,但有一些额外考虑:

  • 终端可能支持多种卡品牌
  • 会话密钥可以预先派生以提高效率
  • 非接触交易可能使用不同的会话管理

ZKA 与国际标准对比

特性ZKAISO 9564ANSI X9.24
区域德国国际国际
会话密钥可选
MAC 标准CBC-MACN/ACBC-MAC
密钥派生ZKA 特定标准 KDF标准 KDF
PIN 格式格式 0所有格式所有格式

安全特性

密钥分离

ZKA 强制执行严格的密钥分离:

  • PIN、MAC 和数据使用不同的会话密钥
  • 上下文标签防止密钥误用
  • 每个会话有唯一的密钥

会话隔离

每个银行会话使用新鲜密钥:

  • 被泄露的会话密钥不影响其他会话
  • 密钥在会话结束后过期
  • 会话密钥的前向保密性

主密钥保护

主密钥永远不会离开 HSM:

  • 所有密钥派生在 HSM 内部进行
  • 会话密钥按需派生
  • 主密钥组件分拆加载(参见密钥分片指南

常见问题

ZKA 只在德国使用吗?

ZKA 主要是德国银行标准,但可能被国际运营的德国银行使用。其他国家有自己的标准(例如澳大利亚的 AS2805)。

ZKA 可以使用 AES 吗?

较新的 ZKA 实现支持 AES 加密,尽管 3DES 在传统系统中仍然常见。

ZKA 与 EMV 有什么关系?

ZKA 在网络/主机级别运行,而 EMV 在卡/终端级别运行。它们相互补充——EMV 保护卡-终端接口,而 ZKA 保护终端-主机接口。

ZKA 和 TR-31 有什么区别?

TR-31 是用于传输密钥的密钥块格式。ZKA 是定义密钥如何派生和使用的完整安全框架。TR-31 可以在 ZKA 实现中用于密钥传输。

亲自尝试

使用我们的 ZKA 工具理解和练习德国银行安全标准:

  • ZKA 工具 —— 按照 ZKA 规范进行会话密钥派生、PIN 加密和 MAC 计算

所有处理在您的浏览器本地完成——您的主密钥不会离开您的设备。

Related Tool
ZKA 工具