智能门锁M1卡钥匙易被复制存在安全漏洞?资深安全工程师教你轻松升级CPU加密防复制卡

描述

前言

早在 2008年,M1卡的安全算法就被破解,这意味着当时全球多达10亿张的M1卡都存在被伪造、复制的风险,近几年网络媒体也针对智能锁卡片钥匙的安全问题做了很多现场测试。测试表明,一部分智能锁产品使用普通M1卡进行开锁验证,未做加密导致可以备轻易复制,造成安全隐患。本文旨在通过简单的几个步骤向大家介绍更加安全的CPU加密卡的实现方式。


一、CPU 卡开锁密钥产生机制

1、 用 DEV_UID(16 位, 不足 16 位后面补 0)做为 3DES 加密密钥对 4 字节卡片唯一识别码 UID(不足 16 位后面补 0)进行 3DES 加密得到 16 位加密数据 DATA_ENC。 

 

2、 DATA_ENC 做为 CPU 卡开锁密钥 UNLOCK_KEY。 

注: 加密密钥由客户自定义, 以上加密方式只是示例。

二、 CPU 卡绑卡流程

1、 
根据《CPU 卡开锁密钥产生机制》 , 产生开锁密钥

2、
;选择卡应用 00A4 0400 09 A000000003D6D0D5FD 

3、 
; 得随机数 0084 0000 08
; ; 例如卡片应用主控密钥为(112233445566FFFFFFFFFFFFFFFFFFFF) 
; ; 用卡片应用主控密钥(112233445566FFFFFFFFFFFFFFFFFFFF) 对随机数做 3DES 加密 
; 对卡片做外部认证, 获取更新密钥的权限, enc 为加密的结果 0082 0000 08 enc(last,112233445566FFFFFFFFFFFFFFFFFFFF)

4、
; 得随机数

0084 0000 08

开锁密钥(例如是 22222222222222222222222222222222)

; ; 先用主控密钥(112233445566FFFFFFFFFFFFFFFFFFFF) 对(密钥头 5 字节+要替换的密钥
16 字节) 加密得到 24 字节加密结果,
15300000003322222222222222222222222222222222
然后用主控密钥(112233445566FFFFFFFFFFFFFFFFFFFF) 对(指令头 5 字节+加密结果 24 字
节) 做 mac 计算得到 4 字节 mac 值。




; 更新开锁密钥


0084 0000 04


84D430011C



DATA_ENC(300000003322222222222222222222222222222222,112233445566FFFFFFFFFFFFFFFF
FFFF) 



MAC(84D4 3001 1C DATA_ENC(3000000033
22222222222222222222222222222222,112233445566FFFFFFFFFFFFFFFFFFFF),112233445566FF
FFFFFFFFFFFFFFFFFF,LAST)






详细过程如下:



随机数: 903E12B0ABBA8019 9000



加密密钥数据原始内容: 15300000003322222222222222222222222222222222



更新密钥线路保护密钥: 112233445566FFFFFFFFFFFFFFFFFFFF



加密密钥数据明文内容: 153000000033222222222222222222222222222222228000 //如加
密数据补足 8 字节的倍数, 就后补 80000...凑足 8 字节整倍

数




加密密钥数据密文内容: 47E16367A4F223D99131D48C0FCC7B4CA507087AF537D88B




更新密钥命令: 84D430011C 47E16367A4F223D99131D48C0FCC7B4CA507087AF537D88B





即: 84D430011C47E16367A4F223D99131D48C0FCC7B4CA507087AF537D88B800000





计算 mac 结果: E47CC048






更新密钥命令: 84D430011C 47E16367A4F223D99131D48C0FCC7B4CA507087AF537D88B
E47CC048

 

三、 CPU 卡开锁流程

1、 
根据《CPU 卡开锁密钥产生机制》 , 产生开锁密钥 

2、 
;选择卡应用 00A4 0400 09 A000000003D6D0D5FD 

3、 
; 门锁产生 8 字节随机数 
; 用开锁密钥(例如 22222222222222222222222222222222) 对 8 字节随机数加密, 得到 8 字节密文 enc 

4、 
; 内部认证 0088000108(8 字节随机数) 
; ; 得到 8 字节密文 enc' 
; ; 比对密文结果 enc 和 enc', 比对成功, 开锁, 比对不成功, 提示开锁不成功 

示例 
0088000108 1122334455667788
9E 94 6C 69 B7 2F 0B 80 : 90 00 
开锁密钥(例如 22222222222222222222222222222222) 
对随机数加密 1122334455667788 
Enc(1122334455667788, 22222222222222222222222222222222) =9E946C69B72F0B80

总结

以上示例就是今天要讲的内容,本文仅仅简单介绍了CPU卡的基础应用方法,通过此方法企业可以在非常短的时间内实现CPU卡的应用,感谢您的关注。

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分