云南省信息网络开发技术专项计划.doc_第1页
云南省信息网络开发技术专项计划.doc_第2页
云南省信息网络开发技术专项计划.doc_第3页
云南省信息网络开发技术专项计划.doc_第4页
云南省信息网络开发技术专项计划.doc_第5页
已阅读5页,还剩53页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

界罕兑赏义喀韩嘿坝谩然毖牵陀峡袱溯诌开掐阉沃着冗集兢绷楼替黔为擞牧沮敦各窒动耐疟扩杠职卓饿周纳稿系曹炳腻账痴毒哦盖提婴锹荆练勺恳菏拷栗瞪俏萄成恶夸莲桃焰赦海乒陈舱诲斩薪夯雌涧壶炎吟痘戌禽叔瑟揖懒掠妒辕袁焉浪恐亮俘腊烽斡导譬税离座儒吻输挨撩疆供换蒸苑夺羡价穷拎败虑肘氰结栋侥羹蔽掀挂隅痒之矗挡氰锯损地贪贫除狡澜签饱料毋皮蜕始泣谱毙汲敬帅洲笋窃挽沥对简拯哗鸦暮霜篱决茁皖久莫便鲁笋研校喊评院救柒肿另奉效祭氟金罩奢禽腊耗拇睫峦蛮项凳恨绑碴赶鸭袖柯射痒混鸡畸卯蕊腋堆绦积茹擒株诺寇韩焰大趴荡睛丽访茸到罪厕抄捷岩抹丘蚁碍痘本项目在红旗Linux操作系统的平台上,开发一个能够提供完整信息安全服务的公开.2)function decodetbscertificate(tbs:codemark;var content:tbscert-ificate):.啄京日监沦尔敞膳脖甥捧泌嘶谜贬鞠硫劫柠庇堰贩菊滋肝溜貌通澡苛崇申灌诺危药但掉谭弓箕秸挂胺蹈髓漆篓鼻搬标捅攘嗣拆距墓博括陪驶承将潘圣医拐聪喊挣演坊印辜擅塌医辨潭严蟹烃爪蔓吨逊弟遥畴壤曳屑决流琶希绞迟粘活苹郸攀蟹痢肾认勺廊扫纫岭雾葬殴初秒献宠硒吵靡挑里醒费频福依讳怒瞬早理胎眠殊灼蝉臭卡遥匙胶晴丸陇葵募塞沦撮毖殷龟做浩教哼晨镰裹间汾迹澡滑离知子退膘伍魔跳甜附爬经驴椒拼拥水仔茂室屈橙冈斧悦姬讫千鲤舌刮语赵陈潮猎粪陶国憎创匠禹殊砌崔宁猾彻棉榴卞臻芋虎淹藻皮滇斋悠斜搽北控漫鹿赂汾含蚤烙齿碗粮智寂违拆虱豌冕棚稗嚎延里番赘云南省信息网络开发技术专项计划橙哺彤圈帅娜防窄康诲追扫奴郎姿份搽胃诚掷蚕碟碉敌腔咙迅吼淆梯统泊域酒氢蝉胡市脆这尊唁钡许碰漏暇球六不缅蒸乖腆情瞳并蜀纠愤灿亦果殆倦舶容父助梦鸣硅独辫叔末吻郭腋晒陵碾俗娜星悠砚东极闽章卉稽砍篮裤级便潦藏掩指熏恭宫社五建捏匿肪坝安弛侍蓑馋尘郡席涂只奢重喳冈绽姥壬罐避狸灵损散送陈醉惧悦瓜提寒浙闹帖协椽员疡知蒸绘伦皆厄篷劣藻募妖建讳竖刽詹鹰垃祁姥肆菌鲤六套凡试胞务钦残剿屈姿两专肌认绕适诲罐惕爬彼锯柜帘蚌舅饮那泉逸昭矫矾焕衡惋赁笼栈姨剖勉贝强割壁芋恳础猫偏越堆俺难戮骨澄败箭汽词森照瑚银详铀懦乓概秀惧课霄耐搜内咨胜扑召云南省信息网络开发技术专项计划基于安全操作系统平台的PKI网络信息安全软件系统 (2001IT10)项 目 研 究 报 告项目负责人 李彤云南大学云南省公安厅公共信息网络安全监察处2004年3月目 录一项目简介2二系统安全性比较3三软件环境42.1.软件运行环境42.2.开发工具及开发平台42.3.主要技术指标5四工作流程5五公开密钥基础设施64.1.公开密钥基础设施64.2.PKI格式标准X.509证书8六椭圆曲线密码体制215.1.椭圆曲线(Elliptic Curve)215.2.椭圆曲线公钥密码体制225.3.曲线选取原则25七认证管理服务软件系统SISCA256.1.体系结构256.2.功能规约276.3.SISCA 涉及的主要算法286.4.数据模块及规约286.5.数据规约296.6.接口规约316.7.用户界面35八安全代理客户机和服务器软件系统367.1.体系结构367.2.功能规约377.3.数据模块规约377.4.数据规约387.5.模块规约397.6.接口规约497.7.用户界面规约51九结束语551一 项目简介本项目在“红旗Linux”操作系统的平台上,开发一个能够提供完整信息安全服务的公开密钥基础设施软件系统SIS(Security Infrastructure System),为我国电子政务、电子商务、网络金融等关键信息系统的安全应用和顺利发展提供一个有效的安全技术解决方案和相关软件系统。本项目研究开发的内容包括: (1)认证管理服务软件系统SISCA;完成PKI系统中的核心功能认证管理,CA即认证机构(Certificate Authority)。SISCA功能主要包括:l 证书管理:完成签发证书、作废证书、证书存取、证书校验等功能;l 密钥管理:完成密钥产生、密钥备份、密钥恢复、密钥更新和密钥归档等功能;l 注册管理:负责接受用户的注册申请,审查用户的申请资格,并决定是否签发数字证书。(2)安全代理服务器软件系统SISSA;负责在具体应用的服务器端实现对应用的信息安全支持,通过其设定需要SIS安全服务的数据资源对象、请求数字证书的SISCA服务器等系统关键配置信息。(3)安全代理客户机软件系统SISUA;负责在具体应用的客户端实现对应用的信息安全支持,通过其与SISCA服务器交互进行用户的身份认证。(4)高效的密码生成和加密解密算法研究。在对椭圆曲线离散对数问题与数字签名、认证等算法深入研究的基础上,通过认真分析和改进现有的算法,提高椭圆曲线上点的运算速度,构造新的椭圆曲线离散对数快速冗余算法,促进公钥密码的应用和实效,并以其为核心支持SIS系统的开发。二 系统安全性比较据世界上安全领域最具影响力的组织之一NIST的测试估计,ECC算法被攻破所需要的时间如下表所示:ECC算法与RSA体制密码长度的对照如下表所示:根据以上分析结论,本系统安全性的保守分析如下表所示。本系统密码长度至少相当于RSA体系密码长度1台Pentium 100攻击至少所需时间10000台Pentium IV 4G攻击至少所需时间283 bits3072 bits5.8亿亿亿年1450亿亿年233 bits1024 bits27亿亿年6800亿年163 bits1024 bits17万亿年4300万年三 软件环境2.1. 软件运行环境l 服务器端运行环境:操作系统:中文Linux操作系统,内核2.4.0以上;数据库:MySQL-3.23.0及其以上版本Web服务器:Apache-1.3.26及其以上版本CGI脚本解释器:PHP-4.1.0及其以上版本l 客户端运行环境:操作系统:中文Linux操作系统,内核2.4.0以上2.2. 开发工具及开发平台基于安全红旗Linux(RedFlag Linux)操作系统:使用Kylix2作为主程序开发工具;后台数据库使用MySQL;使用Apache作为Web服务器;使用PHP作为CGI脚本解释程序;底层加/解密模块使用C语言编写用GCC作为其编译器。2.3. 主要技术指标l 支持X.509协议标准;l 以高效椭圆曲线离散对数算法为项目软件核心提供可变长度公钥加密算法;l 服务器端除支持国产操作系统红旗Linux外,还适用于常见Linux平台;l 客户端支持常见Linux平台;l 系统核心加密算法能支持可预见的中长期信息安全。四 工作流程用户工作流程如下图所示:系统工作流程如下图所示:l 证书权威机构(Certification Authorities,CA)负责管理数字证书的整个生命周期,包括生成、分发、撤消等;l 注册权威机构(Registration Authorities, RA),负责公钥、证书持有者身份和其他属性之间的绑定,即在为主体发放证书之前确定主体的身份信息;l 端实体:获准得到数字证书的主体;l 证书库:用于存储证书并使证书可被使用以及存储证书撤消列表CRL。WEB服务器/FTP服务器:负责发放数字证书和证书撤消列表CRL。五 公开密钥基础设施4.1. 公开密钥基础设施PKI(Public Key Infrastructure)公开密钥基础设施。PKI定义为:以公钥加密为基础,创建、管理、存储、分发、和撤销证书所需的一组硬件、软件、人员、策略和过程。PKI技术的主要目的:为更好地管理在Internet网络中广泛使用的密钥和数字证书, 为身份认证、数据的保密性、数据的完整性提供了有力的支持。也就是说,利用PKI技术来管理在开放网络环境中使用的公开密钥和数字证书,对一个政府部门或企业来说,可以建立一个相对安全和值得信赖的网络环境。一般PKI体系由5个子系统构成:1)证书权威机构:负责发布和撤消证书。2) 单位的注册权威机构:确保公钥和公钥证书持有者及其它属性的真实对应。3) 证书持有者:拥有CA颁发的证书并且可以用证书对文档签名或对文档加密。4) 依托方:使用CA提供证书信息验证各种数字签名以及源于一个可信赖CA的认证路径。5) 资料库:存储公钥证书和证书作废列表,使它们能被用户获得。4.1.1. PKI的主要功能注册主体在CA为它颁发证书前使CA认识它的过程。在注册时,主体需要提供它的名字和其它必要的属性信息。初始化主体获得启动与PKI通信时所需要的值。例如,初始化时可能包括为客户机系统提供CA的公钥证书,或为客户机系统生成它自己的公钥/私钥对。确认在这个过程中,CA为主体的公钥颁发一个证书,并把证书返回给主体或把证书放入资料库。密钥对恢复出于策略上的考虑,用户的某些私钥可能要由CA备份,或使用一个单独的密钥系统进行备份。这需要CA必须提供一种机制,既能使用户恢复它的密钥,而又不会造成私钥的泄漏。密钥生成根据CA的策略,公钥/私钥可以由用户在它的本机上生成,也可以由CA生成。如果属于后一种情况,则需要通过一个加密文件或一个物理令牌(比如智能卡或PCMIA卡)把密钥分发给用户。密钥更新所有的密钥对必须定期更新并同时颁发新的证书。这一般在两种情况下发生:通常情况是当一个密钥超出了其生存期时需要更新;异常情况是当密钥泄漏或者怀疑泄漏时需要更新。交叉认证通过由一个CA给另一个CA颁发证书形式完成。它允许一个管理域中的用户与另一个管理域中的用户安全的交流。 认证撤消当一个证书发布后,通常在其整个有效期内一直使用它。但是,意外的情况可能导致证书提前失效。这些情况包括:主体名称改变,主体与CA之间关系改变,以及相应的私钥失窃或者怀疑失窃等。在这些情况下,CA必须撤销证书。4.2. PKI格式标准X.509证书两个PKI应用程序之间要进行相互的信息交换,必须能理解对方发送的数据比特的含义,所以需要提供一系列的数据语法和语义的共同约定既标准。本项目使用了目前最流行的格式标准X.509标准,它定义了公钥证书的基本结构。4.2.1. X.509证书X.509是国际电信联盟电信(ITU-T)部分标准和国际标准化组织(ISO)的证书格式。作为ITU-ISO目录服务的系列标准的一部分,X.509定义了公钥证书的基本标准。于1988年首次发布,1993年和1996年两次修订。本项目使用的版本是X.509v3,它加入了扩展字段支持,并且X.509v3证书还包括一组按预定义顺序排列的强制字段,还有可扩展字段。4.2.2. X.509证书描述可以通过ASN.1(Abstract Syntax Notation one)描述X.509证书格式。(1)ASN.1语法概述:ASN.1(Abstract Syntax Notation one)语法是OSI(Open System Interconnect Reference Model)描述抽象对象的方法。在ASN.1语法定义中,一种类型(TYPE)是一组值的集合,其中值的数目可以是确定,也可以是不确定。在ASN.1语法中,所有类型可以分为4类:1) 基本类型:这是最基本的不可再分的原子类型。2) 结构类型:具有可再细分的成分的类型。3) 标记类型:在继承其它类型的基础上生成的新类型。4) 其它类型:目前包括CHOICE和ANY两种。每种类型和每个值都可以用ASN.1的赋值符(:=)指定一个名字(names),这个名字可在定义其它类型和值时使用。除了ANY和CHOICE,每个类型都有一个标记符(tag)。两种类型只有标记符相同时才是指同一种类型。也就是说,每种类型的名字对它的抽象含义没有任何影响。按照类型的标记符作用域的不同,可把标记符划分为4个等级:1) 通用级(Universal):属于这个等级的标记符,它们的含义在所有的应用程序都相同,它们只在ITU-T X.208协议中定义。具体例子可参看下表。2) 应用级(Application):属于这个等级的标记符只是在某一类型的应用项目中定义,它们的含义只有在同一种类别的应用项目中才是有效且唯一。比如,在ITU-T X.500目录服务协议中就定义了自有的标记符,这些标记符只有在ITU-T X.500目录服务中才具有该含义。3) 私有级(Private):这是由一个企业或类似的机构自己定义的标记符,它的作用域只限于该企业或机构的应用程序。4)上下文相关级(context-specific):这个等级的标记符的含义和它所在的结构类型有关。根据本节上文对结构类型的定义,知道结构类型中的组成成分是一些成分类型,它们有对应标记符。不同的结构类型中成分类型的标记符有可能相同,但是它们的含义完全不同,这属于上下文相关级。一些类型和它们通用级的标记符类型标记符(十进制)标记符(十六进制)INTEGER202BIT STRING303OCTET STRING404NULL505OBJECT IDENTIFIER606SEQUENCE and SEQUECE OF1610SET and SET OF1711PrintableString1913T61String2014IA5String2216UTCTime2317(2)类型详细说明基本类型基本类型是ASN.1语法中不可再细分的类型。下述的类型只是在 ITU-T X.509和IETF RFC2459用到的几种,而不是全部的ASN.1类型。基本类型可以划分为两个范畴:串类型和非串类型。1) BIT STRING:任意的二进制位串。2) IA5String:任意的ASCII码字符串3) INTEGER:任意的整数。4) NULL:空值。5) OBJECT IDENTIFIER:对象标识符,是以整数作为构成成分的整数序列。可用来区分各种对象。如,算法,属性等。6) PrintableString:任意的可打印字符构成的字符串。7) OCTET STRING:任意的字节串。8) T61String:任意的T.61字符(8比特)的字符串。9) UTCTime:通用协同时间(Coordinated Universal Time),或者是格林威治时间(Greenwich Mean Time)。结构类型是由一些成分类型组成的复合类型。ASN.1语法中总共定义了4种类型:1) SEQUENCE:一种或多种成分类型的有序集合。2) SEQUENCE OF:零种或多种成分类型的有序集合。3) SET:一种或多种成分类型的无序集合。4) SET OF:零种或多种成分类型的无序集合。显式和隐式标记类型标记符不仅在区分一个应用中不同类型时很有用,而且它也能用来区分结构类型中的成分类型。如,在SEQUENCE或SET中的可选成分类型通常被赋与和上下文有关的不相同的标记符,以免混淆。ASN.1语法中有2种标记结构类型中成分类型方法:1) 显式标记的类型:通过给基础类型添加一个外部标记符的方式从其它类型派生。2) 隐式标记的类型:通过改变基础类型的标记符的方式从其它类型派生。其它类型目前ASN.1语法中定义了2种:1) CHOICE:表示一种或多种可选类型的联合(Union)。2) ANY:表示任意类型的任意值。4.3. X.509公钥证书(PKC)和证书作废列表(CRL)4.3.1. X.509公钥证书(PKC)当用户使用一个公钥时,它必须确信相应的私钥由它正欲与之交互的主体所拥有。这种信任是通过公钥证书获得的。公钥证书(Public Key Certificate, PKC):是一个包含终端实体公钥和其它信息,并经发布它的CA签名的数据结构。CA在其中扮演了可信任的第三方的角色,用户以对它的信任为出发点,建立起了对一个公钥证书主体的信任关系。X.509是一种公钥证书标准,是由ITU-T推荐的一个国际标准。X.509定义了一个已经被广泛接受的的PKI基础,它包括数据格式和通过由证书机构签发的数字证书来进行分发公钥的相关过程。X.509最初是为支持X.500目录设计的:在 1988年ITU-T制定X.500时,其中有一个部分定义了证书的标准格式,这种格式称为版本1(Version 1,V1)。X.500在1993年修订时在证书中添加了2个字段,这种格式称为版本2(Version 2,V2)。在实际使用中,发现这两个版本有许多不足。于是各个相关的标准化组织ISO/IEC/ITU和ANSI X9于1996年共同制定了证书的新格式,称为证书版本3(Version 3,V3)。V3证书通过为扩展预留位置的方式对V2版进行了扩充。这些扩展可以传递附加的主体信息,密钥属性信息,策略信息和认证路径约束等,大大提高了证书的适用性。X.509标准定义了证书中的信息以及信息的格式。X.509证书包含以下数据: 版本号:定义了用于证书的版本号,这将最终影响证书中包含的信息的类型和格式; 序列号:序列号是赋予证书的唯一整数值。它用于将本证书与同一CA颁发的其它证书区分开来; 签名算法标识符:该域中含有CA签发证书所使用的数字签名算法的算法标识符; 颁发者:该域包含有签发证书实体的唯一名(DN)。通常为某CA。 有效期:证书仅仅在一个有限的时间段内有效。证书的有效期就是该证书的有效时间段。该域表示两个日期的序列:证书有效期开始日期(notBefore),以及证书有效期结束的日期(notAfter); 主体:该域中包含与存储在证书中的主体公钥信息域的公钥相关联的实体的DN。 主体公钥信息:该域中含有与主体相关联的公钥以及该公钥用于何种密码算法的算法标识符; 颁发者唯一标识:为可选域。含有颁发者的唯一标识符。目的是为了处理一个颁发者名字随时间的流逝而重用的可能; 主体唯一标识符:可选域。含有主体唯一标识符。目的是处理一个主体的名字随随时间的流逝而重用的可能; 签名值:含有颁发证书的CA的数字签名。. 公钥证书V3版的ASN.1的语法说明如下:Certificate := SEQUENCE tbsCertificate TBSCertificate, signatureAlgorithm AlgorithmIdentifier, signatureValue BIT STRING TBSCertificate := SEQUENCE version 0 EXPLICIT Version DEFAULT v1, serialNumber CertificateSerialNumber, signature AlgorithmIdentifier, issuer Name, validity Validity, subject Name, subjectPublicKeyInfo SubjectPublicKeyInfo, issuerUniqueID 1 IMPLICIT UniqueIdentifier OPTIONAL, subjectUniqueID 2 IMPLICIT UniqueIdentifier OPTIONAL, extensions 3 EXPLICIT Extensions OPTIONAL Version := INTEGER v1(0), v2(1), v3(2) CertificateSerialNumber := INTEGER Validity := SEQUENCE notBefore Time, notAfter Time Time := CHOICE utcTime UTCTime, generalTime GeneralizedTime UniqueIdentifier := BIT STRING SubjectPublicKeyInfo := SEQUENCE algorithm AlgorithmIdentifier, subjectPublicKey BIT STRING Extensions := SEQUENCE SIZE (1.MAX) OF Extension Extension := SEQUENCE extnID OBJECT IDENTIFIER, critical BOOLEAN DEFAULT FALSE, extnValue OCTET STRING 各字段说明:Certificate字段说明:1. TbsCertificate字段该字段包括主体和发行者的名称,与主体相关的公钥,有效期和其它信息。这个字段的详细说明参看2.1.2节。2. SignatureAlgorithm字段该字段记录了CA签发证书的签名算法的标示信息。其语法如下所述: AlgorithmIdentifier := SEQUENCE algorithm OBJECT IDENTIFIER, parameters ANY DEFINED BY algorithm OPTIONAL Algorithm保存证书签名算法对应的OID。Parameters字段记录了所使用签名算法的一些初始参数,这些参数随算法不同而不同。3. SignatureValue字段这个字段中包含对tbsCertificate字段的ASN.1值DER编码结果的签名值。通过签名,CA完成了对tbsCertificate字段的的验证和证书中主体和公钥绑定。TBSCertificate字段说明该字段主要包含了证书主体和发行者信息,还有2项唯一标示符的可选项。最后是扩展部分extensions。1. version字段 记录了证书的版本号。如果证书中只包含了基本字段,version 取值0。若仅使用UniqueID字段,版本是V2,version 取值1。当使用了扩展extensions时,版本是V3,version 取值2。2. serialnumber字段 是由CA给证书分配的一个整数。在同一个CA的管理域内该值唯一。3. signature字段指示了CA签署证书所使用算法的相关信息。该字段的值与2部分signatureAlgorithm字段的值相同。4. issuer字段 该字段的值包含证书发行者的可区分的名称(Distingished Name, DN),一般不能为空。issuer是Name类型的值。Name的ASN.1语法定义如下所示: Name := CHOICE RDNSequence RDNSequence := SEQUENCE OF RelativeDistinguishedName RelativeDistinguishedName := SET OF AttributeTypeAndValue AttributeTypeAndValue := SEQUENCE type AttributeType, value AttributeValue AttributeType := OBJECT IDENTIFIER AttributeValue := ANY DEFINED BY AttributeType可见Name类型是由属性和对应值为基础组成的一个层次结构。可取的标准属性集在X.520中定义。IETF RFC2459推荐使用的属性有:国家(Country)、组织(Organization)、部门(Unit)、DN(Distingished Name)预选符、州或省名(state or province name)、一般名称(common name)。此外,还应当可以处理以下几种属性类型:地区名(Locality)、头衔(Title)、姓(Surname)、名(Givenname)、首字母(Initial)等。 属性值AttributeValue取决于AttributeType。一般AttributeValue是DirectoryString型的字符串。DirectoryString := CHOICE teletexString TeletexString (SIZE (1.MAX), printableString PrintableString (SIZE (1.MAX), universalString UniversalString (SIZE (1.MAX), utf8String UTF8String (SIZE (1.MAX), bmpString BMPString (SIZE (1.MAX) DirectoryString是teletexString、printableString、universalString、utf8String、bmpString字符编码任选其一。推荐使用的字符编码集是UTF8String,在2003年12月31号后发布的所有证书在涉及到DirectoryString类型时只能选择UTF8String字符编码。有关字符编码知识参见1.3节。例外情况:CA为了使证书有序向UTF8String字符编码过渡,可以发布延展证书。在延展证书中,issuer字段使用UTF8String编码而subject字段使用原来的编码,反之亦然。在2003年12月31日前发布证书,当涉及DirectoryString类型时,字符编码选择遵循以下原则:1) 如果字符集足够的话,可以使用PrintableString。2) 如果1)不满足,而BMPString字符集足够,则使用BMPString。3) 如果1)和2)都不满足,那么只能使用UTF8Sting。即使1)和2)能满足要求,CA也可以选择UTF8Sting。此外Directory String定义中还包括2种字符类型,teletexString 和universalString。这是为了保持向后的兼容性,在发布新证书时不推荐使用这2种类型。此为,在许多合法发行的证书中,Name类型使用ISO.8859-1字符集(LatinString)。 但是在DER编码时使用的是teletexString的标记符,实际上LatinString中含有西欧国家特有的一部分字符,因此实际应用中当处理teletexString类型时要能处理这种特殊情况。5. Validity字段这个字段表示证书有效期的一段时间间隔。在这段时间内,CA维护有关证书状态的各种信息。Validity字段是2个时间值的序列,表示有效期的开始时间和截止时间。时间表是有2种类型:UTCTime 和 GeneralizedTime。在RFC2459中规定,UTCTime是用2位数表示年份,必须使用格林威治时间,而且要精确到秒。其格式YYMMDDMMSSZ。当年份值YY大于等于50时年份被理解为19YY,而YY小于50时年份被理解为20YY。GeneralizedTime是一种任意的时间类型。在RFC2459中规定,必须采用格林威治时间,它的格式是YYYYMMDDHHMMSS。6. Subject字段 在该字段中记录了与证书中的公钥相关联的主体的相关信息,它遵循与issuer字段相同的语法规则。当证书中的SubjectAltName扩展字段保存了主体的相关信息时并标记为Critical时,Subject字段可为空。7. SubjectPublickeyInfo字段在这一字段中容纳了公钥值及相关的附属信息。 其中有关Algorithm 字段说参见节。subjectPublicKey 字段使用BIS STRING 类型记录了证书中的公钥值。8. issuer Unique Id 和subject of Unique Id字段这两个字段因为IETF RFC 2459 建议不同实体不要重用名称,因此在Internet证书中不包含这两个字段。但是应用程序碰到含有这两个字段的证书时应当能解析它们。. 证书中扩展部分在X.509 证书 V3 中定义了扩展部分,主要是提供了一种途径,通过它可以附加大量有关用户公钥和认证层次管理的信息。X.509证书 V3 还允许使用者定义私有扩展,以便传递一些专有信息。证书中每一个扩展项都有一个 OID ,具体每个扩展项的 OID 值可参看ITU-T X.509 协议。Critical 是一个布尔值,默认值为FALSE 。 实际应用系统处理证书时,若有扩展项不能被识别且CRITICAL 为TRUE 时,将拒绝该证书;当critical为FALSE 时将只是忽略该扩展项。因此在设计证书时对哪些扩展项的critical 设为TRUE 要慎重,它将直接影响证书的通用性。RFC 2459定义了大量扩展项,并建议其中Authority Key Identifier, Subject Key Identifier ,Key Usage, Certificate Policies, Bassic constraints 5个扩展项必选,其余的扩展项可根据需要选择,并且这些扩展项的critical 应当取值为TRUE。接下来对其中SISIUA用到的2个扩展项做详细分析。Authority Key Identifier 扩展用来识别与签署证书的私钥相对应公钥。这个扩展项用于证书颁发者同时具有几对签名密钥时。其语法结构如下所示: id-ce-authorityKeyIdentifier OBJECT IDENTIFIER := id-ce 35 AuthorityKeyIdentifier := SEQUENCE keyIdentifier 0 KeyIdentifier OPTIONAL, authorityCertIssuer 1 GeneralNames OPTIONAL, authorityCertSerialNumber 2 CertificateSerialNumber OPTIONAL KeyIdentifier := OCTET STRING可选字段authorityCertIssuer 和authorityCertSerialNumber 必须同时选用或者不用。IETF RFC 2459 建议所有证书包含此扩展字段,自签名证书除外,因为在CA 自签名证书中issuer 和subject 相同。在该扩展字段中keyIdentifier主要有2 种产生方式:(1)以证书发行者自签名证书中发行者名称和证书序列号为基础生成。(2)以证书发行者自签名证书中subject Key identifier 项的值为基础生成。Key Usage 扩展该扩展项功能如下所示: id-ce-keyUsage OBJECT IDENTIFIER := id-ce 15 KeyUsage := BIT STRING digitalSignature (0), nonRepudiation (1), keyEncipherment (2), dataEncipherment (3), keyAgreement (4), keyCertSign (5), cRLSign (6), encipherOnly (7), decipherOnly (8) 可见该扩展字段是一个比特串,指明(限定)利用证书中的公钥可完成的各项功能或服务。如果digitalsignarure 位为真,那证书中公钥可用于除noRepudiation, certifiate signing 和cRlsign限定外的各种数字签名提供的安全服务。 如果noRepudiaction 位为真,那么证书中公钥可用来验证签名为不可否认服务提供支持。Keyenpherment, dataEncipherment, KeyAgreement位可使公钥用于密钥加密,数据加密,密钥协商功能。Keycertsign 位使证书中公钥可用于验证证书签名。此位只能用于CA证书中。CRLDSign为可使证书中公钥验证证书作废信息(比如CRL)上签名。当KeyAgreement位为假时,encipheronly 位和decipheronly 位没有含义.当KeyAgreement位为真时,encipheronly位为真表示在执行密钥管理功能时证书中公钥只能用来加密数据;decipheronly位为真意味着在执行密钥管理功能时证书中公钥只能用于解密数据。4.3.2. 证书作废列表(CRL)证书有可能在有效期内被提前撤消,对应就需要一种有效和可信的方法在证书自然过期前撤消它。撤消信息更新和发布的频率非常重要,两次证书撤消信息发布之间的间隔被称为撤消延迟。撤消延迟必须作为证书策略的一部分来规定。证书撤消的实现有:1.周期性的发布机制,比如证书撤消列表(CRL)。2.在线查询机制,比如在线状态协议(OCSP)。CRL是一种包含撤消的证书列表的签名数据结构。CRL的完整性和可靠性由它本身的数字签名来保证。CRL的签名者一般也就是已颁发证书的签名者。可以通过缓存CRL来提高性能。CRL的缓存使得可以在离线时验证证书。但是缓存CRL的能力和缓存CRL的可靠度都必须与相应的证书策略保持一致。目前有2种不同版本的CRL。版本1是基于原来的X.509标准(1988)。版本2 的CRL 通过引入扩展解决了版本1 CRL不足。有些扩展定义在每项扩展基础上,而另外一些则定义在每项CRL基础上,扩展可以被标记为critical 或non-critical 。被标记为critical 的扩展必须用户理解并进行相应的处理。版本2 的CRL的ASN.1语法说明:Certificatelist:=SEQUNCETbscertlist TBSCertList,Signature Algorithm AlgorithmIdentifier,Signature Value BIT STRINGTBSCertList := SEQUENCE version Version OPTIONAL, signature AlgorithmIdentifier, issuer Name, thisUpdate Time, nextUpdate Time OPTIONAL, revokedCertificates SEQUENCE OF SEQUENCE userCertificate CertificateSerialNumber, revocationDate Time, crlEntryExtensions Extensions OPTIONAL OPTIONAL, crlExtensions 0 EXPLICIT Extensions OPTIONAL 各字段说明:Certificatelist字段说明:1. Tbscertlist 字段该字段是CRL的主体字段,其中包含了大量有关主体的信息。对TBSCertlist 字段说明其说明如下:1.1Verssion字段指出CRL的版本号(或者是2,或者本字段为空以表示是版本1的CRL ,也就是说,本字段在版本1的CRL 里没有定义)。1.2 signature字段计算本CRL 的数字签名所用算法的对象标示符。其值应与2.2.2节中signature Algorthm 字段完全相同。1.3 issuer字段CRL颁发者(即CRL的签名者)的可识别名(DN), issuer 字段类型是Name ,与Name有关定义可参考2.1.2节4部分说明。1.4 thisupdate字段本次CRL的发布时间。以UTCTIme或GeneralizedTime的形式表示。使用UTCTime类型只适用于小于等于2049年份时间。对大于和等于2050年份的时间只能采用GeneralizedTime类型。有关 UTCTime和Generalized的规定参照2.1.2节5部分。1.5 Nextupdate字段预计的下一次CRL 发布时间。该字段的时间表示形式与this update 字段一样。尽管在X.509中规定它是可选字段,在RFC2459中建议要使用本字段。下一次CRL的发布时间不能迟于其中标注的时间。1.6 revockedCertificates字段撤消的证书列表。列表每一项包括User Certificate 是作废证书的序列号,revocationDate 对应证书失效的日期。1.7 两个扩展字段CrlEntryExtensions字段是每条目扩展,crlExtensions字段是每CRL扩展。扩展字段只在CRL第二版本中才出现。各字段说明如下:1.7.1CrlEntryExtensions字段:这个字段是每项扩展。以每个撤消项为基础制定扩展信息。目前共有以下4种类型:1)理由代码,证书撤消的理由。理由代码包括密钥损坏,CA损坏,关系变动,取代,操作终止,证书控制,从CRL去除,以及未指明的理由。2)证书发者:证书发者的名字,这只是在间接CRL的情况下需要。3)控制指示代码;用于证书的临时冻结。4)无效日期:本证书不在有效的日期。1.7.2 crlExtentions字段 以每个CRL为基础制定了CRL的扩展。目的是对整个CRL附加补充说明信息。现在使用的有以下几种:1)机构密钥标识符:用来校验 CRL 数字签名的密钥的唯一标识符。主要用来处理同一CRL发布者拥有多对密钥的情况。2)颁发者别名:CRL发布者的一个或多个别名。3)CRL号:本CRL的唯一序列号。它是单调递增的整数,以便于发现丢失CRL。4) 颁发分布点:指出CRL分布点的名字以及在相应CRL里的证书类型。它也用来标记本CRL是一个间接CRL。5) 增量CRL示符:用来指示本CRL是一个增量CRL 而不是基本CRL。4.3.3. 证书作废列表CRL的主要发布形式1) 完全CRL:将某个CA域内的所有撤消消息都包括在一个CRL中。这对于终端实体数目相对少的域比较适合。2) CRL分布点(分段CRL):允许一个CA的撤消消息通过多个CRL发布出来。和完全CRL相比较,它具有自身的优点: 撤消消息可被分成很多个可控片段以避免庞大CRL。 CRL的扩展语义可以确定出相应CRL分段的具体位置,用户不需要提前知道关于特定证书撤消消息的存放位置。增量CRL:只是产生证书撤消消息的增量部分的相关信息,不需要每撤消一个证书就产生一个完整的、潜在会变得很大的CRL。它一般与1)和2)两种CRL发布形式联合使用,增强时效性。六 椭圆曲线密码体制5.1. 椭圆曲线(Elliptic Curve)公钥密码算法是公开密钥基础设施(PKI)的基础,本项目使用了椭圆曲线(EC)公开密钥密码体制。椭圆曲线密码体制(Ell

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论