OpenSSL之一:网络信息安全

15 篇文章 28 订阅
10 篇文章 3 订阅

一、信息安全

基于密码学原理来进行数据信息保护的安全技术。
信息安全的内容:

  • 机密性:保护信息免受主动的非法窃取、阅读等攻击。包括内容的机密性(确保数字信息的内容不被没有授权的人访问)和信息量的机密性(在通信设施上监听到通信的源地址、目的地址、通信频度、通信的数据长度、通信的时长等特征,通过分析来获取有用数据)。
  • 完整性:确保信息没有被修改,防止假冒信息。对于计算机中的存储信息来说,确保信息在存储的过程中没有被非法进行修改或替换。
  • 鉴别:确认访问者的身份或消息的来源,防止冒充他人的情况发生。对于计算机中的存储信息来说,鉴别的功能是确保访问者的身份。
  • 抗抵赖:保证消息的制造者或发出者不能在事后否认他制作或发出的消息。对于计算机中的存储信息来说,抗抵赖的功能就是确保文件在被合法授权用户修改后,该用户不能否认自己做过这样的修改。

二、密码学

密码学的作用

密码学的作用是解决信息系统机密性、完整性、鉴别和抗抵赖等相关的难题。
为解决机密性问题,密码学提出各种算法,主要分为对称加密算法(DES,3DES,AES等)和公开密钥算法(RSA,DH等)。为解决完整性问题,主要采用了散列函数(MD5,SHA,SHA1等)和数字签名相结合的算法。解决鉴别抗抵赖问题依赖严格的执行一套密码协议(Kerberos计算机网络授权协议,SKID)和网络协议(SSL,SET)。

密码学内容

  • 密码算法:包括对称加密算法、公开密钥算法、数字签名算法、信息摘要(散列函数)算法。
  • 密码协议:密码协议是基于密码学的协议,在密码算法的基础上实现,它包含了某种密码算法,为了防止和发现窃听、攻击和欺骗等。

密码学应用

电子商务、电子政务、私人邮件、WEB安全访问和虚拟专用网(VPN)等。

三、公钥基础设施

PKI(Public Key Infrastructure),公钥基础设施。

公钥基础设施的必要性

PKI是一种基于公开密钥算法的安全基础标准,它提供一个框架,在这个框架内建立了可以创建鉴定和验证过程需要的身份和相关信任信息,建立了可以管理的公开密钥加密系统。
PKI的主要目的是建立可信任的数字身份,将特定密钥和特定的人或实体联系起来,建立这种联系的主要形式就是颁发可信任的数字证书(或者叫电子证书)。

数字证书

什么是数字证书呢?我们可以将其理解为在数字世界标识自己的身份的证书。下表将数字证书和居民身份证类比,可以帮助理解:

居民身份证数字证书
颁发机构是公安局颁发机构是验证中心
公安局印章验证中心电子签名
唯一的居民身份证号码唯一的证书序列号
持有人姓名证书拥有者实体名称

公钥基础设施的组件

  • CA(验证机构):作为PKI的核心机构,负责确认身份和创建数字证书,并建立一个身份和密钥之间的联系。狭义的CA一个签发证书的服务器或程序,广义的CA是一个包含一整套规章、流程、策略,软硬服务结合、人机结合的系统或环境。
    -** RA(注册机构)**:负责证书申请人的资料登记和初始身份鉴别,或证书撤销等服务。RA可独立存在,也可作为证书服务器的一部分,它最终需要将确认了身份的申请请求递交给CA。
  • 证书服务器:负责根据注册者提供的信息生成证书的计算机或服务程序。证书服务器将用户的公钥和其他一些信息形成证书结构并用CA的私钥进行签名,从而生成正式的数字证书。证书服务还承担证书存放、发布和吊销的一些操作。
  • 证书库:存储可以公开发布的证书的设施(一般以目录形式组成PKI证书库,常用的有X.500或LDAP)。
  • 证书验证:用户收到一个证书的时候,需要对这个证书进行验证,可以由客户端验证程序执行,也可以使用专门的验证服务。验证的过程通常是对证书链的验证,包括执行下列多个项目的循环验证:
    • 验证证书签名者以确认是否信任该证书;
    • 检测证书有效期,确定证书是否有效;
    • 验证证书是否被签发它的CA注销;
    • 检测证书预期用途跟CA在证书中指定的策略是否相符。
  • 密钥恢复服务:密钥对是确保证书能够顺利签发和正常使用的基本前提,密钥对可以使用OpenSSl客户端软件、IE浏览器的密钥存储器、USB Key或Smart Card、或密钥服务器产生。但密钥都需要恢复服务,使得密钥可以存档,并在丢失后可以被恢复。
  • 时间服务器:证书的验证和签发等都需要一个统一、可信和单调增加的时间。时间服务器可以为PKI作用域中的各个应用程序和PKI组件提供数字式时间戳,确保PKI域能够可信正确地运行。
    -** 签名服务器**:许多PKI地应用程序和服务需要执行数字签名操作,比如文件签名和交易信息签名等。如果应用程序不具备签名功能,那么签名服务为各个应用程序生成签名或提供验签地服务。

