基于PKI技术的文件保密系统的实现_第1页
基于PKI技术的文件保密系统的实现_第2页
基于PKI技术的文件保密系统的实现_第3页
基于PKI技术的文件保密系统的实现_第4页
基于PKI技术的文件保密系统的实现_第5页
已阅读5页,还剩26页未读 继续免费阅读

下载本文档

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

文档简介

1、 编号 毕业论文题 目基于PKI技术的文件保密系统的实现学生姓名学 号学 院计算机科学与技术学院专 业班 级指导教师讲师二 年 月诚信承诺书本人郑重声明:所呈交的毕业设计(论文)(题目: 基于PKI技术的文件保密系统的实现)是本人在导师的指导下独立进行研究所取得的成果。尽本人所知,除了毕业设计(论文)中特别加以标注引用的内容外,本毕业设计(论文)不包含任何其他个人或集体已经发表或撰写的成果作品。作者签名: 年 月 日 (学号):毕业设计(论文)报告纸基于PKI技术的文件保密系统的实现摘 要文件传输作为网络信息交换的关键技术, 文件安全性将直接影响信息系统的安全性能。传统网络上的文件传输并没有对

2、数据进行安全处理,达不到安全的需求。本文对文件保密系统所涉及的加密算法基础及OpenSSL做大量研究,并介绍了公开密钥基础设施和数字签名的基本原理,在此基础上,详细阐述了安全文件传输系统的设计过程与实现细节并分析了安全文件传输系统的安全性。对于数据的加密算法, 本文在分析比较目前常用的加密算法的基础上, 同时兼顾了加密解密的效率, 采用了比较成熟的加密算法:DES、RSA和安全的散列算法:SHA-1。从而实现了网上文件传输中的身份认证,保密性,完整性和不可否认性。关键词:文件保密传输系统,公钥基础设施,数字签名Design and implementation of secret file t

3、ransmission system based on PKIAbstractThe key technologies of file transfer as a network information exchange, file security will directly affect the security of information systems performance. Traditional solution is not enough to protect the secret data.The document mainly focus on a substantial

4、 research about the knowledge involved in the files secret system, such as basic encryption algorithm, open-source OpenSSL library, and briefly introduces the basic principles of Public Key Infrastructure and digital signatures. On this basis, elaborate the design process of

5、 the secure file transfer system and the implementation details and analyze the security of a secret file transmission system. Data encryption algorithm, on the basis of analysis compares the current commonly used encryption algorithms, taking into account the efficiency of encryption and decryption

6、, using a more mature encryption algorithm: DES, RSA and secure hash algorithm: SHA-1. In order to achieve the authentication, confidentiality, integrity, and non-repudiation of the data.Key Words:Secret File Transmission System; Public Key Infrastructure; Digital Signature目 录摘 要Abstract第一章 引 言11.1

7、背景及现状11.2 本文主要工作1第二章 公开密钥基础设施22.1 相关密码学技术22.1.1 对称密钥密码技术22.1.2 非对称密钥密码技术32.1.3 Hash函数42.1.4 数字签名42.1.5 数字信封52.2 PKI概述52.2.1 PKI定义52.2.2 PKI的基本组成62.2.3 RSA算法62.3 PKI服务72.3.1 认证服务72.3.2 数据完整性服务72.3.3 数据保密性服务82.3.4 不可否认性服务82.4 PKI技术标准82.4.1 PKIX82.4.2 PKCS82.5 证书认证中心92.5.1 认证中心的作用92.5.2 认证中心的职能10第三章 文件

8、保密系统的分析与设计113.1 系统目标分析113.2 系统模块划分113.2.1 用户模块113.2.2 更新模块113.2.3 文件保密模块123.2.4 服务器模块123.3 系统安全性分析14第四章 PKI文件保密系统的实现154.1 编程环境介绍154.1.1 ODBC154.1.2 OpenSSL154.2 证书认证中心(CA)的实现164.2.1 建立CA服务器164.2.2 密钥及证书的生成164.3 用户控制模块的实现164.4 数字签名模块的实现184.5 数字信封模块的实现194.6 服务器模块的实现204.7 系统运行效果20第五章 总结与展望325.1 论文总结255

