密碼學(xué)初探

概述

花了一天多粗略的翻了《圖解密碼技術(shù)》,圖解系列真是入門神書,能夠迅速的建立起一門學(xué)科的體系,強(qiáng)烈推薦。


mark

一些基本的概念

密碼算法和密鑰

密碼算法和密鑰是分開的兩個(gè)概念。比如凱撒密碼中,將字母表中的字母平移這個(gè)操作是密碼算法,而平移的字母數(shù)量就是密鑰。

密鑰空間

在某個(gè)密碼算法下,所有的密鑰就是密鑰空間。

暴力破解

將密鑰空間中所有的密鑰全部試一遍,就是暴力破解。

重放攻擊

竊聽并保存A發(fā)往B的通信包,重復(fù)發(fā)送給B。

mark

此時(shí),Bob銀行會(huì)收到多次Alice銀行轉(zhuǎn)賬數(shù)據(jù),且每次驗(yàn)證都是正確的。消息認(rèn)證碼、數(shù)字簽名都不能防御

防御手段

  • 序號(hào):每個(gè)消息都有一個(gè)編號(hào)
  • 時(shí)間戳:發(fā)送者和接受者的時(shí)鐘必須一致,而且考慮通信的延遲,必須在時(shí)間的判斷上留下緩沖,于是多多少少還是會(huì)存在可以進(jìn)行重放攻擊的空間。
  • nonce:通信之前,接受者都向發(fā)送者發(fā)送一個(gè)一次性的隨機(jī)數(shù),稱為nonce,發(fā)送者在消息中包含這個(gè)nonce并計(jì)算MAC值。

密碼學(xué)家的工具箱

在本書中,最重要的概念就是密碼學(xué)家的工具箱,全書都是圍繞工具箱中的各個(gè)工具以及各個(gè)工具的相互關(guān)系來(lái)講述的。看懂了這個(gè)工具箱,密碼學(xué)就入門了,而后各個(gè)工具都是一門博大精深的學(xué)問(wèn),需要再花時(shí)間細(xì)細(xì)研讀。

  • 對(duì)稱密碼
  • 公鑰密碼
  • 單向散列函數(shù)
  • 消息認(rèn)證碼
  • 數(shù)字簽名
  • 偽隨機(jī)數(shù)生成器

下面是我認(rèn)為書中最重要的兩個(gè)圖:

mark

圖一:信息安全面臨的威脅和用來(lái)應(yīng)對(duì)的密碼技術(shù)

mark

圖二:各個(gè)密碼技術(shù)之間的關(guān)系

對(duì)稱密碼

定義

對(duì)稱密碼是指加密和解密時(shí)使用同一密鑰的方式。

例子

比如加密和解密都用異或的方式。(對(duì)同一個(gè)比特序列進(jìn)行兩次XOR之后就會(huì)回到最初的狀態(tài))

A是比特序列,B是隨機(jī)生成的比特序列:

  • 將明文A用密鑰B進(jìn)行加密,得到密文(A XOR B)
  • 將密文(A XOR B)用密鑰B進(jìn)行解密,得到明文A

密碼算法

  • DES
  • 三重DES
  • AES

缺點(diǎn)

使用一種密鑰空間巨大,且在算法上沒(méi)有弱點(diǎn)的對(duì)稱密碼,就可以通過(guò)密文來(lái)確保明文的機(jī)密性。巨大的密鑰空間能夠抵御暴力破解,算法上沒(méi)有弱點(diǎn)可以抵御其他類型的攻擊。但是對(duì)稱密碼仍然有弱點(diǎn):

  • 密鑰的配送問(wèn)題:如何將密鑰安全地發(fā)送給接受者。(通過(guò)公鑰解決)

公鑰密碼

公鑰密碼用于解決密鑰配送問(wèn)題。

公鑰密碼無(wú)需向接受者配送解密的密鑰,是密碼學(xué)上最偉大的發(fā)明。

公鑰和私鑰

  • 公鑰即加密密鑰,可以任意公開,使用時(shí)應(yīng)將公鑰發(fā)送給需要使用公鑰進(jìn)行加密的通信對(duì)象。
  • 私鑰即解密密鑰,絕對(duì)不能公開。

密碼算法

  • RSA

缺點(diǎn)

  • 公鑰密碼的處理速度只有對(duì)稱密碼的幾百分之一。(通過(guò)混合密碼系統(tǒng)解決)
  • 公鑰認(rèn)證問(wèn)題:需要判斷得到的公鑰是否合法。(通過(guò)證書解決)

混合密碼系統(tǒng)

混合密碼系統(tǒng)即用對(duì)稱密碼來(lái)加密明文,用公鑰密碼來(lái)加密對(duì)稱密碼中所使用的密鑰。

會(huì)話密鑰:為本次通信而生成的臨時(shí)密鑰,一般是通過(guò)偽隨機(jī)數(shù)生成器生成的。會(huì)話密鑰是對(duì)稱密碼的密鑰,同時(shí)也是公鑰密碼的明文。

加密圖:

mark

解密圖:

mark

單向散列函數(shù)

單向散列函數(shù)用于檢測(cè)文件的完整性,即文件有沒(méi)有被篡改。

性質(zhì)

  • 根據(jù)任意長(zhǎng)度的消息計(jì)算出固定長(zhǎng)度的散列值
  • 能夠快速計(jì)算出散列值
  • 消息不同散列值也不同:抗碰撞性
  • 單向性:無(wú)法通過(guò)散列值反算出消息

算法

  • MD4
  • MD5
  • SHA-1

