密码学基础部分大归纳(密码学发展史,对称、非对称密码算法,数字签名、数字证书)
文章目錄
- 密碼學(xué)發(fā)展史
- 對稱密碼算法
- DES
- AES
 
- 非對稱密碼算法
- RSA
 
- 數(shù)字簽名
- 數(shù)字證書
- PKI應(yīng)用和訪問控制
 
開篇趣味例子:摩斯密碼
有兩種“符號”用來表示字元:劃(—)和點(diǎn)(·),或分別叫嗒(Dah)和滴(Dit)或長和短
I Miss You
密碼學(xué)發(fā)展史
密碼學(xué)發(fā)展階段
- 1949年之前 密碼學(xué)是一門藝術(shù)
- 1949~1975年 密碼學(xué)成為科學(xué)
- 1976年以后 密碼學(xué)的新方向——公鑰密碼學(xué)
階段1 古典密碼
 公元前5世紀(jì),古斯巴達(dá)人用一條帶子纏繞在一根木棍上,沿木棍縱軸方向?qū)懞妹魑?#xff0c;解下來的帶子上就只有雜亂無章的密文字母。解密者只需找到相同直徑的木棍,再把帶子纏上去,沿木棍縱軸方向即可讀出有意義的明文。
 這種方式現(xiàn)代密碼學(xué)中仍然體現(xiàn)——行列變換。
公元前1世紀(jì),著名的愷撒密碼,被用于高盧戰(zhàn)爭中,這是一種簡單易行的單字母替代密碼。
 
 這種方式現(xiàn)代密碼學(xué)中仍然體現(xiàn)——移位。
阿伯提約在1467年發(fā)明了多字符加密法,阿伯提的創(chuàng)新在于對信息的不同部分使用不同的代碼。
 他在凱撒密碼原理的基礎(chǔ)上做了哪些改進(jìn)?在現(xiàn)代密碼算法中這種思想體現(xiàn)在——替換。而且這個替換表還是動態(tài)變化的。
16世紀(jì)中期,意大利的卡爾達(dá)諾發(fā)明了卡爾達(dá)諾漏格板,覆蓋在密文上,可從漏格中讀出明文,這是較早的一種分置式密碼。
 
 11世紀(jì),兵書《武經(jīng)總要》,中國歷史上第一部有關(guān)密碼的記述,介紹了一個小型卻名副其實的密碼本。
 假設(shè)雙方以《送杜少府之任蜀川》 “城闕輔三秦,風(fēng)煙望五津……”作為解碼密鑰。
 如果軍隊糧食將盡需要補(bǔ)充,前方將領(lǐng)就從密碼本中查出“請糧料” 的編碼“九”,而《送杜少府之任蜀川》中的第九字是“五”。于是請糧將領(lǐng)就將“五”字寫到一件普通公文書牒之中,并在字上加蓋印章。
 指揮機(jī)關(guān)接到公文后,查出蓋印章的“五”字在臨時約好的詩中列第九,再對照密碼本上的順序,就得知了前方需要糧草補(bǔ)充。
一戰(zhàn)前,密碼研究還只限于一個小領(lǐng)域,沒有得到各國應(yīng)有的重視。
 第一次世界大戰(zhàn)是世界密碼史上的第一個轉(zhuǎn)折點(diǎn)。 隨著戰(zhàn)爭的爆發(fā),各國逐漸認(rèn)識到密碼在戰(zhàn)爭中發(fā)揮的巨大作用,積極給予大力扶持,使密碼很快成為一個龐大的學(xué)科領(lǐng)域。
 第一次世界大戰(zhàn)進(jìn)行到關(guān)鍵時刻,英國破譯密碼的專門機(jī)構(gòu)“40號房間”利用繳獲的德國密碼本破譯了著名的“齊默爾曼電報”,促使美國放棄中立參戰(zhàn),改變了戰(zhàn)爭進(jìn)程。
