毕业设计(论文)基于多协议、可配置的远程Linux服务器的上传、下载程序设计(含全套程序代码).doc

上传人:仙人指路1688 文档编号:2397460 上传时间:2023-02-17 格式:DOC 页数:53 大小:616.50KB
返回 下载 相关 举报
毕业设计(论文)基于多协议、可配置的远程Linux服务器的上传、下载程序设计(含全套程序代码).doc_第1页
第1页 / 共53页
毕业设计(论文)基于多协议、可配置的远程Linux服务器的上传、下载程序设计(含全套程序代码).doc_第2页
第2页 / 共53页
毕业设计(论文)基于多协议、可配置的远程Linux服务器的上传、下载程序设计(含全套程序代码).doc_第3页
第3页 / 共53页
毕业设计(论文)基于多协议、可配置的远程Linux服务器的上传、下载程序设计(含全套程序代码).doc_第4页
第4页 / 共53页
毕业设计(论文)基于多协议、可配置的远程Linux服务器的上传、下载程序设计(含全套程序代码).doc_第5页
第5页 / 共53页
点击查看更多>>
资源描述

《毕业设计(论文)基于多协议、可配置的远程Linux服务器的上传、下载程序设计(含全套程序代码).doc》由会员分享,可在线阅读,更多相关《毕业设计(论文)基于多协议、可配置的远程Linux服务器的上传、下载程序设计(含全套程序代码).doc(53页珍藏版)》请在三一办公上搜索。

1、 毕业设计(论文)题目名称:基于多协议、可配置的远程Linux服务器的上传、下载程序设计院系名称:计算机学院班 级:网络082学 号:学生姓名: 指导教师: 2011年 5 月 论文编号:(200700824222) 基于多协议、可配置的远程Linux服务器的上传、下载程序设计Programming of upload and download Based on multi-protocol and configurable remote Linux server院系名称:计算机学院班 级:网络082学 号:学生姓名: 指导教师: 2011 年 5 月中文摘要随着现代社会计算机的日益普及,越来

2、越多的单位和个人使用计算机进行办公和日常生活使用,数据传输服务的应用十分广泛,深入到各个领域,但随之而来产生了数据的安全问题。因此,越来越有必要对网络现行的数据传输协议进行深入的了解、分析,这使得这一研究课题成为必然而迫切的需求。数据传输服务作为互联网的基础服务,是互联网信息系统的重要部件,其安全性至关重要。因此,如何有效地保证数据传输的安全,实现数据的保密传输和通信信道的可靠性,已经成为业界人士探索研究的重要课题之一。本文根据ftp协议和ssh(Secure Shell)协议的流程和内容,对整个协议流程进行分析研究,并实现上传下载程序,本程序可以集成到其他系统中,实现整个系统对上传下载功能的

3、需求。根据需要,可以选择基于口令和基于密钥的安全验证,选择使用ftp或者ssh方式进行文件传输,从而保证了数据传输的安全性。重点论述了上传下载程序中有关身份认证和数据传输模块,其中ssh数据出书的实现是这部分的核心。本文阐述了上传下载程序的分析与设计过程,并且介绍了系统开发开发技术,利用OpenSSL对ssh数据传输模块进行了设置,详细介绍了基于口令的认证、基于密钥的身份认证,ftp数据传输,ssh数据传输等功能。通过本程序可以按一定的要求,通过参数选择认证方式和数据传输方式,从而使本程序完全满足灵活性、实用性、安全性及可靠性。最后是论文总结与不足之处。关键词: 安全传输; ssh; ftp完

4、整版程序代码,全套设计,联系153893706AbstractWith the growing popularity of computers in modern society, more and more units and office computers for personal use and daily use, data transmission services are widely available, deep into the fields, but have followed the issue of data security . Therefore, the inc

5、reasing need for network data transfer protocol for the current understanding of analysis, which makes the inevitable and urgent research needs. Data transmission services as Internet-based services are an important component of the Internet information system, its security is essential. Therefore,

