openssl 小結

自己研究 openssl 有一段時間了,這裏做 一個小結;

openssl是一個強大的安全套接字密碼庫,囊括主要的密碼算法、常用的密鑰和證書封裝管理功能及SSL協議,並提供豐富的應用程序供測試或其他目的使用。

openssl整個軟件可以分爲三個主要的功能部分:

密碼算法庫、

SSL協議庫以及應用程序。

 

OpenSSL 是一個開源項目,其組成主要包括一下三個組件:

  • openssl:多用途的命令行工具

  • libcrypto:加密算法庫

  • libssl:加密模塊應用庫,實現了ssl及tls

概念介紹:

SSL

SSL的全名叫做secure socket layer(安全套接字層),最開始是由一家叫網景的互聯網公司開發出來,主要是防止信息在互聯網上傳輸的時候不被竊聽或者篡改,後來網景公司提交SSL給ISOC組織做標準化,改名爲TLS。
在這裏插入圖片描述
有些同學可能會好奇,說好好的數據怎麼就被竊聽以及修改呢?這個其實是很容易的,如果你上網連得的是wifi,那麼你的數據一定會經過wifi路由器,通過對路由器做些手腳就可以拿到這些數據。

非對稱加密

在數學上有這樣一個現象:給兩個質數,很容易算出他們的乘積,但是給你一個很大的數,你很難分解出兩個質數,讓他們的乘積正好等於這個很大的數。

非對稱加密就是基於以上的現象產生的,用一個密鑰對數據進行加密,然後可以使用另外一個不同的密鑰對數據進行解密,這兩個密鑰就是:公鑰和私鑰。
在這裏插入圖片描述
公鑰和私鑰是可以相互推導的,根據私鑰,你可以很容易的算出公鑰,但是根據公鑰,你卻很難很難算出私鑰,在互聯網上,私鑰一般由服務器掌握,公鑰則由客戶端使用。根據公鑰,理論上需要花費地球上所有的計算機計算數萬年才能算出私鑰,所以認爲是非常安全的。

數字簽名

將報文使用一定的HASH算法算出一個固定位數的摘要信息,然後用私鑰將摘要加密,連同原來的報文一起,發送給接收者,接受者通過公鑰將摘要解出來,也通過HASH算法算出報文摘要,如果兩個摘要一致,說明數據未被篡改,數據是完整的。
因爲接收者是使用公鑰解出的數據,如果數據完整,證明發送數據的人持有私鑰,就能證明發送者的身份,因此數字簽名具有證明發送者身份和防篡改的功能。
在這裏插入圖片描述

數字證書

由CA頒發給網站的身份證書,裏面包含了該網站的公鑰,有效時間,網站的地址,CA的數字簽名等。
所謂的CA數字簽名,實際上就是使用了CA的私鑰將網站的公鑰等信息進行了簽名,當客戶端請求服務器的時候,網站會把證書發給客戶端,客戶端首先可以通過CA的數字簽名校驗CA的身份,也能證明證書的真實完整性(之前說了,數字簽名擁有證明身份和防篡改的功能)。
在這裏插入圖片描述
客戶端有沒有可能到一個假冒的CA去校驗數字證書呢?不太可能,因爲CA的地址是內嵌在瀏覽器中的,很難被篡改。

SSL如何保護數據

SSL保護數據的原理可以分爲三部分
1)認證用戶和服務器,確保數據發送到正確的客戶端和服務器;
2)加密數據以防止數據中途被竊取;
3)維護數據的完整性,確保數據在傳輸過程中不被改變。

一、安裝:

Windows10下安裝OpenSSL curl WIN32 /WIN64 openssl1.1.x:

https://blog.csdn.net/q610098308/article/details/84666206

openssl NDK  移植

https://blog.csdn.net/q610098308/article/details/89030565

二、加密,解密

對稱加密:OpenSSL AES 加解密

https://blog.csdn.net/q610098308/article/details/84878243

https://blog.csdn.net/q610098308/article/details/93480212

非對稱加密  OPENSSL RSA 加解密,公匙,私匙;私有證書

https://blog.csdn.net/q610098308/article/details/83015943

實現 https

https://blog.csdn.net/q610098308/article/details/90080392

libcurl 移植 支持https,openssl NDK (三) 源碼修改,支持內存中驗證證書

https://blog.csdn.net/q610098308/article/details/90081095

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章