第二次世界大戰(zhàn)爆發(fā)后, 世界各國開始重視對密碼破譯的研究工作,紛紛成立專門的研究和破譯機(jī)構(gòu),在戰(zhàn)爭中發(fā)揮重要的作用。德國U-505潛艇受到美海軍特遣大隊反潛深炸彈攻擊,受傷浮起后, 美軍繳獲了密碼機(jī)和大量明、密報, 并秘密將U-505潛艇拖回美國。 德軍誤認(rèn)為U-505潛艇沉沒海底而未換密碼。在歐戰(zhàn)結(jié)束前的11個月里,依靠破譯的密碼,美軍和同盟國軍隊共擊沉德國潛艇300多艘, 平均每天一艘,同時大大減少了自己船只的損失,對戰(zhàn)爭的勝利產(chǎn)生了重大影響。
1948年以前的密碼技術(shù)可以說是一種藝術(shù),而不是一種科學(xué),那時的密碼專家是憑直覺和信念來進(jìn)行密碼設(shè)計和分析的,而不是靠推理證明。1948年,C. E. Shannon 在貝爾系統(tǒng)技術(shù)雜志上發(fā)表論文《通信的數(shù)學(xué)理論》,創(chuàng)立了著名的新理論——信息論,標(biāo)志著密碼術(shù)到密碼學(xué)的轉(zhuǎn)變。
階段2 1949~1975
 計算機(jī)使得基于復(fù)雜計算的密碼成為可能
 主要特點(diǎn):數(shù)據(jù)的安全基于密鑰而不是算法的保密
不是基于算法的細(xì)節(jié)的安全性,這就意味著算法可以公開,也可以被分析,可以大量生產(chǎn)使用算法的產(chǎn)品,算法從貴族、戰(zhàn)爭走向商用。
 即使偷聽者知道你的算法也沒有關(guān)系;如果他不知道你使用的具體密鑰,他就不可能閱讀你的消息。
階段3 1976以后
- Diffie和Hellman發(fā)表的題為“密碼學(xué)新方向”文章,提出了“公鑰密碼”新體制。
- 1977年Rivest,Shamir & Adleman提出了RSA公鑰算法。
- 美國國家標(biāo)準(zhǔn)局NBS于1977年公布實施美國數(shù)據(jù)加密標(biāo)準(zhǔn)DES,保密學(xué)史上第一次公開加密算法,并廣泛應(yīng)用于商用數(shù)據(jù)加密。
- 90年代逐步出現(xiàn)橢圓曲線等其他公鑰算法
- 2001年 AES
密碼學(xué)發(fā)展階段(小結(jié))
自從人類有了戰(zhàn)爭,就有了密碼。
- 歷史上的戰(zhàn)爭,特別是兩次世界大戰(zhàn)對于保密學(xué)的理論
技術(shù)的發(fā)展起了巨大的推動作用。
- 從手工加密,到機(jī)械加密,到計算機(jī)加密
- 從基于算法安全,到基于密鑰安全
- 從面向貴族到面向平民
對稱密碼算法
數(shù)據(jù)加密的基本模型
 加密和解密算法的操作通常都是在一組密鑰的控制下進(jìn)行的,分別稱為加密密鑰(Encryption Key) 和解密密鑰(Decryption Key).
 
 數(shù)據(jù)加密的基本術(shù)語
- 消息被稱為明文(Plaintext)。用某種方法偽裝消息以隱藏它的內(nèi)容的過程稱為加密(Encrtption),被加密的消息稱為密文(Ciphertext),而把密文轉(zhuǎn)變?yōu)槊魑牡倪^程稱為解密 (Decryption),加密和解密要在密鑰的控制下進(jìn)行。
- 對明文進(jìn)行加密操作時所采用的一組規(guī)則稱作加密算法(Encryption Algorithm).
- 接收者對密文解密所采用的一組規(guī)則稱為解密算法(Decryption Algorithm).
對稱密碼算法
 對稱密碼算法(symmetric cipher):又稱傳統(tǒng)密碼算法(conventional cipher),就是加密密鑰和解密密鑰相同,或?qū)嵸|(zhì)上等同,即從一個易于推出另一個。又稱秘密密鑰算法或單密鑰算法 。
 特點(diǎn)
 加密速度快,便于硬件實現(xiàn)和大規(guī)模生產(chǎn)
 密鑰分配:必須通過保密的信道
 密鑰個數(shù):n(n-1)/2
 無法用來簽名和抗抵賴(沒有第三方公證時)
對稱密碼體制
 加密和解密使用相同的密鑰
 密鑰必須使用秘密的信道分配
 
DES
常見對稱密碼算法——DES概述
- 1973年美國國家標(biāo)準(zhǔn)局NBS(國家標(biāo)準(zhǔn)與技術(shù)研究所NIST的前身)公開征求國家密碼標(biāo)準(zhǔn)方案
- 1975年IBM公司首次提出方案
- 1977年被NIST確定為聯(lián)邦信息處理標(biāo)準(zhǔn)并命名為 DES
 曾經(jīng)是對稱密碼體制事實上的國際標(biāo)準(zhǔn)
