0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

DS8007芯片在智能卡交易中的应用

电子设计 来源: 电子设计 作者: 电子设计 2020-10-30 21:17 次阅读

本应用笔记介绍了一个基于 DS8007 多协议双智能卡接口芯片和 DS5002 安全微控制器的智能卡支付交易系统。该系统可实现基本的智能卡存款、取款交易以及卡的初始化功能。虽然系统没有进行任何与"实际"支付交易系统有关的安全测试,但这里演示的功能对于此类系统极具代表性。

演示中使用的硬件是 DS8007 评估(EV)板。该评估套件提供了一个方便的、经过验证的平台,用于测试基于 DS8007 器件的智能卡操作。评估板包括:作为主处理器的 DS5002 安全微控制器、一个 2 行 20 字符的液晶显示(LCD)模块、两个智能卡插槽(分别为信用卡尺寸和 SIM 尺寸)。此外还提供一个 DB-9 连接器,用于通过 RS-232 串行接口传输信号。使用本公司的微控制器工具包(MTK)软件(下载),用户可将 PC 与 RS-232 口连接下载程序或数据文件,也可以与应用系统通信。评估板还包括 512k x 8 的电池备份 SRAM,用于存储程序和数据信息。DS5002 安全处理器为电池备份的 SRAM 提供电检测控制电路

开发该应用系统使用的软件工具集是 Keil 公司的 PK51 专业开发工具套件,包括µVision3®集成开发环境(IDE)和 CX51 ANSI C 编译器。PK51 包提供汇编器、连接器、仿真器和调试器的完整开发环境。它生成的十六进制文件可使用 MTK 软件直接从 PC 下载到 DS8007 评估板。

应用实例
本应用笔记提供的交易功能可看作是应用笔记 4036: 利用 DS8007 评估套件进行设计中描述的低层功能之上的附加层。

本交易实例可执行和正确管理应用协议数据单元(APDU)的发送和接收。APDU 由 ACOS3 智能卡 EMV 规范定义。通过生成和发送适当的 APDU 并处理其可能的响应,可演示典型的支付交易操作。

用于本应用系统的 C 语言源代码可提供下载,文件名为 AN4120_SW.zip。前面提到的应用笔记 4036 中的代码是这些交易实例的核心,它提供 DS8007 的所有基本接口 / 驱动函数和所有直接的低层智能卡接口函数。AN4036 中的代码也在相同的网址提供下载,文件名为 AN4036_SW.zip。

交易实例详述

为创建一组有代表性的交易功能,本实例实现了三种主要的智能卡操作。

取款交易,即扣除信用卡余额

存款交易,即增加信用卡余额

信用卡初始化交易,将信用卡余额和交易次数设定为初始值

卡中初始金额为$100.00,初始交易次数在初始化交易过程中被设定为 1。为简化实例,每次存款、取款交易都固定在信用卡余额中增加或扣除$10.00。

为了提供一个合理的演示,首先要考虑的是如何利用 DS8007 评估板上的资源建立一个用户接口。由于设计目标之一是无需借助其它设备就能单机运行,因此评估板上的 RS-232 串口不能作为用户接口。最方便作为用户输入接口的硬件是开关 SW4,当该开关按下时,会将处理器的端口引脚 P3.2 下拉至地电平。P3.2 是一个多功能端口引脚,还可用作外部中断输入(INT0)。但是本应用实例软件中不使能该中断,因此,引脚 P3.2 通常由处理器的引脚驱动电路上拉到高电平,按下开关 SW4 时通过一个 1kΩ电阻拉至低电平。应用系统可简单通过读取该引脚的电平检测开关是否闭合。

板载 LCD 模块可作为用户接口的输出器件。DS8007 评估板的 LCD 模块是一个 2 行 20 字符的显示器。它包含液晶驱动电路,并为处理器提供 8 位并行接口。通过向模块写入必要的控制和字符就可进行显示操作,由模块管理实际的 LCD。

用户完成一次输入,软件就以重复顺序在 LCD 上显示三种可能的交易类型供用户选择。按下开关 SW4 时,软件执行选中的交易。

智能卡详述
本应用实例中选用的智能卡是香港 Advanced Card Systems Limited (ACS)公司生产的 ACOS3 卡。该卡内含嵌入式处理器,运行 ACS 智能卡操作系统版本 3 (ACOS3)的操作系统,具有如下特性:


