首页 CA认证中心统计查询系统论文

CA认证中心统计查询系统论文

举报
开通vip

CA认证中心统计查询系统论文CA认证中心统计查询系统论文 石家庄铁道学院毕业设计 1 绪论 1.1 问题的提出 随着计算机应用的普及,特别是近年来Internet的发展,企业、政府、金融中心 等各家机构都通过与Internet相连的网络发布信息,使用电子邮件和其他网络应用程 序以及开展电子商务等。随着这些机构规模的扩大和分布式应用的不断增加,他们需 要统一的身份认证与访问控制机制,并且能够在其网站上实现单点登录。同时,由于 Internet建立在开放的TCP/IP协议基础上,消息在网络上以数据包的形式传输,这些 数据包通过选择最佳的路...

CA认证中心统计查询系统论文
CA认证中心统计查询系统论文 石家庄铁道学院毕业设计 1 绪论 1.1 问 快递公司问题件快递公司问题件货款处理关于圆的周长面积重点题型关于解方程组的题及答案关于南海问题 的提出 随着计算机应用的普及,特别是近年来Internet的发展,企业、政府、金融中心 等各家机构都通过与Internet相连的网络发布信息,使用电子邮件和其他网络应用程 序以及开展电子商务等。随着这些机构规模的扩大和分布式应用的不断增加,他们需 要统一的身份认证与访问控制机制,并且能够在其网站上实现单点登录。同时,由于 Internet建立在开放的TCP/IP协议基础上,消息在网络上以数据包的形式传输,这些 数据包通过选择最佳的路由到达目的地,如果不采取任何安全措施的话,这些数据很 可能在传输的过程被中断,截取或篡改。另外,通信双方通常都没有建立专用的连接 线路,第三方可以冒充通信一方并伪造出欺骗性消息。 为了保证用户网络应用在安全的网络环境下进行,作为安全基础设施的PKI能为不同的用户实体提供多种安全服务,包括核心服务认证性(Authentication)、完整性(Integrity)、保密性(Confidentiality)和支撑服务不可否认性(Non-Repudiation)、安全时间戳(TSP)和易用性(Ease of Use)等安全服务[Stalling,2000]: ?认证性:该服务用于验证发送消息,接收消息或访问用户应用系统的实体(Entity)身份; ?完整性:该服务用于保证消息在接收时和发送时的内容时一致的,即数据无论是在 传输还是在存储过程中没有被篡改; ?保密性:该服务用于保证只有消息接受者能够对加密消息进行解密,从而防止消息的泄漏; ?不可否认性:该服务用于证实消息的来源,从而防止发送者否认消息的传输; ?安全时间戳:该服务用于提供一个可信的时间权威; ?访问控制:该服务要求用户网络安全解决方案时能够一致地实现在多种用户应 用程序上,并且易于使用。 PKI(Public Key Infrastructure,公开密钥基础设施)采用了公开密钥和数字证书 (Difital Certificate)技术为电子邮件、www、IIS等用户应用提供安全服务地基础设施。 其中数字证书包括了实体的身份及其公开密钥信息,并通过认证权威机构 CA(Certification Authority,认证中心)的数字签名保证了证书的完整性和真实性。对于 用户来说,实施PKI最需要解决的问题就是如何建立用户应用层次的CA。本文在综 1 石家庄铁道学院毕业设计 合研究了PKI技术的基础上,结合不同机构的实际应用,提出了一种基于严格层次 结构的CA模型,同时解决了实现过程中的各项关键技术问题。 1.2 国内外研究现状 ?国外PKI/CA体系现状 从90年代初期以来,美国、加拿大等国相继开展了PKI/CA体系的研究和建设工作;下面就以美、加为例,让我们来看看他们的体系建设。 ?美国联邦PKI(FPKI)体系建设 FPKI体系主要由联邦的认证机构(FBCA),首级认证机构(PCA),次级认证机构(SCA)等组成。它是一种混合结构,可以支持树状结构、网状结构和信任列表等。 它允许加入FPKI体系中的机构可以使用任何结构的PKI信任域。FBCA是FPKI体系中的核心组织,是不同信任域之间的桥梁CA。它与不同的信任域之间建立对等的信 任关系,同时允许用户保留他们自己的原始信任点。它主要负责为不同信任域的首级 CA颁发交叉认证的证书,建立各个信任域的担保等级与FBCA的担保等级之间的一一映射关系,更新交叉认证证书,发布交叉认证证书注销清单。它不要求一个机构在与 另一个机构发生信任关系时,必须遵循联邦PKI所确定的这种映射关系,而是可以采 用它认为合适的映射关系建立彼此之间的信任。 FPKI要正式投入使用必须解决好以下四个方面的问题:验证密钥管理证书的信 任路径; 测试附加功能,以满足联邦PKI体系中的所有成员之间的互操作性;开发 FBCA产品;努力加强在离架商务软件(COTS)产品中PKI的支持。 ?加拿大政府PKI(GOC PKI)体系建设 与FPKI相比,GOC PKI体系结构要简单得多,它是一个树状结构。加拿大政府 PKI体系结构是由政策管理机构(PMA)、中央认证机构(CCF)、一级CA和当地注册机构(LRA)组成。CCF是中央认证机构,它实施GOC PKI体系中的所有策略,签署和管理与一级CA交叉认证的证书。一级CA是由政府运营,制定一个和多个证书担保 的等级,分发和管理数字证书,定期颁布证书注销清单。LRA是一级CA设置的登记机构,其职责是认证和鉴别申请者的身份;为密钥恢复或证书恢复请求进行审批;接 受并审批证书的注销请求。 GOC PKI充分考虑了交易的私密性和安全性,并把保护交易私密性和安全性列为 信息高速公路的首要问题。它提供了完全一致的密钥管理办法,并为加密和数字签名 提供完全相同的验证过程,它是电子认证、鉴别和智能卡等多项技术的集成。 ?国内PKI/CA体系现状 从CA中心的建设背景来看,国内的CA中心大致可以分为三类:大行业或政府部 2 石家庄铁道学院毕业设计 门建立的CA,如CFCA、CTCA 、CCCA等;地方政府与公司共建的CA,如SHECA、天津CA等;商业性CA,如天威诚信公司。 目前国内的PKI/CA行业有如下几个不足:整体发展的速度较快,但具有一定的 盲目性;CA中心繁多,但是许多并不是真正的权威性第三方,CA中心之间的协调和交叉认证困难;整个行业发展有些混乱,CA自身的管理也比较混乱。 PKI/CA是一个新生儿,难免有许多问题,最突出的表现在三个方面:一,大多 数人对CA中心的建设和运行困难认识明显不足,这些困难包括,在CA中心建设之初,是需要投入大量的资金和进行需达到相当标准的硬件环境建设的,而且在CA中心运行之后,需要解决用户规模、用户信任、保险赔付以及保障中心长期运行的资金等一 系列问题;二,有些地方政府行为有误区,有的地方政府把CA认证看成是一种行政管理的手段,使CA中心的建设走上了 计划 项目进度计划表范例计划下载计划下载计划下载课程教学计划下载 经济时期,条块分割和地方保护主义的老 路,殊不知这正与信息社会的开放性和跨地域性背道而驰;三,目前行业的混乱与相 关法律和行业性规范尚未形成有关,除了必需的法律约束之外,政府必须出台这方面 的管理政策,不能叫大家盲目地信任某一个CA,而是通过一定的管理办法保证CA是可信的。 基于国外该行业的发展经验和国内目前的状况,我们认为该行业未来的发展有着 如下趋势:一,国际化趋势。随着电子商务的深入发展和中国加入WTO,中国经济与世界经济的联系将越来越紧密,为满足电子商务的国际化需求,必然要求国内的CA中心与国际性的PKI/CA公司进行交叉认证。二,商业化趋势。网络并不是一个可信 的交易环境,人与人之间不能建立信任,同样政府也不能出面证明,所以CA认证既不同于管理,也不同于法律,而更接近于一种契约,显然这种契约形式的关系更适应 于商业化运作。而且可以预计,目前具有浓厚政府色彩的CA中心也将逐步从政府中剥离出来,采取商业化运作。三,集中化趋势。现在已经建设的多个CA中心几乎都有明显的局部特征和探索性质,规模较小而且简单重复,难以满足社会化服务的要求。 而且,由于在CA中心自身的权威性要求下,必然需要运作规范,技术、资金实力雄 厚,并能适应国际化趋势的大型CA中心来为社会服务。因此,未来几年中,行业内 产业重组已是必然。 1.3 课题研究的背景及意义 互联网的发展和信息技术的普及,给人们的工作和生活带来了前所未有的便利。 然而,由于互联网所具有的广泛性和开放性,决定了互联网不可避免地存在着信息安 全隐患。为了防范信息安全风险,许多新的安全技术和规范不断涌现,PKI(Public Key Infrastructure,公开密钥基础设施)即是其中一员。它是在公开密钥理论和技术基 3 石家庄铁道学院毕业设计 础上发展起来的一种综合安全平台,能够为所有网络应用透明地提供采用加密和数字 签名等密码服务所必需的密钥和证书管理,从而达到保证网上传递信息的安全、真实、 完整和不可抵赖的目的。建立以PKI为基础的安全解决方案,无论是对在Internet上开展的无纸办公等内部业务,还是对电子支付、网上证券交易、网上购物、网上教 育、网上娱乐等网络应用,都是一种安全可靠的选择。在实践过程中各国专家发现, 以PKI/CA为主体的技术是解决网络安全问题简单、高效、经济的理想方案。 CA是PKI的核心部分它实现的功能主要有:?认证中心CA, CA负责管理PKI结 构下的所有用户的证书,把用户的公钥和用户的其他信息绑定在一起在网上验证对方 的身份,CA还要负责用户证书的黑名单登记和黑名单发布。?RA注册中心,RA是数字证书的申请注册、证书签发和管理机构。它是用户和CA的接口,它所获得的用户标识的准确性是CA颁发证书的基础。?数字证书库,他用于存储已签发的数字证书 和公钥,是一种网上公共信息库,用户可以从此处获得其他用户的证书和公钥。?终 端实体,终端实体是PKI用户系统,它是 PKI证书的用户,因此其主要的功能是申 请证书、下载证书、申请作废证书、查询证书的状态及CRL等。 数字证书一般是由CA认证中心签发的,数字证书也被称作CA证书(简称证书),实际是一串很长的数学编码,包含有客户的基本信息及CA的签字,通常保存在电脑硬盘或IC卡中。CA认证中心证明证书主体("证书申请者"获得CA认证中心签发的证书后即成为"证书主体")与证书中所包含的公钥的唯一对应关系。证书中包括证书 申请者的名称及相关信息、申请者的公钥、签发证书的CA的数字签名及证书有效期等内容。通过数字证书的使用,可以实现以下功能: ?确保交易信息的保密性; ?确保参与电子交易各方身份的真实性; ?确保交易信息的完整性; ?确保授权的合法性; ?确保信息发送的不可抵赖性。 1.4 本文的组织 本文共分为九章: 第一章引言,主要介绍国内外研究现状、课题研究的背景及意义、系统平台模式 和本文组织结构。 第二章介绍了系统所用到的开发技术及工具。 第三章分别从密码学基础、PKI组件及功能、PKI的信任模型、系统信任模型、数字证书、系统标准化,五个方面对PKI的相关技术进行了研究。 4 石家庄铁道学院毕业设计 第四章需求分析,分别从功能需求、结构化开发方法、系统的建模、运行环境、 系统流程五个方面对系统可行性和建模方式进行了描述。 第五章SJZRI.CA系统设计,本章在CA系统结构的基础上从全局出发对系统进 行概要设计。 第六章详细设计,解决了SJZRI.CA在实现过程中所遇到的各项关键技术问题,主要包括界面设计、客户端证书请求和下载模块、服务器端证书制作和管理模块、数 据库模块四个方面。 第七章创新点,列出了系统设计过程中所用到的新技术和主要创新。 第八章测试分析,本章从实际应用出发探讨了系统的配置、测试。 第九章结束语,总结目前所做的研究工作和存在的不足,并对未来的研究方向提出了一些设想。 5 石家庄铁道学院毕业设计 2 系统平台模式及开发工具 2.1 系统平台模式 本系统同时采用了C/S和B/S模式,下面两节分别对其进行了说明。 2.1.1 客户机/服务器(C/S)模式 C/S模式主要由客户应用程序、服务器管理程序和中间件三个部分组成。首先, 交互性强是C/S固有的一个优点。在C/S中,客户端有一套完整应用程序,在出错提 示、在线帮助等方面都有强大的功能,并且可以在子程序间自由切换。其次,C/S模式提供了更安全的存取模式。由于C/S配备的是点对点的结构模式,适用于局域网应 用,安全性可以得到可靠地保证。由于C/S在逻辑结构上比B/S少一层,对于相同的任务,C/S完成的速度总比B/S快,使得C/S更利于处理大量数据。但是客户端的开 发相对复杂,周期较长,需要对使用人员进行专门培训,对每个客户安装客户端,维 护复杂,这些方面都加大了具体实施的难度。 2.1.2 Web浏览器/服务器(B/S)模式 B/S模式是一种以Web技术为基础的新型的系统平台模式,它把传统C/S模式中的服务器部分分解为一个数据库服务器与一个或多个应用服务器(Web服务器),从而构成一个三层结构的客户服务器体系,它简化了客户端。其次,它简化了系统的开 发和维护。各个用户通过Http请求在权限范围内调用Web服务器上不同处理程序,从而完成对数据的查询或修改。相对于C/S,B/S的维护具有更大的灵活性。另外, 它使用户的操作变得更简单。C/S模式的客户应用程序有自己特定的规格,使用者需 要接受专门培训。采用B/S模式时,客户端只是一个简单易用的浏览器软件,无论是 决策层还是操作层的人员都无需培训,就可以直接使用。但是B/S采用点对多点、多点对多点这种开放的结构模式,并采用TCP/IP这一类运用于Internet的开放性协议,其安全性只能靠数据服务器上管理密码的数据库来保证,必须对传输的数据进行适当 的加密。 企业在选择系统平台模式时,要考虑到B/S模式的先进性,也要考虑到C/S模式的成熟性,还可以根据企业自身的业务特点,采取C/S与B/S交叉并用的体系结构。 对于本系统,采用浏览器作为客户端既减轻了安装、维护的麻烦,又便于领导迅速熟 悉操作环境;而且减少了开发时间,便于快速实施。维护时只对服务器进行修改即可, 6 石家庄铁道学院毕业设计 客户端不需任何改变。 2.2 开发工具介绍 本系统客户端使用了Dreamweaver MX进行开发,服务器端使用了VC++ 7.0,后台数据库使用Access 2003数据库。 2.2.1 Dreamweaver介绍 Dreamweaver是一款专业的网页制作工具,具有可视化编辑界面和强大的所见即 所得网页编辑功能,它不仅可以制作网页,而且为设计和开发站点提供了良好的操作 平台,集网页制作与网站管理于一身。使用Dreamweaver用户不必编写复杂的HTML源代码,就可快速生成跨平台,跨浏览器的网页,同时, Dreamweaver支持动态HTML,并采用Roundtrip HTML技术,奠定了在网页高级设计功能方面的领先地位。在进行网 页设计过程中, 动态HTML技术能够让用户轻松设计复杂的交互式网页,产生动态效果;而Roundtrip HTML技术则可支持HTML源编辑模式,不会产生冗余代码,使网页渲染速度加快。 Dreamweaver还能与Macromedia公司的其他软件进行完美的合作,可以在Fireworks或其他图片处理程序中创建或编辑图片,然后直接导入到Dreamweaver中,还可以直接添加Flash对象。 Dreamweaver同时也提供了存储代码 编辑环境,主要包括HTML、CSS、JavaScript、CFML、ASP和JSP等语言的代码编辑工具和参考资料。 Macromedia的Roundtrip HTML技术让您无需重新格式化即可直接 导入使用记事本等程序手写的HTML文档,然后在Dreamweaver中根据实际需要重新格 式化代码。 Dreamweaver还允许用户使用CFML、ASP.NET、ASP、JSP及PHP等服务器技术创建动态的网页及程序。另外, Dreamweaver的整个创作环境十分人性化,它不仅界面美观、友好,而且允许用户定制工作环境。用户可以创建完全属于自己的对 象和命令,修改快捷键,甚至可以编写JavaScript代码扩充软件功能。 Dreamweaver MX在原有基础上提供了一系列新的特性,新增功能如下:?改进的 插入工具栏; ?外部文档/代码的无缝结合; ?改进的表格编辑工具; ?灵活的起始页面; ?FTP安全保障; ?跨浏览器有效性检查; ?内置的图形编辑程序让开发更 加节省时间; ?功能更多的CSS支持; ?支持Macromedia Flash元素; ?更多有效的代码编辑工具。 2.2.2 VC++介绍 Windows中种类繁多的句柄(Handle)、千变万化的消息(Message)、和难以捉摸 7 石家庄铁道学院毕业设计 的事例(Instance)非常复杂。于是Microsoft推出了以MFC(Microsoft Foundation Classes)为特色的面向对象的Windows编程环境Visual C++。 Visual C++语言是目前为止功能最强、最受欢迎、应用最广泛的、高效的Windows应用程序开发工具,它是在C语言的基础之上发展起来的,是C语言的超集。相对于其他计算机语言来说,学习并掌握Visual C++具有一定的难度,但当你能够熟练使 用该语言的时候,你将几乎无所不能,因此熟练运用Visual C++是几乎每个程序开发人员所梦想的事。 整个MFC库构成了Windows应用程序的基本框架(Application Framework),同时,MFC由他许多独到之处。 ?Visual C++提供了再次框架上编程的三位一体的工具:AppWizard、Class Wizard和Studio。AppWizard用户可以利用来自动生成Windows应用程序的框架(即起始代码);Class Wizard也可以利用来管理应用程序中的与Windows有关的各种类、消息和处理函数;Studio还可以用以可视化的方式创建和管理各类资源。 ?具有灵活的程序结构。它提管理应用数据,并使用视图来管理用户同文档的交 互作用。 ?具有各种Windows API的封装类。封装的对象有:窗口、对话框、设备描述表、 GDI画图对象、控制等。 ?支持上下文相关帮助。 ?通过数据映射机制提供了简单的编程接口,来与对话框里的控制进行动态的数 据交换,同时对输入的数据进行有效性检查。 ?具有各种管理集合数据的集类。 借助这些工具,用户只需加入与具体应用有关的代码和资源,其它都由MFC提供,从而大大提高了应用程序的开发效率。Visual C++开发环境Microsoft Developer Studio,是运行于Windows平台的集成开发环境(IDE),是Microsoft Visual C++,Microsoft J++和其他几个产品所公用的开发环境。 Microsoft Developer Studio 由菜单栏、工具栏、Workspace窗口、代码编辑窗口、输出(Output)窗口、(调试Debug)等组件组成。而这些窗口可以再分,如调试窗口又可以分成观察窗口、变量窗口、寄 存器窗口、存储器窗口、调试堆栈窗口及汇编窗口。Microsoft Developer Studio 最大的特点是灵活多变,可以根据个人习惯来定制窗口使程序的开发工作轻松自如。 2.2.3 Access 2000介绍 Access是微软(Microsoft)公司面向小型用户的桌面关系数据库管理系统,但 是它提供的功能却非常强大,不仅包括一般数据库管理系统中都有的SQL(结构化查 8 石家庄铁道学院毕业设计 询语言)查询,而且支持数据的完整性和约束(包括:主键约束和实体完整性、外键 约束和参照完整性、CHECK约束、UNIQUE约束等)。其最新版本Access2000不仅使用了中文界面,而且在功能上也有了很大的改进,不仅可以在设计数据库时使用“宏 (Macro)”功能或是使用VBA(Visual Basic for Application,嵌入式Visual basic),还可以使用数据访问页,将自己设计的数据库发布到因特网上。 ?数据表:数据表是一组相关联的数据按行和列排列的二维表格,简称 为表(Table),通常用来描写一个实体。一个数据库由多个表组成,各个数 据表之间存在某种关系。 ?记录与字段:数据表中的每一列称为一个字段(Field),它对应表格中的数据项,每个数据项的名称称为字段名。字段的取值范围称为域,通常用 字段描述表格实体在某一方面的属性。表格的项目名称下面的每一行称为一个 记录(Record),它是字段值的集合。记录中的每个字段的取值,称为字段值 或分量。记录中的数据随着每一行记录的不同而变化。 ?关键字:如果数据表中某个字段值能唯一地确定一个记录,用以区分不 同的记录,则称该字段名为候选关键字。一个表中可存在多个候选关键字,选 定其中一个作为主关键字。主关键字不能为空值。在数据库中,表与表之间的 关系是通过关键字来相互关联的。一个表中记录与另一个表中记录之间的数量 对应关系,分为一对一、一对多(或多对一)、多对多关系,常用的是一对多 关系,而多对多关系必须转化成一对多关系。 ?索引:一个表可以按照某种特定的顺序进行保存或排列。通过索引,数 据库引擎就能非常迅速地查找某个特定的记录。常见的情况是,表是一个经过 分类排序和建立索引后的记录的集合。 9 石家庄铁道学院毕业设计 3 PKI技术的研究 本章主要介绍加密算法、数字证书和PKI/CA在网络安全中的作用以及现有的一 些PKI标准。 3.1 密码学基础 密码学是一种使用加密算法(Encryption Algorithm)保护数据的科学,是PKI的理论基础。这些加密算法主要通过数学运算将明文数据和密钥(Key)结合起来产生密文数据。加密算法通常分为两类:对称算法(Symmetric Algorithm)和公开密钥算法(Public Key Algorithm)[RSA,2000]。 对称算法有时又叫传统密钥算法,其加密与解密密钥是相同的,或者解密密钥能够很容易从加密密钥导出,这种算法的加/解密过程可以表示为: Ek(M)=C Dk(C)=M 其中,E表示加密(Encryption),k表示密钥,M表示消息(Message),C表示密文(Ciphertext),D表示解密(Decryption)。对称算法要求通信双方事先协商好密钥,其安全性也依赖于密钥的保密。泄漏密钥k意味着其他人也能够对消息进行加/解密,因此双方必须在传输加密数据之前安全地进行密钥交换。当通信双方互不相识或者双方 进行第一次通信时,这种交换就显得非常困难[Stalling,2000]。 相比而言, 公开密钥算法的基本特征在于加密与解密密钥是不同的,知道其中一个,在计算上很难推导或计算出另一个, 这种算法的加/解密过程可以表示为: Epuk(M)=C Dprk(C)=M 其中puk表示公开密钥(Public Key),prk表示私有密钥(Private Key),公开密钥算法的每个通信实体拥有一对公开密钥和私有密钥,并且将前者对外公开。比如,Bob得到Alice的公开密钥就可以使用该密钥向Bob发送加密数据,而且只有Alice能够通过自己的私有密钥将密文恢复出明文。同样的, Bob可以使用其私有密钥对发送给Bob的消息进行数字签名,而Bob通过Alice的公开密钥就能够验证消息是否真的来自 Alice以及数字在传输过程中是否已被篡改。 3.2 PKI组件及功能 3.2.1 PKI组件介绍 10 石家庄铁道学院毕业设计 完整的PKI是指创建、管理、存储、分发和撤销证书所需要的硬件、软件、人员 策略和过程的集合。具体包括五类组成部分:CA,RA(Registration Authority),证书/CRL库,最终用户(End User)和依赖方(Relying Party)组成[RFC,2459]。 CA、RA和证书/CRL库是PKI的核心功能组件,实现了PKI的基本功能,比如签发证书、撤销证书、发布CRL、存储和检索证书等。 CA根据证书策略验证申请者提交的信息,然后使用其私有密钥对证书进行数字签 名;除此之外,CA还负责撤销证书,发布CRL。 RA是最终用户与CA之间的桥梁,是提供注册服务和接受证书申请的专门机构,并且负责管理CA签发的证书。 证书/CRL库用于存储密钥,证书和CRL。除了核心组件之外,PKI还包括最终用户和依赖方,最终用户可以是人、应用服务器、也可以是路由器、防火墙等网络设备。依 赖方是接受包括证书和签名信息的人和机构,利用证书提供的公钥验证其有效性,与持证人建立保密通信,接受方处于依赖的地位[Nan and Chen,2000]。 为了建立更完善的网络信任环境,IETF(Internet Engineering Tast force , Internet 工程任务组)PKIX(Public Key Infrastructure Using X.509)工作小组不断的对PKI进行扩充,如引入新的组件TSA(Time Stamp Authority,时间戳中心)提供不可否认性服务。TSA将时间戳和数字签名相结合,对某一特定时间的交易信息进行签名,证明其准确的时间。如果交易一方声称某次交易是后来伪造的,对方只需出示交易时TSA的签名就可以证明该交易发生的时间。 3.2.2 现有的PKI标准 基于PKI的框架,不同厂商有各自的标准,其中比较著名的有美国RSA实验室制定的PKCS(Public-Key Cryptography Standards);MasterCard公司制订的SET(Secure Electronic Transaction),用于支持网上银行卡的支付;IETF(Internet 工程工作组)的PKIX工作组为支持电子邮件、www和IP安全也指定了一系列标准草案。 上述标准中PKCS标准的使用最为广泛,它综合补充多种其他国际标准组织的有 关标准,根据应用的需要定义了一系列标准,涵盖了对数字签名、数字封包、数字证 书,密钥交换协议、交互身份鉴别等应用的支持。下面是PKCS协议族中常用的标准: ?PKCS #1(RSA Cryptography Standard):RSA加密标准。 ?PKCS #7(Cryptographic Message Syntax Standard):密文语法标准,被加密 或签名数据包的通用格式语法。 ?PKCS #10(Certification Request Syntax Standard):证书请求语法标准, 包含公钥和名字等一组属性。 11 石家庄铁道学院毕业设计 3.3 系统的信任模型 PKI的目的是建立可信任的网络环境,因此选择合适的信任模型和确定最终用户 的信任点是PKI设计的重要环节。目前,已经应用的信任模型包括严格层次 (Hierarchical)结构模型,分布式信任模型,Web模型和以用户为中心的信任模型[Adams and Lloyd,1999]。本系统采用的是严格层次结构模型,它是最早被提出的PKI信任模型。在该模型中,整个信任环境中的信任点是根CA,其最基本的形式是由一个CA组成单级CA层次结构,我们所设计的就是单级CA层次结构,所以需要自签名。 3.4 数字证书 数字证书一般简称为证书,与司机驾驶执照和日常使用的其他身份证件相似,它包括一个公开密钥,拥有对应私有密钥的实体身份以及CA对这些内容的数字签名,其格式一般遵循ITU(International Telecomunications Unions,国际电信同盟)制定的X.509标准,目前已经发展到了版本3,其具体字段及说明如表2.1所示[RFC,2459]: 表3-1 X..509v3数字证书字段名及说明 字段名 说明 Version 证书版本号 Serial number 证书唯一序列号 Signature Algorithm ID CA签名使用算法标志 Issuer name 证书发行者名称 Validity period 证书生效日期和失效日期 Subject(user)name 证书主体名称 Subject public key information 证书主体公开密钥信息 Issuer unique indentifier CA唯一标志 Subject unique indentifier 证书主体唯一标志 Extentions 证书扩充内容 Signature on the above fields CA对以上内容的签名 3.5 系统的标准化 以下是本系统的标准化内容列表: ?基本安全算法: 12 石家庄铁道学院毕业设计 表3-2 基本安全算法列表 标准化内容 标准名称 备注 PKCS#1:RSA密码规范(v2.O) RFC 2437 PKCS#7:加密报文语法(v1.5) RFC 2315 基本安全算法 PKCS#10:认证请求语法(v1.5) RFC 2314 MD5散列函数 RFC 1321 RSA用散列函数 ANSI X 31-2 ?公钥基础设施: 表3-3 X.509v3公钥基础设施列表 标准化内容 标准名称 备注 ASN.1规范 X.208 CA证书格式 X.509 InternetX.509 PKI证书和CRL轮廓 RFC 2459/PKIX InternetX.509 PKI证书管理协议 RFC 2510/PKIX 公钥基础设施 InternetX.509 PKI证书政策和实施框架 RFC 2459/PKIX InternetX.509 PKI证书中的密钥交换算RFC 2528/PKIX 法的表达 InternetX.509 PKI时间戳协议TSP PKIX InternetX.509 PKI证书管理报文 PKIX 13 石家庄铁道学院毕业设计 4 需求分析 在研究了系统开发模式和PKI理论基础之后,结合本系统的自身特点,以理论为 指导,进行CA的构建。从本章开始,便进入系统开发设计阶段。 4.1 功能需求 随着计算机的普及和互联网的飞速发展,人们对网络上数据传输的安全性,数据 传输的完整性,保密性以及真实性有了更高的要求,CA认证中心作为第三方的权威认证机构应运而生。本项目主要解决以下需求: ?用户的注册。 ?用户申请个人证书。 ?下载已经颁发的证书。 ?查询吊销的证书,下载吊销列表。 ?CA管理员核查用户个人信息,如果符合要求且真实可靠则同意颁发个人证书。 ?吊销个人证书。 ?生成根证书。 ?生成吊销列表。 4.2 结构化开发方法 软件开发方法是一种使用早已定义好的技术集及符号表示习惯来组织软件生产 过程的方法,好的软件开发方法是克服软件微机的重要途径之一,对软件工程及软件产业的发展起到了不可估量的作用。本系统需要处理大量数据针对这一特点我们采用 了“结构化方法”进行开发,结构化方法由结构化分析(SA)、结构化设计(SD)和结 构化程序设计(SP)构成,它是一种面向数据流的开发方法,特别适合于数据处理领域的问题,应用较广,技术成熟。 为了能圆满的完成任务,我进行了大量的前期准备工作包括系统的可行性研究、 需求分析、用户要求等,最终确定采用结构化的建模方式。本系统设计总的指导思想 是:自顶向下、逐步求精,基本原则是功能的分解与抽象,所使用的工具有数据流图 (DFD) 和数据字典(DD)。 ?数据流图在SJZRI.CA中的应用: 利用数据流图表示系统逻辑模型,它以图形的方式描绘了数据在系统中流动和处 理的过程,先考虑问题最本质的方面,忽略细节,形成问题的高层概念,然后再逐层添 14 石家庄铁道学院毕业设计 加细节,即在分层过程中采用不同程度的”抽象”级别,最高层的问题越抽象,而低层的较为具体,由此顶层抽象的描述了整个系统,底层具体地画出了系统的每一个细节,而 中间层是从抽象到具体的逐步过渡。 ?数据字典在系统的应用: 本系统的数据字典描述了系统的”分解”,系统由哪几部分组成,个部分之间的联系,它定义了数据流图中的各个成分的具体含义,它以一种准确的、无二义性的说明方 式为系统的分析、设计及维护提供了有关元素的一致的定义和详细的描述,它和数据 字典共同构成了系统的逻辑模型。 以下两节描述了具体的建模过程。 4.3 系统的建模 数据流图可以清楚反映用户需求及数据加工处理过程,有利于明确各个功能模块 之间的关系。 4.3.1 数据流图 前注: 数据流:数据流有一组固定成分的数据组成,表示数据的流向。 加工:加工描述了输入数据流到输出数据流之间的变幻,也就是输入数据流作了什么 处理后变成了输出数据流。 文件:文件用来表示暂时存储的数据,每个文件都有一个名字。 宿/源:源和宿通常是指存在于软件系统之外的人员或组织。 ?根证书的制作 CA服CA务器根私钥文件 超1.CA的数级根证书制作根证书所据库 管的制作需数据 根证书 理模块 员 图4-1 顶层图 15 石家庄铁道学院毕业设计 注:首先由CA超级管理员输入制作根证书所需数据(数据的包含见后面的数据 词典)。CA根证书制作模块按要求制作根证书并产生私钥文件,私钥文件用私钥密码 加密得到加密后的私钥文件,根证书制作模块按超级管理员要求把根证书于私钥文件 一起存入CA服务器中。(如果CA没有根证书就无法向用户颁发值得信任的证书) CA 超 级 管CA服1.2理CSP 务器证书员 公钥与私钥 的数制作私钥文件 据库 (自 1.1读取申请证书的签申请证书的数据 证书 据 申请数数据 名) 图4-2 1层图 注:CSP产生公钥私钥对,公钥与读取得到的申请数据一起产生了证书,私钥写 在私钥文件内。 ?普通用户的证书的申请与下载 CA申请证书者数据 1.CA 数用申请证书者数据 网站据证书与私钥文件(或户 模块 库拒绝信息 证书与私钥文件模(或拒绝信息 申请处理结果 块 图4-3 顶层图1 16 石家庄铁道学院毕业设计 CA申请证书者数据 的CA申请证书者数据 2.CA操证书与私钥文件(或数管理作拒绝信息) 据模块 员 库 申请处理结果申请处理结果 模 块 图4-4 顶层图2 注:证书的申请有可能被通过也可能被拒绝。开始申请时,需要设定密码,并与 个人资料一起存入CA数据库模块;如果最后通过申请,下载证书时需要验证密码及 身份,如果没有被通过,被拒绝则是得到拒绝的信息。 CA管理模块 CSP 2.12.2公钥与私钥 读取证书申请证书者的使用根证书的证书的制数据 申请证书者的数据 私钥签名 数据 作 下载证书 申请处理结果 图4-5 1层图 注:证书的数据即是申请证书者的数据,这个加工是从源数据库管理模块提取申 请证书者的数据,再将其传给CA操作员,CA操作员再决定对申请的通过与否。如果通过,就用用户申请信息制作出证书,否则传回拒绝信息。(证书信息流包括证书或 者拒绝信息) 17 石家庄铁道学院毕业设计 1.1传给数申请证书者的数据 申请证书者的数据 据库并返回 一个序列号 b.申请结果 1.2调入证根据序列号和密码下载 书私钥文件 或者拒绝信根据结果调取证书与私钥文件 息 a.证书与私钥文件或拒绝信钥文件 息 图4-6 顶层图 注:申请者输入必要数据,网站发给一个编号,并将其数据传给数据库;下载证 书时凭着申请使得自己输入的密码与发给的序列号请求下载,网站访问数据库,察看 处理结果,根据结果决定是发证书与私钥文件还是返回拒绝信息。 4.3.2 数据词典 ?证书 证书=证书主体+证书签名算法标示+证书签名算法值; 证书主体=证书版本号+证书序列号+证书发行者名称+证书有效期+证书主体名称+证书公钥+证书发行者ID+证书主体ID+证书的扩展段; 证书的扩展段=身份证号+E-MAIL地址。 ?申请证书者的数据 申请证书者的数据=姓名+性别+年龄+所属系部+身份证号+E-MAIL地址+证书下 载密码。 ?申请者名单和数据 这是一定时间内全部的申请证书的人员的名单和数据(这里的数据所包含的同申 请证书者的数据) ?申请根证书所需数据 申请根证书所需数据=版本+签字算法+公钥算法+发行机构+有效期+证书文件存放位置+私钥文件的存放位置+对私钥文件加密的密码 ?申请处理结果 申请处理结果=申请序列号+姓名+处理的结果(拒绝还是通过) 18 石家庄铁道学院毕业设计 4.3.3 模块功能分析图与使用权限 CA电子身份认证的原形 CA网站模CA 管理 块 模块 5 23.4 ..1下.返用. 载对回户填证 申一个写书请 个人用与做CA数据库申 信户私出请息模块 个 钥相序人文应 列信件的 号 息 处 理 用户 CA操作员 图4-7 权限分析图 ?CA网站模块功能:将用户个人信息传给数据库模块并给申请者一个申请者序 列号;从数据库模块调出申请者的处理结果,按结果决定下载证书与私钥文件还是返 回拒绝信息。 权限:只能对数据库的数据进行访问察看,而没有修改权限。不与管理模块直接 进行通信,无法对管理模块进行任何访问。 ?CA数据库模块功能:对网站模块与管理模块传来的数据进行存储,CA中多数数 据与文件管理均由数据库模块完成。 权限:对数据与文件进行存储,并对其提供简单操作,但无法修改文件与数据, 管理模块与网站模块均能对其进行访问。 ?CA管理模块功能:证书的制作私钥文件的产生与加密并有权决定证书的颁发 与否。 权限:无法访问网站模块,可以访问数据块模块,应该具有对数据模块中文件与 数据操作修改的权限 4.4 运行环境 19 石家庄铁道学院毕业设计 4.4.1 软件环境 ?操作系统 微软的操作系统平台通过不断的升级完善,在商业上也得到了越来越多的应用, 其中作为微软力推的Windows2000 Server,功能强大,适合做网络操作系统平台。 ?数据库系统 Access 2000与2000 Server操作系统是一对完美的组合,它使用方便,适合做数据量不太大的中型的关系数据库。 ?应用服务器 Microsoft Windows 2000 的 Internet 信息服务 (IIS) 给 Windows 带来 Web 计算的强大功能。 通过 IIS,您可以轻松地共享文件和打印并为安全发布信息创建 应用程序来改善您的工作。 IIS 是创建和开发电子商务业解决方案的安全平台。 IIS 也可以轻松地将任务准则应用程序带给 Web。 如果 Web 站点包含的文件位于其他主目录的驱动器上,或在其他计算机上,就 必须创建虚拟目录将这些文件包含到您的 Web 站点中。要使用其他计算机上的目录, 您必须指定该目录的通用命名约定 (UNC) 名称并提供用户名和密码用作访问权限。 如果网络具有名称解析系统(通常为 DNS),那么访问者可以简单地在其浏览器地址 栏中键入计算机名到达站点。如果网络没有名称解析系统,那么访问者必须键入计算 机的数字 IP 地址。 4.4.2 网络系统硬件资源 ?用户端 配置一台微机和Modem,上网访问CA服务器,申请和下载证书以及下载吊销列表。 用户的私钥保存在本机的CSP密钥容器中,用户也可以将私钥导出到外界介质上。 ?CA服务器 配置一台高性能的微机,对用户的申请信息进行处理,决定颁发、扔掉、还是吊 销证书。 20 石家庄铁道学院毕业设计 注 CA CA 服务器 数据库 模块间均采用基于CORBA的SSL安 全通信 返回 申请 证书 /撤销 Web对外 Web证书证书 /CRL 服务器 发布 数据库 发送证书/CRL 注册管理 下载 返回 返回 申请 证书 /撤销 结果 查询 /CRL 证书 用户 用户 图4-8 系统拓扑结构 21 石家庄铁道学院毕业设计 5 SJZRI.CA系统设计 系统设计是在需求分析的基础上,根据分析提出的逻辑模型建立起系统的物理实 施方案;根据逻辑模型所提出的各项功能要求,结合实际的设计条件,详细地设计系 统的处理流程和基本结构。 5.1 CA的体系结构 本系统的设计采用Browser/Web Server/DataBase三层体系结构。服务器接受请求,通过应用程序服务器执行一个ASP页面,并返回其输出,从而实现与客户机进行 信息资源的交互。数据库服务器用来存储所用到的各种数据;客户端只需要一个浏览 器即可。 CA服务器端采用Client/Server的体系结构,它和数据库服务器相连,对数据 库中的数据进行操作。 数据中心商家网站 (服务器证书)CA网站管理模块 通信接口 CA根证书/服务器证书 RA中心RA中心 (服务器证书)(服务器证书) 图5-1 CA系统结构 5.2 各模块功能描述 5.2.1 证书申请和颁发模块(客户端的设计) 这些 Web 登记页使您可以通过 Web 浏览器连接至 CA,并执行公共任务,例如从 CA 申请证书、下载证书、下载 CA 的根证书、使用 PKCS #10 文件提交证书申请、 22 石家庄铁道学院毕业设计 检索 CA 的证书吊销列表 (CRL)、在线状态查询等。 功能要求: ?用户注册: 用户要申请证书必须先在本系统注册,登录后才能进行一些操作。用户需要填写 的个人信息包括: 表5-1 注册个人信息表 省份 城市/地区 公司/团体 部门/机构 用户名 真实姓名 性别 密码 确认密码 E-mail 通讯地址 如果选择的用户名在数据库中不存在则用户申请成功,否则系统会提示重新选择 用户名,重新注册(一个用户名只能申请一个个人证书)。注册成功后口令用MD5算 法加密,以保证密码在数据库中安全存储。 ?安装ca根证书: 下载并且安装自签名的根证书。以文件的形式下载根证书。下载后解压缩,打开 根证书文件,选择安装证书,按提示把根证书安装到根证书区。用户必须先下载安装 根证书,然后才能建立证书信任链,否则自己申请的证书和下载别人的证书就不能得 到验证。 ?申请证书: 提交pkcs10格式的证书请求。用户登录以后就可以申请证书,证书申请由客户 使用Web连接到CA,用户需要填写自己的真实信息,包括: 表5-2 申请填写信息 持证人姓名 城市/地区 公司/团体 密码 确认密码 E-mail 证件号码 加密算法 系统使用CEnroll组件把申请信息处理为 PKCS #10 格式的 申请报告 工作调动申请报告申请赶工费用报告农业普查经费申请报告幼儿园办园申请报告设备购置项目申请报告 ,然后提交给 CA。 ?下载并安装个人数字证书: 先检查证书是否颁发,如果已经颁发则提供证书安装,客户端使用(IcertRequest)从证书数据库获得发布的证书,并使用CEnroll组件将它安装在自己的本地证书存储 区中。 ?证书的查询: 列出证书的name和email和证书的状态。如果状态是颁发了的证书则可以允许 23 石家庄铁道学院毕业设计 自由下载(证书名:name.cer)。 ?其他功能: 能够以web方式提供证书申请列表、颁发的证书列表、被拒绝的证书列表、吊销 的证书列表。 ?提供证书吊销列表的下载(以crl文件的形式xiang.crl)。 5.2.2 证书制作和管理模块(服务器端的设计) CA中心的功能包括:审核用户申请、制作证书、保存证书及用户信息、发放证 书、吊销及给出黑名单列表。 CA中心由三部分构成:数据中心、管理模块、通讯接口。数据中心用于保存用 户信息和数字证书;管理模块审核用户申请、制作证书、管理用户证书;通讯接口与 所有的RA中心通讯。 RA中心的主要职责是审核用户身份,处理挂失业务。为了方便用户办理业务, 所以设立多个RA中心。通过CA中心的通讯接口读取、保存数据。本系统中将CA中 心和RA中心合并在一起。 CA服务器端实现的主要功能有: ?证书的颁发(含制作),拒绝。 CA管理员核查用户的个人信息,如果信息符合系统的要求且真实可靠,则CA管 理员给该用户颁发证书,否则拒绝该证书请求。 ?证书的吊销。 由于证书到期,个人信息改变或私钥泄漏等各方面原因,用户申请吊销此证书, CA管理员将个人证书的状态置为吊销。 ?证书的吊销列表的生成及发布。 系统管理员周期性的生成吊销列表,供所有用户下载。 5.2.3 数据库模块 IIS 数据库 管理员界面 用户界面 图5-2 模块示意图 24 石家庄铁道学院毕业设计 不论是客户端证书请求和下载模块还是证书制作和管模块都需要访问CA数据 库,本数据库使用Aaccress 2000数据库。 数据库中主要存放: ?由 CA 颁发的每一份证书; cflag=1 ?由 CA 吊销的每一份证书; cflag=3 ?CA 接收的每 一份证书申请; cflag=2 ?CA 拒绝的每一份证书申请; cflag=4 ?用户注册的个人信息; ?申请的个人信息; ?申请时返回的序列号及用户设定的密码。 除此之外,数据库中还存放根证书文件,证书吊销列表文件等。由于根证书的私 钥是存放到特定设备中的,这保证了根证书的私钥安全,可以有效防止伪造证书。个 人用户的私钥是在客户端产生的,只有用户本人拥有与证书对应的私钥,可以有效防 止伪造签名。 25 石家庄铁道学院毕业设计 6 详细设计 完成了需求分析和系统设计之后,便可以使用我们所掌握的技术实现系统的功 能,这里介绍核心模块的实现过程。 6.1 界面设计 我负责客户端界面的设计。良好的用户界面,给用户一个友好的操作环境,尤其 是基于Web的系统,这方面更显得非常重要。本系统使用浅色色系,使用网页的模版 布局,简洁而富有条理。界面的设计主要使用Dreamweaver和Fireworks,作为Adobe 公司力推的网页设计工具,他们在页面布局、色彩调整、代码编辑等方面拥有成熟的 技术支持,极大地方便了界面设计工作。 6.2 客户端证书请求和下载模块 6.2.1 模块技术支持 ?CEnroll组件在系统中的应用 CEnroll组件是微软提供的一个标准的COM,微软的Windows系列操作系统里都自带了这个组件。他的实现在xenroll.dll文件里,这个文件在系统的System32目录 下,在VC++里我们可以通过这个组件的classid来调用这个组件。这个组件主要提供以下方法: HRESULT createPKCS10 ( BSTR DNName; BSTR Usage; BSTR *pPKCS10; ); 这个方法产生符合PKCS#10标准的Base64编码的证书请求信息。在这个过程中产生了一个公/私钥对,公钥放在证书PKCS#10的证书请求信息中,然后用私钥对证书请求信息签名,接着把私钥放在相应的CSP的容器里。 HRESULT acceptPKCS7 ( BSTR PKCS7; 26 石家庄铁道学院毕业设计 ); 这个方法接收和处理包括证书的Base64编码的PKCS#7消息。一般的,如果PKCS#7消息里的证书是个人证书,在CSP里找到与证书对应的私钥后,把证书和私 钥放到证书存储区中的MY库;如果是其他人的证书就放到证书存储区中的CA库中; 如果PKCS#7消息里的证书是根证书的话,系统将提醒用户一个根证书将要被安装, 用户可以选者是否相信这个根证书,选择是的话根证书将被放到证书存储区中的 ROOT库。 6.2.2 注册功能 ?用户注册 为了能方便的为用户服务,系统提供了区分普通用户和高级用户的机制即用户注 册。普通用户要想申请证书必须先网上注册,注册成功后即可进行在线申请,用户填 写个人信息后,在服务器端对个人信息进行处理。如果用户选择的用户名和数据库中 的用户名都不雷同,则用户申请成功,将用户的信息保存在数据库表user中。 ?口令加密 如果用户的口令以明码的方式在网络上传输,很容易被非法截获,而且密码未经 加密便存入数据库,让无关人员看到,便会泄露用户的信息,后果不堪设想,所以使 用VC++实现了客户端用户口令MD5的加密传输。加密后的信息以乱码的形式存储在 数据库中,这样口令即使被截获得到的也是一些乱码没有应用价值。调用md5()函数 对输入的密码进行加密,使得口令在数据库中以密文的形式存储,提高安全性。 password=md5(password) mCmd.CommandText = "INSERT INTO user (usename,realname,password,email,province,city,compeny,department,sex,address) VALUES ('"&name&"','"&realname&"','"&password&"','"&email&"','"&province&"','"&city& "','"&orgnization&"','"&department&"','"&sex&"','"&address&"')" mCmd.Execute 否则,若该用户名已经存在则提示用户重新选择用户名 else response.write "

