引言
為了使讀者對(duì)密碼學(xué)有一個(gè)整體的認(rèn)識(shí),,本文簡(jiǎn)述了常見(jiàn)的密碼學(xué)的概念,,其中本文包括對(duì)稱密碼,哈希函數(shù),。 對(duì)稱密碼在對(duì)稱密碼體系中,,相同的密碼用來(lái)加密和解密報(bào)文,因此無(wú)論對(duì)發(fā)送者還是接收者他們都知道秘鑰,,解密和解密的過(guò)程: M表示明文 K 表示密文 對(duì)稱密碼可以分為兩類:分組密碼和序列密碼 分組密碼 分組密碼(Block Cipher):以一個(gè)數(shù)據(jù)塊(比如64位連續(xù)的比特?cái)?shù)據(jù))為單位進(jìn)行加密,,將明文消息編碼表示后的數(shù)字(簡(jiǎn)稱明文數(shù)字)序列,劃分成長(zhǎng)度為n的組(可看成長(zhǎng)度為n的矢量),,每組分別在密鑰的控制下變換成等長(zhǎng)的輸出數(shù)字(簡(jiǎn)稱密文數(shù)字)序列,。 常見(jiàn)的分組密碼分為以下幾類: Feistel 密碼 在密碼學(xué)研究中,F(xiàn)eistel 密碼結(jié)構(gòu)是用于分組密碼中的一種對(duì)稱結(jié)構(gòu),。以它的發(fā)明者 Horst Feistel 為名,,而Horst Feistel 本人是一位物理學(xué)家兼密碼學(xué)家,在他為 IBM 工作的時(shí)候,,為Feistel 密碼結(jié)構(gòu)的研究奠定了基礎(chǔ),。很多密碼標(biāo)準(zhǔn)都采用了Feistel 結(jié)構(gòu),其中包括DES,。Feistel 的優(yōu)點(diǎn)在于:由于它是對(duì)稱的密碼結(jié)構(gòu),,所以對(duì)信息的加密和解密的過(guò)程就極為相似,甚至完全一樣,。這就使得在實(shí)施的過(guò)程中,,對(duì)編碼量和線路傳輸?shù)囊缶蜏p少了幾乎一半。 DES 數(shù)據(jù)加密標(biāo)準(zhǔn)(英語(yǔ):Data Encryption Standard,,縮寫(xiě)為 DES)是一種對(duì)稱密鑰加密塊密碼算法,,1976年被美國(guó)聯(lián)邦政府的國(guó)家標(biāo)準(zhǔn)局確定為聯(lián)邦資料處理標(biāo)準(zhǔn)(FIPS),隨后在國(guó)際上廣泛流傳開(kāi)來(lái),。它基于使用56位密鑰的對(duì)稱算法,。 AES 高級(jí)加密標(biāo)準(zhǔn)(英語(yǔ):Advanced Encryption Standard,,縮寫(xiě):AES),在密碼學(xué)中又稱Rijndael加密法,,是美國(guó)聯(lián)邦政府采用的一種區(qū)塊加密標(biāo)準(zhǔn),。這個(gè)標(biāo)準(zhǔn)用來(lái)替代原先的DES,已經(jīng)被多方分析且廣為全世界所使用,。經(jīng)過(guò)五年的甄選流程,,高級(jí)加密標(biāo)準(zhǔn)由美國(guó)國(guó)家標(biāo)準(zhǔn)與技術(shù)研究院(NIST)于2001年11月26日發(fā)布于FIPS PUB 197,并在2002年5月26日成為有效的標(biāo)準(zhǔn),。2006年,高級(jí)加密標(biāo)準(zhǔn)已然成為對(duì)稱密鑰加密中最流行的算法之一,。 分組密碼幾種模式 分組(block)密碼的工作模式(mode of operation)允許使用同一個(gè)分組密碼密鑰對(duì)多于一塊的數(shù)據(jù)進(jìn)行加密,,并保證其安全性。分組密碼自身只能加密長(zhǎng)度等于密碼分組長(zhǎng)度的單塊數(shù)據(jù),,若要加密變長(zhǎng)數(shù)據(jù),,則數(shù)據(jù)必須先被劃分為一些單獨(dú)的密碼塊。通常而言,,最后一塊數(shù)據(jù)也需要使用合適填充方式將數(shù)據(jù)擴(kuò)展到匹配密碼塊大小的長(zhǎng)度,。一種工作模式描述了加密每一數(shù)據(jù)塊的過(guò)程,并常常使用基于一個(gè)通常稱為初始化向量的附加輸入值以進(jìn)行隨機(jī)化,,以保證安全,。 電子密碼本(ECB) 最簡(jiǎn)單的加密模式即為電子密碼本(Electronic codebook,ECB)模式,。需要加密的消息按照塊密碼的塊大小被分為數(shù)個(gè)塊,,并對(duì)每個(gè)塊進(jìn)行獨(dú)立加密.加密過(guò)程如下: 解密過(guò)程如下: 密碼塊鏈接(CBC) 在CBC模式中,每個(gè)平文塊先與前一個(gè)密文塊進(jìn)行異或后,,再進(jìn)行加密,。在這種方法中,每個(gè)密文塊都依賴于它前面的所有平文塊,。同時(shí),,為了保證每條消息的唯一性,在第一個(gè)塊中需要使用初始化向量,。 解密過(guò)程如下: 填充密碼塊鏈接(PCBC) 填充密碼塊鏈接(PCBC,,Propagating cipher-block chaining)或稱為平文密碼塊鏈接(Plaintext cipher-block chaining)[15][16],是一種可以使密文中的微小更改在解密時(shí)導(dǎo)致平文大部分錯(cuò)誤的模式,,并在加密的時(shí)候也具有同樣的特性,。 解密過(guò)程如下: 密文反饋(CFB) 密文反饋(CFB,Cipher feedback)模式類似于CBC,,可以將塊密碼變?yōu)樽酝降牧髅艽a,;工作過(guò)程亦非常相似,,CFB的解密過(guò)程幾乎就是顛倒的CBC的加密過(guò)程: 解密過(guò)程如下: 計(jì)數(shù)器模式(CTR) TR模式(Counter mode,CM)也被稱為ICM模式(Integer Counter Mode,,整數(shù)計(jì)數(shù)模式)和SIC模式(Segmented Integer Counter),。 解密過(guò)程如下: 序列密碼序列密碼(Stream Cipher):一次只對(duì)明文中的單個(gè)比特(有時(shí)對(duì)字節(jié))運(yùn)算的算法,而且密碼要不斷變化中,。 解密變換mi=ki?ci 流式密碼有點(diǎn)像一次性密碼:我們產(chǎn)生一個(gè)和和要加密的數(shù)據(jù)一樣長(zhǎng)的秘鑰,,這個(gè)秘鑰往往是從種子中產(chǎn)生的,雖然他不是隨機(jī)的,,但是是偽隨機(jī)的,。 常見(jiàn)的序列加密算法如下: 線性反饋寄存器 線性反饋移位寄存器(linear feedback shift register, LFSR)是指,給定前一狀態(tài)的輸出,,將該輸出的線性函數(shù)再用作輸入的移位寄存器,。異或運(yùn)算是最常見(jiàn)的單比特線性函數(shù):對(duì)寄存器的某些位進(jìn)行異或操作后作為輸入,再對(duì)寄存器中的各比特進(jìn)行整體移位,。 內(nèi)容擾亂系統(tǒng)內(nèi)容擾亂系統(tǒng)(Content Scrambling System) 是一種防止直接從盤(pán)片上復(fù)制視頻文件的數(shù)據(jù)加密和鑒定方法,。每個(gè)獲得許可的人都能得到一把密鑰,它從加密光盤(pán)上的密鑰組成的母集中取出來(lái),。 只要在以后的光盤(pán)上去除該密鑰,,許可就失效了。 A5/1算法該方案用于GSM蜂窩電話網(wǎng)絡(luò)中的數(shù)據(jù)機(jī)密性加密 RC5算法分組密碼算法是1994由麻薩諸塞技術(shù)研究所的Ronald L. Rivest教授發(fā)明的,,并由RSA實(shí)驗(yàn)室分析,。不像許多方案,RC5具有可變塊大?。?2,,64或128位),密鑰大?。?到2040位)和輪回?cái)?shù)(0到255),。參數(shù)的原始建議選擇分別為64位,128位密鑰和12輪的塊大小,。12輪的RC5(64位塊)易受使用244選擇明文差分攻擊,。18-20輪被認(rèn)為是足夠的安全保護(hù)。 哈希加密哈希加密是獨(dú)立于對(duì)稱密碼和對(duì)稱密碼體系的,,因?yàn)樗恍枰饷?。接下?lái)我們會(huì)提到哈希函數(shù)的概念,,注意:此處的哈希函數(shù)有別與編程中的哈希函數(shù),編程中函數(shù)主要用來(lái)做地址的映射,。 密碼學(xué)上指散列函數(shù)具有的特征:
哈希函數(shù)的用處 文件校驗(yàn)MD5 Hash算法的”數(shù)字指紋”特性,,使它成為目前應(yīng)用最廣泛的一種文件完整性校驗(yàn)和(Checksum)算法 數(shù)字簽名由于非對(duì)稱算法的運(yùn)算速度較慢,所以在數(shù)字簽名協(xié)議中,,單向散列函數(shù)扮演了一個(gè)重要的角色,。對(duì) Hash 值,又稱”數(shù)字摘要”進(jìn)行數(shù)字簽名,,在統(tǒng)計(jì)上可以認(rèn)為與對(duì)文件本身進(jìn)行數(shù)字簽名是等效的,。而且這樣的協(xié)議還有其他的優(yōu)點(diǎn)。 常見(jiàn)的哈希函數(shù)算法 MD4MD4(RFC 1320)是 MIT 的Ronald L. Rivest在 1990 年設(shè)計(jì)的,,MD 是 Message Digest 的縮寫(xiě)。它適用在32位字長(zhǎng)的處理器上用高速軟件實(shí)現(xiàn)–它是基于 32位操作數(shù)的位操作來(lái)實(shí)現(xiàn)的,。 MD5MD5(RFC 1321)是 Rivest 于1991年對(duì)MD4的改進(jìn)版本,。它對(duì)輸入仍以512位分組,其輸出是4個(gè)32位字的級(jí)聯(lián),,與 MD4 相同,。MD5比MD4來(lái)得復(fù)雜,并且速度較之要慢一點(diǎn),,但更安全,,在抗分析和抗差分方面表現(xiàn)更好 SHA1SHA1是由NIST NSA設(shè)計(jì)為同DSA一起使用的,它對(duì)長(zhǎng)度小于2^64位的輸入,,產(chǎn)生長(zhǎng)度為160bit的散列值,,因此抗窮舉(brute-force)性更好。SHA-1 設(shè)計(jì)時(shí)基于和MD4相同原理,,并且模仿了該算法,。 總結(jié)本文主要闡述了密碼學(xué)中的對(duì)稱密碼和哈希密碼。在下篇文章《一萬(wàn)字帶您走進(jìn)密碼學(xué)的世界(下)》中我們將繼續(xù)介紹 非對(duì)稱密碼,,秘鑰交換,,數(shù)字證書(shū)等概念。本文來(lái)自李佳軒博客,。 ? 以上內(nèi)容不構(gòu)成投資建議,,僅供參考 ? |
|