- 輸入:64位明文分組、64位密鑰(8位校驗位)
- 輸出:64位密文分組
- 解密算法與加密算法相同
- 交替使用S-變換和P-變換,具有Feistel結(jié)構(gòu)特點(diǎn)
DES作為第一個廣泛應(yīng)用的加密標(biāo)準(zhǔn),是一種最有代表性的對稱分組密碼算法。詳細(xì)研究這一算法的基本原理對于掌握對稱分組密碼理論很有意義。
DES加密過程:
 
自從DES問世至今,對它多次的分析研究。利用窮舉法搜索攻擊,只能說明56位的密鑰可能太少;DES的迭代次數(shù)可能太少。3DES算法通過增加密鑰長度提高安全性。
雙密鑰3DES
 延長密鑰到64*2=128位
3密鑰3DES
 延長密鑰到64*3=192位
AES
AES算法——Rijndael
- 1997年4月15日,美國ANSI發(fā)起征集AES(advanced encryption standard)的活動,并為此成立了AES工作小組。
- 1997年9月12日,美國聯(lián)邦登記處公布了正式征集AES候選算法的通告。對AES的基本要求是: 比三重DES快、至少與三重DES一樣安全、數(shù)據(jù)分組長度為128比特、密鑰長度為128/192/256比特。
- 1998年8月12日,在首屆AES候選會議(first AES candidate conference)上公布了AES的15個候選算法,任由全世界各機(jī)構(gòu)和個人攻擊和評論。
- 1999年3月,在第2屆AES候選會議(從15個候選算法中選出了5個。分別是RC6、Rijndael、SERPENT、Twofish和MARS。
- 2000年10月2日,NIST宣布Rijndael作為新的AES。經(jīng)過3年多的討論,Rijndael終于脫穎而出。
- Rijndael由比利時的Joan Daemen和Vincent Rijmen設(shè)計。算法有很好的抵抗差分密碼分析及線性密碼分析的能力。
 
但是對于對稱密鑰體制,加密方如何將密鑰安全傳遞給解密方?兩人共享一個密鑰,信息泄露算誰的?公鑰密碼使得發(fā)送端和接收端無密鑰傳輸?shù)谋C芡ㄐ懦蔀榭赡堋_@里引入非對稱密碼算法。
非對稱密碼算法
非對稱密碼算法:
- 每個通信實體有一對密鑰(公鑰 ,私鑰 )。公鑰公開,私鑰保密。
- 甲向乙發(fā)送消息,用乙的公鑰加密
- 乙收到密文后,用自己的私鑰解密
 
RSA
上述運(yùn)算中,23和7作為兩個密鑰,公開一個,另一個作為私鑰即可。
 例如:公鑰為7,私鑰為23,則即使攻擊者知道7、187和密文11,但如果他不知道私鑰23,那么他無論如何也算不出明文88。
- 1977年由美國麻省理工學(xué)院三位教授Ron Rivest、Adi Shamir和Len Adleman發(fā)明的一種基于因子分解的指數(shù)函數(shù)的單向陷門函數(shù),于1978年正式公布。它是迄今為止理論上最為成熟完善的公鑰密碼體制。
- RSA是一種分組加密算法。RSA密鑰一般推薦使用1024位,CA采用2048位長的密鑰。分組長度小于1024位。
- 目前應(yīng)用最廣泛的公鑰密碼算法(最重要的算法)。
- 只在美國申請專利,且已于2000年9月到期。
RSA算法
 
 RSA示例1
 
 
 RSA示例2
 
 
 RSA為什么不能被破解
 
 
 密碼算法小結(jié)
 
 案例剖析——密碼算法的運(yùn)用
 Alice想將一份大數(shù)據(jù)量的合同文件通 Internet 發(fā)給遠(yuǎn)在國外的Bob,此合同文件對雙方非常重要,不能有絲毫差錯,而且此文件絕對不能被其他人得知其內(nèi)容。如何才能實現(xiàn)這個合同的安全發(fā)送?
