---------------------------------------- ssl/ssh 是协议 ----------------------------------------
SSL(Secure Sockets Layer 安全套接层),及其继任者传输层安全(Transport Layer Security,TLS)是为网络通信提供安全及数据完整性的一种安全协议。TLS与SSL在传输层对网络连接进行加密。
SSH 为 Secure Shell 的缩写,由 IETF 的网络小组(Network Working Group)所制定;SSH 为建立在应用层基础上的安全协议。SSH 是目前较可靠,专为远程登录会话和其他网络服务提供安全性的协议。利用 SSH 协议可以有效防止远程管理过程中的信息泄露问题。SSH最初是UNIX系统上的一个程序,后来又迅速扩展到其他操作平台。SSH在正确使用时可弥补网络中的漏洞。SSH客户端适用于多种平台。几乎所有UNIX平台—包括HP-UX、Linux、AIX、Solaris、Digital UNIX、Irix,以及其他平台,都可运行SSH。
---------------------------------------- openssl 是开源代码库 ----------------------------------------
OpenSSL是一个开放源代码的软件库包,应用程序可以使用这个包来进行安全通信,避免窃听,同时确认另一端连接者的身份。这个包广泛被应用在互联网的网页服务器上。
Apache/Nginx使用它加密HTTPS
OpenSSH使用它加密SSH
你不应该只将其作为一个库来使用,它还是一个多用途的、跨平台的密码工具。
OpenSSL整个软件包大概可以分成三个主要的功能部分:SSL协议库、应用程序以及密码算法库。
OpenSSL提供两个库libssl和libcrypto
OpenSSL实现了SSL协议的SSLv2和SSLv3,支持了其中绝大部分算法协议。OpenSSL也实现了TLSv1.0,TLS是SSLv3的标准化版,虽然区别不大,但毕竟有很多细节不尽相同。
对称加密
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一共实现了4种非对称加密算法,包括DH算法、RSA算法、DSA算法和椭圆曲线算法(EC)。DH算法一般用于密钥交换。RSA算法既可以用于密钥交换,也可以用于数字签名,当然,如果你能够忍受其缓慢的速度,那么也可以用于数据加密。DSA算法则一般只用于数字签名。
信息摘要
OpenSSL实现了5种信息摘要算法,分别是MD2、MD5、MDC2、SHA(SHA1)和RIPEMD。SHA算法事实上包括了SHA和SHA1两种信息摘要算法。此外,OpenSSL还实现了DSS标准中规定的两种信息摘要算法DSS和DSS1。
---------------------------------------- openssh ----------------------------------------
OpenSSH 是 SSH (Secure SHell) 协议的免费开源实现。SSH协议族可以用来进行远程控制, 或在计算机之间传送文件。而实现此功能的传统方式,如telnet(终端仿真协议)、 rcp ftp、 rlogin、rsh都是极为不安全的,并且会使用明文传送密码。OpenSSH提供了服务端后台程序和客户端工具,用来加密远程控制和文件传输过程中的数据,并由此来代替原来的类似服务。
OpenSSH是SSH协议的实现, 实现过程中,需要用到密钥交换算法,对称/非对称加密算法,Mac算法,随机数算法。OpenSSL提供两个库libssl和libcrypto,OpenSSH使用的是libcrypto中实现的上述算法。许多公司出于安全,效率,硬件加速等考虑,将OpenSSH porting到自己系统之后,会用自己实现的算法替换这个算法库,我确切知道的有微软和IBM。
源码目录介绍, https://blog.csdn.net/qq_19444381/article/details/50037981
程序主要包括了几个部分:
ssh
rlogin与Telnet的替代方案。
scp、sftp
rcp的替代方案,将文件复制到其他电脑上。
sshd
SSH服务器。
ssh-keygen
产生RSA或DSA密钥,用来认证用。
ssh-agent、ssh-add
帮助用户不需要每次都要输入密钥密码的工具。
ssh-keyscan
扫描一群机器,并记录其公钥。
---------------------------------------- libcrypto libssl libssh libssh2 ----------------------------------------
OpenSSL提供了两个主库:libssl和libcrypto。libcrypto库提供了libssl使用的基本加密例程。但是,您可以在不使用libssl的情况下使用libcrypto 。
参考网址,https://wiki.openssl.org/index.php/Libssl_API
libssh和libssh2是两个ssh开源实现的lib库,两个不是一个东西。
openssh是根据libssh2做的