加密的方法主要分為兩個大類,對稱加密和非對稱加密。
對稱加密
通訊雙方加密解密使用的是同樣的金鑰,繼續舉個例子,a和b約定,在傳送訊息的時候,將訊息的每個位元組加1傳送,那麼這裡的1我們可以理解為金鑰key,每個位元組加乙個值,我們可以理解為加密方法,那麼b在收到訊息後,就需要將訊息的每個自己減1才能還原的原始的訊息。這裡a和b所加密解密時使用的都是同乙個金鑰,這種就稱為對稱加密。
非對稱加密/公開金鑰加密
非對稱加密(也稱為公開金鑰加密)使用的金鑰為乙個金鑰對,公鑰和私鑰,加密和解密需要使用不同的金鑰,使用公鑰加密的內容只能用私鑰進行解密,反之使用私鑰加密的內容只能用公鑰進行解密。使用非對稱加密的好處就是通訊雙方不需要事先約定金鑰。還是以a和b通訊舉例,a手中有密碼對,公鑰m和私鑰n,公鑰可以公開,即所有人都可以知道,私鑰需要自己保管,不能讓任何人知道。這時b需要傳送訊息給a的時候,就用a的公鑰m對訊息進行加密,其他人能夠收到訊息,但這是只有a的私鑰n才能對訊息進行解密,所以無法得知訊息的內容。當a需要給b傳送訊息時,就使用b的公鑰進行加密,這樣雙發並沒有事先私下商量金鑰,而完成了加密通訊。
對稱加密的缺點是需要通訊雙方事先確定好金鑰,這在實際應用中有諸多不便,但是由於對稱加密的演算法複雜度較低(相對於對稱加密),有加密速度快的優點。而對稱加密雖然不需要通訊雙方事先商量好金鑰,但是由於演算法複雜度較大,會導致加密解密時間較長,在實際的通訊應用的,通常需要將兩者結合起來,先使用非對稱加密的方法來約定對稱加密的金鑰,然後再使用對稱加密進行通訊,這樣一來就不需要雙方事先單獨約定金鑰,同時也能讓整個通訊的加密解密時間降低。
訊息摘要可以理解成訊息的指紋,主要有以下幾個特點:
1 就像人的指紋一樣,不同訊息的指紋也完全不一樣(或者說概率低到可以忽略),也就是說訊息內容更改一點點,訊息摘要也會很不同。
2 通過較少的資訊去驗證大量的資料,驗證乙個人的身份,只需要通過驗證指紋乙個資訊即可。訊息摘要也一樣,不論是幾百m上g的資料,還是幾kb的資料,訊息摘要都是固定的長度(例如32 bytes)。
訊息摘要通常使用的單向雜湊演算法,平常所說的雜湊,sha等都是單向雜湊演算法的一種,具體的演算法內容將會在後面詳說。
訊息摘要用來驗證訊息的完整性,並用能用於訊息的機密性。
訊息認證碼就是平常說的mac(message authentication code),訊息認證碼可以簡單的理解為將金鑰加入到運算過程的一種訊息摘要演算法。顯而易見,訊息認證碼不僅僅能夠做到和訊息摘要一樣,用於驗證資料的完整性,也由於加入金鑰進行運算,也能夠提供認證機制。就如在前面的內容中所說,a和b通訊的時候,在訊息正文的後面加入訊息認證碼,認證所用的金鑰僅僅只有a和b知道,那麼其他人則無法偽造兩者的身份進行通訊欺騙。因為其他人並不知道金鑰的值。
隨機數產生器看似沒有和安全通訊沒有必然的聯絡,但其實在在加密解密中扮演這十分重要的角色,在安全通訊的過程中,為了防止攻擊者的回溯攻擊等,必須要將隨機數加入其中,比如,在正真的通訊訊息中,加入一定數量的隨機數,使得即使在傳送同一訊息的時候,正真的發出去的訊息內容也是不同的。所以安全系統中,乙個優秀的隨機數產生器同樣扮演這十分重要的角色。
密碼學與安全技術概要
hash 雜湊或雜湊 能將任意長度的二進位制明文對映為較短的 通常是固定長度的 二進位制串 hash值 並且不同的明文很難對映為相同的hash值。hash值在應用中又常被稱為指紋 fingerprint 或摘要 digest 乙個優秀的hash演算法將能實現如下功能 1 正向快速 2 逆向困難 3 ...
安全 密碼學基礎
本文 1 加密技術概述 乙個密碼系統的安全性只在於金鑰的保密性,而不在演算法的保密性。對純資料的加密的確是這樣。對於你不願意讓他看到這些資料 資料的明文 的人,用可靠的加密演算法,只要破解者不知道被加密資料的密碼,他就不可解讀這些資料。但是,軟體的加密不同於資料的加密,它只能是 隱藏 不管你願意不願...
密碼學 密碼學中的安全性證明
安全性證明的定義是這樣的 所謂密碼演算法的安全性證明就是判定在乙個普通的攻擊模型中,密碼演算法和所依賴的可信密碼學演算法問題之間的規約關係,如果演算法的攻破 即攻擊者贏 意味著某一在密碼學中可信問題的解決,則說明該演算法是安全的,即安全性得到證明。第一次看這個概念,很懵,難道乙個可以攻破的密碼的演算...