6、how to effectively ensure the security of data transmission, the confidentiality of data transmission and the reliability of communication channels has become the industry is one of the important issues to explore. Based on the ssh protocol ftp protocol and processes and content analysis of the whol

7、e process of research protocols, and to achieve upload and download programs, this program can be integrated into other systems, the entire system to upload and download functionality requirements. Necessary, you can choose key based on the security of passwords and authentication, choose to use ftp

8、 or ssh method to transfer files, thus ensuring the security of data transmission. Focuses on the upload and download programs and data related to authentication module, which ssh implementation of the data book is this part of the core. .In this paper, uploading and downloading process analysis and

9、 design process, and describes the development of technology systems development, the use of OpenSSL for ssh data transfer module was set up, details the password-based authentication, key-based authentication, ftp data transfer , ssh data transmission and other functions. Through this program can b

10、e certain requirements for certification through the parameter selection method and data transmission, thus making the process fully meet the flexibility, practicality, safety and reliability. Finally, summary and weaknesses of paper.Key words: secure transmission; ssh; ftp 目 录中文摘要IAbstractII目 录III第

11、1章 引 言11.1 课题的背景及意义11.1.1 研究背景11.1.2 研究意义11.2 需求分析21.2.1 文件上传的过程21.2.2 文件下载的过程21.2.3 列出服务器目录的过程21.3 可行性分析需21.4 平台选择31.4.1 硬件环境31.4.2 支持软件31.5 论文的组织结构3第2章 程序开发的理论基础及相关协议52.1 ftp协议概述52.1.1 ftp协议描述52.1.2 ftp的传输62.1.3 ftp server ProftpD的简介72.2 ssh协议概述82.2.1 ssh协议描述82.2.2 sftp的传输92.3 数字证书102.3.1 数字证书机制简介

12、102.3.2 数字证书内容及验证过程11第3章 系统设计的技术基础和总体设计143.1 OpenSSL开发库介绍143.1.1 OpenSSL概述143.1.2 OpenSSL的组成143.1.3 OpenSSL的应用接口153.2 Select多路复用IO架构模型153.2.1 Unix中常用的I/O模型153.2.2 Select模型简介163.2.3 Select函数用法173.3 make工具的简要介绍193.3.1 程序的编译和链接193.3.2 Makefile文件简介及组成203.3.3 Makefile规则和工作原理21第4章 系统功能的设计与实现224.1 设计的总体思路2

13、24.2 服务器主进程模块设计224.2.1 主模块的结构流程224.2.2 文件传输业务的实现234.3 服务器ssl模块的实现244.3.1 ssl模块的结构流程244.3.2 ssl模块的实现函数254.3.3 sslServer类的实现284.4 客户端设计304.4.1 客户端的结构流程30第5章 系统的运行与测试325.1 服务器的编译与布署325.2 程序的功能测试33第6章 总结356.1 对上下文的总结356.2 下一步的工作35参考文献37致 谢38附 录40附录A: 附加图、表目录40附录B: 主要源程序41第1章 引 言本章主要就题目的研究背景和研究意义出发,论述了安全

14、连接在文件传输系统中的重要性,总结和概述了国内外的现状以及安全传输系统的特征,着重论述了ssh协议发展的现状和分析。在此基础上提出一种使用ssl加密可靠传输,实现安全传输的方案。1.1 课题的背景及意义1.1.1 研究背景随着现代社会计算机的日益普及,越来越多的单位和个人使用计算机进行办公和日常生活使用,数据传输服务的应用十分广泛,深入到各个领域,但随之而来产生了数据的安全问题。因此,越来越有必要对网络现行的数据传输协议进行深入的了解、分析,这使得这一研究课题成为必然而迫切的需求。数据传输服务作为互联网的基础服务,是互联网信息系统的重要部件,其安全性至关重要。因此,如何有效地保证数据传输的安全

