---------------------------------------- ssl/ssh 是協(xié)議 ----------------------------------------
SSL(Secure Sockets Layer 安全套接層),及其繼任者傳輸層安全(Transport Layer Security,TLS)是為網(wǎng)絡(luò)通信提供安全及數(shù)據(jù)完整性的一種安全協(xié)議挤渐。TLS與SSL在傳輸層對(duì)網(wǎng)絡(luò)連接進(jìn)行加密肚医。
SSH 為 Secure Shell 的縮寫凡纳,由 IETF 的網(wǎng)絡(luò)小組(Network Working Group)所制定;SSH 為建立在應(yīng)用層基礎(chǔ)上的安全協(xié)議事秀。SSH 是目前較可靠,專為遠(yuǎn)程登錄會(huì)話和其他網(wǎng)絡(luò)服務(wù)提供安全性的協(xié)議滋早。利用 SSH 協(xié)議可以有效防止遠(yuǎn)程管理過程中的信息泄露問題恳守。SSH最初是UNIX系統(tǒng)上的一個(gè)程序考婴,后來又迅速擴(kuò)展到其他操作平臺(tái)。SSH在正確使用時(shí)可彌補(bǔ)網(wǎng)絡(luò)中的漏洞催烘。SSH客戶端適用于多種平臺(tái)沥阱。幾乎所有UNIX平臺(tái)—包括HP-UX、Linux伊群、AIX考杉、Solaris、Digital UNIX舰始、Irix崇棠,以及其他平臺(tái),都可運(yùn)行SSH丸卷。
---------------------------------------- openssl 是開源代碼庫 ----------------------------------------
OpenSSL是一個(gè)開放源代碼的軟件庫包枕稀,應(yīng)用程序可以使用這個(gè)包來進(jìn)行安全通信,避免竊聽谜嫉,同時(shí)確認(rèn)另一端連接者的身份萎坷。這個(gè)包廣泛被應(yīng)用在互聯(lián)網(wǎng)的網(wǎng)頁服務(wù)器上。
Apache/Nginx使用它加密HTTPS
OpenSSH使用它加密SSH
你不應(yīng)該只將其作為一個(gè)庫來使用骄恶,它還是一個(gè)多用途的食铐、跨平臺(tái)的密碼工具。
OpenSSL整個(gè)軟件包大概可以分成三個(gè)主要的功能部分:SSL協(xié)議庫僧鲁、應(yīng)用程序以及密碼算法庫虐呻。
OpenSSL提供兩個(gè)庫libssl和libcrypto
OpenSSL實(shí)現(xiàn)了SSL協(xié)議的SSLv2和SSLv3,支持了其中絕大部分算法協(xié)議寞秃。OpenSSL也實(shí)現(xiàn)了TLSv1.0斟叼,TLS是SSLv3的標(biāo)準(zhǔn)化版,雖然區(qū)別不大春寿,但畢竟有很多細(xì)節(jié)不盡相同朗涩。
對(duì)稱加密
OpenSSL一共提供了8種對(duì)稱加密算法,其中7種是分組加密算法绑改,僅有的一種流加密算法是RC4谢床。這7種分組加密算法分別是AES、DES厘线、Blowfish识腿、CAST、IDEA造壮、RC2渡讼、RC5,都支持電子密碼本模式(ECB)、加密分組鏈接模式(CBC)成箫、加密反饋模式(CFB)和輸出反饋模式(OFB)四種常用的分組密碼加密模式展箱。其中,AES使用的加密反饋模式(CFB)和輸出反饋模式(OFB)分組長度是128位蹬昌,其它算法使用的則是64位混驰。事實(shí)上,DES算法里面不僅僅是常用的DES算法凳厢,還支持三個(gè)密鑰和兩個(gè)密鑰3DES算法账胧。
非對(duì)稱加密
OpenSSL一共實(shí)現(xiàn)了4種非對(duì)稱加密算法,包括DH算法先紫、RSA算法、DSA算法和橢圓曲線算法(EC)筹煮。DH算法一般用于密鑰交換遮精。RSA算法既可以用于密鑰交換,也可以用于數(shù)字簽名败潦,當(dāng)然本冲,如果你能夠忍受其緩慢的速度,那么也可以用于數(shù)據(jù)加密劫扒。DSA算法則一般只用于數(shù)字簽名檬洞。
信息摘要
OpenSSL實(shí)現(xiàn)了5種信息摘要算法,分別是MD2沟饥、MD5添怔、MDC2、SHA(SHA1)和RIPEMD贤旷。SHA算法事實(shí)上包括了SHA和SHA1兩種信息摘要算法广料。此外,OpenSSL還實(shí)現(xiàn)了DSS標(biāo)準(zhǔn)中規(guī)定的兩種信息摘要算法DSS和DSS1幼驶。
---------------------------------------- openssh ----------------------------------------
OpenSSH 是 SSH (Secure SHell) 協(xié)議的免費(fèi)開源實(shí)現(xiàn)艾杏。SSH協(xié)議族可以用來進(jìn)行遠(yuǎn)程控制, 或在計(jì)算機(jī)之間傳送文件盅藻。而實(shí)現(xiàn)此功能的傳統(tǒng)方式购桑,如telnet(終端仿真協(xié)議)、 rcp ftp氏淑、 rlogin勃蜘、rsh都是極為不安全的,并且會(huì)使用明文傳送密碼夸政。OpenSSH提供了服務(wù)端后臺(tái)程序和客戶端工具元旬,用來加密遠(yuǎn)程控制和文件傳輸過程中的數(shù)據(jù),并由此來代替原來的類似服務(wù)。
OpenSSH是SSH協(xié)議的實(shí)現(xiàn)匀归, 實(shí)現(xiàn)過程中坑资,需要用到密鑰交換算法,對(duì)稱/非對(duì)稱加密算法穆端,Mac算法袱贮,隨機(jī)數(shù)算法。OpenSSL提供兩個(gè)庫libssl和libcrypto体啰,OpenSSH使用的是libcrypto中實(shí)現(xiàn)的上述算法攒巍。許多公司出于安全,效率荒勇,硬件加速等考慮柒莉,將OpenSSH porting到自己系統(tǒng)之后,會(huì)用自己實(shí)現(xiàn)的算法替換這個(gè)算法庫沽翔,我確切知道的有微軟和IBM兢孝。
源碼目錄介紹, https://blog.csdn.net/qq_19444381/article/details/50037981
程序主要包括了幾個(gè)部分:
ssh
rlogin與Telnet的替代方案。
scp仅偎、sftp
rcp的替代方案跨蟹,將文件復(fù)制到其他電腦上。
sshd
SSH服務(wù)器橘沥。
ssh-keygen
產(chǎn)生RSA或DSA密鑰窗轩,用來認(rèn)證用。
ssh-agent座咆、ssh-add
幫助用戶不需要每次都要輸入密鑰密碼的工具痢艺。
ssh-keyscan
掃描一群機(jī)器,并記錄其公鑰箫措。
---------------------------------------- libcrypto libssl libssh libssh2 ----------------------------------------
OpenSSL提供了兩個(gè)主庫:libssl和libcrypto腹备。libcrypto庫提供了libssl使用的基本加密例程。但是斤蔓,您可以在不使用libssl的情況下使用libcrypto 植酥。
參考網(wǎng)址,https://wiki.openssl.org/index.php/Libssl_API
libssh和libssh2是兩個(gè)ssh開源實(shí)現(xiàn)的lib庫弦牡,兩個(gè)不是一個(gè)東西友驮。
openssh是根據(jù)libssh2做的