16kB 应用数据 EEPROM 存储器


符合 ISO 7816-1/2/3 标准,T = 0 协议


兼容数字加密标准(DES)、3DES 和信息验证能力(MAC)


5 个安全码 + 发行密码


卡持有者可更新 PIN 码


密钥对相互验证


会话密钥采用随机数字


线性文件具有固定的记录长度


帐户数据结构可实现安全支付应用系统


ACOS3 性能的全部说明可在 ACS 网站上找到。对于本应用实例,没有使用智能卡的任何安全功能,只使用其文件结构和 EEPROM 存储空间。

智能卡存储空间

本交易实例中,选用的智能卡必须包含一定的非易失存储器空间,用于保存信息。仅有两个数值保存在卡中:记录成功处理的交易次数的"计数器"和虚拟帐户的"余额"。对于该计数器,选用 1 个字节的无符号数,它可表示 0 至 255 次交易数。对于余额,选用 16 位整数,可表示数值 -32,768 至+32,767。这种方式允许用户透支卡中的可用余额(即产生负的余额)。因此,本实例中总共需要 3 个字节的非易失存储器。

ACOS3 的文件结构

制造 ACOS3 卡时,其 16kB EEPROM 存储器划分成内部数据存储区和用户数据存数区两部分。内部数据存储区保存配置数据,通常被操作系统用于管理特定的功能。用户数据存储区保存"实际"交易控制下正常使用智能卡的操作数据。在本实例代码中,只使用内部数据存储区,后续讨论中将重点关注内部数据存储区。

不论是内部数据存储区还是用户数据存储区,访问 ACOS3 卡的存储器都要通过数据文件和数据记录进行。每个数据文件都由一定数量的数据记录组成,最多可达 255 个。不同数据文件的记录长度可以不同,但对于给定的数据文件其记录长度总是固定的。内部数据文件的文件结构(文件大小、记录长度等)由操作系统定义且不能更改,但对于用户数据存储区,可由卡发行人在进行个性化智能卡设置时确定其文件结构。为简单起见,只使用卡中已有的内部数据文件系统,不再生成一个专门的用户数据文件系统。

所有文件都可通过 ACOS3 的读记录和写记录命令进行访问。这些命令发送到智能卡,而任何响应都会被应用笔记 4036 中提供的 APDU 函数接收。每个文件都由 2 字节的文件标识符来识别。对于所有内部数据文件,标识符的第一个字节固定为 0xFF。表 1 列出了内部数据文件的文件名、文件标识符和记录结构。

表 1. 内部数据文件信息

个性化文件 ID = 0xFF 0x02,包含三个记录共 12 字节,各记录的长度为 4 个字节。第一个记录包含智能卡中某些选项的配置信息,而第二和第三个记录则没有预先定义。因此,这两个记录被用于保存本应用实例中智能卡的交易次数和帐户余额。虽然单个记录具有足够的存储空间(4 个字节)来保存交易次数和帐户余额所需的三个字节,但这两个数据还是存储在不同的记录中以便操作。这也使得增大这两个数据的值成为可能。交易次数存储在记录 2 的第一个字节,而帐户余额则存储在记录 3 的前两个字节,高字节在前(大端)。

ACOS3 命令结构

ACOS3 卡有 13 条基本命令,本应用实例中主要用到其中的三条命令。它们分别是文件选择、读记录和写记录命令。这三条命令都将在后面进行说明。ACOS3 卡的所有命令都符合 EMV 规范描述的应用协议数据单元(APDU)的格式。APDU 的一般格式包括如下几部分:


CLA 命令类


INS 指令代码


P1 指令参数 1


P2 指令参数 2


Lc(P3)命令数据域给出的字节数(可选)


命令发送数据字节中的数据序列


Le 应答中数据域所期望的数据 字节最大长度(可选)


文件选择命令


文件选择命令可打开文件,从而读 / 写文件的记录。它是一个 7 字节命令,格式为:

个性化文件是本应用中用到的唯一文件(见表 1),它的文件 ID 0xFF 0x02 为命令的最后两个字节。与所有 ACOS3 命令一样,执行成功后返回 2 字节状态信息,其数值为 0x90 0x00。若返回任何其它数值则表明命令执行错误。在前面提到的 ACS 网站上,ACOS3 参考手册中列出了所有可能的错误状态字节及其含义。

