常見加密算法原理及概念

一、概述

在安全領域,利用密鑰加密算法來對通信的過程進行加密是一種常見的安全手段。利用該手段能夠保障數據安全通信的三個目標:

1、數據的保密性,防止用戶的數據被竊取或泄露
2、保證數據的完整性,防止用戶傳輸的數據被篡改
3、通信雙方的身份確認,確保數據來源與合法的用戶

而常見的密鑰加密算法類型大體可以分爲三類:對稱加密、非對稱加密、單向加密。下面我們來了解下相關的算法原理及其常見的算法。

 

二、對稱加密

在加密傳輸中最初是採用對稱密鑰方式,也就是加密和解密都用相同的密鑰。

 

對稱加密過程如下:

1.對稱加密算法採用單密鑰加密,在通信過程中,數據發送方將原始數據分割成固定大小的塊,經過密鑰和加密算法逐個加密後,發送給接收方

2.接收方收到加密後的報文後,結合解密算法使用相同密鑰解密組合後得出原始數據。

圖示:

 

優點

是效率高,算法簡單,系統開銷小,適合加密大量數據。

缺點

安全性差

加解密算法是公開的,因此在這過程中,密鑰的安全傳遞就成爲了至關重要的事了。而密鑰通常來說是通過雙方協商,以物理的方式傳遞給對方,或者利用第三方平臺傳遞給對方,一旦這過程出現了密鑰泄露,不懷好意的人就能結合相應的算法攔截解密出其加密傳輸的內容。

擴展性差

每對通信用戶之間都需要協商密鑰,n個用戶的團體就需要協商n*(n-1)/2個不同的密鑰,不便於管理;而如果都使用相同密鑰的話,密鑰被泄漏的機率大大增加,加密也就失去了意義。 

 

常見的對稱加密算法

DES:分組式加密算法,以64位爲分組對數據加密,加解密使用同一個算法。
3DES:三重數據加密算法,對每個數據塊應用三次DES加密算法。
AES:高級加密標準算法,是美國聯邦政府採用的一種區塊加密標準,用於替代原先的DES,目前已被廣泛應用。
Blowfish:Blowfish算法是一個64位分組及可變密鑰長度的對稱密鑰分組密碼算法,可用來加密64比特長度的字符串。

 

三、非對稱加密

非對稱加密算法採用公鑰和私鑰兩種不同的密碼來進行加解密。公鑰和私鑰是成對存在,公鑰是從私鑰中提取產生公開給所有人的,如果使用公鑰對數據進行加密,那麼只有對應的私鑰(不能公開)才能解密,反之亦然。N 個用戶通信,需要2N個密鑰。

 

用途

非對稱密鑰加密適合對密鑰或身份信息等敏感信息加密,從而在安全性上滿足用戶的需求。

 

非對稱加密過程

1.甲使用乙的公鑰並結合相應的非對稱算法將明文加密後發送給乙,並將密文發送給乙。 
2.乙收到密文後,結合自己的私鑰和非對稱算法解密得到明文,得到最初的明文。 

圖示:

 

優點

具有比對稱密鑰加/解密方式更高的安全性,因爲加密和解密用的是不同密鑰,而且無法從一個密鑰推導出另一個密鑰,且公鑰加密的信息只能用同一方的私鑰進行解密。 

缺點

1.非對稱密鑰加密的缺點是算法非常複雜,導致加密大量數據所用的時間較長,只適合對少量數據進行加密。而且由於在加密過程中會添加較多附加信息,使得加密後的報文比較長,容易造成數據分片,不利於網絡傳輸。 

2.無法確認公鑰的來源合法性以及數據的完整性。如何確認我們接下來會說

 

常見算法包括:

RSA:RSA算法基於一個十分簡單的數論事實:將兩個大素數相乘十分容易,但那時想要對其乘積進行因式分解卻極其困難,因此可以將乘積公開作爲加密密鑰,可用於加密,也能用於簽名。
DSA:數字簽名算法,僅能用於簽名,不能用於加解密。
DSS:數字簽名標準,技能用於簽名,也可以用於加解密。
ELGamal:利用離散對數的原理對數據進行加解密或數據簽名,其速度是最慢的。

 

四、單向加密

單向加密算法只能用於對數據的加密,無法被解密,其特點爲定長輸出、雪崩效應(少量消息位的變化會引起信息摘要的許多位變化)。

 

