加入收藏 | 设为首页 | 会员中心 | 我要投稿 | RSSRSS-巴斯仪表网
您当前的位置:首页 > 电子发烧 > 技术文章

ATMEL接触式IC卡及开发实例

时间:2012-11-29  来源:123485.com  作者:9stone

我们为喜爱用ATMEL CPU卡和设计COS的客户提供了如下的解决方案:
Help customers to use DEMOCOS and design their own COS.
--帮助客户使用DEMOCOS和设计自己的COS。
DEMOCOS ( source code ) : it is a completed COS, supports ISO-7816 command and t=0 protocol.
--DEMOCOS(提供源代码)是一个完整的COS,支持ISO-7816 命令和T=0协议。
51 ASSEMBLER COMPILER: --51汇编语言编译器
COS (for AT89SC168 ) SOFTWARE SIMULATOR:
--COS 软件仿真器(支持AT89SC168)。
READER SOFTWARE SIMULATOR:
--读卡器软件仿真器。
READER(support T=0) for upload COS:
--可以下载COS的读卡器。
第二章 ATMEL AT89SC系列CPU卡介绍
ATMEL公司的AT89SC系列CPU卡微处理器集成了FLASH程序存储器、EEPROM数据存储器和ISO7816通讯接口,并且引脚符合ISO7816标准。
该CPU卡的FLASH程序存储器是可以让用户自行下载的,这样就可以保证用户的COS源代码不会泄露出去。更为优异的是:是否可以重新下载FLSAH完全由用户的COS来设置,这样可以实现重复可下载和一次性下载两种模式。
AT89SC系列微处理器提供了两种软件控制的低电压工作方式:
闲置模式:CPU停止工作,芯片上其他部分继续工作。在闲置状态下,电流大约是芯片处于完全工作状态时电流的15%。
休眠模式: 芯片上一切活动均被挂起,RAM中还保留数据。在休眠状态下,芯片的电流通常低于15A,最低可达到0.6A。
同时,由于芯片使用静态逻辑设计,无须时钟持续工作。这就是说,在等待一个内部事件的触发时,时钟频率可以减缓,甚至停止。
安全特性:
AT89SC系列微处理器提供了下述安全特性:
低电压保护;
低频保护,防止静态分析;
高频滤波,防止干扰;
传输代码,保护芯片在运输过程中不被盗用;
唯一系列代码;
当时钟频率低于500KHz或电压低于4V时,芯片会产生一个安全保护中断;
当时钟频率高于10MHz或电压低于3V时,芯片处于复位状态,直至电压或时钟频率恢复正常;
芯片在运输过程及初始化时受到64位的传输代码的保护。
Device Name Flash EEPROM RAM
AT89SC168 16 K bytes 8 K bytes 256 bytes
AT89SC168A 16 K bytes 8 K bytes 512 bytes
AT89SC1616A 16 K bytes 16 K bytes 512 bytes


第三章 ATMEL 89SC168卡 DemoCos 简介
如果用户获得了一套ATMEL 168 DEMOCOS,即使不做任何改动,就可以利用它灵活地创建自己的文件和安全系统。DEMOCOS的代码大小为4.5K,分为通讯模块、文件系统模块、和算法模块,但是认证算法比较简单,如果想改变算法(这是目前大多数客户的想法),请将DEMOCOS读懂(这有一定的挑战性,但DEMOCOS是模块化编程,注释详细)后重写算法,也可以添加其他的功能,用户还有很多的程序空间可用。
另外,由于ATMEL的CPU卡的不断更新,如容量大小的改变,通讯方式的改变,以及REBOOT方式的改变,ATMEL公司会指导用户对DEMOCOS做相应的调整。

一、文件系统

1、文件分类
设多层目录:MF(3F00)、DF(具体应用目录,最多可以建立15级目录)
EF分为SF、KF和WF:
SF是密码文件,各层目录均可有一个,存放用户密码。
KF是密钥文件,各层目录均可有一个,存放发行商密钥。
WF是工作文件,数据文件EF。
支持两种标准EF文件结构:线性定长记录、透明二进制。
本结构支持一卡多用。

