各種簡單的密碼技術(1)
一、前言
本系列包含從古至今的一些密碼演算法的一些簡單原理。主要是方便自己記住一些密碼演算法的大致內容。
二、隱寫術與密碼
隱寫術(Steganography)是一種隱藏資訊本身的技術。例如:我國古代的藏頭詩、藏尾詩,就屬於隱寫術。而在最近幾年中,隱寫術也有一定的應用,在視訊,音訊,影象中隱藏一些資訊。例如數字水印技術,就屬於隱寫術的一種。
密碼(Cryptography)是一種能夠讓資訊內容變得無法解讀的技術,隱藏的是內容。例如RSA演算法。密碼是我們知道資訊就在那裡,但是無法解讀,而隱寫術則是我們根本不知道資訊藏在哪裡。
三、密碼學的目標
- 機密性(僅有傳送方和指定的接收方能夠理解傳輸的報文內容。竊聽者可以擷取到加密了的報文,但不能還原出原來的資訊,即不能得到報文內容。)
- 資料完整性(防止資訊被篡改,通常使用hash函式)
- 認證(確認資訊是否來自於期望的物件)
- 不可否認性(訊息傳送者無法否認其傳送過該訊息)
四、密碼的分類
1. 對稱密碼和非對稱密碼
根據金鑰的使用方法,可以分為對稱密碼和非對稱密碼(又稱公鑰密碼)兩種。對稱密碼是指在加密和解密的過程中使用同一金鑰,如DES, 3DES, IDEA, AES;而非對稱密碼指在加密和解密時使用不同的金鑰,如RSA, ECC, ElgGmal。
對稱加密:
非對稱加密
2. 受限制的演算法和基於金鑰的演算法
受限制的演算法其保密性基於對演算法的保密,基於金鑰的演算法的保密性基於對金鑰的保密。密碼的保密性應該基於對金鑰的保密而不是對演算法的保密,即密碼所使用的演算法應該是可以公開的。
3. 分組加密和流密碼
分組加密是指將明文分成固定長度的分組塊,利用相同的金鑰和演算法對每一塊進行佳美。輸出也是固定長度的密碼分組。如DES, IDEA, RC2, RC4, RC5。
流密碼又稱序列密碼,每次只加密一個密位或一個明文。如一次一密演算法(One-Time-Pad)。
五、其他
密碼學的發展:
從密碼學的發展階段來看,有古典密碼學,近代密碼學,現代密碼學。
密碼學的常識:
- 不使用依賴於演算法保密性的密碼演算法。密碼學發展到今天,密碼的保密性應該依賴於金鑰的保密性而非演算法本身的保密性。
- 使用低強度的密碼比不使用任何加密更加危險。那是因為一旦使用了密碼,使用者的保密意識往往會降低。
- 任何密碼總有一天會被破解。但是一次性密碼本理論上無法被破解,但實際操作有困難;量子密碼可能無法被破解。
- 密碼只是資訊保安的一部分。如果使用者本身沒有防範意識,再好的密碼演算法都沒有用。
加密原理
密碼雖然說起來複雜,而且種類繁多。但是到目前為止,密碼只有兩種基本的加密原理:換位和替換。
換位(置換)就是將語句中的字母進行重新排列,將原先的通順的語句變得毫無意義。例如:china可以重新排列為anihc(此處只是簡單的倒序)。當然,也有其他的重新排列的方式(例如塞塔密碼)。 使用此方法加密後的密文和原文的字母以及其數目一致,只是位置不一致。
替換就是將標準的字母表按照某種規則打亂,形成新的字母表。例如:china可以替換為fklqd(此處只是簡單的將字母表中的字母往後移動3位)。例如凱撒密碼。