15、,实现数据的保密传输和通信信道的可靠性,已经成为业界人士探索研究的重要课题之一。传统的网络服务程序,如ftp、pop和telnet在本质上都是不安全的,因为它们在网络上使用明文传送密码和数据,别有用心的人非常容易就可以截获这些密码和数据。而且这些服务程序的安全验证方式也有其弱点,就是很容易受到中间人的攻击。所谓中间人的攻击方式,就是中间人冒充真正的服务器接收用户传给服务器的数据,然后再冒充用户把数据传给真正的服务器。服务器和用户之间的数据传送被中间人转手做了手脚之后,就会出现严重的问题。使用ssh,可以把所有传输的数据加密,这样中间人攻击方式就不可能实现了,而且也能够防止DNS和IP欺骗。此外

16、ssh传输的数据是经过压缩的,因此可以提高传输速度。1.1.2 研究意义ssh协议1995 年由 Tatu Ylonen正式提出。ssh 加密口令及数据可以在不安全的网络上透明地提供强认证和安全通信。ssh不涉及与操作系统核心相关的技术细节,容易实现;已有的应用,只要是利用可靠传输服务实现(比如 TCP over IP)的,都可以充分利用 ssh提供的 TCP端口转发功能达到安全防护的目的;ssh协议设计之初充分考虑到了扩展性的问题,很容易嵌入新的密码算法、认证方式以及密钥交换协议等。对于80多个国家的几百万用户来说,它是远程登录的事实标准,越来越多的组织把它作为利用公用网络(如Interne

17、t)接入公司内部网络的唯一方式。目前IETF对其进行的标准化工作已经进入到ssh 版本2的制定和研究阶段(Draft),相信不久ssh将会成为一套行之有效的通用网络安全标准协议。1.2 需求分析通过对程序运行流程进行详细的了解与分析后,大致可把此程序分为以下几个部分。1.2.1 文件上传的过程文件上传是本程序要实现的主要功能之一,服务器启动两个进程分别两个不同的端口监听,分别对应普通连接和ssl安全连接,并可指定服务器的主目录。客户机通过显式指定服务器地址和端口并通过指定参数(-s/n)选择使用不同的模块向服务器发起普通连接或加密连接。而后通过命令指出要发出的动作和动作的文件名,并进行动作。服

18、务器收到命令后,接收客户机发送的文件。过程完毕后,客户机给出提示1.2.2 文件下载的过程文件下载是本程序要实现的主要功能之一,服务器启动两个进程分别两个不同的端口监听,分别对应普通连接和ssl安全连接,并可指定服务器的主目录。客户机通过显式指定服务器地址和端口并通过指定参数(-s/n)选择使用不同的模块向服务器发起普通连接或加密连接。而后通过命令指出要发出的动作和动作的文件名,并进行动作。服务器收到命令后,向客户机发送文件。过程完毕后,客户机给出提示。1.2.3 列出服务器目录的过程这是本程序功能实现的一个重要步骤,通过向服务器发出命令,传回服务器主目录下的文件列表,一目了然。可作为上传下载

19、时输文件名的参考,保证了参数的正确性,可以此为依据进行上传和下载。1.3 可行性分析需系统的可行性分析主要包括技术上的可行性,经济上的可行性,法律上的可行性。开发此文件传输系统需要的硬件环境要求不高,操作系统为linux系列,内核Kernel-2.6.XX.XX,软件的开发平台为gcc-c+-4.1.XX.XX和OpenSSL0.9.XX。除专业技术人员外,普通使用人员无需掌握gcc及OpenSSL的使用,具备基本的linux的知识即可,易于学习和使用。根据现有的技术设备条件和准备充实的技术力量和设备,从技术方面开发此多协议上传下载程序是可行的。本上传下载程序主要面向linux/Unix开发人

20、员和维护人员,所需的硬件和软件环境均不高,所需的专业技术人员也不多,大部分用户在读完用户手册之后就可以亲自操作了。并且可以根据需要选择安全传输工具或者普通传输工具,所以开发此系统成本低,实用性高,因此系统经济可行性开发。此文件传输系统不侵犯他人合法权益,法律上是可行的。1.4 平台选择1.4.1 硬件环境表1-1 硬件环境序号名 称类 型用 途1PC Server 文件服务器文件服务器2PC客户端客户端1.4.2 支持软件表1-2 软件环境序号名 称类 型用 途1Linux(Kernel-2.6.24.7)操作系统系统运行环境2g+编译器系统运行环境3OpenSSL开发库系统运行环境4Bash

