# PIN 块 AES（格式 4）：基于 AES 的 ISO 9564

> ISO 9564 格式 4 PIN 块的工作原理——PIN 的 AES 加密、与格式 0 的比较，以及实现注意事项。

Canonical: https://hsmkit.com/zh/guides/pin-block-aes-format4-guide/

Last updated: 2026-05-21

PIN 块格式 4 是最新的 ISO 9564 PIN 块格式，专为 [AES 加密](/zh/guides/aes-encryption-explained/) 设计。本指南解释格式 4 的工作原理以及为什么它代表了支付系统中 PIN 安全的未来。

## 什么是 PIN 块格式 4？

PIN 块格式 4（也称为 ISO-4）在 ISO 9564-1 中定义，提供了基于 AES 的现代 PIN 加密方法。它取代了为 [3DES](/zh/guides/des-3des-legacy-encryption/) 加密设计的传统[格式 0](/zh/guides/pin-block-formats-iso9564/)。

格式 4 是支付行业从 3DES 迁移到 AES 的更广泛计划的一部分，与 [AES-DUKPT](/payments-dukpt-aes) 和 [TR-31 版本 D](/zh/guides/what-is-tr31-key-block/) 密钥块一起。

## 格式 4 结构

格式 4 PIN 块为 16 字节（128 位）——是格式 0 的 8 字节的两倍。结构包括：

```
字节 0：  控制字段（0x44 = 格式 4 标识符）
字节 1：  PIN 长度（0x04 到 0x0C）
字节 2-7：PIN 数字 + 随机填充
字节 8-13：PAN 哈希（从 PAN 派生）
字节 14-15：随机填充 + 补齐
```

### 控制字段

第一个字节标识格式：
- `0x44` 表示格式 4
- 高半字节 `4` 是格式标识符
- 低半字节包含标志位

### PIN 数据

- PIN 长度占一个半字节（4 位）
- PIN 数字紧随其后
- 剩余位置用随机数据填充（0x0-0x9 或 0xA-0xF）

### PAN 哈希

格式 4 包含 PAN 的哈希值，将 PIN 块绑定到特定卡片：

```
PAN_哈希 = AES-ECB(PAN_填充, PAN_哈希密钥)
```

这提供了完整性验证——如果解密时使用了错误的 PAN，哈希值将不匹配。

## 格式 4 与格式 0 对比

| 特性 | 格式 0 | 格式 4 |
|------|--------|--------|
| 块大小 | 8 字节 | 16 字节 |
| 加密 | 3DES ECB | AES-128 ECB |
| 需要 PAN | 是（XOR） | 是（哈希） |
| 随机填充 | 否（固定 0xF） | 是 |
| 完整性检查 | 否 | PAN 哈希 |
| 安全级别 | 传统 | 现代 |
| 标准 | ISO 9564 | ISO 9564-1 |

### 主要区别

1. **随机填充**：格式 4 使用随机数据而非固定填充，使相同的 PIN 产生不同的 PIN 块
2. **PAN 绑定**：格式 4 中的 PAN 哈希比格式 0 中的 XOR 方法更安全
3. **块大小**：16 字节适应 AES-128 的块大小
4. **完整性**：PAN 哈希提供内置的完整性检查

## 加密过程

### 步骤 1：构造 PIN 块

1. 以格式标识符 `0x44` 开始
2. 添加 PIN 长度
3. 添加 PIN 数字
4. 用随机数据填充剩余位置
5. 计算 PAN 哈希并添加到块中
6. 填充至 16 字节

### 步骤 2：使用 AES 加密

```
加密块 = AES-128-ECB(PEK, PIN_块)
```

PIN 加密密钥（PEK）是 128 位 AES 密钥，可以是：
- 静态密钥（传统）
- [AES-DUKPT](/payments-dukpt-aes) 派生密钥（推荐）
- 通过 [TR-31 版本 D](/zh/guides/what-is-tr31-key-block/) 密钥块传输

### 步骤 3：传输

16 字节的加密 PIN 块放入交易消息中。对于 [ISO 8583](/zh/guides/iso8583-payment-messages/) 消息，通常放在字段 52（PIN 数据）中。

## PAN 哈希计算

PAN 哈希将 PIN 块绑定到特定卡号：

