日韩黑丝制服一区视频播放|日韩欧美人妻丝袜视频在线观看|九九影院一级蜜桃|亚洲中文在线导航|青草草视频在线观看|婷婷五月色伊人网站|日本一区二区在线|国产AV一二三四区毛片|正在播放久草视频|亚洲色图精品一区

分享

后端必須了解的密碼學(xué)技術(shù)

 漢無為 2017-11-25

對稱加密與非對稱加密


按照密鑰的使用形式,加密算法可以分為對稱加密和非對稱加密(又叫公鑰加密)。對稱加密在加密和解密的過程中,使用相同的秘鑰;而非對稱加密在加密過程中使用公鑰進(jìn)行加密,解密使用私鑰。


對稱加密的加密和解密需要使用相同的密鑰,所以需要解決密鑰配送問題。


非對稱加密的處理速度遠(yuǎn)低于對稱密鑰


密鑰:一個加密算法中,輸入為明文和密鑰,輸出為密文。在加密算法中,密鑰通常是像238435639047397537493753453945379346236這樣的 一串非常大的數(shù)字。


對稱加密下的密鑰配送問題


發(fā)送者A想要發(fā)一封郵件給接受者B,但是不想被人看到其中的內(nèi)容。A決定使用對稱加密的方法。但是我們知道,對稱在對稱加密中,加密與解密需要使用同樣的密鑰。B想要看到接收到的內(nèi)容必須要有A的密鑰。也就是說,A需要把密鑰安全地送到B的手上。


那如果把加密后的密文和密鑰一同通過郵件發(fā)送給B行不行呢?答案是不行的。因為一旦被加密的密文和密鑰同時落在竊聽者C的手中,C就可以用密鑰對密文進(jìn)行解密。


混合密碼系統(tǒng)


混合密碼系統(tǒng),是將對稱密碼和非對稱密碼的優(yōu)勢相結(jié)合的方法?;旌厦艽a系統(tǒng)解決了對稱密碼的密鑰配送問題,又解決了非對稱密碼的加密與解密速度問題。


混合密碼系統(tǒng)中會先用快速的對稱密碼,對消息進(jìn)行加密,這樣消息就變?yōu)槊芪模WC消息機密性。然后,用非對稱加密對對稱密碼的密鑰進(jìn)行加密,因為密鑰一般比要加密的信息短,加密和解密的速度就得到保證了。這樣,密碼配送問題就得到了解決。


單向散列函數(shù)


單向散列函數(shù)也稱為消息摘要函數(shù)(message digest function),哈希函數(shù),適用于檢查消息完整性的加密技術(shù)。


單向散列函數(shù)有一個輸入和一個輸出,其中輸入稱為信息,輸出稱為散列值。單向散列函數(shù)可以根據(jù)消息的內(nèi)容計算出散列值,篡改后的信息的散列值計算結(jié)果會不一樣,所以散列值可以被用來檢查消息的完整性 。


單向散列函數(shù)輸出的散列值也成為消息摘要,或者指紋。散列來源于英文”hash”一值,單向散列函數(shù)的作用,實際上就是將很長的消息剁碎,然后混合成固定長度的散列值。


無法解決的問題


使用單向散列函數(shù)可以實現(xiàn)完整性的檢查,但有些情況下即便能檢查完整性也是沒有意義的。


例如,主動攻擊者D偽裝成發(fā)送者A發(fā)送消息和散列值給B。這時,B能夠通過單向散列函數(shù)檢查消息的完整性,但這只是對D發(fā)送的信息進(jìn)行完整性檢查,而無法識別出D的偽裝。


辨別偽裝需要用到認(rèn)證,用于認(rèn)證的技術(shù)包括消息認(rèn)證碼和數(shù)字簽名,消息認(rèn)證碼可以保證信息沒有被篡改,而數(shù)字簽名還能向第三方做出保證。


消息認(rèn)證碼


消息認(rèn)證碼(MAC)是一種與密鑰相關(guān)聯(lián)的單向散列函數(shù)。


使用步驟


(1)發(fā)送者A與接收者B事先共享密鑰。

