【密码学】一万字带您走进密码学的世界(上)
引文
密碼學是研究編制密碼和破譯密碼的技術科學。研究密碼變化的客觀規律,應用于編制密碼以保守通信秘密的,稱為編碼學;應用于破譯密碼以獲取通信情報的,稱為破譯學,總稱密碼學。
為了使讀者對密碼學有一個整體的認識,本文簡述了常見的密碼學的概念,其中本文包括對稱密碼,哈希函數。
《一萬字帶您走進密碼學的世界(下)》包括非對稱密碼,數字簽名,數字認證等,需要指出的是文中并沒有深入探討加密算法原理,關于此部分內容,后續的文章會詳細闡述。本文的主要內容如下圖所示:
對稱密碼
在對稱密碼體系中,相同的密碼用來加密和解密報文,因此無論對發送者還是接收者他們都知道秘鑰,解密和解密的過程:
M表示明文M表示明文
K表示秘鑰K表示秘鑰
C表示密文C表示密文
E表示加密函數E表示加密函數
D表示解密函數D表示解密函數
對稱密碼可以分為兩類:分組密碼和序列密碼
分組密碼
分組密碼(Block Cipher):以一個數據塊(比如64位連續的比特數據)為單位進行加密,將明文消息編碼表示后的數字(簡稱明文數字)序列,劃分成長度為n的組(可看成長度為n的矢量),每組分別在密鑰的控制下變換成等長的輸出數字(簡稱密文數字)序列。
常見的分組密碼分為以下幾類:
Feistel 密碼
在密碼學研究中,Feistel 密碼結構是用于分組密碼中的一種對稱結構。以它的發明者 Horst Feistel 為名,而Horst Feistel 本人是一位物理學家兼密碼學家,在他為 IBM 工作的時候,為Feistel 密碼結構的研究奠定了基礎。很多密碼標準都采用了Feistel 結構,其中包括DES。Feistel 的優點在于:由于它是對稱的密碼結構,所以對信息的加密和解密的過程就極為相似,甚至完全一樣。這就使得在實施的過程中,對編碼量和線路傳輸的要求就減少了幾乎一半。
DES
數據加密標準(英語:Data Encryption Standard,縮寫為 DES)是一種對稱密鑰加密塊密碼算法,1976年被美國聯邦政府的國家標準局確定為聯邦資料處理標準(FIPS),隨后在國際上廣泛流傳開來。它基于使用56位密鑰的對稱算法
AES
高級加密標準(英語:Advanced Encryption Standard,縮寫:AES),在密碼學中又稱Rijndael加密法,是美國聯邦政府采用的一種區塊加密標準。這個標準用來替代原先的DES,已經被多方分析且廣為全世界所使用。經過五年的甄選流程,高級加密標準由美國國家標準與技術研究院(NIST)于2001年11月26日發布于FIPS PUB 197,并在2002年5月26日成為有效的標準。2006年,高級加密標準已然成為對稱密鑰加密中最流行的算法之一。
分組密碼幾種模式
分組(block)密碼的工作模式(mode of operation)允許使用同一個分組密碼密鑰對多于一塊的數據進行加密,并保證其安全性。分組密碼自身只能加密長度等于密碼分組長度的單塊數據,若要加密變長數據,則數據必須先被劃分為一些單獨的密碼塊。通常而言,最后一塊數據也需要使用合適填充方式將數據擴展到匹配密碼塊大小的長度。一種工作模式描述了加密每一數據塊的過程,并常常使用基于一個通常稱為初始化向量的附加輸入值以進行隨機化,以保證安全,
電子密碼本(ECB)
最簡單的加密模式即為電子密碼本(Electronic codebook,ECB)模式。需要加密的消息按照塊密碼的塊大小被分為數個塊,并對每個塊進行獨立加密.加密過程如下:
解密過程如下:
密碼塊鏈接(CBC)
在CBC模式中,每個平文塊先與前一個密文塊進行異或后,再進行加密。在這種方法中,每個密文塊都依賴于它前面的所有平文塊。同時,為了保證每條消息的唯一性,在第一個塊中需要使用初始化向量。
加密過程如下:
解密過程如下:
填充密碼塊鏈接(PCBC)
填充密碼塊鏈接(PCBC,Propagating cipher-block chaining)或稱為平文密碼塊鏈接(Plaintext cipher-block chaining)[15][16],是一種可以使密文中的微小更改在解密時導致平文大部分錯誤的模式,并在加密的時候也具有同樣的特性。
加密過程如下:
解密過程如下:
密文反饋(CFB)
密文反饋(CFB,Cipher feedback)模式類似于CBC,可以將塊密碼變為自同步的流密碼;工作過程亦非常相似,CFB的解密過程幾乎就是顛倒的CBC的加密過程:
加密過程如下:
解密過程如下:
計數器模式(CTR)
TR模式(Counter mode,CM)也被稱為ICM模式(Integer Counter Mode,整數計數模式)和SIC模式(Segmented Integer Counter)。
與OFB相似,CTR將塊密碼變為流密碼。它通過遞增一個加密計數器以產生連續的密鑰流,其中,計數器可以是任意保證長時間不產生重復輸出的函數,但使用一個普通的計數器是最簡單和最常見的做法。
加密過程如下:
解密過程如下:
序列密碼
序列密碼(Stream Cipher):一次只對明文中的單個比特(有時對字節)運算的算法,而且密碼要不斷變化中。
加密的一般模型如下:
明文序列:m=m1m2m3…m=m1m2m3…
秘鑰序列:k=k1k2k3…k=k1k2k3…
密文序列:c=c1c2c3…c=c1c2c3…
加密變換:ci=ki?mi(i=1,2,3…)ci=ki?mi(i=1,2,3…)
解密變換:mi=ki?ci(i=1,2,3…)mi=ki?ci(i=1,2,3…)
流式密碼有點像一次性密碼:我們產生一個和和要加密的數據一樣長的秘鑰,這個秘鑰往往是從種子中產生的,雖然他不是隨機的,但是是偽隨機的。
常見的序列加密算法如下:
線性反饋寄存器
線性反饋移位寄存器(linear feedback shift register, LFSR)是指,給定前一狀態的輸出,將該輸出的線性函數再用作輸入的移位寄存器。異或運算是最常見的單比特線性函數:對寄存器的某些位進行異或操作后作為輸入,再對寄存器中的各比特進行整體移位。
內容擾亂系統
內容擾亂系統(Content Scrambling System) 是一種防止直接從盤片上復制視頻文件的數據加密和鑒定方法。每個獲得許可的人都能得到一把密鑰,它從加密光盤上的密鑰組成的母集中取出來。 只要在以后的光盤上去除該密鑰,許可就失效了。
A5/1算法
該方案用于GSM蜂窩電話網絡中的數據機密性加密
RC5算法
分組密碼算法是1994由麻薩諸塞技術研究所的Ronald L. Rivest教授發明的,并由RSA實驗室分析。不像許多方案,RC5具有可變塊大小(32,64或128位),密鑰大小(0到2040位)和輪回數(0到255)。參數的原始建議選擇分別為64位,128位密鑰和12輪的塊大小。12輪的RC5(64位塊)易受使用244選擇明文差分攻擊。18-20輪被認為是足夠的安全保護。
哈希加密
哈希加密是獨立于對稱密碼和對稱密碼體系的,因為他不需要解密。接下來我們會提到哈希函數的概念,注意:此處的哈希函數有別與編程中的哈希函數,編程中函數主要用來做地址的映射。具體詳見我之前的文章《【密碼學】Hash Function(哈希函數)》
密碼學上指散列函數具有的特征:
- 輸入長度可以是任意長度
- 輸出是固定長度
- 給出任意的報文可以很輕松的算出哈希函數H(x)H(x)
- 哈希函數是個不可逆的函數,就是給出一個YY,其中Y=H(x)Y=H(x),你完全不能通過Y去推算出x
- 哈希函數不存在碰撞,就是不存在任意一個x′x′,使H(x′)=H(x)H(x′)=H(x)
哈希函數的用處
文件校驗
MD5 Hash算法的”數字指紋”特性,使它成為目前應用最廣泛的一種文件完整性校驗和(Checksum)算法
數字簽名
由于非對稱算法的運算速度較慢,所以在數字簽名協議中,單向散列函數扮演了一個重要的角色。對 Hash 值,又稱”數字摘要”進行數字簽名,在統計上可以認為與對文件本身進行數字簽名是等效的。而且這樣的協議還有其他的優點。
常見的哈希函數算法
MD4
MD4(RFC 1320)是 MIT 的Ronald L. Rivest在 1990 年設計的,MD 是 Message Digest 的縮寫。它適用在32位字長的處理器上用高速軟件實現–它是基于 32位操作數的位操作來實現的。
MD5
MD5(RFC 1321)是 Rivest 于1991年對MD4的改進版本。它對輸入仍以512位分組,其輸出是4個32位字的級聯,與 MD4 相同。MD5比MD4來得復雜,并且速度較之要慢一點,但更安全,在抗分析和抗差分方面表現更好
SHA1
SHA1是由NIST NSA設計為同DSA一起使用的,它對長度小于2^64位的輸入,產生長度為160bit的散列值,因此抗窮舉(brute-force)性更好。SHA-1 設計時基于和MD4相同原理,并且模仿了該算法。
總結
本文主要闡述了密碼學中的對稱密碼和哈希密碼
在下篇文章《一萬字帶您走進密碼學的世界(下)》中我們將繼續介紹 非對稱密碼,秘鑰交換,數字證書等概念。
聲明
本文40%為翻譯組合,60%為原創
引用
http://baike.baidu.com/linkurl=8O2XInaeTewn0xMPgNceWPDDCbwEeI8DjJMwpp_T8Gcu6sGCpeJDSpolFXLsYXPfa5OcaIqq7t_r11cprg2j8q
https://zh.wikipedia.org/wiki/%E5%88%86%E7%BB%84%E5%AF%86%E7%A0%81%E5%B7%A5%E4%BD%9C%E6%A8%A1%E5%BC%8F#.E7.94.B5.E5.AD.90.E5.AF.86.E7.A0.81.E6.9C.AC.EF.BC.88ECB.EF.BC.89
http://baike.baidu.com/link?url=MbBt9W9ZxPbUczMDPjb4Touio78qil_JUp858Oi0GQbB6uVIhpfElCRtdouJlKVO6oDL4lhPzeENovTkJp2GWrq7XeutPYyIpB3l6eWytIu
http://baike.baidu.com/link?url=hhvK2RFiyxU0CJ12HnVpg9PEozTQ2tTfU7DT2K8VcCgx198hhJRBpiKuCjJk6qm0FA0fyeKPH9w_vLkJrGQ3_j-iLxOi4E6WIlFe-u0WxO_
總結
以上是生活随笔為你收集整理的【密码学】一万字带您走进密码学的世界(上)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: LBFT跨链共识机制
- 下一篇: 【密码学】一万字带您走进密码学的世界(下