2、文件访问方式
使用文件标识符(FID)进行访问:
每一文件中有两字节长的标识符,允许不同的文件具有相同的标识符,在直接处于给定DF下的所有EF和DF应具有不同的文件标识符。
使用短EF文件标识符(SFI)进行访问:
短EF文件标识符用5位二进制码(1~30)表示。短EF文件标识符不能用在路径中或作为文件标识符,如不能用在Select File命令中进行选择。

3、数据访问方式
访问记录:
在记录结构的EF中,可以用记录编号访问记录数据。记录编号是一个无符号的8位整数,其可用值为01H~FEH,00H保留于专用,FFH保留于将来使用。
访问数据单元:
在透明二进制结构的EF文件中,每一个数据单元的位置由命令的偏移值给出,其下一个数据单元的位置由偏移值加数据单元长度后产生。

二、安全系统

1、密码和密钥管理
1)密码类型
SF文件最多由4个密码记录组成,密码编号从0到3依次排列。其中:
0号密码默认为用户个人密码;
1号密码默认为解锁密码(发行商用);
2号密码默认为个人化密码(发行商用);
3号密码默认为重装密码(发行商用);

2)密钥
KF文件最多由8个密钥记录组成,密码编号从0到7依次排列

2、安全规程
①卡的确认:内部鉴别(鉴别密钥)。
②终端确认:外部鉴别(鉴别密钥)。
③持卡人确认:PIN密码提交验证。
④发行者确认:发行密码提交验证。
⑤其他密码验证。
⑥对安全系统文件进行写操作时的反插拔与自动恢复。

三、命令系统

1、命令报文
1)命令结构:

命令头 命令体
CLA INS P1 P2 Lc Data Le

 

 

2)命令分类:
COS命令由具体应用分为4种命令报文结构如下:
①情形1
CLA INS P1 P2 ‘00’
②情形2
CLA INS P1 P2 Le
?情形3
CLA INS P1 P2 Lc Data
?情形4
CLA INS P1 P2 Lc Data Le

2、响应报文
1)响应结构

响应数据 响应状态码
Data SW1 SW1

DATA: 返回给用户的数据,即命令的执行结果。
SW1、SW2: 返回命令处理的状态。

3、命令集

1)Read Binary
功能:
此命令用于读取二进制文件部分或全部的内容。
格式:
代码 值
CLA ‘00’
INS ‘B0’
P1 见参数说明
P2 从文件中读取的第一字节的偏移地址
Le 期望读出数据的长度

2)Update Binary
功能:
此命令使用给定的数据来更新二进制文件部分或全部的内容。
格式:
代码 值
CLA ‘00’
INS ‘D6’
P1 见参数说明
P2 要修改的第一字节的偏移地址
Lc 后续数据域的长度
Data 修改用的数据

3)Read Record
功能:
此命令用于读取记录文件中指定记录的内容。
格式:
代码 值
CLA ‘00’
INS ‘B2’
P1 记录号
P2 见参数说明
Le 期望读出数据的长度

4)Update record
功能:
此命令使用给定的数据来更新记录文件中指定记录的内容。当所指定的文件非记录文件时,命令将终止。
格式:
代码 值
CLA ‘00’
INS ‘DC’
P1 P1=‘00’表示当前记录 P1≠‘00’表示指定的记录号
P2 见参数说明
Lc 后续数据域的长度
Data 更新原有记录的新记录

5)Verify PIN
功能:
此命令将校验给定的密码的正确性,根据比较的结果修改安全状态,若校验失败次数达到PIN尝试上限,则PIN自动锁定。
格式:
代码 值
CLA ‘00’
INS ‘20’
P1 ‘00’
P2
Lc ’02’~‘10’
Data 外部输入的个人密码