9、.2 工作展望25参考文献26致谢27- 24 - 第一章 引 言1.1 背景及现状随着网络的普及与发展,信息资源的共享程度不断加强。当前的信息系统已经涵盖内部办公和遍及全国的业务系统。一些机要部门,如军事、政府、金融等单位的日常工作也逐步实现了网络化、自动化,给人们带来很多便利,但随之而来的信息安全问题也日益突出,诸如系统被破坏、数据丢失、机密被盗和直接、间接的经济损失等,这都是不容忽视的问题。为了解决网络环境的信息安全问题,经过世界各国的研究,初步形成了一套完整的解决方案,即PKI(Public Key Infrastructure)体系架构,并成为目前网络安全建设的基础与核心。目前,PK

10、I广泛地应用于电子商务1和电子政务2等领域。1.2 本文主要工作本文根据当前网络安全问题的研究成果, 参考国际国内现有的算法和体制及一些有关的应用实例, 在密码学基础、PKI理论等方面做了大量研究,对于系统中的证书管理、认证授权、数字信封的分发等方面做了认真的分析和细致的设计,并结合个人的思想提出一种基于PKI的文件保密系统,较好地解决了网上信息传输中的身份认证、保密性、完整性和不可否认性等问题。第二章 公开密钥基础设施2.1 相关密码学技术2.1.1 对称密钥密码技术对称加密是密码学中的一类加密算法。该类密码的加密算法是它自己本身的逆反函数,所以其解密算法等同于加密算法,也就是说,要还原对等

11、加密的密文,套用加密同样的算法即可得到明文。在实际应用中,体现为加密和解密使用同一个密钥,或者知道一方密钥能够轻易计算出另一方密钥。对称密钥密码体制从加密模式上可分为流密码(序列密码)和分组密码(块密码)两大类,在PKI中常用的是分组密码算法,图2.1是分组密码示意图。分组密码的工作方法是将明文分成固定长度(块),用同一密钥和算法对每一块加密,输出也是固定长度的密文3。加密算法解密算法明文x密文y密钥k密钥k明文x图2.1 分组密码示意图 比较成熟的分组密码算法有:DES及其多种变形、RCZ、RC4、IDEA、AES等算法。常用的四种工作模式为:电码本(ECB)、密码反馈链接(CBC)、密码反

12、馈(CFB)、输出反馈(OFB)。由于系统的保密性主要取决于密钥的安全,所以在公开的计算机网络上安全地传送和保管密钥是一个严峻的问题。因为任何人拥有了密钥就可以解开加密信息。对称密码具有算法简单,运行速度快,占用的空间小等特点,它能提供的服务有认证,消息完整性以及机密性等项服务。2.1.2 非对称密钥密码技术非对称密钥密码技术是在密码体制中加密和解密采用两个不同的相关的密钥的技术,又称为公钥密码技术。公钥系统的概念于1976年由Diffie和Hellman提出,这一体制的最大特点是采用两个密钥将加密和解密能力分开。它使用到两个密钥:公开密钥和私有密钥,分别用于对数据的加密和解密。这两个密钥是数

13、学相关,用某用户加密密钥加密后所得的信息,只能用该用户的解密密钥才能解密。如果知道了其中一个,并不能计算出另外一个。因此如果公开了一对密钥中的一个,并不会危害到另外一个的秘密性质。称公开的密钥为公钥;不公开的密钥为私钥4。工作流程如图2.2所示。私钥S公钥P明文M解密密文C明文M加密cdmod nmemod n图2.2 非对称密码体制示意图公钥加密主要算法有:RSA、DSS、DSA、ECC等,在后面在这些算法中,有些适用于密钥分配,有些可作为加密算法,还有一些仅用于签名。RSA公钥密码算法是一种公认十分安全的公钥密码算法。它的命名取自3个创始人:Rivest、Shamir和Adelman。RS

14、A公钥密码算法是目前网络上进行保密通信和数字签名的最有效的安全算法。RSA算法的安全性基于数论中大整数分解的困难性,所以,RSA需采用足够大的整数。因子分解越困难,密码就越难以破译,加密强度就越高5。在通过网络传输信息时,公钥密码算法体现出了单密钥加密算法不可替代的优越性。对于参加电子交易的商户来说,希望通过公开网络与成千上万的客户进行交易。若使用对称密码算法,则每个客户都需要由商户直接分配一个密钥,并且密钥的传输必须通过一个单独的安全通道。相反,在公钥密码算法中,同一个商户只需自己产生一对密钥,并且将公钥对外公开。客户只需用商户的公钥加密信息,就可以保证将信息安全地传送给商户。2.1.3 H

