加解密/SSL/OpenSSL/TLS/DTLS/SRTP

一、加解密
簡介

       加密技術包括兩個元素:算法和密鑰。算法是將普通的信息或者可以理解的信息與一串數字(密鑰)結合,產生不可理解的密文的步驟,密鑰是用來對數據進行編碼和解密的一種算法。在安全保密中,可通過適當的鑰加密技術和管理機制來保證網絡的信息通信安全。

       軟件的加密與解密是一個迷人的研究領域,它幾乎可以與任意一種計算機技術緊密結合——密碼學、程序設計語言、操作系統、數據結構。而由於這樣或者那樣的原因,對於這一領域的關注程度一直還處於低溫狀態。而看雪技術論壇相信會爲更多對知識懷有渴望的朋友多開闢一條走向這個領域的道路,並且進而推動這個領域的不斷髮展。
什麼是加密技術?

       加密技術是電子商務採取的主要安全保密措施,是最常用的安全保密手段,利用技術手段把重要的數據變爲亂碼(加密)傳送,到達目的地後再用相同或不同的手段還原(解密)。加密技術包括兩個元素:算法和密鑰。算法是將普通的文本(或者可以理解的信息)與一串數字(密鑰)的結合,產生不可理解的密文的步驟,密鑰是用來對數據進行編碼和解碼的一種算法。在安全保密中,可通過適當的密鑰加密技術和管理機制來保證網絡的信息通訊安全。密鑰加密技術的密碼體制分爲對稱密鑰體制和非對稱密鑰體制兩種。相應地,對數據加密的技術分爲兩類,即對稱加密(私人密鑰加密)和非對稱加密(公開密鑰加密)。對稱加密以數據加密標準(DES,Data Encryption Standard)算法爲典型代表,非對稱加密通常以RSA(Rivest Shamir Ad1eman)算法爲代表。對稱加密的加密密鑰和解密密鑰相同,而非對稱加密的加密密鑰和解密密鑰不同,加密密鑰可以公開而解密密鑰需要保密。

什麼是對稱加密技術?

       對稱加密採用了對稱密碼編碼技術,它的特點是文件加密和解密使用相同的密鑰,即加密密鑰也可以用作解密密鑰,這種方法在密碼學中叫做對稱加密算法,對稱加密算法使用起來簡單快捷,密鑰較短,且破譯困難,除了數據加密標準(DES),另一個對稱密鑰加密系統是國際數據加密算法(IDEA),它比DES的加密性好,而且對計算機功能要求也沒有那麼高。IDEA加密標準由PGP(Pretty Good Privacy)系統使用。

什麼是非對稱加密技術?

       1976年,美國學者Dime和Henman爲解決信息公開傳送和密鑰管理問題,提出一種新的密鑰交換協議,允許在不安全的媒體上的通訊雙方交換信息,安全地達成一致的密鑰,這就是“公開密鑰系統”。相對於“對稱加密算法”這種方法也叫做“非對稱加密算法”。與對稱加密算法不同,非對稱加密算法需要兩個密鑰:公開密鑰(publickey)和私有密 (privatekey)。公開密鑰與私有密鑰是一對,如果用公開密鑰對數據進行加密,只有用對應的私有密鑰才能解密;如果用私有密鑰對數據進行加密,那麼只有用對應的公開密鑰才能解密。因爲加密和解密使用的是兩個不同的密鑰,所以這種算法叫作非對稱加密算法。

什麼是數字簽名?

       數字簽名(又稱公鑰數字簽名)是隻有信息的發送者才能產生的別人無法僞造的一段數字串,這段數字串同時也是對信息的發送者發送信息真實性的一個有效證明。它是一種類似寫在紙上的普通的物理簽名,但是使用了公鑰加密領域的技術來實現的,用於鑑別數字信息的方法。一套數字簽名通常定義兩種互補的運算,一個用於簽名,另一個用於驗證。數字簽名是非對稱密鑰加密技術與數字摘要技術的應用。
這裏百度百科有非常詳細的說明,有興趣的可以參考下:https://baike.baidu.com/item/%E6%95%B0%E5%AD%97%E7%AD%BE%E5%90%8D/212550?fr=aladdin

                        
二、SSL

        SSL是Secure Sockets Layer(安全套接層協議)的縮寫,可以在Internet上提供祕密性傳輸。Netscape公司在推出第一個Web瀏覽器的同時,提出了SSL協議標準。其目標是保證兩個應用間通信的保密性和可靠性,可在服務器端和用戶端同時實現支持。已經成爲Internet上保密通訊的工業標準。
        SSL能使用戶/服務器應用之間的通信不被攻擊者竊聽,並且始終對服務器進行認證,還可選擇對用戶進行認證。SSL協議要求建立在可靠的傳輸層協議(TCP)之上。SSL協議的優勢在於它是與應用層協議獨立無關的,高層的應用層協議(例如:HTTP,FTP,TELNET等)能透明地建立於SSL協議之上。SSL協議在應用層協議通信之前就已經完成加密算法、通信密鑰的協商及服務器認證工作。在此之後應用層協議所傳送的數據都會被加密,從而保證通信的私密性。
        SSL是利用公開密鑰的加密技術(RSA)來作爲用戶端與服務器端在傳送機密資料時的加密通訊協定。SSL是利用公開密鑰的加密技術(RSA)來作爲用戶端與服務器端在傳送機密資料時的加密通訊協定。

三、OpenSSL

OpenSSL實際上就是開源的SSL,它可以實現:祕鑰證書管理、對稱加密和非對稱加密 。

openssl: 多用途的命令行工具,包openssl,可以執行交互或批量命令。
libcrypto: 加密算法庫,包openssl-libs。
libssl:加密模塊應用庫,實現了ssl及tls,包nss。