21、 Shell 应用软件应用软件1.5 论文的组织结构全文共分三部分六章内容,组织如下:第一部分是摘要及其译文:摘要部分是多协议上传下载程序、论文内容的简单介绍和概括。第二部分是论文目录及其章节内容。各章组织如下:4 第1章 引言。论述本课题研究的背景、意义和需求分析、可行性分析及平台选择,并简要介绍了本论文的组织结构。4 第2章 主要介绍程序开发的理论依据,主要包扩FTP协议概述,ssh协议概述和数字证书认证的相关介绍。4 第3章 主要介绍程序开发的相关技术基础,介绍了OpenSSL及其使用,Select多路选择I/O复用模型和Makefile的相关内容。4 第4章详细介绍了总体设计方案和框架

22、,根据前面研究现状和需求分析的原则,介绍了本系统的总体设计,阐述系统实现的概要设计、详细介绍系统各模块的实现。4 第5章 系统流程的实现,分析系统运行情况和测试数据,得出测试结论。4 第6章 结论,对毕业设计的相关工作提出总结,并做了进一步的展望。第三部分是参考文献、致谢、附录。它是对系统和本论文的补充说明。第2章 程序开发的理论基础及相关协议2.1 ftp协议概述2.1.1 ftp协议描述ftp协议即文件传输协议(File Transfer Protocol),它是TCP/IP协议族的应用协议之一,是Internet上使用非常广泛的一种通信协议。它是由支持Internet文件传输的各种规则所

23、组成的集合,这些规则使Internet用户可以把文件从一个主机拷贝到别一个主机上。通过TCP/IP连接在一起的任何两台计算机,如果安装了ftp和服务器,就可以通过ftp服务进行相互之间的文件传输,因而为用户提供了极大的方便和收益。ftp通常也表示用户执行这个协议所使用的应用程序。ftp和其他的Internet服务一样,亦采用客户机/服务器方式。它要求用户用本地的客户端与服务器建立连接,然后才能从服务器上获取文件(Download),或向服务器发送文件(Upload)。使用方法很简单;启动ftp程序先与主机连接,然后向远程主机发出传输命令,远程主机给予响应,执行正确命令。ftp文件传输的主要特点

24、:用户有合法的用户名和口令的前提下才与服务器建立连接。通过客户端软件,用户可以在权限允许的范围内进行文件更名、删除、或传送操作。ftp支持的文件传送类型:ftp支持的文件传送类型,它们是ASCII和二进制映像。v文本文件(ASCII):在传送文本文件时应该使用ASCII。在ASCII模式中,将执行网络标准字符转换。例如,行尾的字符在必要时根据目标操作系统进行转换。v二进制(Binary)文件的传输可执行文件、图像和压缩文件等时应该使用二进制。在二进制模式中,一个字节接一个字节地移动文件。ftp在实现网络传输时提供的3种模式:v流模式(Stream mode)。在这种模式下,ftp将文件作为一系

25、列字节进行处理,适用于任何数据类型。ftp针对不同的文件结构指明文件的开始和结尾。v块模式(Block mode)。在这种模式下,ftp将文件作为大量块传输,每一个块前都有一个报头,包含有块的大小和描述符。所谓的描述符是用来确定该块在整个文件中的位置,指明该块是不是最后一块,同时,描述符还有一个位来描述数据是否可靠。v压缩模式(Compressed mode)。这种模式主要用于提高传输的效率,能有效利用网络带宽。2.1.2 ftp的传输ftp采用两个TCP连接来传输一个文件。1) 控制连接以通常的客户服务器方式建立。服务器以被动方式打开众所周知的用于ftp的端口(21),等待客户的连接。客户则

