# Atalla AKB 密钥块格式：头部、加密与验证

> 了解 Atalla 密钥块（AKB）格式——头部结构、MFK 加密、KCV 验证，以及 Atalla HSM 如何保护加密密钥。

Canonical: https://hsmkit.com/zh/guides/atalla-akh-key-block-format/

Last updated: 2026-05-21

Atalla 最初由 HP 开发，现由 Utimaco 拥有，使用一种称为 AKB（Atalla 密钥块）的专有密钥块格式。这种格式在传统银行基础设施中很常见，特别是在 PIN 处理领域。本指南介绍 AKB 结构、头部格式以及密钥保护方式。

## 什么是 AKB？

AKB（Atalla 密钥块）是 Atalla HSM 用于存储和传输密码密钥的专有格式。与简单的密钥加密不同，AKB 将密钥属性和完整性检查与密钥材料绑定，为密钥管理提供结构化容器。

### AKB 的应用场景

- 传统 ATM 网络
- PIN 翻译系统
- 支付处理基础设施
- 较旧的银行 HSM 部署

## AKB 结构概述

AKB 密钥块包含几个不同的部分：

```
+------------------+
| 头部             |  包含元数据的固定长度头部
+------------------+
| 密钥类型         |  密钥用途的标识符
+------------------+
| 加密密钥         |  在 MFK 下加密的密钥材料
+------------------+
| KCV              |  用于验证的密钥校验值
+------------------+
| 尾部             |  完整性和格式标记
+------------------+
```

## 头部格式

AKB 头部标识密钥块并提供基本元数据。

### 头部字段

| 字段 | 长度 | 描述 |
|------|------|------|
| 格式代码 | 2字节 | 标识这是 AKB 块 |
| 版本 | 1字节 | AKB 格式版本 |
| 密钥类型 | 2字节 | 密钥用途（ZMK、ZPK 等） |
| 密钥长度 | 1字节 | 加密密钥的长度 |
| 标志 | 1字节 | 可导出性、使用限制 |

### 格式标识

头部通常以特定字节开头，标识其为 AKB：
- `00` 或 `01` 作为格式标识符
- 版本指示符用于格式兼容性

## 密钥类型标识符

AKB 使用特定代码来标识密钥类型：

| 代码 | 密钥类型 | 描述 |
|------|----------|------|
| 00 | MFK | 主文件密钥 |
| 01 | ZMK | 区域主密钥 |
| 02 | ZPK | 区域 PIN 密钥 |
| 03 | PVK | PIN 验证密钥 |
| 04 | CVK | 卡验证密钥 |
| 05 | TMK | 终端主密钥 |
| 06 | TPK | 终端 PIN 密钥 |
| 07 | DEK | 数据加密密钥 |

## 主文件密钥（MFK）加密

Atalla 使用 MFK 作为所有存储密钥的根加密密钥。

### MFK 如何保护密钥

1. MFK 在初始化期间在 HSM 内部生成
2. MFK 被分成多个组件（双重控制）
3. HSM 中存储的所有密钥都在 MFK 下加密
4. MFK 永远不会以明文形式离开 HSM

### MFK 变体系统

与其他 HSM 厂商类似，Atalla 可能为不同密钥类型使用 MFK 的变体：

```
ZMK 加密 = E(MFK XOR 变体, ZMK 明文)
ZPK 加密 = E(MFK XOR 变体, ZPK 明文)
```

这为密钥类型之间提供了密码学分离。

## 密钥校验值（KCV）

AKB 中的 KCV 与其他系统中的用途相同——验证密钥完整性。

### KCV 计算

标准 KCV 计算方法：
1. 使用密钥加密 8 字节的零
2. 取结果的前 3 字节
3. 显示为 6 个十六进制字符

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

### AKB 中的 KCV

AKB 中的 KCV 与加密密钥一起存储，用作：
- 密钥加载后的快速验证
- 密钥交换期间的交叉检查
- 审计参考点

## AKB 与 TR-31 对比

了解 AKB 与现代标准之间的差异很重要：

| 特性 | AKB | TR-31 |
|------|-----|-------|
| 标准 | 专有 | ANSI X9.143 |
| 厂商锁定 | 仅 Atalla | 厂商中立 |
| 密钥绑定 | 基本 | 密码学绑定 |
| 属性 | 有限 | 全面 |
| 采用率 | 传统 | 现代标准 |

许多组织正在从 AKB 迁移到 TR-31 以实现互操作性。

## 使用 AKB 密钥

### 解码 AKB

解码 AKB 密钥块：

1. 解析头部以识别格式和版本
2. 提取密钥类型标识符
3. 读取加密密钥材料
4. 提取 KCV
5. 解密后验证 KCV

### 常见字段

使用 AKB 时，您通常会看到：

```
格式（十六进制）| 类型（十六进制）| 加密密钥（十六进制）| KCV（十六进制）
```

## 实际应用场景

### PIN 处理

AKB 通常用于 PIN 翻译：

1. PIN 在 ZPK 加密下到达
2. HSM 在 AKB 格式中查找 ZPK
3. HSM 使用 MFK 解密 ZPK
4. HSM 将 PIN 从源 ZPK 翻译到目标 ZPK
5. 将翻译后的 PIN 发送到目的地

### 密钥交换

与合作伙伴交换密钥时：

1. 在 Atalla HSM 中生成 ZMK
2. 以 AKB 格式导出 ZMK
3. 将 AKB 传输给合作伙伴
4. 合作伙伴导入到他们的 HSM
5. 验证 KCV 匹配

## 常见问题

### 格式兼容性

AKB 是 Atalla 专有的——您不能将 AKB 密钥直接用于 Thales 或 Futurex HSM，除非进行转换或在 TR-31 下重新加密。

### 遗留迁移

从 Atalla 迁移到其他 HSM 时：
1. 以 AKB 格式导出密钥
2. 在 Atalla HSM 中解密
3. 在 TR-31 或目标厂商格式下重新加密
4. 导入到新 HSM
5. 验证所有 KCV

### 头部解析错误

常见问题包括：
- 格式版本处理不正确
- 误解密钥类型代码
- 字节顺序（大小端）混淆
- 缺少尾部字节

## 在线体验

使用我们的 [Atalla 密钥工具](/atalla-keys)：

- 解码 AKB 密钥块
- 提取头部信息
- 解析密钥类型和长度
- 验证 KCV

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