1. 程式人生 > >各種簡單的密碼技術(1)

各種簡單的密碼技術(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位)。例如凱撒密碼。