26、以主动方式打开TCP端口21,来建立连接。控制连接始终等待客户与服务器之间的通信。该连接将命令从客户传给服务器,并传回服务器的应答。由于命令通常是由用户键入的,所以IP对控制连接的服务类型就是“最大限度地减小迟延”。2) 每当一个文件在客户与服务器之间传输时,就创建一个数据连接。(其他时间也可以创建,后面我们将说到)。由于该连接用于传输目的,所以IP对数据连接的服务特点就是“最大限度提高吞吐量”。下图描述了客户与服务器以及它们之间的连接情况从图中可以看出,交互式用户通常不处理在控制连接中转换的命令和应答。这些细节均由两个协议解释器来完成。标有“用户接口”的方框功能是按用户所需提供各种交互界面(

27、全屏幕菜单选择,逐行输入命令,等等),并把它们转换成在控制连接上发送的ftp命令。类似地,从控制连接上传回的服务器应答也被转换成用户所需的交互格式。图2-1 ftp协议文件传输的处理过程 2.1.3 ftp server ProftpD的简介ProftpD:一个Unix平台上或是类Unix平台上(如Linux, FreeBSD等)的ftp服务器程序。它是在自由软件基金会的版权声明(GPL)下开发、发布的免费软件,也就是说任何人只要遵守GPL版权声明,都可以随意修改源始码。Proftp是针对Wu-ftp的弱项而开发的,除了改进的安全性,还具备许多Wu-ftp没有的特点,能以Stand-alone

28、、xinetd模式运行等。Proftp已经成为继Wu-ftp之后最为流行的ftp服务器软件,越来越多的站点选用它构筑安全高效的ftp站点,Proftp配置方便,并有MySQL和Quota模块可供选择,利用它们的完美结合可以实现非系统账号的管理和用户磁盘的限制。以下是ProftpD的特点: v单一设定档,设定风格接近 Apache 设定档;v每一目录可用 .ftpaccess 来控制(类似 Apache 的 .htaccess) ; v易於设定多重虚拟主机以及匿名ftp; v可让管理人员选择 standalone 或 inetd 的执行方式; v匿名ftp不需要额外的目录结构; v原始码开放,没

29、有 SITE EXEC 指令,安全性可受监控; v根据系统档案权限,可隐藏目录或档案; v以较低权限的身份来执行,降低万一被攻入的危险; v记录档支援 utmp/wtmp,并和 wu-ftpd 相容,记录格式也可扩充; v支援shadow password 。2.2 ssh协议概述2.2.1 ssh协议描述ssh是IETF( Internet Engineering Task Force)的Network Working Group所制定的一族协议,其目的是要在非安全网络上提供安全的远程登录和其他安全网络服务。传统的telnet、 ftp 和rlogin 等服务存在众多安全缺陷: 使用弱囗令单

30、一认证机制;传输数据(包括帐号和密码)为明文,容易被窃取、篡改和重发数据;这些服务的安全验证机制容易引发各种欺骗,比如man- in- the- middle攻击。为了克服这些安全缺陷,ssh 协议被设计出来。ssh 使用多种加密方式和认证方式,解决了以上传统服务的数据加密、身份认证问题。ssh 成熟的公钥/ 私钥体系,为客户端和服务端之间的会话提供加密通道,解决了数据(包括囗令)在网络上以明文传输的不安全问题。ssh 还支持CA、 smart 卡等多种认证方式, 解决了身份认证问题和克服了重放攻击和man- in- the- middle攻击等不安全因素。ssh 协议有两个版本: ssh1(

31、 ssh 1. 5协议) 和ssh 2( ssh 2. 0协议) ,两者是同一程序不同的实现,但是它们使用不同的协议.。因此,二者不兼容。 ssh 2. 0 不管在安全、 功能还是性能上都比ssh 1. 5 有优势。ssh协议是建立在应用层和传输层基础上的安全协议,它主要由以下三部分组成,共同实现ssh的安全保密机制。图2-2 ftp协议文件传输的处理过程 传输层协议,它提供诸如认证、信任和完整性检验等安全措施,此外它还可以任意地提供数据压缩功能。通常情况下,这些传输层协议都建立在面向连接的TCP数据流之上。用户认证协议层,用来实现服务器的跟客户端用户之间的身份认证,它运行在传输层协议之上。连

