




已阅读5页,还剩79页未读, 继续免费阅读
(计算机应用技术专业论文)openssl的组件化封装研究与实现.pdf.pdf 免费下载
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
西南交通大学硕士研究生学位论文第1 页 摘要 近年来,随着互联网越来越广泛的应用,网络安全成为了越来越受到重视的 问题。基于密码学知识的s s l 协议成为了保证网络数据安全的有效手段,在许 多的领域起着极为重要的作用。o p c n s s l 是实现s s l t l s 协议的最主要的基础 函数库。它是具有强大功能的开源软件,由世界各地无数的志愿者负责其开发 工作。o p e n s s l 在面向过程思想指导下,采用纯c 语言编写的。因此,o p e n s s l 存在一些不足,使它越来越不符合软件潮流发展方向。必须用一种全新的思想 来重新设计其结构,以弥补存在的不足。通过对微软的c o m 组件技术分析发 现,使用c o m 组件技术重新封装o p e n s s l 是解决这些问题的有效途径。 为了设计好o p e n s s l 组件结构,本论文详细剖析了o p e n s s l 的基本结构和 程序流程,深入分析其存在不足的原因。文中也对c o m 组件技术和a t l 库进 行了详细论述和仔细分析,得出了c o m 组件技术的特点和优势所在。在上述 两点的基础上,说明了采用c o m 组件技术封装o p e n s s l 的原因和带来的好处, 并提出了映射和面向对象两种具体的封装思想,充分考虑到了传统用户和习惯 于面向对象方法用户的需求。在封装思想的指导下,课题采用v i s u a ls t u d i o2 0 0 3 和其附带的a t l7 0 活动模板库作为开发工具和环境。因为o p c n s s l 和a t l 本 身的特性,封装过程遇到了一些问题。通过对问题本质的详细分析,本文提出 了有效的解决方案,完成了封装工作。 封装之后的o p e n s s l 有效地克服了原来面向过程、使用不方便、升级维护 困难等缺点。同时,原来具有的强大功能也得以保留。通过对封装前后o p c n s s l 的使用方法对比,证明了o p e n s s l 的组件化能有效改善其结构、符合软件发展 潮流。 本文为改变软件结构,使其符合软件发展方向提出了一种有效的思想和解决 方法。这种思想和方法可以推广到其它类似的应用场合,为进一步促进开源软 件的应用起抛砖引玉的作用。 关键词:o p c n s s l ;c o m ;组件封装;密码学;网络安全 西南交通大学硕士研究生学位论文第页 a b s t r a c t w i t ht h ew i d e l ya p p l i c a t i o no fh l t e r n e tt h e s ed a y s ,n e t w o r ks e c u r i t yb e c o m e s m o r ea n dm o r ei m p o r t a n t u s i n gs s lp r o t o c o lb a s e do nc r y p t o g r a p hi sa ne f f e c t i v e m e t h o dt oa s s u r et h es e c u r i t yo fn e t w o r k o p e n s s li st h ep r i m a r yb a s i cf u n c t i o n l i b r a r yb a s e do ns s l r f l sp r o t o c 0 1 i ti sp o w e r f u la n do p e n s o u r c ea n db e i n g u p d a t e db ym a n yv o l u n t e e r s b e c a u s ew a sw r o t eb ys t a n d a r dcl a n g u a g eu n d e r p r o c e d u r e - o r i e n tt h i n k i n g ,i th a sa l o to fd e f e c t s t h e s ed e f e c t sm a k eo p e n s s lc a n n o ta c c o r dw i t ht h ed e v e l o p m e n tt r e n do fs o f t w a r e i ti sn e c e s s a r yt oi m p r o v ei tb y r e b u i l d i n gi t ss t r u c t u r eu n d e ra n e wt h i n k i n g u s i n gm i c r o s o f t sc o m t e c h n o l o g yt o e n c a p s u l a t eo p e n s s l i sa ne f f e c t i v em e t h o dt os o l v et h e s ep r o b l e m s t od e s i g ng o o ds t r u c t u r eo fo p e n s s l c o m p o n e n t ,t h et h e s i sa n a l y z e so p e n s s u s s t r u c t u r ea n dp r o g r a m m i n gp r o c e d u r ei nd e t a i l , a n dt h e nf i n d st h er e a s o n sa b o u t d e f e c t s t h et h e s i se x p a t i a t e s0 1 1c o m t e c h n o l o g ya n da t ll i b r a r y , a n dd i s c u s s e s t h e i r a d v a n t a g e s b a s e do nt h et w op o i n t s ,t h et h e s i sd i s c u s s e se n c a p s u l a t i o n s a d v a n t a g e sa n dr e a s o n s t oc o n s i d e rt r a d i t i o n a lu s e r sa n do t h e rn s e r sw h oa r e a c c u s t o m e dt 0o b j e c t - o r i e n tm e t h o d t w ok i n d so f t h i n k i n ga l ep r e s e n t e d t h ef i r s ti s m a p p i n gm e t h o da n dt h es e c o n di so b j e c t - o r i e n tm e t h o d v i s u a ls t u d i o2 0 0 3a n d a t l7 0l i b r a r ya r et h ed e v e l o p m e n te n v i r o n m e n ta n dt 0 0 1 b e c a u s eo f o p e n s s la n d a t u ss p e c i a l t y , t h e r ea r es o m ep r o b l e m sp r e s e n tw h i l ee n c a p s u l a t i n go p e n s s l t h e t h e s i s p r o p o s e sas o l u t i o n f o rt h e s ep r o b l e m s ,a n d i m p l e m e n t se n c a p s u l a t i o n s u c e s s f u l l y a f t e re n c a p s u l a t i o n , o p e n s s lo v e r c o m e si t sd e f e c t ss u c ha sp r o c e d u r e o r i e n t , d i s c o m m o d i o u sn s e n e s sa n dd i f f i c u l tt o u p d a t e a tt h es a n l et i m e ,i t sp o w e r f u l f u n c t i o ni sr e s e r v e d t h et h e s i sc o n t r a s t st h ep r o g r a mb e f o r ea n da f t e re n c a p s u l a t i n g t op r o v et h a te n c a p s u l a t i o nc a ni m p r o v es o f t w a r es t r u c t u r ea n da c c o r dw i t ht h et r e n d o f s o f t - w a r ed e v e l o p m e n t 西南交通大学硕士研究生学位论文第页 t h et h e s i sp r e s e n t se f f e c t i v et h i n k i n ga n dm e t h o dt oi m p r o v es o f t w a r es t r u c t u r e t h et h i n k i n ga n dm e t h o dc f l a lb ee x t e n d e dt ot h es a m eo t h e ra p p l i c a t i o nf i e l dt o p r o m o t eo p e n - s o u r c es o f t w a r e sd e v e l o p m e n t k e y w o r d s :o p e n s s l ;c o m ;c o m p o n e n te n c a p s u l a t i o n ;c r y p t o g r a p h y ;n e t w o r k s e c u r i t y 西南交通大学硕士研究生学位论文第1 页 第1 章绪论 计算机网络是信息社会的基础,已经进入了社会的各个角落。经济、文化、 军事和社会生活越来越多地依赖计算机网络。然而,互联网本身地开放性、跨 国界、无主管、不设防、无法律约束等特性,在给人们带来巨大便利的同时, 也带来了一些不容忽视的问题,网络安全就是其中最为显著的问题之一。许多 在计算机网络中存储、传输和处理的信息是政府宏观调控决策、商业经济信息、 银行资金转帐、股票证券等重要信息,还有许多甚至是国家机密。由于网络安 全的漏洞,导致敏感信息泄漏、信息篡改、数据破坏、恶意信息发布、计算机 病毒发作等,造成的经济损失和社会不良影响难以估计。据有关部门统计,国 内9 0 以上的电子商务网站存在严重的安全漏洞,网络安全问题正在变得越来 越严峻。 网络安全的内容包含了系统安全和信息安全两个部分。系统安全主要是指 网络设备的硬件、操作系统和应用软件的安全。信息安全主要是指各种信息的 存储、传输的安全,具体体现在保密性、身份验证、完整性、不可抵赖性、可 用性和访问控制等方面。本论文所涉及到的s s l 协议和o p e n s s l 软件包主要是 用来保证其中的信息安全部分。 1 1s s l 和0 p e n s s l 概述 s s l 协议i l 】,即安全套接字层( s e c u r es o c k e tl a y e r ) 协议,是n e t s c a p e 公司 于1 9 9 6 年推出的安全协议,它为网络应用层的通信提供了认证、数据保密和数 据完整性的服务,较好地解决了互联网上数据安全传输的问题。s s l 的主要目的 是为网络环境中两个通信应用进程之间提供一个安全通道。该协议共分为上、 下两层。上层是s s l 纪录协议,它的作用是对下层传来的数据加密后传输。下层 是握手协议,是在服务器和客户机之间交换消息以强化安全性的协议,服务器 和客户机在传送和接受数据前,可以鉴别相互的身份、协商加密算法和加密密 钥。s s l 是一种介于可靠的传输协议( t c p ) 和应用层( h t t p ) 之间的协议 层,因此一个建立在s s l 协议之上的应用协议能透明地传输数据【8 】。 西南交通大学硕士研究生学位论文第2 页 o p e n s s l b 】是一个实现s s l 协议的基础函数库,它是由加拿大人e r i ea y o u n g 和t i mj h u d s o n 开发的,现在由o p e n s s l 项目组接管了开发工作。当前 o p e n s s l 的最新版本是0 9 8 b ,完全实现了对s s l v l 、s s l v 2 、s s l v 3 和t l s 的支 持。项目组的目标是开发一个健壮的、商业级的、完整开放源代码的工具包, 用强大的加密算法来保证s o c k e t 层和传输层的安全性。它为类似安全w 曲服务器 这样的应用提供加密功能。o p e n s s l 库中包含了完整的加密算法、数字签名算 法及证书算法等,可以很好地保证数据的完整性、保密性和正确性。 o p e n s s l 功能十分强大,其内容涵盖了p k i 应用中所需的几乎所有功能。 它是用标准c 语言开发的,具有优秀的跨平台性能,可以工作在多种常用的平 台上,使其具有了广泛的适应性,深受广大用户的欢迎。许多软件的安全部分 都用到了o p e n s s l ,如v o i p 的o p e n h 3 2 3 协议、a p a c h e 服务器和l i n u x 安全 模块等。另外,o p e n s s l 是开放源代码软件,世界各地的技术人员都可以对其 进行研究和借鉴,有利于它的快速发展和广泛应用。有理由相信,o r e n s s l 及 其所倡导的开放源码的思想必将被众多的支持者所发扬光大。 但是,o p e n s s l 最初的版本开发于1 9 9 5 年,由标准c 语言在面向过程的思 想下编写而成。随着软件思想和架构的不断发展以及用户对使用方便性的要求 越来越高,o p e n s s l 的缺点显露无疑。这些缺点使它越来越不符合软件的发展 潮流,必须在结构上有所突破才能进一步发展。这也就是本课题对o p e n s s l 进 行组件化研究的根本原因。 1 2c o m 组件技术概述 c o m 【j j ( c o m p o n e n to b j e c tm o d e l ) 即组件对象模型由微软开发,是一种以 组件为发布单元的对象模型,这种模型可以使各软件组件用统一的方式进行交 互,它是一种软件结构的工业标准,一个庞大的程序应该按照功能划分为多个 模块,每个模块必须保证在功能上的独立性他们通过接口进行交互,每个模块 独立进行开发、编译、调试,最后组成一个完整的应用系统程序。 c o m 组件具有以下一些属性和特点f 4 】: 1 组件是软件的基本量子,是软件开发中一个可替换的软件单元,它具有一 定的功能,可插用、可维护。组件封装了设计决策,并作为一个大单元或大系 西南交通大学硕士研究生学位论文第3 页 统的一部分和其它组件组合起来。 2 组件可被分离出来,具有标准化的、可重用的公开接口。 3 组件是具有特定功能的、能够跨越进程边界,实现网络、语言、应用程序、 开发工具和操作系统的“即插即用”的独立对象。 4 组件以接口为核心,组件的接口和组件的实现相分离。组件的接口对外提 供组件功能的调用方法,组件的实现被封装在组件的内部,组件的用户不用关 心组件的具体实现,只需理解组件的功能及其通过接口的调用方法。 1 3o p e n s s l 组件化封装研究的意义 目前,o p e n s s l 仍然在不断地发展,推出新的版本,最新的版本已经到了 0 9 8 b 。但是,项目组的工作仅仅在于不断加强和完善o p e n s s l 的功能,在其 本身的系统架构上几乎没有多少改进,仍停留在最初的面向过程阶段。随着面 向对象的思想越来越深入人心,人们也越来越习惯于用这种更接近真实世界的 表现方法来表达程序设计的过程,面向过程的方法也越来越不适应软件发展的 潮流。一方面,o p e n s s l 功能越来越强大,应用范围越来越广,执行效率越来 越高。另一方面,它的整体结构还停留在面向过程的阶段,数据和操作( 函数) 是分离的,用户的使用和代码的管理非常不方便。使用o p e n s s l 的时候,用户 必须考虑到所有的底层细节,并逐一调用函数来实现功能。这样一来,程序的 使用方法就太过麻烦,严重阻碍了用户把更多的精力投入到应用逻辑的设计上 面去,不利于编写功能完善安全程序。而且由于函数与数据的分离,以及函数 与函数之间的耦合,造成了程序结构混乱。整体结构的落后严重阻碍了o p e n s s l 的发展,急需有所改进。因此,用一种新的思想和技术来改变o p e n s s l 这种尴 尬的现状势在必行。 除开以上所说o p e n s s l 在整体结构上的落后以外,它还有一些不足需要改 进。o p e n s s l 库是以普通动态链接库的形式提供给用户的,造成了客户端版本 升级困难,每次要使用新版本的o p e n s s l ,必须将客户版本重新编译,给使用 者带来了极大的不便,也不符合软件复用的思想;普通动态链接库具有函数重 名、各编译器对c + + 函数的名称修饰不兼容、路径相关和与可执行文件的依赖 性等许多问题。 西南交通大学硕士研究生学位论文第4 页 针对以上问题,解决的办法之一是将o p e n s s l 库用c o m 组件的形式按照 面向对象的思想封装起来。c o m 组件是一种先进的软件模型,可以有针对性地 解决以上所说的所有缺点,非常适合用来封装o p c n s s l 。而且,软件的组件化 也是发展的一个方向,微软的许多新技术都是建立在c o m 的基础上。目前国 内外对于o p e n s s l 的组件化研究非常不足,是o p c n s s l 发展上的一个盲区。 本课题的目的就是通过研究,弥补这方面的不足。因此,课题具有一定的研究 价值和创新性。 除o p c n s s l 以# ,还有一些其他的密码算法开发包,这些开发包有些是诸如 微软这种超级商家提供的,有些则是由像e i r ca y o u n g 这样的无私贡献者提供 的。首先是微软的c r y p t o a p i ,它包含了各种密码算法、密钥管理以及证书管理 等功能,具有相当强大的功能。但是c r y p t o a p i 也有许多限制。它是基于w i n d o w s 平台开发的,可移植性很差。还有就是它是不开放源码的,没有什么借鉴研究 的价值。d a v i d 的力作c r y p t o + + 也是一个不错的开放源代码的密码算法类库, 它使用c + + 写成,对于c 抖程序员来说,这是一个很好的选择。但是因为c r y p t o + + 仅仅提供了密码算法的实现,而对需要密钥管理封装和证书管理等相关功能并 没有提供很好的支持。对于j a v a 程序员,还可以选择j s s e 的密码算法开发包, 这是一个功能和o p c n s s l 几乎相当的开发包,区别的最大不同之处在于它是用 j a v a 写成的。 由于以上所述的各种密码算法开发包具有这样那样的缺点,都不如o p c n s s l 功能强大、运用广泛,加上其开源、有利于封装的特性,所以本课胚选择o p e n s s l 做为研究对象。 1 4 本文的主要研究工作 本文的工作重点在于用一种新的思想和方法重新设计o p c n s s l 的整体结构, 克服以前因为结构上的缺陷带来的种种弊端。因此,我们需要首先分析o p e n s s l 的功能和基本结构,弄清楚组成o p c n s s l 的各个部分以及每个部分的具体功能。 这些分析结果非常重要,是o p e n s s l 组件结构设计的基础和依据。然后,结合 c o m 组件技术的特点,通过仔细分析提出了映射和面向对象两种基本的封装思 想,并在思想的指导下设计出o p e n s s l 组件的整体结构。在具体的封装实现过 西南交通大学硕士研究生学位论文第5 页 程中遇到了参数类型、参数方向、内存管理和文件依赖性等问题。通过对问题 本质的具体分析,提出了合理的解决方案,比较好地完成了整个封装过程。最 后,结合封装前后o p c n s s l 的使用方法的对比,分析封装为o p c n s s l 带来的 变化和改进,得出了o p e n s s l 组件化研究是解决目前存在种种问题的有效方法 的结论。下面是本文章节的安排。 第1 章简要介绍s s l 协议、o p c n s s l 基础函数库和c o m 组件技术的发展、特 点、现状以及研究的意义。 第2 章详细剖析了o p c n s s l 的基本结构,为后来封装思想的提出和整体结 构的设计打下基础。 第3 章分析c o m 组件技术的特点,说明封装的必要性。提出了封装的基 本思想,结合o p c n s s l 结构特点设计了组件的基本结构。 第4 章详细论述了在前述思想指导下如何具体完成封装工作,并阐述了封 装过程中所遇到的难题以及解决办法。 第5 章介绍了用映射方法和面向对象方法建立s s l 通信过程的流程,通过 封装前后使用方法的区别,着重说明了封装给o p c n s s l 带来的变化和好处。 西南交通大学硕士研究生学位论文第6 页 第2 章0 p e n s s l 的详细分析 在提出封装思想、设计封装结构之前,o p o a s s l 的框架和基本结构是基础。 只有深入地分析了o p e n s s l 原来的结构,才能够在此基础上为o p e n s s l 组件 设计出面向对象,具有高可复用性的框架结构,才能在改变o p e n s s l 结构的基 础上完整地保留其强大的安全功能。 2 1 s s l 安全传输协议 2 1 1s s l 概述 s s l 2 0 】协议是n c t s c a p e 公司为了保证w e b 通信协议的安全,于1 9 9 4 年开发 的。该协议第一个成熟的版本是s s l v 2 0 ,被集成到n e t s c a p e 公司等各种产品 中。微软公司也发布了相应的p c t ( p r i v a t ec o m m u n i c a t i o nt e c h n o l o g y ) ,并在 浏览器中支持。 s s l v 2 0 协议基本解决了w 曲通信中的安全问题。1 9 9 6 年,n e t s c a p e 公司发 布了s s l v 3 0 ,增加了对r s a 算法以外的其他算法的支持和一些新的安全特性, 并且修改了前一个版本中存在的安全缺陷。同s s l v 2 0 相比,新版本更加成熟 和稳定,因此很快成为事实上的工业标准。 s s l 协议是p k i f 3 】( p u b l i c k e y i n f r a s t r u c t u r e ) 体系中的网络安全标准协议, 被广泛用于互联网上的安全传输、身份认证等。它采用公开密钥技术,其目标 是保证两个应用间通信的保密性和可靠性,可以在服务器和客户机两端同时进 行。现在的w e b 浏览器普遍将h t t p 和s s l 相结合,从而实现w e b 服务器和 客户端浏览器间的安全通信。 s s l 采用t c p 作为传输协议提供数据的可靠传输。s s l 工作在t c f 层之上, 因此独立于更高层应用,可为更高层协议( 如h t t p 、f t p 以及t e l n e t 等) 提供安全服务。s s l 提供的安全服务采用了公钥体制为w 曲服务器和客户机的 通信提供保密性、数据完整性和认证。在建立连接中采用非对称密钥,在会话 过程中采用对称密钥。加密的类型和强度则在两端建立连接的过程中判断决定。 西南交通大学硕士研究生学位论文第7 页 s s l 协议在应用层协议通信之前就已经完成了加密算法、通信密钥的协商以及 服务器认证工作。在此之后应用层协议所传输的数据都会被加密,从而保证通 信的私密性。s s l 协议提供的安全信道有数据保密、身份认证和数据完整性三 个基本特性。 2 1 2s s i 体系结构 s s l 协议的目标就是在通信双方之间利用加密的s s l 信道建立安全的连接。 它不是一个单独的协议,而是分为两层,如图2 1 所示。 应用协议 一一令 s s l 记录协议 s s l 握手协议 t 。- 1 一_ f 一一专 可靠的网络传输层 1 i i i j 图2 - 1s s l 协议在网络协议中的位置及分层 s s l 记录协议为各种高层的协议提供了基本的安全服务。通常超文本传输协 议可以在s s l 的上层实现。有三个高层协议分别作为s s l 的一部分:握手协议、 更改密码规格协议和警告协议。这些s s l 特定的协议可以管理s s l 的交换。记 录协议和握手协议是s s l 协议体系中两个主要的协议。记录协议确定数据安全 传输的模式,握手协议用于客户机和服务器建立起安全连接之前交换一系列的 安全信息,这些安全信息主要包括客户机确定服务器的身份、允许客户机和服 务器选择双方共同支持的一系列加密算法、服务器确定客户机身份( 可选) 、通 过非对称密码技术产生双方共同的密钥、建立s s l 的加密安全通道。 2 1 3 $ s l 协议流程 对应用数据进行加解密的加密方法和密钥是通过握手协议产生的。当客户 时 间 西南交通大学硕士研究生学位论文第8 页 端和服务器首次进行通信时,他们要对s s l 协议版本号、加密算法、产生共享 密钥的公钥加密算法及双方是否进行相互认证进行协商。这一过程如图2 2 所 示,其中的虚线部分代表可选,与客户端情况有关。 客户端服务器 第、弋 7 协商 本, 阶 j 嗲 密码l 段 算法j 发送j 书、l 第 二 码交j 阶 客户j 段 服务 s e e 二二釜;发送 第 = = = 葛蠹享二二: 客户 发送证 三 、芝 阶 段 第 change_cipher_spec霪 更改碴 四 孟 完成掳 阶 , 段 图2 - 2s s l 握手过程 西南交通大学硕士研究生学位论文第9 页 第一阶段( 发起阶段) :客户端发送一个c l i e n th e l l o 消息,包括版本、随机 数、会话d 、支持的密码算法列表、压缩方法列表等参数。然后,客户端等待 服务器的s e r v e rh e l l o 消息。服务器发送s e r v e rh e l l o 消息,包括客户端建议的最 低版本以及服务器支持的最高版本、服务器产生的随机数、会话d 、服务器选 中的由客户端建议的一套密码算法、服务器选中的由客户端建议的一个压缩方 法等参数。 第二阶段( 服务器认证和密钥交换阶段) :首先,服务器发送自己的证书, 消息包括一个x 5 0 9 证书或者一条证书链。然后,服务器发送s e r v e rk e y _ e x c h a n g e 消息( 可选的,有些情况可以不需要。只有当服务器的证书没有包含必须的数 据时才发送此消息) ,消息包含签名,被签名的内容包括两个随机数以及服务 器参数。接下来,对于非匿名服务器发送c e r t i f i c a t e 一个证书( 包括证书类型和可接受的c a ) 。最后,服务器发送s e r v e r _ h e l l od o n e 消息等待应答。 第三阶段( 客户认证和密钥交换阶段) :客户端收至l j s e r v e rh e l l od o n e 消息 后,根据需要验证服务器提供的证书,并判断s e r v e r 的参数是否可以_ h e l l od o n e 接受,如果都没有问题的话,发送一个或多个消息给服务器: 1 如果服务器全球证书的话,则客户端首先发送一个c e r t i f i c a t e 消息。若客 户没有证书,则发送一个n oc e r t i f i c a t e 警告。 2 然后客户端发送c l i e n t _ k e y _ e x c h a n g e 消息,消息的内容取决于密钥交换 的类型。 3 最后,客户端发送一个c e r t i f i c a t ev e r i f y 消息,其中包含一个签名,对从 第一条消息以来的所有握手消息的h m a c 值进行签名。 4 客户发送一个c h a n g e 消息,并且把协商得到的密码算法列_cipher 表拷贝到当前连接的状态之中。 _ s p e c 5 然后,客户用新的算法、密钥参数发送一个f i n i s h e d 消息。这条消息可 以检查密钥交换和认证过程是否已经成功,其中包括一个校验值,对所有的消 息进行校验。 第四阶段( 结束阶段) :服务器同样发送c h a n g e消息和_ c i p h e rs p e c f i n i s h e d 消息。 至此,s s l 握手过程完成,为客户端和服务器建立起了一个安全的连接。 西南交通大学硕士研究生学位论文第1 0 页 2 20 p e n s s l 结构和功能 2 2 10 p e n s s l 概述 o p e n s s l 不但实现了s s l 的一些接口,它所涵盖的内容从底层对称、非对 称加密算法到建立在其上的p k c s ( p u b l i ck e yi n f r a s t r a t u r e ) 的接口( 包括x 5 0 9 证书、p k c s 标准、a s n 1 等) 的实现是一应俱全,甚至还给了一个有关c a 的 例子。o p e n s s l 这个包是由两部分组成的:s s l e a y 和o p e n s s l 。两者的关系是, s s l e a y 是一套接口库,o p e n s s l 是建立在这个库接口之上的一个应用。时至今 日,o p e n s s l 也发展到了0 9 8 b 版,功能也越来越丰富。s s l e a y 本身是跨平台 的,主要是用标准c 写成,支持大部分操作系统和环境,对于做不同平台下有 关信息安全的应用,s s l e a y 是个很好的选择。 o p e n s s l 包中的s s l e a y 是整个包的核心,s s l e a y 这个加密库所涉及的范 围之广、功能之齐全逻辑之合理、结构之复杂就能体现出e r i ea y o u n g 和t i mj h u d s o n 的开发功力。但是也有人对s s l e a y 复杂的接口( 2 0 0 0 多个函数,并且 有一些功能重复) 提出批评。s s l e a y 实现了常用的关于对称加密的d e s 、i d e a 、 r c 2 、r c 4 、r c 5 、b l 0 、f i s h 、c a s t ;实现了非对称算法中的r s a 、d h 、 d s a 。哈稀算法中的m d 2 、m d 5 、s h a 、s h a 1 、r i p e m d 、m d c 2 。单从这 些算法看来,已经可以用它来构建各种有关数据加密的应用了和p k c s 接口了。 更可贵的,它打破了美国的不允许强加密产品出口的限制。使用s s l e a y ,用户 完全可以替换微软所提供的那套用来构建加密应用的低强度加密库,并且通过 使用s s l e a y 开发自己的应用,完全可以做到s s l 的1 2 8 甚至更高位数的数据 加密。 s s l e a y 将实现的加密算法有对称、非对称算法、哈稀算法。基本上常用的、 标准的算法都包含在里面了,如d e s 、i d e a 、m d 5 、s h a 1 、r s a 、d s a 。同 时,对同一算法的各个加密模式也基本上都同时予以实现,比如对d e s 加密算 法,它不但实现了块加密模式的e c b ( e l e c t r o n i cc o d e b o o km o d e ) 、c b c ( c i p h e r b l o c kc h a i n i n gm o d e ) ,还实现了流加密的c f b ( c i p h e rf e e d b a c km o d e ) 、o f b ( o u t p u tf e e d b a c km o d e ) 。这些算法基本上都是以独立形式存在于o p e n s s l 这 个包所解开的源文件中。因此,用户在做自己的应用的时候,如果要用到有关 西南交通大学硕士研究生学位论文第1 1 页 加密、b a s e 6 4 编码、m d 5 等算法,完全可以将s s l e a y 所提供的这一套方便摘 取出来,直接利用这些现成的代码来为自己的程序服务。 s s l e a y 除过提供这些底层的有关加密算法的实现外,还实现了大部分p k c s 标准。p k c s 是一套由r s a 公司提出公开密钥加密标准,主要作用是用来规范 加密算法的处理,规范数字证书、数据封装、数字签名,以及个人私有信息保 护的一些标准。s s l e a y 对p k c s t ( 对r s a 加密算法的描述) 、p k c s 3 ( d i f f i e h e l l m e n k e y a g r e e m e n t ) 、p k c s 5 ( 基于口令进行加密的标准) 、p k c s 6 ( 扩展证书语法标准) 、p k c s 7 ( 加密信息表示的语法标准) 、p k c s 8 ( 私钥信 息语法标准) 、p k c s l 0 ( 证书申请语法标准) 、p k c s l 2 ( 个人身份信息迁移语 法标准) 等。p k c s 是用来构建p k i 的。通过s s l e a y 提供的p k c s 的实现,用 户可以方便地在有关p k i 的应用墨做到标准数字证书的申请、签发,个人信息( 如 证书、私钥等) 的安全被标准地存放,实现标准的、通用的数据加密、数据封装、 数掘签名信息格式。 从结构上看,s s l e a y 是分为三层的,最底层为各种加密算法的实现;中间 是高层接口,包括加密算法的抽象接口等,它对各种算法按对称、非对称、哈 稀算法进行分类然后相应的给予一组简单的接口。最上层是围绕加密算法的 s s l 和p k c s 等的实现。s s l e a y 不但实现了p k c s 本身,还对采用a s n 1 抽象 描述p k c s 提供了d e r 编码的接口,让这些抽象数据结构最终能够变成在网络 上进行传输,在硬盘上能够存储的数据。图2 - 3 是s s l e a y 部分的结构示意图。 应 用 s s l 、p k c s 等需要安全的应用场合 高 e v pp e mp c k s 舯b i o数据编码方法e r r 层 加密解密私钥加密编码基本输入a s n1x 5 0 9错误报告 接 口 报文摘要编码数字输出p k c s # 7o b j 数字信封信封 报文摘要算法对称加密算法公钥加密算法签名算法随机数发生器 底 d m 2 d m 5s h ar c 2 r c a i d e a r s a d h l q d s a s e e d 层 s h a - ld e s3 - d e se c b c b co f bc f b 6 4 图2 - 3s s l e a y 部分的结构示意图 西南交通大学硕士研究生学位论文第1 2 页 s s l e a y 部分对外的接口包含了2 0 0 0 多个函数,以普通动态链接库的方式提 供给使用者。这些函数在结构上相互之间没有太多的联系,以一种松散的方式 存在,而且在某些功能上还有重复之闲。使用者在用o p e n s s l 的时候不过是遵 循一定的程序流程,按规范依次调用函数。这是典型的面向过程的编程模式, 使用相当不便,也越来越不符合软件发展的方向。本研究课题的目的就是要寻 找一种全新的组织结构重新“包装”o p e n s s l 。这是一件比较有研究价值和实 际意义的工作,会在一定程度上推动o p c n s s l 的发展。 2 2 20 p e n s s l 的功能 o p c n s s l 包括s s l 库、加密算法库以及应用程序三大部分,并提供了测试 程序和一些应用例子,实现s s l t l s 协议及其相关的p k i 标准。o p e n s s l 由加 密算法库、哈希算法库、数字签名算法库、x 5 0 9 证书处理库、c a 工具库、s s l 处理库、e v p 算法封装库、b i o 抽象i o 封装库和o p e n s s l 工具包组成。 o p e n s s l 主要提供了以下功能【l 】: 各种类型密钥以及密钥参数的生成和格式转换 使用各种加密算法进行数据加密 证书请求、证书生成和签发以及证书其他相关标准转换 信息摘要算法以及相关编码的实现 s s l 服务器和客户端通信的实现 2 2 30 p e n s s l 总体结构 如前所述,o p c n s s l 整个软件包大概可以分成三个主要的功能部分:密码 算法库、s s l 协议库以及应用程序。o p c n s s l 的目录结构自然也是围绕这三个 功能部分进行规划的。 o p c n s s l 根目录下包含了很多子目录,其中一些平台相关的配置文件目录 对于本课题的研究来说并不重要,可以不做过多研究。c r y p t o 目录是o p c n s s l 所有密码算法和一些p k i 相关标准源码存放的目录,也是o p e n s s l 最重要的一 个目录。s s l 目录是s s l 协议各个版本的实现源码存放的目录。d o c 目录是 o p c n s s l 使用的说明文档存放的目录,这个目录对于o p c n s s l 使用者来说具有 西南交通大学硕士研究生学位论文第1 3 页 指导的作用。a p p s 目录存放了o p e n s s l 所用应用程序的源代码文件,也是研究 o p e n s s l 的a p i 很好的例子。d e m o s 目录就是一些志愿者写的o p e n s s l 应用的 例子了。i n c l u d e 目录是使用o p e n s s l 的库进行编程的时候可能需要使用到的一 些头文件。t e s t 目录测试o p e n s s l 一些自身测试程序源文件所在的地方。表2 1 是一些重要目录的名称和功能描述。 o p e n s s l 的算法目录c r y p t o 目录包含了o p e n s s l 密码算法库的所有源代码 文件。o p e n s s l 的密码算法库包含了o p e n s s l 中所有密码算法、密钥管理和证 书管理相关标准的实现,在w i n d o w s 下编程后的库文件名为l i b e a y 3 2 d l l ,在 l i n u x 下编译后生产的库文件名为l i b c r y p t o a 。c r y p t o 目录下包含了众多的子目 录,这些目录大多数以相关的算法或标准名称的简写命名。当然,并非所有这 些目录存放的源文件都是密码算法和标准,有些是o p e n s s l 本身的一些相关功 能文件,如b i o 、d s o 和e v p 等。表2 2 列出了c r y p t o 目录主要的子目录的功 能和简单说明。 表2 - 1o p e n s s l 部分目录的功能说明嗍 目录名功能描述 c r y p t o存放o p e n s s l 所有加密算法源码文件和相关标注如x 5 0 9 n 码文件,是o p e n s s l 中最重要的目录,包含了o p e n s s l 柙j 算法库的所有内容。 s s l 存放o p e n s s l 中s s l 协议各个版本* o t l s1 0 协议源码文件,包含了o p e n s s l 协 议库的所有内容。 a p p s存放o p e n s s l q a 所有应用程序源码文件,如c a 、x 5 0 9 等应用程序的源文件就存 放在这里。 d o c 存放 o p e n s s l q b 所有的使用说明文档,包含三个部分:应用程序说明文档、 加密算法库a p i 说明文档以及s s l 协议a p i 说明文档。 d e m o s 存放了一些基于o p e n s s l 的应用程序例子,这些例子一般都很简单,演示怎么 使用o p e n s s 蜞中的一个功能。 i n e l u d e 存放了使用o p e n s s l 的库时需要的头文件 t e s t 存放- j o p e n s s l f l 身功能测试程序的源码文件。 $ 2 - 2c r y p t o 子目录列表【8 l l 目录名称目录类型 内容或功能描述 l a e s 对称算法美国新的对称加密算法标准a e s 算法源码。 西南交通大学硕士研究生学位论文第1 4 页 b f 对称算法b l o w f i s h 对称加密算法源码。 c a s t对称算法c a s t 对称加密算法源码。 d e s对称算法包括了d e s 希1 3 d e s 对称加密算法源码。 i d e a 对称算法d e a 对称加密算法源码。 r e 2 对称算法r c 2 对称加密算法源码。 r e 4对称算法r c 4 对称加密算法源码。 r e 5 对称算法r c 5 对称加密算法源码。 o h 非对称算法d h 非对称密钥交换算法源码。 0 s a 非对称算法d s a t 对称算法源码,用于数字签名。 e e 非对称算法e c 椭圆曲线算法源码。 r s a 非对称算法r s a
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 摆摊饭团基础知识培训课件
- 摄影基础知识培训课件通知
- 食品技术考试题及答案
- 智能化安防系统工程施工合同(新增)
- 2025规范中介房产合同
- 2025财产信托的合同书模板
- 公司装配知识培训论坛课件
- 市社科联面试官方题库:全面解析面试技巧与策略
- 教育考试报名相关试题分享
- 2025年自驾租车合同范本下载
- 湖北省武汉市武昌区2021-2023年三年中考一模英语试题分类汇编:首字母填空(含答案)
- 2023-2024年全国卷英语双向细目表
- 节日期间纪检监督检查记录表
- GB/T 311.1-2012绝缘配合第1部分:定义、原则和规则
- (完整word)600习题《工会基础知识试题及答案》2020.1.6
- GB 29518-2013柴油发动机氮氧化物还原剂尿素水溶液(AUS 32)
- 第三单元名著导读《儒林外史之严贡生、严监生》课件-部编版语文九年级下册
- 中医药法宣讲余课件
- 2022年郑州城市职业学院辅导员招聘考试笔试试题及答案解析
- 鲁班奖工程复查参考表格
- Q∕SY 17375-2016 钻井液用固体润滑剂石墨类
评论
0/150
提交评论