用途

單向加密算法常用於提取數據指紋,驗證數據的完整性、數字摘要、數字簽名等等。

 

單向加密過程

1.發送者將明文通過單向加密算法加密生成定長的密文串,然後傳遞給接收方。

2.接收方將用於比對驗證的明文使用相同的單向加密算法進行加密,得出加密後的密文串。

3.將之與發送者發送過來的密文串進行對比,若發送前和發送後的密文串相一致,則說明傳輸過程中數據沒有損壞;若不一致,說明傳輸過程中數據丟失了。

圖示:

 
常見算法

MD5、sha1、sha224等等

 

五、密鑰交換

密鑰交換IKE(Internet Key Exchange)通常是指雙方通過交換密鑰來實現數據加密和解密

 

常見的密鑰交換方式有下面兩種:

1、公鑰加密

將公鑰加密後通過網絡傳輸到對方進行解密,這種方式缺點在於具有很大的可能性被攔截破解,因此不常用

 

2、Diffie-Hellman

DH算法是一種密鑰交換算法,其既不用於加密,也不產生數字簽名。

DH算法通過雙方共有的參數、私有參數和算法信息來進行加密,然後雙方將計算後的結果進行交換,交換完成後再和屬於自己私有的參數進行特殊算法,經過雙方計算後的結果是相同的,此結果即爲密鑰。

如:

A 有p和g兩個參數,A還有一個屬於自己的私有參數x;
B 有p和g兩個參數,A還有一個屬於自己的私有參數y;
A和B均使用相同的加密算法計算其對應的值:value_A=p^(x%g),value_B=p^(y%g)
隨後雙方交換計算後的值,然後再分別使用自己的私有參數對去求次方,如:
A拿到value_B值後,對其求x平方得value_B^x=p^(xy%g);
B拿到value_A值後,對其求y平方得value_A^y=p^(xy%g);
最終得到的結果是一致的。

安全性

在整個過程中,第三方人員只能獲取p、g兩個值,AB雙方交換的是計算後的結果,因此這種方式是很安全的。

 

如何確認公鑰的來源合法性?

答案:使用公鑰證書

 

公鑰基礎設施(PKI)

公鑰基礎設施是一個包括硬件、軟件、人員、策略和規程的集合

 

用途

用於實現基於公鑰密碼機制的密鑰和證書的生成、管理、存儲、分發和撤銷的功能

 

組成

簽證機構CA、註冊機構RA、證書吊銷列表CRL和證書存取庫CB。

 

公鑰證書

公鑰證書是以數字簽名的方式聲明,它將公鑰的值綁定到持有對應私鑰的個人、設備或服務身份。公鑰證書的生成遵循X.509協議的規定,其內容包括:證書名稱、證書版本、序列號、算法標識、頒發者、有效期、有效起始日期、有效終止日期、公鑰 、證書籤名等等的內容。

 

CA(Certificate Authority)證書認證的流程

1.Bob爲了向Alice證明自己是Bob和某個公鑰是自己的,她便向一個Bob和Alice都信任的CA機構申請證書,Bob先自己生成了一對密鑰對(私鑰和公鑰),把自己的私鑰保存在自己電腦上,然後把公鑰給CA申請證書。

2.CA接受申請於是給Bob頒發了一個數字證書,證書中包含了Bob的那個公鑰以及其它身份信息,當然,CA會計算這些信息的消息摘要並用自己的私鑰加密消息摘要(數字簽名)一併附在Bob的證書上,以此來證明這個證書就是CA自己頒發的。

3.Alice得到Bob的證書後用CA的證書(自簽署的)中的公鑰來解密消息摘要,隨後將摘要和Bob的公鑰發送到CA服務器上進行覈對。CA在接收到Alice的核對請求後,會根據Alice提供的信息覈對Bob的證書是否合法,如果確認合法則回覆Alice證書合法。Alice收到CA的確認回覆後,再去使用從證書中獲取的Bob的公鑰加密郵件然後發送給Bob,Bob接收後再以自己的私鑰進行解密。

 

參考:

https://www.jianshu.com/p/ce3893a7be09

https://www.cnblogs.com/devdeng/p/5334038.html

https://blog.csdn.net/lycb_gz/article/details/78047417

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