日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

现代密码学摘要

發(fā)布時(shí)間:2023/12/16 编程问答 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 现代密码学摘要 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

https://www.cnblogs.com/WittPeng/p/8978737.html

轉(zhuǎn)自https://www.cnblogs.com/WittPeng/p/8978737.html

尊重原創(chuàng)

緒論

信息安全與密碼學(xué)

  • 經(jīng)典的信息安全三要素(CIA)——機(jī)密性、完整性和認(rèn)證性是信息安全的核心原則。
  • 以密碼學(xué)為基礎(chǔ)的信息安全的五個(gè)方面:信息及信息系統(tǒng)的機(jī)密性、完整性、可用性、認(rèn)證性和不可否認(rèn)性。機(jī)密性可通過加密變換實(shí)現(xiàn)訪問控制;完整性使用消息摘要算法防止篡改;認(rèn)證性分為實(shí)體認(rèn)證和消息認(rèn)證。
  • 攻擊分為主動(dòng)攻擊(中斷、篡改:對(duì)完整性的攻擊、偽造:對(duì)認(rèn)證性的攻擊、重放:可使用時(shí)間戳進(jìn)行預(yù)防)和被動(dòng)攻擊(截取:對(duì)機(jī)密性的攻擊)。
  • 密碼學(xué)是保障信息安全的作用。

  

?

密碼學(xué)發(fā)展史

  • 發(fā)源:1949年香農(nóng)發(fā)表一篇題為《保密系統(tǒng)的通信理論》的經(jīng)典論文。
  • ?密碼學(xué)的發(fā)展經(jīng)歷了兩個(gè)階段:傳統(tǒng)密碼學(xué)和現(xiàn)代密碼學(xué)。
  • 傳統(tǒng)密碼:古代密碼學(xué)、近代密碼。
  • 現(xiàn)代密碼學(xué):1949年香農(nóng)發(fā)表《保密系統(tǒng)的通信理論》標(biāo)志著現(xiàn)代密碼學(xué)的真正開始(第一次質(zhì)的飛躍)。1976年,Diffie和Hellman發(fā)表《密碼學(xué)的新方向》,標(biāo)志著公鑰密碼體制的誕生(第二次質(zhì)的飛躍)。1978年,Rivest、Shamir和Adleman提出了RSA公鑰密碼體制。

密碼及法律法規(guī)

  • 密碼法規(guī)是社會(huì)信息化密碼管理的依據(jù)。

密碼學(xué)基礎(chǔ)

