- Java加密與解密的藝術(shù)(第2版)
- 梁棟
- 2651字
- 2018-12-31 23:24:40
2.2 密碼學(xué)定義、術(shù)語(yǔ)及其分類(lèi)
歷經(jīng)四千多年的風(fēng)風(fēng)雨雨,密碼學(xué)逐步發(fā)展成為一門(mén)學(xué)科,對(duì)于它的定義也越來(lái)越清晰,那么什么是密碼學(xué)呢?
? 密碼學(xué):主要是研究保密通信和信息保密的學(xué)科,包括信息保密傳輸和信息加密存儲(chǔ)等。密碼學(xué)包含密碼編碼學(xué)(Cryptography)和密碼分析學(xué)(Cryptanalyst)兩個(gè)分支。編碼學(xué)與分析學(xué)相互促進(jìn),又相互制約。一方面,兩者在加強(qiáng)密碼分析的安全上相互促進(jìn);另一方面,兩者在實(shí)施更為有效的攻擊方面也相互影響。
? 密碼編碼學(xué):主要研究如何對(duì)信息進(jìn)行編碼,如何實(shí)現(xiàn)對(duì)信息的隱蔽,是密碼學(xué)理論的基礎(chǔ),也是保密系統(tǒng)設(shè)計(jì)的基礎(chǔ)。
? 密碼分析學(xué):主要研究加密消息的破譯或消息的偽造,是檢驗(yàn)密碼體制安全性最為直接的手段,只有通過(guò)實(shí)際密碼分析考驗(yàn)的密碼體制,才是真正可用的。
2.2.1 密碼學(xué)常用術(shù)語(yǔ)
在簡(jiǎn)要了解了密碼學(xué)的一些基本概念后,讓我們來(lái)看一下密碼學(xué)常用術(shù)語(yǔ),如下所示:
? 明文(Plaintext):指待加密信息。明文可以是文本文件、圖片文件、二進(jìn)制數(shù)據(jù)等。
? 密文(Ciphertext):指經(jīng)過(guò)加密后的明文。密文通常以文本、二進(jìn)制數(shù)據(jù)等形式存在。
? 發(fā)送者(Sender):指發(fā)送消息的人。
? 接收者(Receiver):指接收消息的人。
? 加密(Encryption):指將明文轉(zhuǎn)換為密文的過(guò)程。
? 加密算法(Encryption Algorithm):指將明文轉(zhuǎn)換為密文的算法。
? 加密密鑰(Encryption Key):指通過(guò)加密算法進(jìn)行加密操作用的密鑰。
? 解密(Decryption):指將密文轉(zhuǎn)換成明文的過(guò)程。
? 解密算法(Decryption Algorithm):指將密文轉(zhuǎn)換為明文的算法。
? 解密密鑰(Decryption Key):指通過(guò)解密算法進(jìn)行解密操作用的密鑰。
? 密碼分析(Cryptanalysis):指截獲密文者試圖通過(guò)分析截獲的密文從而推斷出原來(lái)的明文或密鑰的過(guò)程。
? 密碼分析者(Cryptanalyst):等同于密碼破譯者,指從事密碼分析的人。
? 被動(dòng)攻擊(Passive Attack):指對(duì)一個(gè)保密系統(tǒng)采取截獲密文并對(duì)密文進(jìn)行分析和攻擊的行為。這種攻擊對(duì)密文沒(méi)有破壞作用。
? 主動(dòng)攻擊(Active Attack):指攻擊者非法入侵密碼系統(tǒng),采用偽造、修改、刪除等手段向系統(tǒng)注入假消息進(jìn)行欺騙的行為。這種攻擊對(duì)密文具有破壞作用。
? 密碼體制(Cipher System):由明文空間、密文空間、密鑰空間、加密算法和解密算法五部分構(gòu)成。
? 密碼協(xié)議(Cryptographic Protocol):有時(shí)又稱(chēng)安全協(xié)議,是指以密碼學(xué)為基礎(chǔ)的消息交換的通信協(xié)議,其目的是在網(wǎng)絡(luò)環(huán)境中提供各種安全服務(wù)。密碼協(xié)議與密碼算法同等重要,是當(dāng)今密碼學(xué)研究的兩大課題。密碼學(xué)是網(wǎng)絡(luò)安全的基礎(chǔ),但網(wǎng)絡(luò)安全不能單純依靠安全的密碼算法。密碼協(xié)議是網(wǎng)絡(luò)安全的一個(gè)重要組成部分,通過(guò)密碼協(xié)議可以進(jìn)行實(shí)體之間的認(rèn)證、在實(shí)體之間安全地分配密鑰或其他各種秘密、確認(rèn)發(fā)送和接收的消息的不可否認(rèn)性等。
? 密碼系統(tǒng)(Cryptography):指用于加密和解密的系統(tǒng)。加密時(shí),密碼系統(tǒng)輸入明文和加密密鑰,進(jìn)行加密變換后,輸出密文;解密時(shí),密碼系統(tǒng)輸入密文和解密密鑰,進(jìn)行解密變換后,輸入明文。一個(gè)密碼系統(tǒng)由信源、加密變換、解密變換、信宿和攻擊者組成。密碼系統(tǒng)強(qiáng)調(diào)密碼方案的實(shí)際應(yīng)用,通常應(yīng)當(dāng)是一個(gè)包含軟、硬件的系統(tǒng)。
? 柯克霍夫原則(Kerckhoffs'Principle):又稱(chēng)柯克霍夫假說(shuō)、公理或定律,是由奧古斯特·柯克霍夫(Auguste Kerckhoffs)在19世紀(jì)提出的密碼理論,即數(shù)據(jù)的安全基于密鑰而不是算法的保密。換句話說(shuō),系統(tǒng)的安全性取決于密鑰,對(duì)密鑰保密,對(duì)算法公開(kāi)。信息論始祖克勞德·艾爾伍德·香農(nóng)(Claude Elwood Shannon)將其改為“敵人了解系統(tǒng)”,這樣的說(shuō)法稱(chēng)為香農(nóng)箴言。柯克霍夫原則是現(xiàn)代密碼學(xué)設(shè)計(jì)的基本原則。
柯克霍夫原則:
? 即使非數(shù)學(xué)上不可破解,系統(tǒng)也應(yīng)在實(shí)質(zhì)(實(shí)用)程度上無(wú)法破解。
? 系統(tǒng)內(nèi)不應(yīng)含任何機(jī)密物,即使落入敵人手中也不會(huì)造成困擾。
? 密匙必須易于溝通和記憶,而無(wú)須寫(xiě)下,且雙方可以很容易地改變密匙。
? 系統(tǒng)應(yīng)可以用于電訊。
? 系統(tǒng)應(yīng)可以攜帶,不應(yīng)需要兩個(gè)人或兩個(gè)人以上才能使用(應(yīng)只要一個(gè)人就能使用)。
? 系統(tǒng)應(yīng)容易使用,不致讓使用者的腦力過(guò)分操勞,也無(wú)須記得長(zhǎng)串的規(guī)則。
2.2.2 密碼學(xué)分類(lèi)
密碼學(xué)起源于古代,發(fā)展于現(xiàn)代。隨著時(shí)間的推移,密碼學(xué)不斷完善,逐步擁有了眾多分類(lèi)。對(duì)密碼學(xué)進(jìn)行分類(lèi)時(shí),可以按時(shí)間劃分,也可以按保密內(nèi)容的算法劃分,還可以按密碼體制劃分,下面詳細(xì)介紹。
1.按時(shí)間劃分
從時(shí)間上密碼學(xué)可以分為古典密碼學(xué)和現(xiàn)代密碼學(xué),古典密碼學(xué)以字符為基本加密單元,2.4節(jié)中會(huì)有詳細(xì)的闡述;現(xiàn)代密碼以信息塊為基本加密單元。
2.按保密內(nèi)容的算法劃分
根據(jù)保密內(nèi)容的算法密碼學(xué)可分為受限制算法密碼學(xué)和基于密鑰算法密碼學(xué)。
? 受限制(Restricted)算法:算法的保密性基于保持算法的秘密。一般不贊成使用這種算法,除非應(yīng)用于類(lèi)似軍事一類(lèi)的應(yīng)用,算法由專(zhuān)業(yè)機(jī)構(gòu)開(kāi)發(fā)、驗(yàn)證,確保其算法的安全性。這是古典密碼學(xué)的主要特征。
? 基于密鑰(Key-Based)算法:算法的保密性基于對(duì)密鑰的保密。這其實(shí)是基于柯克霍夫原則設(shè)計(jì)的算法,這樣做不但算法的公開(kāi)有助于算法安全性的驗(yàn)證,算法的漏洞得以及時(shí)修正,還避免了算法的設(shè)計(jì)者在算法上留下后門(mén)。這正是現(xiàn)代密碼學(xué)的主要特征。
3.按密碼體制劃分
根據(jù)密碼體制密碼學(xué)可分為對(duì)稱(chēng)密碼體制密碼學(xué)和非對(duì)稱(chēng)密碼體制密碼學(xué)。
? 對(duì)稱(chēng)密碼體制(Symmetric Cryptosystem):又稱(chēng)單鑰密碼體制或私鑰密碼體制,將在2.5節(jié)詳細(xì)闡述。該密碼體制中的加密密鑰與解密密鑰相同,即加密過(guò)程與解密過(guò)程使用同一套密鑰。
? 非對(duì)稱(chēng)密碼體制(Asymmetric Cryptosystem):又稱(chēng)雙鑰密碼體制或公鑰密碼體制。該密碼體制中的加密密鑰與解密密鑰不同,密鑰分為公鑰與私鑰。公鑰對(duì)外公開(kāi),私鑰對(duì)外保密。
與上述密碼體制對(duì)應(yīng)的算法有對(duì)稱(chēng)密碼算法和非對(duì)稱(chēng)密碼算法。
? 對(duì)稱(chēng)密碼算法(Symmetric Cipher):又稱(chēng)單鑰密碼算法或私鑰密碼算法,指對(duì)應(yīng)于對(duì)稱(chēng)密碼體制的加密、解密算法。常見(jiàn)的DES、AES算法都是對(duì)稱(chēng)密碼算法的典范。
? 非對(duì)稱(chēng)密碼算法(Asymmetric Cipher):又稱(chēng)雙鑰密碼算法或公鑰密碼算法,指對(duì)應(yīng)于非對(duì)稱(chēng)密碼體制的加密、解密算法。大名鼎鼎的RSA算法就是非對(duì)稱(chēng)密碼算法,多應(yīng)用于數(shù)字簽名、身份認(rèn)證等。當(dāng)然,非對(duì)稱(chēng)密碼算法相對(duì)于對(duì)稱(chēng)密碼算法有著更高的安全性,但也有著不可回避的加密、解密耗時(shí)長(zhǎng)的問(wèn)題。
4.按明文的處理方法劃分
根據(jù)明文的處理方法密碼學(xué)可分為分組密碼學(xué)和流密碼學(xué)。
? 分組密碼(Block Cipher):指加密時(shí)將明文分成固定長(zhǎng)度的組,用同一密鑰和算法對(duì)每一塊加密,輸出也是固定長(zhǎng)度的密文。分組密碼多應(yīng)用于網(wǎng)絡(luò)加密。
? 流密碼(Stream Cipher):又稱(chēng)序列密碼,指加密時(shí)每次加密一位或一個(gè)字節(jié)的明文。手機(jī)平臺(tái)對(duì)應(yīng)用使用的系統(tǒng)資源有著極為苛刻的要求,這恰恰給了對(duì)系統(tǒng)資源要求極低的流密碼以用武之地。RC4是相當(dāng)有名的流密碼算法。
在手工加密階段和機(jī)械加密階段,流密碼曾是當(dāng)時(shí)的主流。現(xiàn)代密碼學(xué)的研究主要關(guān)注分組密碼和流密碼及其應(yīng)用。在對(duì)稱(chēng)密碼體制中,大部分加密算法屬于分組密碼。關(guān)于分組密碼和流密碼的詳細(xì)內(nèi)容,請(qǐng)閱讀2.5節(jié)。
- 大話PLC(輕松動(dòng)漫版)
- Java入門(mén)經(jīng)典(第6版)
- Computer Vision for the Web
- 網(wǎng)頁(yè)設(shè)計(jì)與制作教程(HTML+CSS+JavaScript)(第2版)
- Reactive Android Programming
- 前端HTML+CSS修煉之道(視頻同步+直播)
- Citrix XenServer企業(yè)運(yùn)維實(shí)戰(zhàn)
- 案例式C語(yǔ)言程序設(shè)計(jì)實(shí)驗(yàn)指導(dǎo)
- JavaScript動(dòng)態(tài)網(wǎng)頁(yè)編程
- NGUI for Unity
- Arduino電子設(shè)計(jì)實(shí)戰(zhàn)指南:零基礎(chǔ)篇
- Get Your Hands Dirty on Clean Architecture
- Flink入門(mén)與實(shí)戰(zhàn)
- 用Python動(dòng)手學(xué)統(tǒng)計(jì)學(xué)
- Java EE輕量級(jí)解決方案:S2SH