Hello,密碼學:第一部分,密碼學的基本概念

密碼學有著深刻的數(shù)學背景,看似一門高高在上的貴族知識體系。能夠吧啦吧啦一些密碼學的名詞術語,有助于迅速建立滿滿的逼格。

掌握密碼的鑰匙

因此,在這套筆記的第一部分,匯總一些基本的密碼學概念:

1)密碼
2)單向散列
3)消息認證碼
4)數(shù)字簽名
5)數(shù)字證書
6)偽隨機數(shù)生成器
7)密碼學工具箱
8)隱寫術
9)正確認知信息安全

為了方便理解,定義幾個角色,后面會時不時的進行引用。其實,他(她)們都是經(jīng)典密碼學著作中約定俗成的著名人物。

  • Alice:漂亮姑娘
  • Bob:帥氣小伙
  • Eve:偷窺癖,熱衷于竊聽通信內(nèi)容
  • Mallory:破壞王,喜歡偽造信息,妨礙正常通信
  • Trent:可信的第三方
  • Victor:驗證者

基本概念一:密碼

Alice 和 Bob 正在熱戀中,難免發(fā)送一些肉麻的消息。消息會在多臺通信設備間中轉,很有可能被 Eve 偷看。于是 Alice 和 Bob 對消息進行了加密處理,即使被 Eve 竊聽,其獲取的也是密文,無法得知具體的消息內(nèi)容。也就是說,密碼保證了信息的 機密性

從明文生成密文的步驟,稱為 加密算法 ,將密文還原為明文的步驟,稱為 解密算法 ,加密算法和解密算法統(tǒng)稱為 密碼算法 。

密碼算法由兩個重要的部分組成,一個是計算步驟,一個是密鑰,基本原理如下圖所示:

密碼算法

在現(xiàn)代密碼算法思想中,密碼算法應該可以公開,但密鑰必須嚴格保密。這就好比門鎖制造商會用相同方法批量生產(chǎn)門鎖,但每個門鎖都配套獨有的鑰匙,一旦鑰匙丟失,級別再強的門鎖也可以被輕易打開。

密碼算法分為 對稱密碼算法非對稱密碼算法 ,后者也常常稱為 公鑰密碼算法 ,二者的本質區(qū)別是 加密與解密過程是否使用相同的密鑰。

對稱密碼算法:加密和解密時采用同一密鑰,如下圖所示:

對稱密碼算法

非對稱密碼算法:加密和解密時采用不同密鑰,如下圖所示:

非對稱密碼算法

非對稱密碼算法體系是20世紀70年代出現(xiàn)的,而現(xiàn)代計算機和互聯(lián)網(wǎng)安全體系,很大程度是基于非對稱密碼算法體系構建起來的。當然,現(xiàn)代安全體系往往會結合非對稱密碼算法和對稱密碼算法的優(yōu)勢,形成了混合密碼算法體系。

基本概念二:單項散列

如果你仔細觀察,在一些提供軟件下載的網(wǎng)站中,除了提供二進制的目標文件,還往往聲明一個MD5或SHA字符串。這說明軟件發(fā)布者具備安全意識,擔心有人篡改其發(fā)布的軟件,在其中植入一些惡意程序。這個字符串就是用單項散列函數(shù)計算出來的散列值,散列值也被形象的稱為 “數(shù)據(jù)指紋”

現(xiàn)實生活中,偵查員通過將犯罪現(xiàn)場遺留的指紋與嫌疑人的指紋進行比對來確定是否存在關聯(lián),而計算機也可以利用數(shù)據(jù)指紋來確認兩段二進制數(shù)據(jù)是否完全一致。我們不需要一一對比二進制數(shù)據(jù),只需要一一比對其數(shù)據(jù)指紋即可。單項散列函數(shù)能夠保證不同的二進制序列產(chǎn)生不同的數(shù)據(jù)指紋 。

總結成一句話:單項散列函數(shù)保證的不是數(shù)據(jù)的機密性,而是數(shù)據(jù)的完整性,或者說不可篡改性。

基本概念三:消息認證碼

消息認證碼(MAC,Message Authentication Code)是一種能夠保證數(shù)據(jù)完整性和提供認證的密碼技術,其主要作用是在保證數(shù)據(jù)完整性之外,確認 消息是否來自期望的通信對象 。

基本概念四:數(shù)字簽名

在通信的過程中,保證了數(shù)據(jù)完整性,對通信對象進行了認證還不夠,通信雙方還可能對發(fā)送的消息進行 “否認” 。比如 Alice 向 Bob 寫了一封信,但后來又有點后悔,謊稱“當初根本沒有寫過這封信”,這種行為就稱為“否認”。

能夠確保完整性、提供認證并防止否認的技術,就是 “數(shù)字簽名” 。顧名思義,就是對自己發(fā)送的內(nèi)容進行簽字,只不過采用的是密碼技術。Alice 在信的內(nèi)容之后簽上自己的名字發(fā)給 Bob,Bob 收到后對改簽名進行 簽名驗證 ,驗證通過后,就代表契約生效,Alice 事后也無法進行否認。

