IBM 3624 PIN 验证方法(也称为 PIN 偏移量)是银行行业中最古老且部署最广泛的 PIN 验证方案之一。本指南解释 PIN 偏移量的工作原理以及它在 ATM 和 POS 网络中的使用方式。
什么是 IBM 3624 PIN 偏移量?
IBM 3624 方法通过从卡号(PAN)计算"自然 PIN"并使用偏移量值将其与实际 PIN 进行比较来验证客户的 PIN。偏移量是客户选择的 PIN 与计算的自然 PIN 之间的差值。
核心概念
自然 PIN = f(PAN, PIN_派生密钥)
PIN 偏移量 = 客户_PIN - 自然_PIN(模 10)
验证 PIN 时:
预期 PIN = 自然_PIN + PIN_偏移量(模 10)
如果预期 PIN 与提交的 PIN 匹配,则验证成功。
PIN 偏移量工作原理
自然 PIN 生成
自然 PIN 使用 PIN 派生密钥(PDK)从 PAN 派生:
步骤 1:准备 PAN
取 PAN(主账号),排除校验位,并格式化:
PAN_格式化 = PAN 最右边 12 位数字(不含校验位)
步骤 2:使用 PDK 加密
使用 PIN 派生密钥进行 3DES 加密:
加密结果 = 3DES_Encrypt(PDK, PAN_格式化)
步骤 3:十进制化
使用十进制化表将加密结果转换为十进制数字:
- 取加密结果的每个十六进制数字
- 使用表将其映射到十进制数字
- 选择前 N 位数字(N 为 PIN 长度,通常为 4)
十进制化表
十进制化表将十六进制数字(0-F)映射到十进制数字(0-9):
十六进制: 0 1 2 3 4 5 6 7 8 9 A B C D E F
十进制: 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5
这是默认表。银行可以自定义以增加安全性——如果攻击者知道算法但不知道表,就无法计算自然 PIN。
PIN 偏移量计算
生成自然 PIN 后,计算 PIN 偏移量:
PIN 偏移量 =(客户_PIN - 自然_PIN)模 10
每位数字独立计算:
偏移量_数字[i] =(客户_数字[i] - 自然_数字[i])模 10
示例
给定:
- PAN:
4012345678901234(校验位是 4) - PDK:
0123456789ABCDEF FEDCBA9876543210 - 客户 PIN:
1234 - 十进制化表:默认
步骤 1:格式化 PAN
PAN(不含校验位):401234567890123
最右边 12 位:012345678901
步骤 2:加密
加密结果 = 3DES_Encrypt(PDK, 012345678901)
结果:A1B2C3D4E5F6A7B8
步骤 3:十进制化
使用默认表:012345078056
自然 PIN(前 4 位):0123
步骤 4:计算偏移量
偏移量 =(1234 - 0123)模 10 = 1111
存储值:PIN 偏移量 = 1111
PIN 验证过程
当客户在 ATM 输入 PIN 时:
- ATM 将加密的 PIN 块发送到主机
- 主机的 HSM 解密 PIN 块
- HSM 检索该卡的存储 PIN 偏移量
- HSM 使用 PDK 和 PAN 计算自然 PIN
- HSM 将偏移量加到自然 PIN 上
- HSM 将结果与提交的 PIN 进行比较
- 如果匹配,交易继续进行
HSM 命令流程
1. 解密 PIN 块 → 提取提交的 PIN
2. Encrypt(PDK, PAN_格式化) → 加密结果
3. 十进制化(加密结果) → 自然 PIN
4. 自然_PIN + PIN_偏移量 → 预期 PIN
5. 比较(提交_PIN, 预期_PIN) → 结果
PIN 偏移量存储位置
PIN 偏移量可以存储在多个位置:
- 在磁条上:编码在磁道 2 或磁道 3 中
- 在发卡行数据库中:与卡记录关联
- 在芯片中:对于 EMV 卡,可能存储在芯片中
磁条存储
传统上,PIN 偏移量存储在磁道 2 的自由数据字段中:
磁道 2:PAN | 有效期 | 服务码 | 自由数据(包含 PIN 偏移量)
安全注意事项
优势
- 简单性:易于实现和理解
- 高效性:每次验证只需一次加密操作
- 兼容性:与现有磁条基础设施兼容
弱点
- 无 PIN 加密:偏移量本身未加密——如果数据库泄露,攻击者可以计算 PIN
- 表依赖性:安全性依赖于保密十进制化表
- 自然 PIN 暴露:如果 PDK 泄露,可以为所有卡计算自然 PIN
缓解措施
PIN 偏移量与 PVV 对比
| 特性 | PIN 偏移量(IBM 3624) | PVV(VISA) |
|---|---|---|
| 来源 | IBM | VISA |
| 验证 | 将偏移量加到自然 PIN | 比较 PVV 值 |
| 存储 | 偏移量在磁条/数据库 | PVV 在磁条上 |
| 算法 | 3DES + 十进制化 | 3DES + 十进制化 |
| 安全性 | 中等 | 更高 |
| 密钥 | PDK | PVK |
PVV 提供更强的安全性,因为验证值本身是加密的,而不仅仅是一个偏移量。详情参见 PIN PVV 指南。
实际应用
ATM 网络
PIN 偏移量仍在全球 ATM 网络中广泛使用:
- 大多数 ATM 支持 IBM 3624 验证
- 与传统系统的向后兼容性
- 在 HSM 中简单实现
迁移路径
许多银行正在从 PIN 偏移量迁移到 PVV 或 EMV 芯片验证:
- 实现双重验证(支持两种方法)
- 逐步重新发行带有 PVV 的卡
- 最终淘汰 PIN 偏移量
亲自尝试
使用我们的 PIN 偏移量工具理解和验证 IBM 3624 方法:
- PIN 偏移量计算器 —— 使用 IBM 3624 方法计算自然 PIN、计算 PIN 偏移量和验证 PIN
所有处理在您的浏览器本地完成——您的 PDK 不会离开您的设备。