淺談加密算法

                            幾種加密算法的比較及工作原理

引入加密/解密:

當今互聯網上爲了數據通信安全,雙方在通信的過程中,爲了保證數據的機密性,完整性,我們一般使用加密或身份驗證的機制來保證數據的通信安全。

機密性:

plaintext --> 轉換規則-->ciphertext  將明文轉換成密文

         ciphertext --> 轉換規則-->plaintext 將密文轉換成明文

對稱加密:提供加密算法本身,並且要求用戶提供一個密鑰以後,結合密鑰和算法,能夠將明文轉換成密文。反之,之所以稱爲對稱加密,是因爲加密和解密使用的是同一個密鑰,但是算法基本不是同一個。當我們通信對象很多的情況下,無法有效的對密鑰進行管理,對稱加密算法在一定程度上解決了數字機密性的問題,但是卻沒辦法幫我們用戶解決密鑰有效管理的問題

      數據完整性:在通信過程中,爲了保證數據的完整性,這裏就涉及到另外一種算法:單向加密算法。單向加密算法,就是提取數據特徵碼的。

單向加密的特性:特徵:輸入一樣:輸出必然相同

   雪崩效應:輸入的微小改變,將會引起結果的巨大改變

   定長輸出:無論原始數據多大,結果大小都是相同的

   不可逆:無法根據特徵碼還原原來的數據

爲了保證數據在傳輸過程中儘可能的不被第三方篡改,我們還可以把特徵碼進行加密。

引入密鑰交換的概念:

如果雙方之前從未通信,如何進行密碼商定?

這裏用到的機制叫做密鑰交換:(Internet Key Exchange,IKE)

需要特殊的互聯網協議支撐,基本密鑰協議:Diffie-Hellman協議:互聯網交換算法

假如Jerry和Tom將兩個數據p,g在互聯網上傳輸,p ,g 指的是大素數和生成數

 

Jerry:在本機內選擇一個隨機數x

Tom:在本機內選擇一個隨機數y

傳輸:

Jerry: g^x%p-->B

Tom:g^y%p-->A

接收:

Jerry:(g^y%p)^x=g^xy%p

Tom: (g^x%p)^y=g^xy%p

這個過程就是密鑰交換算法

身份驗證:

    引入了公鑰加密算法:也稱爲非對稱加密算法

       特徵:密鑰是成對的

公鑰:p公鑰是在私鑰中提取出來的,而且是公開的

私鑰:s

非對稱加密算法的特徵:用公鑰加密的只能用與之相對應的私鑰解密,反之亦然。發送方用自己的私鑰加密數據,所以可以實現身份驗證。發送方用對方的公鑰加密數據,可以保證數據機密性。但是公鑰加密算法很少用來加密數據:速度太慢。通常用來身份驗證用。

既能保證數據的機密性同時又能保證對方的身份合法性:通常有單向加密算法和非對稱加密算法。

常見對稱加密算法:

    DES:數據加密標準  Data Encrption Standard ,56bit

    3DES: DES的改進

    AES:高級加密標準 Advanced

        AES192,AES256,AES512(默認128)   

單向加密算法:定長輸出

    MD4、MD5、 SHA1、SHA192,SHA256SHA384(輸出長度) CRC-32 循環冗餘校驗碼  不提供安全性。

非對稱加密:也稱公鑰加密 (核心功能:加密和簽名)

功能:身份認證(數字簽名),數據加密,密鑰交換

    RSA:既可以加密,也可以簽名

    DSA:只能實現簽名,公開使用

    ElGamal: 商業算法,此算法提供的服務更多

A、B通信的具體過程:

A發送方:

1、計算數據的特徵碼(單向加密)

2、用自己的私鑰加密特徵碼,並附加在數據後面

3、生成一個臨時對稱密鑰

4、用此密鑰結合某算法加密數據及加密數據後的特徵碼

5、用接收方的公鑰加密此對稱密鑰,並附加在加密後的數據後面

6、發送至接收方