缺點(diǎn)

  • 無(wú)法識(shí)別偽裝:無(wú)法檢查出發(fā)送者的身份的真實(shí)性。(通過(guò)消息認(rèn)證碼解決)

消息認(rèn)證碼(對(duì)稱密鑰+單向散列)

使用消息認(rèn)證碼可以判斷消息是否被篡改,以及是否有人偽裝成發(fā)送者發(fā)送了該消息。

可以這么理解:消息認(rèn)證碼是一種與密鑰相關(guān)的單向散列函數(shù)。輸入包括任意長(zhǎng)度的數(shù)據(jù)和一個(gè)發(fā)送者與接收者之間共享的密鑰,輸出固定長(zhǎng)度的數(shù)據(jù),這個(gè)數(shù)據(jù)稱為MAC值。

認(rèn)證

要計(jì)算MAC值必須持有共享密鑰,沒(méi)有共享密鑰的人就無(wú)法計(jì)算MAC值,消息認(rèn)證碼是利用這種性質(zhì)來(lái)完成認(rèn)證的。

完整性

和單向散列函數(shù)的散列值一樣,哪怕消息中發(fā)生1比特的變化,MAC值也會(huì)發(fā)生變化,消息認(rèn)證碼正式利用這一性質(zhì)來(lái)確認(rèn)完整性的。

算法

  • HMAC

缺點(diǎn)

  • 依然存在密鑰配送問(wèn)題
  • 無(wú)法防止否認(rèn)(通過(guò)數(shù)字簽名來(lái)解決)

數(shù)字簽名(公鑰+單向散列)

數(shù)字簽名是將公鑰加密和解密反過(guò)來(lái)用。即用私鑰加密,用公鑰解密。

用私鑰加密相當(dāng)于生成簽名
用公鑰解密相當(dāng)于驗(yàn)證簽名

數(shù)字簽名的方法

  • 直接對(duì)消息簽名
  • 對(duì)消息的散列值簽名
mark

圖中省略了Alice發(fā)送公鑰給Bob的過(guò)程。

缺點(diǎn)

  • 無(wú)法驗(yàn)證公鑰是屬于真正的發(fā)送者的(通過(guò)證書來(lái)解決)

證書

所謂證書,就是將公鑰當(dāng)做一條消息,由一個(gè)可信的第三方對(duì)其簽名后所得到的公鑰。

證書用來(lái)對(duì)公鑰的合法性進(jìn)行證明。

具體步驟

下圖中默認(rèn)Alice持有的認(rèn)證機(jī)構(gòu)的公鑰是可信的。

mark

PKI

PKI即公鑰基礎(chǔ)設(shè)施(public-key infrastructure)是為了能夠更有效的運(yùn)行公鑰而制定的一系列規(guī)范和規(guī)格的總稱。
組成元素:

  • 用戶:使用PKI的人
  • 認(rèn)證機(jī)構(gòu)(certificate authority):頒發(fā)證書的人
  • 倉(cāng)庫(kù):保證證書的數(shù)據(jù)庫(kù)

用戶

  • 希望使用PKI注冊(cè)自己的公鑰的人
  • 希望使用已注冊(cè)的公鑰的人。

認(rèn)證機(jī)構(gòu)

  • 生成密鑰對(duì)(也可由用戶生成)
  • 在注冊(cè)公鑰時(shí)對(duì)本人身份進(jìn)行認(rèn)證
  • 生成并頒發(fā)證書
  • 作廢證書

倉(cāng)庫(kù)

證書的層級(jí)結(jié)構(gòu)

認(rèn)證機(jī)構(gòu)的公鑰也需要認(rèn)證,所以用一個(gè)認(rèn)證機(jī)構(gòu)來(lái)驗(yàn)證另一個(gè)認(rèn)證機(jī)構(gòu)的公鑰,這樣的關(guān)系可以迭代好幾層。最終我們需要一個(gè)“可信的種子”,因?yàn)椴豢赡茉谕耆豢尚诺臓顟B(tài)下創(chuàng)造出信任關(guān)系。

偽隨機(jī)數(shù)生成器

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

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

  • 前言 《圖解密碼技術(shù)》一書介紹了很多關(guān)于密碼的知識(shí),通讀一遍需要不少時(shí)間。為了方便學(xué)習(xí),我對(duì)書中關(guān)鍵的部分進(jìn)行了總...
    咖枯閱讀 7,565評(píng)論 1 25
  • 對(duì)稱加密與非對(duì)稱加密 按照密鑰的使用形式,加密算法可以分為對(duì)稱加密和非對(duì)稱加密(又叫公鑰加密)。對(duì)稱加密在加密和解...
    邱振源的博客閱讀 1,311評(píng)論 0 2
  • 對(duì)稱加密: DES DES是1977年美國(guó)聯(lián)邦信息處理標(biāo)準(zhǔn)中使用的一種對(duì)稱密碼技術(shù),曾今被美國(guó)和其他國(guó)家政府銀行使...
    十三億少女夢(mèng)丶閱讀 1,206評(píng)論 0 10
  • 密碼學(xué)是學(xué)習(xí)區(qū)塊鏈技術(shù)最重要的課程之一。 因?yàn)閰^(qū)塊鏈技術(shù),包括比特幣,它們之所以這么安全,最重要的基石就是密碼,包...
    黃星七年閱讀 1,176評(píng)論 1 22
  • 這篇文章主要講述在Mobile BI(移動(dòng)商務(wù)智能)開發(fā)過(guò)程中,在網(wǎng)絡(luò)通信、數(shù)據(jù)存儲(chǔ)、登錄驗(yàn)證這幾個(gè)方面涉及的加密...
    雨_樹閱讀 3,040評(píng)論 0 6

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