第二章:磁条卡与EMV芯片卡原理
各位同学,今天我们来聊聊支付卡最核心的两个技术体系——磁条卡和EMV芯片卡。说实话,我在安全圈混了十几年,见过太多因为不懂这些底层原理而翻车的案例。你想想看,连卡的数据怎么存、怎么读都不清楚,怎么去发现漏洞?
2.1 磁条卡数据结构与克隆原理
磁条卡,说白了就是一条黑色塑料带子贴在一张塑料卡片上。嗯,这里要注意,这条带子可不是随便涂的黑色颜料,它里面藏着三层磁道。
2.1.1 磁道数据结构
磁条卡有三个磁道,每个磁道的用途和格式都不一样。我个人习惯把磁道2当作重点研究对象,因为大部分交易系统只读磁道2。
| 磁道 | 数据内容 | 最大字符数 | 编码方式 |
|---|---|---|---|
| 磁道1 | 卡号、持卡人姓名、有效期、服务码 | 79个字符 | 7位ASCII码 |
| 磁道2 | 卡号、有效期、服务码、PIN验证数据 | 40个字符 | 5位BCD码 |
| 磁道3 | 备用数据(很少用) | 107个字符 | 5位BCD码 |
磁道2的数据格式长这样:
;卡号=有效期+服务码+自定义数据?
示例:;6222021234567890=2505123456789?
其中:
; 起始标识
6222021234567890 卡号(19位)
= 分隔符
2505 有效期(25年05月)
123 服务码
456789 自定义数据
? 结束标识
我在项目中遇到过一件事:有家电商平台把磁道2数据直接存到数据库里,连加密都没有。你想想看,这等于把银行卡的"指纹"直接送人了。
2.1.2 克隆原理
磁条卡克隆,说白了就是"读出来,写进去"。为什么能克隆?因为磁条卡的数据是静态的、明文存储的,没有任何动态验证机制。
核心漏洞点:磁条卡的数据一旦被读取,就可以被无限复制。没有动态加密,没有挑战-响应机制。
克隆流程其实很简单:
- 读取磁道数据:用磁条读卡器(比如市面上的USB磁条刷卡器)读取磁道2数据
- 解析数据:提取卡号、有效期、服务码
- 写入空白卡:用磁条写卡器把数据写入空白磁条卡
- 使用克隆卡:在支持磁条交易的POS机上刷卡
避坑指南:我曾经见过一个渗透测试团队,他们用淘宝上几十块钱的磁条读卡器,在咖啡厅里"不经意"地刷了一下别人的卡,就拿到了完整的磁道数据。整个过程不到3秒。所以,磁条卡的安全问题不是"能不能被克隆",而是"什么时候被克隆"。
2.2 EMV芯片卡交易流程与加密机制
EMV芯片卡的出现,说白了就是为了解决磁条卡"一读就死"的问题。芯片卡里面有一颗真正的微处理器,能跑加密算法,能生成动态数据。
2.2.1 芯片卡内部结构
芯片卡内部有这几个关键组件:
- CPU:8位或16位微处理器,跑COS(卡片操作系统)
- ROM:存储COS固件,出厂就写死了
- EEPROM:存储应用数据(卡号、密钥、交易记录)
- RAM:临时存储交易过程中的计算数据
- 加密协处理器:专门跑RSA、DES、AES等算法
2.2.2 交易流程
EMV交易流程,我习惯把它分成三个阶段:
第一阶段:卡片认证(SDA/DDA/CDA)
终端向卡片发送一个随机数,卡片用私钥签名后返回。终端用公钥验证签名。这样就能确认卡片是真的,不是克隆的。
第二阶段:持卡人验证(CVM)
这个阶段验证你是不是卡的主人。常见方式有:
- 联机PIN:PIN送到发卡行验证
- 脱机PIN:卡片自己验证PIN
- 签名:传统方式,现在很少用了
- 无CVM:小额免密
第三阶段:交易授权
卡片生成一个动态的ARQC(授权请求密码),这个值每次交易都不一样。发卡行验证ARQC后返回ARPC(授权响应密码)。
个人经验:我测试过一个支付系统,他们只验证了ARQC的格式,没验证ARQC的内容。结果我用一个固定的ARQC值反复提交交易,系统全通过了。这就是典型的"只检查了形式,没检查实质"。
2.2.3 加密机制
EMV的加密体系,说白了就是"公私钥+对称密钥"的混合体:
- 非对称加密:用于卡片认证(RSA 1024/2048位)
- 对称加密:用于交易数据保护(3DES/AES)
- 动态数据:每次交易生成唯一的ARQC,防止重放攻击
- 密钥分散:每张卡的密钥都不一样,从主密钥派生出来
2.3 磁条卡 vs 芯片卡安全对比
我直接说结论:磁条卡在安全层面,完全不是芯片卡的对手。但为什么还有那么多磁条卡在用?因为成本。
| 对比维度 | 磁条卡 | EMV芯片卡 |
|---|---|---|
| 数据存储 | 明文静态存储 | 加密动态存储 |
| 克隆难度 | 极低(3秒克隆) | 极高(需要破解私钥) |
| 重放攻击 | 完全无法防御 | ARQC机制天然防御 |
| 离线交易 | 支持(但风险极高) | 支持(有脱机认证) |
| 成本 | 约0.5元/张 | 约5-10元/张 |
| 全球普及率 | 逐年下降 | 超过80% |
核心结论:磁条卡的安全问题不是"漏洞",而是"设计缺陷"。它从诞生那天起就没考虑过安全。EMV芯片卡虽然也不是绝对安全(比如侧信道攻击、故障注入攻击),但攻击成本已经高到让大多数黑客望而却步。
我记得有一次帮银行做渗透测试,他们还在用磁条卡做高额交易。我当场用一张空白卡克隆了一张他们的VIP卡,在ATM上取了5000块。银行的人脸都绿了。嗯,从那以后,他们连夜升级了芯片卡系统。
你想想看,如果你的支付系统还在支持纯磁条交易,那基本等于把金库大门敞开着。这不是技术问题,是态度问题。
渗透测试小技巧:测试支付系统时,先看它是否支持纯磁条交易。如果支持,直接克隆一张卡试试。如果系统连磁条卡和芯片卡都分不清,那后面的加密机制再强也没用。