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