Hello,密碼學(xué):第一部分,密碼學(xué)的基本概念

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

掌握密碼的鑰匙

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

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

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

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

基本概念一:密碼

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

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

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

密碼算法

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

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

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

對稱密碼算法

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

非對稱密碼算法

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

基本概念二:單項散列

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

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

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

基本概念三:消息認(rèn)證碼

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

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

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

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

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

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

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

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

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

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

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

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

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

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

CA機構(gòu)

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

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

基本概念七:密碼學(xué)工具箱

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

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

基本概念八:隱寫術(shù)

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

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

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

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

基本概念九:正確認(rèn)知信息安全

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

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

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

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

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

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

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

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

以上,就是密碼學(xué)的基本概念。


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

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

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

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