安全隨筆2 對稱加密應用場景

2021-09-06 03:31:36 字數 2097 閱讀 8798

md5或者說hash值是一種不可逆的演算法。如果需要從密文還原成明文,那麼就需要對稱和非對稱這兩類可逆演算法。

首先,簡單介紹下這兩類演算法。圖9-1是對稱演算法的示意圖:

圖9-1 對稱演算法

在對稱演算法中,首先需要傳送方和接收方協定乙個金鑰k。k可以是乙個金鑰對,但是必須要求加密金鑰和解密金鑰之間能夠互相推算出來。在最簡單也是最常用的對稱演算法中,加密和解密共享乙個金鑰。上圖中,我們為了簡單期間,使用的就是乙個金鑰。金鑰k為了防止被第三方獲取,可以通過乙個秘密通道由傳送方傳送給接收方。當然,這個秘密通道可以是任何形式,如果覺得可以,你甚至可以寄送一封郵件給對方告訴他金鑰。

對稱加密中明文通過對稱加密成密文,在公開信道中進行傳輸。這個時候,即便第三方截獲了資料,由於他沒有掌握金鑰,也是解密不了密文的。

簡單介紹了對稱加密,現在我們來看非對稱加密。圖9-2是乙個非對稱加密的示意圖:

圖9-2 非對稱演算法

在非對稱演算法中,首先得有乙個金鑰對,這個金鑰對含有兩部分內容,分別稱作公鑰(pk)和私鑰(sk),公鑰通常用來加密,私鑰則用來解密。在對稱演算法中,也講到了可以有兩個金鑰(分為加密和解密金鑰)。但是,對稱演算法中的加解密金鑰可以互相轉換,而在非對稱演算法中,則不能從公鑰推算出私鑰。所以,我們完全可以將公鑰公開到任何地方。

如上圖所以,傳送者用接收方公開出來的公鑰pk進行加密。接受方在收到密文後,再用與公鑰對應的私鑰sk進行解密。同樣,密文可以被截獲,但是由於截獲者只有公鑰,沒有私鑰,他不能進行解密。

對稱演算法和非對稱演算法各有優缺點。非對稱加密的突出優點是用於解密的金鑰(也就是私鑰)永遠不需要傳遞給對方。但是,它的缺點也很突出:非對稱加密演算法複雜,導致加解密速度慢,故只適合小量資料的場合。而對稱加密加解密效率高,系統開銷小,適合進行大資料量的加解密。由於檔案一般比較大,這個特性決定了適合它的加密方式最好是對稱加密。下面是乙個針對檔案的對稱加密的實現:

static void main()

//緩衝區大小

static int buffersize = 128 * 1024;

//金鑰salt

static byte salt = ;

//初始化向量

static byte iv = ;

//初始化並返回對稱加密演算法

static symmetricalgorithm createrijndael(string password, byte salt)

static void encryptfile(string infile, string outfile, string password)

cryptostream.flush();}}

}static void decryptfile(string infile, string outfile, string password)

if (slack > 0)

outfilestream.flush();}}

}

備註:金鑰salt和初始化向量iv有必要解釋下上面**中的金鑰salt和初始化向量iv。

金鑰salt在加密演算法中主要被設計用來防止「字典攻擊」。字典攻擊也是一種窮舉的暴力破解法。字典中會假設一定數量的密碼值,攻擊者會嘗試用這些密碼來解密密文。salt是在金鑰匯出之前在密碼末尾引入的隨機位元組,它使這類攻擊變得非常困難。

初始化向量iv在加密演算法中起到的也是增強破解難度的作用。在加密過程中,如果遇到相同的資料塊,其加密出來的結果也一致,相對就會容易破解。加密演算法在加密資料塊的時候,往往會同時使用密碼和上乙個資料塊的加密結果。因為要加密的第乙個資料塊顯然不存在上乙個資料塊,所以這個初始化向量就是被設計用來當作初始資料塊的加密結果。

最後,我們在實際應用中,應該始終考慮使用對稱加密的方式進行檔案的加解密工作。當然,如果檔案加密後要傳給網路中的其它接收者,而接收者始終要對檔案進行解密的,這意味著金鑰也是始終要傳送給接收者的。這個時候,非對稱加密就可以派上用場了,它可以用於字串的加解密及安全傳輸場景。關於這一點,我們會在下乙個建議中講到。

第10章 網路安全(1) 對稱加密和非對稱加密

1網路安全概述 1.1計算機網路面臨的安全威協 1 截獲 攻擊者從網路上竊聽他人的通訊內容,通常把這類攻擊稱為 截獲 在被動攻擊中,攻擊者只是觀察和分析某乙個協議資料單元 pdu 而不干擾資訊流。2 篡改 攻擊者篡改網路上傳遞的報文。這裡包括徹底中斷傳遞的報文,甚至把完全偽造的報文傳送給接收方,這種...

一起來學資訊保安知識(2) 對稱密碼和非對稱密碼

目前密碼分為對稱密碼和非對稱密碼。其中,對稱密碼主要有des 3des aes,非對稱密碼主要有rsa ecc。先舉個簡單的對稱密碼的例子。假設有一串數字123789,我們需要對其進行加密,加密的方法是每個數字加1,那麼加密前後如下 明文123789 密文234890 解密過程為每個數字減1。從上邊...

第9章專案2 對稱矩陣壓縮儲存的實現與應用(1)

問題描述 檔名稱 專案2 1.cbp 作 者 張芸嘉 完成日期 2015年11月02日 版 本 號 v1.0 問題描述 1 用壓縮形式儲存對稱矩陣,實現下面的操作並測試 void init int b 為n階對稱矩陣初始化儲存資料的一維陣列b int value int b,int i,int j ...