我之前參考大牛阮一峰的Blog,寫過一篇關于數(shù)字簽名和數(shù)字證書的筆記,文章鏈接為:《數(shù)字簽名與數(shù)字證書》

  1. Bob 有兩把鑰匙,一把叫做公鑰,一把叫做私鑰。
  1. Bob 把公鑰給了他的朋友們,Pat、Doug、Susan 每人都有一把。
  1. Susan 想給 Bob 寫一封密信,用 Bob 的公鑰進行加密即可。而 Bob 用私鑰進行解密。只要 Bob 的私鑰不泄漏,別人就無法打開 Susan 的這封密信。
  1. Bob 給 Susan 回信,為了說明這封信就是自己寫的,需要給這封信加蓋一個印記,好比皇帝下的圣旨必須加印玉璽是一個道理:
  • 第一步,Bob 對回信內(nèi)容進行 Hash 計算,生成 Digest(摘要)。這里要說明一下,一旦有人篡改了信件內(nèi)容,Hash 算法保證了摘要一定會發(fā)生變化,而且也不可能通過摘要推算信件內(nèi)容。
  • 第二步,Bob 用私鑰對這個摘要進行加密,生成了數(shù)字簽名。
  • 第三步,Bob 把數(shù)字簽名添加到信件上,好比增加一句 “此致,XXX敬上”。
  • 第四步,Bob 把簽了名的信件發(fā)送給 Susan。

  • 第五步,Susan 收到信件后,用 Bob 的公鑰解密數(shù)字簽名,得到信件摘要 A,同時也對信件內(nèi)容再進行 Hash 計算得到一份摘要 B,對比兩份摘要,如果內(nèi)容完全一致,證明信件內(nèi)容沒有被篡改過,而且確實由 Bob 發(fā)出。

基本概念五:數(shù)字證書

通過數(shù)字證書,能夠證實信件來源于可信的一方,然而,如果 Doug 想假冒 Bob 和 Susan 進行通信怎么辦?繼續(xù)沿用上一節(jié)的例子:

  1. Doug 可能會偷偷使用 Susan 的電腦,將 Bob 的公鑰換成自己的公鑰。而 Susan 沒有發(fā)覺使用的公鑰已經(jīng)是 Doug 的了,而 Doug 就用自己的私鑰進行上述的數(shù)字簽名過程,偽裝 Bob 與 Susan 進行通信。

  2. 而 Susan 終于發(fā)現(xiàn)事情不對勁,感覺自己使用的公鑰有問題,于是她想到一個辦法,希望 Bob 能夠到一個權威機構對自己的公鑰進行公證,這個權威結構也就是 “證書中心(Certificate Authority,簡稱CA)” 。證書中心于是用自己的私鑰,對 Bob 的公鑰和一些相關信息一起加密,生成 "數(shù)字證書"(Digital Certificate)。

  1. Bob 拿到數(shù)字證書以后,就可以放心了。以后再給蘇珊寫信,只要在簽名的同時,再附上數(shù)字證書就行了。而 Susan 收到信件后,也先用 CA 的公鑰解開數(shù)字證書,拿到經(jīng)過認證的公鑰,再用這個公鑰去驗證數(shù)字簽名,以此來確認是否真的來自 Bob。

這就是數(shù)字證書作用。數(shù)字證書好比駕照,駕照上記錄了駕駛員的姓名、年齡、出生日期等信息,并由交管部門在上面蓋章,以示經(jīng)過權威部門鑒定,可以信任。同理,數(shù)字證書也同樣記錄了姓名、組織、電子郵箱、以及屬于此人的 公鑰 ,并由權威的 認證機構(Certification Authority,CA) 施加數(shù)字簽名,也就是說,權威認證機構認定該公鑰的確屬于證書上記錄的人或組織。

實際情況中,往往對數(shù)字證書申請者身份的認證,會由一個專門的 注冊機構(Registration Authority,RA) 進行處理,以便讓 CA 能專注于數(shù)字證書的制發(fā)和維護。RA 通過與金融機構,如信用報告機構進行合作,對申請人提供的業(yè)務和身份信息進行核實,核實通過后通知 CA 頒發(fā)相應的證書。

CA機構

基本概念六:偽隨機數(shù)生成器

偽隨機數(shù)生成器(Pseudo Random Number Generator,PRNG)是一種能夠模擬產(chǎn)生隨機數(shù)序列的算法。隨機數(shù)是密碼算法的重要技術基礎,承擔著 生成密鑰 的重要指責。如果偽隨機數(shù)生成算法不好,就容易被竊聽者推測出來,對通信的機密性產(chǎn)生威脅。

基本概念七:密碼學工具箱

“密碼學家的工具箱” 這個比喻出自布魯斯.施奈爾寫作的《網(wǎng)絡信息安全的真相》一書。如下圖所示,密碼學的幾項技術在信息安全中發(fā)揮著至關重要的作用,解決了不同維度的威脅問題,讓我們再羅列一下這些技術:

  • 對稱密碼
  • 非對稱密碼
  • 單項散列函數(shù)
  • 消息認證碼
  • 數(shù)字簽名