(2)發(fā)送者A根據(jù)請求信息,計算MAC值(使用共享密鑰)。

(3)發(fā)送者A將請求信息和MAC值發(fā)送給接收者B。

(4)接收者B根據(jù)接收到的信息,計算MAC值。

(5)接收者B將自己計算的MAC值與A發(fā)送過來的MAC值進(jìn)行對比。

(6)如果MAC值一致,則接收者B可以斷定請求來自發(fā)送者A。


依然存在密鑰配送問題


在消息認(rèn)證碼中,發(fā)送者A與接受者B共享密鑰,這個密鑰不可以被攻擊者獲取,如果攻擊者獲取到這個密鑰。則攻擊者也可以計算出MAC值,從而可以進(jìn)行偽裝攻擊。


因此,要解決密鑰配送問題,我們需要向?qū)ΨQ密碼一樣,使用一些共享密鑰的方法,如公鑰密碼,密鑰分配中心,或其他安全的方式發(fā)送密鑰。


MAC與對稱密碼認(rèn)證


MAC技術(shù)中,發(fā)送者與接受者需要使用相同的密鑰進(jìn)行加密;對稱加密中,密文只有使用和加密時相同的密鑰才能正確解密,否則將會產(chǎn)生看上去雜亂無章的“明文”。那么,是否可以用對稱密碼進(jìn)行認(rèn)證呢?


答案是不可以。假設(shè)我們要發(fā)送的明文就是一串隨機的比特序列,我們將明文用對稱密碼加密之后發(fā)送出去,當(dāng)接受者收到密文并進(jìn)行解密時,看上去都是一串隨機的比特序列,那我們怎么判斷信息是否來自攻擊者呢?


更準(zhǔn)確地說,我們無法根據(jù)“是否雜亂無章”而判斷認(rèn)證是否通過,這不是一個可行的標(biāo)準(zhǔn)。而使用MAC則可以通過對比MAC碼,得到一個明確的結(jié)果。


MAC無法解決的問題


對第三方的證明


接收者B收到了來自A的信息后,想要想第三方驗證者D證明這條信息確實是A發(fā)送的。但是MAC無法進(jìn)行這樣的證明。


對于驗證著D來說,知道密鑰的人有A和B,只要知道密鑰,就可以計算出正確的MAC值。因此,D不可以斷定信息是由A發(fā)送的,因為也有可能是B自己偽造信息發(fā)送給自己的。


無法防止否認(rèn)


接受者B收到了A發(fā)送過來的信息,里面包含有B與A共享的密鑰計算出來的,因此B斷定這條信息來自A。


但是,A可以聲稱自己并沒有向B發(fā)送過這條信息。因為A與B都擁有密鑰,A可以聲稱該信息的MAC值,是由B計算出來的,而不是自己。


數(shù)字簽名


數(shù)字簽名,就是只有信息的發(fā)送者才能產(chǎn)生的別人無法偽造的一段數(shù)字串,這段數(shù)字串同時也是對信息的發(fā)送者發(fā)送信息真實性的一個有效證明。


數(shù)字簽名是非對稱密鑰加密技術(shù)與數(shù)字摘要技術(shù)的應(yīng)用。


簽名的生成與驗證


在數(shù)字簽名技術(shù)中,涉及到兩種行為:生成消息簽名驗證數(shù)字簽名。


生成消息簽名這一行為是由消息的發(fā)送者A來完成的,也稱為“對消息簽名”。生成簽名就是根據(jù)消息內(nèi)容計算數(shù)字簽名的值,這個行為意味著“我認(rèn)可改消息的內(nèi)容”。


驗證數(shù)字簽名這一行為一般由消息的接受者B來完成,也可以由消息的驗證者來完成。驗證的結(jié)果可以是成功或者失敗,成功以為著消息屬于A,失敗則意味著消息不屬于A 。


數(shù)字簽名對簽名密鑰驗證密鑰進(jìn)行了區(qū)分,使用驗證密鑰是無法生成簽名的。簽名密鑰只能有簽名者持有,而驗證密鑰則是任何需要驗證簽名的人都可以持有。