四、安全协议

安全协议是密码学在计算机网络应用中地具体形式,几乎绝大部分地密码算法最后都要以安全协议地形式得到应用。

网络模型和安全协议类型

ISO网络模型是最标准地网络模型,ISO/OSI的参考模型共有7层,由低层至高层分别为:物理层、数据链路层、网络层、传输层、会话层、表示层、应用层。
但是,目前得到普遍应用地是TCP/IP网络模型。TCP/IP网络模型抽象出来5层网络模型:
在这里插入图片描述
当前比较成功地安全协议,基本都是应用层、传输层和网络层实现。
(1)应用层安全协议PGP(Pretty Good Privacy),免费保密电子邮件程序。该程序能够保证电子邮件网上传输的安全性,具备邮件加密、对邮件发送人的身份进行鉴别,对邮件进行数字签名和完整性验证等强大的哦功能。
(2)传输层安全协议SSL(Security Socket Layer),标准版本为TLS(Teansport Layer secutiry),可以应用于传输层上的所有服务。
(3)网络层安全协议VPN。虚拟专用网(VPN)技术确切的说不是一个协议。VPN可以保护任何两个子网或主机之间传输的数据的安全,能够加密和鉴别在网络层的所有通信量,VPN提供了在公用网和Internet上建立安全通信信道的能力。

SSL协议

SSL协议最初由Netscape公司提出,并在第三版的基础上形成了Internet标准话版本TLS。SSL协议被设计成为使用TCP协议提供端到端的安全服务,实际上SSL由一组协议组成,而不是单个协议。
下图为SSL协议模型:
在这里插入图片描述
SSL记录协议为不同的高层协议提供安全服务,HTTP,FTP等高层应用协议都可以在SSL协议上运行。SSL握手协议、SSL修改密文协议和SSL告警协议也是SSL协议的一部分,它们的作用是用来管理与SSL有关的交换。
SSL协议有两个重要的概念,连接会话

  • 连接:两台主机之间提供特定类型服务的传输,是点对点的关系。一般来说,连接是短暂的的,每一个连接都与一个会话相关联。
  • 会话:客户和服务器之间的联系,会话是通过握手协议创建的。会话可以被多个连接所共享,这样可以避免每个连接重新进行安全参数的协商而花费昂贵的时间代价。
    任何一对服务器和客户之间可以存在多个安全的SSL连接,这些连接可以共享一个会话,也可以共享不同的会话。理论上,一对服务器和客户之间也可以存在多个会话,但是由于这样付出的代价相当高,所以一般不支持这种做法。
    SSL记录协议为SSL连接提供了机密性和报文完整性两种服务。机密性和报文完整性所需要的密钥都是在握手协议中协商提供的。记录协议接收到传输的应用报文后,将数据分成可管理的块,进行数据压缩(可选),应用MAC、加密和增加首部,然后使用TCP报文传输。记录层接收到底层来的数据后,进行解密、验证、解压和重新排序组合,然后交给上层应用协议。
    SSL修改密文协议是一个最简单的SSL相关协议,他只有一个报文,报文由值为1的单个字节组成。这个协议唯一的作用是将挂起状态复制到当前状态,改变连接将要使用的密文族。
    SSL告警协议是将SSL有关的告警消息传送给通信的对方实体。SSL告警协议跟其他使用SSL的应用协议(如HTTP协议)一样,报文按照当前的状态被压缩和加密。
    SSL握手协议是SSL协议中最复杂的协议。服务器和客户端使用这个协议相互鉴别对方的身份,协商加密算法和MAC算法,以及在SSL记录协议中加密数据的加密密钥和初始向量。握手协议是建立SSL连接首先应该执行的协议,必须在传输任何数据之前完成。SSL握手协议由一系列报文组成,根据功能基本上可以分为四个阶段:
    • 第一阶段是建立安全能力。安全能力是指将要通信中使用的加密算法、数字签名算法、密钥交换算法、MAC算法,以及其他一些记录协议需要使用的必要参数如初始向量,等等。这个阶段由两个参数相同的报文组成,一个是Client_hello报文,一个是Server_hello报文,协议的发起由客户端执行。这个阶段完成后,就完成了安全能力的建立。
    • 第二阶段是服务器鉴别和密钥交换。如果服务端需要被鉴别,这个阶段将从服务端发送自己的证书开始执行。这个阶段,服务可能像客户端发送的信息包括证书或证书链报文、密钥交换报文、客户证书请求报文及证书完成报文。除了最后一个报文,并非所有的报文都是必须的。很多情况下,可能只要发送其中的一个报文即可完成这个握手阶段。
    • 第三阶段是客户鉴别和密钥交换。收到服务器证书完成报文后,客户端首先验证服务器是否提供合法的证书,检测服务器的参数是否可以接受,如果这些都满足条件,客户端就向服务器发送客户证书报文(或者无证书告警信息)、客户密钥交换报文和证书验证报文中的一个或多个。除了客户密钥交换报文,其他两个报文在某些情况下不是必需的。
    • 第四阶段是完成握手阶段。这个阶段完成安全连接的建立。首先是客户通过修改密文协议发送改变算法定义报文,将挂起的算法族定义复制到当前的算法族定义。然后客户立刻接着发送在新的算法和密钥加密下的完成报文。服务器对这两个报文的响应是发送自己的改变算法定义报文,将挂起状态复制到当前状态,并发送完成报文。到此为止,握手协议完成,客户端和服务器建立了安全连接,应用层协议可以使用 SSL连接进行安全的数据通信了。

五、OpenSSL

OpenSSL是一个开放源代码的SSL协议的产品实现,它采用C语言作为开发语言,具备了跨系统的性能。

OpneSSL的组成

OpenSSL包括三部分:SSL协议库、密码算法库和应用程序。

  • OpenSSL协议库部分完全实现和封装了SSL协议的三个版本和TLS协议,SSL协议库的实现是在密码算法库的基础上完成的。使用该库,完全可以建立一个SSL服务器和SSL客户端。该部分在Linux下编译会形成明文libssl.a的库,在Windows下则是ssleay32.lib的库。
  • OpenSSL密码算法库是一个强大完整的密码算法库,它是OpenSSL的基础部分,它实现了目前大部分主流的密码算法和标准。主要包括公开密钥算法、对称加密算法、散列函数算法、X.509数字证书标准、PKCS12、PKCS7等标准。0.9.6版本之后,OpenSSL密码算法库提供了Engine机制,用于将如加密卡这样外部的加密算法实现集成到OpenSSL中。该部分在Linux下编译会形成明文libcrypto.a的库,在Windows下则是libeay32.lib的库。
  • 应用程序部分基于密码算法库和SSL协议库实现了很多适用和范例性的应用程序,覆盖了众多的密码学应用。

OpneSSL的优缺点

优点:

  • 采用C语言开发,支持多种操作词条,可移植性好;
  • 功能全面,支持大部分主流密码算法、相关标准协议和SSL协议;
  • 开放源代码,可信任,能够根据自己的需要进行修改,对技术人员由借鉴和研究价值;
  • 具备应用程序,即能直接使用,也可以方便地进行二次开发;
  • 免费使用,能够用于商业和非商业目的。

缺点:

  • 采用非面向对象地C语言开发,对于初学者来说有一定地困难,也不利于代码地剥离;
  • 文档不全面,增加了使用地困难。

说明:《OpenSSL与网络信息安全》阅读笔记

  • 3
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

二流人物

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值