OpenSSL
- OpenSSL是用于应用程序的软件库,该应用程序可保护计算机网络上的通信免遭窃听或需要识别另一方的身份,是SSL和TLS协议的开源实现。
- 采用C语言作为开发语言,具备了跨平台的能力,支持Unix/Linux、Windows、Mac OS等多种平台。
- OpenSSL整个软件包大概可以分成三个主要的功能部分:1.密码算法库2.SSL协议库3.应用程序
- 密码算法库是一个强大完整的密码算法库,它是OpenSSL的基础部分,也是很值得一般密码安全技术人员研究的部分,它实现了目前大部分主流的密码算法和标准。主要包括对称算法、非对称算法、散列算法、数字签名和认证、X509数字证书标准、PKCS12、PKCS7等标准。其他两个功能部分SSL协议和应用程序都是基于这个库开发的。
- SSL协议部分完全实现和封装了SSL协议的三个版本和TLS协议。
- 应用程序覆盖了密码技术的应用,主要包括了各种算法的加密程序和各种类型密钥的产生程序(如RSA、Md5、Enc等等)、证书签发和验证程序(如Ca、X509、Crl等)、SSL连接测试程序(如S_client和S_server等)以及其它的标准应用程序(如Pkcs12和Smime等)。
OpenSSH的ssh-keygen
- OpenSSH 是使用 SSH 协议进行远程登录的连接工具。 它加密所有通信讯息以消除窃听、连接劫持。 此外,OpenSSH 提供了大量的安全隧道功能、多种身份验证方法和复杂的配置选项。
- OpenSSH 包含的组件如下:
(1)ssh:OpenSSH 远程登录客户端,作为 rlogin 和 Telnet 的替代方案。
(2)scp:OpenSSH 安全文件复制,作为 rcp 的替代方案,将文件复制到其他电脑上。
(3)sftp:OpenSSH 安全文件传输,类似于 scp。
(4)sshd:OpenSSH 守护进程。
(5)ssh-keygen:OpenSSH 身份验证密钥实用程序,产生RSA或ECDSA密钥,用来认证用。
(6)ssh-agent:OpenSSH 身份验证代理,用于帮助用户不需要每次都要输入密钥的工具。
(7)ssh-add:向 OpenSSH 身份验证代理添加私钥身份,用于帮助用户不需要每次都要输入密钥的工具。
(8)ssh-keyscan:从服务器收集 SSH 公钥,并记录公钥。
区别
- OpenSSH常常被误认以为与OpenSSL有关联,但实际上这两个计划有不同的目的,不同的发展团队,名称相近只是因为两者有同样的软件发展目标──提供开放源代码的加密通讯软件。
- OpenSSH是SSH协议的具体实现、OpenSSL是SSL与TSL的具体实现。OpenSSH 与OpenSSL只是名字相似但是关联不大,同样软件发展目标是为提供开放源代码的加密通讯软件。而生成非对称公私钥的方式有很多,如OpenSSH 、OpenSSL与GnuPG。
SSL和TLS
-
SSL (Secure Sockets Layer)安全套接层。是由Netscape公司于1990年开发,用于保障Word Wide Web(WWW)通讯的安全。主要任务是提供私密性,信息完整性和身份认证。1994年改版为SSLv2,1995年改版为SSLv3.
-
TLS(Transport Layer Security)安全传输层协议,)用于在两个通信应用程序之间提供保密性和数据完整性。该标准协议是由IETF于1999年颁布,整体来说TLS非常类似SSLv3,只是对SSLv3做了些增加和修改。
SSL加密知名协议
- HTTP over SSL:简写https,加密网页浏览是设计SSL的初衷,HTTP也是第一个使用SSL保障安全的应用层协议。
- Email over SSL:类似于HTTP over SSL,邮件协议例如:MTP,POP3、IMAP也能支持SSL。SMTP over TLS的标准文档在RFC2487。POP3和IMAP over TLS的标准化文档在RFC2595.
协议结构
-
SSL的体系结构中包含两个协议子层,其中底层是SSL记录协议层(SSL Record Protocol Layer);高层是SSL握手协议层(SSL HandShake Protocol Layer)。
-
SSL协议主要分为两层:
SSL记录协议层的作用是为高层协议提供基本的安全服务。SSL纪录协议针对HTTP协议进行了特别的设计,使得超文本的传输协议HTTP能够在SSL运行。纪录封装各种高层协议,具体实施压缩解压缩、加密解密、计算和校验MAC等与安全有关的操作。
SSL握手协议层包括SSL握手协议(SSL HandShake Protocol)、SSL密码参数修改协议(SSL Change Cipher Spec Protocol)和SSL告警协议(SSL Alert Protocol)。握手层的这些协议用于SSL管理信息的交换,允许应用协议传送数据之间相互验证,协商加密算法和生成密钥等。
-
SSL握手协议的作用是协调客户和服务器的状态,使双方能够达到状态的同步。
-
其中最重要的是记录协议和握手协议:
SSL记录协议:它建立在可靠的传输(如TCP)之上,为高层协议提供数据封装、压缩、加密等基本功能。
SSL握手协议:它建立在SSL记录协议之上,用于在实际的数据传输开始之前,通讯双方进行身份认证、协商加密算法、交换加密密钥等。