15、ash函数Hash函数又称散列函数,是一种从任何一种数据中创建小的数字“指纹”的方法。散列函数把消息或数据压缩成摘要,使得数据量变小,将数据的格式固定下来。该函数将数据打乱混合,重新创建一个叫做散列值的指纹。散列值通常用来代表一个短的随机字母和数字组成的字符串。一个安全的散列函数H具有以下的属性:H能够应用到大小不一的数据上。H对任何输入报文数据生成固定长度的输出。对于任意给定的x,H (x)的计算相对简单。对于任意给定的h,要发现满足以H(x)=h在计算上是不可行的。要发现满足H(x)=H (y)的(x,y)对在计算上是不可行的。Hash函数可用于验证消息或数据的完整性,发信人通过将原消息和

16、散列值一起发送,接受者可以确认消息是否被篡改。目前采用比较多的散列算法是MD5和SHA-1。SHA(Secure Hash Algorithm)是由美国国家标准和技术协会开发的,1994年适时发布了原始算法的修订版,称为SHA-l。与MD5相比,SHA-l生成160位的消息摘要,大于MD5的128位,虽然执行更慢,却被认为更安全。2.1.4 数字签名数字签名是基于公共密钥技术的一项重要的安全技术, 使用密码算法对待发的数据进行加密处理, 生成一段信息, 附着在原文上一起发送, 这段信息类似现实中的签名或印章, 接受方对其进行验证, 判断原文真伪6。数字签名具有如下特点:签名是可信的:任何人都可

17、以验证签名的有效性。签名是不可伪造的:除了合法的签名者之外, 任何其他人伪造其签名是困难的。签名是不可复制的:对一个消息的签名不能通过复制变为另一个消息的签名。如果对一个消息的签名是从别处复制得到的, 则任何人都可以发现消息与签名之间的不一致性, 从而可以拒绝签名的消息。签名的消息是不可改变的:经签名的消息不能被篡改。一旦签名的消息被篡改, 则任何人都可以发现消息与签名之间的不一致性。签名是不可抵赖的:签名者事后不能否认自己的签名。数字签名主要是采用非对称加密算法, 先采用Hash 函数, 将待发送的数据生成消息摘要MD1, 发送方使用自己的私钥对消息摘要加密生成数字签名, 将数字签名附着在原

18、(原文可以加密)上一起发送。接收方收到消息以后, 先用发送方的公钥将签名解密, 得到消息摘要。然后利用接收的原数据进行Hash 函数的计算得到消息摘要MD2, 如果MD1=MD2,说明签名成功。2.1.5 数字信封数字信封(Digital Envelope)技术是混合加密技术的具体应用。数字信封的功能类似于普通信封。普通信封在法律的约束下保证只有收信人才能阅读信的内容;数字信封则采用密码技术保证了只有规定的接收人才能阅读信息的内容7。数字信封中采用了对称密码体制和公钥密码体制。信息发送者首先利用随机产生的对称密码加密信息,再利用接收方的公钥加密对称密码,被公钥加密后的对称密码被称之为数字信封。

19、在传递信息时,信息接收方要解密信息时,必须先用自己的私钥解密数字信封,得到对称密码,才能利用对称密码解密所得到的信息。这样就保证了数据传输的真实性和完整性。2.2 PKI概述2.2.1 PKI定义PKI(Public Key Infrastructure,公开密钥基础设施)产生于20世纪80年代, 它是在公开密钥理论和技术的基础上发展起来的一种综合性安全平台, 能够透明地为所有的网络应用提供加密和数字签名等密码服务所必须的密钥和证书管理, 从而保证网上传递信息的安全、真实、完整和不可抵赖性。利用PKI可以方便地建立和维护一个可信的网络环境, 从而使人们在这个环境里能够确认彼此的身份和所交互的信

