第七章 公鑰密鑰體制


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

第七章 公鑰密鑰體制

公鑰密碼體制概述

  • 對稱密碼體制的局限性:
    • 密鑰分發問題
    • 密鑰管理問題
    • 數字簽名問題
  • 公鑰加密體制的思想
    • 公鑰和私鑰
    • 基於陷門單向函數的困難問題
  • 公鑰密碼體制的分類

公鑰加密體制介紹

ElGamal    應用 1.加密;2.數字簽名
密鑰生成
  1. 隨機選擇一個滿足安全要求的1024位的大素數p,並生成有限域Zp的一個生成元g∈Zp*
  2. 選擇一個隨機數x(1<x<p-1),計算y≡gx(mod p),則公鑰為(y,g,p),私鑰為Sk=x。

                          (隨機數的選取可以使同一明文在不同時間加密成不同密文)

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

  

安全性分析
  1. 窮舉法和列表法(二分查找算法) O(p)
  2. 小步大步算法

來源於生日攻擊的思想,

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

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

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

時間復雜度:O(p1/2)

3.指數積分法

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

 背包問題:∑aixi=b,這是一個NP完全類問題

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

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

 數論中的歐拉定理,安全性依賴於大整數的素因子分解的困難性

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

密鑰生成算法

加密和解密

(1)生成公私密鑰

  • 選取兩個大素數p和q,至少要1024位
  • 計算n=p*q
  • 隨機選取整數e在(1≤e≤Φ(n))作為公鑰,要求滿足gcd(e,Φ(n))=1
  • 用Euclid擴展算法計算私鑰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.攻擊

  1. 針對n分解的攻擊
    1. 試除法
    2. 因子分解分析法:二次篩因子分析法
    3. 側信道攻擊

           2.針對算法參數的攻擊

                       1.對素數p和q選取時的限制;p和q長度相差不大,大小相差要大,否則難以抵御除法的攻擊;p-1和q-1都應有大的素因子。

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

                       3.低指數攻擊

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

韋爾斯特拉方程 :E:y²+axy+by=x³+cx²+dx+e。密碼學中,常采用的橢圓曲線為: E:y²=x³+ax+b,並要求4a³+27b²≠0

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

橢圓曲線上的點集合Ep(a,b)對於如下定義的加法規則構成一個Abel群:

  1. O+O=O;(O是單位元)
  2. 橢圓上的點P,P+O=P;
  3. P的逆元是-P;
  4. 滿足交換律

  5. 滿足結合律

點乘規則:

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

橢圓曲線點的計算:

                                         

 

 

 

 ECC密鑰生成算法
  1. 選擇一個橢圓曲線E,構造一個橢圓群Ep(a,b)。 
  2. 在橢圓群中挑選生成元點G=(x0,y0),需滿足nG=O的最小的n是一個非常大的素數。
  3. 選擇一個小於n的整數nB作為私鑰,然后利用PB=nBG算出PB。

       公鑰為(E,n,G,PB),私鑰為nB。

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

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

可用於加密、數字簽名。 
未申請專利 
         Rabin公鑰加密體制  前言(學習意義)  具有很好的參考價值
 特點 

 不是以一一對應的陷門單向函數為基礎,同一密文可能有多種明文;

 破譯該體制等價於對大整數的因子分解。
 密鑰生成算法

隨機選取兩個大素數p和q,並且p≡q≡3mod4,將p和q作為私鑰,n=pq作為公鑰 

 加密算法 設明文塊為m(m<n),運用公式c=m²modn 進行加密,c為密文。
 解密算法   

 

    

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM