密碼學有著深刻的數(shù)學背景华烟,看似一門高高在上的貴族知識體系。能夠吧啦吧啦一些密碼學的名詞術(shù)語持灰,有助于迅速建立滿滿的逼格盔夜。
因此,在這套筆記的第一部分堤魁,匯總一些基本的密碼學概念:
1)密碼
2)單向散列
3)消息認證碼
4)數(shù)字簽名
5)數(shù)字證書
6)偽隨機數(shù)生成器
7)密碼學工具箱
8)隱寫術(shù)
9)正確認知信息安全
為了方便理解喂链,定義幾個角色,后面會時不時的進行引用妥泉。其實椭微,他(她)們都是經(jīng)典密碼學著作中約定俗成的著名人物。
- Alice:漂亮姑娘
- Bob:帥氣小伙
- Eve:偷窺癖涛漂,熱衷于竊聽通信內(nèi)容
- Mallory:破壞王赏表,喜歡偽造信息,妨礙正常通信
- Trent:可信的第三方
- Victor:驗證者
基本概念一:密碼
Alice 和 Bob 正在熱戀中匈仗,難免發(fā)送一些肉麻的消息瓢剿。消息會在多臺通信設(shè)備間中轉(zhuǎn),很有可能被 Eve 偷看悠轩。于是 Alice 和 Bob 對消息進行了加密處理间狂,即使被 Eve 竊聽,其獲取的也是密文火架,無法得知具體的消息內(nèi)容鉴象。也就是說,密碼保證了信息的 機密性 何鸡。
從明文生成密文的步驟纺弊,稱為 加密算法 ,將密文還原為明文的步驟骡男,稱為 解密算法 淆游,加密算法和解密算法統(tǒng)稱為 密碼算法 。
密碼算法由兩個重要的部分組成,一個是計算步驟犹菱,一個是密鑰拾稳,基本原理如下圖所示:
在現(xiàn)代密碼算法思想中,密碼算法應(yīng)該可以公開腊脱,但密鑰必須嚴格保密访得。這就好比門鎖制造商會用相同方法批量生產(chǎn)門鎖,但每個門鎖都配套獨有的鑰匙陕凹,一旦鑰匙丟失悍抑,級別再強的門鎖也可以被輕易打開。
密碼算法分為 對稱密碼算法 和 非對稱密碼算法 捆姜,后者也常常稱為 公鑰密碼算法 传趾,二者的本質(zhì)區(qū)別是 加密與解密過程是否使用相同的密鑰。
對稱密碼算法:加密和解密時采用同一密鑰泥技,如下圖所示:
非對稱密碼算法:加密和解密時采用不同密鑰浆兰,如下圖所示:
非對稱密碼算法體系是20世紀70年代出現(xiàn)的,而現(xiàn)代計算機和互聯(lián)網(wǎng)安全體系珊豹,很大程度是基于非對稱密碼算法體系構(gòu)建起來的簸呈。當然,現(xiàn)代安全體系往往會結(jié)合非對稱密碼算法和對稱密碼算法的優(yōu)勢店茶,形成了混合密碼算法體系蜕便。
基本概念二:單項散列
如果你仔細觀察,在一些提供軟件下載的網(wǎng)站中贩幻,除了提供二進制的目標文件轿腺,還往往聲明一個MD5或SHA字符串。這說明軟件發(fā)布者具備安全意識丛楚,擔心有人篡改其發(fā)布的軟件族壳,在其中植入一些惡意程序。這個字符串就是用單項散列函數(shù)計算出來的散列值趣些,散列值也被形象的稱為 “數(shù)據(jù)指紋” 仿荆。
現(xiàn)實生活中,偵查員通過將犯罪現(xiàn)場遺留的指紋與嫌疑人的指紋進行比對來確定是否存在關(guān)聯(lián)坏平,而計算機也可以利用數(shù)據(jù)指紋來確認兩段二進制數(shù)據(jù)是否完全一致拢操。我們不需要一一對比二進制數(shù)據(jù),只需要一一比對其數(shù)據(jù)指紋即可舶替。單項散列函數(shù)能夠保證不同的二進制序列產(chǎn)生不同的數(shù)據(jù)指紋 令境。
總結(jié)成一句話:單項散列函數(shù)保證的不是數(shù)據(jù)的機密性,而是數(shù)據(jù)的完整性顾瞪,或者說不可篡改性展父。
基本概念三:消息認證碼
消息認證碼(MAC返劲,Message Authentication Code)是一種能夠保證數(shù)據(jù)完整性和提供認證的密碼技術(shù),其主要作用是在保證數(shù)據(jù)完整性之外栖茉,確認 消息是否來自期望的通信對象 。
基本概念四:數(shù)字簽名
在通信的過程中孵延,保證了數(shù)據(jù)完整性吕漂,對通信對象進行了認證還不夠,通信雙方還可能對發(fā)送的消息進行 “否認” 尘应。比如 Alice 向 Bob 寫了一封信惶凝,但后來又有點后悔,謊稱“當初根本沒有寫過這封信”犬钢,這種行為就稱為“否認”苍鲜。
能夠確保完整性、提供認證并防止否認的技術(shù)玷犹,就是 “數(shù)字簽名” 混滔。顧名思義,就是對自己發(fā)送的內(nèi)容進行簽字歹颓,只不過采用的是密碼技術(shù)坯屿。Alice 在信的內(nèi)容之后簽上自己的名字發(fā)給 Bob,Bob 收到后對改簽名進行 簽名驗證 巍扛,驗證通過后领跛,就代表契約生效,Alice 事后也無法進行否認撤奸。
我之前參考大牛阮一峰的Blog吠昭,寫過一篇關(guān)于數(shù)字簽名和數(shù)字證書的筆記,文章鏈接為:《數(shù)字簽名與數(shù)字證書》
- Bob 有兩把鑰匙胧瓜,一把叫做公鑰矢棚,一把叫做私鑰。
- Bob 把公鑰給了他的朋友們贷痪,Pat幻妓、Doug、Susan 每人都有一把劫拢。
- Susan 想給 Bob 寫一封密信肉津,用 Bob 的公鑰進行加密即可。而 Bob 用私鑰進行解密舱沧。只要 Bob 的私鑰不泄漏妹沙,別人就無法打開 Susan 的這封密信。
- 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é)的例子:
Doug 可能會偷偷使用 Susan 的電腦翰撑,將 Bob 的公鑰換成自己的公鑰罩旋。而 Susan 沒有發(fā)覺使用的公鑰已經(jīng)是 Doug 的了,而 Doug 就用自己的私鑰進行上述的數(shù)字簽名過程眶诈,偽裝 Bob 與 Susan 進行通信涨醋。
而 Susan 終于發(fā)現(xiàn)事情不對勁,感覺自己使用的公鑰有問題逝撬,于是她想到一個辦法浴骂,希望 Bob 能夠到一個權(quán)威機構(gòu)對自己的公鑰進行公證,這個權(quán)威結(jié)構(gòu)也就是 “證書中心(Certificate Authority宪潮,簡稱CA)” 溯警。證書中心于是用自己的私鑰趣苏,對 Bob 的公鑰和一些相關(guān)信息一起加密,生成 "數(shù)字證書"(Digital Certificate)梯轻。
- Bob 拿到數(shù)字證書以后食磕,就可以放心了。以后再給蘇珊寫信喳挑,只要在簽名的同時芬为,再附上數(shù)字證書就行了。而 Susan 收到信件后蟀悦,也先用 CA 的公鑰解開數(shù)字證書,拿到經(jīng)過認證的公鑰氧敢,再用這個公鑰去驗證數(shù)字簽名日戈,以此來確認是否真的來自 Bob。
這就是數(shù)字證書作用孙乖。數(shù)字證書好比駕照浙炼,駕照上記錄了駕駛員的姓名、年齡唯袄、出生日期等信息弯屈,并由交管部門在上面蓋章,以示經(jīng)過權(quán)威部門鑒定恋拷,可以信任资厉。同理,數(shù)字證書也同樣記錄了姓名蔬顾、組織宴偿、電子郵箱、以及屬于此人的 公鑰 诀豁,并由權(quán)威的 認證機構(gòu)(Certification Authority窄刘,CA) 施加數(shù)字簽名,也就是說舷胜,權(quán)威認證機構(gòu)認定該公鑰的確屬于證書上記錄的人或組織娩践。
實際情況中,往往對數(shù)字證書申請者身份的認證烹骨,會由一個專門的 注冊機構(gòu)(Registration Authority翻伺,RA) 進行處理,以便讓 CA 能專注于數(shù)字證書的制發(fā)和維護展氓。RA 通過與金融機構(gòu)穆趴,如信用報告機構(gòu)進行合作,對申請人提供的業(yè)務(wù)和身份信息進行核實遇汞,核實通過后通知 CA 頒發(fā)相應(yīng)的證書未妹。
基本概念六:偽隨機數(shù)生成器
偽隨機數(shù)生成器(Pseudo Random Number Generator簿废,PRNG)是一種能夠模擬產(chǎn)生隨機數(shù)序列的算法。隨機數(shù)是密碼算法的重要技術(shù)基礎(chǔ)络它,承擔著 生成密鑰 的重要指責族檬。如果偽隨機數(shù)生成算法不好,就容易被竊聽者推測出來化戳,對通信的機密性產(chǎn)生威脅单料。
基本概念七:密碼學工具箱
“密碼學家的工具箱” 這個比喻出自布魯斯.施奈爾寫作的《網(wǎng)絡(luò)信息安全的真相》一書。如下圖所示点楼,密碼學的幾項技術(shù)在信息安全中發(fā)揮著至關(guān)重要的作用扫尖,解決了不同維度的威脅問題,讓我們再羅列一下這些技術(shù):
- 對稱密碼
- 非對稱密碼
- 單項散列函數(shù)
- 消息認證碼
- 數(shù)字簽名
基本概念八:隱寫術(shù)
為了安全的進行通信掠廓,人們進行了很多的發(fā)明换怖,而密碼學的本質(zhì)是一種讓信息變得無法解讀的技術(shù)。還有一種叫做隱寫術(shù)的技術(shù)蟀瞧,則走的是另外一個路徑沉颂,它不是讓消息內(nèi)容變得無法解讀,而是將真正的消息巧妙的進行隱藏悦污,是信息技術(shù)的“障眼法”铸屉。
舉一個小例子(抄自《圖解密碼技術(shù)》,結(jié)城浩):
我 -- 我們先準備一段話
很 -- 很容易看懂的就可以
喜 -- 喜聞樂見的當然更好
歡 -- 歡迎你嘗試將另一句話嵌在這段話中
你 -- 你會發(fā)現(xiàn)這其實就是一段隱寫術(shù)
隱寫術(shù)是一門古老的藝術(shù)切端,遠不是上面寫的這么簡單彻坛,是一個非常有意思的領(lǐng)域。將隱寫術(shù)與密碼技術(shù)相結(jié)合帆赢,揚長避短小压,能夠為帶來更強大的信息安全保障,后面有機會我再更深入的學習下椰于。
基本概念九:正確認知信息安全
這里寫的一些內(nèi)容可能會有悖于常識怠益,但細細品味后,更會覺得密碼學是一個有趣的領(lǐng)域瘾婿。
第一蜻牢、不要使用保密的密碼算法
關(guān)于秘密,歷史和生活告訴我們偏陪,越少的人知道抢呆,就越安全。然而笛谦,這個經(jīng)驗用在密碼學中卻不適用抱虐,主要有兩個原因:
- 密碼的算法早晚會公諸于世,一旦到了那一天饥脑,依靠對密碼算法本身保密而建立的安全體系將土崩瓦解恳邀,而那些公開密碼算法從一開始就沒想著要保密懦冰,因此算法的暴露根本不影響其安全強度。這其實是一種思想谣沸,現(xiàn)代密碼體系正是基于這個思想構(gòu)建的刷钢。
- 依靠個人或某個組織開發(fā)高強度的密碼算法是非常困難的。世界上公認的高強度密碼算法乳附,幾乎都是經(jīng)過密碼破譯者長期嘗試破解未果而生存帶來的内地。因此,如果自認為偷偷搞出來的一套“不為人知”的密碼算法具有更高的安全性赋除,其實是有點自不量力了阱缓。
第二,使用低強度的密碼比不進行任何加密更危險
這觀點更讓人懵逼了举农。其實這還是在講述一個思想茬祷,那就是人們?nèi)菀淄ㄟ^“密碼”這個詞獲得一種”錯誤的安全感”,我們必須清醒的認識到 信息被加密 != 安全強度高 這個道理并蝗。使用低強度的密碼,自以為獲得了安全級別秸妥,在處理機密信息時滚停,意識深處會放棄警惕性,這是最危險的粥惧。
第三键畴,任何密碼總有一天會被破解
如果有人向你推銷一種不可能被破解的密碼體系時,你一定要打起精神突雪,不要被其欺騙起惕。當然,嚴格來說咏删,一次性密碼本 是絕對不會被破解的(原因在后面的文章中講述)惹想,然而這種密碼技術(shù)是不具備實際用途的;還有一種可能會實現(xiàn)理想的途徑 -- 量子密碼督函,只是現(xiàn)在還為時過早嘀粱。不要忘記,擁有了量子武器的盾牌辰狡,面臨的也將是被量子武裝的長矛锋叨,輸贏還是未知。
第四宛篇,密碼只是信息安全的一部分
水流的聰明之處在于娃磺,它會巧妙的繞開石頭。攻擊者面對密碼技術(shù)時叫倍,也未必就會選擇正面強攻偷卧。也許繞道攻擊信息持有者的電腦豺瘤,直接獲取加密前或解密后的文件更簡單。比起“騙子”涯冠,再強大的CPU也會顯得很傻炉奴。結(jié)城浩在《圖解密碼技術(shù)中》說的很棒:
要保證良好的安全性,就需要理解“系統(tǒng)”這一概念本身的性質(zhì)蛇更。復雜的系統(tǒng)就像一根由無數(shù)環(huán)節(jié)相連組成的鏈條瞻赶,如果用力拉,鏈條就會從其中最脆弱的環(huán)節(jié)斷開派任。因此砸逊,系統(tǒng)的強度取決于其中最脆弱的環(huán)節(jié)的強度。
最錯弱的環(huán)節(jié)并不是密碼掌逛,而是人师逸。
以上,就是密碼學的基本概念豆混。