20、息, 能够安全的进行各种活动8。2.2.2 PKI的基本组成PKI是一种遵循标准的密钥管理平台, 主要包括五个模块:CA(Certificate Authority,认证中心),证书数据库(Certificate Database),密钥管理(生成、备份、恢复和更新)系统(Key Manage System),证书撤消管理系统(Certificate Revocation List Manage System)和PKI应用接口系统(PKI Application Interface System)9。PKI平台总体框架结构如图2.3所示。密 钥管 理系 统证 书撤 销管 理系 统证 书数 据库

21、认 证中 心PKI应用系统接口图2.3 PKI框架结构认证中心:数字证书的申请及签发机关, PKI的核心。认证中心必须具备权威性。证书数据库:证书的集中存放地, 是网上的一种公共信息库, 用户可以从此处获得其它用户的证书和公钥。构造证书库的最佳方法是采用支持LDAP协议的目录系统, 用户或相关的应用通过LDAP来访问证书库。系统必须确保证书库的完整性, 防止伪造、篡改证书。密钥管理系统:提供备份与恢复脱密密钥的机制。密钥的备份与恢复应该由可信的机构来完成, 例如CA可以充当这一角色。值得强调的是, 密钥备份与恢复只能针对解密密钥, 签名私钥不能够作备份。证书撤消管理系统:终止证书的生命期, 是

22、PKI的一个重要组件。PKI应用接口系统:提供良好的跨平台的应用接口系统, 使用户能够方便地使用加密、数字签名等安全服务, 使得各种各样的应用能够以安全、一致、可信的方式与PKI交互10。2.3 PKI服务PKI作为安全基础设施,能为不同的用户按不同安全需求提供多种安全服务。这些服务主要包括认证、数据完整性、数据保密性、不可否认性、公正及时间戳服务等11。2.3.1 认证服务认证服务即身份识别与鉴别,就是确认实体即为其声明的实体,鉴别身份的真伪。PKI向实体提供全面的核心服务必须满足两个需求:第一是实体甲必须能够准确无误地得到他希望通信的实体乙的公钥,这是证书的基本目的:第二是在甲没有乙的证书

23、的情况下,甲必须可以从公共的资料库中查询。通过这种方式,两个陌生人能够建立安全通信(需要说明的是利用这样的公共资料库的概念,两个陌生人使用公钥技术能够进行安全通信)。如甲乙双方的认证,甲首先要验证乙的证书的真伪。当乙在网上将证书传送给甲时,甲首先要用CA的公钥解开证书上CA的数字签名,如果签名通过验证,证明乙持有的证书是真的:接着甲还要验证乙身份的真伪,乙可以将自己的口令用自己的私钥进行数字签名传送给甲,甲已经从乙的证书中或从证书库中查得了乙的公钥,甲就可以用乙的公钥来验证乙用自己独有的私钥进行的数字签名。如果该签名通过验证,乙在网上的身份就确凿无疑。PKI的认证服务使得实体甲可以用自己的私钥

24、加密一段挑战信息,乙收到信息后用甲的公钥(如果乙不知道甲的公钥可以到公开的网站或机构去查明)对信息进行解密,从而确定甲就是甲所声明的实体本身12。2.3.2 数据完整性服务数据完整性服务就是确认数据没有被修改。实现数据完整性服务的主要方法是数字签名,它既可以提供实体认证,又可以保障被签名数据的完整性。这是因为密码哈希算法和签名算法提供的保证,哈希算法的特点是输入数据的任何变化都会引起输出数据的不可预测的极大变化,而签名是用自己的私钥将该哈希值进行加密,和数据一起传送给接受方。如果敏感数据在传输和处理过程中被篡改,接受方就不会收到完整的数据签名,验证就会失败。反之,如果签名通过了验证,就证明接收

25、方收到的是没经修改的完整性数据。2.3.3 数据保密性服务保密性就是确保数据的秘密,即除了指定的实体外,无人能读出这段数据。PKI的保密性服务采用了类似于完整性服务的机制,具体如下:甲生成一个对称密钥(使用密钥协商协议),用对称密钥加密数据(使用对称分组密码),将加密后的数据发送给对方。2.3.4 不可否认性服务不可否认性服务是指从技术上保证实体对其行为的认可。不可否认性服务是属于PKI支持的附加服务,有的CA不支持不可否认性服务。所谓不可否认性服务是指从技术上保证实体对他们的行为的诚实性。最受关注的是对数据来源的不可抵赖,即用户不可能否认敏感消息或文件。此外,还包括其他类型的不可否认性,如传