用户名已经存在,请重新选择用户名!" 用户注册的界面如下所示: 27 石家庄铁道学院毕业设计 图6-1 注册信息填写图 6.2.3 根证书下载 点击”根证书下载”会弹出对话框提示用户下载根证书,按下保存键即可将根证书下载到本机。此时下载的是压缩包xiang.rar,释放后将得到自签名的根证书,如图 6-2所示。这时的根证书是不受信任的, 它不能验证个人证书是否真实,所以需要安 装此证书。 28 石家庄铁道学院毕业设计 图6-2 不受信任的根证书 要想使之可信需单击”安装证书”按钮,进入证书导入向导,按提示安装根证书完毕后,将根证书存储在用户受信任的根证书颁发机构的证书库中,即得到受信任的 根证书,如图6-3所示。 图6-3 受信任的根证书 29 石家庄铁道学院毕业设计 6.2.4 证书申请功能 我们的系统提供了在线和离线两种证书申请方式,用户可根据各自不同的情况加 以选择。 6.2.4.1 证书在线申请 CA通过Web页面为最终用户提供在线申请服务,申请过程采用了PKCS#10认证请求格式和PKCS#7响应方式。在线申请为最终用户创建的PKCS#10认证请求包括最终用户名、电子邮件、身份证号和所属部门等内容以及最终用户的公开密钥信息;而 PKCS#7响应方式则包括了从根CA到最终用户的证书层次链之间的所有证书。 我所设计的Web页面中含有的脚本程序通过C++用户接口调用浏览器底层的登记 控件;动态链接库和加密模块(Cryptographic Modules)为最终用户产生私有密钥/公开密钥对,并向Web服务器提交用户的身份信息和公开密钥。一但CA成功的为用户签发证书之后,Web页面同样使用C++用户接口将PKCS#7格式的消息传导入用户的 浏览器中。在线申请的页面如下: 图6-4 个人信息填写图 客户端可以对输入的信息作非空以及e_mail地址的格式进行验证,这样可以提 高效率,避免提交到服务器端在发现格式不正确,再返回给客户端重新填写,节省了 网络资源。 30 石家庄铁道学院毕业设计 如果输入满足条件则系统调用CEnroll控件将信息处理成PKCS#10标准的证书请求格式,PKCS#10证书请求可以包括证书请求者的名字、证书请求者的公钥和其 他的一系列可选的属性组成。先定义要包含的个人基本信息,如示: DNName = "CN=" & theForm.name.value + ",E=" & theForm.email.value + ",O=" & theForm.orgnization.value + ",OU=" & theForm.city.value + ",Description=" & theForm.page.value DNName符合X.500命名转化标准的,类似于"CN=User, O=Microsoft"。 定义对个人信息做消息摘要时采用的哈希算法: enroll.HashAlgorithm = "MD5" 利用Cnroll控件的CreatePKCS10方法将请求信息生成消息摘要并用个人的私钥 签名,再将签名后的消息摘要转化成base64编码的PKCS#10标准的证书请求格式。Base64编码就是把3个8bit的字节分为4段6bit,然后在每个前面添2个零,把证书请求信息转化成Base64编码是便于在网上传输。 编码后的证书请求被发送到证书颁发机构(CA),并保存在证书服务器中,如示: mCmd.CommandText="INSERTINTOCAREC (id,name,email,jibie,pkcs10,cflag,flag2,certtime) VALUES('"&id&"','"&name&"','"&email&"','"&jibie&"','"&pkcs10&"','1','2','"&certti me&"')" mCmd.CommandText = "INSERT INTO user (id,password,city,num,department) VALUES ('"&id&"','"&usepw&"','"&usercity&"','"&jibie&"','"&userdepartment&"')" 若封装后的个人信息经CA操作员审核无误,CA就可以为用户制作X.509证书了。 6.2.4.2 证书离线申请 系统提供的离线证书申请服务是由CA操作员直接向CA服务器输入最终用户的身份信息,选择相应的密钥生成算法与密钥对长度生成密钥,并提交证书申请。一但 CA操作员提交了证书申请,CA相应的服务程序将会创建PKCS#10请求消息。与在线申请相比,离线申请不需要用户直接干预,也不需要通过Web服务器进行证书请求登记,而是由CA操作员直接根据最终用户的书面请求进行申请,其身份验证是通过严 格的面对面检查,而且离线申请证书的密钥对长度不受现有浏览器限制,可以根据需 要选择任意密钥长度或加入更多的密钥生成算法,离线证书申请与下载的具体流程如 下: ?最终用户向CA提交书面申请,并选择相关密钥生成算法和密钥对的长度; ?CA操作员对申请进行审核,要求其出示相关证明文件; 31 石家庄铁道学院毕业设计 ?CA操作员输入用户信息,根据用户要求产生密钥对并提交用户申请; ?CA操作员下载个人信息文件,并通过安全的方式传给最终用户。 离线 申请表 食品经营许可证新办申请表下载调动申请表下载出差申请表下载就业申请表下载数据下载申请表 需填写的主要内容如下: 表6-1 离线申请表 证书基本信息 用户基本信息 证书有效期 10年 省份 河北省 加密算法 RSA、MD5 城市 石家庄 身份证号码 *************** 单位名称 石家庄铁道学院 密码 ------------ 部门名称 计算机系 证书类型 个人数字证书 用户姓名 张翔 申请人签名盖章: 性别 男 电子邮件 zh_xiang@163.com 6.2.5 证书下载功能 用户登录网站,下载自己申请的证书。在文本框中填入申请时返回的序列号和自 己设置的密码,按下提交转向下一处理页面。输入页面如下: 图6-5 下载证书需填写的内容 如果密码正确则通过输入证书申请时返回的序列号来查询证书的状态。如果此时 请求尚未批准则弹出:“您的请求尚未经过审批,请耐心等待。”由于身份不符等原因 造成申请失败则弹出: “您的请求未获批准,请重新审核你的材料”。如果此时请求 已获批准则弹出: “您的证书已获准颁发!请安装此证书。点击”安装此证书”,按对话框提示进行安装,即可把个人证书保存到本地系统的CSP中。主要代码如下: Sub AcceptCert 32 石家庄铁道学院毕业设计 <%'=PKCS7%> sPKCS7="" <%=sPKCS7%> sPKCS7=sPKCS7 & "-----END CERTIFICATE-----" & vbNewLine On Error Resume Next Enroll.getCertFromPKCS7(sPKCS7) Enroll.acceptPKCS7(sPKCS7) If 0 = err.Number Then Alert "您申请的证书已经下载并且安装成功!" Else If Err.Number=&H80092004 Then Alert "不能安装此证书:与此证书相关的专用密钥找不到或者证书已经安装。" Else Alert "不能安装此证书:请验证您的 CSP 设置。" End If End If End sub 安装完毕后就可以从CSP中导出个人证书,该证书采用base64进行编码,编码 后的证书如下: -----BEGIN CERTIFICATE----- MIIDgzCCAuygAwIBAgIBFjANBgkqhkiG9w0BAQQFADB5MXcwEQYDVQQDEwp6aGFu Z3hpYW5nMBgGA1UECxMRY29tcHV0ZXIgc2NpZW5jZSAwHwYJKoZIhvcNAQkBExJ6 aF94aWFuZzExQDE2My5jb20wJwYDVQQKEyBzaGlqaWF6aHVhbmcgcmFpbHdheSBp bnN0aXR1dGlvbjAeFw0wNTA2MDExMjQ5NTdaFw0xNTA2MDExMjQ5NTdaMHcxDTAL BgNVBAMeBF8gf9QxHzAdBgkqhkiG9w0BCQEWEHpoX3hpYW5nQDE2My5jb20xFzAV BgNVBAoeDnfzW7ZehJTBkFNbZpZiMQ8wDQYDVQQLHgZTBVk0XgIxGzAZBgNVBA0T EjE1MDIwNDE5ODIxMjIzMDkzOTCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEA yT4EDT6IH5hDjvmdANioV3QKdITjEmOlBuMx1toeDQj3+VGL0v/w6CzuBV2yeXD7 DnRaTgmcv/rpAVms8pEPmbIiA3r2Ei2b94yibtQ1al/fIQRmo20S17jzCKjW2zZA dtwKSM6EcnuJyt0wl0Pdwh5+5o24VbU2KHbGRt2o3+MCAwEAAYF8ADB5MXcwEQYD QQDEwp6aGFuZ3hpYW5nMBgGA1UECxMRY29tcHV0ZXIgc2NpZW5jZSAwHwYJKoZI hvcNAQkBExJ6aF94aWFuZzExQDE2My5jb20wJwYDVQQKEyBzaGlqaWF6aHVhbmcg cmFpbHdheSBpbnN0aXR1dGlvboJ6ADB3MQ0wCwYDVQQDHgRfIH/UMR8wHQYJKoZI 33 石家庄铁道学院毕业设计 hvcNAQkBFhB6aF94aWFuZ0AxNjMuY29tMRcwFQYDVQQKHg5381u2XoSUwZBTW2aW YjEPMA0GA1UECx4GUwVZNF4CMRswGQYDVQQNExIxNTAyMDQxOTgyMTIyMzA5Mzmj IzAhMBAGA1UdCgEB/wQGMAQDAgZAMA0GBIpfQlgBAf8EAmNzMA0GCSqGSIb3DQEB BAUAA4GBAJ+rioJq70flrtVtd/YYkXV4PNCkmPYfTLqhipNjFauBJkR9ASjDnhSd 1filVeEzhPIsH0ssQdhAZPVuHZY8Hv3kmT6XgTYs9yPBSNCxo+O323QzCAX3P1yL /sFNrYfQHDoMSPGit94RTqg9K6Cfc60o0HxJk9CX6PsagRi7rn8d -----END CERTIFICATE----- 这就是用户所申请的个人证书。此证书和相应的私钥保存在本地的密钥容器中, 私钥也可以导出到外部介质中,但必须妥善保存。 6.2.6 吊销列表查询下载功能 点击下载吊销列表就会转向如下页面,该页面列出了最新发布的所有已被撤销的证书信息,用户可以下载到自己的磁盘上。 图6-6 吊销列表查询下载图 点击下载证书吊销列表按提示操作,即可把吊销列表保存到自己的硬盘上。吊销 列表如下所示: 34 石家庄铁道学院毕业设计 图6-7 吊销列表 点击“吊销列表”选项则显示出已经吊销了的证书,包括证书序列号和吊销的时 间,证书ID转化为十六进制显示。 6.2.7 留言板功能 留言板的建立主要有三个内容。一个是向数据库写入资料;二是从数据库读出资 料并且把它显示在浏览器上;第三就是留言板必须具有的分页功能。 6.2.7.1 权限设置 留言板分为两个权限。 其一,普通用户权限。只可留言不可修改和回复,留言的信息倒序排列,即最新发表的言论处于页面最上端,界面如下: 35 石家庄铁道学院毕业设计 图6-8 留言板主页 其二,为管理员权限。输入管理员的名字和密码后就可以实现对留言的管理和维 护(见下图) 。 ?回复用户或游客的留言: 图6-9 回复界面 36 石家庄铁道学院毕业设计 ?删除用户留言: 图6-10 删除界面 6.2.7.2 分页功能 如果留言太多导致一页显示不下,则需对留言分页显示。设计思路如下:定义变 量absPageNum:当前页为第几页,TotalPages:总的页数,absRecordNum:当前页 中某一条记录的序号,RecordPerPage = 6:定义每页显示的记录数为6。 确定所输出数据的当前页码,如果没收到表单递交的数据(如首次加载该页时), 则从第 1 页开始显示,否则根据表单中是“上一页”还是“下一页”来显示。代码 如示: If Request.ServerVariables("CONTENT_LENGTH") = 0 Then absPageNum = 1 '当前为第一页 Else absPageNum = CInt(Request.Form("PressPageNum")) If Request.Form("Submit") = "上一页" Then absPageNum = absPageNum - 1 ElseIf Request.Form("Submit") = "下一页" Then absPageNum = absPageNum + 1 End If End If 定义记录集对象rs的属性: rs.PageSize = RecordPerPage '设置每一页的记录数 rs.AbsolutePage = absPageNum '当前是第几页 TotalPages = rs.PageCount '总页数 For absRecordNum = 1 to rs.PageSize 37 石家庄铁道学院毕业设计 Next '用循环输出当前页设定的几条数据 6.3 服务器端证书制作和管理模块 总述: 服务器端的设计首先应输入私钥密码(见下图) 图6-11 CA操作员登录界面 如密码正确则进入主页面,主页面显示了所有证书的信息包括:提出请求的证书,已颁发的证书,已吊销的证书和申请失败的证书。如图所示: 图6-12 服务器端主界面 38 石家庄铁道学院毕业设计 6.3.1 模块技术支持 CryptoAPI在系统中的应用: 微软CryptoAPI是一组数目众多的安全函数,这些安全函数是Windows操作系统的一部分。CryptoAPI对密码函数进行抽象,隐藏了实际实现的细节,CryptoAPI实事上可以通过密码服务供应商(CSP)以多种方法实现同一密码函数。CSP是一个独立的模块,它实现了那些可以通过CryptoAPI公共接口访问的密码函数,换言之,CSP封装和隐藏了密码算法的具体实现,这样用户就不需要去关心它。微软提供了一个基 本CSP,其他商家提供的CSP包含了他们自己实现的全部或部分CryptoAPI函数。 CryptoAPI提供了如下通用领域的函数: ?基本密码函数支持选择、初始化和终止CSP。这些函数也包含了用于生成、交 换和存储密钥的密钥操作函数。其他函数包括了对象编码解码、数据加密解密、摘要 生成、数字签名生成和验证。 ?证书和证书存储函数管理证书集合、证书撤销列表和证书信任列表。 ?证书验证函数支持证书信任列表(CTL)和证书链的处理,如将CTL放入签名消息和验证证书链中。 ?消息函数处理PKCS#7消息,其中消息函数专门用于消息构造。消息函数的功 能包括加密或解密消息及消息数据,签名消息和消息数据,还有验证签名消息。低层 消息函数直接对PKCS#7消息操作。CryptoAPI还包含了把一些低层函数封装起来的 高层消息函数集合,如CryptSignAndEncryptMessage函数,在一次API调用中,它就完成PKCS#7格式化、加密和签名。 ?辅助函数包括其他不便归类的函数。有处理证书扩展、比较证书属性以及对象 ID操作函数。 6.3.2 个人证书的制作 CA操作员根据最终用户的在线申请或操作员提供的离线申请创建相应类型的数 字证书,并且选择CA根证书的私有密钥对证书进行数字签名以保证证书的真实性和 完整性。 证书颁发的过程就是先从证书数据库中提取出PKCS#10 证书请求信息,然后从PKCS#10的证书请求中解码出用户的信息和公钥,再根据这些用户信息制作用户证 书,并使用根证书的私钥对证书进行签名。如果申请被拒绝,则在证书数据库中把申 请条目标记为申请失败。如下图所示,可以对某项证书请求颁发证书或者扔掉该请求。 39 石家庄铁道学院毕业设计 图6-13 颁发证书 选择颁发证书: 图6-14 颁发提示 将数据库中的pkcs10块转化为base64格式的证书,具体实现如示: ?把pkcs10消息解码成二进制的der编码,并存储在文件base.der中。DER是 对ASN.1对象进行编码的一种方式,是ASN.1标准的重要部分。 WinExec("certutil-decode .\\temp\\base.txt .\\temp\\base.der",SW_MINIMIZE); ?将二进制der编码的信息解码成内存中的数据结构: CryptDecodeObjectEx( PKCS_7_ASN_ENCODING |X509_ASN_ENCODING, X509_NAME, pCertReqInfojie->Subject.pbData, pCertReqInfojie->Subject.cbData, CRYPT_DECODE_NOCOPY_FLAG, NULL, pbDecoded3, &cbDecoded3) pDecodeName3 = (CERT_NAME_INFO *)pbDecoded3; pDecodeName3是解码的结果,以CERT_NAME_INFO的形式存储,其中CERT_NAME_INFO是存储证书主题或发行名称的结构体。 ?将从pkcs10消息块解码得到的证书请求结构和证书主题来构造base64格式的 证书。 CryptEncodeObject( X509_ASN_ENCODING, 40 石家庄铁道学院毕业设计 X509_NAME, pDecodeName3, pbNameEncoded, &cbNameEncoded) pbNameEncoded便是对证书主题进行编码后得到的信息。 ?连接加密设备上下文,获得指定CSP密钥容器的句柄。 CryptSetProvider(MS_ENHANCED_PROV ,PROV_RSA_FULL); CryptAcquireContext( &hCryptProv, NULL, NULL, PROV_RSA_FULL, NULL)) ?读取根证书的私钥,保存在pbKeyBlob中。 FILE*hSource; hSource= fopen(sifile,"rb") fread(&dwKeyBlobLen, sizeof(DWORD), 1, hSource); if(ferror(hSource) || feof(hSource)) pbKeyBlob = (BYTE *)malloc(dwKeyBlobLen) fread(pbKeyBlob, 1, dwKeyBlobLen, hSource); ?对证书的基本信息赋值,包括证书的版本号、序列号、发行者的信息、加密算 法、公钥信息、颁发时间、到期时间和证书的主题。 ?定义证书的扩展域; 定义基本限制扩展域,定义证书的基本限制是终端实体。 定义证书的用法,证书的用法是既能签名又能加密。 ?连接加密设备上下文,获得指定CSP密钥容器的句柄,用根证书的私钥进行签 名得到证书。 CryptSignAndEncodeCertificate( hCryptProv, AT_SIGNATURE, X509_ASN_ENCODING, X509_CERT_TO_BE_SIGNED, &cert, 41 石家庄铁道学院毕业设计 &cert.SignatureAlgorithm, NULL, pbSignedEncodedCertReq, &n) ?把产生的证书转化成base64的pkcs 7消息: WinExec("certutil -encode .\\temp\\ca.cer .\\temp\\cabase.txt",SW_MINIMIZE); 更新数据库的信息,将产生的pkcs 7消息存放在数据库中。 m_pFieldPtr = m_pFieldsPtr->Item["pkcs7"]; ?把base64证书存放到数据库的pkcs7的列中。 m_pFieldPtr->Value=(_variant_t)base64; m_pUserSet->Update();//更新记录集 6.3.3 拒绝证书申请功能 如果证书申请者的信息得不到验证,则拒绝颁发证书,把失败的证书请求放到“失 败的证书栏中”。将要扔掉的那个请求的标志位cflag置为4即可;代码如下: CString sql = "select * from CAREC where id="; CString str =m_data.GetItemText(nItem,0); sql +=str; m_pUserSet->Open((_variant_t)sql, theApp.m_pConnection.GetInterfacePtr(), adOpenDynamic, adLockOptimistic, adCmdText); m_pFieldsPtr = m_pUserSet->Fields; m_pFieldPtr = m_pFieldsPtr->Item["cflag"]; m_pFieldPtr->Value=(_variant_t)4; m_pUserSet->Update(); m_pUserSet->Close(); 6.3.4 吊销证书功能 对于已经颁发的证书,由于证书失效和私钥泄漏等原因造成的证书不再受信,为 了保证安全性必须对证书进行吊销,即在证书数据库中把相应的条目标记为吊销。 ?证书过期 42 石家庄铁道学院毕业设计 SJZRI.CA为最终用户创建证书时根据证书实施策略确定了证书的有效期。证书 到了失效日期之后就立刻被认为是过期证书,最终用户将不能再使用该证书进行身份 验证或用于其他目的,而且依赖方也将不再信任该证书。 ?证书撤销 证书撤销是CA在最终用户的证书自然到期之前作废证书,撤销的原因包括与证书公开密钥相对应的私有密钥的泄漏或失窃、最终用户的身份信息变更、企业员工离 开工作岗位以及证书不再用于现有的用途而要求中止使用等多个方面。 本系统提供了两种方式接收证书撤销申请,一种是由最终用户在Web服务器上提交撤销请求并声明证书撤销的具体原因;另一种方式主要是针对一些紧急的撤销要求, 比如用户发现自己的私钥被泄漏,可以通过电话或面对面的方式请求CA操作员立刻发布证书撤销信息。如果撤销者的身份通过验证并且撤销请求符合认证实施说明的相 关规定,CA操作员将通过系统的证书撤销程序对证书进行撤销。界面如下: 图6-15 吊销证书图 String sql = "select * from CAREC where id="; CString str =m_data.GetItemText(nItem,0); sql +=str; m_pUserSet->Open((_variant_t)sql, heApp.m_pConnection.GetInterfacePtr(), adOpenDynamic, adLockOptimistic, adCmdText); m_pFieldsPtr = m_pUserSet->Fields; m_pFieldPtr = m_pFieldsPtr->Item["cflag"]; m_pFieldPtr->Value=(_variant_t)3; m_pUserSet->Update(); m_pUserSet->Close(); OnBnClickedfinish(); 6.3.5 吊销列表的制作 43 石家庄铁道学院毕业设计 吊销列表的生成是把所有吊销了的证书都放到证书吊销列表(*.crl)文件里,同时存放到数据库中以供下载。把每一个吊销了的证书的序列号加入CRL,并对其进行数字签名以保证CRL的真实性和完整性。本系统签发的CRL具体字段及相关说明如表6-2所示: 表6-2 CRL字段表 字段名 说明 Version CRL版本号 Signature Algorithm CA对CRL签名所使用的算法标志 Issuer CA Last Update 本次CRL的签发时间 Next Update 下次CRL的签发时间 Revoked Certificates 撤销的证书列表 Extentions CRL相关扩展 Signature CA对CRL的数字签名 与证书签发模块类似,CA在完善CRL基本项的同时也充分使用了扩展项,它指出了证书撤销的理由以及证书失效日期;并通过PULL和PUSH两种方式发布。PULL指CA预先公布CRL的发布时间及分布点,由最终用户和依赖方定期从分布点下载或查 询;PUSH是指CA在产生CRL的同时立刻通过邮件列表等消息广播方式主动地向最终 用户和依赖方发送CRL。 CA提供了多种CRL格式,包括PEM格式,DER格式和文本方式前两种格式用于用户 下载并直接导入到浏览器或其它的应用程序中,而后者允许用户可直接查看CRL的详细信息,本系统采用PEM格式进行CRL的发布。生成吊销列表的对话框如下: 图6-16 生成吊销列对话框 实现过程: ?打开根证书的私钥文件,并用根证书的私钥对吊销列表进行签名,以保证吊销 列表的有效性和安全性; FILE*hSource; hSource= fopen(sifile,"rb"); fread(&dwKeyBlobLen, sizeof(DWORD), 1, hSource); 44 石家庄铁道学院毕业设计 pbKeyBlob = (BYTE *)malloc(dwKeyBlobLen) fread(pbKeyBlob, 1, dwKeyBlobLen, hSource); ?从数据库中查询需要吊销的证书(即标志位为3的证书),定义吊销列表信息CRL_ENTRY的指针*pEn,并初始化吊销列表的各个吊销的证书信息; CRL_ENTRY *pEn pEn[nTempCer].SerialNumber=Int1; pEn[nTempCer]. RevocationDate=lf; pEn[nTempCer].cExtension=0; pEn[nTempCer].rgExtension=NULL; ?初始化吊销列表信息结构,包括版本号、发行者信息、此次发布的时间、下次 更新的时间、所采用的算法和扩展项等信息; ?连接加密设备上下文,获得指定CSP密钥容器的句柄; ?用根证书的私钥进行签名得到吊销列表; CryptSignAndEncodeCertificate( hCryptProv, AT_SIGNATURE, X509_ASN_ENCODING, X509_CERT_CRL_TO_BE_SIGNED, &crl, &crl.SignatureAlgorithm, NULL, pbSignedEncodedCertReq, &n) ?使用certutil工具把吊销列表转化为base64的 WinExec("certutil-encode .\\temp\\c.crl .\\temp\\base64.crl", SW_MINIMIZE); ?将base64编码的证书吊销列表保存在数据库中。 6.3.6 根证书的制作 本程序生成根证书和根证书的私钥文件(root.cer和root.t)。在使用证书制作 和管理程序前,必须先使用这个程序制作根证书和对应的私钥文件,然后才能对个人 证书进行签名。系统的根证书是自签名证书,即使用自己的私钥进行签名。本程序使 用VC++开发,使用了CryptoAPI编程接口。制作根证书的时候用户需要输入根证书 实体名称、对应的E-mail、还要选择对应的CSP和设置加密位数。 45 石家庄铁道学院毕业设计 具体设计如下: ? 新建一基于对话框的项目,往窗体中添加控件如下图所示: 图6-17 根证书生成图 ?将输入的根证书信息(name和email)存放在专门存储证书主题或发行者名称 的数据结构中; name1=(char*)m_name.GetString(); email1=(char*)m_email.GetString(); strfile=m_cafile;//存放证书的文件 ?定义和初始化CERT_RDN_ATTR数组; CERT_RDN_ATTR rgNameAttr[] = { { szOID_RSA_emailAddr , // pszObjId CERT_RDN_PRINTABLE_STRING, // dwValueType strlen(email1), // value.cbData (BYTE*)email1 }, { szOID_COMMON_NAME, // pszObjId CERT_RDN_PRINTABLE_STRING, // dwValueType strlen(name1), // value.cbData (BYTE*)name1 46 石家庄铁道学院毕业设计 } }; // value.pbData 定义和初始化 CERT_RDN 数组;在这段代码中,数组中只有一个元素。 CERT_RDN rgRDN[] = { 2, // rgRDN[0].cRDNAttr rgNameAttr }; // rgRDN[0].rgRDNAttr // 定义和初始化 CERT_NAME_INFO结构。 CERT_NAME_INFO Name = { 1, // Name.cRDN rgRDN}; // Name.rgRDN ?对用CERT_NAME_INFO结构存储的根本信息进行编码; ?连接加密设备上下文,获得指定CSP密钥容器的句柄; CryptSetProvider(MS_ENHANCED_PROV ,PROV_RSA_FULL) CryptAcquireContext( &hCryptProv, // Address for handle to be returned. NULL, // Use the current user's logon name. NULL, // Use the default provider. PROV_RSA_FULL, // Need to both encrypt and sign. NULL) // No flags needed. 如果未找到数字签名密钥对,则试图创建一个数字签名密钥对。 CryptGenKey(hCryptProv,AT_SIGNATURE,CRYPT_EXPORTABLE,&hKey) ?将私钥导出并且存储在文件中; CryptExportKey( hKey, NULL, PRIVATEKEYBLOB, 0, pbKeyBlob, &dwBlobLen) fwrite(&dwBlobLen, sizeof(DWORD), 1, sifile); fwrite(pbKeyBlob, 1, dwBlobLen, sifile); ?将公钥导出并与根证书绑定在一起; CryptExportPublicKeyInfo( 47 石家庄铁道学院毕业设计 hCryptProv, // Provider handle AT_SIGNATURE, // Key spec X509_ASN_ENCODING, // Encoding type pbPublicKeyInfo, // pbPublicKeyInfo &cbPublicKeyInfo) // Size of PublicKeyInfo cert.SubjectPublicKeyInfo=*pbPublicKeyInfo; ?对证书的基本信息赋值,包括证书的版本号、序列号、发行者的信息、加密算 法、公钥信息、颁发时间,到期时间和证书的主题。 ?用根证书的私钥进行自签名,用CryptSignAndEncodeCertificate方法对一个证 书、证书吊销列表或证书请求进行签名和编码,这个函数可以执行以下的操作: 调用CryptEncodeObject对将要签名的信息编码; 调用CryptSignCertificate对编码后的信息签名; 再次调用CryptEncodeObject进一步对签名后的信息编码; CryptSignAndEncodeCertificate( hCryptProv, // Crypto provider AT_SIGNATURE, // Key spec X509_ASN_ENCODING, // Encoding type X509_CERT_TO_BE_SIGNED, // Struct type &cert, // Struct info &cert.SignatureAlgorithm, // Signature algorithm NULL, // Not used pbSignedEncodedCertReq, // Pointer &n) // Length of the message ?将签名编码后的信息写入证书文件。 WriteFile(hf, pbSignedEncodedCertReq,n,&n,NULL); 程序运行的界面如下图所示: 48 石家庄铁道学院毕业设计 图6-18 成功生成根证书 6.4 数据库模块 6.4.1 数据库的连接 本数据库采用ADO的方式进行连接。 Active Data Objects(ADO)作为另一种可供选择的技术出现,正在逐渐代替其他数据访问接口。Active数据对象(Active Data Objects)实际是一种提供访问各种数据类型的连接机制。ADO设计为一种极简单的格式,通过ODBC的方法同数据库接口。它可以使用任何 一种ODBC数据源,即不止适合于SQL Server、Oracle、Access等数据库应用程序,也适合于Excel表格、文本文件、图形文件和无格式的数据文件。ADO是基于OLE-DB之上的技术,因此ADO通过其内部的属性和方法提供统一的数 据访问接口方法。由于RDO同ADO的体系结构非常相似,因此当需要将RDO数据接口转换为ADO时,仍可以使用RDO设计的代码。ADO是独立于开发工具和开发语言的简单而且容易的数据接口,同ADO相比,其他数据访问接口都会黯 然失色。 用 ADO 控件可以灵活地控制数据,不必编写代码就可以方便的显示 数据,大大简化了程序设计。ADO 高速访问数据源,对于实时数据库来说,非 常好的满足了读取和处理上的时间要求;在程序中对数据进行检查,保证了数 据在网络中传输的准确性。 ?在ASP中连接数据库如下所示: 首先定义连接字符串: cnstr="Driver={Microsoft Access Driver (*.mdb)};DBQ=" & 49 石家庄铁道学院毕业设计 Server.MapPath("ca.mdb") ca.mdb是要连接的数据库名。 Set mCmd = Server.CreateObject("ADODB.Command") mCmd.ActiveConnection = cnstr mCmd.CommandText set rs=mCmd.Execute ?在VC中连接数据库 创建连接字符串: CString strOpen ="Driver={Microsoft Access Driver (*.mdb)};DBQ=CA\\ca.mdb;UID=;PWD=;"; 建立连接数据库的实例: m_pConnection.CreateInstance(__uuidof(Connection)); 打开连接: m_pConnection->Open((const char *)strOpen,"","",-1); 打开记录集: m_pUserSet->Open((_variant_t)sql, theApp.m_pConnection.GetInterfacePtr(), adOpenDynamic, adLockOptimistic, adCmdText); 其中变量sql是要执行的sql语句。 6.4.2 表的构建 ?表Carec: 表Carec中输入的内容有:序列号(id)、姓名(name)、电子邮箱(email)、身份 证号(jibie)、个人申请信息封装(pkcs10)、颁发的证书的封装(pkcs7)、当前证书的 状态(cflag)、加密或者签名的标志(flag2)和证书申请的时间(certtime)。 50 石家庄铁道学院毕业设计 图6-19 表Carec ?表Caroot: 表CARoot中存储着SJZRI.CA生成的根证书,由于本系统采用的是单一的层次结构;所以根证书需要自签名。将生成的根证书用CA的私钥进行签名,然后经base64 编码后存入库中其内容以BEGIN CERTIFICATE起,END CERTIFICATE结束。 图6-20 表Caroot ?表crl: 表crl保存生成的吊销列表的信息,数据库中存储的是已吊销的证书的详细信息 并付着SJZRI.CA私钥的签名,它经过base64编码后存储在crl库中,其编码以BEGIN 起,END结束。图6-21显示出CRL在数据库中的存储,将吊销列表编码后存入库的语句如下: m_pFieldPtr = m_pFieldsPtr->Item["crl"]; 把base64crl存放到数据库的crl的table里: m_pFieldPtr->Value=(_variant_t)CrlBase64; m_pUserSet->Update();//更新记录集 m_pUserSet->Close();//关闭记录集 UpdateData(false); 图6-21 表crl 51 石家庄铁道学院毕业设计 ?表user: 表user中保存的用户申请信息有:序列号(id)、用户密码口令(password)、省份 (province)、城市/地区(city)、公司/团体(company)、部门/机构(department)、性别(sex)。 图6-22显示出用户注册信息在数据库中的存储,使用如下语句将上述信息插入到数据 库中: mCmd.CommandText = "INSERT INTO user (id,password,city,num,department) VALUES ('"&id&"','"&usepw&"','"&usercity&"','"&jibie&"','"&userdepartment&"')" mCmd.Execute 图6-22 表Carec 52 石家庄铁道学院毕业设计 7 创新点 系统客户端使用基于Web的系统平台,免除了客户端安装,软件维护、升级简单 易行;服务器端采用VC++开发技术,安全性强,速度快,适合处理大量的数据。使 用cenroll组件及croptoAPI密码库,和windows自带的CSP完美结合。本系统在技术先进性、可维护性、经济性、系统可扩展性、安全性等多个方面满足了小型企业的 要求,主要有以下几个创新点: ?数据安全传输 如果用户的口令以明码的方式在网络上传输,很容易被非法截获,而且密码未经 加密便存入数据库,让无关人员看到,便会泄露用户的信息,后果不堪设想,所以使 用VC++实现了客户端用户口令MD5的加密传输。加密后的信息以乱码的形式存储在 数据库中,这样口令即使被截获,得到的也是一些乱码没有应用价值。 ?简洁的查询方式 表格用于显示诸如吊销列表的查询等信息,简单、直接;不论是谁登录系统网站 都可查询出当前所有证书的状态。系统提供了众多查询模式如按地区、序列号、性别 等分类查询,还在一定程度上实现了模糊查询以方便用户使用。 ?多重权限管理机制 本系统为普通游客、高级用户、管理员设置了不同的使用权限,既保证了系统的 安全性也使操作更为便捷。 ?注册权限:经过网上注册后的高级用户才可进行在线申请,普通游客只可进行 诸如证书状态查询、吊销列表查询、网上留言等功能。 ?留言板使用权限:普通用户只可发表评论,系统管理员则可对其进行修改、插 入、删除、回复等操作。 ?CA超级管理员权限:他是级别最高的系统管理员只有他才可以制作CA根证书 (根证书也可由上级CA颁发)。 ?CA操作员权限:普通的CA操作员可以进行用户身份审核、颁发个人数字证书、 周期性发布吊销列表等操作。 ?多种安全机制 系统使用了大量的安全策略来保证系统的安全性。如周期性发布吊销列表避免因 证书过期引起的损害,不断更新根证书避免安全隐患。 ?系统的标准化 系统所使用的标准都是当今的主流,简明易懂且易于维护。多种协议标准的使用 使系统更加规范,系统使用的标准主要有:PKCS#1、PKCS#7、PKCS#10、ASN.1规范、 53 石家庄铁道学院毕业设计 X.509、安全HTTP(S/HTTP)协议等。 ?便捷的二次开发接口 本系统无论是函数命名还是代码编写都具有极好的可读性,为了方便以后进行功 能扩展,我们最大限度地对每一个功能模块进行了封装基本实现了对外透明,这样如 果进行二次开发便可直接拿来使用或继承。 ?注重效率 在客户端对输入的信息作非空以及e_mail地址的格式进行验证,这样可以提高效率,避免提交到服务器端在发现格式不正确,再返回给客户端重新填写,节省了网 络资源。 54 石家庄铁道学院毕业设计 8 测试分析 8.1 系统的配置 本系统可以用于企业、银行、政府等大型机构对CA的需求;也可用于诸如学校等中小型部门的网络安全。为了能在离线的情况下模拟它的使用,首先必须配置IIS 虚拟服务器。单击“开始”菜单从“程序”的级联菜单中选择“管理工具”项,单击 “Internet服务管理器”弹出如图8-1所示对话框: 图8-1 IIS配置图 打开“Internet信息服务”下的*zhang文件,右击其中的“默认Web站点”,选 择其中的“新建虚拟目录”弹出如图5-2所示“虚拟目录创建向导”按文字提示操作 即可以完成对虚拟服务器的配置,通过这项服务用户就可以不必在线而模拟网上申 请、根证书下载、个人数字证书下载、吊销列表下载、时时在线查询系统等工作流程 了。 8.2 系统测试 测试分析是为了进行单元测试、组装测试和功能测试,并将结果、发现及分析写 成文档加以记载。前面几章针对SJZRI.CA的应用模型及实现过程中涉及的关键问题 进行了研究,这些研究成果在老师和同学间经过反复测试已被证明具有一定的实用性 和稳定性。由于时间和人力资源的限制我们系统最佳的服务对象是诸如学校、超市、 事业单位、小型企业等中小型机构,根据这些机构的实际特点以及应用规模,在具体实 现过程中我们采用了严格层次的CA模型,并为今后大规模的开发提供了通用接口。如 55 石家庄铁道学院毕业设计 涉及与其它CA认证中心之间进行通信,则可通过交叉认证为其他CA签发交叉CA证 书。目前,该系统的各项功能已经实现,主要有: ? 签发自签名的根证书; ? 签发个人数字证书; ? 查询和下载吊销列表; ? 受理和审核用户的申请; ? 支持用户的在线查询; ? 管理全系统的用户和证书资料; ? 签发证书吊销列表; ? 维护全系统的证书吊销列表。 具体测试如下: ?前台测试 ?注册用户 输入:用户名、真实姓名、性别、取证书时的密码、省份、城市/地区、公司/ 团体、等用户信息。 输出:显示注册是否成功,如注册失败弹出提示对话框。 测试结果:正常注册,满足要求。 ?用户登陆 输入:注册的用户名,注册的密码。 输出:如输入正确则在网站首页的“服务直通车”下显示出用户注册的名字。 测试结果:正确显示,满足要求。 ?证书在线申请 输入:持证人姓名、用户E-mail等个人信息,这些信息需如实填写,CA操作员 将根据这些信息制作证书。 输出:提示申请成功,返回序列号,等待证书颁发,否则报错。 测试结果:符合要求。 ?根证书下载 输入:无 输出:提示下载,若系统异常则报错。 测试结果:按预期显示。 ?证书下载 输入:申请时填写的序列号,申请时的密码。 输出:如证书已颁发,提示用户下载;如未颁发提示用户耐心等待。 56 石家庄铁道学院毕业设计 测试结果:按预期显示。 ?吊销列表下载 输入:无 输出:查询出当前已经吊销了的证书,并提示用户下载。 测试结果:正确显示,可以安全下载。 ?证书申请表下载 输入:无 输出:提示下载申请表也可在当前打开,在线填写。 测试结果:可以安全下载。 ?后台测试 ?颁发证书 操作:右击将要颁发的证书,左击确定。 输出:从当前页面删除,在颁发的证书栏中显示。 测试结果:正确显示,颁发成功。 ?处理申请失败的证书 操作:右击申请失败的证书,左击确定。 输出:从当前页面删除,在申请失败的证书栏中显示。 测试结果:正确显示,成功处理。 ?处理想要吊销的证书 操作:右击想要吊销的证书,左击确定。 输出:从当前页面删除,在已吊销的证书栏中显示。 测试结果:正确显示,成功吊销。 ?生成吊销列表 操作:单击吊销列表按钮 输出:出现提示对话框,提示生成是否成功。 测试结果:成功生成吊销列表。 57 石家庄铁道学院毕业设计 9 结束语 随着计算机应用的普及,特别是近年来INTERNET的发展,企业、政府、银行等各家机构都纷纷建立与INTERNET相连的网络。为了保证企业应用在安全的网络环境下 进行,这些机构就必须实现交互的保密性、认证性、内容完整性、不可否认性、访问 控制\审计和易于使用性等安全服务。PKI通过公开密钥和数字证书技术提供了网络 安全服务的基础设施,CA作为其中的认证权威机构负责签发、撤销和管理个人服务 器和其他实体的证书。 本文从密码学基础、数字证书、功能组件和信任模型四个方面对PKI技术进行了深入的研究与探索,并针对PKI在企业中的实际应用,提出了一种基于严格层次结构 的CA模型,同时考虑了该层次CA在私有密钥的保护,最终用户的身份识别与认证, 证书操作规范和安全控制等方面应该制定的策略和措施。 本文还解决了基于严格层次CA模型实现过程中的各项关键技术问题:CA不仅能 够支持客户浏览器的在线申请,同时还提供了离线申请机制;CA根据不同用户申请使用证书签发程序创建相应的个人证书并对其进行签名;通过定期发布CRL的机制解决了证书撤销问题,并提供在线查询服务允许检验者实时地检查证书状态;增设留言 板功能方便用户、管理员之间的交流。 本系统所签发的证书能够为不同部门的多种应用程序提供安全服务,但同时还存 在着一些不足: ?过期密钥问题 一旦CA签发的证书过期,最终用户在证书有效期间的签名也将无法得到验证。 同时,如果用户在证书过期之后,忽视了对私有密钥的保护或者密钥对被攻破,这样 攻击者可以伪造出用户在证书有限期间内的数字签名。针对这种过期密钥问题,需要 对有效期内的签名提供安全时间戳服务,证明其准确的时间。 ?证书撤销的即时发布问题 由于CA通过定期发布CRL的方式解决证书撤销问题,但是对于一些紧急的证书 撤销,比如私有密钥泄漏或被窃取,如果CA不能立刻对外公布该证书已经被撤销, 就需要等到下一个发布周期。即使CA立刻通过PULL或PUSH方式发布CRL,这些操作也会带来一定程度的时延。如果在系统网站中建立OCSP(Online Certification Status Protocol,在线证书状态协议)服务器,这个问题将会得到很好地解决。最终 用户或CA操作员一旦提出有效地证书撤销请求,OCSP服务器将立刻更新证书状态信息,如果依赖方需要了解证书是否被撤销,只需要查询OCSP服务器,而不需要等到CA发布新的吊销列表。 58 石家庄铁道学院毕业设计 59 石家庄铁道学院毕业设计 参考文献 [1]C.Adams,S.Lloyd.Understanding Public Key Infrastructure[M].Concepts,Standards,and Deployment Consideration.Macmillan Technical Publishing,1999. [2]RFC 2459. R. Housley,W. Ford and etc. Internet X.509 Public Key Infrastructure : Certificate and CRL Profile [S],1999. [3]RFC 2527. S. Chokhani. Internet X.509 Publ ic Key Infrastructure: Certificate Policy and Certification Practices Framework [S],1999. [4]RSA Laboratory. PKCS #7v1.5: Cryptographic Message Syntax Standard[S],1993. [5]RSA Laboratory. PKCS #10 v1.7:Certificate Request Syntax Standard [S],2000. [6]汪晓平,吴勇强,张宏林.ASP 网络开发技术[M].北京:人民邮电出版社,2000.30~420 [7]宣小平,张文毅,但正刚.ASP数据库系统开发实例导航[M].北京:人民邮电出版社,2003.20~ 190 [8][美]Chuck Wood.VC++ 6.0数据库编程大全[M].北京:电子工业出版社,2000.150~280 [9]齐舒创作室.VC++ 6.0用户界面制作技术与应用实例[M].北京:中国水利水电出版社,1999. 170~430 [10]蔡永泉.计算机网络安全理论与技术教程[M].北京:北京航空航天大学出版社,2003.100~200 [11]卢开澄.计算机密码学—计算机网络中的数据保密与安全(第二版) [M].北京:清华大学出版 社,1998.320~500 [12]Scot Johnson . Active Server Pages 详解[M].北京:电子工业出版社,1999.120~180 [13]Bruce Schneier.应用密码学[M].北京:机械工业出版社,2001.60~230 [14]孙印杰,高翔,祝玉花. Dreamweaver MX 2004 中文版应用教程[M].北京: 电子工业出版社, 2005.250~400 [15]施威铭研究室.Microsoft Access 2002 中文版标准教程[M].北京:中国青年出版 社,2002.50~360 [16]汉清计算机工作室.Access 2000 中文版实例[M].北京:机械工业出版社,2000.120~300 60 石家庄铁道学院毕业设计 致谢 论文完成之际,我要对本论文完成过程中给予我帮助的人们致以最诚挚的 谢意! 首先要非常感谢我的指导老师郑丽娟在设计期间给予我的帮助和指导。感 谢她在我读书期间,特别是做毕业设计期间对我的严格要求和悉心教诲;感谢 她赐给我学习新知识、探索新问题的手段和创新的灵感;感谢她用自己的言行 为我树立了一名具有勤奋、刻苦、求实、创新精神的知识分子的典范,这将使 我终身受益。在此,向郑丽娟老师表示衷心的感谢和深深的敬意! 同时,我还要感谢系领导和机房老师,他们早来晚走,给我们提供了良好 的上机环境,为我们完成毕业设计提供了有力的保障。最后,我还要感谢我们 小组的成员给我的无私帮助。在设计期间,我们相互讨论,互相激励,共同完 成了此次毕业设计。可以说,这次毕业设计的完成,有着太多人的功劳,没有 他们的帮助,我就无法得以顺利完成这次毕业设计,在这里,我再次向他们表 示发自内心的谢意! 61 石家庄铁道学院毕业设计 附录A: 英文资料翻译 英文原文 附录B: 软件使用 说明书 房屋状态说明书下载罗氏说明书下载焊机说明书下载罗氏说明书下载GGD说明书下载 使用说明书 欢迎使用石铁院CA认证中心软件(以下简称“CA中心”);在使用之前,请认真阅读本手册,并按照使用说明书进行操作。 知识产权: .“石铁院CA认证中心软件”由石家庄铁道学院CA开发小组设计、编制及出品。 . 石家庄铁道学院CA开发小组拥有“石铁院CA认证中心软件”独立的完整的知识产权。 免责条款: .本小组尽力确保说明书中的内容和信息完整,但对手册中的错误不承担 责任。 .本说明书及书中所提及的软件如有更新,恕不另行通知。 声 明: .未经石家庄铁道学院CA开发小组书面许可,任何人不得以任何方式将本 说明书复制、抄袭或翻译成另外一种语言。 对于使用中出现的问题,请直接与石家庄铁道学院CA开发小组联系! 石铁院CA认证中心软件 石铁院CA认证中心是一套具有证书申请,证书颁发,证书吊销以及证书 统计查询和输出统计报表等多种功能的数字证书管理软件,主要功能有: 证书申请:由注册用户在客户端填写相关的信息,并申请颁发证书; 证书颁发:由CA中心的管理员对用户证书的信息进行审核并对符合要求 的证书进行颁发; 证书吊销:由CA中心的管理员对证书时间过长的或者无效的证书进行吊 销操作; 证书查询统计:用户按照自己的权限进行查询操作,管理员可以进行统计 操作; 62 石家庄铁道学院毕业设计 统计报表的输出:将各种统计信息按照一定的格式进行输出。 1 软件安装 本软件属于绿色软件,直接复制可执行文件和DreamWaver文件到自己电脑的硬盘上面,双击即可执行。 2 运行软件 首先打开客户端界面: 客户端界面图 在这里你可以进行用户注册,证书在线申请等操作,并可以了解有关CA的知识性简介。如果你是CA管理员,那么你可以进入服务器端界面: 63 石家庄铁道学院毕业设计 在这里,你可以进行颁发证书,吊销证书等操作。只要你在客户区域选定需要 操作的证书,然后点击相应的按钮即可进行实际操作,使用非常简单。 如果你想使用查询统计和统计报表功能,你可以进入CA查询统计子系统的界面,如图: 在这里你可以进行查询统计操作并且区分了用户权限,管理员还可以进行统计 报表的输出。 经过紧张的开发工作和同组人员的大力支持以及郑老师的帮助,系统已经 初具规模。系统已经能够完成办法证书,密钥管理,吊销列表等基本功能,而 且还能够实现查询,统计和统计报表的输出,基本具备了一个小型CA认证中 64 石家庄铁道学院毕业设计 心的功能。我把自己的模块进行了测试,对照数据库中的信息进行统计查询操 作都能够正确完成所需要求,并且系统对一些人为的疏忽也能够做出适当的提 醒。服务器端界面大方,美观。在测试过程中没有出现错误情况,系统基本能 够达到我们预期的目的。而且总体来说,在使用过程中感到比较易用,具有较 好的人机交互性。 1 绪论 ...................................................................................................................................... 1 1.1 问题的提出 ....................................................................................................................... 1 1.2 国内外研究现状 .............................................................................................................. 2 1.3 课题研究的背景及意义 .................................................................................................. 3 1.4 本文的组织 ....................................................................................................................... 4 2 系统平台模式及开发工具 ................................................................................................. 6 2.1 系统平台模式................................................................................................................... 6 2.1.1 客户机/服务器(C/S)模式 ................................................................................ 6 2.1.2 Web浏览器/服务器(B/S)模式 ...................................................................... 6 2.2 开发工具介绍 ............................................................................................................... 7 2.2.1 Dreamweaver介绍 ............................................................................................... 7 2.2.2 VC++介绍............................................................................................................... 7 2.2.3 Access 2000介绍 ............................................................................................... 8 65 石家庄铁道学院毕业设计 3 PKI技术的研究 ................................................................................................................. 10 3.1 密码学基础 .................................................................................................................. 10 3.2 PKI组件及功能 .......................................................................................................... 10 3.2.1 PKI组件介绍 ..................................................................................................... 10 3.2.2 现有的PKI标准 .................................................................................................. 11 3.3 系统的信任模型 .......................................................................................................... 12 3.4 数字证书 ...................................................................................................................... 12 3.5 系统的标准化 ............................................................................................................. 12 4 需求分析 ............................................................................................................................ 14 4.1 功能需求 ...................................................................................................................... 14 4.2 结构化开发方法 .......................................................................................................... 14 4.3 系统的建模 .................................................................................................................. 15 4.3.1 数据流图 ............................................................................................................... 15 4.3.2 数据词典 ............................................................................................................... 18 4.3.3 模块功能分析图与使用权限 ............................................................................. 19 4.4 运行环境 ..................................................................................................................... 19 4.4.1 软件环境 ............................................................................................................... 20 4.4.2 网络系统硬件资源 .............................................................................................. 20 5 SJZRI.CA系统设计 .......................................................................................................... 22 5.1 CA的体系结构 ............................................................................................................ 22 5.2 各模块功能描述 ......................................................................................................... 22 5.2.1 证书申请和颁发模块(客户端的设计)........................................................... 22 5.2.2 证书制作和管理模块(服务器端的设计) ...................................................... 24 5.2.3 数据库模块 ........................................................................................................ 24 6 详细设计 ............................................................................................................................ 26 6.1 界面设计 ...................................................................................................................... 26 6.2 客户端证书请求和下载模块 ..................................................................................... 26 6.2.1 模块技术支持 ...................................................................................................... 26 6.2.2 注册功能............................................................................................................. 27 6.2.3 根证书下载 ........................................................................................................ 28 6.2.4 证书申请功能 ...................................................................................................... 30 66 石家庄铁道学院毕业设计 6.2.5 证书下载功能 .................................................................................................... 32 6.2.6 吊销列表查询下载功能.................................................................................... 34 6.2.7 留言板功能 ........................................................................................................ 35 6.3 服务器端证书制作和管理模块 ................................................................................ 38 6.3.1 模块技术支持 .................................................................................................... 39 6.3.2 个人证书的制作 ................................................................................................ 39 6.3.3 拒绝证书申请功能 ............................................................................................ 42 6.3.4 吊销证书功能 .................................................................................................... 42 6.3.5 吊销列表的制作 ................................................................................................ 43 6.3.6 根证书的制作 .................................................................................................... 45 6.4 数据库模块 ................................................................................................................. 49 6.4.1 数据库的连接 .................................................................................................... 49 6.4.2 表的构建............................................................................................................. 50 7 创新点 ................................................................................................................................ 53 8 测试分析 ............................................................................................................................ 55 8.1 系统的配置 ................................................................................................................. 55 8.2 系统测试 ..................................................................................................................... 55 9 结束语 ................................................................................................................................ 58 附录C:软件使用说明书 ............................................................. 60 67

本文档为【CA认证中心统计查询系统论文】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
is_682974
暂无简介~
格式:doc
大小:576KB
软件:Word
页数:96
分类:生产制造
上传时间:2017-09-26
浏览量:30