密碼學家的工具箱

基本概念八:隱寫術

為了安全的進行通信,人們進行了很多的發(fā)明,而密碼學的本質是一種讓信息變得無法解讀的技術。還有一種叫做隱寫術的技術,則走的是另外一個路徑,它不是讓消息內(nèi)容變得無法解讀,而是將真正的消息巧妙的進行隱藏,是信息技術的“障眼法”。

舉一個小例子(抄自《圖解密碼技術》,結城浩):

-- 我們先準備一段話
-- 很容易看懂的就可以
-- 喜聞樂見的當然更好
-- 歡迎你嘗試將另一句話嵌在這段話中
-- 你會發(fā)現(xiàn)這其實就是一段隱寫術

隱寫術是一門古老的藝術,遠不是上面寫的這么簡單,是一個非常有意思的領域。將隱寫術與密碼技術相結合,揚長避短,能夠為帶來更強大的信息安全保障,后面有機會我再更深入的學習下。

基本概念九:正確認知信息安全

這里寫的一些內(nèi)容可能會有悖于常識,但細細品味后,更會覺得密碼學是一個有趣的領域。

第一、不要使用保密的密碼算法
關于秘密,歷史和生活告訴我們,越少的人知道,就越安全。然而,這個經(jīng)驗用在密碼學中卻不適用,主要有兩個原因:

  1. 密碼的算法早晚會公諸于世,一旦到了那一天,依靠對密碼算法本身保密而建立的安全體系將土崩瓦解,而那些公開密碼算法從一開始就沒想著要保密,因此算法的暴露根本不影響其安全強度。這其實是一種思想,現(xiàn)代密碼體系正是基于這個思想構建的。
  2. 依靠個人或某個組織開發(fā)高強度的密碼算法是非常困難的。世界上公認的高強度密碼算法,幾乎都是經(jīng)過密碼破譯者長期嘗試破解未果而生存帶來的。因此,如果自認為偷偷搞出來的一套“不為人知”的密碼算法具有更高的安全性,其實是有點自不量力了。

第二,使用低強度的密碼比不進行任何加密更危險
這觀點更讓人懵逼了。其實這還是在講述一個思想,那就是人們?nèi)菀淄ㄟ^“密碼”這個詞獲得一種”錯誤的安全感”,我們必須清醒的認識到 信息被加密 != 安全強度高 這個道理。使用低強度的密碼,自以為獲得了安全級別,在處理機密信息時,意識深處會放棄警惕性,這是最危險的。

第三,任何密碼總有一天會被破解
如果有人向你推銷一種不可能被破解的密碼體系時,你一定要打起精神,不要被其欺騙。當然,嚴格來說,一次性密碼本 是絕對不會被破解的(原因在后面的文章中講述),然而這種密碼技術是不具備實際用途的;還有一種可能會實現(xiàn)理想的途徑 -- 量子密碼,只是現(xiàn)在還為時過早。不要忘記,擁有了量子武器的盾牌,面臨的也將是被量子武裝的長矛,輸贏還是未知。

第四,密碼只是信息安全的一部分
水流的聰明之處在于,它會巧妙的繞開石頭。攻擊者面對密碼技術時,也未必就會選擇正面強攻。也許繞道攻擊信息持有者的電腦,直接獲取加密前或解密后的文件更簡單。比起“騙子”,再強大的CPU也會顯得很傻。結城浩在《圖解密碼技術中》說的很棒:

要保證良好的安全性,就需要理解“系統(tǒng)”這一概念本身的性質。復雜的系統(tǒng)就像一根由無數(shù)環(huán)節(jié)相連組成的鏈條,如果用力拉,鏈條就會從其中最脆弱的環(huán)節(jié)斷開。因此,系統(tǒng)的強度取決于其中最脆弱的環(huán)節(jié)的強度。

最錯弱的環(huán)節(jié)并不是密碼,而是人。

以上,就是密碼學的基本概念。


我喜歡的民謠女歌手-邵夷貝
最后編輯于
?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內(nèi)容

  • 前言 最近在面試中被問到了HTTPS的相關問題,加上密碼學也剛好學到公鑰密碼學,我就趁熱打鐵,整理一下HTTPS相...
    卓三陽閱讀 3,193評論 0 5
  • 一、準備知識 在開始介紹前,需要首先了解一下消息摘要、數(shù)字簽名、數(shù)字證書的知識 1、消息摘要 - Message ...
    浪夠_閱讀 2,847評論 1 2
  • 在深入學習區(qū)塊鏈時,不可避免的需要了解密碼學。區(qū)塊鏈算是對密碼學的一次整合運用,雖然并無太多創(chuàng)新的密碼算法,但也值...
    Kerwong閱讀 44,792評論 4 25
  • 本文轉載,出處如下:數(shù)字證書原理 文中首先解釋了加密解密的一些基礎知識和概念,然后通過一個加密通信過程的例子說明了...
    隨安居士閱讀 1,814評論 1 8
  • 林沖命真好 文/茹 林沖,江湖人稱“豹...
    姣俠閱讀 4,594評論 2 6

友情鏈接更多精彩內(nèi)容