密碼學(xué)分類

  • 密碼學(xué)分為密碼碼編碼學(xué)密碼分析學(xué)。編碼學(xué)主要分為保密體制和認(rèn)證體制,從使用密鑰的策略上分為:對(duì)稱密碼體制和非對(duì)稱密碼體制(亦稱公鑰密碼體制)。
  • 密碼分析學(xué)中:設(shè)計(jì)和使用密碼系統(tǒng)必須遵守:柯克霍夫準(zhǔn)則,要求算法必須公開,對(duì)密鑰進(jìn)行保護(hù)。
  • 保密體制模型:明文空間、密文空間、密鑰空間、加密算法和解密算法。
  • 保密體制的安全性:
  • 按照安全性遞減的順序劃分:全部破解、全盤推導(dǎo)、實(shí)例推導(dǎo)和信息推導(dǎo)。
  • ? ? ? ? ?2.根據(jù)密碼分析者可獲得的密碼分析的信息量把密碼體制的攻擊劃分:

    ? ? ? ? ? ? ?(1)唯密文攻擊(僅知道一些密文)

    ? ? ? ? ? ? ?(2)已知明文攻擊(知道一些密文和相應(yīng)明文)--------------------------------->密碼系統(tǒng)至少應(yīng)經(jīng)受住的攻擊;對(duì)流密碼的攻擊方式

    ? ? ? ? ? ? ?(3)選擇明文攻擊(密碼分析者可以選擇一些明文并得到相應(yīng)密文)

    ? ? ? ? ? ? ?(4)選擇密文攻擊(密碼分析者可以選擇一些密文并得到相應(yīng)明文)

    ? ? ? ? ? ? ?(5)選擇文本攻擊

    ? ? ? ? ?3.攻擊方式的分類:

    ? ? ? ? ? ? ? ?(1)窮舉攻擊(解決方法:增大密鑰量)

    ? ? ? ? ? ? ? ?(2)統(tǒng)計(jì)分析攻擊(解決方法:使明文的統(tǒng)計(jì)特性和密文的統(tǒng)計(jì)特性不一樣)

    ? ? ? ? ? ? ? ?(3)數(shù)學(xué)分析攻擊(解決方法:選用足夠復(fù)雜的加密算法)

    ? ? ? ? ?4.安全性級(jí)別:無條件安全性(H(P|C))=H(P))、計(jì)算安全性(計(jì)算出或估計(jì)出破譯一個(gè)密碼系統(tǒng)的計(jì)算量下限,利用已有的最好方法破譯它所需要的代價(jià)超過了破譯者的破譯能力(時(shí)間、空間和資源等))和可證明安全性。

    • 認(rèn)證體制模型

    ? ? ? ?認(rèn)證體制包括實(shí)體認(rèn)證和消息認(rèn)證。這里主要指消息認(rèn)證。

    ? ? ? ?認(rèn)證體制的安全性:按照攻擊目標(biāo)不同可分為完全摧毀、一般性偽造、選擇性偽造和存在性偽造。

    • ?依照攻擊者的資源,分為唯密鑰攻擊、已知消息攻擊、一般的選擇消息攻擊、特殊的選擇消息攻擊、自適應(yīng)的選擇消息攻擊。

    香農(nóng)理論

    參看信息論與編碼http://www.cnblogs.com/WittPeng/p/8988941.html

    認(rèn)證系統(tǒng)的信息理論

    復(fù)雜度理論

    算法的復(fù)雜度

    • 度量要素:時(shí)間復(fù)雜度(計(jì)算復(fù)雜度)和空間復(fù)雜度
    • 復(fù)雜度 O(*)

    問題的復(fù)雜度

    • P類問題:具有一個(gè)在多項(xiàng)式時(shí)間內(nèi)求解的算法的問題
    • NP類問題:不存在多項(xiàng)式時(shí)間求解算法的問題
    • 量子計(jì)算機(jī)可以將NP類問題轉(zhuǎn)化為P類問題

    古典密碼體制

    1.置換密碼

    1.列置換密碼

    • 加密過程:(1)明文按照固定寬度m按行寫出,不足部分按照雙方約定方式填充,得到字符矩陣;

    ? ? ? ? ? ? ? ? ? ? ? ? ? ?(2)進(jìn)行置換操作;

    ? ? ? ? ? ? ? ? ? ? ? ? ? (3)讀出后即為密文

    • 解密過程:將加密密鑰逆置,按照加密過程操作,即可由密文得到明文。
    • 如密鑰e=(143)(56) 意思是1->4,4->3,3->1,5->6,6->5

    2.周期置換密碼

    • ?明文按照固定長(zhǎng)度m分組,對(duì)字符串編號(hào),重新排列位置從而得到密文;解密時(shí)將加密密鑰逆置得到解密密鑰,重新排列位置后得到明文。

    2.代換密碼

    • 代換密碼就是將明文中的字符替換為其他字符的密碼體制。

    單表代換密碼

    • 基于密鑰的代換密碼,明文字母對(duì)應(yīng)的密文字母在密文中保持不變
    • 仿射密碼:e(x)=ax+b(mod26) (a,b屬于Z26,gcd(a,26)=1)

    ? ? ? ? ? ? ? ? ? ? x=d(e(x))=a-1(e(x)-b)(mod26)

    多表代換密碼

    • 明文中不同位置的同一明文字母在密文中對(duì)應(yīng)的密文字母不同,能夠很好地對(duì)抗統(tǒng)計(jì)密碼分析
    • 實(shí)例:

    ?

    Playfair密碼 加密步驟:a.在適當(dāng)位置闖入一些特定字母,譬如q,使得明文字母串的長(zhǎng)度為偶數(shù),并且將明文字母串按兩個(gè)字母一組進(jìn)行分組,每組中的兩個(gè)字母不同。

    b.明文m1m2對(duì)應(yīng)的密文c1c2的確定:m1和m2同行或同列,則c1為m1后的字符,c2為m2后的字符;若m1和m2既不同行也不同列,則c1c2在m1m2所確定的矩形的其他兩個(gè)角上,c1和m1同行,c2和m2同行。

    Vigenere(維吉尼亞密碼)

    例:

    ?

    Vernam(維爾姆密碼)
    Hill(希爾密碼)
    • [p]1*n≡([c]1*n*[k]-1m*n)(mod 26)62333333
    • 所使用的矩陣必須為非奇異矩陣
    • 安全性:能較好抵抗統(tǒng)計(jì)分析法,對(duì)抗唯密文攻擊的強(qiáng)度較高,但易受已知明文攻擊。

    ?

    ?

    ?

    • 逆矩陣的求法:
    • 轉(zhuǎn)輪密碼機(jī)

    古典密碼的分析——統(tǒng)計(jì)分析法

    單表代換密碼分析

    • 使用字母或漢字的統(tǒng)計(jì)規(guī)律

    多表代換密碼分析

    • 確定密鑰長(zhǎng)度:
  • ?卡西斯基(Kasisks)測(cè)試法:找相同字母間隔字母數(shù)的最大公因子,有可能是周期k
  • 重合指數(shù)法:計(jì)算概率分析重合指數(shù)IC=Σpi2??,IC高的可能是單表代換,低的可能是多表代換。
    • 確定密鑰:擬重合指數(shù)測(cè)試法:x=Σriqi
    • 恢復(fù)明文并驗(yàn)證

    明文-密文對(duì)分析法

    對(duì)稱密碼之分組密碼

    對(duì)稱密碼

    • 特點(diǎn):加密速度快、安全性好、基于標(biāo)準(zhǔn)化··· ···
    • 應(yīng)用:數(shù)據(jù)保密傳輸、加密存儲(chǔ)··· ···

    分組密碼概述

    • 將明文消息編碼表示后的二進(jìn)制序列,劃分為固定大小的塊
    • 加密和解密是一一映射的
    • 設(shè)計(jì)應(yīng)滿足要求
  • 分組足夠長(zhǎng)
  • 密鑰長(zhǎng)度足夠長(zhǎng)
  • 由密鑰確定的置換算法足夠復(fù)雜
  • 加密和解密運(yùn)算簡(jiǎn)單
  • 一般無數(shù)據(jù)擴(kuò)展
    • 理想分組密碼
    • 分組密碼的設(shè)計(jì)原則:擴(kuò)散、混亂
    • 乘積密碼體制:在密鑰控制下擴(kuò)散和混亂兩種密碼操作的多次迭代
    • 迭代結(jié)構(gòu)
  • Feistel密碼
  • SP網(wǎng)絡(luò)
  • 組成S盒(代換):混亂作用,P盒(置換):擴(kuò)散作用
    效果雪崩效應(yīng)
    設(shè)計(jì)原則
  • 分組長(zhǎng)度
  • 密鑰長(zhǎng)度
  • 輪函數(shù)F的設(shè)計(jì)原則:基本原則:非線性、可逆性、雪崩效應(yīng),性能指標(biāo):安全性、速度、靈活性
  • 子密鑰的生成方法
  • 迭代的輪數(shù)
  • DES算法

    • 特點(diǎn)
    分組長(zhǎng)度64位
    密碼體制對(duì)稱密碼體制,加密和密鑰使用同一密鑰,僅子密鑰編排順序不同
    有效密鑰長(zhǎng)度56位(原64位的每個(gè)第8位為奇偶校驗(yàn)位,可忽略)
    迭代結(jié)構(gòu)SP網(wǎng)絡(luò)結(jié)構(gòu),共16輪
    優(yōu)點(diǎn)只使用了標(biāo)準(zhǔn)的算術(shù)和邏輯運(yùn)算
    • 流程

    ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??

    ①64位明文->②IP置換->

    ③分為兩部分L0和R0:L0為下一輪的R1;R0和第一次置換得到的子密鑰混合經(jīng)過F函數(shù)得到下一輪的L1

    ->④置換IP-1->⑤得到64位密文

    F函數(shù):

    擴(kuò)展置換8*4的矩陣 每行的頭尾各補(bǔ)齊一位,變成8*6的矩陣
    Ki子密鑰的生成算法將56位的有效的密鑰壓縮成48位
    代換盒(S盒)

    步驟說明:b1b6確定行,b2b3b4b5確定列,將48位變成32位

    特點(diǎn):

  • 非線性
  • 每一行包括所有16種四位二進(jìn)制碼
  • 兩個(gè)輸出相差1bit,輸出至少相差2bit
  • ··· ···
  • 置換運(yùn)算(P盒)?
    • 安全性
    • 缺陷
  • 互補(bǔ)性:
  • ? ? ? ? ? ? ??

    2.弱密鑰:4個(gè)弱密鑰,12個(gè)半弱密鑰

    3.迭代輪數(shù)

    4.密鑰長(zhǎng)度

    • 應(yīng)對(duì)方法:多重DES
      • 二重DES
      • 三重DES
    • DES的分析方法:
      • 差分分析:由明文差和密文差求系數(shù)a,當(dāng)輪數(shù)低于8輪時(shí),個(gè)人計(jì)算機(jī)幾分鐘即可攻破
      • 線性分析

    AES算法

    • 特點(diǎn)介紹
      • 分組長(zhǎng)度:128位
      • 密鑰長(zhǎng)度和對(duì)應(yīng)輪數(shù):128位10輪,192位12輪,256位14輪
      • 過程:前9輪 字節(jié)代換、行移位、列混合和輪密鑰加,第10輪 字節(jié)代換、行位移和輪密鑰加

        ?字節(jié)代換:S盒定義方法

        (1)初始化S盒,將第m行n列的元素初始化為0xmn

        (2)將S盒中的每個(gè)字節(jié)映射為它在有限域GF(28)中的逆,0x00映射為自身。AES使用Z2[x]上的不可約多項(xiàng)式m(x)=x8+x4+x3+x+1來構(gòu)造GF(28)。求逆元素的方法是使用Z2[x]上的擴(kuò)展的歐幾里得算法。

        ?行位移:簡(jiǎn)單的左循環(huán)位移操作,第n行左移n位

        ?列混合 :通過矩陣相乘來實(shí)現(xiàn)

        ?輪密鑰加:

        ? ?密碼擴(kuò)展算法:

        ? ? ?1.將初始密鑰輸入到一個(gè)4*4的矩陣中,每列的四個(gè)字節(jié)組成一個(gè)字,依次命名為w[0],w[1],w[2],w[3]

        ? ? ?2.擴(kuò)充40個(gè)新列,構(gòu)成總共44列的擴(kuò)展密鑰數(shù)組

        ? ? ? ? ?產(chǎn)生方式為

        其中,T的組成為:1.字循環(huán)(將一個(gè)字中的4個(gè)字節(jié)循環(huán)左移一個(gè)字節(jié))

        ? ? ? ? ? ? ? ? ? ? ? ? ? 2.字節(jié)代換(使用S盒)

        ? ? ? ? ? ? ? ? ? ? ? ? ? 3.輪常量異或(將前兩步的結(jié)果同輪常量Rcon[j]進(jìn)行異或,其中j表示輪數(shù))

        ?

      • AES的結(jié)構(gòu)
        • AES結(jié)構(gòu)的一個(gè)顯著特征是它不是Feistel結(jié)構(gòu)
        • 輸入的密鑰被擴(kuò)展成由44個(gè)32位字節(jié)所組成的數(shù)組w[i]
        • AES結(jié)構(gòu)由四個(gè)階段組成
        • 僅僅在輪密鑰加階段使用密鑰,并在算法的開始和結(jié)束都是用輪密鑰加階段
        • 每個(gè)階段均可逆,解密算法和加密算法并不一樣
        • 加密和解密過程的最后一輪只包含3個(gè)階段,這是由AES的特定結(jié)構(gòu)所決定的,而且也是密碼算法可逆性所要求的
    • AES的安全性和可用性
      • AES和DES的對(duì)比
    ?相同不同
    DES
  • 二者的輪函數(shù)都由3層構(gòu)成,非線性結(jié)構(gòu)、線性混合層、子密鑰異或,只是順序不同;
  • AES的子密鑰加對(duì)應(yīng)于DES的S盒之前的子密鑰異或;
  • AES的列混合運(yùn)算目的是讓不同的字節(jié)相互影響,而DES中F函數(shù)的輸出與左邊一半數(shù)據(jù)相加也有類似的效果;
  • AES的非線性運(yùn)算是字節(jié)代換,對(duì)應(yīng)于DES中唯一的非線性運(yùn)算S盒;
  • 行移位運(yùn)算保證了每一行的字節(jié)不僅僅影響其他行對(duì)應(yīng)的字節(jié),而且影響其他行所有的字節(jié),這與DES中的置換P相似
  • 密鑰長(zhǎng)度固定56位面向比特的運(yùn)算加密和解密運(yùn)算一致
    AES密鑰長(zhǎng)度可以是128位、192位、256位面向字節(jié)的運(yùn)算

    加密和解密運(yùn)算不一致,加密器不能同時(shí)用做解密器

    典型分組密碼

    國(guó)際數(shù)據(jù)加密算法(IDEA)

    • 工作原理:明文64位,密鑰128位
    • 輪函數(shù):分為8輪,每輪輸入6個(gè)子密鑰和4個(gè)狀態(tài)塊
    • 輸出變換

    ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??

    • 解密過程
    • 子密鑰生成

    ?

    RC6

    • 加密過程
    • 解密過程
    • 密鑰擴(kuò)展方案

    Skipjakc算法

    Callmellia算法

    工作模式

    電子密碼本(ECB)模式

    • 工作模式

    • 特點(diǎn):
      • 分組數(shù)量龐大,易受統(tǒng)計(jì)分析攻擊、分組重放攻擊和代換攻擊。
      • 明文或者密文出現(xiàn)一位的錯(cuò)誤,只會(huì)影響一個(gè)分組,不會(huì)是錯(cuò)誤擴(kuò)散。
      • 是最快最簡(jiǎn)單的工作模式
    • 應(yīng)用:數(shù)據(jù)隨機(jī)且較少的情況

    密碼分組鏈接(CBC)模式

    • 工作模式

    ? ??

    • 特點(diǎn)
      • 克服了ECB模式的缺點(diǎn)
      • 雖然加密會(huì)使錯(cuò)誤擴(kuò)散,但解密的過程又進(jìn)行了抵消,最后出錯(cuò)的仍是一個(gè)分組(密文的錯(cuò)誤會(huì)由一組變成兩組)
      • 若文檔中的一個(gè)分組和他前面的一個(gè)分組和另一個(gè)文檔相同,則這個(gè)分組會(huì)加密出相同的結(jié)果,所以引進(jìn)了初始化向量IV,使頭文件不同(IV不用加密,可以和明文一起傳遞)
    • 應(yīng)用:大型文件的加密,是軟件加密的最好選擇

    密碼反饋(CFB)模式

    • 工作模式

    其中,加密算法也能用于解密。加密是對(duì)移位寄存器的操作,不對(duì)明文加密

    • 特點(diǎn)
      • 面向比特流進(jìn)行操作
      • 可用于同步序列密碼,加密和解密可同時(shí)進(jìn)行
      • 有CBC的優(yōu)點(diǎn)
      • 對(duì)信道錯(cuò)誤較敏感且會(huì)進(jìn)行傳播,但解密后會(huì)糾正。對(duì)明文只會(huì)影響一個(gè)分組,對(duì)密文的錯(cuò)誤影響只有寄存器推出錯(cuò)誤密文后,才能阻止擴(kuò)散
      • 數(shù)據(jù)加密速率低
    • 應(yīng)用:加密字符序列

    輸出反饋(OFB)模式

    • 工作模式

    • 特點(diǎn)
      • 改進(jìn)了CFB,錯(cuò)誤不會(huì)傳播,但密文的錯(cuò)誤難以發(fā)現(xiàn)
      • 不具有自同步的能力
      • 初始向量IV不需要保密
    • 應(yīng)用:在極易出錯(cuò)的環(huán)境選用的模式,但需要有高速同步機(jī)制

    計(jì)數(shù)器(CTR)模式

    對(duì)稱密碼之序列密碼

    簡(jiǎn)介

    • 定義:指明文消息按字符逐字符地加密的一類密碼算法

    密文序列c=c0c1···*···cn-1=Ek0(m0)···Ekn-1(mn-1),若ci=Eki(mi)=mi模加ki,稱為加法序列密碼。

    ?

    Hash函數(shù)和消息認(rèn)證

    Hash函數(shù)

    定義是一個(gè)從消息空間到像空間不可逆映射,同時(shí)是一種具有壓縮性的單向函數(shù)
    散列值的生成h=H(M) ?h是定長(zhǎng)的散列值,H是Hash函數(shù)運(yùn)算,M是一個(gè)變成消息
    應(yīng)用數(shù)字簽名?
    消息認(rèn)證

    生成程序或文檔的“數(shù)字指紋”

    用于安全運(yùn)輸和存儲(chǔ)口令

    性質(zhì)?????????生成任意長(zhǎng)度的消息?
    產(chǎn)生定長(zhǎng)的輸出??
    計(jì)算任意給定的消息比較容易??
    ???安全性單向性:找到H(x)=h的x是不可行的?
    抗弱碰撞性:對(duì)于給定的消息M1,要發(fā)現(xiàn)另一個(gè)消息M2,滿足H(M1)=H(M2)在計(jì)算上是不可行的
    抗強(qiáng)碰撞性:找任意一對(duì)不同的消息M1M2,使H(M1)=H(M2)在計(jì)算上是不可行的?

    ?雪崩效應(yīng)

    ?
    ?單向性?
    用途???生成數(shù)字簽名Sign(H(M))
    對(duì)程序或者文件生成摘要(完整性認(rèn)證)H(M)??
    口令H(Password)????????
    函數(shù)結(jié)構(gòu)核心技術(shù):設(shè)計(jì)無碰撞的壓縮函數(shù)f

    迭代結(jié)構(gòu):

    1.將輸入消息分成L個(gè)固定長(zhǎng)度的分組,每個(gè)分組為b位,最后一個(gè)分組包含輸入消息的總長(zhǎng)度,若不足b位需要填充,

    2.壓縮函數(shù)f:有兩個(gè)輸入,一個(gè)是前一次迭代的n位輸出,成為鏈接變量;一個(gè)是消息的b位分組,并產(chǎn)生一個(gè)n位的輸出,即散列值。

    Hash算法

    MD5(128位)結(jié)構(gòu)?

    ?

    ?生成過程?
    ?主循環(huán)?????

    每一分組的算法流程如下:

    第一分組需要將上面四個(gè)鏈接變量復(fù)制到另外四個(gè)變量中:A到a,B到b,C到c,D到d。從第二分組開始的變量為上一分組的運(yùn)算結(jié)果,即A = a, B = b, C = c, D = d。

    主循環(huán)有四輪(MD4只有三輪),每輪循環(huán)都很相似。第一輪進(jìn)行16次操作。每次操作對(duì)a、b、c和d中的其中三個(gè)作一次非線性函數(shù)運(yùn)算,然后將所得結(jié)果加上第四個(gè)變量,

    文本的一個(gè)子分組和一個(gè)常數(shù)。再將所得結(jié)果向左環(huán)移一個(gè)不定的數(shù),并加上a、b、c或d中之一。最后用該結(jié)果取代a、b、c或d中之一。

    以下是每次操作中用到的四個(gè)非線性函數(shù)(每輪一個(gè))。

    F( X ,Y ,Z ) = ( X & Y ) | ( (~X) & Z )

    G( X ,Y ,Z ) = ( X & Z ) | ( Y & (~Z) )

    H( X ,Y ,Z ) =X ^ Y ^ Z

    I( X ,Y ,Z ) =Y ^ ( X | (~Z) )

    (&是與(And),|是或(Or),~是非(Not),^是異或(Xor))

    這四個(gè)函數(shù)的說明:如果X、Y和Z的對(duì)應(yīng)位是獨(dú)立和均勻的,那么結(jié)果的每一位也應(yīng)是獨(dú)立和均勻的。

    F是一個(gè)逐位運(yùn)算的函數(shù)。即,如果X,那么Y,否則Z。函數(shù)H是逐位奇偶操作符。

    假設(shè)Mj表示消息的第j個(gè)子分組(從0到15),常數(shù)ti是4294967296*abs( sin(i) )的整數(shù)部分,i 取值從1到64,單位是弧度。(4294967296=232)

    現(xiàn)定義:

    FF(a ,b ,c ,d ,Mj ,s ,ti ) 操作為 a = b + ( (a + F(b,c,d) + Mj + ti) << s)

    GG(a ,b ,c ,d ,Mj ,s ,ti ) 操作為 a = b + ( (a + G(b,c,d) + Mj + ti) << s)

    HH(a ,b ,c ,d ,Mj ,s ,ti) 操作為 a = b + ( (a + H(b,c,d) + Mj + ti) << s)

    II(a ,b ,c ,d ,Mj ,s ,ti) 操作為 a = b + ( (a + I(b,c,d) + Mj + ti) << s)

    注意:“<<”表示循環(huán)左移位,不是左移位。

    這四輪(共64步)是:

    第一輪

    FF(a ,b ,c ,d ,M0 ,7 ,0xd76aa478 )

    FF(d ,a ,b ,c ,M1 ,12 ,0xe8c7b756 )

    FF(c ,d ,a ,b ,M2 ,17 ,0x242070db )

    FF(b ,c ,d ,a ,M3 ,22 ,0xc1bdceee )

    FF(a ,b ,c ,d ,M4 ,7 ,0xf57c0faf )

    FF(d ,a ,b ,c ,M5 ,12 ,0x4787c62a )

    FF(c ,d ,a ,b ,M6 ,17 ,0xa8304613 )

    FF(b ,c ,d ,a ,M7 ,22 ,0xfd469501)

    FF(a ,b ,c ,d ,M8 ,7 ,0x698098d8 )

    FF(d ,a ,b ,c ,M9 ,12 ,0x8b44f7af )

    FF(c ,d ,a ,b ,M10 ,17 ,0xffff5bb1 )

    FF(b ,c ,d ,a ,M11 ,22 ,0x895cd7be )

    FF(a ,b ,c ,d ,M12 ,7 ,0x6b901122 )

    FF(d ,a ,b ,c ,M13 ,12 ,0xfd987193 )

    FF(c ,d ,a ,b ,M14 ,17 ,0xa679438e )

    FF(b ,c ,d ,a ,M15 ,22 ,0x49b40821 )

    第二輪

    GG(a ,b ,c ,d ,M1 ,5 ,0xf61e2562 )

    GG(d ,a ,b ,c ,M6 ,9 ,0xc040b340 )

    GG(c ,d ,a ,b ,M11 ,14 ,0x265e5a51 )

    GG(b ,c ,d ,a ,M0 ,20 ,0xe9b6c7aa )

    GG(a ,b ,c ,d ,M5 ,5 ,0xd62f105d )

    GG(d ,a ,b ,c ,M10 ,9 ,0x02441453 )

    GG(c ,d ,a ,b ,M15 ,14 ,0xd8a1e681 )

    GG(b ,c ,d ,a ,M4 ,20 ,0xe7d3fbc8 )

    GG(a ,b ,c ,d ,M9 ,5 ,0x21e1cde6 )

    GG(d ,a ,b ,c ,M14 ,9 ,0xc33707d6 )

    GG(c ,d ,a ,b ,M3 ,14 ,0xf4d50d87 )

    GG(b ,c ,d ,a ,M8 ,20 ,0x455a14ed )

    GG(a ,b ,c ,d ,M13 ,5 ,0xa9e3e905 )

    GG(d ,a ,b ,c ,M2 ,9 ,0xfcefa3f8 )

    GG(c ,d ,a ,b ,M7 ,14 ,0x676f02d9 )

    GG(b ,c ,d ,a ,M12 ,20 ,0x8d2a4c8a )

    第三輪

    HH(a ,b ,c ,d ,M5 ,4 ,0xfffa3942 )

    HH(d ,a ,b ,c ,M8 ,11 ,0x8771f681 )

    HH(c ,d ,a ,b ,M11 ,16 ,0x6d9d6122 )

    HH(b ,c ,d ,a ,M14 ,23 ,0xfde5380c )

    HH(a ,b ,c ,d ,M1 ,4 ,0xa4beea44 )

    HH(d ,a ,b ,c ,M4 ,11 ,0x4bdecfa9 )

    HH(c ,d ,a ,b ,M7 ,16 ,0xf6bb4b60 )

    HH(b ,c ,d ,a ,M10 ,23 ,0xbebfbc70 )

    HH(a ,b ,c ,d ,M13 ,4 ,0x289b7ec6 )

    HH(d ,a ,b ,c ,M0 ,11 ,0xeaa127fa )

    HH(c ,d ,a ,b ,M3 ,16 ,0xd4ef3085 )

    HH(b ,c ,d ,a ,M6 ,23 ,0x04881d05 )

    HH(a ,b ,c ,d ,M9 ,4 ,0xd9d4d039 )

    HH(d ,a ,b ,c ,M12 ,11 ,0xe6db99e5 )

    HH(c ,d ,a ,b ,M15 ,16 ,0x1fa27cf8 )

    HH(b ,c ,d ,a ,M2 ,23 ,0xc4ac5665 )

    第四輪

    II(a ,b ,c ,d ,M0 ,6 ,0xf4292244 )

    II(d ,a ,b ,c ,M7 ,10 ,0x432aff97 )

    II(c ,d ,a ,b ,M14 ,15 ,0xab9423a7 )

    II(b ,c ,d ,a ,M5 ,21 ,0xfc93a039 )

    II(a ,b ,c ,d ,M12 ,6 ,0x655b59c3 )

    II(d ,a ,b ,c ,M3 ,10 ,0x8f0ccc92 )

    II(c ,d ,a ,b ,M10 ,15 ,0xffeff47d )

    II(b ,c ,d ,a ,M1 ,21 ,0x85845dd1 )

    II(a ,b ,c ,d ,M8 ,6 ,0x6fa87e4f )

    II(d ,a ,b ,c ,M15 ,10 ,0xfe2ce6e0 )

    II(c ,d ,a ,b ,M6 ,15 ,0xa3014314 )

    II(b ,c ,d ,a ,M13 ,21 ,0x4e0811a1 )

    II(a ,b ,c ,d ,M4 ,6 ,0xf7537e82 )

    II(d ,a ,b ,c ,M11 ,10 ,0xbd3af235 )

    II(c ,d ,a ,b ,M2 ,15 ,0x2ad7d2bb )

    II(b ,c ,d ,a ,M9 ,21 ,0xeb86d391 )

    所有這些完成之后,將a、b、c、d分別在原來基礎(chǔ)上再加上A、B、C、D。

    即a = a + A,b = b + B,c = c + C,d = d + D

    然后用下一分組數(shù)據(jù)繼續(xù)運(yùn)行以上算法。

    ???
    ???
    ?SHA-1(160位)?美國(guó)國(guó)家標(biāo)準(zhǔn)技術(shù)研究所NIST開發(fā)?

    1、將消息摘要轉(zhuǎn)換成位字符串

    因?yàn)樵赟ha-1算法中,它的輸入必須為位,所以我們首先要將其轉(zhuǎn)化為位字符串,我們以“abc”字符串來說明問題,因?yàn)?#39;a'=97, 'b'=98, 'c'=99,所以將其轉(zhuǎn)換為位串后為:

    01100001 01100010 01100011

    2、對(duì)轉(zhuǎn)換后的位字符串進(jìn)行補(bǔ)位操作

    Sha-1算法標(biāo)準(zhǔn)規(guī)定,必須對(duì)消息摘要進(jìn)行補(bǔ)位操作,即將輸入的數(shù)據(jù)進(jìn)行填充,使得數(shù)據(jù)長(zhǎng)度對(duì)512求余的結(jié)果為448,填充比特位的最高位補(bǔ)一個(gè)1,其余的位補(bǔ)0,如果在補(bǔ)位之前已經(jīng)滿足對(duì)512取模余數(shù)為448,也要進(jìn)行補(bǔ)位,在其后補(bǔ)一位1即可。總之,補(bǔ)位是至少補(bǔ)一位,最多補(bǔ)512位,我們依然以“abc”為例,其補(bǔ)位過程如下:

    初始的信息摘要:01100001 01100010 01100011

    第一步補(bǔ)位: ? ?01100001 01100010 01100011 1

    ..... ......

    補(bǔ)位最后一位: ?01100001 01100010 01100011 10.......0(后面補(bǔ)了423個(gè)0)

    而后我們將補(bǔ)位操作后的信息摘要轉(zhuǎn)換為十六進(jìn)制,如下所示:

    61626380 00000000 00000000 00000000

    00000000 00000000 00000000 00000000

    00000000 00000000 00000000 00000000

    00000000 00000000

    3、附加長(zhǎng)度值

    在信息摘要后面附加64bit的信息,用來表示原始信息摘要的長(zhǎng)度,在這步操作之后,信息報(bào)文便是512bit的倍數(shù)。通常來說用一個(gè)64位的數(shù)據(jù)表示原始消息的長(zhǎng)度,如果消息長(zhǎng)度不大于2^64,那么前32bit就為0,在進(jìn)行附加長(zhǎng)度值操作后,其“abc”數(shù)據(jù)報(bào)文即變成如下形式:

    61626380 00000000 00000000 00000000

    00000000 00000000 00000000 00000000

    00000000 00000000 00000000 00000000

    00000000 00000000 00000000 00000018

    因?yàn)椤癮bc”占3個(gè)字節(jié),即24位 ,換算為十六進(jìn)制即為0x18。

    4、初始化緩存

    一個(gè)160位MD緩沖區(qū)用以保存中間和最終散列函數(shù)的結(jié)果。它可以表示為5個(gè)32位的寄存器(H0,H1,H2,H3,H4)。初始化為:

    H0 = 0x67452301

    H1 = 0xEFCDAB89

    H2 = 0x98BADCFE

    H3 = 0x10325476

    H4 = 0xC3D2E1F0

    如果大家對(duì)MD-5不陌生的話,會(huì)發(fā)現(xiàn)一個(gè)重要的現(xiàn)象,其前四個(gè)與MD-5一樣,但不同之處為存儲(chǔ)為big-endien format.

    5、計(jì)算消息摘要

    在計(jì)算報(bào)文之前我們還要做一些基本的工作,就是在我們計(jì)算過程中要用到的方法,或定義。

    (1)、循環(huán)左移操作符Sn(x),x是一個(gè)字,也就是32bit大小的變量,n是一個(gè)整數(shù)且0<=n<=32。Sn(X) = (X<<n)OR(X>>32-n)

    (2)、在程序中所要用到的常量,這一系列常量字k(0)、k(1)、...k(79),將其以十六進(jìn)制表示如下:

    Kt = 0x5A827999 ?(0 <= t <= 19)

    Kt = 0x6ED9EBA1 (20 <= t <= 39)

    Kt = 0x8F1BBCDC (40 <= t <= 59)

    Kt = 0xCA62C1D6 (60 <= t <= 79)

    (3)、所要用到的一系列函數(shù)

    ?Ft(b,c,d) ?((b&c)|((~b)&d)) ? ?(0 <= t <= 19)

    ?Ft(b,c,d) (b^c^d) ? ? ? ? ? ? (20 <= t <= 39)

    ?Ft(b,c,d) ((b&c)|(b&d)|(c&d)) ?(40 <= t <= 59)

    ?Ft(b,c,d) (b^c^d) ? ? ? ? ? ? ? (60 <= t <= 79)

    (4)、計(jì)算

    計(jì)算需要一個(gè)緩沖區(qū),由5個(gè)32位的字組成,還需要一個(gè)80個(gè)32位字的緩沖區(qū)。第一個(gè)5個(gè)字的緩沖區(qū)被標(biāo)識(shí)為A,B,C,D,E。80個(gè)字的緩沖區(qū)被標(biāo)識(shí)為W0, W1,..., W79

    另外還需要一個(gè)一個(gè)字的TEMP緩沖區(qū)。

    為了產(chǎn)生消息摘要,在第4部分中定義的16個(gè)字的數(shù)據(jù)塊M1, M2,..., Mn

    會(huì)依次進(jìn)行處理,處理每個(gè)數(shù)據(jù)塊Mi 包含80個(gè)步驟。

    現(xiàn)在開始處理M1, M2, ... , Mn。為了處理 Mi,需要進(jìn)行下面的步驟

    (1). 將 Mi 分成 16 個(gè)字 W0, W1, ... , W15, ?W0 是最左邊的字

    (2). 對(duì)于 t = 16 到 79 令 Wt = S1(Wt-3 XOR Wt-8 XOR Wt- 14 XOR Wt-16).

    (3). 令 A = H0, B = H1, C = H2, D = H3, E = H4.

    (4) 對(duì)于 t = 0 到 79,執(zhí)行下面的循環(huán)

    TEMP = S5(A) + ft(B,C,D) + E + Wt + Kt;

    E = D; D = C; C = S30(B); B = A; A = TEMP;

    (5). 令 H0 = H0 + A, H1 = H1 + B, H2 = H2 + C, H3 = H3 + D, H4 = H4 + E.?

    在處理完所有的 Mn, 后,消息摘要是一個(gè)160位的字符串,以下面的順序標(biāo)識(shí)

    H0 H1 H2 H3 H4.

    對(duì)于SHA256,SHA384,SHA512。你也可以用相似的辦法來計(jì)算消息摘要。對(duì)消息進(jìn)行補(bǔ)位的算法完全是一樣的。

    Hash函數(shù)的攻擊

    生日攻擊:p(k)=1-p365k/365k;k=23,p(k)=0.5073;k=100,p(k)=0.99999997。可以減少一半的嘗試量

    兩個(gè)集合的相交問題。

    Hash函數(shù)的應(yīng)用

    消息認(rèn)證:

    目的:

  • 驗(yàn)證是否真實(shí)
  • 驗(yàn)證完整性
  • MDC和加密:僅能驗(yàn)證完整性

    消息認(rèn)證碼MAC

      • 用于消息源認(rèn)證和消息完整性的認(rèn)證
      • 構(gòu)造MAC的方法
    • 使用DES分組加密算法的MAC
    • 基于Hash的認(rèn)證碼——HMAC

        • 安全性:包里搜索密鑰需要2k(k為密鑰長(zhǎng)度);攻擊MAC需要2n次

    ?第七章 公鑰密鑰體制

    公鑰密碼體制概述

    • 對(duì)稱密碼體制的局限性:
      • 密鑰分發(fā)問題
      • 密鑰管理問題
      • 數(shù)字簽名問題
    • 公鑰加密體制的思想
      • 公鑰和私鑰
      • 基于陷門單向函數(shù)的困難問題
    • 公鑰密碼體制的分類

    公鑰加密體制介紹

    ElGamal???應(yīng)用1.加密;2.數(shù)字簽名
    密鑰生成
  • 隨機(jī)選擇一個(gè)滿足安全要求的1024位的大素?cái)?shù)p,并生成有限域Zp的一個(gè)生成元g∈Zp*;
  • 選擇一個(gè)隨機(jī)數(shù)x(1<x<p-1),計(jì)算y≡gx(mod p),則公鑰為(y,g,p),私鑰為Sk=x。
  • ? ? ? ? ? ? ? ? ? ? ? ? ? (隨機(jī)數(shù)的選取可以使同一明文在不同時(shí)間加密成不同密文)

    加解密算法
  • 加密過程:將明文分組比特串分組,是分組長(zhǎng)度小于log2p,,然后對(duì)每個(gè)明文分組分別加密
  • 得到公鑰Pk(y,g,p);
  • 消息m分組m1m2m3m4······
  • 對(duì)第i塊消息隨機(jī)選擇整數(shù)ri(1<ri<p-1);
  • 計(jì)算ci≡gri(mod p),ci'≡miyri(mod p)(1≤i≤t)
  • 將密文C=(c1,c1')()()()····發(fā)送給接收方 ?(可知,密文是明文長(zhǎng)度的2倍)
  • 解密過程
  • 接收方接收密文C
  • 使用密鑰x和解密算法mi≡(ci'/cix)(mod p)(1≤i≤t)進(jìn)行計(jì)算
  • 得到明文
  • 正確性
  •   

    安全性分析
  • 窮舉法和列表法(二分查找算法) O(p)
  • 小步大步算法
  • 來源于生日攻擊的思想,

    小步為 序列1:g1,···,gj,···,gm(1≤j≤m)

    大步為 序列2:y,y*g-m,···,y*g-im

    找到gj≡y*g-im(mod p),即找到y(tǒng)=gj+im(mod p),即x=j+im私鑰被找到

    時(shí)間復(fù)雜度:O(p1/2)

    3.指數(shù)積分法

  • ?選取因子基S
  • 建構(gòu)同余方程組:對(duì)若干隨機(jī)整數(shù)k(0≤k≤p),計(jì)算gk,嘗試將gk寫成S中的元素冪次的乘積,即gk=∏piei(mod p),式子兩邊取離散對(duì)數(shù)k≡∑eilogg(pi)(mod (p-1)),重復(fù)這個(gè)過程,直到有超過m個(gè)方程
  • 求logg(pi)
  • 計(jì)算x:隨機(jī)取整數(shù)r,計(jì)算ygrmod p,使得其值可表示為S中元素冪次的乘積,即ygr=∏pidi(mod p),取離散對(duì)數(shù)可得x≡logg(y)≡-r+∑dilogg(pi)(mod (p-1)),如果成功,即求得此解x。
  • ?MH背包公鑰加密體制?????難題來源

    ?背包問題:∑aixi=b,這是一個(gè)NP完全類問題

    特例:超遞增序列(每一個(gè)元素都比先前的元素和大) 可將背包問題轉(zhuǎn)化為P類問題

    ?公私鑰對(duì)的生成
  • 選取素?cái)?shù)p 和u,且bi為超遞增序列
  • 利用uv=1(mod p)可求得v
  • a=ubk(mod p)
  • {ai}和p作為公鑰,{bi}和v作為私鑰
  • ?加密和解密
  • ?明文消息分組
  • 密文c=a1m1+···+anmn
  • 利用{bi}求v c的解,可得消息m  
  • ?安全性分析
  • ?NP類問題,至今沒有好的求解方法,能經(jīng)受住窮舉攻擊
  • 隱蔽性不夠,此公鑰密碼是不安全的
  • ?地位第一個(gè)公鑰算法?
    ?RSA公鑰密碼???理論基礎(chǔ)

    ?數(shù)論中的歐拉定理,安全性依賴于大整數(shù)的素因子分解的困難性

    歐拉定理:若a和n互素,則aΦ(n)≡1(mod n)

    密鑰生成算法

    加密和解密

    (1)生成公私密鑰

    • 選取兩個(gè)大素?cái)?shù)p和q,至少要1024位
    • 計(jì)算n=p*q
    • 隨機(jī)選取整數(shù)e在(1≤e≤Φ(n))作為公鑰,要求滿足gcd(e,Φ(n))=1
    • 用Euclid擴(kuò)展算法計(jì)算私鑰d,滿足d*e≡1(mod Φ(n)),則e和n是公鑰,d是私鑰

    (3)明文加密?
     c=E(m)=me(mod n)
    4)密文解密。
    ? ?m=D(c)=cd(mod n)

    ?安全性

    ?1.算法正確性的證明

    2.攻擊

  • 針對(duì)n分解的攻擊
  • 試除法
  • 因子分解分析法:二次篩因子分析法
  • 側(cè)信道攻擊
  • ? ? ? ? ? ?2.針對(duì)算法參數(shù)的攻擊

    ? ? ? ? ? ? ? ? ? ? ? ?1.對(duì)素?cái)?shù)p和q選取時(shí)的限制;p和q長(zhǎng)度相差不大,大小相差要大,否則難以抵御除法的攻擊;p-1和q-1都應(yīng)有大的素因子。

    ? ? ? ? ? ? ? ? ? ? ? ?2.共模攻擊(因此不同用戶不用使用相同的p和q)

    ? ? ? ? ? ? ? ? ? ? ? ?3.低指數(shù)攻擊

    ?橢圓曲線公鑰加密體制?????????橢圓曲線

    韋爾斯特拉方程 :E:y2+axy+by=x3+cx2+dx+e。密碼學(xué)中,常采用的橢圓曲線為:?E:y2=x3+ax+b,并要求4a3+27b2≠0

    Hasse定理:如果E是有限域GF(p)上的橢圓曲線,N是E上的點(diǎn)(x,y)(其中x,yξGF(p))的個(gè)數(shù),則:|N-(p+1)|≤2(p)?

    橢圓曲線上的點(diǎn)集合Ep(a,b)對(duì)于如下定義的加法規(guī)則構(gòu)成一個(gè)Abel群:

  • O+O=O;(O是單位元)
  • 橢圓上的點(diǎn)P,P+O=P;
  • P的逆元是-P;
  • 滿足交換律

  • 滿足結(jié)合律
  • 點(diǎn)乘規(guī)則:

    • 如果k為整數(shù),kP=P+···+P ? ?(k個(gè)P相加)
    • 如果s和t為整數(shù),(s+t)P=sP+tP,s(tP)=t(sP)

    橢圓曲線點(diǎn)的計(jì)算:

    ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?

    ?

    ?

    ?

    ?ECC密鑰生成算法
  • 選擇一個(gè)橢圓曲線E,構(gòu)造一個(gè)橢圓群Ep(a,b)。?
  • 在橢圓群中挑選生成元點(diǎn)G=(x0,y0),需滿足nG=O的最小的n是一個(gè)非常大的素?cái)?shù)。
  • 選擇一個(gè)小于n的整數(shù)nB作為私鑰,然后利用PB=nBG算出PB。
  • ? ? ? ?公鑰為(E,n,G,PB),私鑰為nB。

    ?加密過程
  • ?A將明文消息編碼成一個(gè)數(shù)m<p,并在橢圓群Ep(a,b)中任選一點(diǎn)Pt=(xt,yt);
  • 在區(qū)間[1,n-1]內(nèi),A選取一個(gè)隨機(jī)數(shù)k,計(jì)算P1:P1=(x1,y1)=kG;
  • 依據(jù)接收方B的公鑰PB,A計(jì)算點(diǎn)P2:P2=(x2,y2)=kPB;
  • A計(jì)算密文C=mxt+yt;
  • A傳送加密數(shù)據(jù)Cm={kG,Pt+kPB,C}給接收方B。
  • ?解密過程
  • ?接收方B收到Cm;
  • B使用私鑰nB做運(yùn)算:Pt+kPB-nB(kG)=Pt+k(nBG)-nB(kG)=Pt;
  • B計(jì)算m=(C-yt)/xt,得明文m。
  • ?安全性和優(yōu)勢(shì)?????安全性基于橢圓曲線上的離散對(duì)數(shù)問題
    應(yīng)用前景好,尤其是在移動(dòng)通信和無線設(shè)備上的應(yīng)用,計(jì)算量小,處理速度快,存儲(chǔ)空間占用小,帶寬要求低。?

    ?160位的ECC密鑰和1024位的RSA和1024位的ElGamal的安全性等同。

    可用于加密、數(shù)字簽名。?
    未申請(qǐng)專利?
    ?????????Rabin公鑰加密體制?前言(學(xué)習(xí)意義)?具有很好的參考價(jià)值
    ?特點(diǎn)?

    ?不是以一一對(duì)應(yīng)的陷門單向函數(shù)為基礎(chǔ),同一密文可能有多種明文;

    ?破譯該體制等價(jià)于對(duì)大整數(shù)的因子分解。
    ?密鑰生成算法

    隨機(jī)選取兩個(gè)大素?cái)?shù)p和q,并且p≡q≡3mod4,將p和q作為私鑰,n=pq作為公鑰?

    ?加密算法設(shè)明文塊為m(m<n),運(yùn)用公式c=m2modn 進(jìn)行加密,c為密文。
    ?解密算法???

    ?

    ????

    第八章 數(shù)字簽名技術(shù)

    數(shù)字簽名概述

    基本概念

      數(shù)字簽名技術(shù)一般分為帶仲裁和不帶仲裁的兩類。如果使用對(duì)稱密鑰進(jìn)行數(shù)字簽名,則必須使用仲裁者,非對(duì)稱可以不帶仲裁。

      數(shù)字簽名可以實(shí)現(xiàn)不可否認(rèn)性和消息完整性認(rèn)證(檢驗(yàn)是否被篡改或偽造)

    原理

      (P,S,K,Sig,Ver),P:密鑰生成算法,S:簽名算法,K:驗(yàn)證算發(fā),Sign,Verify

    ? ? ? 過程簡(jiǎn)圖

            

    數(shù)字簽名的實(shí)現(xiàn)方案

    基于RSA的簽名方案?密鑰生成算法
  • 選取兩個(gè)512位的大素?cái)?shù)p和q,使得N(=pq)為1024位;
  • 可得Φ(N)=(p-1)(q-1);
  • 選取隨機(jī)整數(shù)e(1<e<Φ(N)),滿足gcd(e,Φ(N))=1;
  • 計(jì)算d: d≡e-1(mod Φ(N));
  • 公鑰Pk=(n,e),私鑰為{d,Φ(N),p,q}。
  • ? 這里,先選擇e再確定d的原因是:加密的重要性大于解密的重要性。

    ? 簽名算法
  • 利用一個(gè)安全的Hash函數(shù)h來產(chǎn)生消息摘要h(m);
  • s≡h(m)d(mod n),s就是消息m的簽名;
  • 將(s,m)發(fā)送給B。
  • ? ?驗(yàn)證算法
  • ??利用上述Hash函數(shù)生成h(m);
  • 檢驗(yàn)等式h(m)mod n≡se(mod n)是否成立,成立則簽名有效,否則簽名無效。
  • ? ? 正確性??
    ? ? 安全性?
  • 簽名時(shí)使用了Hash函數(shù)可以防止利用同態(tài)的偽造攻擊,有很好的抗攻擊性。
  • RSA簽名方案存在簽名可重用的問題,同一消息在不同時(shí)刻簽名不應(yīng)是相同的。
  • ?基于離散對(duì)數(shù)的簽名方案?????????????????ElGamal簽名體制????密鑰生成算法
  • ?選取一個(gè)1024位的大素?cái)?shù)p;
  • 選擇一個(gè)生成元g和隨機(jī)數(shù)x,計(jì)算y≡gx(mod p)
  • ? ? ? ? ? ?簽名者的公鑰是(p,g,y),私鑰是x。

    ?簽名算法簽名者選取隨機(jī)數(shù)k,計(jì)算r≡gk(mod p),s≡[h(m)-xr]K-1(mod(p-1)),簽名為(r,s),其中h為安全的Hash函數(shù)
    ?驗(yàn)證算法計(jì)算h(m)后,驗(yàn)證yxrs≡gh(m)(mod p)是否成立??
    ?正確性??
    ?安全性
  • 隨機(jī)數(shù)k的選取和保管:首先k值不能泄露,否則簽名者的私鑰泄露;其次,k不能重復(fù)使用;最后,簽名者多次簽名的的多個(gè)k之間無關(guān)聯(lián)。
  • 如果不使用Hash函數(shù),則簽名方案容易受到偽造攻擊
  • ?Schnorr簽名體制????特點(diǎn)?簽名速度較快,簽名長(zhǎng)度較短 ??
    ?密鑰生成算法
  • 選取兩大素?cái)?shù)p(1024位)和q,q是p-1的大素因子且長(zhǎng)度比p小得多;
  • 選取一個(gè)生成元,且gq≡1(mod o),g≠1;
  • 選取隨機(jī)數(shù)1<x<q,計(jì)算y≡gx(mod p),公鑰為(p,q,g,y),私鑰為x。
  • ?簽名算法

    簽名者選擇隨機(jī)數(shù)k,1≤k≤q-1,然后進(jìn)行如下計(jì)算:

                r≡gk(mod p)

                e=h(m,r)

                s≡(xe+k)(mod q)

    簽名為(e,s),其中h為安全的Hash函數(shù)。

    ?驗(yàn)證算法簽名接收者在收到消息m和簽名(e,s)后,首先計(jì)算r1≡gsy-e(mod p)?,然后驗(yàn)證e=h(e,r1),如果等式成立則簽名有效,否則無效。
    ?正確性和安全性

    ??

    ?

    ?安全性和ElGaml類似

    ?DSA簽名體制?????密鑰生成算法
  • ??選取160bite的素?cái)?shù)q,選擇512~1024bite的素?cái)?shù)p,使得p-1能被q整除;
  • 選擇g≡h(p-1)/q(mod p),h滿足1<h<p-1,且g>1;
  • 選擇1~q之間的隨機(jī)數(shù)x作為私鑰,計(jì)算y≡gx(mod p),用戶的公鑰是(p,q,g,y)
  • ?簽名算法??選取隨機(jī)數(shù)k,r=(gkmod p)mod q,s≡[h(m)+xr]k-1(mod q),其中h是SHA1的特定Hash函數(shù)
    ?驗(yàn)證算法

    收到m和簽名值(r,s)后,計(jì)算

      w≡s-1(mod q)??

      u1≡h(m)w(mod q)

      u2≡rw(mod q)

      v=(gu1yu2mod p)mod q

    比較v和r,相同則簽名有效,否則無效。

    ?正確性??
    ?安全性DSA是ElGamal的變形,因此安全性論述在此也同樣使用。還有一點(diǎn)是簽名算法計(jì)算的s正好為0時(shí),會(huì)產(chǎn)生1除以0的情況,必須放棄這個(gè)簽名。??
    ??三種簽名體制的對(duì)比??

    ?

    ?離散對(duì)數(shù)簽名體制?

    ?

    ????????基于橢圓曲線的簽名方案?????????密鑰生成算法

    ??選擇E上一點(diǎn)G∈E,G的階為滿足安全要求的素?cái)?shù)n,即nG=O。

    ? 選取一個(gè)隨機(jī)數(shù)d∈[1,n-1],計(jì)算Q使得Q=dG,那么公鑰為(n,Q),私鑰為d。

    簽名算法
  • 用戶隨機(jī)選取整數(shù)k∈[1,n-1],計(jì)算kG=(x,y),r≡x(mod n);
  • 計(jì)算e=h(m);
  • 計(jì)算s≡(e+rd)k-1(mod n),如果r=0或s=0,則另選隨機(jī)數(shù)k,重新執(zhí)行上面的過程,消息m的簽名為(r,s)。
  • 驗(yàn)證算法?
  • ??計(jì)算e=h(m);
  • 計(jì)算u≡s-1e(mod n),v≡s-1r(mod n),(x1,y1)=uG+vQ,r1≡x1(mod n);
  • 判斷r和r1的關(guān)系,相等則簽名有效,否則無效。
  • 正確性???

    ?

    ? ?安全性????

    ????????ECDSA安全性依賴于基于橢圓曲線的有限群上的離散對(duì)數(shù)難題,與RSA和有限域離散對(duì)數(shù)的數(shù)字簽名相比,在相同的安全強(qiáng)度條件下,有如下特點(diǎn)

          簽名長(zhǎng)度短、密鑰存儲(chǔ)空間小,特別是用于存儲(chǔ)空間有限、帶寬受限、要求高速實(shí)現(xiàn)的場(chǎng)合。

    特殊數(shù)字簽名

    • 代理簽名
    • 盲簽名
    • 群簽名
    • 不可否認(rèn)簽名
    • 門限數(shù)字簽名
    • 多重?cái)?shù)字簽名
    • ··· ··

    密鑰管理

    密鑰管理概述

    密鑰管理的原則

    • 區(qū)分密鑰管理的策咯和機(jī)制
    • 完全安全原則
    • 最小權(quán)力原則
    • 責(zé)任分離原則
    • 密鑰分級(jí)原則
    • 密鑰更換原則
    • 密鑰應(yīng)該有足夠的長(zhǎng)度
    • 密鑰體制不同,密鑰管理也不相同

    密鑰管理的層次結(jié)構(gòu)

    • 會(huì)話密鑰
    • 密鑰加密密鑰
    • 主密鑰

       ? ? ?越低層的密鑰更換越快。僅主密鑰需要人工裝入,其他各級(jí)密鑰均可以由密鑰管理系統(tǒng)按照某些協(xié)議來進(jìn)行自動(dòng)地分配、更換、撤銷等。

    密鑰生命周期

    總結(jié)

    以上是生活随笔為你收集整理的现代密码学摘要的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。