在公鑰密碼中,密鑰分為加密密鑰和解密密鑰,用加密密鑰無法進(jìn)行解密。解密密鑰只能有需要解密的人持有,而加密密鑰則是任何需要加密的人都可以持有??梢哉f,數(shù)字簽名就是將公鑰密碼“反過來用”來實現(xiàn)的。


數(shù)字簽名的流程


發(fā)送者A需要對消息簽名,而接受者B要對簽名進(jìn)行驗證。那么,A需要事先生成一個包括公鑰和私鑰的密鑰對,而需要驗證簽名的B則需要得到A的公鑰。


簽名和驗證的過程如下:


1. A用自己的私鑰對信息進(jìn)行加密。用私鑰加密得到的密文就是A對這條信息的簽名,由于只有A才持有自己的私鑰,因此除了A以外,其他人是無法生成相同的簽名的。

2. A將信息和簽名發(fā)送給B

3. B用A的公鑰對收到的簽名進(jìn)行解密。如果收到的簽名確實是用Alice的私鑰進(jìn)行加密得到的密文,那么用A的公鑰應(yīng)該能夠正確解密,反之,則不能正確解密。

4. B將解密得到的結(jié)余A發(fā)送的信息進(jìn)行對比,兩者一直,簽名驗證成功。兩者不一致,則簽名驗證失敗。


除了對消息進(jìn)行加密得到簽名,我們還可以對消息的散列值進(jìn)行加密,得到簽名。這樣無論消息有多長,我們對消息進(jìn)行加密和解密都是非??焖俚?。


與MAC相比下的優(yōu)勢


可以防止否認(rèn) 。還記得為什么MAC無法防止否認(rèn)嗎?正是因為密鑰由通信的雙方共同持有,發(fā)送者A可以謊稱消息認(rèn)證碼是由接受者B生成的。而在數(shù)字簽名技術(shù)中,加密的私鑰只由一方持有,只有持有密鑰的一方才可以生成簽名。


第三方的證明 。同理,因為私鑰僅由單方面持有,簽名僅能由私鑰的持有者生成,所以可以實現(xiàn)第三方的證明。


證書


什么是證書


公鑰證書(Public-Key Certificate,PKC)由認(rèn)證機構(gòu)(CA)生成,用于確認(rèn)公鑰確實屬于此人。


認(rèn)證機構(gòu),就是能確認(rèn)“公鑰確實屬于此人”并能夠生成數(shù)字簽名的個人或者組織。


證書的使用場景


下面通過代表性的應(yīng)用場景來理解證書的作用。


我們用文字進(jìn)一步說明這些步驟都做了些什么。


1. B生成密鑰對

2. B在認(rèn)證機構(gòu)D注冊自己的公鑰

3. 認(rèn)證機構(gòu)D用自己的私鑰對B的公鑰施加簽名并生成證書

4. A得到帶認(rèn)證機構(gòu)D的數(shù)字簽名的B的公鑰

5. A使用認(rèn)證機構(gòu)D的公鑰驗證數(shù)字簽名,確認(rèn)B的公鑰的合法性

6. A用B的公鑰加密信息并發(fā)送給B

7. B用自己的私鑰解密密文得到A的信息


各種密碼技術(shù)對比


對稱密碼與非對稱密碼



對稱密碼公鑰密碼
發(fā)送者用共享密鑰加密用公鑰加密
接受者用共享密鑰加密用私鑰解密
密鑰配送問題存在不存在
機密性可保證可保證


消息認(rèn)證碼與數(shù)字簽名



消息認(rèn)證碼數(shù)字簽名
發(fā)送者用共享密鑰計算MAC值用私鑰生成簽名
接受者用共享密鑰計算MAC值用公鑰驗證簽名
密鑰配送問題存在不存在,但是公鑰需要另外驗證
完整性可保證可保證
認(rèn)證可保證(僅限通信雙方)可保證(可使用與第三方)
防止否認(rèn)不可保證可保證


參考


《圖解密碼學(xué)》


出處:https://qiuzhenyuan./2017/09/24/常用密碼學(xué)技術(shù)/


    本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊一鍵舉報。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多