6)Select File
功能:
此命令使用文件名或应用标示符来选择IC卡内DF或EF。
格式:
代码 值
CLA ‘00’
INS ‘A4’
P1 ‘00’
P2 ‘00’
Lc ‘00’(选择MF文件)/ ‘02’
Data 无 / FID

7)Get Challenge
功能:
此命令请求IC卡返回一个用于安全相关过程的随机数。
格式:
代码 值
CLA ‘00’
INS ‘84’
P1 ‘00’
P2 ‘00’
Le ‘04’

8)Get Response
功能:
此命令为T=0协议情形4状态下,用来取卡中返回的数据。
格式:
代码 值
CLA ‘00’
INS ‘C0’
P1 ‘00’
P2 ‘00’
Le 响应的期望数据最大长度

9)Internal Authenticate
功能:
此命令将为外部设备验证卡中的秘密模块的有效性提供数据。
格式:
代码 值
CLA ‘00’
INS ‘88’
P1 ‘00’
P2 ‘00’~‘07’密钥号
Lc ‘04’
Data 外部随机数(4字节)

10)External Authenticate
功能:
此命令将验证外部设备中的秘密模块的有效性。
格式:
代码 值
CLA ‘00’
INS ‘82’
P1 ‘00’
P2 ‘00’ ~‘07’密钥号
Lc ‘0C’
Data 发卡方认证数据

11)Change / Unlock PIN
功能:修改、解锁、安装卡片个人密码。
格式:
代码 值
CLA ‘00’
INS ‘5E’
P1 ‘00’ 修改卡片个人密码;‘01’ 解锁卡片个人密码;‘02’ 安(重)装卡片个人密码
P2 密码号
Lc
Data
12)Unlock Key
功能:
解锁卡片应用密钥。
格式:
代码 值
CLA ‘00’
INS ‘5C’
P1 ‘01’ 解锁应用密钥 ‘02’ 安装卡片应用密钥
P2 密钥号
Lc 无 / 密钥长度
Data 无 / 加密的密钥

13)Create File
功能:
此命令创建卡片文件系统。
格式:
代码 值
CLA ‘00’/ ’80’
INS ‘F2’
P1 ‘00’/ FTP 文件类型
P2 ‘00’/ FAC 文件访问控制条件
Lc 无 / ‘07’
Data
第四章 AT90SC3232C带有协处理器的CPU卡
AT90SC3232C是ATMEL公司最新推出的内含协处理器的CPU卡,它以高性能、低功耗的AVR 8位CPU为核心,配合一个16位的协处理器(SC16)完成高速的保密和认证功能。

1)AT90SCC系列CPU卡的型号如下:
型号 程序空间 EEPROM空间 RAM空间 协处理器 RF接口
AT90SC1616C 16K Flash 16K 1K YES NO
AT90SC3232 32K Flash 32K 1K NO NO
AT90SC3232C 32K Flash 32K 1K YES NO
AT90SC3232CRF 32K ROM 32K 1K YES YES

2)AT90SC3232C的特征如下:
高效、低功耗的AVR RISC CPU:含有120条指令,大多数指令为单个时钟周期;
32K字节(16K字)的可下载一千次的程序存储器;
32K字节的EEPROM数据存储器;
1K字节RAM;
16位协处理器,预编程功能可用于保密和认证,一次1024位RSA的算法用220ms;
监管模式(存储器管理);
ISO-7816接口;
随机数发生器;
16位定时器;
5个中断源,两个优先级;
安全特征:掉电保护,低频保护,高频滤波,程序代码加密;
低功耗闲置模式和掉电模式;
2.7V-5.5V的工作电压。

一、AT90SC3232C结构概述:
AT90SC3232C是基于AVR RISC增强型结构,有32个工作寄存器均可以单时钟周期访问,高性能的ALU(算术逻辑单元)可在一个时钟周期内完成取指、运算、和输出结果的工作。ALU的操作分为3类:算术、逻辑和位操作功能。
在32个工作寄存器中,有6个寄存器可以被组成3对16位的间接寻址指针X、Y、Z。用以提高数据空间的访问速度,其中一个指针还可以用于常数查表。