26、输的不可否认性、创建的不可否认性以及同意的不可否认性等13。2.4 PKI技术标准2.4.1 PKIXIETF公开密钥基础设施工作小组致力于制定基于X.509的可交互PKI标准,公布了一系列Internet PKI的建议,统称为PKIX规范。这些规范包括CA应用指导、证书撤销、证书和CRL的分发与管理协议等,旨在使X.509标准所规定的证书和CRL格式适用于在Internet环境中建立PKI的需要。PKIX工作小组制定的规范主要包括如下四项专门领域:证书和证书撤销列表概貌;证书管理协议;证书操作协议;证书策略(CP)和认证实施陈述(CPS)结构。2.4.2 PKCSPKIX规范的依据除了国际电

27、信联盟制订的X.509标准外,还有RSA数据安全实验室制订的公共密钥密码标准PKCS(Public Key Cryptography Standard)14。PKCS是在认证注册、更新及CRL分布方面定义PKI的一系列标准,包括PKCS#1-PKCS#12。通过这些标准,RSA数据安全公司希望为公开密钥密码学提的一个公开标准接口。下面简单介绍每个PKCS的内容。PKCS#1、PKCS#2、PKCS#4:描述了RSA加密和解密的方法,主要用于PKCS中所描述的数字签名结构和数字信封。PKCS#3:描述了实现Diffie-Hellman密钥交换协议的方法。PKCS#5:描述了用一个从口令中派生的秘

28、密密钥加密消息的方法。它使用MD2或MD5从口令中派生密钥,并采用DES的CBC模式加密。这个功能主要用于加密从一个计算机传送到另一个计算机的私钥,但是不能用于加密消息。PKCS#6:描述了公开密钥证书的标准语法。这一语法是X.509证书的扩展,如果需要,可以取出X.509证书。X.509证书之外的这些附加属性已使证书处理不再局限于公开密钥。PKCS#7:密文语法标准,是一个对数据加密或签名的通用语法,例如数字信封和数字签名。同时这些语法还提供了一些附加属性,例如可与消息内容一起被校验的时间标记。PKCS#8:描述了私钥信息的语法,包括私钥、一组属性和加密私钥的语法。PKCS#9:定义了PKC

29、S#6扩展证书、PKCS#7数字签名消息和PKCS#8加密私钥的属性类型。PKCS#10:描述了证书请求的标准语法。一个证书请求包括证书主体的辨识名、公钥和可选的一组属性,由请求证书的用户签名。PKCS#11:是密码标记的API标准,它详细定义了一个通用的编程接口,可用于各种可移植的密码设备。PKCS#12:个人信息交换语法标准,描述了将用户的私钥、证书和其他相关的秘密信息存放在软件中的语法。它的目标是为各种应用提供一个标准的单一密钥文件。2.5 证书认证中心2.5.1 认证中心的作用证书认证(Certificate Authority)中心简称CA,它是PKI的核心。CA作为电子商务交易中受

30、信任的第三方,承担公钥体系中公钥的合法性检验的责任。为每个使用公开密钥的用户发放数字证书,用以证明证书中列出的用户名称与证书中列出的公开密钥相对应。证书中,CA中心的数字签名使得攻击者不能伪造和篡改数字证书。因此在电子交易的各个环节,交易各方检验对方数字证书的有效性则可确定其身份的合法性,从而根本解决用户信任问题。以数字证书为核心的PKI/CA技术可以对网络上传输的信息进行加密和解密、数字签名和签名验证,从而保证信息除发送方和接收方外不被其它人窃取;信息在传输过程中不被篡改;发送方能够通过数字证书来确认接收方的身份;发送方对于自己的信息不能抵赖。CA允许管理员撤销发放的数字证书,在证书注销列表

31、(CRL)中添加新项并周期性地发布具有数字签名的CRL15。2.5.2 认证中心的职能概括地说,认证中心的功能有审批证书请求、证书发放、证书更新、证书注销和证书及CRL的存储、检索,密钥生存期管理。CA的核心功能就是发放和管理数字证书,CA的数字签名保证了证书的合法性和权威性。第三章 文件保密系统的分析与设计3.1 系统目标分析作为一个安全文件传输系统16,系统必须达到以下目标:保障数据机密性:系统必须确保只有预期的文件接收方才能读取文件信息。保障数据完整性:文件接收方能够验证他所接收到的文件是否完整,是否在传输过程中被非法篡改过,以保证他接收到的文件与发送方发送出来的文件完全相同。对数据源的