32、接协议层,分配多个加密通道至一些逻辑通道上,它运行在用户认证层协议之上。图2-3 ssh协议的报文格式 加密部分 = 填充垫 + 包类型 + 数据 + 校验和包长 = 1(包类型) + 数据字节长度 + 4(校验和)ssh-2使用基于MD5 AND SHA-1的加密hash算法来防止这个问题。图2-4 ssh协议的消息编码 2.2.2 sftp的传输sftp是Secure File Transfer Protocol的缩写,安全文件传送协议。可以为传输文件提供一种安全的加密方法。在ssh软件包中,已经包含了一个叫作Sftp(Secure File Transfer Protocol的安全文件传

33、输子系统,Sftp本身没有单独的守护进程,它必须使用sshd守护进程(端口号默认是22)来完成相应的连接操作,所以从某种意义上来说,Sftp并不像一个服务器程序,而更像是一个客户端程序。sftp 与 ftp 有着几乎一样的语法和功能。Sftp 为 ssh的一部份,是一种传输档案至 Blogger 伺服器的安全方式。Sftp同样是使用加密传输认证信息和传输的数据,所以,使用Sftp是非常安全的。但是,由于这种传输方式使用了加密/解密技术,所以传输效率比普通的ftp要低得多,如果您对网络安全性要求更高时,可以使用Sftp代替ftp。 sftp是ssh内含的协议,只要sshd服务器启动了,它就可用,

34、它本身不需要ftp服务器启动。 图1显示了Sftp的工作模式,它是作为ssh2的一个子服务工作的。图2-5 Sftp工作模式 2.3 数字证书2.3.1 数字证书机制简介众所周知,公钥密码学通过使用公钥和私钥这一密钥对,使数字签名和加密通讯等密钥服务变得容易起来。公钥技术之所以能得到广泛的应用,原因就在于对那些使用密钥对中的公钥来获得安全服务的实体,他们能很方便地取得公钥,即密钥分发与管理比起对称密钥的分发与管理变得简单了。所以有人称,非对称密码算法是计算机安全通讯的一次技术革命。当然,公钥的分发也需要数据完整性保护措施,即需要数据完整性服务来保障公钥不被篡改,并保证公钥一定要有与其声明持有者

35、的身份相对应绑定的机制,最终目的是能提供一种简单安全识别的机制,其一可以使公钥及其相关信息的完整性得到保障;其二可以使公钥及其相关信息以一种可信的方式与其声明所有者绑定在一起。这就是证书机制,证书在电子商务中是一种权威性的文档,证书的颁发者必须具有可信赖性,它是由权威性、可信任性和公正性的第三方机构所颁发的。证书是一种安全机制,它能保证实现和完成PKI的身份认证、完整性、保密性及不可否认性的安全服务。图2-6 数字证书工作基本原理图 2.3.2 数字证书内容及验证过程被人们普遍接受并使用得最为广泛的是ITU的X.509标准数字证书格式。数字证书的内容v版本号:代表数字证书的版本格式是版本l、版

36、本2或版本3。v数字证书序列号:由认证机构发放的代表该数字证书的惟一标识号。v签名算法标识符:认证机构用来对数字证书进行签名所使用的数字签名算法的算法标识符。v数字证书发放者:发行数字证书的认证机构的X.500名称。v有效期:数字证书的起始和终止的日期和时间。v主体:与相应的被验证公钥所对应的私钥持有者的X.500名称。v主体的公钥信息:主体的公钥值以及该公钥被使用时所用的算法标识符。v数字证书发放者的惟一标识符:这是一个可选项,当不同的实体具有相同的名称时,利用该标识符可使发放数字证书的认证机构的X.500名称不具有二义性。v主体的惟一标识符:这是一个可选项,当不同的实体具有同样的名称时,利

37、用该标识符可使主体的X.500名称不具有二义性。图2-7 X509证书示意图加密过程v发送方利用散列函数把要发送的信息散列成固定长度数字摘要。v发送方用自己的私有密钥对数字摘要进行加密,形成数字签名。v把数字签名和自己的数字证书附加在原信息上,利用对称密钥加密,形成加密后的信息。v发送方用接收方数字证书中给出的公开密钥,再次加密形成数字信封。解密过程v接收方用自己的私有密钥对接收到的数字信封解密,得到发送方用于加密的对称密钥。v用该密钥对接收的加密信息解密,得到信息、数字签名和发送方的数字证书。v接收方用发送方数字证书中的公开密钥对数字签名解密,得到数字摘要。v接收方用同样的散列函数,把解密得

38、到的信息散列成固定长度的数字摘要。v比较两个数字摘要。一致说明传递过程中未被篡改。验证过程v接收方认为必要时,可以到证书发行者网站检索此证书,验证证书是否有效,并查询证书是否撤消、停用等如怀疑发证者的身份,还可以根据证书发行者获得的认证证书,到为其认证的认证机构进行认证,直到找到接收方信任的认证机构为止。v如怀疑发证者的身份,还可以根据证书发行者获得的认证证书,到为其认证的认证机构进行认证,直到找到接收方信任的认证机构为止。第3章 系统设计的技术基础和总体设计3.1 OpenSSL开发库介绍3.1.1 OpenSSL概述OpenSSL是一个开放源代码的SSL协议的产品实现,它采用C语言作为开发

39、语言,具备了跨系统的性能,支持Linux、Unix、Windows、Mac和VMS等多种平台。OpenSSL最早的版本在1995年发布,1998年后开始由OpenSSL项目组维护和开发。当前最新的版本是0.9.7b版本,完全实现了对SSLv1、SSLv2、SSLv3和TLS的支持。目前,OpenSSL已经得到了广泛的应用,许多类型的软件中的安全部分都使用了OpenSSL的库,如VOIP的OpenH323协议、Apache服务器、Linux安全模块等等。3.1.2 OpenSSL的组成虽然OpenSSL使用ssl作为其名字的重要组成部分,但其实现的功能确远远超出了ssl协议本身。OpenSSL事

40、实上包括了三部分:ssl协议、密码算法库和应用程序库。ssl协议部分完全实现和封装了ssl协议的三个版本和TLS协议,ssl协议库的实现是在密码算法库的基础上实现的。使用该库,你完全可以建立一个ssl服务器和ssl客户端。密码算法库是一个强大完整的密码算法库,它是OpenSSL的基础部分,也是很值得一般密码安全技术人员研究的部分,它实现了目前大部分主流的密码算法和标准。主要包括公开密钥算法、对称加密算法、散列函数算法、X509数字证书标准、PKCS12、PKCS7等标准。事实上,OpenSSL的ssl协议部分和应用程序部分都是基于这个库开发的。目前,这个库除了可以使用本身的缺省算法外,在0.9

41、.6版本之后,还提供了Engine机制,用于将如加密卡这样外部的加密算法实现集成到OpenSSL中。应用程序部分是OpenSSL最生动的部分,也是OpenSSL使用入门部分。该部分基于上述的密码算法库和ssl协议库实现了很多实用和范例性的应用程序,覆盖了众多的密码学应用。主要包括了各种算法的加密程序和各种类型密钥的产生程序(如RSA、Md5、Enc等等)、证书签发和验证程序(如Ca、X509、Crl等)、ssl连接测试程序(如S_client和S_server等)以及其它的标准应用程序(如Pkcs12和Smime等)。在某些时候,不需要做二次开发,仅仅使用这些应用程序便能得到我们的应用要求,比

42、如采用Ca程序就能基本上实现一个小型的CA功能。3.1.3 OpenSSL的应用接口v基于OpenSSL指令的应用基于OpenSSL指令的应用很容易,只要安装好了OpenSSL,就可以开始使用了。最简单的应用就是使用Req、CA以及X509指令来签发一个证书了,该证书可以用于各种目的,比如很多Apache服务器就是使用OpenSSL的指令生成的证书作为服务器证书。v基于OpenSSL加密库和协议库的应用基于OpenSSL函数库的应用相比与基于OpenSSL指令的应用开发的工作量会大很多,但这并不意味着其应用会更少。事实上,基于OpenSSL的应用大部分是这种方式的,这种方式使得开发者能够根据自

43、己的需求灵活地进行选择,而不必受OpenSSL有限的指令的限制。3.2 Select多路复用IO架构模型3.2.1 Unix中常用的I/O模型套接口缺省是阻塞的。这一点意味着当发出一个不能立即完成的套接口调用时,其进程将被投入睡眠,等待相应操作的完成。例如,read套接口时,套接口接收缓冲区为空,进程会被阻塞,等待数据到达接收缓冲区;write套接口时,套接口发送缓冲区满了,进程被阻塞,直到缓冲区非空。这些套接口操作引发的阻塞会使得服务进程进入睡眠,无法进行其他操作,直接影响服务器的性能。对于非阻塞I/O的套接口,如果read或者write操作不能被满足,将立即返回一个EWOULDBLOCK错

44、误。因此进程不会因某个套接字的读写阻塞。对于常见的input操作,一般分为两个步骤:1)wait to be ready2)copy data from kernel buffer to user buffer在UNIX/linux中有5种常见的I/O模型:(参见以上步骤)v阻塞I/O 用户进程执行1、2v非阻塞I/O 用户轮巡1,然后执行2v多路复用select、poll 用户调用select等待kernel返回,然后执行2v信号驱动I/O(SIGIO) 用户设置信号处理函数(sigio)后,正常继续其他函数,当kernel返回SIGIO后,执行2v异步信号I/O kernel执行1、2后通