B接收方:

1、用自己的私鑰解密加密的對稱密鑰

2、用臨時對稱密鑰解密數據

3、用對方的公鑰解密加密的特徵碼

4、用同樣的算法計算數據的特徵碼,並與解密而來的特徵碼進行比較。

CA概念的引入:

事實上,雙方的公鑰傳遞是要向對方獲取的,這個過程中也不能驗證對方的身份特性,因此就需要引入第三方認證機構:CA(Certificate Authority)。

方式:發送方將自己的公鑰提交給第三方,由第三方對其公鑰做公證,將其信息做成一個證書,添加上第三方的簽名,只要接收方認可發送方證書的可靠性,兩者就可以通過證書來通信了。

證書頒發機構的總體叫做PKI(Public Key Infrastrucure)即:公鑰基礎設施

PKI 的核心就是CA和終端彼此間的信任關係。

通過查看證書吊銷列表可以探明證書是否有效:CRL可以查看已吊銷的、過期的證書或丟失的證書,保證證書安全性、和用戶的合法性

目前通用證書的格式:

x509證書:包含的內容

    公鑰及其有效期限

    證書的合法擁有者

    證書該如何被使用

    CA的信息

    CA簽名的校驗碼

互聯網上著名的安全機制:TLS和SSL 用的就是x509的證書。

TLS和SSL 是什麼以及他們是如何實現密鑰交換等功能的:

SSL:Secure Socket Layer 安全的套接字層。

版本有:SSLv2  SSLv3

https:是加密的http協議,使用的是443端口,它就是通過在tcp層和應用層加上了半個層即sslSSL只是一個庫,讓應用層在傳輸的過程中調用該庫就可以實現安全傳輸了,衆多的協議經過調用這個庫也就實現了加密的功能。

TLS 是更爲開源的一個加密機制,全稱:Transport Layer Security 傳輸層安全,TLSv1的版本相當於SSL版本的SSLv3

ssl會話的建立過程:

如下我們將以http協議爲例進行簡單介紹ssl會話的建立過程:

http:雙方在通信過程中,經過三次握手。客戶端發起請求,服務器端和客戶端協商建立ssl會話,服務器端將自己的證書發給客戶端,客戶端獲取證書後要先驗證(是否是信任的、完整的),客戶端建立一個會話密鑰,將服務器端公鑰加密後的密鑰傳給服務器端,服務器端用這個密碼加密給客戶端傳送。

在linux中,能夠實現對稱加密的工具:Openssl(基於SSL的一個開源加密工具)

Openssl:SSL的開源實現,主要包括三個部分:

libcrypto:通用加密庫(提供了各種加密函數)

 libssl:TLS/SSL的實現

基於會話的、實現了身份認證、數據機密性和會話完整性的TLS/SSL庫

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

 還可以實現私有證書頒發機構。

openssl包含很多子命令,可以實現諸多功能,基本用法如下:

openssl speed 測試對各種加密算法的速度,這是一個很好的測試工具。 enc –ciphername(加密算法的名字) [-in filename從哪個文件讀進來] [-out filename加密後結果存放到哪個位置] [-pass arg] [-e加密] [-d解密] [-a對base64位進行編碼] eg:對文件加密,openssl enc –des3 –a –in inittab –out inittab.des3    對文件解密:openssl –des3 –d –a –in inittab.des3 –out inittab 基於openssl提取特徵碼(指紋)openssl dgst –shal inittab 基於openssl生成密碼串:openssl passwd -1(一,基於md5加密的) 

    總得來說,對稱加密是隻有一個祕鑰,非對稱加密是公私鑰成對出現的,並且非對稱加密中私鑰加密能夠實現驗證身份的作用,ssh就是這樣,而公鑰加密可以保證數據的機密性,單向加密可以實現數據的完整性。

    ssl是一種對稱加密,用在HTTPS中就是在應用層和傳輸層之間加辦層ssl,這是一個庫,應用層和各種協議調用這個庫就可以實現加密。

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