32、身份验证:文件接收方可以验证文件是否确实是由指定的发送方发送过来的。网络信息成功收发:系统必须确保发送方能够成功地将文件以及必要的即时消息传输给接收方。3.2 系统模块划分3.2.1 用户模块当用户运行文件保密系统的客户端,用户模块便在后台启动。要求用户输入账号和密码,提交到服务器进行核对,并接收服务器的反馈信息。用户模块根据反馈信息,若登陆成功,把用户好友显示在用户列表框中,从证书服务器中下载好友加密证书(公钥)并保存在相应文件夹下。处于A用户好友列表中的其他用户可以给A用户自由发送加密文件,同时,A用户可以给自己好友列表中的所有好友发送加密文件。3.2.2 更新模块更新模块将实时与服务器进

33、行数据交互,及时获取其他用户的最新状况,反馈给本地用户,实现如下功能:1.定期把本地用户信息和公钥提交到证书服务器上。2.定期从证书服务器上下载更新好友列表和各好友对应的加密证书。3.接收来自好友的加密文件提醒信息。3.2.3 文件保密模块为了实现文件的安全传输目的, 发送方首先对文件进行数字签名和加密处理, 接受方则对其进行解密处理和验证签名, 以确保文件的保密性、完整性和不可否认性。其具体过程如图3.1所示。可描述如下:1.发送方A将发送原文用SHA-1函数编码,产生一段固定长度的数字摘要;2.发送方A用自己的私钥对摘要加密,形成数字签名17,附在发送信息原文后面;3.发送方A产生通信密钥

34、,使用该密钥对带有数字签名的原文进行加密,传送到接收方B;4.发送方A用接收方B的公钥对通信密钥进行加密后,传到接收方B;5.接收方B收到加密后的通信密钥,用自己的私钥对其解密,得到通信密钥;6.接收方B用得到的通信密钥对收到的经加密的签名原文解密,得数字签名和原文;7.接收方B用发送方A公钥对数字签名解密,得到摘要;同时将原文用SHA-1函数编码,产生另一个摘要;8.接收方B将2个摘要进行比较,若一致,说明信息没有被破坏或篡改,否则丢弃该文档。3.2.4 服务器模块服务器模块作为文件保密系统的核心,负责加密文件和数字信封的接收/分发。主要功能如下:1.对于文件加密用户对文件加密后同时生成数字

35、信封,该用户把两者上传到服务器中,服务器负责记录发送者和接收者等相关信息。2.对于加密文件接受者,在收到新文件提醒后,与服务器建立连接,并发送要求数字信封和加密文件的信令。3.服务器在接到相关信令后,在后台进行判别,并反馈相关内容给该接受者。SHA签名后的文件原 文加密后的签名文件数字摘要数字签名数字信封A的私钥B的公钥A的通信密钥通信网络SHA原文数字摘要比 较正确的原文错误的原文数字摘要数字签名数字信封A的公钥B的私钥A的通信密钥通信网络图3.1 文件加解密流程图3.3 系统安全性分析1.加密数据以隐藏被传送的数据系统采用对称加密算法DES对原文件进行加密, 从而隐藏原文件的信息, 并用非

36、对称加密算法RSA对DES密钥加密,保证了数据的安全传送。2.保护数据的完整性和不可否认性系统采用了哈希算法SHA-1对原文件进行加密获得摘要,因此可以对传送来的文件进行同样的SHA-1加密产生摘要, 若两个摘要相同, 则说明原文件未被修改, 从而保证数据的完整性和不可否认性。3.保障数据的不可改变性由于经SHA-1加密的数据无法解密, 如果原文件被修改, 则所产生的摘要必定与原来的摘要不一致, 从而保障数据的不可改变性18。第四章 PKI文件保密系统的实现4.1 编程环境介绍4.1.1 ODBCODBC(Open Database Connectivity,开放数据库互连)是微软公司开放服务

