概述
发卡器可以做成多功能自定义模式,能发自定义CPU,自定义IC,读物理卡号,读身份证,以及国密CPU等,还能发系统卡。
系统卡用于配置读卡器,功能包括IC的物理卡、自定义,CPU物理卡、自定义,身份证,国密物理卡、自定义(国密自定义可能与CPU冲突,只能2选一),身份证,读卡器输出长度(26-34),读卡器通讯方式(韦根、485)等,系统卡密码、新密码。
读卡器通过系统卡激活,或密码相同时,进行读卡器配置,然后通过配置读取卡号和输出方式。
主要参考:新版FMCOS2.0用户手册.pdf
另外一个通用命令集的参考:CPU卡片 FM1208 关于发卡的流程有些不懂 有解答的吗? - 知乎
KEY:秘钥,用于认证用的。
1.CPU卡也是一个小的文件系统,有MF(根目录,类型38),DF(DDF有子目录的目录,ADF无子目录的目录。类型38),EF(基本文件,有KEY文件3F,二进制文件28等。)。参考4.4。
以下是FMCOS操作解释:
2.外部认证:每个目录都只有一个KEY文件,如果存在,需要通过外部认证后,才能访问这个目录的其他文件。
操作过程:选择目录----->取CPU卡随机数----->DES加密----->外部认证。
3.取随机数。用于第2点。
4.选择文件:通过目录名称或文件标识符来选择文件(范围:当前目录,平级目录,参考7.4)。先选择目录---->然后做外部认证和访问目录下的文件。(4.4中表明任何文件均可被选择)
5.读二进制文件:每个文件再创建的时候会添加文件标识符。通过文件标识符访问文件。
选择目录(如果需要外部认证则:----->取CPU卡随机数----->DES加密----->外部认证)----->读二进制文件。
6.写二进制文件:每个文件再创建的时候会添加文件标识符。通过文件标识符访问文件。
例子有3个例子。第一种:选择文件,写入当前文件。第2种:以文件标识符写入+mac的字符串。第3种:以文件标识符写入加密+mac的数据。如果以文件标识符写入,需要使用2-3种方式!参考11.2和11.3节
存在目录的情况下:
选择目录----->(如果需要外部认证则:取CPU卡随机数----->DES加密----->外部认证)----->(创建二进制文件)----->写二进制文件。
目录不存在的情况下:
选择根目录----->(取CPU卡随机数----->DES加密----->外部认证)---->(创建子目录DF---->(创建KEY文件----->写入KEY秘钥))----->(创建二进制文件)----->写二进制文件。
8.增加和修改秘钥,可以添加外部认证秘钥,设置线路保护密钥。
如果要对根目录和子目录加密:
选择根目录----->创建MKEY文件----->写入MKEY秘钥---->创建子目录DF---->创建DKEY文件----->写入DKEY秘钥
7.删除目录文件。删除当前选择的目录所有内容
如果认证通过了,也会删除目录下的KEY文件!把CPU退成白卡:选择根目录----->(取CPU卡随机数----->DES加密----->外部认证)---->删除目录
8.创建文件:可以创建(DF,EF)。
文件类型:3F:秘钥文件,28二进制文件,38目录文件。
关于文件权限问题可以参考(7.13,和第5章安全体系,以及第8点增加/修改秘钥中的后续状态)
可以参考第6点。
9.实际应用:
发卡器发卡流程:
a.开始---->选择MF根目录---->提取随机数---->TDES加密随机数---->(使用发卡秘钥)外部认证---->认证未通过(进入b)、认证通过(进入c)
b.开始---->选择MF根目录---->提取随机数---->TDES加密随机数---->(使用0XFFFFFFFFFFFFFFFF秘钥)外部认证---->认证未通过(退出,因为默认秘钥和发卡秘钥都不对)
c.删除根目录---->创建根目录秘钥文件---->写入(添加)发卡秘钥---->创建子目录DF1---->选择子目录DF1---->创建子目录秘钥文件---->写入子目录秘钥(后续状态设为88)---->创建二进制文件EF1(读写权限为0XF8)---->写入二进制内容(数据可以用des加密)
发卡器退卡流程:
a.开始---->选择MF根目录---->提取随机数---->TDES加密随机数---->(使用发卡秘钥)外部认证---->认证未通过(退出,已退卡或秘钥不正确),认证通过(进入b)
b.删除根目录---->创建根目录秘钥文件---->写入(添加)默认发卡秘钥0XFFFFFFFFFFFFFFFF
读卡器读卡流程:
a.开始---->选择DF目录---->失败(说明没有发卡!不需要外部认证),成功(进入b)
b.提取随机数---->TDES加密随机数---->(使用目录秘钥)外部认证---->认证未通过(秘钥不正确),认证通过(进入c)
c.读二进制文件内容---->DES解密得到数据。
10.安全问题:
a.发卡的时候会写入秘钥,通讯过程可能会被窃取,不安全。因此在发卡器不能公开!
b.如果一个厂家的发卡器固定秘钥。那也不安全,你卖给A,B两家,A可以通过发卡过程窃取秘钥,达到窃取B家的内容。因此做成可配置秘钥的方式,参考c。
c.发卡器配置秘钥写入发卡器FLASH中,并可以写入一张CPU母卡片中。发卡器使用FLASH秘钥发卡,退卡参考9. 读卡器可以通过母卡或通讯配置秘钥,然后读卡。因为母卡保存的是发卡秘钥,因此也不能公开!
个人理解:
一种用户保管好密码、发卡器、母卡保证安全的卡片管理方案
背景:现在我们用CPU卡可以做到安全可靠。但是通过一些手段可以窃取发卡器读卡器和CPU卡通讯内容。CPU发卡过程需要把文件外部认证秘钥发给CPU卡,因此这个过程需要安全进行。
解释说明:
KEY_U:用户密码。
KEY_M:母卡保存的发卡秘钥,由KEY_U生成。将发送到发卡器,CPU母卡,读卡器中;其传送过程需要保密!
1.发卡器,发母卡:
a.发母卡KEY_M: 需要CPU母卡存在且没有KEY_M1,读卡器没有保存的KEY_M2,才能发卡。先写入CPU母卡文件,再保存在发卡器中。(操作需要保密,保证KEY_M安全。)
b.删除母卡KEY_M: CPU母卡存在且读出卡片KEY_M1,读取发卡器保存的KEY_M2,读取下发的KEY_M3。如果三者相同则删除,否则提示失败。
2.发卡器,发子卡:
a.发子卡:发卡器需要存在KEY_M。向CPU卡创建和下发外部认证秘钥KEY_M,创建CPU子卡文件,写入子卡卡片号码。(不安全)
b.读子卡:向CPU外部认证秘钥KEY_M,读取CPU子卡文件的卡片号码。(安全,认证不会传输秘钥)
c.退子卡:向CPU外部认证秘钥KEY_M,通过后,对CPU卡进行退卡。(安全)
3.读卡器:
a.母卡激活读卡器:读卡器内部没有配置KEY_M可用此功能。读取CPU母卡文件,
将母卡的KEY_M写入读卡器存储中。(响3声)(操作需保密)
b.母卡释放读卡器:读卡器已存在KEY_M1可用此功能。正确读取CPU母卡文件中的KEY_M2,如果保存的KEY_M1余KEY_M2相同,则可以释放读卡器。(滴4声)(安全,不通KEY_M的母卡不能相互释放,确保了安全)
c.读卡器读子卡卡号:需要读卡器已激活。用KEY_M认证子卡文件,读取卡号。(读取成功1声, 认证失败2声)(安全)
从上面的几个处理过程,可以看出用户需要保管好:密码,发卡器,母卡!且使用他们过程中防止被通讯截取。
错误码列表:
- 6200 “警告 信息未提供”
- 6281 “警告 回送数据可能”
- 6282 “警告 文件长度小于Le”
- 6283 “警告 选中的文件无效”
- 6284 “警告 FCI格式与P2指定的不符”
- 6300 “警告 鉴别失败”
- 63Cx “警告 校验失败(x-允许重试次数)”
- 6400 “状态标志位没有变”
- 6581 “内存失败”
- 6700 “长度错误”
- 6882 “不支持安全报文”
- 6981 “命令与文件结构不相容,当前文件非所需文件”
- 6982 “操作条件(AC)不满足,没有校验PIN”
- 6983 “您的卡已被锁定”
- 6984 “随机数无效,引用的数据无效”
- 6985 “使用条件不满足”
- 6986 “不满足命令执行条件(不允许的命令,INS有错)”
- 6987 “MAC丢失”
- 6988 “MAC不正确”
- 698D “保留”
- 6A80 “数据域参数不正确”
- 6A81 “功能不支持;创建不允许;目录无效;应用锁定”
- 6A82 “该文件未找到”
- 6A83 “该记录未找到”
- 6A84 “文件预留空间不足”
- 6A86 “P1或P2不正确”
- 6A88 “引用数据未找到”
- 6B00 “参数错误”
- 6Cxx “Le长度错误,实际长度是xx”
- 6E00 “不支持的类:CLA有错”
- 6F00 “数据无效”
- 6F01 “连接中断”
- 6D00 “不支持的指令代码”
- 9301 “您的卡余额不足”
- 9302 “MAC2错误”
- 9303 “应用被永久锁定”
- 9401 “您的卡余额不足”
- 9402 “交易计数器达到最大值”
- 9403 “密钥索引不支持”
- 9406 “所需MAC不可用”
- 6900 “不能处理”
- 6901 “命令不接受(无效状态)”
- 61xx “正常 需发GET RESPONSE命令” 读取指令00C00000xx
- 6600 “接收通讯超时”
- 6601 “接收字符奇偶错”
- 6602 “校验和不对”
- 6603 “警告 当前DF文件无FCI”
- 6604 “警告 当前DF下无SF或KF”
- 6E81 “卡片已离开”
最后
以上就是怕黑美女为你收集整理的CPU卡操作的全部内容,希望文章能够帮你解决CPU卡操作所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复