读记录命令
读记录命令可从当前所选文件的已识别记录中读取指定数量的字节。它是一个 5 字节命令,格式为:

可以看出,该命令包含两个可变字节:一个字节指示记录号,另一个字节指示要从指定记录中读取的字节数(长度)。在本应用实例中,每次都读取个性化文件记录的全部四个字节,因此长度固定为 0x04。若读记录命令执行成功,将返回 6 字节数据:记录中存储的 4 字节信息,2 字节状态信息。若返回的状态字节数值不是 0x90 0x00,则表明命令执行错误,应丢弃返回的数据。

写记录命令
写记录命令可向当前所选文件的指定记录写入数据。该命令的长度可以随着要写入的字节数变化。在本实例中,每次都写入 4 个字节,因此该命令具有如下所示的格式:

可以看出,该命令总共包含 6 个可变字节;一个字节指示记录号(0 至 N-1),另一个字节指示要写入的字节数(长度 = 0x04),此外还有四个数据字节。若写记录命令执行成功,将返回两字节状态信息(执行成功时返回 0x90 0x00)。

装载可执行文件
DS8007 评估板出厂时已装有本智能卡交易实例的软件。若要验证是否安装了该软件,可以给评估板通电然后观察显示屏。如果显示屏上出现"在下面的大插槽中插入智能卡",则表明已经加载了程序。如果没有显示这条信息,则可通过 MTK 软件将交易软件装载到板上的电池备份 SRAM 中。应用笔记 4036 (参看上文)说明了如何装载应用程序。要装载的文件为 Trans.hex,包含在 AN4120_SW.zip 中,可从上面提到的 ftp 网站下载。

在安装完交易软件并断开引导加载程序之后,处理器就立即开始运行应用程序。如果评估板此时仍然连接至 PC,则 MTK 屏幕上会显示应用程序的 RS-232 串行输出。这些信息可用于分析和调试,但可以忽略。用户应按照 LCD 模块上显示的指令进行操作。如果必要,可分析源代码以确定串行输出的含义。

插入智能卡后,LCD 上会短暂的显示智能卡的当前交易次数和帐户余额。然后,LCD 上就开始循环显示交易选项—取款、存款和智能卡初始化,大约每两秒钟按顺序变化一次。当期望的交易选项出现时,按下 SW4 开关就可执行该项交易。这时 LCD 上会显示交易执行情况。之后显示交易完成信息,指示用户取下智能卡。此时,交易选项将循环显示,等待智能卡插入。

结束语
本应用笔记介绍一个基于 DS8007 多协议双智能卡接口芯片和 DS5002 安全微控制器的智能卡支付交易系统。系统中使用具有 16kB EEPROM 存储器的 ACOS3 智能卡,并利用它的读记录和写记录命令将信息存储到非易失存储器中。反馈信息通过板载的 2 行 20 字符 LCD 提供给用户。系统可实现存款、取款交易和智能卡初始化功能。提供源代码文件下载,可以此为基础开发真正的支付交易系统。

审核编辑 黄昊宇

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

    关注

    447

    文章

    47838

    浏览量

    409837
  • 智能卡
    +关注

    关注

    0

    文章

    129

    浏览量

    24530