37、结构(WOSA,Windows Open Services Architecture)中有关数据库的一个组成部分,它建立了一组规范,并提供了一组对数据库访问的标准API(应用程序编程接口)。这些API利用SQL来完成其大部分任务。ODBC本身也提供了对SQL语言的支持,用户可以直接将SQL语句送给ODBC。ODBC技术以CS结构为设计基础,它使得应用程序与DBMS之间在逻辑上可以分离,使得应用程序具有数据库无关性。ODBC定义了一个API,每个应用程序利用相同的源代码就可以访问不同的数据库系统,存取多个数据库中的数据。与嵌入式SQL相比,ODBC一个最显著的优点是用它生成的应用程序与数据库或数

38、据库引擎无关。ODBC使应用程序具有良好的互用性和可移植性,并且具备同时访问多种DBMS的能力,从而克服了传统数据库应用程序的缺陷。4.1.2 OpenSSLOpenSSL项目最早由加拿大人Eric A. Yang和Tim J. Hudson开发,现在由OpenSSL项目小组负责改进和开发,这个小组是由全球的一些技术精湛的志愿技术人员组成。OpenSSL是一个功能丰富且自包含的开源安全工具箱。它提供的主要功能有:SSL协议实现(包括SSLv2, SSLv3和TLSv1)、大量软算法(对称/非对称/摘要)、大数运算、非对称算法密钥生成、ASN. 1编解码库、证书请求(PKCS#10)编解码、数字

39、证书编解码、CRL编解码、OCSP协议、数字证书验证、PKCS#7标准实现和PKCS#12个人数字证书格式实现等功能。OpensSSL采用C语言作为开发语言,这使得OpenSSL具有优秀的跨平台性能,这对于广大技术人员来说是一件非常美妙的事情,可以在不同的平台使用同样熟悉的东西。OpenSSL支持Linux、Windows、BSD、Mac、VMS等平台,这使得OpenSSL具有广泛的适用性。OpenSSL整个软件包大概可以分成三个主要的功能部分:密码算法库、SSL协议库以及应用程序。OpenSSL的目录结构自然也是围绕这三个功能部分进行规划的19。作为一个基于密码学的安全开发包,OpenSSL

40、提供的功能相当强大和全面,囊括了主要的密码算法、常用的密钥和证书封装管理功能以及SSL协议,并提供了丰富的应用程序供测试或其它目的使用。4.2 证书认证中心(CA)的实现4.2.1 建立CA服务器CA服务器是一个应用程序,它从技术上实现了符合PKI和X.509等相关标准的证书签发和管理功能。其基本功能应该包括以下几个方面:接受申请证书的请求、审核证书请求、签发证书、发布证书、吊销证书、生成和发布证书吊销列表(CRL)及证书库的管理。本例用OpenSSL模拟CA服务器,指令如下:OpenSSL>perl ca.pl newca4.2.2 密钥及证书的生成1.生成一个1024位的RSA密钥,

41、并存储到userkey.pem文件中,对输出密钥不进行加密。指令如下:OpenSSL>genrsa -out userkey.pem 1024 2.生成一个新的证书请求文件req.pem,使用上步生成的密钥,不采用密钥的加密口令。指令如下:OpenSSL>req -in privatekey.pem -out req.pem3.利用CA服务器,签发用户证书,并存储到usercert.pem文件中,使用上步生成的证书请求文件,指令如下:OpenSSL>ca -in req.pem -out usercert.pem4.3 用户控制模块的实现用户控制模块在启动时要求输入用户名及密

42、码,连接至服务器并通过身份认证后,显示在线的好友列表,用户可通过选择好友来发送保密文件。服务器端数据库userinfo表各列意义如下:NAME(用户名),PWD(登陆密码),IP(用户IP地址),PORT(用户开放端口),STATUS(用户在线状态)。与数据库的连接采用ODBC技术。pdata->Open();pdata->m_strFilter="NAME=? AND PWD=?"pdata->p1=dlg->m_name;pdata->p2=dlg->m_pwd;pdata->Requery();if(pdata->IsE

43、OF()AfxMessageBox("用户名或密码错误");elseusername=dlg->m_name;pdata->Edit();pdata->m_IP=ip;pdata->m_PORT=port;pdata->m_STATUS="1"pdata->Update();pdata->m_strFilter="NAME!=?"pdata->p1=dlg->m_name;pdata->Requery();int count=0;while(!pdata->IsEOF(

44、)m_listctrl.InsertItem(count,pdata->m_NAME);if(pdata->m_STATUS="1")m_listctrl.SetItemText(count,1,"在线");elsem_listctrl.SetItemText(count,1,"离线");pdata->MoveNext(); count+;pdata->Close();4.4 数字签名模块的实现本例用数字签名用SHA-1 with RSA,用SHA-1计算文件摘要,用RSA计算其签名20。BIO* in = B

45、IO_new(BIO_s_file();BIO_read_filename(in,keyname);EVP_PKEY* pkey = PEM_read_bio_PrivateKey(in, NULL, NULL, NULL);BIO_free(in);EVP_MD_CTX mdctx;unsigned char* sig_value = (unsigned char* )malloc(sizeof(char) * EVP_PKEY_size(pkey);unsigned int sig_len;char mdname = "sha1"OpenSSL_add_all_dige

46、sts();OpenSSL_add_all_ciphers();const EVP_MD* md = EVP_get_digestbyname(mdname);EVP_MD_CTX_init(&mdctx);EVP_SignInit(&mdctx, md);char id256;FILE* f = fopen(localpath, "rb");while(!feof(f)&&!ferror(f)memset(id, 0, 256);fread(id, 255, 1, f);EVP_SignUpdate(&mdctx, id, strl

47、en(id);fclose(f);EVP_SignFinal(&mdctx, sig_value, &sig_len, pkey);EVP_MD_CTX_cleanup(&mdctx);EVP_PKEY_free(pkey);4.5 数字信封模块的实现PKI得以实现的主要基础是公钥密码标准(PKCS)系列,该标准系列最初是为推进公钥密码系统的互操作性,由RSA实验室与工业界、学术界和政府代表合作开发的。在RSA带领下,PKCS的研究随着时间不断发展,它涉及了不断发展的PKI格式标准、算法和应用程序接口。PKCS标准提供了基本的数据格式定义和算法定义,它们实际是今天所有P

48、KI实现的基础。其中,PKCS#7为使用密码算法的数据规定了通用语法,比如数字信封。本例采用PKCS#7标准实现数字信封21。OpenSSL_add_all_algorithms();CString cipname=path+"cip"+localname;CString certname=path+m_listctrl.GetItemText(nIdx,0)+"cert.pem"BIO* srcbio = BIO_new_file(localpath, "rb");BIO* cipbio = BIO_new_file(cipname

49、, "wb");BIO* fp = BIO_new_file(certname, "r");STACK_OF(X509)* certs = sk_X509_new_null();509* cert = PEM_read_bio_X509(fp, NULL, NULL, NULL);sk_X509_push(certs, cert);BIO_free(fp);const EVP_CIPHER* cipher = EVP_aes_128_cfb();PKCS7* pkcs = PKCS7_encrypt(certs, srcbio, cipher, PKCS

50、7_BINARY);SMIME_write_PKCS7(cipbio, pkcs, srcbio, 0);BIO_free(srcbio);BIO_free(cipbio);4.6 服务器模块的实现WinInet API提供了对现有Internet应用全面的支持,可以编写面向Internet的应用程序,并不用考虑基本的通讯协议。MFC提供的WinInet类是对WinInet API函数封装而来的,是面向对象的高级编程接口。本例采用CInternetSession类建立连接。CInternetSession* pSession=new CInternetSession;CFtpConnectio

51、n* pConnection;pConnection = pSession->GetFtpConnection();pConnection->PutFile(cipname,"cip"+localname);pConnection->GetFile("cip"+s2,cipname);pConnection->Close();4.7 系统运行效果客户端启动时。图4.2 登录框登陆后界面。图4.3 用户界面选择待加密发送文件。图4.4 选择文件发送成功。图4.5 发送成功另一客户端收到提醒。图4.6 新文件提醒选择文件保存位置。图4.7 选择位置接收并校验成功。图4.8 接收结果第五章 总结与展望5.1 论文总结文件保密是当前网络安全领域的研究热点,不仅是在电子商务,电子银行,电子政务等应用领域,在社会生活的各个领域也有极广泛的应用前景。由于电子文件在传输过程中易被偷窥,篡改,为了解决电子文件面临的这些安全威胁,需要为电子文件增加一些安全功能。本文

温馨提示

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

评论

0/150

提交评论