45、知用户进程(不常用)这几种IO模型,阻塞IO是最长用到的,并且操作相对简单,但是缺点在于效率低下,尤其是在,同时操作多个IO的时候,不能随时的处理各个IO操作。而非阻塞IO可以解决这个问题,但是同样也存在的问题,因为使用非阻塞IO模型的时候,就需要对每个IO操作进行轮询操作,而实际上轮空的几率是很大的,多以非阻塞IO模型是在那种轮空几率相对较小的的时候才会使用。因为轮询是会占用相当多的cpu时间片的。基于这种考虑多路复用模型变产生了。多路复用模型是对多个IO操作进行检测,返回可操作集合,这样就可以对其进行操作了。这样就避免了阻塞IO不能随时处理各个IO和非阻塞占用系统资源的确定。3.2.2 S

46、elect模型简介套接字的Select模型,能够使应用程序同时对多个套接字进行管理。 当执行操作的套接字满足可读写条件时,给应用程序发送通知,接收到这个通知后,应用程序再去调用相应的API去执行函数调用。 调用select函数检查当前各个套接字的当前状态。并且根据该函数的返回值,判断套接字的可读可写性。然后调用相应的API完成数据的发送、接收等。图3-1 Select多路I/O复用模型3.2.3 Select函数用法系统提供select函数来实现多路复用输入/输出模型。原型:#include sys/time.h#include unistd.hint select(int maxfd,fd_

47、set *rdset,fd_set *wrset,fd_set *exset,struct timeval *timeout);参数maxfd是需要监视的最大的文件描述符值+1;rdset,wrset,exset分别对应于需要检测的可读文件描述符的集合,可写文件描述符的集 合及异常文件描述符的集合。struct timeval结构用于描述一段时间长度,如果在这个时间内,需要监视的描述符没有事件发生则函数返回,返回值为0。FD_ZERO,FD_SET,FD_CLR,FD_ISSET: 参数maxfd是需要监视的最大的文件描述符值+1;rdset,wrset,exset分别对应于需要检测的可读文件描述符的集合,可写文件描述符的集合及异常文件描述符的集合。struct timeval结构用于描述一段时间长度,如果在这个时间内,需要监视的描述符没有事件发生则函数返回,返回值为0。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 建筑/施工/环境 > 项目建议


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号