```
PAN_填充 = 将 PAN 右对齐到 16 字节，用 0x00 填充
PAN_哈希 = AES-ECB(PAN_哈希密钥, PAN_填充)
```

在解密期间，HSM：
1. 解密 PIN 块
2. 使用已知 PAN 重新计算 PAN 哈希
3. 验证哈希值是否匹配
4. 如果不匹配，拒绝 PIN 块

这防止了攻击者操纵 PAN 以导致 PIN 翻译错误的某些攻击。

## 格式 4 的安全优势

### 随机填充

与格式 0 的固定 `0xF` 填充不同，格式 4 使用随机值。这意味着：
- 两个相同的 PIN 使用相同密钥加密会产生不同的 PIN 块
- 攻击者无法确定两笔交易是否使用相同的 PIN
- 减少信息泄露

### PAN 哈希完整性

PAN 哈希提供：
- PIN 和卡号之间的绑定
- 检测 PAN 替换攻击
- 验证翻译期间使用了正确的 PAN

### AES-128 安全性

AES-128 比 3DES 提供更强的安全性：
- 没有已知的实用攻击
- 128 位密钥 vs 3DES 的 112 位有效密钥
- NIST 批准的标准，有效期至 2030 年以后

## 实际交易流程

### 终端到收单方

1. 客户在终端输入 PIN
2. 终端使用随机填充构造格式 4 PIN 块
3. 终端使用 PEK（或 [AES-DUKPT](/payments-dukpt-aes) 密钥）加密 PIN 块
4. 加密的 PIN 块放入交易消息
5. 消息连同 [MAC](/zh/guides/mac-algorithms-payment-security/) 一起发送到收单方

### 收单方到发卡行

1. 收单方接收包含加密 PIN 块的消息
2. 收单方的 [HSM](/zh/guides/hsm-key-management-overview/) 使用终端的 PEK 解密
3. HSM 验证 PAN 哈希完整性
4. HSM 使用交换密钥重新加密
5. 翻译后的 PIN 块发送到发卡行

### 发卡行验证

1. 发卡行的 HSM 解密 PIN 块
2. HSM 验证 PAN 哈希
3. HSM 提取 PIN
4. HSM 根据存储的值验证 PIN（使用 [PIN 偏移量](/payments-pin-offset) 或 [PVV](/payments-pin-pvv)）

## 迁移注意事项

### HSM 支持

确保您的 HSM 支持格式 4：
- Thales payShield：支持格式 4 和 AES-DUKPT
- SafeNet Luna：支持格式 4
- Futurex：支持格式 4

### 终端支持

新终端应原生支持格式 4。旧终端可能需要固件更新。

### 密钥管理

格式 4 需要 AES 密钥：
- 使用 [TR-31 版本 D](/zh/guides/what-is-tr31-key-block/) 进行密钥传输
- 在 HSM 中生成 AES 密钥
- 考虑使用 [AES-DUKPT](/payments-dukpt-aes) 获取每笔交易的密钥

### 双格式支持

在迁移期间，系统可能需要同时支持格式 0 和格式 4：
- 从控制字段检测格式
- 相应处理
- 逐步淘汰格式 0

## 常见问题

### 为什么格式 4 是格式 0 的两倍大小？

AES-128 在 16 字节块上操作，而 3DES 在 8 字节块上操作。更大的块大小也容纳了 PAN 哈希和随机填充。

### 可以在 3DES 密钥上使用格式 4 吗？

不可以。格式 4 专为 AES 加密设计。对于基于 3DES 的系统，使用格式 0 或格式 3。

### 格式 4 向后兼容吗？

不兼容。格式 4 是一种新格式，需要终端、HSM 和处理系统的明确支持。没有格式检测的情况下，不能与格式 0 混合使用。

### 什么时候应该迁移到格式 4？

新部署应从一开始就使用格式 4。现有系统应作为更广泛的 3DES 到 AES 迁移的一部分进行规划，特别是因为 NIST 于 2023 年弃用了 3DES。

## 亲自尝试

使用我们的 PIN 块格式 4 工具理解和练习基于 AES 的 PIN 块格式：

- [PIN 块 AES 工具](/payments-pin-blocks-aes) —— 使用 AES-128 加密编码和解码格式 4 的 PIN 块

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