图1,AT90SC3232C结构图

I/O空间包括64个地址,用于CPU对外设的访问,如对控制寄存器、定时/计数器、外部中断及ISO 7816引脚的访问。
AVR CPU采用哈佛结构,程序区和数据区是分开的,程序存储器使用单级管道流水线访问,即:当一条指令被执行时,下条指令被预先取出,这种机制使得在每个时钟周期CPU都可以执行指令。
AT90SCC 的程序计数器(PC)是16位,可以访问64K字的地址空间,大多数的AVR指令都采用16位的字结构。

二、协处理器和RAM
AT90SC3232C内含一个16位的协处理器(SC16)和1K字节的RAM,可以方便地实现公共密钥算法(如RSA),它与AVR CPU的接口采用RAM X空间而RAM Y空间被协处理器用做工作区。
公共密钥算法(简称公钥算法)简介:算法使用2个密钥,公共密钥(简称公钥)和私有密钥(简称私钥),他们是一对儿。当一个密钥用于加密时,仅有另一个密钥可用于解密,关键特点是在实践中从公钥不能推出私钥,也不能用公钥来完成私钥的解密过程,这样就可以把公钥公开而不会泄密。
公钥算法有两个应用:一是信息加密传送,二是认证(如数字签名)。
RSA算法是公钥算法的一种,他基于数学上的对大数分解因子的难度。算法中私钥包括两个互质的大数P、Q,和一个幂E,公钥包含一个大数N=P*Q和幂E。设M(明文)是0至N-1之间的数。
则加密过程如下:
密文C=MEmod(N)
而解密过程相反。
AT90SC3232C的协处理器(SC16)可以实现公钥和私钥的运算,但是并不能直接生成密钥。它有三个主要的运算功能(均可以对1024位的数据操作)。
1.“LOAD MODULUS”功能,即装载N。
2.“LOAD PRIMES”功能,即装载P、Q。
3.“MODULAR EXPONENTIATION”模幂运算功能。
模幂运算的操作为:DataEXPmod(Modulus),[按照符合中国剩余原理或者不符合的规则]。显然,模幂运算功能的实现大大加快了RSA算法的运算过程。

三、ISO-7816接口:AT90SC3232C的引脚符合ISO-7816标准。
ISO-7816的接口包含以下引脚:
GND:地线;
VCC:电源;
I/O:串行数据;
CLK:时钟;
RST:复位;
I/O口由I/0控制寄存器的某一位来控制(置位/清除),输入由I/O数据寄存器的某一位来获得,I/O口也可以产生中断。

四、安全保护机制
AT90SC3232C片内含有监管系统,该系统可以管理内存,监督用户程序对内存的非法操作。
为了防止外部对芯片的探测,AT90SC3232C还具有如下措施:
内部总线特殊处理,外观没有明显结构,数据和地址总线均被埋入金属层之下。
程序和数据均可以扰乱加密,在ATMEL工厂可以完成对总线的熔丝,使得同一条指令在不同的位置时代码也不同,用户还可以设置自己的扰乱密钥。

五、结束语
AT90SC3232C是新一代的高速保密控制器,它具有高度的保密性和高速运算的能力,因此,它非常适用于商业银行的金融业务、政府及军警的机要通信业务。
 
 


 

分享到:
来顶一下
返回首页
返回首页
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表
栏目导航->技术文章
  • 电子应用基础
  • 电源技术
  • 无线传输技术
  • 信号处理
  • PCB设计
  • EDA技术
  • 单片机学习
  • 电子工具设备
  • 技术文章
  • 精彩拆解欣赏
  • 推荐资讯
    使用普通运放的仪表放大器
    使用普通运放的仪表放
    3V与5V混合系统中逻辑器接口问题
    3V与5V混合系统中逻辑
    数字PID控制及其改进算法的应用
    数字PID控制及其改进
    恶劣环境下的高性价比AD信号处理数据采集系统
    恶劣环境下的高性价比
    栏目更新
    栏目热门