加密命令   

工具: openssl enc, gpg
算法: 3des, aes, blowfish, twofish、3des等。
常用選項有:
-in filename:指定要加密的文件存放路徑
-out filename:指定加密後的文件存放路徑
-salt:自動插入一個隨機數作爲文件內容加密,默認選項 加點鹽:)
-e:加密;
-d:解密,解密時也可以指定算法,若不指定則使用默認算法,但一定要與加密時的算法一致
-a/-base64:當進行加解密時,他只對數據進行運算,有時需要進行base64轉換,設置
此選項後加密結果進行base64編碼,解密前先進行base64編碼。
加密解密算法可以通過自己制定,有什麼算法可以通過openssl help enc去查看加密內容。
enc命令:
幫助: man enc
加密:
openssl enc -e -des3 -a -salt -in testfile -out testfile.cipher
解密:
openssl enc -d -des3 -a -salt –in testfile.cipher -out testfile
openssl ?
 

對稱加密算法
       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算法則一般只用於數字簽名。

TLS elliptic curves extension :橢圓曲線數字簽名算法認證機制擴展。                                     

四、TLS 是SSL的升級,只是名字不同而已。

       傳輸層安全性協議(英語:Transport Layer Security,縮寫作TLS),及其前身安全套接層(Secure Sockets Layer,縮寫作SSL)是一種安全協議,目的是爲互聯網通信提供安全及數據完整性保障。該協議由兩層組成: TLS 記錄協議(TLS Record)和 TLS 握手協議(TLS Handshake)。
       TLS協議採用主從式架構模型,用於在兩個應用程序間透過網絡創建起安全的連線,防止在交換數據時受到竊聽及篡改。             TLS協議的優勢是與高層的應用層協議(如HTTP、FTP、Telnet等)無耦合。應用層協議能透明地運行在TLS協議之上,由TLS協議進行創建加密通道需要的協商和認證。應用層協議傳送的數據在通過TLS協議時都會被加密,從而保證通信的私密性。         TLS協議是可選的,必須配置客戶端和服務器才能使用。主要有兩種方式實現這一目標:一個是使用統一的TLS協議通信端口(例如:用於HTTPS的端口443);另一個是客戶端請求服務器連接到TLS時使用特定的協議機制(例如:郵件、新聞協議和STARTTLS)。一旦客戶端和服務器都同意使用TLS協議,他們通過使用一個握手過程協商出一個有狀態的連接以傳輸數據。通過握手,客戶端和服務器協商各種參數用於創建安全連接:

    1.當客戶端連接到支持TLS協議的服務器要求創建安全連接並列出了受支持的密碼組合(加密密碼算法和加密哈希函數),握手開始。

   2. 服務器從該列表中決定加密和散列函數,並通知客戶端。

    3.服務器發回其數字證書,此證書通常包含服務器的名稱、受信任的證書頒發機構(CA)和服務器的公鑰。

    4.客戶端確認其頒發的證書的有效性。

    5.爲了生成會話密鑰用於安全連接,客戶端使用服務器的公鑰加密隨機生成的密鑰,並將其發送到服務器,只有服務器才能使用自己的私鑰解密。

    6.利用隨機數,雙方生成用於加密和解密的對稱密鑰。這就是TLS協議的握手,握手完畢後的連接是安全的,直到連接(被)關閉。如果上述任何一個步驟失敗,TLS握手過程就會失敗,並且斷開所有的連接。

TLS協議的擴展TLS  ALPN  extension :https://halfrost.com/tls_alpn/

TLS協議其他擴展協議參考文章:https://blog.csdn.net/xuchuangqi/article/details/80537914

五、DTLS協議

DTLS簡介

       簡單說,DTLS(Datagram Transport Layer Security)實現了在UDP協議之上的TLS安全層。由於基於TCP的SSL/TLS沒有辦法處理UDP報文的丟包及重排序(這些問題一般交給UDP的上層應用解決),DTLS在原本TLS的基礎上做了一些小改動(複用大部分TLS的代碼)來解決如下UDP上實現TLS的問題:

   1. TLS記錄層內記錄的強關聯性及無序號
   2.握手協議的可靠性
        包丟失重傳機制(UDP無重傳機制)
        無法按序接收(握手需要對包按順序處理,而UDP包的到達並非按序,包頭沒有TCP那樣的Seq/Ack number)
        握手協議包長(證書之類傳輸可能達到KB級別)導致的UDP分包組包(類似於UDP在IP層的分包)
   3.重複包(Replay)檢測

    TLS是基於TCP協議的
    DTLS基於UDP協議的
    OpenSSL實現了TLS和DTLS兩種都有

    


六、SRTP

       SRTP(SecureReal-time Transport Protocol) 安全實時傳輸協議,SRTP是在實時傳輸協議(Real-time Transport Protocol)基礎上所定義的一個協議,旨在爲單播和多播應用程序中的實時傳輸協議的數據提供加密、消息認證、完整性保證和重放保護安全實時傳輸協議。
      SRTP使用身份驗證和加密,以最大程度地降低諸如拒絕服務之類的攻擊風險。 它由IETF(Internet工程任務組)於2004年發佈,名稱爲RFC3711。SRTP就像DTLS是用於WebRTC技術的安全協議之一。æ¡æè¿ç¨å¾.png

參考鏈接:https://baike.baidu.com/item/%E5%8A%A0%E5%AF%86%E8%A7%A3%E5%AF%86%E6%8A%80%E6%9C%AF/10812836?fr=aladdin
https://baike.baidu.com/item/%E6%95%B0%E5%AD%97%E7%AD%BE%E5%90%8D/212550?fr=aladdin
 

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