收藏 人收藏

    评论

    相关推荐

    门禁系列应用演示 #IC #智能卡 #门禁 #会员 #滴胶

    智能卡IC智能卡
    深圳市融智兴科技有限公司
    发布于 :2024年04月11日 14:39:50

    智能公交外观展示 #智能卡 #校园 #公交 #IC

    IC智能卡
    深圳市融智兴科技有限公司
    发布于 :2024年04月01日 15:39:39

    PETG、PET、PLA玉米料环保白智能卡外观展示 #农业物联网 #射频与天线 #智能卡 #IC

    IC物联网
    深圳市融智兴科技有限公司
    发布于 :2024年03月05日 18:03:32

    电压基准芯片在电路的应用

    端用一个可控电压控制,能否实现端基准电压芯片正负极电压改变?在这场合的应用一般的电压基准芯片在电路原理和结构上有什么不同?
    发表于 01-17 23:10

    安田智能卡的封装和芯片连接解决方​​案

    智能卡在日常生活变得越来越普遍,例如用于拨打电话和提取现金。健康保险、身份证和电子护照都带有小芯片。由于该芯片包含重要信息,因此它必须可
    发表于 08-24 16:40

    智能卡的封装和芯片连接解决方​​案

    安田新材料迎接了芯片卡技术带来的挑战,并为所有应用提供了专家解决方案。对于智能卡生产,安田新材料为智能卡制造商提供芯片表面密封剂和芯片粘合粘
    的头像 发表于 08-24 16:34 417次阅读
    <b class='flag-5'>智能卡</b>的封装和<b class='flag-5'>芯片</b>连接解决方​​案

    AMBA智能卡接口数据表

    智能卡接口符合《支付系统集成电路规范》第一部分《机电特性、逻辑接口和传输协议》(1996年6月3.0版)。 本标准由Europay International S.A.、万事达卡国际公司和Visa
    发表于 08-21 06:17

    ARM PrimeCell智能卡接口(PL130)技术参考手册

    PrimeCell智能卡接口及其特征的序言部分。第二章功能概览 为描述PrimeCell SCI的区块图和功能而编写的。第三章程序员模型 阅读本章描述PrimeCell SCI的块图和功能。第四章
    发表于 08-02 07:38

    DS8007-ENG+ - (Maxim Integrated) - 接口 - 专用

    电子发烧友网为你提供Maxim(Maxim)DS8007-ENG+相关产品参数、数据手册,更有DS8007-ENG+的引脚图、接线图、封装手册、中文资料、英文资料,DS8007-ENG+真值表,
    发表于 07-19 18:58
    <b class='flag-5'>DS8007</b>-ENG+ - (Maxim Integrated) - 接口 - 专用

    DS8007A-EAG+ - (Maxim Integrated) - 接口 - 专用

    电子发烧友网为你提供Maxim(Maxim)DS8007A-EAG+相关产品参数、数据手册,更有DS8007A-EAG+的引脚图、接线图、封装手册、中文资料、英文资料,DS8007A-EAG+真值表,
    发表于 07-19 18:46
    <b class='flag-5'>DS8007</b>A-EAG+ - (Maxim Integrated) - 接口 - 专用

    DS8007A-EAG+T - (Maxim Integrated) - 接口 - 专用

    电子发烧友网为你提供Maxim(Maxim)DS8007A-EAG+T相关产品参数、数据手册,更有DS8007A-EAG+T的引脚图、接线图、封装手册、中文资料、英文资料,DS8007A-EAG+T真值表,
    发表于 07-19 18:43
    <b class='flag-5'>DS8007</b>A-EAG+T - (Maxim Integrated) - 接口 - 专用

    442智能卡retval = SCLIB_Activate(5, FALSE);一直返回为1,这是为什么?

    各路大神,用了官网给的智能卡读取ATR的列程,发现retval = SCLIB_Activate(5, FALSE);一直返回为1,这是为什么?智能卡只支持T=0,372,求解?由于官网智能卡例程是封装好的库,请问有没有相关函数
    发表于 06-27 10:31

    利用DS8007评估套件进行设计

    本文阐述使用DS8007智能卡接口评估(EV)套件的步骤,解释了怎样安装和配置软件、配置硬件,建立并装载板上DS5002FP微控制器执行的应用软件。提供了一个简单的\"Hello World\"实例,以及几个C程序函数,以演示
    的头像 发表于 06-16 17:19 517次阅读
    利用<b class='flag-5'>DS8007</b>评估套件进行设计

    TB5128FTG驱动芯片在工业自动化的应用

    机床、智能物流系统等。通过研究TB5128FTG驱动芯片的应用,可以更好地理解其在工业自动化的重要性和优势,为未来的工业自动化发展提供有益的参考和指导。 关键词:TB5128FTG驱动芯片
    发表于 05-30 15:14

    智能卡芯片包封胶,用什么胶水效果好?

    智能卡芯片包封胶也被称作智能卡芯片保护胶水。这可以防止敏感的触点破坏以及保护芯片本身受刮擦、灰尘和湿气的影响。汉思化学的
    的头像 发表于 05-23 10:01 984次阅读
    <b class='flag-5'>智能卡</b><b class='flag-5'>芯片</b>包封胶,用什么胶水效果好?