基于校园“一卡通”系统的pki的设计与实现

基于校园“一卡通”系统的pki的设计与实现

ID:32511242

大小:5.12 MB

页数:92页

时间:2019-02-10

上传者:U-22107
基于校园“一卡通”系统的pki的设计与实现_第1页
基于校园“一卡通”系统的pki的设计与实现_第2页
基于校园“一卡通”系统的pki的设计与实现_第3页
基于校园“一卡通”系统的pki的设计与实现_第4页
基于校园“一卡通”系统的pki的设计与实现_第5页
资源描述:

《基于校园“一卡通”系统的pki的设计与实现》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库

基于校园“一卡通”系统的PKI的设计与实现摘要近年来,随着计算机技术、网络技术和智能卡技术的迅速发展,校园“一卡通”系统,作为校园URP系统中一个重要的子系统,正逐步应用于各个大学校园中。它是一个集个人证件、住宿消费、学籍管理、图书借阅等功能于一体的综合性消费和管理系统,极大地方便了校园的日常生活,提高了校园信息化的管理水平。但是,与此同时,也不可避免地带来了网络安全的隐患。本文以东华大学校园“一卡通”系统为应用背景,根据密码学和PKI的相关理论,结合校园内使用的非接触式IC卡的实际情况,设计了相应的校园数字证书和网络通信协议,并在此基础上构建了一个基于校园“一卡通"系统的PKI,包括架构在认证中心的CA服务器和遍布校园各个角落的嵌入式网络读卡器。它以校园数字证书为载体,将PKI技术、智能卡技术和嵌入式技术三者相结合,提供机密性、完整性、认证和不可否认等安全服务,为基于校园“一卡通"系统的应用构建了一个安全的平台。本文首先介绍了课题的背景、现状、存在的问题以及研究的意义,然后分析了课题所涉及的相关理论,包括密码学的相关理论和PKI的体系结构,接着阐述了基于校园“一卡通"的PKI系统的主要设计思想,而后具体描述了基于校园“一卡通"系统的PKI关键部分的实 现过程,包括CA服务器端的实现和嵌入式网络读卡端的实现。最后文章对本文的工作进行了总结和展望。本文工作的特点主要体现在以下几个方面:1、PKI相关算法(1024位密钥强度的RSA、MD5等)在32位嵌入式处理器上的快速实现,解决了在32位嵌入式处理器上执行PKI算法时的“时间瓶颈"问题,为PKI客户端在嵌入式平台上的实现提供了必要的技术条件。2、基于uClinux的EV4510嵌入式平台代替了普通的PC与非接触式IC卡读写器连接,组成嵌入式网络读卡端,作为PKI的客户端。这样,不仅降低了系统成本,而且支持可移动性。3、将用户的私钥和校园数字证书带外存储于用户的智能卡,这样,不仅便于携带,而且增强了安全性。4、针对校园“一卡通”系统,设计了专用的校园数字证书。它不仅格式灵活,能方便地存储于校园智能卡上,而且安全性高,支持1024位的密钥强度,能够满足基于校园“一卡通”系统的各种应用的安全需要。关键词:PKI,校园数字证书,校园“一卡通”系统,ARM,uClinux DesignandImplementationofPKIforCampusSmartCardSystemABSlRACTWiththerapiddevelopmentofcomputertechnology,networktechnologyandsmartcardtechnology,CampusSmartCardSystem,asasubsystemofUniversityResourcePlanning,hasgenerallycomeintouse●一●一。incampusmrecentyears.ItISacomprehensiveconsumptionandmanagementsystem,whichincludesidentityauthentication,accommodationconsumption,studentstatusmanagementandlibraryborrowingadministration.Itnotonlypromotestheuser’sconvenienceinthedailylife,butalsoraisesthelevelofinformationmanagementincampus.Butatthesametime,itcomeswithgreatriskincampusnetworksecurityinevitably.UnderthebackgroundofCampusSmartCardSysteminDonghuauniversity,accordingtotheprincipleofcryptographyandthearchitectureofPIG,allowingforRFCardincampus,thethesisdesignsCampusDigitalCertificateandnetworkcommunicationprotocol,andthenconstructsPKIforCampusSmartCardSystem,whichismade印ofCA ServerinCertificateAuthority(CA)andEmbeddedNetworkICCardReaderalloverthecampus.RegardingCampusDigitalCertificateasthemedia,thisPIGprovidescampususerwithsecurityservicesuchasconfidentiality,integrity,authenticationandnon—repudiationonthebasisofcombinationofPKItechnology,embeddedtechnologyandsmartcardtechnology,inordertobuildasecurityplatformforCampusSmartCardSystem.Thethesisfirstlygivesafullreviewofbackground,actuality,problemandsignificanceoftheproject.Secondly,itmakesallanalysisofproject-relatedtheory,whichincludestheprincipleofcryptographyandthearchitectureofPKI.Thirdly,itexpoundsthedesignofPKIforCampusCardSystem.Fourthly,itexpatiatesontheimplementationofPKIforCampusCardSystem,whichiscomposedofCAandEmbeddedNetworkICCardReader.Finally,itgivestheconclusionandprospectofthethesis.Theinnovationsofthisthesisareasfollow:1.FastimplementationofPKIalgorithm(RSAwith1024bits,MD5)on32bitembeddedCPU;Itsolvestimebottleneck,whenPKIalgorithmisexecutedonthe32bitembeddedplatform.Moreover,itorovides,nditionfor‘plementation6PKI:lientbasedorovidesanecessarycondltlOnIorlmplementatmn01:clientDaseonembeddedsystem.2.Thereplacementofpersonalcomputerbyembeddedplatform basedonMICETEKEV4510;AsPKIclient,EmbeddedNetworkICCardReaderiscomposedofembeddedplatformonMICETEKEV4510andRFCardReader.Itnotonlylowersthecost,butalsoprovidessupportformobility.3.CampusSmartCardwhereCampusDigitalCertificateisstored;Itiseasytocarry.Furthermore,itenhancesthesecurity.4.CampusDigitalCertificateforCampusSmartCardSystem;Itcanbestoredincampussmartcardbecauseitsformatisflexible.Moreover,itprovidessupportfor1024·-bit··key,whichcanenhancesecurityinordertomeettherequirementofdifferentapplicationsonCampusSmartCardSystem.KEYWORDS:PIG,CampusDigitalCertificate,CampusSmartCardSystem,ARM,uClinux, 第一章引言1.1课题背景当进入信息化校园的网站,我们可以很容易了解最近的校园动态,当进入电子化图书馆,我们可以得到良好的信息服务和丰富的文献资源:当进入综合教务系统,我们可以方便地进行网上注册、选课及成绩查询;当打开电子邮箱,映入眼帘的将是各类工作、学习信息⋯⋯这就是数字化校园给我们带来的巨大变化。我国教育部“十五"信息化规划的具体工作已经由教育部科技司开始实施。根据教育部的规划,2005年前校园信息化要有较大程度的提高,数字化校园作为教育信息化的重要组成部分,将掀起新一轮教育信息化的高潮。数字化校园【l】是以网络为基础,利用先进的信息化手段和工具,实现从环境、资源到活动的全部数字化,在传统校园的基础上,构建一个数字空间,提升传统校园的效率,扩展传统校园的功能,最终实现教育过程的全面信息化,从而达到提高教学质量、科研和管理水平的目的。在校园的数字化过程中,最核心的部分被称为URP(UniversityResourcePlanning),即大学资源计划【2】。它包括数字校园的应用支撑层(如办公自动化、数字图书馆、网上教学系统等)、信息服务层(如决策支持系统、信息服务系统等)和个性化门户网站。按照东华大学的整体需求,东华大学校园URP系统中包含了这几个部分j教务管理系统、人事管理系统、学生管理系统、办公自动化系统、新闻信息发布系统、外事管理系统和“一卡通"系统等。校园“一卡通”系统,是东华大学校园URP系统中的一个子系统。过去,在校园里,师生员工的证件、档案、考勤、就餐等管理都是不关联的,各部门之间没有相互的联系造成人力和财力的浪费,而且工作效率低。为此,各校都在寻求一种简捷高效的现代化信息管理模式。而智能卡技术13],【4】,【5】的推广应用,是推进现代化信息管理模式的重要措施之一。智能卡吼【7】’[81,19]由于具有存储量大,数据保密性好,抗干扰能力强存储可靠,读卡设备简单,操作速度快,脱机工作能力强等优点,广泛地被学校所应用。随着智能卡技术在校园信息系统建设中的作用日益突出,采用智能卡在学校统一实施学习、生活、消费管理已经成为一种必 然的趋势,校园“一卡通"系统也由此诞生。它是一个集个人证件、住宿管理、餐饮消费、学籍考试、图书借阅、购物消费、体育健身、医疗服务功能于一体的综合性消费和管理系统,不仅便利师生日常生活,而且便于学校统一管理,在真正意义上实现了“一卡在手,走遍校园”。1.2课题现状及存在的问题“一卡通”系统最初兴起于国外,在二十世纪九十年代开始进入国内,随着智能卡技术的日益成熟,“一卡通”系统的应用日益广泛,尤其是在国内高校中使用更加普遍。在国外,新加坡大学1991年用IC卡来实现校园“一卡通"。目前,校园“一卡通"已广泛的应用于美国、马来西亚等国家的各个大学中。在国内,校园“一卡通"工程【10】起步于九十年代中期。1996年,在国家教育部和国家计委的支持下,清华大学开始实施校园“一卡通’’工程。1998年,中山大学与广东发展银行联合在新建的珠海校区开发“广发中大校园卡工程”,开创了国内金融与校园“一卡通"的先例。进/k--十一世纪以来,校园“一卡通’’系统[1l】,【12】已逐渐在我国各个学校,特别是各个学校的新校区中运行。但是总的来说,在投入使用的校园“一卡通"系统中,或多或少存在一些问题,尤其突出的就是安全问题。随着Intemet的日益普及和网络攻击技术的日新月异,安全在校园“一卡通"系统中的重要性和必要性日益突出。校园“一卡通”系统集个人证件、餐饮消费、学籍考试、图书借阅等多种功能于一身,其中涉及到个人的帐户金额和私密信息。如何保证这些信息在校园网传输中的机密性、真实性、完整性和不可否认性成为校园“一卡通"系统研究与开发中的一个重要课题。目前,校园“一卡通”系统中有关安全领域【131,【141的研究和实践相对较少,缺乏一套成熟有效的安全机制和安全服务来保证校园“一卡通"系统信息的安全传输,给基于校园“一卡通”系统的各种应用带来相当的安全风险和安全隐患。4 1.3课题意义基于校园“一卡通’’系统的PKI为校园“一卡通”系统提供了比较成熟和完善的安全解决方案。PKI[151(PublicKeyInfrastructure),公钥基础设施,是利用公共密钥理论和技术建立的提供安全服务的基础设施,主要由注册机构(RA)、认证中一1)06](CA)、证书库、终端用户等部分构成。PIG采用证书管理公钥【171,通过第三方的可信任机构——认证中心CA(CertificateAuthority),把用户的公钥和用户的其他标识信息(如姓名、身份证号等)捆绑在一起,在Intemet网上验证用户身份。它使用建立在PIG基础之上的数字证书,通过把要传输的信息进行加密和签名,保证信息传输的机密性、真实性、完整性和不可否认性,从而保证信息的安全传输。根据PKI的相关理论和校园内正在使用的非接触式IC卡的实际情况,基于校园“一卡通”系统的PKI设计了专用的数字证书——校园数字证书。它面向校园“一卡通"应用,不仅格式灵活,能存储于校园智能卡上,而且安全性高,支持1024位的密钥强度,能够满足基于校园“一卡通"系统的各种应用的安全需要。1.4本文工作本文以东华大学校园“一卡通”系统为应用背景,根据密码学和PKI的相关理论,结合校园内使用的非接触式IC卡的实际情况,设计了相应的校园数字证书和网络通信协议,并在此基础上构建了一个基于校园“一卡通”系统的PKI。它包括架设在认证中心的CA服务器和遍布校园各个角落的嵌入式网络读卡器。它将PKI技术、智能卡技术和嵌入式技术三者相结合,提供机密性、完整性、认证和不可否认等安全服务,为基于校园“一卡通”系统的应用构建了一个安全的平台。CA服务器端程序,运行在基于IntelX86的Windows2000Server平台上,完成本地证书管理(证书本地签发、证书本地验证、证书本地撤销、证书本地延期、证书本地更新、证书本地查询等)、网络证书服务(证书远程下载和证书撤销列表远程查询等)和权限管理(角色管理等)等功能。5 嵌入式网络读卡端程序,运行在基于uClinux的EV4510嵌入式平台上,完成证书验证、证书远程下载请求和证书撤销列表远程查询请求等功能。1.5章节安排本文共分五章,具体安排如下:第一章首先概括地介绍了课题的背景、现状、存在的问题以及研究意义,然后介绍了本文的工作和论文的章节安排。第二章分析了课题所涉及的相关理论。根据本课题实际情况,文章首先从数据加密、数字签名和数字证书等方面对密码学的相关理论进行了研究;然后从基本组成、核心服务、信任模型和应用前景等角度对PKI体系进行了剖析。第三章详细阐述了基于校园“一卡通"系统的PKI的设计思想,包括总体设计和详细设计。文章首先从体系架构设计、校园数字证书设计、网络通信协议设计和数据库设计四个方面阐述了系统总的设计思想;然后根据系统体系架构划分,进行详细设计,分别阐述了CA服务器端程序的具体流程设计和嵌入式网络读卡端程序的具体流程设计。第四章详细描述了基于校园“一卡通"系统的PKI关键部分的实现,包括CA服务器端程序和嵌入式网络读卡端程序。文章首先阐述了CA服务器端程序的实现,包括密码算法、读卡器、网络通信和数据库访问等模块;接着阐述了嵌入式网络读卡端程序的实现,包括硬件平台及开发环境的构建、uClinux的移植以及密码算法、读卡器、网络通信等模块的开发。第五章对本文研究的内容进行了总结,并对下一步工作进行了展望。6 第二章本课题所涉及的理论分析2.1密码学相关理论分析2.1.1数据加密数据加密技术是最基本也是应用最广泛的安全技术,主要是通过对网络中传输的信息进行数据加密来保障其安全性。数据加密可在网络OSI七层协议的多层上实现,从加密技术应用的逻辑位置看,有三种方式:l、链路加密:指在网络层以下的加密,主要用于保护通信节点间传输的数据,加解密由置于线路上的密码设备实现。根据传递数据的同步方式不同,又可分为同步通信加密和异步通信加密两种。2、节点加密:指在传输层上的加密,是对链路加密的改进,主要是对源节点和目标节点之间传输数据进行加密包含。与链路加密类似,只是加密算法要结合在依附于节点的加密模件中,克服了链路加密在节点处易遭非法存取的缺点。3、端端加密:指在应用层上的加密,易用软件实现,且成本低,但密钥管理困难,主要适合大型网络中信息在多个发方和收方之间传输的情况。数据加密的核心概念是密码体制。密码体制是指一对数据变换,其中一个变换应用于数据起源项,称为明文,所产生的相应数据项称为密文;而另一个变换应用于密文,恢复出明文。这两个变换分别称为加密变换和解密变换。密码体制通常分为两类【181,对称密码体制和公钥密码体制。它们具有不同的特性,并以不同的方式来提供安全服务。在实际应用中,数据加密通常综合运用了对称密码体制和公钥密码体制。一、对称密码体制:对称密码体制【191,又叫传统密码体制,是从传统的简单换位发展而来的。其主要特点是:加解密双方在加解密过程中加密密钥能够从解密密钥中推算出来,反过来也成立。在大多数对称密码算法中,加密解密密钥是相同的。它要求发送者和接收者在安全通信之前商定一个密钥。 对称密码体制【2川从加密模式上可分为序列密码体制和分组密码体制。序列密码体制是通过有限状态机产生性能优良的伪随机序列,使用该序列加密信息流,得到密文序列。分组密码体制是将明文分成固定长度的组,用同一密钥和算法对每块加密,输出也是固定长度的密文。典型的对称密码体制加密【211方案如图l所示:图2一l典型的对称密码体制加密方案对称密码体制的安全性㈤依赖于密钥,泄漏密钥就意味着任何人都能对消息进行加解密。只要通信需要保密,密钥就必须保密。对称密码体制的优点在于效率高,算法简单,系统开销小,适合加密大量数据。对称密码算法也存在明显的缺陷,比如进行安全通信前需要以安全方式进行密钥交换,密钥分发和管理复杂等。目前,主要的对称密码算法有DES、IDEA等。1、DES算法:DES算法(DataEncryptionStandard),作为ANSI的数据加密算法和ISO的DEA-1,成为世界范围内的标准已经20多年。尽管它带有过去时代的特征,但它很好的抗住了多年的密码分析,除可能的最强有力的敌手外,对其它的攻击仍是安全的。目前,DES仍然被广泛地使用。DES算法是一个分组加密算法,它以“.位为分组对数据加密,64.位一组的明文从算法的一端输入,64-位的密文从另一端输出。DES算法同时也是一个对称算法,加密和解密使用同一算法,只是密钥编排不同。DES算法的密钥的长度为56位,通常表示为64.位的数,但每个第8位都用作奇偶校验,可以忽略。DES算法的具体描述如图2—2所示。8 图2—2DES算法描述DES算法的安全性基于利用连续简单运算以形成总体复杂的加密机制。从DES算法的描述看,运算都是线性置换,DES算法的强度主要来自56位的密钥与S盒。现在,随着CPU速度日益提高,对DES算法的穷举攻击成为可能。在实际数据加密中,常使用三重DES,加强DES算法的强度。2、IDEA算法:IDEA算法是瑞士的著名学者提出的,在1990年正式公布并在以后得到增强。它的设计原则是一种“来自于不同代数群的混合运算"。类似于DES算法,IDEA算法也是一个分组加密算法,以64.位为分组对数据加密,IDEA算法同时也是一个对称算法,加密和解密使用同一算法。针对DES算法密钥太短易被攻击的缺点,IDEA算法采用128位长度的密钥。二、公钥密码体制:公钥密码体制‘23】,[241,又叫非对称密码体制,其思想是由W.Diffie和Hellman在1976年提出。不同于以往的加密技术,非对称密码体制是建立在数学函数基础上的,而不是建立在位方式操作上的。更重要的是,与只使用单一密钥的对称密码体制相比,它在加解密时,分别使用了两个不同的密钥:一个可对外界公开,称为“公钥’’;一个只有所有者知道,称为“私钥”。一般规定公钥用于数字签名,私钥用于数据加密。公钥和私钥之间具有紧密的联系,用公钥加密的信息只能用相应的私钥解密,反之亦然。但是,要想由~个密钥推知另一个密钥,在计算上是不可能的。典型的公钥密码体制的加密方案如图2--3所示:9 加密密钥解密密钥图2—3典型的公钥密码体制的加密方案非对称密码算法的优点主要有通信双方事先不需要通过保密信道交换密钥,密码持有量大大减少,提供对称密码技术难以提供的服务:如与散列函数联用组成数字签名,可证明的安全伪随机数发生器的构造,零知识证明等。非对称密码技术的缺点是加解密速度慢、耗用资源大。目前,公钥密码算法主要有RSA和椭圆曲线密码算法等。其中RSAt25】,(26】是其中最著名、使用最广泛的一种。1、RSA算法:RSA算法是由R.Rirest、A.Shamir和L.Adleman于1977年在美国麻省理工学院开发,于1978年首次公布。RSA算法描述如下:①选两大素数P和q②计算n=pXq③计算(P(n)=(p一1)×(q-1)④选整数e,使e与币(n)互质,并e唧(n)⑤计算d,使dXemodQ(n):l⑥得到公钥图3—31射频卡各扇区控制块的结构二、校园“一卡通"系统使用的数字证书设计:根据文中第二章第三节关于数字证书的理论论述和以上对校园“一卡通”系统使用的MIFARE1射频卡特性分析,本系统中的校园数字证书设计如下:1、内容描述:1)证书本身信息①基本信息a、序列号:以ASCII码表示,占8字节b、生效日期:以ASCII码表示,占8字节c、失效日期:以ASCII码表示,占8字节②扩展信息a、应用范围:以ASCII码表示,占8字节2)证书用户信息①证书用户主体标识a、证书用户主体标识:以ASCII码表示,占8字节②证书用户公钥算法标识a、证书用户公钥算法标识:以ASCII码表示,占8字节b、证书用户公钥模数N:以二进制表示,占128字节c、证书用户公钥指数E:以二进制表示,占128字节 3)证书签发者信息:①证书签名主体标识a、证书签名主体标识:以ASCH码表示,占8字节②证书签名算法标识a、证书签名算法标识:以ASCII码表示,占8字节4)证书签名值:用证书签名算法签名证书信息得到的值:以二进制表示,占128字节2、语言描述:用C语言描述数字证书如下typedefstruct{unsignedcharcertno[8]://证书序列号unsignedcharcertrnge[8]://证书使用范围unsignedcharcertalgmidfr[8]://证书签名算法标识unsignedcharisurrlo[8]://证书签名主体标识unsignedchartimeaftr[8]://证书生效时间unsignedchartimebefr[8]://证书失效时间unsignedcharsbjtno[8]://证书用户主体标识unsignedcharsbjtalgmidfr[8]://证书用户公钥算法标识unsignedcharsbjtmdls[128];//证书用户公钥模数unsignedcharsbjtexpt[128]://证书用户公钥指数unsignedcharsignvale[128]://证书签名值)Cert:3.1.3网络通信协议设计根据本系统的应用分析和安全需求,系统中网络消息的格式设计如下:一、网络通信消息总体格式设计:I垂亘夏囹垂巫工巫溺菊矿匝藏藤F啊燕孤矛雨翮一一———————————————————————‘———‘———————————————-——————————————J—————————J图3—2网络通信消息格式{’ 1、内容描述;①消息头部MsgHeader包括消息长度和消息类型a、消息长度:消息总长b、消息类型:包括PKI消息、用户消息和设备消息等②消息主体MsgBody各类消息的具体内容⑧消息发送时间MsgTime各类消息的具体内容④消息发送方标识MsgSender⑤消息接收方标识MsgRecver⑥消息签名MsgSign对消息头部、消息主体、消息发送时间、消息发送方和消息接收方的签名2、语法描述:typedefstruct{MsgHeadermheader:MsgBodymbody:unsignedcharmtime[19]:unsignedcharmsender[14]:unsignedcharmrecver[14]unsignedcharmsign[128]:}Msg:typedefstruct{WORDmsglen:BYTEmsgtype:}MsgHeader:typedefunion{PKIBodymsgpkibody:OSRBodymsgusrbody:DEVBodymsgdevbody: )MsgBody:二、网络通信消息中PKI消息的格式设计:PK/消息是校园“一卡通"系统中消息的一种,用于CA服务器和嵌入式网络读卡端之间的通信,完成嵌入式网络读卡端有关证书网络服务的请求。l、内容描述:①Pra消息类型包括证书下载消息和证书撤销列表查询消息等。@PKI消息内容PICA各类消息的具体内容。2、语法描述:typedefstruct{unsignedcharpkitype[8]:unsignedcharpkicont[128]:)PKIBody:3.1.4数据库设计在本校园“一卡通”系统中,数据库架构在CA服务器端,采用SQLServer2000数据库管理系统。数据库具体设计如下:一、需求设计:需求分析是整个数据库设计过程的基础,要求准确地了解与分析用户需求,包括数据与处理。根据系统分析,把本校园“一卡通"系统的PKI所涉及到的数据列下:1、证书信息:包括证书本身信息、证书用户信息和证书签发者信息等2、证书撤销列表信息:包括证书本身信息、证书用户信息、证书签发者信息、证书撤销时间和原因等。3、管理员信息:包括角色、密码等。 二、概念结构设计:概念结构设计是整个数据库设计的关键,通过对用户需求进行综合、归纳与抽象形成一个独立于具体DBMS的概念模型。根据上述需求分析,本校园“一卡通”系统的PKI相关E—R图设计如下:l、证书E—R图:(如图3—3)图3--3证书E—R图2、证书撤销列表E—R图:(如图3—4)图3—4证书撤销列表E--R图3、管理员E—R图:(如图3—5)图3--5管理员E--R图三、逻辑设计:逻辑设计将概念结构模型转换为某个DBMS所支持的数据模型并优化。根据上述概念模型,设计本校园“一卡通"系统中PKI的数据库的表结构:1、证书表Cert:(如表3—1) 表3—1证书表结构字段名数据类型长度解释备注certnoChar8证书序号(卡序列号)主键certmgeChar8证书使用范围非空certalgmidfrChar8证书签名算法标识非空1SUrnOChar8证书签名主体标识非空timeaftrDatatime8证书生效时间非空timebefrDatatime8证书失效时间非空sbjtnoChar8证书用户标识非空sbjtalgmidfrChar8证书用户公钥算法标识非空sbjtmdlsChar128证书用户公钥算法模数非空sbjtexptChar128证书用户公钥算法指数非空signvaleChar128证书签名值非空2、证书撤销列表CRL:(如表3—2)表3—2证书撤销列表结构字段名数据类型长度解释备注certnoChar8证书序号(卡序列号)主键eertmgeChar8证书使用范围非空certalgmidfrChar8证书签名算法标识非空lSUmOChar8证书签名主体标识非空timeaftrDatatime8证书生效时间非空timebefrDatatime8证书失效时间非空sbjtnoChar8证书用户标识非空sbjtalgmidfrChar8证书用户公钥算法标识非空sbjtmdlsChar128证书用户公钥算法模数jE奉1广上sbjtexptChar128证书用户公钥算法指数非空signvaleChar128证书签名值非空cncltimeDatatime8证书撤销时间非空cnclresnChar16证书撤销原因非空 3、管理员表User:(如表3—3)表3—3管理员表结构字段名数据类型长度解释备注partChar10管理员角色非空pwdVarchar10管理员密码非空四、物理设计:物理设计为逻辑数据模型选取一个最适合应用环境的物理结构,包括存储结构和存取方法。在本校园“一卡通”系统的PKI采用SQLServer2000数据库管理系统。SQLServer2000是在SQLServer7.0的基础上扩展升级的产品,它继承了数据库软件设计和引擎方面的优势,提供以WEB标准为基础的扩展数据库编程功能,充分支持XML和HTrP,并且具有更高的稳定性和可靠性,已经成为新一代网络应用程序的最佳数据库和分析解决方案之一。本系统基于SQLServer2000的具体数据库设计结果如图3-6所示:图3—6本系统中基于SQLServer2000的数据库设计 3.2详细设计3.2.1CA服务器端设计CA服务器是本校园“一卡通”系统的整个PKI的核心,完成登录退出、证书本地管理、证书网络服务和角色管理等功能,为校园“一卡通”系统信息安全提供有效的、可靠的保护机制,提供网上身份认证服务,提供信息保密性、数据完整性以及收发双方的不可否认性服务。CA服务器端程序具体流程设计如图3—7所示。图3--7CA服务器端程序流程设计一、角色登录退出:角色登录退出是CA服务器端程序的基本功能,负责在用户登录时验证用户身份和在用户退出时注销用户身份。用户身份分为证书管理员和超级管理员,分38 别具有不同的权限。证书管理员只有证书本地管理和证书网络服务的权限;而超级管理员除了具有上述权限外,还具有角色管理的权限。二、证书本地管理:证书本地管理是CA服务器端程序的核心功能,负责证书本地一系列操作,如证书签发、证书验证、证书撤销、证书更新、证书延期、证书查询。l、证书签发:证书签发根据签发对象不同,分为CA证书签发和用户证书签发。1)CA证书签发本系统中,CA证书签发在CA初始化时完成,其流程设计如图3—8所示。(,歼始1、\/1lr}≯牛cA密钥对l卜牛成cA证书lI-gt.CticA证书到证书库Il返同CA证书签发成功lr结柬、)\/图3—8CA证书签发流程2)用户证书签发本系统中,用户证书签发采用用户持有效证件到CA中心申请,经审批后由CA中心离线(即将证书存放于IC卡上)发放给用户的方式。其具体流程设计如图3—9所示。39 r一开始’‘:、\:/◆输入川户相关信息◆产常用户密钥对◆牛成JlJ,_证书◆查询读卡器寻卡l、\、——/≥l是返回寻卡失败◆下载J{l户证书到IC卡厂结束-N\/l发粕刚户证书到证书库I返删J“户证书签发成功◆结束]\.“./图3--9用户证书签发流程2、证书验证:本系统中,CA中心对用户证书的有效性和真实性进行认证。具体流程设计如图3—10所示。 图3—10证书验证流程3、证书撤销:在证书有效期内,由于密钥泄漏或其他原因,CA中心根据用户请求或自身需要撤销证书。具体流程设计如图3--11所示。 4、证书延期:f开始‘“.]\o一/lI获得安撤销证书序列号lIl施撤销证书发稚到cRLJI返问用户证书撤销成功1lr(厂.结束]\L/图3—11证书撤销流程当用户证书过期时,通过证书延期,继续使用证书。其流程如图3—12所示。f开始j1\/◆验证J|j户证书、\,——/’1是返同验证证移失败◆获街证书新的有效期◆L酾术,/12证书延期流程 5、证书更新:在证书有效期内,当证书用户的私钥泄漏时,通过证书更新,继续使用证书。其流程如图3—13所示。(,开始、)\/◆验证J{J户证书■—、\,.——/l●是返回验证证书失败◆产生新的JlJ户密钥埘◆1lr\绷爪×器寻卡.——/。l失败证书内容和密钥┃f束。、证书摩巾诞书内容┃}J户证书更新成功┃3证书更新流程6、查询:用于CA中心实时查询证书的状态和信息,其流程如图3—14所示。43 图3一14证书查询流程三、证书网络服务:CA服务器的证书网络服务可以通过两种方式实现,一种是单一进程方式,一种是多线程方式。单一进程方式的缺点是独占CPU资源,且在处理完一件事务前不会接受来自其他用户的请求。在设计一个需要接受并处理大量用户请求的CA服务器时显然是不可取的。所以,本系统采用多线程处理方式。多线程具有很多优点:首先,创建线程的代价远低于进程,创建线程使用相对较少的CPU时间;其次缩短CA服务器端的响应时间,使CA服务器可以处理大量事务;再次,改善CA服务器端程序结构,CA服务器端程序从单一巨大的线程改变成一些独立执行部分,从而得到更有效的运行;最后线程占用较少的系统资源。为了创建多线程系统需要维护大量的状态表项,因此在时间上和控件上的系统开销都 比多线程更昂贵,而且进程固有的独立性使程序员花费很多精力来实现进程间的通信和同步,而同一进程内部的线程间通信则很简单。CA服务器根据嵌入式网络读卡端的请求,提供相应的证书网络服务,包括证书下载、证书撤销列表查询等,具体流程如图3—15所示。_主I线l程I返I豳:.图3--15证书网络服务流程四、角色管理:鉴于CA服务器的重要性,CA服务器必须置于安全的环境中。CA服务器提供角色管理的功能,实现对角色(超级管理员和证书管理员)密码的有效管理。45 3.2.2嵌入式网络读卡端设计嵌入式网络读卡端,遍布校园的各个角落,是校园“一卡通系统"的PKI中的客户端。它面向广大校园网用户,提供证书验证、证书下载请求和证书撤销列表查询请求等功能。具体流程设计如图3一16所示。图3一16嵌入式网络读卡端流程3.3小结本章详细阐述了基于校园“一卡通"的PKI系统的设计思想。文章首先从体系架构设计、校园数字证书设计、网络通信协议设计和数据库设计四个方面阐述了系统的总体设计;然后根据体系架构划分,阐述了CA服务器端和嵌入式网络读卡端的具体设计。 第四章基于校园“一卡通’’系统的PKI关键部分的实现4.1CA服务器端4.1.1硬件平台及开发环境CA服务器基于IntelX86体系结构的CPU,采用Windows2000Server操作系统,使用SQLServer2000数据库管理系统。CA服务器端程序开发过程中,使用VisualC++6.0集成开发环境进行软件编程、编译和调试。4.1.2读卡器模块本系统中使用的读卡器是深圳德卡智能卡设备有限公司的RD800M外置式联机非接触式IC卡读写器,如图4—1所示。图4一lRD800M外置式联机非接触式IC卡读写器RD800M外置式联机非接触式IC卡读写器读写射频卡,由主机、天线、串行接口等组成,带LED显示,通过RS232串行接口或RS485接口能实现同PC机及相关设备的连接,随机支持SAM卡操作,可实现安全发卡及满足大多数安全领域的需要,支持IS014443TYPEA/B标准的智能卡。RD800M外置式联机非接触式IC卡读写器自带交/直流稳压电源,通常置于PC外部,通过串口与PC连接,并面向PC提供丰富完善的接口函数,可以借助PC等进行二次开发。在本系统开发过程中,使用厂商提供的Windows32下的读写器驱动函数库进行二次开发,其主要函数如下:1、初始化串口的函数:HANDLEde——init(intport,longbaud); 参数:port-通讯口号,port--O,1,2,3baud:波特率,9600到115200返回:成功返回设备描述符2、关闭串口的函数:....——intl6dc—.exh(HANDLEicdev);参数:icdev:dc—init返回的设备描述符返回:成功返回03、寻卡函数:.....—intl6dc——card(HANDLEicdev,unsignedchar_Mode,unsignedlong}一Snr);参数:icdev:dc—init返回的设备描述符一Mode:设置卡的模式可以是IDLE或ALL一8111":存放找到的卡的序列号的地址返回:成功返回04、校验扇区密码函数;....——intl6dc——authentication(HANDLEicdev,unsignedcharMode,unsignedchar—SecNr);参数:icdev:de—hilt返回的设备描述符一Mode:决定验证密码的方法一Mode=0:用KEYSET0和KEYA验证。一Mode=l:用KEYSETl和KEYA验证一Mode=2:用KEYSET2和KEYA验证一Mode=4:用KEYSET0和KEYB验证一Mode=5:用KEYSETl和KEYB验证一Mode=6:用KEYSET2和KEYB验证一Snr:存放找到的卡的序列号的地址返回:成功返回05、读块函数:....—.intl6de——read(HANDLEicdev,unsignedchar』dr,unsignedchar·_Data);4R 参数:icdev:de—init返回的设备描述符一Adr:所读数据的地址_Adr---(0—63)Data:指向存放被读数据的地址返回:成功返回06、十六进制读块函数:....—.intl6de——read—.hex(HANDLEicde%unsignedchar』dnunsignedchar·_Data);参数:icdev:dc—init返回的设备描述符jdr:所读数据的地址_idr=(0-63)Data:指向存放被读数据的地址返回:成功返回07、写块函数:......intl6de——write(HANDLEicdev,unsignedchar_idr,unsignedchar木j)ata);参数:icdev:de.init返回的设各描述符-Adr:所写数据的地_Adr---(-63)Data:指向存放要写数据的地址块返回:成功返回08、十六进制写块函数:..——intl6dc..write(HANDLEicde%.+一一unsignedchar』dnunsignedchar掌_Data);参数:icdev:deinit返回的设备描述符_A出:所写数据的地址_Adr=(1—63)一Data:指向存放要写数据的地址块返回:成功返回0在开发本系统读卡器模块时,隐式调用厂商提供的Windows32下的动态链接库中的相关读卡器驱动函数,实现对读卡器的控制操作。读卡器校验、读写卡的基本过程如图4—2所示:49 F开始]\‘’/●dc._initO●,:kcardOldc_authenticationO工dcrcadO/dc_rcadhexOI(缩柬?C开始:‘)◆卜dc._init0◆。dc_card0Idc._authemication0ldcwriteO|dc_writehex0‘(结束3图4—2本系统中读写器校验读写IC卡的基本过程4.1.3密码算法模块密码算法是整个PKI体系的基础,在本系统的CA服务器端程序中主要涉及RSA算法和MD5算法的实现。一、RSA算法的实现:根据第二章第一节有关RSA算法的分析,RSA算法依赖大数运算,本系统使用的RSA算法建立1024位的大数运算上。而大多数的编译器只能支持到“位的整数运算,即我们在运算中所使用的整数必须小于等于64位,即Ox箭咖嘟旺珩m也就是18446744073709551615,这远远达不到RSA算法的需要。因此,需要专门建立大数类来解决这一问题。最简单的办法是将大数当作数组进行处理,也就是将大数用O一9这十个数字组成的数组进行表示,然后模拟人们手工进行“竖式计算”的过程编写其加减乘除函数。但是这样做效率很低,因为二进制为1024位的大数其十进制也有三百多位,对于任何一种运算,都需要在两个有数百个元素的数组空间上做多重循环,还需要许多额外的空间存放计算的进退位标志及中间结果。另外,对于某些特殊的运算而言,采用二进制会使计算过程大大简化,这种大数表示方法转化成二进制显然非常麻烦,所以在某些实例中则干脆采用了二进制数组的方法来记录大数,这样效率就更低了。一个有效的改进方法是将大数表示为一个n进制数组,对于目前的32位系统而言i1可以取值为2的32次方,即0x10000000,假如将一个二进制为1024位的大数转化成0x10000000进制,它就变成了32位,而每一位的取值范围就不 是二进制的0—1或十进制的0—9,而是0--0xtttttt3ff,我们正好可以用一个无符号长整数来表示这一数值。所以1024位的大数就是一个有32个元素的unsignedlong数组,针对unsignedlong数组进行各种运算所需的循环规模至多32次而已。而且Oxl00000000进制与二进制,对于计算机来说,几乎是一回事,转换非常容易。例如大数18446744073709551615,等于脚笳掰m就相当于十进制的99:有两位,每位都是删。而18446744073709551616等于000000010000000000000000,就相当于十进制的100..有三位,第一位是l,其它两位是0,如此等等。在实际应用中,“数字”数组的排列顺序采用低位在前高位在后的方式,这样,大数A就可以方便地用数学表达式来表示其值:A=Sum[i=0ton](A[i]*Oxl00000000拳幸i)(其中Sum表示求和,A嘲表示用以记录A的数组的第i个元素,¨表示乘方)。任何整数运算最终都能分解成数字与数字之间的运算,在0x100000000进制下其“数字”最大达到0xtttttt丑f,其数字与数字之间的运算,结果也必然超出了目前32系统的字长。在Visualc++中,存在一个jnt64类型可以处理64位的整数,所以不用担心这一问题,而在其它编译系统中如果不存在64位整形,就需要采用更小的进制方式来存储大数,例如WORD类型(16位)可以用来表示Oxl0000进制,但效率更高的办法还是采用32位的DWORD类型,只不过将Oxl00000000进制改成0x40000000进制,这样两个数字进行四则运算的最大结果为ox3脚事0x3妇瞬时,小于0xmm瓦只是不能简单地用高位低位来将运算结果拆分成两个“数字"。综上所述,大数类CBigInt的具体设计如下:classCBigInt.{public://成员变量unsignedmnLength;//大数在0x100000000进制下的长度unsignedlongm_ulValue[BI_MAXLEN];∥用数组记录大数在0x100000000进制下每一位的值 //成员函数产构造函数和析构函数幸/CBigInt0;-42BigInt0;产大数基本操作与运算Mov:赋值,可赋值为大数或普通整数Cmp:比较Add:加,求大数与大数或大数与普通整数的和Sub,减,求大数与大数或大数与普通整数的差Muh乘,求大数与大数或大数与普通整数的积Div:除,求大数与大数或大数与普通整数的商Mod:模,求大数与大数或大数与普通整数的模★|voidMov(unsignedint64A);voidMov(CBigInt&A);intCmp(CBiglm&A);CBigIntAdd(CBigInt&A);CBigIntAdd(unsignedlongA);CBigIntSub(CBigInt&A);CBigIntSub(unsignedlongA);CBigIntMul(CBigInt&A);CBigIntMul(unsignedlongA);CBigIntDiv(CBigInt&A);CBigIntDiv(unsignedlongA);CBigIntMod(CBigInt&A);unsignedlongMod(unsignedlongA);产大数的输入输出Get:从字符串按10进制或16进制格式输入到大数Put:将大数按10进制或16进制格式输出到字符串●/52 voidGet(CString&str,unsignedintsystem=HEX);Put(CSUing&str,unsignedintsystem=HEX);/*RSA相关运算Rab:拉宾米勒算法进行素数测试Eue:欧几里德算法求解同余方程RsaTrans:反复平方算法进行幂模运算GetPrime:产生指定长度的随机大素数I|intRab0;CBigIntEue(CBigInt&A);.CBigIntRsaTrans(CBigInt&凡CBigInt&B);GetPrime(intbits););二、MD5算法的实现:根据第二章第二节有关MD5算法的分析,设计类CMD5如下:classCMd5{public:CMd50;virtual-,-CMd50;char幸MDString(char宰);CStl"ingMDFile(CStringfilename);char}hmae_md5(char木text,char木key);private:MD5Init(MDS_CTX幸context);MD5Update(MD5_CTX·context,unsignedchar}input,unsignedhatinputLen);MD5Final(unsignedchardigest[16],MD5一CTX毒comexO;MD5Transform(UINT4【4】,unsignedchar【641);53 voidEncode(unsignedchar幸,UINT4·,unsignedin0;Decode(UrNT4+,unsignedchar·,unsignedint);MD5_memcpy(POINTER,POINTER,unsignedint);MD5_memset(POINTER,int,unsignedint););4.1.4网络通信模块在CA服务器端网络通信模块的开发过程中,根据第三章第一节第--d,节中所设计的网络通信协议,将序列化技术和Socket技术相结合,实现CA服务器与嵌入式网络读卡端间的网络通信。一、序列化技术:序列化,是VisualC++中最重要的功能之一,简单地说就是向一个持久性的存储媒体(如磁盘文件)保存对象或读取对象的过程。这种机制通过更高层次的接口功能向程序员提供了更利于使用和透明于字节流的文件操纵方法。在VisualC++中,这一功能由MFC的CObject类的成员函数Serialize()提供。MFC使用CArchive归档对象充当磁盘文件与程序中的对象的中介。CArchive归档对象总是与一个CFile对象相关联,从中获得进行序列化所需要的信息,如说文件名以及存取标志等。通过使用经过重载的流入和流出操作符可以直接向CArchive归档对象中保存或者取出成员变量的值,而将这些数据保存到磁盘文件中的工作由CArchive对象指示CFile对象来完成。与一般磁盘文件读写相比,序列化具有以下主要特点:1、序列化中系统底层完成一般磁盘文件读写中程序员应完成的创建访问文件的文件指针或类对象、打开或关闭文件等工作。程序员只需在相应地方以某种格式添上需要读写的内容。2、序列化在进行写盘操作时,将程序的数据,通常是文档类或其他类的成员变量值,按一定顺序,以流的形式写入磁盘文件。在进行读盘操作时,以同样顺序取出这些值,赋给相应的成员变量。写与读的变量必须依顺序一一对应,并遵循先进先出的原则。 二、Socket技术:Socket是建立在传输层协议(主要是TCP和UDP)上的一种套接字规范,最初由美国加州Bcrkley大学提出,为UNIX操作系统开发的网络通信接口。它定义了两台计算机间的通信规范(也是一种编程规范)。如果两台计算机是利用一个“通道”进行通信,那么这个“通道’’的两端就是套接字。Socket屏蔽了底层通信软件和具体操作系统的差异,使得任何两台安装了TCP协议软件和实现了Socket规范的计算机之间的通信成为可能。Socket接口是TCP/IP网络最为通用的API,也是在Interact上进行应用开发最通用的API。WindowsSocket主要有两类:数据报套接字(SOCKDGRJ~M)和流套接字(SOCKSTREAM)。数据报套接字采用用户数据报协议UDP(UserDatagramProtoc01),它是建立在IP协议上的,提供无连接、不可靠、有序、无重复的数据报传输。流套接字采用传输控制协议TCP/IP(TransferControlProtoc01)。TCP提供面向连接的流传输,它在进行数据传输前,首先在通信双方之间建立一个连接,传输中的每一个报文都需要接收端确认,可以保证数据传输的可靠性。流套接字提供双向、有序、无重复并且无记录边界的数据流服务。WindowsSocket实现W'mdows网络程序设计的关键是它提供了对网络事件的基于消息的异步存取。当网络事件发生时,应用程序相应的窗口函数将收到一个消息。在这种异步通信状态下,服务端和客户端主控程序在等待信息时可以完成其他工作,具有广阔的应用前景。本系统中,CA服务器和嵌入式网络读卡端的网络通信采用基于流套接字的异步Socket通信方式采用客户机朋艮务器的模式,具体流程如下:CA服务器端,首先创建一个套接字,接着将新建套接字和cA服务器的IP地址、协议端口绑定起来,然后监听嵌入式网络读卡端的连接请求,一旦嵌入式网络读卡端有连接请求到达,接受请求并新建另一个套接字来处理与该嵌入式网络读卡端的通信。并在通信完毕后,关闭该通信套接字。同时原来负责监听的套接字仍然进行监听,如果有其他嵌入式网络读卡端的连接请求到达,则再建一个新的套接字;嵌入式网络读卡端,首先新建一个套接字,然后向CA服务器端发出连接请求,在CA服务器接受请求,建立连接后,即可通信。通信结束后,关闭套接字。 三、Socket编程技术和序列化技术的结合本系统中,将序列化技术应用于校园“一卡通"系统的P日的网络通信,具体实现方式是:利用MFC的CSockct类、CSocketFile类和CArchive类,分别创建其类对象,建立三者之间的关联,如图4—3所示。利用Archive在CA服务器端和嵌入式网络读卡端之间建立消息类CMsgMgr的成员变量与成员变量的一一对应关系,并实现变量值的直接传送。图4—3本系统中CA服务器端网络通信的实现方式在本系统中,实现可序列化网络消息类CMsgMgr,关键步骤如下:1、从CObjeet类派生用户类CMsgMgr;2、在CMsgMgr类声明中使用DECLARESERIAL宏;3、重载CMsgMgr类的Serialize函数;4、提供一个CMsgMgr类缺省的构造函数;5、在CMsgMgr类实现文件中使用宏IMPLEMENTSERIAL宏;本系统中CA服务器程序的具体套接字类的关键部分如下:l、监听套接字类CListenSocketclassCListenSocket:publicCSocket;2、服务套接字类CServieeSoeketclassCServiceSocket:publicCSocket{public:CServerDlg幸m_pDlg;CMsgMgr木m__pMsgMgr;CSocketFile·m_pFile;CArchive·m__pGetReq;CArchive·m__pSendAek;public:CServiceSocket(CServerDlg搴pDlg);virtual-CServiceSocket0;public:voidInitO;virtualvoidOnReceive(intrtErrorCode););综上所述,在CA服务器和嵌入式网络读卡端之间以序列化方式进行通信,使得网络通信方面的低层代码由系统完成,应用程序员不需要处理诸如字符串的编码转换、字符串流的分解等问题,从而简化了CA服务器端网络通信模块的开发过程。4.1.5数据库访问模块数据库访问技术将数据库外部与其通信的过程抽象化,通过提供访问接口,简化了客户端访问数据库的过程。目前Windows系统上常见的数据库访问接1:357 包括:ODBC(开放数据库互连)、MFC(Microsoft基础类)ODBC类、DAO(数据访问对象)、RDO(远程数据对象)、OLEDB(对象链接嵌入数据库)和ADO(ActiveX数据对象)。ODBC是80年代末90年代初出现的技术,它为编写关系数据库的客户软件提供了统一的接口,现在已经被广泛应用,并逐渐成为关系数据库接口的标准。ODBC只提供单一的API,可用于处理不同数据库的客户应用程序。使用ODBCAPI的应用程序可以与任何具有ODBC驱动程序的关系数据库进行通信。ODBCAPI是比较低层的数据库接口,它在相对较低的层次上使客户应用程序可以配置并操作数据库。MFCODBC类对ODBC进行了封装,以简化ODBCAPI的调用,这些MFCODBC类使ODBC编程的复杂型大大降低。虽然MFCODBC类在使用上比ODBCAPI容易,但是损失了ODBCAPI对低层的灵活控制。因此,MFCODBC类属于高级数据库接口。DAO(DataAccessObject),是一组MicrosoftAccess/Jet数据库引擎的COM自动化接口。DAO直接与Access/Jet数据库通信,通过Jet数据库引擎,DAO也可以同其它数据库进行通信。DAO属于高层数据库接口,它提供了一种非常有用的数据库编程的对象模型,但它对非Access数据库的访问都必须经过Access/Jet数据库引擎,这对于使用数据库服务器的应用程序来说,无疑是一个严重的瓶颈。RDO(RemoteDataObject),最初是作为ODBCAPI的抽象,为VisualBasic程序员提供的编程对象,因此RDO与VisualBasic密切相关。由于RDO直接使用ODBCAPI对远程数据源进行操作,而不像DAO要经过Jet引擎,所以,RDO可以为使用关系数据库服务器的应用程序提供很好的性能。OLEDB属于低层数据库编程接口,它对ODBC进行了两个方面的扩展:一是提供了一个数据库编程的OLE接口,即COM;二是提供了一个可用于关系型和非关系型数据源的接口。利用OLEDB进行软件开发应该包括两类软件:OLEDB客户程序(Consumer)和OLEDB供应程序(Provider)。OLEDB客户程序是使用OLEDB接口的应用程序,例如,采用C++编写的使用OLEDB连接数据库服务器的所有应用程序都是OLEDB客户程序。OLEDB供应程序是实 现OLEDB接口并实际与数据库服务器通信的DLL,在功能上,OLEDB同ODBC驱动程序相同,不过OLEDB实现的是COM接口,而不是API接口。ADO(ActiveXDataObject),它建立在OLEDB之上。ADO实际上是一个OLEDB供应程序,使用ADO的应用程序要间接地使用OLEDB。ADO提供了一种数据库编程对象模型,类似于DAO的对象模型,但比DAO有更高灵活性。?ADO简化了OLEDB,属于高层的数据库接口。另外,同OLEDB相比,能够使用ADO的编程语言更多。ADO提供一个自动化接口,使VBSeript和JavaScript等脚本语言可以使用ADO。ADO对象模型如图4—4所示。。匦圆(夏叵]堙覆圈区圈图4—4ADO对象模型通过上述分析和对系统环境的研究,本系统使用ADO数据库访问技术实现对后台SQLSewer2000数据库的操作。本系统数据库访问模块主要包括两部分:数据库连接子模块和数据库操作子模块。数据库连接子模块负责CA服务器应用程序与数据库的连接;数据库操作子模块负责CA服务器应用程序对数据库中表的操作。一、数据库连接子模块:本系统中,CA服务器应用程序与数据库的连接由数据库连接类ADOConn实现。数据库连接类ADOConn具体设计如下:classADOConll{59一一碴碴砖 //成员变量public:_ConnectionPtrm_pConneetion;—№cordsetPtrm__pRecordset;∥成员函数public:ADOConn0;virtual—ADOConn0;voidInitADOConn0;//初始化数据库连接voidCloseADOConn0;//关闭数据库连接j之ecordsetPtr&GetRecordSet(__bstr_tbstrSQL);//执行查询,返回记录集BOOLExecuteSQL(__bstr_tbstrSQL);//执行增/删/改,返回结果};二、数据库操作子模块:本系统中,CA服务器应用程序与数据库中具体表的操作由数据库具体表的操作类CCert、CCRL和CUser实现。类CCert、CCertCancel和CUser分别对应SQLServer2000数据库中证书表Cert、证书撤销列表CRL和管理员表User。l、类CCert:证书表Cert,存储证书的相关信息,其所对应的操作类CCea设计如下:classCCert{private:CStringcertno;//证书序号CStringcertrnge://证书使用范围CStringcertalgmidfr://证书签名算法标识CStringisurno;//证书签名主体标识CStringtimeaftr;//证书生效时间CStringtimebefr://证书失效时间 CStringsbjtno;//证书用户标识sbjtalgmidfr;//证书用户公钥算法标识sbjtmdls;//证书用户公钥算法模数sbjtexpt;//证书用户公钥算法指数signvale;//证书签名public://成员函数CCertO;viItl】al~CCcnO;产类成员变量设置函数母/voidSetcefmo(Cstringccertno);voidSetcertmge(CStringccertmge);voidSetcertalgrnidfr(CStringccertalgmidfr);voidSetisurno(CStringcisumo);voidSettimeaftr(CStringctimeaftr);voidSettimebefr(CStringctimebefr);voidSetsbjtno(CStringcsbjtno);voidSetsbjtalgmidfr(CStringcsbjtalgrnidfr);voidSetexptmdlsexpt0;voidSemignvaleO;严类成员变量获取函数木/voidGeteermo(Cstringccertno);voidGetcertmge(CStringcccrtrnge);voidGetcertalgmidfr(CStringccertalgmidff);voidGetisurno(CStringcisurno);voidGettimeaftr(CStringetimeafir);voidGettimebefr(CStringctimebefr);voidGetsbjtno(CStringcsbjmo);voidGetsbjtalgrnidfr(CStringcsbjtalgrnidfr);voidGetexptmdlsexpt(CStringsbjtmdls,CStfingsbjtexpt);6l voidGetsignvale(signvale);严表操作函数·/intInsertCertO;intHavingInCert(CStringstrcertno););2、类CCRL:证书撤销列表CRL,存储己被撤销的证书的相关信息,其所对应的操作类CCRL设计如下:classCCRL{private://成员变量CStringcertno;77证书寿号CStringcertrnge;//证书使用范围CStringcertalgmidfr;//证书签名算法标识CStringisurno;//证书签名主体标识CStringtimeaftr;//证书生效时间CStringtimebefr;//证书失效时间CStringsbjtno;//证书用户标识CStringsbjtalgmidfr;//证书用户公钥算法标识CStringsbjtmdls://证书用户公钥算法模数CStringsbjtexpt://证书用户公钥算法指数CStringsignvale;//证书签名’CStringcrltime;//证书撤销时间CStringcrlreason;//证书撤销原因public://成员函数CCRLO;virtual—。CCRLO; 严类成员变量设置函数枣/voidSetcertno(Cstringecertno);voidSetcertmge(CStringccertmge);voidSetcertalgmidfr(CStringccertalgmidfr);voidSetisumo(CStringcisumo);voidSettimeaRr(CStringctimeaftr);voidSettirnebefr(CStringctimebefr);voidSetsbjmo(CStringcsbjmo);voidSetsbjtalgmidfr(CStringcsbjtalgmidfr);voidSetexptmdlsexpt0;voidSetsignvale0;voidSetcrltime(CStringccrltime);voidSetcrlreason(CStringccrlreason);产类成员变量获取函数木/voidGetcertno(Cstringccertno);voidGetcertmge(CStringccertrnge);voidGetcertalgmidfr(CStringccertalgmidfr);voidGetisurno(CStringcisumo);voidGettimeaRr(CStringctimeaftr);voidOettimebefr(CStringctimebefr);voidOetsbjmo(CStringcsbjtno);voidGetsbjtalgmidfr(CStringcsbjtalgrnidfr);voidGetexptmdlsexpt(CStringsbjtmdls,CStringsbjtexpt);voidGetsignvale(signvale);voidGetcrltime(CStringccrltime);voidOetcrlreason(CStringccrlreason);产表操作函数事/intInsertCRLO;hatHavinglnCRL(CStringstrcertno); 3、类CUser:管理员表User,存储CA服务器管理员的相关信息,其所对应的操作类CUscr设计如下:classCUscr{private:,//成员变量CStringPwd;intUsertype;public://成员函数CUserO;virtual--CUser0;产类成员变量设置函数幸/voidSetUser_type(intiUsertype);voidSetPwd(CStringcPwd);产类成员变量获取函数}/CStringGetPwd0;intGetUser_type0;产表操作函数幸/voidUpdatePwd(inteUserType);voidGetData(inteUserType););4.1.6用户界面CA服务器应用程序界面如图4—5所示。 图4—5CA服务器应用程序界面4.2嵌入式网络读卡端4.2.1硬件平台及开发环境一、硬件平台:在本系统中,嵌入式网络读卡端由基于uClinux的EV4510嵌入式网络平台和非接触式IC卡读写器组成。EV4510:是MICETEK公司推出的基于SAMSUNG$3C4510处理器具有网络功能的开发板,如图4—6,4—7所示。图4—6EV4510实物图 几西砜l£pRoME。冒=万'?7_'—曩强厂i鬲■]lIControls删镕。日霄%?a口々口g巧确广百丽-飞l纛篇纛:鬓图4--7EV4510原理图EV4510是MICETEK公司的基于Ethemet系统针对SAMSUNG$3C451016/32位RSIC处理器的开发板。EV4510支持位/字节/半字/字格式的BootROM,72管脚、SIMM模块、双bank和EDODRAM支持的DRAM,两个4Mbit、双bank的SDRAM。EV4510具有以下标准接口:两个串口,其中一个用于控制台:两通道串行通信接口;10/100Mbps以太网接口;外部I/O:状态LCD驱动器:通用I/O:控制转接口和状态显示LED;20管脚JTAG接口等。S3C4510[49]’f50】是基于以太网应用系统的高性价比16/32位RISC微控制器,结构框图如图4—8所示,包括16/32位RISC(ARM7Ⅱ)MI)CPU核,8kB统,一的Caehe/SRAM,IzC总线控制器,带有双通道缓冲DMA的以太网控制器,2个带有4通道缓冲DMA的HDLC,2通道GDMA,2个UART,两个32位定时器,18个可编程的I/O端口,中断控制器,一个系统管理器。它还支持应用程序系统测试的JTAG接口。翟照匮圜照图圈 二、开发环境:图4—8$3C4510结构框图本系统中,嵌入式网络读卡端的开发环境由PC、EV4510、JTEG仿真器、非接触式IC卡读写器和HUB等组成,如图4—9所示。在宿主机PC端,通过并行口与JETG仿真器的一端相连,仿真器的另一端与目标板EV4510相连,这样便可以从宿主机下载程序到目标板进行调试。在目标板EV4510端,串口O通过串口连接线与PC的串口1相连,作为目标板的操作系统的默认输出;串口1通过串口连接线与非接触式IC卡读写器相连,控制非接触式IC卡读写器的操作。另外,宿主机PC端和目标板EV4510分别通过t0/100M网线与集线器相连,这样也可以通过网络将宿主机上的程序下载到目标板上。67 10/10011EthernetCable图4—9嵌入式网络读卡端的开发环境4.2.2操作系统移植目前,流行的嵌入式操作系统【51】主要有VxWorks、WinCE、uC/OS、uClinux等。VxWorks是WindRiver公司的产品,是目前嵌入式领域中使用最广泛、市场占有率最高的嵌入式实时操作系统。它采用基于微内核的结构,由400多个相对独立的目标模块组成,用户可以根据需要增删模块来裁剪配置系统。它支持X86、SunSpare、MotorolaMC68xxx、ARM和POWERPC等多种体系架构的处理器,以其良好的可靠性和卓越的实时性被广泛地应用于数据网络(以太网交换机、路由器等)、航空航天、军事通信等高精尖技术及实时性要求极高的领域中。WinCE是微软公司推出的嵌入式实时操作系统,但它不是削减的Windows版本,而是从整体上为有限资源的平台设计的多任务、多优先级的操作系统。它采用模块化设计,允许对于从掌上电脑到专用的工业控制器的用户电子设备进行定制。WinCE的基本内核需要至少200KB,但它的最大缺点是实时性不好,是软实时操作系统,只能用于对实时性要求不高的场合。uC/OS是一个可裁剪、源码开放、抢先式的实时嵌入式操作系统,主要面向 中小型嵌入式系统,具有占用空间小、执行效率高、可移植性强、实时性能优良和扩展性好等特点。它提供了实时系统所需的基本功能,如任务调度、任务管理、任务间通信与同步、内存管理等,但没有提供输入/输出管理、文件系统、网络等服务。uC/OS的核心代码只有8.3103,经裁减后用户系统中的实际代码最少只有2.7KB。由于uc/0S的可移植性和开源性,用户可以自己添加所需的各种服务。目前,已经出现专门为uC/OS开发的文件系统、TCP/IP协议栈和用户显示接口的第三方厂商。uClinux是专门用于微控制领域的嵌入式Linux操作系统。同标准Linux相比,它最大的特征是没有MMU(内存管理单元),被广泛使用在ARM、ColdFire、MIPS等没有MMU的微处理器上。uClinux的内核小于512KB,操作系统所有代码小于900KB。uClinux不仅具有完整TCP/IP协议栈,而且对其他许多网络协议也提供支持。同时,uClinux支持多种文件系统,包括NFS、EXT2、FATl6/32等。综上所述,uClinux是一个优秀的嵌入式网络操作系统。根据本系统的应用分析,在EV4510上移植uClinux作为嵌入式网络读卡端的操作系统。一、移植前的准备工作之一:ARM开发工具准备通常嵌入式软件开发工具包括:编辑器、编译器、汇编器、链接器、调试器、工程管理及库函数等各种软件工具,很多厂商提供将这些工具综合在一起的集成开发环境(IDE)。常用的基于ARM的嵌入式软件开发工具有基于ARM的GNU开发工具、ADS/SDT开发工具等【521。二、移植前的准备工作之二:Bootloader的编写Bootloader是系统加电后,操作系统内核或用户应用程序运行前,必须运行的一段代码。它的功能类似与PC中的BIOS,一般地主要完成设置中断向量表、初始化存储系统、初始化堆栈、初始化硬件、初始化应用程序运行的环境等功能。Bootloader依赖于硬件和应用环境‘531,结合本系统中嵌入式网络读卡端使用的EV4510开发板,其Bootloader设计如图4一lO所示。 震新设置系统控制寄存器实现重映射初始化各模式堆栈其,㈨j户堆栈最后韧始化C庶J}J程廖存储逸7.C皮jlj程序入口否图4一10嵌入式网络读卡端的开发环境三、移植前的准备工作之三:Flash下载程序的编写Flash下载程序用来将编译完的uClinux内核下载到Flash中,是uClinux移植的前提。根据下载方式不同,Flash下载分为很多种t如JTEG下载、TFTP下载、USB下载、串口下载等。根据嵌入式网络读卡端的EV4510开发板实际情况,采用通用的JTEG下载方式。特别地,在Flash下载程序中结合Semihost机制,可以使在目标板上运行的代码调用宿主机上的I/O设备。这简化了Flash下载的过程,提高了Flash下载的效率。EV4510开发板Flash下载程序具体设计如图4一11所示。 图4—11EV4510开发板的Flash下载程序设计四、操作系统的移植:首先,下载uClinux—Samsung-20020318.tar.gz并解压。然后,进入解压目录键入makemenuconfig命令,配置uClinux编译选项刚】。接着,编译uClinux,主要分以下步骤::1、makedep:检查依赖性关系;2、makeclean:清除以前编译结果;3、makelib__only:编译系统库文件54、makeuser_only:编译用户程序;5、makerotors:将romfs目录下编译好的用户程序生成ROMFS文件系统;6、makeimage:生成romfs.0文件; 7、make:生成image.tom,image.ram和romfs.img;image.toni是包含bootloader的自解压的内核映像文件,上电后并解压缩后自动初始化开发板,下载到EV4510开发板的Flash中,复位开发板可直接运行;image.ram是包含有调试信息的缺少bootloader模块的映像文件,可以直接在ADW中下载到EV4510开发板的SDRAM调试运行。romfs.img将拼接在LINUX内核编译生成的二进制文件linux.bin文件的后面,两个文件合并后得到下载烧写文件image.bin。五、移植的后续工作:应用程序的添加和运行:在解压目录下,存放有所有的用户程序源代码,包括ping、tip等。下面以App程序为例分析如何添加用户自己的程序:1、在解压目录的user子目录下建立App子目录;2、在App子目录下编辑自己的应用程序源文件app.c.一3、在App子目录下编辑Makefile:EXEC2appOBJS=app.cAll:$(EXEC)$(E)(EC):$(OBJS)$(CC)$(LDFLAGS)-o$@$(OBJS)$(LDLIBS)romfs:$(ROMFSINST)bin/$(E)(EC)clean:rill-f$(EXEC)·.elf*.gdb簟.O4、修改解压目录的user子目录下的Makefile文件:添加diry+=App5、重新编译uClinux并下载到EV4510开发板上;6、复位EV4510开发板启动uClinux后,运行bm目录下新增的app程序 4.2.3读卡器模块一、uClinux下的串口通信:1、串口访问函数:同Linux一样,uClinux下的文件是抽象的。文件抽象提供了一个一致的、统一的接口用来和所有的设备和文件类型进行交互。这样,可以像用open、close、read和write函数操作普通文件一样去打开、关闭、读取和写入不同的串口终端设备。uClinux通过设备文件访问串口,串口Portl和Port2分别对应的设备文件为/dev/ttySO和/dev/ttyS1。2、串口属性设置:uClinux中定义了一个查询和操纵各种终端的标准接口,该接口被称为termios,所有的钍y操作都通过termios接口和相关的函数调用来实现【551。1)termios结构的定义:termios结构在系统头文件中定义,具体定义如下:structtermios{unsignedshortc_iflag://输入模式标志unsignedshorteoflag;//输出模式标志unsignedshortc_cflag;//控制模式标志。unsignedshortc_lflag;//本地模式标志unsignedcharc_line;//行规程unsignedcharC_CC[NCC];//特殊控制字符数组)2)termios结构的相关函数:inttcgetattr(intfd,stmcttermios+tp);hattesetattr(intfd,structtermios奉tp);基本函数包括tcgetattr和tcsetattr。通常通过tcgetattr来获取终端特性和属性值,接着按要求修改这些属性(即改变tcgetattr函数返回的一个termios型的数据结构的相应成员的值),最后再利用tcsetattr来设置终端新的特性和 属性值。3、串口操作方式:uClinux下应用程序对串口的操作有两种方式:标准输入方式和非标准输入方式。具体在termios结构的本地模式标志c_Iflag中设置,默认是规范输入方式。1)标准输入方式:发一个读请求,当一行已经输入后即返回。有很多情况可以造成返回,如①所要求的字节数已读到时返回,无需读一个完整的行;②当读到行定界符时,读返回,默认情况下行界定符为CR(回车符);⑨如果捕捉到信号而且读函数并不自动再启动,则读返回;2)非标准输入方式:输入的数据不被组合成一行,以特殊控制字符数组中的MIN和TIME确定返回Qc_cc[VTIME]:设定字节输入时间计时器,②ccc[vMIN】:设定满足读取功能的最低字节接收个数。二、本系统中嵌入式读卡端读卡器模块的开发本系统中使用的读卡器通过串口与基于uClinux的EV4510嵌入式网络平台相连,构成嵌入式网络读卡端。在硬件设备设施上,本系统中嵌入式网络读卡端使用的读卡器,与CA服务器端使用的读卡器相同,都是深圳德卡智能卡设备有限公司的RD800M外置式联机非接触式IC卡读写器。有关读卡器的具体分析见第四章第一节第二小节。在软件实现方式上,嵌入式网络读卡端读卡器模块,与CA服务器端读卡器模块,截然不同。在CA服务器端,读卡器厂商提供了面向PC支持多种语言的丰富完善的接口函数,CA服务器程序只须调用动态链接库中的相关函数即可实现二次开发。而在嵌入式网络读卡端,由于读卡器厂商没有提供面向嵌入式平台的读卡器函数,所以无法直接对读卡器进行操作。根据以上分析,综合uClinux下的串口通信技术,经过大量的实验和测试,设计了面向嵌入式的读卡器函数如下:1、打开串口函数:intOpenSerialPort(import);74 参数:port:通讯口号,port--O,1返回:成功返回设备描述符2、关闭串口函数:intCloseSerialPort(rotfd);参数:fd:OpenSerialPort返回的设备描述符返回:成功返回03、设置串口属性函数:voidSetupSerialPort(irafd,intspeed);参数:fd:OpenSeriaIPort返回的设备描述符speed:串121通信波特率返回:成功返回04、校验扇区密码函数:intCheckSector(intfd,imsector);参数:fd-OpenSerialPort返回的设备描述符sector:扇区号返回:成功返回05、读块函数:intReadBlock(intfd,intblock,unsignedchar}buffeO;参数:fd-OpenSerialPort返回的设备描述符block:块号buffer:指向存放被读数据的地址返回:成功返回06、写块函数:intWriteBloek(intfd,intblock,unsignedehar奉buffer);参数:fd:OpenSerialPort返回的设备描述符block:块号buffer.指向存放要写数据的地址块返回:成功返回0 4.2.4密码算法模块嵌入式网络读卡端在进行证书验证时,需要使用RSA和MD5等密码算法对证书信息进行运算。——、OpenSSk:OpenSSL是一个开放源码,实现SSL及其相关加密技术的软件包,建立在加拿大的ErieA.Young和TimJ.Hudson开发的SSLeay库的基础上,由世界上的志愿者组织共同开发的一个合作安全项目,其目标是开发一个健壮的、商业级的、完整的开放源代码的工具包,用强大的加密算法来实现和保证Socket层(SecureSocketsLayer,SSLv3)和传输层的安全性(TransportLayerSecurity,TLSv1)。OpenSSL提供了一个通用的高强度加密库,支持128位以上强度的对称密码算法和1024位以上强度的公钥密码算法,库中包含了完整的加密算法,数字签名算法及证书算法等,它可以很好地保证数据的完整、保密和正确性。OpenSSL主要包括:1)Crypto库:Crypto库实现了各种Interact标准中使用的许多密码算法,该库被用于实现TLS/SSL、S/MIME、SSH、OpenPGP等。该库实现了对称加密算法中的DES(包括常用的各种DES模式和变形)、IDEA、RC2、RC4、RC5、Blowfish、CAST,非对称算法中的RSA、DH、DSA,散列算法中的MD2、MD4、MD5、SHA、SHA.1、RIPEMD、MDC2,认证码算法HMAC。2)SSL库:SSL2.0,SSL3.0和TLS1.0库。3)命令行工具程序4)其他实用工具程序二、嵌入式网络读卡端密码算法模块的开发与CA服务器端密码算法模块的实现不同,嵌入式网络读卡端密码算法模块受限于嵌入式处理器的运算速度。如果采用CA服务器密码算法模块同样大数类运算的方式,运算时间无疑是不可忍受的。针对以上问题,将OpenSSL库移植到基于uClinux的EV4510平台,利用OpenSSL库的算法函数,对IC卡上的证书信息进行运算验证证书,提高了运算 效率,缩短了运算时间。嵌入式网络读卡端密码算法模块中重要结构和函数如下:0、RSA结构:struct{intpad;10ngversion;constRSA_METHOD*meth:ENGINE*engine:BIGNUM术n://n=p*qBIGNUM水e://公开加密指数,常为65537(Oxl0001)BIGNUM利://私钥BIGNUM术p://大素数PBIGNIJM水q://大素数qBIGNUM*dmpl://dmod(p-I)BIGNIJM*dmql://dmod(q一1)BIGNUM*iqmp;//(inverseofq)modpjntreferences:intflags:}RSA;1、初始化和释放RSA结构函数:RSA·RSA_new(void);voidRSAfi'ee(RSA幸rsa);2、密钥产生函数:RSA宰RSA_generate_key(hatnum,unsignedlonge,void(拳callback)(int,int,void幸),void幸eb_.arg);3、加解密函数:hatRSA_public__encrypt(intflen,unsignedchar幸from,unsignedchar*to,RSA*rsa,hatpadding);hatRSA__private_decrypt(intflen,unsignedchar奎from,unsignedchar幸to,RSA*l'Sa,intpadding); intRSA__private_encrypt(intflen,unsignedchar·from,unsignedchar宰to,RSA木rsa,intpadding);RSA._publie__decrypt(intflen,unsignedchar奉from,unsignedchar奉to,RSA奉rsa,intpadding);hatEVP_Digest(void*data,unsignedcount,unsignedchar毒md,unsignedint*size,constEVP—MD幸type,ENGINE幸impl);经实验测试,利用移植后的OpenSSL库进行RSA和MD5运算实现证书验证所需时间小于O.01秒,符合要求。4.2.5网络通信模块一、uClinux下的Socket编程:uClinux的许多特性可以方便地实现网络编程。首先,uClinux拥有许多网络编程的库函数,可以方便地实现客户机/服务器模型。其次,uClinux秉承UNIX的设备无关性这一优秀的特征,即它通过文件的描述符实现了统一的设备接12。Socket也是一种文件描述符,应用程序中使用套接字来调用套接口,就如同使用文件描述符来调用文件进行操作一样。网络的Socket数据传输可以看作是一种特殊的I/O[561。uClinux下的常用的Socket编程函数如下:1、socketoi垂i数socket(intdomain,inttype,intprotoco1);功能:创建指定类型的套接口并返回套接口描述符参数:domain:套接口的域名,为AF_INET或AF-UNIX;tyler套接口的类型,为SOCK—STREAM、SOCKDGRAM或SOCK_RAW;protoc01.通常O:2、bindOi函数bind(intsockfd,struetsockaddr搴my_addr,intaddrlen);功能:使套接口与IP地址和端12号绑定参数:sockfd:socket()系统调用返回的套接13描述符my_addr:指向含有本机IP及端口号的通用套接口地址类型指针addrlen:通常设为sizeof(stmctsockaddr) 3、listen0函数intlisten(hatsockfd,hatbacklog);功能:监听与套接口绑定的端口,等待来自客户端的服务请求参数:sockfd.与端口绑定的套接口描述符backlog:在请求队列中允许的最大请求数4、accept0函数intaccept(intsockfd,structsockaddr奉ad毗hat木addrlen);功能:接受请求队列中服务请求并返回新的套接口描述符供新连接使用参数:sockfd:监听端口的套接口描述符addr:指向sockaddrin变量指针,存放提出连接请求的主机信息addrlen.通常为指向值为sizeof(structsockaddr)的整型指针变量5、connect0函数hatconnect(irasockfd,structsockaddr·serv_addr,intaddrlen);功能:用来与远端服务器建立一个TCP连接参数:sockfd:本地的套接口描述符servaddr:指向目的主机IP和端口号的通用套接口地址类型指针addrlen:通常设为sizeof(structsoekaddr)6、write0函数intwrite(hatsoekfd,char幸buf,hatlen);功能:用于TCP连接的数据发送,返回实际写出的字节数7、read0函数intread(intsockfd,char·bur,hatlen);功能:用于TCP连接的数据接收,返回实际读入的字节数8、close0函数intclose(hatsockfd);功能:关闭相关套接口二、嵌入式网络读卡端网络通信模块的开发本系统嵌入式网络读卡端的网络通信流程如图4—12所示。 图4—12嵌入式网络读卡端的网络通信设计4.2.6用户界面嵌入式网络读卡端程序界面如图4—13所示。图4—13嵌入式网络读卡端程序界面 4.3,J、结本章详细描述了基于校园“一卡通”的PKI系统的具体实现,包括CA服务器端程序和嵌入式网络读卡端程序。首先阐述了CA服务器端程序的实现,包括密码算法、串口读卡器、网络通信和数据库访问等模块,接着阐述了嵌入式网络读卡端程序的实现,包括硬件平台及开发环境的构建、嵌入式操作系统的移植,密码算法、串口读卡器、网络通信等模块的开发。. 第五章总结和展望5.1总结本文以东华大学校园“一卡通”系统为应用背景,根据密码学和PKI的相关理论,结合校园内使用的非接触式IC卡的实际情况,设计了相应的校园数字证书和网络通信协议,并在此基础上构建了一个基于校园“一卡通"系统的PIG。它以CA服务器为核心,以基于uClinux的EV4510嵌入式网络读卡端作为网络客户端,以存储在校园IC卡上的校园数字证书为载体,提供机密性、完整性、认证和不可否认等安全服务,为基于校园“一卡通”系统的应用构建了一个安全的平台。本文设计和构建的基于校园“一卡通"系统的PIG,具有以下特点:1、PIG技术与嵌入式技术相结合;由于PKI中的相关算法对处理器性能的要求较高,在目前流行的32位嵌入式处理器上实现时普遍存在“时间"瓶颈。在本系统中,通过对OpenSSL在32位嵌入式平台上的移植和改进,解决了PIG中大部分算法(如1024位密钥强度的RSA、MD5等)在32位嵌入式处理器上快速实现的难题,为PIG客户端在嵌入式平台上的实现提供了必要的技术条件。2、嵌入式技术和智能卡技术相结合;目前,校园中使用的读卡器通常通过RS232与PC相连。这样,不仅使用不便,而且代价不菲,易受攻击。在本系统中,使用基于uClinux的EV4510嵌入式平台代替了普通的PC,与读卡器相连,作为本系统中PKI的客户端,不仅明显地降低了系统成本,而且提高了系统的便利性、可靠性和安全性。3、PIG技术和智能卡技术相结合;整个PK/中最核心的安全问题是对用户私钥的保护。就现行系统而言,对最终用户最直接的攻击手段就是针对用户私钥的攻击。在目前的PIG中,最常用的私钥存储介质主要是磁盘。在现有的技术条件下,采用常见的软硬件工具就可以读取磁盘数据,安全性较低。在本系统的PKI中,利用智能卡数据保密性好、抗干扰能力强等特点,将用户的私钥和校园数字证书保存在智能卡上,更好的保证了校园“一卡通”系统的安全性。4、校园数字证书:从应用环境看,目前的PIG大多面向Intemet,其数字证 书大多基于X.509格式;而本系统的PKI面向校园网,数字证书专用性更强,突出“量身定制’’的原则。在本系统中,结合X.509证书理论和校园非接触式IC卡的实际情况,设计了面向校园“一卡通’’应用的数字证书——校园数字证书。它不仅格式灵活,能存储于校园智能卡上,而且安全性高,具有1024位的密钥强度,足以满足校园“一卡通’’系统的安全需要。综上所述,以校园数字证书为载体,结合PKI技术、嵌入式技术和智能卡技术,基于校园“一卡通”系统的PKI为校园“一卡通”系统提供了理想的安全解决方案,面向校园的各种应用,具有广泛的应用前景。5.2展望近年来,随着嵌入式技术和智能卡技术的迅速发展,PKI、作为网络安全的基础设施,普适性更强:PKI的应用环境从传统的主机平台扩展到嵌入式领域,PKI中的客户端不再局限于传统意义上的固定“主机",而是面向Internct中任何一台具有口地址的移动设备。PKI中的数字证书突破了单一的磁盘固定存储方式,采用智能卡移动存储方式。综合上述发展趋势,针对校园“一卡通”系统的应用现状,本文对PKI在校园“一卡通"系统中的设计与实现方面进行了一定的研究,取得了一定的进展,由于作者水平和工作时间的限制,还有许多方面需要进一步完善。通过对前一阶段工作的总结,进一步的研究工作建议如下:1、CA服务器端添加日志审计功能和网络监控功能。鉴于CA服务器在基于校园“一卡通"系统的PKI中的重要性,CA服务器的安全成为不容忽视的课题。目前,CA服务器端仅通过角色登录验证用户身份,安全手段单一且可靠性较低,没有历史延续性。CA服务器端的日志审计,与一般的服务器端的日志审计不同,它利用用户私钥签名生成不可否认的“水印”日志记录用户操作,具有鲜明的CA服务器端的特色。CA服务器端的网络监控,用于监控CA服务器从网络中发送或接收的网络消息。日志审计和网络监控可以为CA服务器提供更好的安全保障。‘2、嵌入式网络读卡端的用户界面设计。目前嵌入式网络读卡端提供的界面 相对简单而且不够友好。嵌入式网络读卡端分布在校园各个角落,面向大量用户,而且使用频繁,为用户提供更加友好智能的中文使用界面是下一步工作的重要方向,预期分触摸屏的添加,汉字库的移植和GUI的设计三步完成。3、无线便携式读卡器的研究与实现。随着近年来无线通信技术的迅速发展,使无线便携式读卡器作为PKI的客户端,取代有线嵌入式网络读卡端成为可能。与现有固定的嵌入式网络读卡端相比,无线便携式读卡器以其移动性好、便于携带、即插即用等特点,具有良好的应用前景。 参考文献1吴振峰,数字校园与URP系统架构,湖南大众传媒职业技术学院学报,2002,?2(4),64-66.-2周瑛,Ⅵ冲:校园里的ERP,互联网周刊,2004,12,62.643WolfgangRanldWolfgangErring,SmartCardHandbook,U.S,WileyJohn&SonsIncorporated,2000,56-684李翔,智能卡研发技术与工程实践,北京,人民邮电出版社,2003,78-895黄淼云李也白等,智能卡应用系统,北京,清华大学出版社,2000,32—406王卓人邓晋钧刘宗祥,IC卡的技术与应用,北京,电子工业出版社,1999,153.1647王爱英,智能卡技术叫C卡,第二版,北京,清华大学出版社,2003,42.568刘守义,智能卡技术,西安,西安电子科技大学出版社,2004,113—1249Finkenzeller,RFIDHandbook,German,WileyJohn&SonsIncorporated,2001,102—11810李欣,“校园一卡通"建设,微型电脑应用,2005,24(7),59·6111刘晓春,一卡通智能卡在校园管理中的应用,管理信息系统,2000,10,16—1812习捷卢朝霞朱歆华,数字校园一卡通系统的建设策略与实现,通信学报,2005,26(1),194-19613李文琦郭武,校园一卡通系统安全性能分析,网络安全技术与应用,2003,12,45-4714周永明,基于校园网的一卡通系统安全性分析,微型电脑应用,2005,19(2),57-5915宁宇鹏,PKI技术,北京,机械工业出版社,2004,94.11216关振胜,公钥基础设施PKI与认证机构CA,北京,电子工业出版社,2002,24-4317谢冬青冷健,PKI原理与技术,北京,清华大学出版社,2004,149-16318沈苏彬,网络安全原理与应用,北京,人民邮电出版社,2005,27—3685 19胡予濮张玉清肖国镇,对称密码学,北京,机械工业出版社,2002,67.8020冯登国,网络安全原理与技术,北京,科学出版社,2003,42.5521B.Schneier,AppliedCryptography—Protocols,Algorithms,andSourceCodeinC,北京:机械工业出版社,2000,105.18022卿斯汉,密码学与计算机网络安全,北京,清华大学出版社,2001,78。8523W.DiffieM.Hellman,Newdirectionsincryptography,IEEETraIls,Inform,1976,22(6),644-65424W.Diffie,Thefirsttenyearsofpublic-keycryptography,ProceedingoftheIEEE,1988,76(5),560—57625王衍波薛通,应用密码学,北京,机械工业出版社,2003,98.11526卢开澄,计算机密码学——计算机网络中的数据保密与安全,第三版,北京,清华大学出版社,2003,79.10027V.Miller,UsesofEllipticCurveinCryptography,AdvancesinCryptology—CRYPTO’85,LNCS,Springer-Verlag,1986,417-42628AtkinMorain,Ellipticcurvesandprimalityproving,MathematicsofComputation,1993,61,29-6829WilliamEdwardScott,EllipticCurveCryptographyandDisitalSignatures,Computer&Security,1999,18,54-6430RiverstShamirAdleman,AMethodforObtainingDigitalSignaturesandPublic—KeyCryptosystems,CommunicationsofllleACM,1978,21(2),120-12631L.Ham,BatchverifyingmultipleRSAdigitalsignature,ElectronicsLetters,1998,34(12),1219—1220,32杨波,现代密码学,北京,清华大学出版社,2003,42.6133赖溪松韩亮张真诚,计算机密码学及其应用,北京,国防工业出版社,2001,176.19534胡道元闵京华,网络安全,北京,清华大学出版社,2004,135.14635冯登国,计算机通信网络安全,北京,科学出版社,2003,167.18836张仁斌谭三易勇等,网络安全技术,北京,清华大学出版社,2003,146.16237张世永,网络安全原理和应用,北京,科学出版社,2003,73.82 38刘淼郭荷清,公钥基础设施与应用软件集成研究,计算机应用与软件,2005,22(7),116一11839杜艳明陈建勋,基于PKI的安全计算基础与应用研究,武汉科技大学学报:自然科学版,2005,27(4),419-42240聂小逢郑东顾健,认证机构CA的安全体系设计,计算机工程,2004,30,288.29041李胜勇陈文元张卫平,PKI技术及其存在问题的分析,微计算机信息,2005,21(1),171—17242史伟奇,基于PKI信任模型的研究,电脑开发与应用,2005,18(3),36-3843张仕斌何大可代群,PKI安全认证体系的研究,计算机应用研究,2005,22(7),127—13044张文凯曹元大,基于PKI/PMI的应用安全平台模型的研究,计算机工程,2004,30(9),131-13345袁树雄,公钥基础设施与企业网络应用安全方案,重庆科技学院学报:自然科学版,2005,7(2),9l-9446藏节勇顾健陈克非,PKI技术在网格安全中的应用,计算机工程,2005,31(5),159—16147黄文专郭巧,PKI系统在IPv6网络中的应用研究,计算机工程与设计,2004,25(11),1976—197848李文奇李家滨,下一代PKI技术在移动互联网中的应用研究,计算机工程,2003,29(6),11-1349杜春雷,ARM体系结构与编程,北京,清华大学出版社,2003,124-13250周立功,ARM嵌入式系统基础教程,北京,北京航空航天大学出版社,2005,30.7351李驹光,ARM应用系统开发详解——基于$3C4510B的系统设计,北京,清华大学出版社,2001,158.17352田泽,嵌入式系统开发与应用,北京,北京航空航天大学出版社,2005,134-18253胥静,嵌入式系统设计与开发实例详解——基于ARM的应用,北京,清华大学出版社,2005,168.176 54田军营韩建海马志荣,uClinux源代码中Make文件完全解析——基于ARM开发平台,北京,机械工业出版社,2005,168—17655ArnoldRobbins,LinuxProgrammingByExample:TheFundamentals,U.S,PrenticeHall,2005,346.36856于明俭陈向阳方汉,LINUX程序设计权威指南,北京,机械工业出版社,2001,235.249 攻读学位期间发表的学术论文目录l王益涵陶莉曹奇英,普适环境下的信任计算,计算机工程与应用2005,41,144.146——第十五届信息技术交流大会优秀论文2朱锡海王益涵曹奇英,普适计算环境中基于上下文的访问控制研究,计算机工程与应用2005,4I,141-144.——第十五届信息技术交流大会优秀论文3王益涵陶莉曹奇英,普适计算中信任模型的研究,计算机应用研究,已录用4王益涵陶莉曹奇英,普适环境下的信任管理及在移动服务中的应用,计算机工程与设计,已录用

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

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

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