好文档就是一把金锄头!
欢迎来到金锄头文库![会员中心]
电子文档交易市场
安卓APP | ios版本
电子文档交易市场
安卓APP | ios版本

OpenSSL学习心得.doc

5页
  • 卖家[上传人]:夏**
  • 文档编号:544130156
  • 上传时间:2023-09-03
  • 文档格式:DOC
  • 文档大小:61.50KB
  • / 5 举报 版权申诉 马上下载
  • 文本预览
  • 下载提示
  • 常见问题
    • Open学习心得OpenSSL学习心得 经过一段时间的学习,我对OpenSSL有了初步了解下面是摘录和整理的一些内容,并对开发团队如何利用OpenSSL谈了一些自己的看法,供各位参考、讨论1 OpenSSL的由来及现状OpenSSL是SSL协议的产品实现它由加拿大人Eric A. Young和Tim J. Hudson发起设计的,他们自1995年开始编写后来具有巨大影响的OpenSSL软件包,这是一个没有太多限制的开放源代码的软件包,可以利用这个软件包做很多事情1998年,OpenSSL项目组接管了OpenSSL的开发工作,并推出了OpenSSL的0.9.1版,到目前为止,OpenSSL的算法已经非常完善,对SSL2.0、SSL3.0以及TLS1.0都支持OpenSSL目前最新的版本是2005年5月31日发布的0.9.8 Beta 3版现在可以说OpenSSL项目是由全世界范围内志愿者组成的团体一起管理,他们使用Internet去交流、设计和开发这个OpenSSL工具和相关的文档OpenSSL采用C语言作为开发语言,使得OpenSSL具有优秀的跨平台性能,这对于广大技术人员来说是一件非常美妙的事情,可以在不同的平台使用同样熟悉的东西。

      OpenSSL支持Linux、Windows、BSD、Mac、VMS等平台,这使得OpenSSL具有广泛的适用性OpenSSL的源代码库可以从OpenSSL的官方网站www.openssl.org自由下载,并可以免费用于任何商业或非商业的目的许多类型的软件中的安全部分都使用了OpenSSL的库,如VOIP的OpenH323协议、Apache服务器、Linux安全模块等等2 OpenSSL功能 作为一个基于密码学的安全开发包,OpenSSL提供的功能相当强大和全面,囊括了主要的密码算法、常用的密钥和证书封装管理功能以及SSL协议,并提供了丰富的应用程序供测试或其它目的使用 2.1 对称加密算法 OpenSSL一共提供了8种对称加密算法,其中7种是分组加密算法,仅有的一种流加密算法是RC4这7种分组加密算法分别是AES、DES、Blowfish、CAST、IDEA、RC2、RC5,都支持电子密码本模式(ECB)、加密分组链接模式(CBC)、加密反馈模式(CFB)和输出反馈模式(OFB)四种常用的分组密码加密模式其中,AES使用的加密反馈模式(CFB)和输出反馈模式(OFB)分组长度是128位,其它算法使用的则是64位。

      事实上,DES算法里面不仅仅是常用的DES算法,还支持三个密钥和两个密钥3DES算法 虽然每种加密算法都定义了自己的接口函数,但是OpenSSL还使用EVP封装了所有的对称加密算法,使得各种对称加密算法能够使用统一的API接口EVP_Encrypt和EVP_Decrypt进行数据的加密和解密,大大提供了代码的可重用性能 2.2 非对称加密算法 OpenSSL一共实现了4种非对称加密算法,包括DH算法、RSA算法、DSA算法和椭圆曲线算法(EC)DH算法一般用户密钥交换RSA算法既可以用于密钥交换,也可以用于数字签名,当然,如果你能够忍受其缓慢的速度,那么也可以用于数据加密DSA算法则一般只用于数字签名 跟对称加密算法相似,OpenSSL也使用EVP技术对不同功能的非对称加密算法进行封装,提供了统一的API接口如果使用非对称加密算法进行密钥交换或者密钥加密,则使用EVP_Seal和EVP_Open进行加密和解密;如果使用非对称加密算法进行数字签名,则使用EVP_Sign和EVP_Verify进行签名和验证 2.3 信息摘要算法OpenSSL实现了5种信息摘要算法,分别是MD2、MD5、MDC2、SHA(SHA1)和RIPEMD。

      SHA算法事实上包括了SHA和SHA1两种信息摘要算法,此外,OpenSSL还实现了DSS标准中规定的两种信息摘要算法DSS和DSS1 OpenSSL采用EVP_Digest接口作为信息摘要算法统一的EVP接口,对所有信息摘要算法进行了封装,提供了代码的重用性当然,跟对称加密算法和非对称加密算法不一样,信息摘要算法是不可逆的,不需要一个解密的逆函数 2.4 密钥和证书管理 密钥和证书管理是PKI的一个重要组成部分,OpenSSL为之提供了丰富的功能,支持多种标准 首先,OpenSSL实现了ASN.1的证书和密钥相关标准,提供了对证书、公钥、私钥、证书请求以及CRL等数据对象的DER、PEM和BASE64的编解码功能OpenSSL提供了产生各种公开密钥对和对称密钥的方法、函数和应用程序,同时提供了对公钥和私钥的DER编解码功能并实现了私钥的PKCS#12和PKCS#8的编解码功能OpenSSL在标准中提供了对私钥的加密保护功能,使得密钥可以安全地进行存储和分发 在此基础上,OpenSSL实现了对证书的X.509标准编解码、PKCS#12格式的编解码以及PKCS#7的编解码功能并提供了一种文本数据库,支持证书的管理功能,包括证书密钥产生、请求产生、证书签发、吊销和验证等功能。

      事实上,OpenSSL提供的CA应用程序就是一个小型的证书管理中心(CA),实现了证书签发的整个流程和证书管理的大部分机制 2.5 SSL和TLS协议 虽然已经有众多的软件实现了OpenSSL的功能,但是OpenSSL里面实现的SSL协议能够让我们对SSL协议有一个更加清楚的认识,因为至少存在两点:一是OpenSSL实现的SSL协议是开放源代码的,我们可以追究SSL协议实现的每一个细节;二是OpenSSL实现的SSL协议是纯粹的SSL协议,没有跟其它协议(如HTTP)协议结合在一起,澄清了SSL协议的本来面目由于SSL协议现在经常跟HTTP协议在一起应用形成HTTPS协议,所以给很多人误认为SSL协议就是为了保护Web安全性的,这实在是一个很大的误解! OpenSSL实现了SSL协议的SSLv2和SSLv3,支持了其中绝大部分算法协议OpenSSL也实现了TLSv1.0,TLS是SSLv3的标准化版,虽然区别不大,但毕竟有很多细节不尽相同OpenSSL除了提供了使用SSL协议和TLS协议的API接口函数之外,还提供了两个不错的应用程序S_Client和S_ServerS_Client用来模拟SSL客户端,可以用来测试SSL服务器,比如IIS和带mod_ssl的Apache等;而S_Server模拟了一个SSL服务器,可以用来测试SSL客户端,比如IE和Netscape等。

      事实上,由于是开放源代码的,S_Client和S_Server程序的源代码还是很好的OpenSSL的SSL接口API使用例子 2.6 应用程序 OpenSSL的应用程序已经成为了OpenSSL重要的一个组成部分,其重要性恐怕是OpenSSL的开发者开始没有想到的现在OpenSSL的应用中,很多都是基于OpenSSL的应用程序而不是其API的,如OpenCA,就是完全使用OpenSSL的应用程序实现的OpenSSL的应用程序是基于OpenSSL的密码算法库和SSL协议库写成的,所以也是一些非常好的OpenSSL的API使用范例,读懂所有这些范例,你对OpenSSL的API使用了解就比较全面了,当然,这也是一项锻炼你的意志力的工作 OpenSSL的应用程序提供了相对全面的功能,在相当多的人看来,OpenSSL已经为自己做好了一切,不需要再做更多的开发工作了,所以,他们也把这些应用程序成为OpenSSL的指令OpenSSL的应用程序主要包括密钥生成、证书管理、格式转换、数据加密和签名、SSL测试以及其它辅助配置功能 2.7 Engine机制 Engine机制的出现是在OpenSSL的0.9.6版的事情,开始的时候是将普通版本跟支持Engine的版本分开的,到了OpenSSL的0.9.7版,Engine机制集成到了OpenSSL的内核中,成为了OpenSSL不可缺少的一部分。

      Engine机制目的是为了使OpenSSL能够透明地使用第三方提供的软件加密库或者硬件加密设备进行加密OpenSSL的Engine机制成功地达到了这个目的,这使得OpenSSL已经不仅仅是一个加密库,而是提供了一个通用地加密接口,能够与绝大部分加密库或者加密设备协调工作当然,要使特定加密库或加密设备跟OpenSSL协调工作,需要写少量的接口代码,但是这样的工作量并不大,虽然还是需要一点密码学的知识Engine机制的功能跟Windows提供的CSP功能目标是基本相同的 2.8 辅助功能 前面介绍了OpenSSL的大部分功能,如果你第一次接触OpenSSL而又对密码学技术有所了解,这些功能相信会让你激动不已,如果你愿意,OpenSSL其实还有一些能让你高兴的地方 首先最值的一提的就是OpenSSL的BIO机制BIO机制是OpenSSL提供的一种高层IO接口,该接口封装了几乎所有类型的IO接口,如内存访问、文件访问以及Socket等这使得代码的重用性大幅度提高,OpenSSL提供API的复杂性也降低了很多前面介绍的EVP封装也提高了OpenSSL代码的可重用性 从前面应用程序的介绍就可以得知,OpenSSL对于随机数的生成和管理也提供了一整套的解决方法和支持API函数。

      随机数的好坏是决定一个密钥是否安全的重要前提,OpenSSL给我提供了这么一个解决方案,虽然不一定在所有的应用中都能令人满意 OpenSSL还提供了其它的一些辅助功能,如从口令生成密钥的API,证书签发和管理中的配置文件机制等等如果你有足够的耐心,将会在深入使用OpenSSL的过程慢慢发现很多这样的小功能,让你不断有新的惊喜 3 OpenSSL应用 OpenSSL的应用一般可以分为两种不同的方式:基于OpenSSL指令的应用和基于OpenSSL加密库和协议库的应用前者更容易一些,而后者需要做的工作更多一些当然,这些应用不一定是截然分开的,你当然可以两种都用一点,比如使用SSL协议的API,但是证书可以使用OpenSSL的指令签发 第 1 页 共 5 页3.1 基于OpenSSL指令的应用 基于OpenSSL指令的应用很容易,只要安装好了OpenSSL,就可以开始使用了 最简单的应用就是使用Req、CA以及X509指令来签发一个证书了,该证书可以用于各种目的,比如很多Apache服务器就是使用OpenSSL的指令生成的证书作为服务器证书此外,作为测试目的,使用OpenSSL指令生成一个证书也是不错的选择。

      对OpenSSL指令的集大成者应该是OpenCA了,它是一个完全基于OpenSSL的指令开发的一个证书认证中心(CA)程序,没有使用任何OpenSSL的API当然,它不仅仅使用了OpenSSL一个软件包,它还使用了诸如OpenLDAP等软件包,OpenCA从一个侧面上证明了OpenSSL指令的作用是很全面的 3.2 基于OpenSSL函数的应用 基于OpenSSL函数库的应用相比与基于OpenSSL指令的应用开发的工作量会大很多,但这并不意味着其应用会更少事实上,基于OpenSSL的应用大部分是这种方式的,这种方式使得开发者能够根据自己的需求灵活地进行选择,而不必受OpenSSL有限的指令的限制 Mod_ssl是一个基于OpenSSL指令应用的范例,Apache和mod_ssl结合起来实现HTTPS服务成功地在Linux和Windows等平台运行Stunnel是另外一个成功应用OpenSSL函数库的程序,该程序提供一种包含客户端和服务器的安全代理服务器功能,事实上就是在客户端和服务器使用OpenSSL建立一条安全的SSL通道 除了这些。

      点击阅读更多内容
      关于金锄头网 - 版权申诉 - 免责声明 - 诚邀英才 - 联系我们
      手机版 | 川公网安备 51140202000112号 | 经营许可证(蜀ICP备13022795号)
      ©2008-2016 by Sichuan Goldhoe Inc. All Rights Reserved.