- Q1:到底應(yīng)該用什么加密技術(shù),才能使合同傳送既安全又快速呢 ?
- Alice使用對稱加密算法對合同進(jìn)行加密,每次產(chǎn)生一個新的隨機(jī)密鑰(會話密鑰, 用會話密鑰加密信息
- Q2:Bob怎樣才能安全地得到其會話密鑰呢?用電話通知,若電話被竊聽,通過 Internet 發(fā)此密鑰給Bob ,可能被黑客截獲,怎么辦 ?
- 使用非對稱加密算法傳遞會話密鑰
- Q3:這樣是不是就安全了?會不會出差錯?
- 如果黑客截獲Alice發(fā)的信息,雖不能解密,但可以加密一份假文件冒充Alice發(fā)給Bob ,Bob并不知道這不是Alice發(fā)給他的,怎么辦 ?
這里引入數(shù)字簽名。
- 公鑰E和私鑰D可反過來用
- 用私鑰D加密,用公鑰E解密
- 因為公鑰是公開的,所以用私鑰D加密不是為了保密,那么是為了什么呢?是為了證明信息是本人發(fā)出的。即抗抵賴。
- 因為私鑰D加密的數(shù)據(jù)只能用公鑰解密。
- 那么反過來可以這樣認(rèn)為,只要公鑰E能解密出來的東西一定是私鑰D加密的。
- 而私鑰只有一個人保存,不可能泄漏給第三方。
- 那這種機(jī)制就可以做為數(shù)字簽名來用,就如同個人在支票上手寫簽名一樣。不可能有人仿造出來。
數(shù)字簽名
數(shù)字簽名不可修改性
- 數(shù)字簽名就是私鑰加密的個人信息
- 任何人都能用公鑰將這個信息解密出來。
- 那么可否有人將信息解密出來進(jìn)行修改呢?這是可能的。但解密出來他沒有私鑰如何加密成數(shù)字簽名呢?
- 現(xiàn)在數(shù)字簽名具有法律效應(yīng),經(jīng)常用在網(wǎng)上銀行支付上。
- 數(shù)字簽名中個人信息比較長,采用非對稱密鑰加密算法計算慢,如何解決?
Hash算法——信息摘要
 
 特性
- 不可逆,單向性
- 運(yùn)算上的唯一性
- 對任何長度的信息進(jìn)行哈希后,結(jié)果都是一個固定長度的數(shù)據(jù)摘要
- 原始信息中一個字節(jié)的改變會導(dǎo)致摘要后的結(jié)果發(fā)生變化
- 常用Hash算法:MD5、SHA、SHA-1
數(shù)字簽名和hash算法相結(jié)合
 Bob看不懂,因為反推不回明文
 
 但合同不能讓第三方知道, 不能發(fā)明文。
 加密和數(shù)字簽名結(jié)合
 
 密碼算法小結(jié)
 
數(shù)字證書
 Q:這樣是不是就安全了?會不會出差錯?
- 用RSA算法加密AES算法密鑰是安全的關(guān)鍵所在
- Alice用Bob的公鑰加密AES算法密鑰
- Bob用Alice公鑰來驗證簽名
- 公鑰如何交換?
 
 Q:公鑰會不會被替換,怎么證明是對方的公鑰?
存在“中間人攻擊”
 
- Alice和Bob都以為是直接和對方進(jìn)行秘密通信
- 實際上所有的信息都被Tom翻譯過了
- 如何確認(rèn)身份?
 
 這里引入數(shù)字證書。
 
 CA(Certification Authority)
- CA----認(rèn)證中心
- CA為電子商務(wù)、電子政務(wù)等網(wǎng)絡(luò)環(huán)境中各個實體頒發(fā)數(shù)字證書,以證明身份的真實性,并負(fù)責(zé)在交易中檢驗和管理證書。
- CA對數(shù)字證書的簽名使得第三者不能偽造和篡改證書。
- 權(quán)威性、可信賴性、公證性的第三方機(jī)構(gòu)。
 
 CA簽名
- 數(shù)字證書信息經(jīng)過hash算法得到摘要1
- CA用自己的私鑰對摘要進(jìn)行簽名
- 簽名附在數(shù)字證書信息后面
- 接收方用CA公鑰解密得到摘要1
- 接收方將數(shù)字證書信息進(jìn)行hash得到摘要2
- 比對摘要1和摘要2驗證
 CA結(jié)構(gòu)
 數(shù)字證書的格式遵循X.509 V3國際標(biāo)準(zhǔn)
 
完整流程
 
PKI應(yīng)用和訪問控制
- PKI,Public Key infrastructure ,公鑰基礎(chǔ)設(shè)施
- PKI是一組組件和規(guī)程:是一個用公鑰概念和技術(shù)來實施和提供安全服務(wù)的具有普適性的安全基礎(chǔ)設(shè)施
- PKI提供的服務(wù):認(rèn)證服務(wù) 完整性 保密性
PKI/CA發(fā)展歷程
- 20世紀(jì)80年代,美國學(xué)者提出了PKI的概念
- 為了推進(jìn)PKI在聯(lián)邦政府范圍內(nèi)的應(yīng)用,1996年就成立了聯(lián)邦PKI指導(dǎo)委員會
- 1996年,以Visa、MastCard、IBM、Netscape、MS、數(shù) 家銀行推出SET協(xié)議,推出CA和證書概念
- 1999年,PKI論壇成立
- 2000年4月,美國國防部宣布要采用PKI安全倡議方案
- 2001年6月13日,在亞洲和大洋洲推動PKI進(jìn)程的國際組織 宣告成立,該國際組織的名稱為“亞洲PKI論壇”,其宗旨 是在亞洲地區(qū)推動PKI標(biāo)準(zhǔn)化,為實現(xiàn)全球范圍的電子商務(wù)奠定基礎(chǔ)
PKI就在我們身邊:
 
 一般的證書產(chǎn)生流程
 實例
- 中國金融認(rèn)證中心( China Finance Certification Authority 縮寫CFCA ),是由中國人民銀行牽頭,聯(lián)合中國工商銀行、等十二家商業(yè)銀行參加建設(shè),由銀行卡信息交換總中心承建的。
- ICAO(國際民用航空組織International Civil Aviation Organization)制定了PKI數(shù)字證書的電子護(hù)照標(biāo)準(zhǔn)
- 每個香港公民一人一個智能身份證,每個智能身份證上配發(fā)一個全球通用的由香港郵政局頒發(fā)的個人數(shù)字證書
- 認(rèn)證機(jī)構(gòu)的嚴(yán)格層次結(jié)構(gòu)
網(wǎng)銀安全
 柜臺注冊,開通網(wǎng)銀手機(jī)銀行 ,獲得U盾
 網(wǎng)銀插件下載,手機(jī)銀行登錄
- 用戶名、登錄密碼安全存儲和傳輸?
- 網(wǎng)銀插件下載:安全鍵盤、銀行數(shù)字證書、安全插件
網(wǎng)銀登錄,查詢賬戶余額
- 安全機(jī)制?需不需要簽名?數(shù)字證書?
- 余額查詢銀行要簽名并加密,會話密鑰由客戶端產(chǎn)生
轉(zhuǎn)賬,插入U盾
- U盾里是什么?安全機(jī)制?數(shù)字證書?
- 轉(zhuǎn)賬需要用戶簽名,U盾里是用戶的私鑰和用戶數(shù)字證書。
HTTPS(HTTP over SSL)
- SSL(Secure Sockets Layer)協(xié)議Internet網(wǎng)上安全通訊與交易的標(biāo)準(zhǔn), 瀏覽器就支持此協(xié)議
- SSL協(xié)議使用通訊雙方的客戶證書以及CA根證書,在通訊雙方間建立起了一條安全的、可信任的通訊通道。它具備以下基本特征:信息保密性、信息完整性、相互鑒定。
- vTLS(Transport Layer Security,傳輸層安全協(xié)議 )是SSL3.0的后續(xù)版本,可以理解為SSL3.1
單向SSL功能
 
 雙向認(rèn)證SSL協(xié)議的具體過程
 ① 瀏覽器發(fā)送一個連接請求給安全服務(wù)器。
 ② 服務(wù)器將自己的證書等信息發(fā)送給客戶瀏覽器。
 ③ 客戶瀏覽器檢查證書是否是由自己信賴的 CA 中心所簽發(fā)的。如果是,就繼續(xù)執(zhí)行協(xié)議;如果不是,給出警告消息:警告客戶這個證書不是可以信賴的,詢問客戶是否需要繼續(xù)。
 ④ 瀏覽器比較證書里的消息,例如域名和公鑰,與服務(wù)器剛剛發(fā)送的相關(guān)消息是否一致,如果是一致的,客戶瀏覽器認(rèn)可這個服務(wù)器的合法身份。
 ⑤ 服務(wù)器要求客戶發(fā)送客戶自己的證書。收到后,服務(wù)器驗證客戶的證書,如果沒有通過驗證,拒絕連接;如果通過驗證,服務(wù)器獲得用戶的公鑰。(單向認(rèn)證沒有)
SET協(xié)議
 SET協(xié)議是Master Card和Visa聯(lián)合Netscape,Microsoft等公司,于1997年6月1日開發(fā)的協(xié)議,被稱為安全電子交易協(xié)議,保證了用戶在互聯(lián)網(wǎng)上使用信用卡進(jìn)行交易時,信息和數(shù)據(jù)的安全。
 
總結(jié)
以上是生活随笔為你收集整理的密码学基础部分大归纳(密码学发展史,对称、非对称密码算法,数字签名、数字证书)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
 
                            
                        - 上一篇: 前端学习(1364):学生档案信息管理6
- 下一篇: 前端学习(1184):数据绑定指令
