SD接口的智能安全卡的研究

SD接口的智能安全卡的研究

ID:36721804

大小:1.49 MB

页数:57页

时间:2019-05-14

上传者:U-145848
SD接口的智能安全卡的研究_第1页
SD接口的智能安全卡的研究_第2页
SD接口的智能安全卡的研究_第3页
SD接口的智能安全卡的研究_第4页
SD接口的智能安全卡的研究_第5页
资源描述:

《SD接口的智能安全卡的研究》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库

北京邮电大学硕士学位论文SD接口的智能安全卡的研究SD接口的智能安全卡的研究摘要随着Intemet及电子商务的普及,网络安全己经成为人们关注的一个焦点。人们需要更有效的方法来保护自己的信息安全。智能卡能够存储和解释私人签名密钥和证书,实现数字签名和认证,有效的保证信息的安全。SD(SecuritvData)接口具有较高的传输速率、支持即插即用与热插拔、设备体积小便于携带等优点,这使得SD接口设备在计算机和外设的通信中占有重要地位。因此,具有sD接口、起到身份认证和电子签名作用的智能卡即SDKev,在网络安全、电子商务等方面具有十分广泛的应用前景。SDKev从智能卡技术上发展而来,是结合了现代密码学技术、智能卡技术和sD接口技术的新一代身份认证产品。SDK|ev将在与信息安全相关的各个领域得到广泛应用。SDKev整个体系结构由硬件层、核心驱动层、标准中间件层和应用层构成。本文偏重对底层的硬件的研究,包括硬件电路、cos(chip0peratingsystem)和sD固件程序。本文深入的研究了sD接口标准与智能卡的国际标准IsO/lEC7816协议,在理解协议的基础上研制了基于智能卡的安全认证终端。该终端突破了以往使用智能卡必须使用读卡器的工作模式,利用该终端与移动设备的sD接口直接进行通信。PC/sc协议定义了主机与智能卡互联的体系结构,本论文对PC/SC规范进行了简介。并探讨了在PC/SC规范下主机端的设备驱动程序开发。关键字;网络安全SD安全卡COS微控制器驱动 北京邮电大学硕士学位论文sD接口的智能安全#的研究THERESEARCHoFSⅣU岍SECURITYCARDWITHSDINTERE托EAstheIntemetandBCommefcebecomemoreandmorepopular,NetwofkSecurityespeciallyidentityauthentication,electfonicsignatllre,dataencryptionbecomeafocus.Peopleneed柚ef!fbctiVewaytOpfotecftheirinformationsecurity.SmartCardcaneffectiVelyproIecttheinformationsecuritybecauseitcanstoreandexplainthepriVates培naturekeyandcertificate,realizedigitalsigllatureandauthentication.TheSDinte施cehaShi曲tfansmissionspeed,plug越dplay,haslittlebulk,s0theequipmentswithSDinterfaceplayanimportfoleinmecommunicationbetweenconlputerandperipheraIs.’nleKeywithSDtechnologywiIIhavegoodprospectsinnet、ⅣorksecurityandE-commerce.SDKeydeVelopsf沁mSmar£Card.Itisanewgenerationidenti母authenticationproductwithcryptographytechnoIogy,SmartCardtechnologyandSDtechnology.SDKeywillwidelyusedintheinformationsecurityfield.TheSDKeysystemincludeshardwarelayer,kerneldriVerlayer,standafdmiddlewarelayer,applicationlayer.nispapeffocusedonthe佗searchofhardwafelayef.Thehardwarelayefincludeshard、Ⅳafedfcuit,CoSandfi姗warecode.Inthispaper,theSDiIlte血ceprotocoland3 北京邮电犬学硕+学位论文SD接口的智能安全膏的研究IS伽EC7816pfotocolarcstIldied,叩onwhich,theauthenticatete加inalisdeveloped.Itbreaksthroughthetraditionalusagernodelofsmartcardinwhichsmartcardreadermustbeused.ThisauthenticateterminalcommunicatedirectlywithhostthroughSDport.PC/SCpmtocoldefinesthcinteropemtionsystemstmctIlrebet、jl,eenIC卸dhost.Inthispaper,PC/SCpmtocolisrcarchedbasedonwhichthediVerdevelopmentisintroducedinthispaper.1【EYWODS:NetworkSecuritySDKeyCOSMCUDriVer4 北京邮电大学硕士学位论文sD接口的智能安全卡的研究独创性(或创新性)声明本人声明所呈交的论文是本人在导师指导下进行的研究工作及取得的研究成果。尽我所知,除了文中特别加以标注和致谢中所罗列的内容以外,论文中不包含其他人已经发表或撰写过的研究成果,也不包含为获得北京邮电大学或其他教育机构的学位或证书而使用过的材料。与我一同工作的同志对本研究所做的任何贡献均已在论文中作了明确的说明并表示了谢意。申请学位论文与竣料若有不实之处,本人承担一切相关责任。本人签名:盏篓2遗R期:弘卑瘁三a暂dI/,关于论文使用授权的说明学位论文作者完全了解北京邮电大学有关保留和使用学位论文的规定,即:研究生在校攻读学位期间论文工作的知识产权单位属北京邮电大学。学校有权保留并向国家有关部门或机构送交论文的复印件和磁盘,允许学位论文被查阅和借阅:学校可以公布学位论文的全部或部分内容,可以允许采用影印、缩印或其它复制手段保存、汇编学位论文。(保密的学位论文在解密后遵守此规定)保密论文注释:本学位本人签名导师签名 北京邮电大学硕士学位论文SD接口的智能安全R的研究1.1课题背景第一章绪论近年来,随着移动通信和Intemct的高速发展,网络和电子商务(Bcommerce)已成为各行业关注的热点,而且迅速影响着人们的生活,移动电话与Intcmet相结合,产生的移动互联网(MobileIntemet),解决了人们随时随地上网的需求。在移动互联网上电子商务也就自然地发展成为移动电子商务,即MobileElectmnicCommercef或M—Commercc)。所谓移动电子商务,是通过手机、PDA(个人数字助理)、呼机等移动通信设备与因特网有机结合所进行的电子商务活动。移动通信技术和其它技术的完美组合创造了移动电子商务。伴随着移动电子商务用户的增加,无线网络黑客的数量也会增加,因此出于对金融、商业及私人隐私的考虑,安全的问题也变得越来越重要。J下因为无线用户可以随时随地自由的连接无线网络,所以就更增加了网络的安全风险:用户与无线网络之闻的通信很容易被截获;恶意软件也很容易被引入到网络中来;网络更容易被黑客攻击。这些问题在有线网络同样存在,但是在无线网络中这些问题混合在了一起,更加难以处理。客户端迫切需要一种具有良好性能、操作简单、同时便于使用的安全产品来保护个人敏感数据和网上交互信息。使用智能卡(SmanCard)或者集成电路卡(1nle盯ateCircujIcard:ICC)方法是目前国际上公认的网络信息安全中最好的用户端解决方案。智能卡内部有微处理器(CPu)和可重写存储单元(EEPROM),并且有硬件方式实现的DEs加密算法和文件管理系统以及信息保护算法等。它能够将用户的重要信息如:密钥、证书、口令等安全的存于智能卡内,并能够实现卡内产生密钥等许多功能。智能卡具有体积小、携带方便、保密性高等特点。使用智能卡作为网络电子身份鉴别设备,可提供便携式网络认证,可与PIN(PersonaIIdentificationNumben)值组合提供双重身份验证机制。是身份认证、电子商务、家庭银行、信息安全、身份控制以及其它安全应用的理想解决方案。在电子政务、网络安全和电子商务等需要认证和保密的应用环境中具有十分广阔的I;i『景。鉴于此,本文提出了一种基于Pl【I(PublicKeyIn触stmcturc)公开密钥基础设施体系的SD接口的智能卡即SDK.cy客户端设计方案。Pl(I是指通过公钥概念与技术来实施和提供安全服务的具有普适性的安全基础 北京邮电大学硕士学位论文SD接口的智能安全#的研究设施,它的核心服务是认证、数据的完整性和机密性。作为一种技术体系,PⅪ可以作为支持认证、完整性、机密性和不可否认性的技术基础,从技术上解决网上身份认证、信息完整性和抗抵赖等安全问题,为网络应用提供可靠的安全保障。作为基础设施,PKI与使用Pl(I的应用系统是分离的,因此具有“公用”的特性;另一方面,离开PⅪ应用系统,Pl(I本身没有任何用处。正是这种基础设施的特性使PKI系统的设计和开发效率大大提高,因为Pl(I系统的设计、开发、生产及管理都可以独立地进行,不需要考虑应用的特殊性。从而,安全应用程序的开发者就不必再关心复杂的数学模型和运算,只需要直接按照标准使用一种接口即可。1.2课题研究的现状与发展前景十届全国人大常委会第十一次会议于2004年8月28已通过了《电子签名法》I剐,于2005年4月1同起施行,这标志着电子签名(即数字签名)与文本签名具有同等法律效力,并明确电子认证服务市场准入制度,保障电子交易安全。截至到2003年我国数字签名卡及uSBKcv的累计发行已接近300多万,主要分布在网上报税、电子口岸、网上银行、电子政府及企业网络认证等领域。目前各地数字证书的应用如火如荼的展开,据不完全统计,国内各CA(Ccrt砸cationAutho—ty)证书机构目前己签发的证书达500万张以上。CA证书与&v结合是大势所趋,所以目前研究的SDKev将有极大的市场潜力。美国早在2000年6月就制订了电子签名法,目前美国、德国、同本、新加坡、马来西亚等数十个国家都有电子签名法。这些国家的&v技术相对中国来说更加成熟。例如,利用生物特性识别技术,使指纹、虹膜取代传统的用户口令P玳获得对Key的使用权限,更加安全和方便:使用ECC(椭圆曲线密码)算法取代DES算法进行数字签名,由于ECC在相同的安全强度下密钥长度短于DEs密钥,所以速度相对于DEs有较大提高。除了利用数字签名进行身份认证,Kev还可以扩展其他功能,在国内外均已有应用。Kev可以作为软件加密锁,解决软件反盗版问题,还可用于操作系统安全登陆和文件系统控制等领域;如果扩充Kev芯片的存储能力和计算能力,还能作为智能闪存使用。实现对存储数据的加解密,使数据以密文形式进行传输和存储,成为安全的数据保护和存储介质。本文研究的SDky安全卡解决方案部署图如图1.1所示2 北京邮电大学硕士学位论文SD接口的智能安全卡的研究图1.1安全卡解决方案部署图sDKey在用户端以卡片形式提供给用户方便用户携带,也可以方便的应用于C稻或者B,s结构的系统当中。SDKey所要解决的主要问题是客户端和服务器端的身份认证、在客户端和服务器端之|’BJ建立安全隧道、对客户端的关键数据进行加密、签名。1.3本文主要研究内容及结构本课题的主要研究目的是基于微控制器及ToD—Down设计思想完成一个SDKev的设计,同时,建立该设计的测试平台。本论文的研究内容主要包括三部分:首先分析和了解和本设计相关的协议sDMemory规范,IS伽EC7816.3和PC偈C规范,并根据本设计的具体应用环境完成对SDKev整体结构的设计和各个组成模块的功能划分;其次,重点分折了SDKev功能定义和具体的电路实现;最后分析了一下SDKev驱动程序的设计。3 北京邮电人学硕士学位论文SD接口的智能安全卡的研究本文结构如下:第一章为绪论部分,介绍课题的背景,研究的现状及发展前景。第二章为SDKey概述,主要分析了SDKey的特点、应用方式以及能够解决的问题。第三章介绍sDKev硬件层涉及到的关键技术包括sD接口技术、芯片操作系统COS,以及详细分析了接触式智能卡IS0/IEC7816-3协议。第四章为SDKev电路设计,详细分析了SD接口部分、CRC与DES部分的硬件实现。第五章介绍了SDKev驱动程序设计。最后为本文的结束语。4 北京邮电大学硕士学位论文sD接口的智能安全每的研究2.1SDKcy特点第二章SDKey概述SDKcv是结合了现代密码学技术、智能卡技术和SD接口技术的新一代身份认证产品,是一种秘密数据存储设备,它具有以下特点:1、双因子认证每一个SDKev都具有硬件和PⅢ码保护,PIN码和硬件构成了用户使用SDKev的两个必要因素,即所谓“双因子认证”。用户只有同时取得了SDKev和用户PIN码.才可以登录网上银行等移动电子商务系统。即使用户的PIN码被泄漏,只要用户持有的SDKey不被盗取,合法用户的身份就不会被仿冒;如果用户的SDK|ev遗失,拾到者由于不知道用户P烈码,也无法仿冒合法用户的身份。2、带有安全存储空间SDKev具有8K.64K的安全数据存储空间,可以存储数字证书、用户密钥等秘密数据,对该存储空间的读写操作必须通过程序实现,用户无法直接读取,其中用户私钥是不可导出的,杜绝了复制用户数字证书或身份信息的可能性。3、硬件实现加密算法SDKcv内置CPu或智能卡芯片,可以实现PⅪ体系中使用的数据摘要、数据加解密和签名的各种算法,加解密运算在SDf沁v内进行,保证了用户密钥不会出现在计算机内存中,从而杜绝了用户密钥被黑客截取的可能性。sDKcv支持RsA,DES,SSF33和3DES算法。4、便于携带,安全可靠如拇指般大的SDKev非常方便随身携带,并且密钥和证书不可导出,Kev的硬件不可复制,更显安全可靠。2.2SDKey身份认证系统的应用方式1、基于冲击——响应的双因子认证方式当需要在网络上验证用户身份时,先由客户端向服务器发出一个验证请求。服务器接到此请求后生成一个随机数并通过网络传输给客户端(此为冲击)。客户端将收到的随机数提供给Key,由Key使用该随机数与存储在Key中的密钥进行 北京邮电人学硕十学位论文SD接口的智能安全卡的研究MD5.HMAC运算并得到一个结果作为认证证据传给服务器(此为响应)。与此同时,服务器也使用该随机数与存储在服务器数据库中的该客户密钥进行MD5.HMAc运算,如果服务器的运算结果与客户端传回的响应结果相同,则认为客户端是一个合法用户。密钥运算分别在Kev硬件和服务器中运行,不出现在客户端内存中,也不在网络上传输,由于MD5.HMAC算法是一个不可逆的算法,就是说知道密钥和运算用随机数就可以得到运算结果,而知道随机数和运算结果却无法计算出密钥。从而保护了密钥的安全,也就保护了用户身份的安全。2、基于数字证书的认证方式随着PⅪ技术同趋成熟,许多应用中丌始使用数字证书进行身份认证与数字加密。数字证书是由权威公币的第三方机构即cA中心签发的,以数字证书为核心的加密技术,可以对网络上传输的信息进行加密和解密、数字签名和签名验证,确保网上传递信息的机密性、完整性,以及交易实体身份的真实性,签名信息的不可否认性,从而保障删络应用的安全性。PⅪ即公共密钥体系,是利用一对互相匹配的密钥进行加密、解密。每个用户拥有一个仅为本人所掌握的私有密钥(私钥),用它进行解密和签名;同时拥有一个公开密钥(公钥)用于文件发送者加密和接收者验证签名。当发送一份保密文件时,发送方使用接收方的公钥对数据加密,而接收方则使用自己的私钥解密,这样,信息就可以安全无误地到达目的地了,即使被第三方截获,由于没有相应的私钥,也无法进行解密。用户也可以采用自己的私钥对信息进行加密,接收者如果用发送者的公钥解密,由于私钥仅为用户本人所有。就能够确认该信息确实是该用户发送的,此过程称之为数字签名。SDKev作为数字证书的存储介质,可以保证数字证书不被复制,并可以实现所有数字证书的功能。2.3SDKey能够解决的问题l、客户端和服务器端的身份认证2、在客户端和服务器端之『自j建立安全隧道3、对客户端的关键数据进行加密、签名6 北京邮电丈学硕十学位论文SD接口的智能安全卡的研究3.1引言第三章SDKey相关技术SDKey作为新一代的身份认证产品,涉及很多技术。在底层主要有SD接口技术、cOs(卡操作系统)技术、加密技术。3.2sD接口技术SD舰范文件是由sD小组(包括MEI、ScanDisk、Toshiba公司)和sD卡协会共同制定的。目前sD接口设备中最成熟的是SD接口存储卡(SDMemoryCard)。SD存储卡是为近年来大为流行的音频视频消费类电子产品而设计的。SD存储卡可以为这些产品提供大容量、高性能、便携性的应用。SD存储卡包括一个内容保护机制,这个机制是根据SDMI(数码音乐版权保护系统)安全标准制定的,比以前的存储卡具有更高的速度以及更大的容量。SD存储卡的安全系统使用了相互认证以及“新的密码算法”来阻止对卡内容的非法访问,而对用户本人的内容也同时支持没有安全措施的访问【1J。sD存储卡也支持第二方的普遍使用的安全系统,比如IsO.7816,这个系统给SD存储卡接入公网或其它支持移动电子商务和数字签名的场合提供了接口。除了SD存储卡之外还有sD胂(sDIO)卡。SDl0规范定义了一种可能包含各种I/0单元和SD主机接口的SD卡。SDIO卡的存储部分是与SD存储卡规范完全兼容的。SDl0卡是以SD存储卡为基础并完全兼容SD存储卡的。机械、电气、电源、信号和软件都是兼容的。SD∞卡是为了给移动电子设备提供低功耗下的高速数据I/0。SDI/O卡的基本目标是一个SDI/O卡插入一个不支持SDl,0的主机时不会损坏设备的硬件和软件。这种情况下sDl/o卡只是简单的被忽略。如果插入的是支持sD怕卡的主机,对卡的检测将通过常规方式进行,这些方式在SD物理层规范有详细描述,在SDl0规范罩有一部分扩展。SD存储卡的通信是通过复杂的9脚接口(时钟、命令、4条数据线、3条电源线)进行的,设计工作在最高50MHz以及低电压范围。通信协议在物理层规范里7 北京邮电大学硕十学位论文SD接口的智能安全p的研究面有定义。sD存储卡结构如图3.1所示。彳}量㈨iliDA醢一旦MDCLKDATOCD∞AT3Inle哟cedrtverDATl匝日I上工lQS:垦【jl垒】H_.I£l垡!::■}·-I坠皇!!:!]}噜_-CardInterfaceL望§型3i堡l+-conhqlIer●一葛IS≥里il::.21}·●面厂页可百万确石0基;.M。m。ry。。rem惶丌8。。}卜拿●_●_●I●_●I●-●t●1。r。广。-。’。1。r。●’。●。、。T‘r。产。I。1’1’rI●-I●-●I-●l●J·~-L-●-J-●-‘.k—J-■-‘-~J-J-J.L·-··--州㈣O~∞Ⅻo-·-··●I-■●I●■●’o■’,。●。’。'。r。,o·‘’ot’r。,’。’。’。,-●I●I●-●-●-■●■●■●■_■一■一P一1一●一●一p一■一●-●一h■一●一+一}●-●■●I■●-●_图3.1SD存储卡内部结构SD规范分为几个部分。SD规范文档结构如图3.2所示。囝图3-2SD规范文档结构8 北京邮电大学硕士学位论文SD接口的智能安全#的研究SD存储卡主要有以下特征:可应用在便携以及固定设备上;最大支持2GB的容量(大容量sD存储卡可以支持到32GB):默认模式下支持o.25MHz可变时钟,最高可达12.5MB/秒的接口速率(使用4位并行总线);高速模式下支持o-50MHz可变时钟,最高可达25MB/秒的接口速率(使用4位并行总线);带有密码保护(使用锁/解锁命令);自动卡检测(插入/拔出):数据保护机制.符合高安全性SDMI标准;使用机械丌关支持写保护;读操作期『日J拔出卡不会损坏数据内容。3.2.1SD存储卡接口协议sD存储卡定义了两种可选择的通信协议:sD和SPI。主机能自动选择其中任意一种模式。当接收到主机的复位指令后,卡能检测到主机要求的模式,并在这种通信模式下进行下一步的通信。其中SD通信协议又分为1位总线模式和4位总线模式。最新的SDl0卡规范规定高速10卡必须支持SD存储卡的所有通信模式。SDKcv接口采用的是SDl0卡的SPI通信协议。一sPI接口协议首先是由Motomla公司提出来的,现在广泛存在于各种微控制器中。SPI总线系统是一种同步串行外设接口,允许MCu与各种外围设备以串行方式进行通信、数据交换。SPI系统可直接与各个厂家生产的多种标准外围器件直接接口,SPI系统一般使用4条线:串行时钟线ScK、主机输入/从机输出数据线MIsO、主机输出/从机输入数据线MOSI和低电平有效的从机选择线SS。sPI主从机互联模型如下图所示14J9 北京邮电人学硕+学位论文SD接口的智能安全砖的研究H8BITsH阿REGISTERI‘l8BlTsH;F丁REGlsTERP÷-L—LMoSIMOSlkJLJLS—lFTs尹}k8CKSCKEn捷BLEeLocKGENERAToR,SS图3-3SPI主从机互联模型SD存储卡兼容的sPI通信模式是用来与sPl通道进行通信的,这种方式是在上电后第一条复位指令中选择的并且在工作期间不能改变。SPI标准仪定义了物理连接,而不是完整的数据传输协议。SD存储卡的sPI实现使用的是与SD模式同一命令集。从应用的角度看,SPI模式的优点是可以简化主机的设计,因此减少了丌发费用。缺点就是性能有所降低,相对sD模式减少了总线带宽。SPl总线拓扑结构如图3.4所示11JlO 北京邮电人学硕士学位论文sD接口的智能安全}的研究HOSTCS渔VddVssC&BeLK.DataNOo物0Jte&£VeLK.DatalN.DataCLKDat3;N0ataOCLK.Data;NSO啦emoⅣCARD《AlfSPInlodejSO醚emor¥eA盈0f5;lSPlmode}Man潮ed}aCa『deAR0(Cj(SPImodej图3.4SPI总线拓扑结构卡确认及地址确认被硬件片选(CS)信号代替。没有广播命令。发送每一个命令前,卡(从设备)是通过一个片选信号(低电平有效)被选中的。在整个SPl传输(命令、响应以及数据)期I.日J片选信号必须一直有效。SPI接口使用7根而不是SD总线的9根信号(DATl和DAl2没有使用,DAT3是片选信号)。sPI模式是由基于Flash的sD存储卡提供的一个二级通信协议。这种模式是SD存储卡的一个子集。SD存储卡通道是基于命令和数据位流的,这个过程由一个起始位丌始一个结束位停止,而sPI通道是面向字节的。每一个命令或数据块都是基于字节的,并按字节安排片选信号。在确认片选信号的时候卡开始计数SPI总线时钟周期。每个数据或命令的标记位是安排给8时钟周期的分界线。类似SD存储卡协议,sPI消息包括命令、响应、和数据块标志。所有主机与卡之间的通信是由主机控制的,主机通过拉低片选信号开始每一个总线交互。sDMemoryCard定义了6个寄存器作为sD卡的接口,通过专用的命令可以访11 北京邮电人学硕士学位论文SD接口的智能安全告的研究问这些接口。其中OCR,CID,SCR,CSD描述卡片的详细信息。RCA,DSR是配置寄存器,可以动态配置卡的参数【“。这几个寄存器是卡与SDHost交互的接口。Host通过访问这些寄存器来获得卡支持的特性,或者设置一些卡的参数。下面简单介绍这六个寄存器。1、OcR(Ope均tjonalConditjo璐Re西ster)操作状态寄存器长度32bit,bito-bit31。主要是可以供sDHost查询sDMemoryCard支持的电压范围,卡的容量(bit30),是StandardCapability还是HigllCapability,卡上电过程(PowerupRoutine)是否结束(b“31)。2、cID(cardlDentificati伽number)卡的标识寄存器长度128bit,bit0_bitl27。CID是在卡出厂时就已经编程好了,即是只读的,不能被SDHost改变。3、CSD(CardSpecificData)卡的详细数据寄存器长度128bit,bit0-bitl27。不同版本的卡的CsD寄存器的结构不同,在CSD的CsDsTRuauRE字段倒to'bitl)罩可以查询CSD版本。CSD提供SDHost查询SDMemorvCard内容,卡的容量CslzE,定义数据的格式,DSR寄存器是否可用(DsRlmplemented字段),数据传输相关的参数,如数据传输速度,最大的数据访问时间,最大的读写数据块的长度等等。其中的一些字段是可写的,是配置寄存器。4、RCA(RelativecardAddressl卡的相对地址寄存器长度16bit,bito_bitl5。卡在处于lnactive状念时,当主机发送CMD0命令,总线上的SD卡被初始化为默认的相对地址O。RCA存储卡的相对地址,这个地址被用于认证阶段之后的HoST—a~RD之『白J的通信。一般是作为通信命令的参数。默认值为0】【0000。在cMD7中,参数RsA为O时,CMD7将sD总线上所有的卡恢复到St柚d.by状态。5、SCR(SDConfigIlrationRe舀stcr)SD配置寄存器长度64bit,bit0-bit63。SCR是除CSD外的另一个配置寄存器,SCR提供了每个sD卡特定的信息。包含的内容如scR版本号,SD卡版本号,是否支持安全性,擦除后的卡的状态的默认值,sD总线宽度。由卡的生产商在卡的生产阶段写入。6、DSR(Drivefstagc)总线驱动范围长度16bit,binbitl5。卡在处于Inactive状态时,当主机发送CMD0命令,总线上的sD卡被初始化为默认的相对地址0。同时DsR被初始化为最低的速度,最高的电流驱动能力。该寄存器是可选的。可以用来通过一些扩展的操作状态,如 北京邮电大学硕十学位论文SD接口的智能安全卡的研究总线宽度,传输速率,卡的数量来提高总线的性能。csD中有是否使用DsR的设置。DsR的默认的值为0】【404。3.2.2SDM锄orycard工作流程详解l、SDMemoryCard工作方式SDMemoryCard工作时,卡片共有10种工作状态,三种工作模式。见图3-5,其中数据传输模式分为sPl和sD模式。CardStateOpera稍OnModeha07veS:alelna3cloeld恒Sfa{e弓ea:vSla{eear。Be_lificab∞罐。de醛e州自cat∞S稿teS:ard宅vSt搬T,a£sferS协磅Send,峭·鑫a协8招te孤laTr鞠s衙M0deReceve—dalas协浩prog协nmngSta海0喀eonne^tSlaIe图3.5SD存储卡工作状态及操作模式2、SDMemorvCard工作状态机SD卡工作在一个状态机下,卡片接收到sD主机Host命令,从一种状态转换到另一种状态。主机Host跟CaTd交互的过程既是Host发命令和ca帕响应的过程,也是卡内部状态转换的过程。sD卡被设计成一个有限状态机,在某一特定的状态下,只能响应特定的命令从而进入另一种状念。其它的命令将不被响应。规范SDSpccificatio鹏Partl一PhysicalLayerSpecificationVersion2.ooDraftNovcmber9,2005Page65—66详细介绍了每种命令能被响应的状态集合和响应后的卡的确定的唯一的状态。从认证模式到数据传输模式之间的过渡是由cMD3来完成的,发送cMD3后,卡从Id∞IificationState进入StaIldbvStatc。COM0使得卡从数据传输模式的任一状态进入认证模式的Idlestate,cMDl5 北京邮电大学硕士学位论文SD接口的智能安全膏的研究使得卡从数据传输模式的任一状态进入认证模式的hlactiveState。3、认证模式在认证模式下,不涉及到数据线DAT的数据传输。认证阶段的结果是,卡进入Ident诟cationstate。基本的状态流程如图3.6所示吐基本流程是Inactivc—Idle—Rcady—Identification。Power∞neWHoASD№I∞ryCa嵋砒砒·dlagramlc喜rdl由ntlfIc砒Ionm-椭J图3-6SDMⅧofycard认证模式的状态流程4、数据传输模式数据传输模式下,涉及到了数据传输时的一些状态转换,基本流程是,Stalldby一1.ransf盯一Sending瓜eceivingData-Pro伊ammilIg。发送CMD3后,卡从IdentificationState进入St卸dbyState。进入St蛆dbyState后,CMD7选择总线上的RCA对应的卡,使得被选择的卡进入TransfcrStatc。这时一般先采用cMD6设置总线宽度。然后发送数据(块)读写命令。例如设置总线宽度为4b“后,发送数据块写命令CMD25进入Re∞ivingDataStatc,卡准备在DAro—DAB数据总线上接收数据,送入cMD25参数所指向的卡内地址,数据块长度由cMDl6来设定,默认为512B”e,数据块的个数可由主机控制,14 北京邮电人学硕士学位论文sD接口的智能安全}的研究当使用cMD25后卡会自动识别,(cMDl7则认为只有一个数据块),cMDl2结束数据传输过程,进入Pm伊ammingState。写命令类似,不再赘述。3.3COS技术3.3.1COS概述SOMemowCard搴t乱●棚agramfd甜atran$fermod●l图3-7SDMemofycard数据传输模式的状态流COS(ChipOperatingSystem)即芯片操作系统,一般指智能卡操作系统,SDKey操作系统的标准与智能卡的cos兼容。和传统的Pc系统软件相比,cOs在Kev中的地位类似于windows、unix等操作系统,但从功能上来说有明显的区别。首先,CoS是一个专用系统而不是通用系统,一个cOS的开发一般是针对某种特定类型的智能卡或usBKe”sDKey及其应用范围而进行的,例如sDKey由于其芯片特性和应用范围与智能卡不同,那么其COS的开发跟智能卡COS相应的有所不同;其次,与微机操作系统相比,COS更接近于监控程序,而不是真正意义上的操作系统。因为在当前阶段,coS所需要解决的还是对外部命令如何进行处理、响应的问 北京邮电大学硕十学位论文SD接口的智能安全卡的研究题,而不用涉及共享、并发的管理及处理等复杂的通用操作系统问题。coS的主要功能是控制sDKey和外界的信息交换,管理K毫y内的存储器,并在l(ey内部完成各种命令的处理。具体说来包括以下几个部分:≯Key的上电复位COS直接运行于芯片平台上,是所有应用代码的运行平台。COS程序运行的起点是Key的上电复位,Key插入主机后,芯片自动从指定位置丌始运行程序。此时c0S需要设置好所有的环境,等待应用的执行。》芯片底层硬件的驱动COS直接控制芯片的各个部件,包括存储器的读写、协处理器的使用、端口的监控、随机数发生器的使用等。≯&y对外接口交互芯片通过I/O端口与外界通信,所传递的数据格式必须符合相应的国际规范,CoS所遵循的信息交换协议目前包括两类:异步字符传输的T-=0协议以及异步分组传输的T=1协议。这两种信息交换协议的具体内容和实现机制在IS伽Ec7816.3标准中作了规定。>Kcv内存空间的维护Key的内存空|'HJ是程序的数据临时空间,是Kcy内的重要资源。由于价格等因素,内存空问通常十分有限,cOs需要提供相应的保障机制合理分配内存,并且区分保护好系统和应用各自的内存空间,确保安全性。≯-(cy内文件系统的维护数据在Kev内以文件的形式存在,和Pc中的操作系统类似,C0s的文件系统必须提供文件的建立、修改、删除、维护等基本操作,此外还有文件的寻址,文件访问的安全控制等。>系统运行安全的控制C0s级的系统安全主要表现在以下两个方面:一是cos对卡或Kev内数据的安全保障能力,二是cos对外提供的安全定义。应用应该能够利用COS提供的安全机制自定义出卡或Key内数据的访问控制。安全控制是C0s的核心,也是衡量CoS性能的一个重要部分。》命令的处理Key和应用之间的接口表现形式是命令和响应的方式,COS利用I,0接口接收命令报文,根据报文的内容和相应的逻辑进行处理,最终通过姻接口返回响应。命令处理是cos的核心部分,也是最终测试Cos正确与否的依据。16 北京邮电大学硕士学位论文SD接口的智能安全卡的研究》应用代码的执行COS对应用命令进行处理,最终将调用相应的应用代码。c0S需要实现定义好应用代码与COS系统的调用机制,即要能够完整的完成应用逻辑,又需要严格控制应用代码和COS代码的运行空间。3.3.2COS模块划分从信息传输的过程来看,我们把cOs分为四个模块:传输管理(TM)模块、安全管理(sM)模块、命令管理(AM)模块和文件管理(FM)模块,如图3.8所荆3】:图3—8COS逻辑结构图首先传输管理模块对物理层上传输的信号进行解码并将其传递给安全管理模块;若为加密传输则该模块对其进行解密并将解密后的命令传输给命令管理模块,若不是则将该模块直接传递给命令管理模块;命令管理模块根据预先的设计要求,检查此命令的合法性以及是否具备执行条件,若检查通过则启动执行此命令;如果此命令涉及到有关信息存取,则文件管理模块检查其是否满足预先设计的存取条件,若条件满足则执行有关数据存取操作。在整个过程中,若任何一次检查失败将立即退出并给出响应信息。传输管理rrransmissionManager)主要依据Key所使用的信息传输协议,对由主机发出的命令进行接收,同时,把对命令的响应按照传输协议的格式发送出去。在接收命令的同时,传输管理也对命令接收的正确性做出判断。这种判断只是针对可能的传输错误而占,不涉及具体的命令内容,通常由奇偶校验位、校验和来实现。如果传送管理器接收到的命令是正确的,它将接收到命令的信息部分传到下一功能模块,即安全管理器,而滤掉诸如起始位、停止位等附加信息。相应的,当传送管17 北京邮电大学硕士学位论文SD接口的智能安全卡的研究理器向主机发送应答的时候,则应该对每个传送单位加上信息交换协议中所规定的各种必要的附属信息。根据IS07816.3接触式卡智能卡的电信号和传输协议,智能卡的通讯传输协议有两种:异步半双工字符传输(T-=0)协议和异步半双工分组传输(T=1)协议。T=O协议以单字节的字符为基本单位,T毫1协议以一定长度的数据块为基本单位。sDKey的通信使用的是改进的T兰O协议。T毛0协议是面向字符的传输协议,从物理层上看,字符帧由1个起始位S、8个数据位和1个奇偶校验位P共10位组成,如图3—9所示12J::]!田]]丑互工工卫r图3.9T;O协议帧格式命令管理(ApplicationManager)的任务是对K-cy接收的命令的可执行性进行判断,然后执行。因为应用都是以文件的形式存在,因此,命令管理的关键是对文件访问的安全控制问题。文件管理(FileManager)通过为每种应用建立一个对应文件的方法来实现COS对各个应用的存储及管理。文件系统是cOs的基础模块。它负责组织、管理、维护I(cv内存储的所有数据。根据IS07816.4接触式卡智能卡与外界交互的接口规范,COS的文件系统按照其所处的逻辑层次可以分为三类:主文件(M弱tcrFiIe)、专用文件(DcdicatedFile)、基本文件(Elem锄taryFilc)。主文件MF为文件系统的根,下面可以有多个专用文件DF和基本文件EF。专用文件DF分为DDF(DiredoryDledicatedFile,目录专用文件)和ADF(ApplicationDedicatedFilc,应用专用文件)两种。DDF可以含有下级专用文件ADF,而ADF不能含有下级专用文件。一个具体的文件结构示意图如图3.10所示12J:18 北京邮电人学硕士学位论文SD接口的智能安全}的研究图3·lOCoS文件系统和PC上的文件系统相比,cos的文件系统有自身的特点:≯COS的文件操作很简单,不存在拷贝、剪切等;≯对于一个确定的应用,cOs内的文件结构以及大小都很固定,其存储空问大小和文件的属性在建立文件时就能确定,在使用中不需要修改;≯COS内的文件通过文件类型来表示不同的操作模式,类型和操作的关联通过文件系统来实现(PC一般通过应用程序来实现)。根据上述特点,文件系统有如下的逻辑结构:≯文件系统分层管理,树状结构。从逻辑上保证不同应用的数据文件具有各自的入口,实现应用之间的独立性,以保证COS的结构性和安全性;≯文件存储空间的连续。由于每个文件在建立时能够确定其最大长度,所以文件的存储在物理上可以保证其空间的连续性,以减少c0S设计和实现的难度;≯由于不同文件类型决定了不同的操作模式,每个文件在建立时必须指定文件类型,在文件操作前做严格的检查。COS文件的操作包括文件的建立、文件的查找、读取和更新、文件的删除。3.4加密技术l、RSA加解密算法RSA加解密算法描述如下:(1)随机的选择两个大素数p和q,并保密;(2)计算n=pq,并将n公开;(3)计算F(n)=O-1)(q-1),并对F(n)保密; 北京邮电人学硕+学位论文SD接口的智能安全卡的研究(4)随机的选取一个正整数,1,而保密的解密钥Kd=。2、DES算法3、ECC(椭圆曲线密码)算法4、生物特性识别技术2、3、4不再详述,请参考相关文献。20 北京邮电大学硕+学位论文SD接口的智能安全卡的研究4.1引言第四章sDKey电路设计在分析了sDKcy的体系结构之后,并参考了一些已有的设计方案,结合实验室的丌发环境,本文提出了sDKey的整体硬件构成,完成了各部件的功能划分。并详细的对SD接口部分、CRC、DES模块的功能进行了分析并介绍了部分电路的设计和实现。4.2SDKey体系结构SDKcy体系包括四个层次:(1)硬件层,包括硬件电路、cos和sD固件程序;(2)核心驱动层,指主机端SD驱动程序;(3)标准中间件层,包括PKcS社11接口和CsP接口;(4)应用层,指开发的上层应用程序。sDl(cy体系结构图如图4-1所示。厂面葡rI1...........................一隔磊下而军]星陬正蕊萄开司l,...............。.......一[二!]圈田[!!!圈![二!!]囹4.1SDKey体系结构硬件层包括Kev的硬件电路,固化在芯片罩的芯片操作系统COs和设备端的SD驱动程序。该层与用户主机之问以sD标准协议通信,使用标准SD通信协议交换C0s的APDu(应用协议数据单元,Appli∞tionProtocolDataunit)。核心驱动层指主机端的sD驱动程序。是依据微软定义的PC/sC(Personalomnputcr/smanCard)标准开发的驱动接口,使得上层可以通过will32标准函数集访问Kcy。该层负责协调用户主机与硬件层之间的数据交互操作和处理上层应用对 北京邮电大学硕十学位论文SD接口的智能安全}的研究Kev的访问请求。标准中间件层处于应用层和设备驱动之间,包括基于具有跨平台特性的PKc簖11(公钥密码标准,PubIicKeycrypto掣aphicstalldard)标准接口和w玳DO、VS平台的CSP(加密服务提供商,oypto伊aphicseⅣiccPmvidef)接口,应用开发者无需移植,可方便使用。PKcs是公钥密码体系的互操作标准,能实现不同系统、不同应用对公钥密码操作的兼容性。csP是微软为wIND0wS平台提供的最底层加解密接口。应用层是指针对上述接口开发的各类应用。本文主要研究硬件层的实现。4.3SDKey硬件构成SDKev的硬件构成包括七个必要组成部分:微处理器、系统外围设备、存储器、通信外围接口、密码协处理器、调试接口和安全访问逻辑12J。微处理器MPufMiniProcessorunitl是sDKcv的核心,在功能上类似于Pc机上的CPU,完成基本的指令执行、存储控制和逻辑控制等。SDKey多采用8位或16位的MPu。系统外围接口是指UO接口,是芯片与外界联系的唯一通道,提供芯片与外设间传送数据所必需的状态和控制信息。存储器用来存储程序代码和数据,包括易失性存储器RAM和非易失性存储器ROM、E2PROM或FL蟠H。随机读写存储器RAM(RandomA∞髂sMemory)类似于Pc上的内存,是临时数据空间,在l(cy复位时自动清零,掉电后数据也全部丢失,Key中一般使用sRAM(staticRAM)。非易失性存储器类似于PC上的硬盘空间,存放cos代码和sD固件程序,Key中多采用E2PROM或F“峪H,ROM由于掩膜后不能再修改,欠缺灵活性,故不是很常用。E2PROM或FIASH均可以反复擦除。通信外围接口指SD控制器,是控制ky与主机问的sD传输的硬件逻辑部件。密码协处理器cAu(aphcfArithmeticunit)是支持密钥对生成和加解密运算的协处理器。sDKcv支持PⅪ,需要提供加解密运算,完全依赖MPu的运算能力用软件实现使得加解密的运算速度不能忍受,必须提供加解密协处理器的支持。随机数发生器RNG(R柚d啪NumbcrG姐entor)生成真正随机的随机数,用来产生一次一密的过程密钥。 北京邮电大学硕士学位论文SD接口的智能安全膏的研究调试接口J1'AG(JoⅡ盯TESTAcnoNGRouP)是在Kcy的开发阶段提供给开发人员的接口,COs的目标程序通过该接口下载到Kcy中并且跟踪调试源程序;在产品使用阶段为了Key的安全性,该接口对用户屏蔽。安全访问逻辑sAL(securityA‘髓稿Lo西c)是芯片自定义的硬件安全逻辑,例如存储区各分区的访问控制,异常的外部光电信号检测等,这些机制对应用完全透明。SDKey的硬件结构图如图舢2所示。∞MPUCAURNG=;l;l{l;rSDJTAGS较AM£7PROM,FLASH。CONl_RoLlNTERFACE图睨sDky硬件结构目前,已有芯片生产商推出了一些集成了SD技术的m(IIlteIlectualProperty)核。如:lllrevium半导体公司的TE4353设备IP核以及11三4391,4392主机IP核、觚san公司的SDIO核AC2200等。AC2200SDIo核,内部功能框图如下图所示111l。图4弓AC2200sDl0核内部结构 北京邮电大学硕十学位论文SD接口的智能安全昔的研究Ⅱ}4353设备JP核,内部功能框图如下图所烈堋。·蝶!VD0~一*————m—-。^VSSl—-··---⋯一~⋯一·———n“!i熬.X}MPD^dd啦4嘲R胱D(8bn).cIsTE43竹{FlndⅨ蚋SO盼C甜d-妯XCSCIs40xOo-{∞O—OxO’』册COnH翻IerXeSCS^XWA盯XwEC§^)(I难.Fu啦nmRmc#anO∞0_哪-mmoFFFC峙tCSA^ddd{7blllR,WD(8bm×CSFNlRegb柑Sp^c●|XWEFNlR■∞'删阮’|髓彬∞7~⋯墼恻!⋯:~j。xwA|T-FHlB蛳RA碡’XINT。⋯一缈似口塑——!Q£a缝蠖。图4-4TE4353SD设备IP核内部结构图从以上图中可以看出,此类IP核的核心是SDlO控制器。对SD的协议的处理都是由此控制器来完成的。SD的数据和具体应用的数据都有自己的FIFD进行缓冲,它们和控制器的通信是通过一组总线来实现的。事实上,目Ij{『推出的大部分sD接口的产品都是基于类似的伊核来实现的。不同的是,不同的产品中集成的ROM和黜W容量不同,并集成了一些有特色的电路。在参考了一些设计结构后,结合本课题的实际要求,提出了基于微处理器+可编程器件的实现方式。sD接口逻辑由微处理器来实现,主要完成数据的接收和发送,并进行一定的处理。主要的功能有:(1)协议包的起始检测;(2)数据和时钟接收和恢复功能;(3)串并数据的处理。cRc、DES等逻辑由可编程逻辑实现,加快执行速度。主要完成CRc校验与DES加密功能。时钟部分、电源部分、复位电路是整个系统稳定工作的保障。FIFo主 J匕京邮电大学硕士学位论文SD接口的智能安全卡的研究以及存储器部分是用来存储代码、暂存运行期间数据以及进行数据缓冲,没有使用专门的器件来实现而是使用的微控制器内部自带的ROM、RAM、EEPROM以及可编程逻辑器件内部的逻辑单元来实现的。4.4SDKey的设计方法近十几年来,微控制器技术得到迅速发展,很多国际芯片厂商都推出了各具特色性能优异的微控制器产品,涵盖了从4位到8位、16位、32位甚至是64位的全部范围。由于采用了流水线设计技术,可在1MHz时钟下得到lMIPS(百万指令每秒)的处理能力。并且集成了丰富的资源,存储器有ROM、RAM、FLASH、EEPROM,外设接口有UART、SPl、CAN、UsB、AD转换、DA转换,PwM等,并且还有很强的扩展能力,有些还有内部振荡器,在只有电源的情况下微控制器本身就可以完成相当复杂的工作。随着集成电路工艺的发展,芯片抗静电能力至少在3KV以上,内部采用PLL倍频技术抗干扰能力也大大提高。很多微控制器带有片内下载调试接口方便开发。采用微控制器做设计用软件来完成大部分工作,系统便于升级,便于在片中采用一些加密措施,保护知识产权。以前用逻辑电路加时序电路做设计的时代一去不复返了。为了应付同益复杂的集成电路设计,集成电路设计方法学的研究得到了广泛的重视。目前Top.Down设计方法学是集成电路设计的主流方法,其主要特征是综合技术和硬件描述语言的使用。单个功能完整的模块采用Top.Down设计方法进行设计时,首先建立其行为功能模型,模拟币确后进行模块划分,RTL级仿真验证后进行综合,得到功能和时序均正确的门级网表,最后还可利用自动布局布线工具得到其版图。Top.Down设计方法,其主要特征是综合技术和硬件描述语言’的采用。用Top—Down设计方法进行系统设计,首先要根据设计要求用高级语言/硬件描述语言建立系统级功能模型,并进行功能模拟,符合设计要求后,再将一个系统用结构设计方法分解成多个可独立设计的子系统,并建立各子系统的行为模型,将各子系统连接起来进行整个系统的功能模拟。按上述方法对各子系统继续分解,直到各子系统的底层模块能够被EDA工具综合为止。在T0口一Down设计过程中,从系统的功能描述开始到最终经逻辑综合得到结构级的网表,每一步分解都要进行模拟验证,以便尽早地发现系统设计中存在的问题,减少设计的反复,提高一次设计成功的可能性,从而缩短系统硬件的设计周期。 北京邮电大学硕士学位论文SD接口的智能安全岳的研究典型的Ttop.Down设计流程如图4.5所示【121。通过行为级、RTL级描述直到逻辑综合,得到电路设计的门级网表后,再对门级网表进行仿真,并检查时序关系。通过反复修改、验证和比较,最后得到正确的设计。版图参数提取后又再指导逻辑综合的优化,并进一步约束布局布线,如此反复迭代,得到最终结果,因此,实际上是从HDL综合到版图的设计流程。图4·5Top·Down设计流程在SDKcy的设计中基木上按照微控制器加Top.Down这种设计方法。SD接口逻辑部分用微控制器模拟时序完成。CRc、DEs用FPGA完成。在完成功能划分后,用Ve蝴og硬件描述语言实现了整个设计的R1限描述。然后使用仿真工具Modelsim对设计的功能和时序进行了测试。最后用综合工具synpIify对通过测试的设计进行了逻辑综合。4.5开发平台介绍SD接口逻辑开发部分原理图如图4.6所示。微控制器采用AⅣEL公司的AVR系列的AⅣEGAl6。删EGAl6是高性能、低功耗的8位微处理器,采用先进的RlSc结构,在最高16M的主频-F可获得16MIPs的处理能力。内部集成非易失性程序和数据存储器,16K字节的系统内可编程F1嬲h,擦写寿命10,000次,512字节的EEPROM,擦写寿命100lOoo次,1K字节的片内sI认M。片上JTAG接口(与正EE1149.1标准兼容)。集成外设有可工作于主机/从机模式的sPI串行接口,具有独立片内振荡器的可编程看门狗定时 北京邮电大学硕士学位论文sD接口的智能安全}的研究器,上电复位以及可编程的掉电检测,片内经过标定的Rc振荡器,宽电压范围在2.7.5.5V可J下常工作。超低功耗,在lMHz,3V,25。C时的功耗:正常模式1.1mA,空闲模式0.35nA,掉电模式电源模块设计sD接口的4号引脚为电源端,所以SDK毫v主机可以为目标板提供电源。考虑到功耗以及调试的方便我们同时设计了外接的+5V供电电路,电路如图4—7所示。JP3为A型USB接口的母口,调试时直接从PC机的USB口取电,USB接口电源是+5V,最大供电电流500ma,USB接口电源直接取自电脑主板,电脑主板电源是经过优化设计的,稳定可靠。SDKev是+3.3v供电,所以必须采用一定的措施使+5v降为+3.3V,这里我们采用的是U91117.3.3DGDC电压变换芯片。二极管D8起保护作用,既可以防止电源极性接反又可以防止目标板干扰信号对PC机的冲击。电阻及发光二极管D6构成了电源指示部分。电解电容C2、C39分别是输入输出端滤波稳压电容。为了使usB接口供电与SD&v主机供电互不冲突,我们设置了SlP3(单列直插)封装的互斥的儿接口。图4.7SDKey电源电路≯时钟电路时钟电路为sDKcy提供工作时钟,虽然A1’MEGAl6内部集成了RC振荡器但其稳定性不高,所以仍然外接了高稳定性晶体振荡器。ATMEGAl6最高支持16MHz时钟,由于电路中设计了串口打印电路,考虑到串口速率的精确,我们采用了14.7456MHz振荡器,电路如图4.8所示。C4、C5起稳定振荡频率的作用。图4-8时钟电路≯JTAG接口电路J1:AG调试原理的主要内容包括田冲(11三sTACCEsSPORT)和BOuNDARY.SCANARCHlTECTURE。IEEEll49.1标准是由J1AG这个组织最初提出的,最终由mEE批准并标准化的,所以IEEEll49.1也俗称J1AG调试标 北京邮电大学硕士学位论文SD接口的智能安全}的研究准。J1AG接口的主要信号有5个。这5个接口信号及作用如下:①Tcstclockhlput(TCK),TcK为TAP的操作提供了一个独立的、基本的时钟信号,TAP的所有操作都是通过这个时钟信号来驱动的。②TestModeselcc【ionInput仃Ms),1Ms信号用来控制TAP状态机的转换。通过TMs信号,可以控制1'AP在不同的状态问相互转换。TMs信号在TCK上升沿有效。电yrestDataInput(TDI),TDI是数据输入接口。所有要输入到特定寄存器的数据都是通过TDl接口一位一位串行输入的(由TCK驱动)。(m'cstDataOutput(TD0),TDO是数据输出接口。所有要从特定的寄存器中输出的数据都是通过TDO接口一位一位的串行输出(由TCK驱动)。(9TestResctInput(TRsT),TRST可以用来对1=APController进行复位(初始化),是可选的。因为用TMS也可以对TAPControlIcr进行复位。边界扫描(Boundarv.Scan)的基本思想就是在靠近芯片的输入输出管脚上增加一个移位寄存器单元。因为这些移位寄存器单元都分布在芯片的边界上(周围),所以被称为边界扫描寄存器(Bo哺dary.scanRe百sterCell)。当芯片处于调试状态时候,这些边界扫描寄存器可以将芯片和外围的输入输出隔离丌来。通过这些边界扫描寄存器单元,可以实现对芯片输入输}}}信号的观察和控制。对于芯片的输入脚,可以通过与之相连的边界扫描寄存器单元把信号(数据)加载到孩管脚中去;对于芯片的输出管脚,可以通过与之相连的边界扫描寄存器单元“捕获”(CAPlrIIRE)该管脚的输出信号。这样,边界扫描寄存器提供了一个便捷的方式用于观测和控制所需要调试的芯片。ATMEGAl6内部集成了一个标准的J1’AG接口电路,如图4.9所示。其中TcK、TDO、TMs、TDl、RsT#分别对应加’MEGAl6的21、23、22、24、4号管脚。J1=AG调试器由目标板供电,R1—.R4为10K上拉电阻,可以增强信号线驱动能力。耽l3579¨lY图¨JTAG调试接口》RS232串行电路RS232串行电路是与PC机的串行接口电路,可以方便的打印一些调试信息。在最终的SDKey上是不存在的,对用户透明。接口电路如图4_10所示。”几与Rs232电平转换芯片采用的是MAX3232,该芯片以单+3.3v电源供电。J6为Rs232接口公头,系统使用直通电缆与PC通信。芎i2468O 北京邮电大学硕十学位论文SD接口的智能安全卡的研究图4.10串行接口电路电路中还设置两路信号指示LED,用来指示电路运行中的一些状态,提供一些辅助调试信息。Kcv内的sD控制程序,固化在Kev的存储器中,称为sD设备端同件驱动程序。固件控制sDKcy,使其按照SD接口协议进行通信;同时主机操作系统中安装对应的主机端SD设备驱动程序。在Kev和主机两端的软硬件的协同配合下,就能够实现Kev与主机用SD总线通信。CRC、DES开发部分采用zylogicE5开发平台。zE5是工业用第一个完全用户定制的微控制器平台。高性能、工业标准兼容8051/52的微控制器,每个指令字节4个循环周期,在40MHz上能够提供10MIPS的处理能力。片上64k字节的系统专用RAM(xD朋rARAM),2048个可配置系统逻辑(csL)单元(约40000个逻辑门)。高性能的专用内部总线。片内集成先进的用于下载和调试的四管脚lEEE1149.1J1’AG接口,支持嵌入式调试功能。ZE5可定制微控制器的结构如图4.1l所示【13J31l23456789∞n也.抛趋.】1ll}B 北京邮电大学硕士学位论文SD接口的智能安全卡的研究连接瑚讣稚存储器进行初始纯秘代码耜储PIOP『oPIOPIoPIO“|配再袭统自联tcsl)愈线图4.11ZE5可配置soC框图SD接口逻辑部分的开发,编辑编译采用ICCAVR6.31集成开发环境。ICcAvR是广州双龙公司在国内大力推广的一种使用ANSl标准c语言来开发AVR的一个工具,开发界面友好,编译效率高,并且提供了全部的库源代码及一些简单的应用实例,并且用户能够根据库源代码对ICCAVR提供的库函数进行裁减和扩充。调试采用越限StlIdio集成开发环境,AVRStIldio是Atmel公司推出的调试环境,支持与IocA、佩的无缝连接。开发全部采用ANSIC语占。用C语言进行嵌入式系统的开发,具有汇编语言编程所不可比拟的优势114J:1,可以大幅度加快开发进度,特别是开发一些复杂的系统,程序量越大,用C语言就越有优势。2、无需精通单片机指令集和具体的硬件,也能够编出符合硬件实际专业水平的程序。3、可以实现软件的结构化编程可以省去人工分配单片机资源,软件可移植性好。zE5部分,硬件配置部分采用融Ichip软件。FPGA开发部分,使用Vcmog语言,系统综合采用synpli母,仿真采用Modelsim。 北京邮电大学硕士学位论文SD接口的智能安全卡的研究4.6具体设计与实现4.6.1SPI接口部分√^删EGAl6与SPI相关的寄存器有:sPI控制寄存器sPCRBit7654321oSPIESPEDORDMSTRCPOLCPHASPRlsPRoBit7一SPIE:使能SPI中断置位后,只要SPSR寄存器的SPIF和SREG寄存器的全局中断使能位置位,就会引发SPI中断。Bit6一SPE:使能SPISPE胃!位将使能SPI。进行任何SPI操作之前必须置位SPE。Bit5一DoRD:数据次序DORD置位时数据的LsB首先发送;否则数据的MSB首先发送。B“4一MSTR:主/从选择MSTR置位时选择主机模式,否则为从机。如果M跚I为“1”,SS配置为输入,但被拉低,则MsTR被清零,寄存器SPSR的SPlF置位。用户必须重新设置MsTR进入主机模式。Bit3一CPOL:时钟极性cPOL置位表示空闲时scK为高电平;否则空闲时scK为低电平Bit2一CPHA:时钟相位cPHA决定数据是在scK的起始沿采样还是在scK的结束沿采样Bits1.0一SPRl,sPRO:sPI时钟速率选择1与0确定主机的SCK速率。SPRl和SPRO对从机没有影响。SPl状念寄存器SPSRBit76543210SPIFWCOLSPl2XBit7一SPIF:SPI中断标志串行发送结束后,SPlF置位。若此时寄存器SPCR的SPIE和全局中断使能位置位,sPl中断即产生。如果sPI为主机,ss配置为输入,且被拉低,sPIF也将置位。进入中断服务程序后SPlF自动清零。或者可以通过先读sPsR,紧接着访问sPDR来对sPIF清零。 北京邮电大学硕士学位论文SD接口的智能安全卡的研究Bit6一wCOL=写碰撞标志在发送当中对SPl数据寄存器SPDR写数据将簧位wCOL。WCOL可以通过先读SPsR,紧接着访问SPDR来清零。Bit5。1一R丘s:保留保留位,读操作返回值为零。BitO—SPl2X:SPI倍速置位后SPl的速度加倍。若为主机,则sCK频率可达CPU频率的一半。若为从机,只能保证fo∞/4。还有SPI数据寄存器SPDR,用于收发数据。以下为初始化ATMEGAl6为主机模式以及传输数据的子程序。voidSPLM勰terIllit(void){P设置MOSI和SCK为输出,其他为输入·/DDR~sPI=(1<>8);uBRRL=(unsignedchar)baud;P接收器与发送器使能·/ucsRB=(1<碰沁ry砷>鼍㈣2曼⋯~一、—蔷产‘哪<№心><№妇>⋯~形坤Ⅻ≠8堂⋯。⋯;~≮于key2{一一、—管~。印3图4.113DES模块端口连接图 北京邮电大学硕士学位论文SD接口的智能安全譬的研究5.1驱动概述第五章驱动程序设计如果主机Pc或PDA不知道如何与sDKcy外设通信,那么这个sDKev外设一点用处都没有。在windows下,与SD外设的任何通信必须通过设备驱动,这个驱动知道如何与系统的sD驱动和访问设备的应用程序通信。设备驱动程序是内核的一部分,驱动程序位于操作系统的最底层,它屏蔽了具体的硬件细节,是整个操作系统的基础,是操作系统内核和机器硬件之问的接口,它由一组函数和一些私有数据组成,是连接应用程序与具体硬件的桥梁。设备驱动是保证应用程序访问硬件设备的软件组件。硬件设备可能是SDKey、打印机、调制解调器、键盘、视频显示器或者任何连接到计算机的电子电路。设备可能在计算机机箱的内部,或者是使用电缆连接到计算机上的。设备可以是标准类型,也可以不是,也包括自定义的设备。一个设备驱动使得应用程序不必知道物理连接、信号和与一个设备通信需要的协议等的细节。应用程序是用户运行的程序,包括支持自定义硬件的特殊用途的应用程序。设备驱动程序可以保证应用程序代码只通过外设名字(例如BuptSDKev)访问外设或者端口目的地(例如COMl或IP舵)。应用程序不需要知道外设连接端口的物理地址(例如378H),不需要精确监视和控制外设需要的交换信号(忙、选通等)。设备驱动通过在应用层和硬件专用代码之间的转化来完成它的任务。应用层代码一般使用一套操作系统支持的函数。硬件代码则处理那些访问外设电路的必要协议,包括监测状态信号和在合适的时间切换控制信号。windows包括应用程序接口(API)函数,使得设备驱动能与应用程序之间相互通信。这些函数使得应用程序能够控制显示器、处理信息、访问存储器、读写磁盘和其他设备以及更多的几千个函数中的一部分。用VisualB勰ic、ac++和Delphi编写的应用程序可以调用APl函数。尽管API函数简化了与硬件通信的过程,但还需要做一些编程工作。API函数对传递和返回的变量有特殊的要求,出现错误不会导致应用程序或系统的崩溃。从通信的硬件角度来看,一些设备驱动是处理所有事情的单片机电路驱动,它处理的事情包括从与应用程序的通信到对连接到硬件的端口或内存地址的读写操作。其它驱动,使用分层驱动模式,每个驱动执行一部分通信。最顶层与应 北京邮电丈学硕士学位论文sD接口的智能安全}的研究用程序通信,最底层与硬件通信,中间可能是一层或多层。分层驱动模式比整体更复杂,但实际简化了写驱动的工作,因为设备可以共享通用任务的代码。有好几种方式可用于写设备驱动或获得驱动。经常是有不止一种方式可以实现,而这个选择是根据更简单、更便宜及提供较好的性能方面来综合考虑。从最一般的角度来看,设备驱动是处理硬件设备连接到CPU通信的细节的代码。即驱动程序是添加到操作系统中的~小块代码,其中包含有关硬件设备的信息。有了此信息,计算机就可以与设备进行通信。驱动程序是硬件厂商根据操作系统编写的配置文件,没有驱动程序,计算机中的硬件就无法工作。操作系统不同,硬件的驱动程序也不同。在应用程序中即使短的子程序也可以被认为是设备驱动。但是在windows下,大多数驱动的代码和应用程序代码是不同的,因为操作系统允许驱动代码比应用程序优先级高。在windows下运行的代码以以下两种方式之一运行:用户和内核。在访问内存和其他系统资源时.每种允许有不同的优先级。应用程序必须运行在用户模式下,其他很多驱动运行在内核模式下。在用户模式下,windows限制访问内存和其他系统资源。windows不允许操作系统访问设定为被保护的内存区域。这使得Pc机可以同时运行多个应用程序,不会互相干扰。从理论上讲,即使一个应用程序崩溃了,其他应用程序也不会受到影响。在windows98下,应用程序可以直接访问L『o端口,除非一个低级驱动预留了端口,防止访问。在windows2000及windowsXP中加强了对系统的保护,应用程序不再允许直接访问I,O端口。在内核模式下,代码不限制访问系统资源,包括执行内存管理指令和控制访问I/o端口。每个应用程序和驱动使用自己的语言与操作系统通信。应用程序使用wIN32APl函数。驱动通信使用∞l请求包(IRPs)的结构。windows定义了一套驱动可以使用的IRPs。每个IRPs请求或执行一个单个的输入或输出动作。图5-1表明了用户和内核模式在一个通信中的主要组成。 北京邮电大学硕十学位论文SD接口的智能安全骨的研究5.1PC/SC规范简介应用程序:厍栲win32子系统▲t硬件设备驱动}!节总线驱动●t硬件圈5.1用户和内核模式的主要组成1.简介Pc/SC规范由微软公司与世界其它著名的智能卡厂商组成的PC,sC工作组提出的。Pc幅C规范是一个基于wIND0ws平台的一个标准用户接口(API),提供了一个从个人电脑(Per∞nalcomputer)到智能卡(SmartCard)的整合环境,使智能卡进入PC机的问题变得更容易解决。PC幅C的主要优点就是让应用程序不必为了与智能卡通信而去了解智能卡读卡器的细节。而且,该应用程序还能适用于任何遵从PC./Sc标准的读卡器。虽然到目前为止,wIND0wS是唯一支持PC搭C标准的操作系统平台,但由于wINDows的影响力,Pc'/Sc规范也为智能卡业界所接收。到目前为止,PC幅C规范的最新版本是PC幅CSpccifications2.O。PC/sc规范建立在工业标准.IS07816和EMV标准的基础上,但它对底层的设备接口和独立于设备的应用A_PI接口(例如用来允许多个应用共享使用系统同一张智能卡的资源管理器)做了更详尽的补充。它的提出主要是为了达到以下目标:◆遵从现在ICC和PC的标准并在适当的地方给予扩充◆跨平台的可操作性,使该规范可在多种硬件和软件平台上实现◆应用程序可以采用不同厂商提供的产品(独立于厂商)◆不需要写应用代码就可以享受技术进步的好处(独立于应用) 北京邮电大学硕十学位论文SD接口的智能安全膏的研究◆建立应用级的智能卡服务接口,推广ICc在PC上的应用,并促成PC采用lCC作主标准设备。2.P(./SC体系的主要组成:PC/Sc体系由三个主要部件组成,分别规定了操作系统厂商、读写器(IFD)厂商、智能卡(Icc)厂商的职责‘51。图5-2P(搬C体系的主要组成i.1FD(即读写器)控制器是由IFD厂商提供的可安装部件。ii.Resourccm卸a筘r(资源管理器)使用win3”LPI函数实现,是由操作系统厂商提供的系统级部件。iii.serviceProviders(服务提供者),服务程序是由厂商提供的可安装部件,用于提供访问特殊服务的手段,其使用的是基本c0M的界面方式。3.PC/SC的APl函数使用方法及示例PC/sc的API函数由操作系统提供,在微软公司提供的MSDN(2000年10月版)有相关帮助(路径\\MSDN\Platfo咖SDK\SecIlrity\SmanCard),函数声明在winscard.h中,所用的库是scarddlg.1ib,这罩只是摘录其中一个来晚明:Scard(乃nnect。scardconnect函数用来建立应JHj程序与插在读卡器中的智能卡的连接。如果在指定的读卡器中没有卡片,则返回一个错误。UONGSCardCommed(1NSCARDCONrEXThQ!塾!曼瑟小LPCrSTR筵&堑逝,INDWORDdwSha∞MOde.INDWORD亟堡£丝鱼哩曼亟呈殴£垡塑!墨,0UTLPSCARDHANDLEP匦三垦墅虫OuTLPDw0RD坠亟盟△盟i!曼£地!Q曼亟);4l 北京邮电大学硕士学位论文sD接口的智能安全膏的研究参数:hContext,标识资源管理器环境的句柄,这个资源管理器环境是预先调用SCardEstablishC明text来设置的。SzRcader:与目标卡相连的读卡器名字DwshareMode:用来标识其它应用程序是否与该卡相连的标志。可以取以下值:取值含义SCARD_-SHARESHARED本应用程序将与其它应用程序共享这张卡SCARD—SHARE—EXCLUSIVE本应用程序将不会与其它应用程序共享这张卡SCARD_SHARE—DIRE(玎本应用程序指定读卡器为私有,并直接控制卡片,其它应用程序不能访问它DwPrefc玎edProtocols:连接时,所能接收的协议位标志。可以取以下值,也可以进行0R操作。取值含义SCARD—PR01’0CoL.-TOT=0是可能接收的协议SCARD—PROTOCOL_-TlT=l是可能接收的协议O该参数只有当d们掩口旭^如如设置为SCARDS地讯EDIRECT时,才可能为零。因此,由驱动来完成无协议的通讯直到ScardC0mrol发送控制指示10cr兀,sMARTcA删)-SErr-PR01'oc0LPhcard:返回一个旬柄,标识智能卡与指写读卡器的连接PdwActiveProto∞I:返回一个标识,标识确定有效的协议,可以取以下值:取值含义SCARD_PR0,rOCOL,.1'oT=0是有效的协议SCARDJ’ROTOCOL_-T1T三1是有效的协议SCARD—PROTDCOILUNDEFINED已经指定为sCARD--SHAREDIRECT'5.2驱动开发SDKey既可以用在标准PC上,也可以用在移动设备如智能手机、PDA上, 北京邮电大学硕十学位论文SD接口的智能安全膏的研究既可以用在Windows操作系统上,也可以应用在Lj姗x上,以及嵌入式操作系统windowsCE、嵌入式“n耽上。5.2.1Windows驱动开发》VxDVxD是vIRll,ALXDRIVER的缩写,即虚拟设备驱动程序。是系统用于对各种硬件资源识别,管理,维护运作的扩展。vxD和VMM(虚拟机管理器1一起合作,维持着系统的运作。VxD模式从wIN3X时代就开始了,一直到了wIN98还一直在Ms的w斟系列操作系统中起主导作用。VxD运作在INTEL系列cPu保护模式下的RING0,拥有对硬件的最高控制权。≯KMDKMD是KemelModeDriver的缩写,是NT下提出的管理、维护硬件运作的驱动程序模式。该DRIVER运行于NT的KERNEL模式下,类似于RING0。但是,一个KMD的运作环境在不同的时候是根本不同的。DRIVER收到设备请求时的运行环境很可能和设备请求实际操作的运行环境根本不同。这也是NT下,DRⅣER的运作也受到NT的许多限制,一不小心DRIVER和NT就同时没有响应了。≯WDMwDM是windowsDrivcfModel的缩写,即wiIl32驱动程序模型,是Micmsoft力推的全新驱动程序模式,支持即插即用、电源管理和wMI(windowsMana驿mentIIIstmmentation),旨在通过提供一种灵活的方式来简化驱动程序的丌发。在实现对新硬件的支持上,减少并降低了所必须丌发的驱动程序的数量和复杂性。除了通用的平台服务和扩展外,wDM还实现了一个模块化的、分层次的微型驱动程序结构。在windowsMe和windows2000中引入了wDM驱动程序构架。WDM体系结构实行分层处理,即设备驱动被分成了若干层,典型地分成:高层驱动程序、中间层驱动程序、底层驱动程序。每层驱动再把∞请求划分成更简单的请求,以传给更下层的驱动执行。最底层的驱动程序在收到I/O请求后,通过硬件抽象层,与硬件发生作用,从而完成I/O请求工作。在这样的架构下,上面的驱动层就不需要对每个操作系统都要开发一遍了。如图5.2所示 北京邮电大学硕士学位论文SD接口的智能安全骨的研究图5-2WDM驱动程序体系结构wDM还引入了功能设备对象FDO(FunctionalDcviccobiect)与物理设备对象PDo(PhysicalDevice0biect)两个新类来描述硬件,一个PDO对应一个真实硬件。一个硬件只允许有一个PDO,但却可以拥有多个FDO,而在驱动程序中我们不是直接操作硬件而是操作相应的PDo与FDO。驱动程序和设备对象的分层情况如图5.3所示19Jo图5.3wDM中驱动程序和设备时象的分层情况其中总线驱动程序(BusDrivcf)位于最底层,控制对总线上所有设备的访 北京邮电大学硕士学位论文sD接口的智能安全鼻的研究问,功能驱动程序(Functi∞Dfivcf)控制设备的主要功能。开发wDM离不开DDK(DeviccDfivers飚t,设备驱动程序开发包),微软公司提供的版本有:Windows98DDKwindows2000DDl【,windowsxP(SPl)DDkwindowsServer2003DDK’分别对应4种操作系统。可以单独使用DDK开发wDM程序,也可以配合其他开发工具(如DriverStudio)开发。一般还会用到以下一些工具:VisualC++6.o,windawsxPSP2SDK。5.2.2windowsCE驱动开发微软于1996年11月j下式进入嵌入式市场,并推出windowscE1.0版本。windowsCE是被设计用来为嵌入式丌发者在复杂的嵌入式应用软件环境中应用。windowsCE2.12版本中在多个方面对嵌入式系统进行了显著的改良,包括了简单的、基于向导的操作系统配置,可导出SDK以进行应用程序开发,支持多媒体等。在3.O中又强化了互联网服务的部分并丌始支持实时系统。在目前的第4.2版中,windowsCE提供了经过时间考验的并非常多样化的特性囊括许多最新技术以帮助开发者开发智能小型化设备。简单地说,windowsCE就是基于掌上型电脑类的电子设备操作系统。其中旺中的C代表袖珍(C0mpad)、消费(Cons岫cr)、通讯能力(Conncctivity)和伴侣(Comp卸ion);E代表电子产品(EIectroni鹤)。微软在国内的0EM伙伴如联想、海信、桑夏等10家厂商也都开发出了他们基于中文windowscE的掌上型电脑。windowsCE能确保在最新的硬件上快速设计出智能化的,可运行丰富多样化应用程序的设备。windowsCE也为丌发者提供了模拟技术使他们无需任何其它硬件即可在windows2000或windowsxP工作站上测试他们的应用。windowsCE已针对移动设备进行了优化,例如个人数字助理(PDA)、智能电话等,也可以用于机顶盒、家庭网关之类的设备。这些使用windowsCE制造的设备可以对使用者通过个人区域网络(PAN)或局域网(“气N)乃至远程网络(、^,AN)进行远程登录、认证、管理,更新新的应用程序和系统服务,支持蓝牙技术和802.11无线局域网;一个嵌入式设备可在任何地方对其进行连接。此外,产生或存储的数据符合本地或网络的安全设置。windowsCE也提供核心的操作系统服务以支持对许多设备所最必要的实时嵌入式设计。例如:嵌入式开发者现在可以提供界限内、低延时、确定性系统性能的硬实时操作系统(R1'oS)内核支持。windowsCE的实时性能已在许多工厂自动化生产实例中得到检验。与windows95/98、windowsNT不同的是,windowsCE是所有源代码全部 北京邮电大学硕士学位论文SD接口的智能安全卡的研究由微软自行开发的嵌入式新型操作系统,其操作界面虽来源于windows95/98,但WindowsCE是基于w矾32API重新开发、新型的信息设备的平台。windowsCE具有模块化、结构化和基于win32应用程序接口和与处理器无关等特点。WindowsCE不仅继承了传统的windows图形界面,并且在windowsCE平台上可以使用windows95/98上的编程工具(如VisualBasic、ⅥsuaIC++等)、使用同样的函数、使用同样的界面风格,使绝大多数的应用软件只需简单的修改和移植就可以在WindowsCE平台上继续使用。目前WindowsCE最高版本为windowsCE.nct4.2,内核定制工具为PIa把f0珊Buildcr(PB),应用程序开发工具为EmbeddedⅥsualC++4.O。windowsCE.NET主要有两种设备驱动类型:本机设备和流接口。在本质上,WindowsCE.M玎的设备驱动程序都是一些DLL文件(动态链接库),可以用标准的windowsCE.M玎APl(基于wlN32)实现。这些DLL文件向内核提供了一些入口函数,使设备管理模块可以通过这些函数与具体的硬件设备进行通信。本机设备是指集成到目标平台的设备,这类设备包括显示器、触摸屏、串口、并口、鼠标键盘等。本机设备驱动程序的开发是和操作系统丌发一起进行的,驱动程序被集成到最终的CE映像文件中。在Platf0聃Builder中,提供了许多本机设备的驱动程序源代码。在Platfo加Builder4.1安装后,在目录wINCE410\PuBuaCommon\oAⅪDRIvERS下包含独立于平台部分的设备驱动程序的源代码。其中SDBUSDRⅣER、SDCARDUB、SDHCLlB是与SD卡相关的部分。如果要创建最终可用的驱动程序,还需要在此基础上进一步的开发。在自行定制操作系统时,可以直接将目标平台上的本机设备驱动程序加载到自己的操作系统中。而对于在PlatfomBuilder中没有包括的设备,就需要自行添加驱动程序。流接口驱动程序是为连接到基于winddwsCE.M’T平台的外部设备设计的。如果将外接设备映射为系统内存的话,流接口驱动程序可以直接和外接设备进行数据、状态的读取。流接口驱动程序的主要任务是把外设的数据和状态传递给应用程序。应用程序通过驱动程序API读取函数,『自J接访问外设;流驱动程序使用同一个接口并调用同一个函数集——流接口函数。流接口驱动程序和系统其他部件间的相互关系如图5.4所示16J。 北京邮电人学硕七学位论文SD接口的智能安全卡的研究用户应用程序lAPIslocll.s文件系统卜.——叫流接口驱动程序垡盟_Jf1}髓H龋Hl本机设备l驱动程序l}基于windowscE.NET的平台}外围设备图5-4流接口驱动与系统间的关系每个流接口驱动程序必须实现一组标准的函数,用来完成标准的文件I/o函数和电源管理函数,这些函数提供给windowscE.net操作系统的内核使用。这些函数通常叫做流接口驱动程序的DLL接口,如下表所示16】表5一l流接口驱动程序的DLL接口函数名称描述xxxClose在驱动程序关闭的时候通过CloseH柚dle()函数调用这个函数xxxDeinit当设备管理器卸载一个驱动程序时调用这个函数xxxIn“当设备管理器初始化一个具体的设备的时候调用这个函数xxx-lOControl上层的软件通过Devicel0Control()函数可以调用这个函数xxx—Open在打丌一个设备驱动程序的时候应用程序通过CreatcFile()函数调用这个函数xxx—POwerDOwn在系统挂起前调用这个函数xxx—PowerUp在系统重新启动前调用这个函数xxxRead在一个设备驱动程序处于打开状态的时候由应用程序通过RcadFile()函数调用这个函数xxxSeek对设备的数据指针进行操作,由应用程序通过SetFilePointef()函数调用这个函数xxxWrite在一个设备驱动程序处于打丌状态时由应用程序通过 北京邮电大学硕士学位论文SD接口的智能安全#的研究其中电源管理的部分是可选的,在实际开发中接口名称中的xxx三个字母由设备驱动程序的设备文件名前缀代替。5.23Ij删x驱动开发“nux操作系统因为其内核小、开源、可裁剪、可应用于多种硬件平台、内核高效稳定、软件丰富、网络通信和文件管理机制完善等优良特性,在嵌入式设备中得到了广泛的应用。在Ljnux下使用SDl(cy,需要开发和加载SDKey的设备驱动程序,将SDKev作为Linux下面一个目录。从而用户和应用程序可以不用关心具体细节对SDKev进行存取操作。在“nux中,驱动程序实际上是内核的一部分。驱动程序可以在编译内核的时候,静念的链接进内核,在操作系统初始化的同时完成驱动程序的仞始化工作:也可以在系统运行的时候,以可加载模块的方式通过immod命令加载进内核,由模块的仞始化函数束完成初始化工作。由于设备种类繁多,为了管理方便,Linux把它的驱动程序分成三大类:字符设备、块设备和网络设备。其中网络设备是通过BSDsocket接口访问的设备,它负责数据包的发送和接收。通常它不作为存储设备。字符设备能够存储或者传输不定长的数据。内核把字符设备看成是可访问的连续字节流,它在单个字符的基础上接收和发送数据。字符设备不能够随机访问,也不允许查找操作。常见的字符设备有终端、打印机、串口、鼠标、声卡等等。块设备中通常存储的是定长且可随机访问的数据块,对它的I/o操作只能以块为单位进行。Ij蛐x的文件系统通常就是安装在块设备之上的。uainux是专为无MMu的微处理器打造的嵌入式Unux操作系统,由Linux2.0/2.4内核派生而来。现在uclinux越来越受到业界的青睐,被移植到很多的无MMU芯片上。uainux是由标准Li肌x派生而来,它们的设备驱动开发基本相似,但标准Linux支持模块化,设备驱动都写成模块的形式,而且要求可以在不同的体系结构卜安装。uClinux是可以支持模块功能的,编译内核的时候可以选择支持或不支持模块功能,但嵌入式系统是针对具体的应用,而且嵌人式系统中内存空『日J资源比较紧张,所以在编译内核时,一般选择不支持模块功能,这样uClinux的驱动程序都是直接编译到内核中的。Li娜x的一个基本特点是它对硬件设备的管理抽象化,系统中的每一个设备都用一个特殊的文件来表示。所有的硬件设备都像普通的文件一样看待,使用与操作系统相同的标准系统来进行打开、读写和关闭应用程序只有通过对设备文件 北京邮电人学硕士学位论文SD接口的智能安全卡的研究的op锄、release、rcad、write、iodl等才能访问硬件设备。在uainux源代码uClinux-dist/1i删x/indude/linux/fs.h中定义了uClin弧驱动程序必须使用的lileopcrati彻s结构,每个设备驱动都实现这个接口所定义的部分或全部函数。随着内核的不断升级,fileoperati∞s结构也越来越大,不同的版本的内核会稍有不同。Fileoperati∞s定义如下川:stnlctnIc-opem“∞s{in“’lscekXst邝ctinode+,stnIdfiIe‘,o由fj,int);int(‘陀ad)(stnldinode+,stmctfile+,char’,int);in“4wfite)(st埘dinode’,stmctfile’,constchar+,int);int(’rcaddir)(stnlctinode’,stmdfilc‘,void‘,dilldir);int(4selecl)(stfIlctinodc‘,st兀lctfile+,int,∞lecLtable4):intrioctkl)(stmctinode。,stnIctfne‘,unsignedinl,unsignedlong);int(+mmap)(stmctinode4,stmctfile。,stmctvm—area—st兀lct+);int(+open)(strIIctinode4,stnlctfile‘):int(+rclease)(st埘c‘inode。,stmdfile4);int(4fSync)(stmctinode’,st阳ctfile‘);int(+fasync)(stnlcIinode+,stmctfile。,inO;int(+check-media.-changexkdev_tdeV);int(+revalidate)(kdev—tdev);};在这些函数指针中,o口cn、rcle舔e用于设备的打开和关闭,是每个驱动程序都要实现的函数,其它函数根据实际设备的作用不同而实现相应的函数。这些操作函数将被注册到内核。当应用程序对该设备相应的设备文件进行操作时,内核会找到相应的操作函数并进行调用。分析驱动程序的file_operations结构,用户就可以编写相应的外部设备驱动程序,其中的主要步骤根据具体的设备驱动程序的需要,完成fileoDerations中的每个函数的编写。己完成了设备驱动程序编写的主要工作后必须定义一个初始化函数。初始化函数主要的工作是:对硬件寄存器进行设置、初始化设备相关的参数、注册设备、注册设备使用的中断和其它的一些初始化工作。设备驱动程序所提供的入口点,在设备驱动程序初始化时向系统进行登记,以使系统在适当的时候调用。Ljnux系统中通常调用rc蓟stcrchrdcv向系统注册一个字符型设备。∞西stcrchrdev定义为:iIItre酉stef-chrdcv(unsigIlcdintmajor,∞nstchar‘n锄e,咖ctfile-opefati∞s+fops);当设备驱动模块从Ljnux内核中卸载时,对应的主设备号必须被释放。在模 北京邮电大学硕士学位论文SD接口的智能安全#的研究块卸载调用de柚up-rnoduIeO函数时,应该调用下列的函数卸载设备驱动:intunre西ster_chrdev(unsi朗edintmajor,∞nstcharlname);’初始化部分一般还负责给设备驱动程序申请系统资源,包括内存、中断、时钟、I/O端口等,这些资源也可以在opcn子程序或其它地方申请,这些资源不用时应该释放,以利于资源的共享。如果设备需要IRQ支持,则要注册中断,注册中断的函数:intrequcst—irq(unsignedintifq,Void(’handler)(iIIt,Void‘,s“ucIpLrq;s‘),unsi印cdlongna擎,constch盯+dcvi∞,void+dcvjd). 北京邮电大学硕士学位论文SD接口的智能安全卡的研究第六章结束语通过本课题的实践,我们对SD接口的智能安全卡技术做了研究和探讨,并成功的将智能卡的高安全性融入Pl(1体系中。SDKey作为数字证书的安全载体越来越多的应用于Pl(1领域进行数字签名。特别是电子签名法的通过,SDKev与CA的结合是必然趋势,在中国有着极大的市场潜力。本文在分析sDKev体系结构及各层的组成的基础上,详细的论述了sDKev硬件层的具体实现。SDKcv体系结构包括四层:硬件层、核心驱动层、标准中『日J件层和应用层。在硬件层中,本文论述了SDKev的硬件构成、SD接口协议和芯片操作系统COS。其中,着重论述了SD接口的原理和实现。最后简单探讨了主机端sDKev驱动程序的丌发。SDK-cv作为一个还在理论研究阶段的产品其体系结构比较复杂,本文只是分析了作者在项目中涉及到的最底层——硬件层的实现,核心驱动层、中问件层和应用层将是未来学习和工作的方向,从而能全面的掌握SDKev的技术实现。智能卡具有非常好的安全特性,但并不是峰不可摧的。目前也有很多破解智能卡的方法。如逆向工程法、对EPROM的攻击、对智能卡逻辑漏洞的攻击。所以任何安全产品都要综合考虑网络安全的标准与法律法规,安全的策略与管理、安全协议与技术。没有哪种方案是普遍适用的,必须根据网络体系的结构和网络安全形势的具体情况来确定相应的安全策略。51 北京邮电人学硕十学位论文SD接口的智能安全卡的研究参考文献【1】sDGmup,sDspecificationsPart1PhysjcaILayerspecificationVc体ion2.00DmftNovember9.2005【21李翔,智能卡研发技术与工程实践.人民邮电出版社,2003f3】王爱英,智能卡技术,清华大学出版社,1996【4】AtmelCoIp,ATmega32(L)Datasheet,燮堕理:旦!啦曼!:塑堕,2003.06f5j清华同方,P(’/sc规范简介,华同方,2003.09f6】周毓林宁杨陆贵强,windo、糨cE.nel内核定制及应用开发,电子工业出版社,2∞5.08【7J肖杰李仁发徐成,基于嵌入式工jnux设备驱动程序的开发,科学技术与工程,2006.02.P323—326【8】新浪网,h!!驻;碰l£吐!囱na:£Q舆:£型i巡4:Q8:31ZQ22塑15垒22点h!塑I’中华人比共和国电子签名法{9l武蜜河邰铭丁.洪涛,wlNDOws200畎PwDM没备驱动程序开发,电子1.业出版社。2003.04110】InreViumProductG枷p,SDloC&rd—sidecontr01jefIP,hl绝;岱!璺!垒些i塾蝗xi婪婴j醯堑《.2005.“lnlAfa蛆nc}l玲syste娜,lnc,AC2l∞sDIOcont叫lcfASIcvefsi∞1.o。ttp:,/'Mvw.afasan.com/sdioinabox.html.20C16f121:F金明,VcrjlogHDL张廖设计教程,人比邮电出版社。溯5.05f13lzylogic,(brporation·zyl吲cZE5configIIrablcsystcm.on.chipPlalfo哪ve传i∞1.10,堡堂盟兰Yl垒g亟塑盟:星nt2004.03f14J沈文Ea甜elee詹甲前,A、限单片机c语言开发入门指导,清华大学出版社,2∞3.05 』七京邮电人学硕十学位论文sD接口的智能安全}的研究致谢两年半的研究生生活马上就要结束了,通过这两年半紧张而又充满快乐的学习、科研生活,充实了我的知识,丰富了我的人生阅历。在这里首先我要感谢刘杰和范春晓教授,他们渊博的知识、严谨的作风令我终生受益。感谢邹俊伟老师和张晓莹老师给我提供了大量的实践机会以及对我的论文的悉心指导。感谢实验室的其他所有老师。感谢同窗以及教四223的所有师弟师妹,是你们使我的研究生生活充满了欢声与笑语。感谢室友吴吴在编码方而给予的大量帮助。感谢爱妻王秀华在生活上给予我的关心、在学习上给予我的支持以及对家庭默默的付出。感谢兰州交通大学电子与信息工程学院电信基础教研室的所有同事。感i身十各r乜子网站热心的网友。最后我要感谢我的父母与家人,感谢他们多年来对我的关心、理解与支持。

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。
关闭