密碼學08(RSA密碼、EIGamal密碼)

RSA密碼

非對稱密碼,分組密碼

數學基礎

  • 歐拉函數:
    對於一個正整數n,小於n且與n互素的正整數的個數,記爲φ(n)。
    對於一個素數n,可知φ(n) = n - 1
    對於兩個素數p和q,他們的乘積n = p * q,則φ(n) = (p-1) * (q-1)。

φ(n) = p*q-(q-1)-(p-1) -1 = (p-1) * (q-1)
最後-1是減去n本身

  • 歐幾里得算法:
    gcd( a,b)表示a和b的最大公約數,gcd(a,b) = 1表示a,b最大公約數爲1,說明a、b互質。
  • 同餘
    兩個整數a、b。若它們除以整數m所得的餘數相等,則稱a與b對於模m同餘,記作a ≡ b (mod m)。例如26 ≡ 2 ( mod12 )。

RSA加密與解密

  • 參數定義和密鑰生成:
    ①選兩個大素數p和q (p、q保密)
    ②計算n = p * q和φ(n) = (p-1) * (q-1) (n公開,φ(n)保密)
    ③選一整數e,滿足1 < e < φ(n) ,且gcd(φ(n),e) = 1(e公開,e就是公鑰)
    ④計算d,滿足d * e ≡ 1 (mod φ(n))(d保密,d就是私鑰),由於p、q都爲素數,則φ(n)一定爲2的倍數,因此d、e一定都不爲2。
  • 加密
    c = me mod n
  • 解密
    m = cd mod n
    由此可見密文和明文分組長度最大爲n的位數,在存儲時一般也按照n的位數來存儲。

已知p、q如何求d?
①算出n = p * q,φ(n) = (p-1) * (q-1)
②隨機選擇一個小於φ(n)且互質的整數e
③使用擴展的歐幾里得算法求d

  • 特點
    加解密可逆,可同時確保數據的祕密性和真實性。
    效率高效,核心運算爲模冪運算
  • 安全性
    RSA密碼的安全性在於大合數的因子分解,應當採用足夠大的整數n,一般至少取1024位以上。

Diffie-Hellman密鑰交換

素數q和其本原根α是兩個公開的整數,
用戶A先選擇一數字XA < q作爲私鑰,再計算YA = αXA作爲公鑰,將YA發送給B。
用戶B先選擇一數字XB < q作爲私鑰,再計算YB = αXB作爲公鑰,將YB發送給A。
兩人都可以計算出公共密鑰K = YBXA mod q和K = YAXB mod q,
這兩個K是相同的。
攻擊者在知道q、α、YA、YB的情況下想要知道K的值就必須要算出私鑰XA或XB,XA = dlogα、q(YB),這是非常困難的。

破解方法:中間人攻擊
假設此時攻擊者C截獲了發送過程中的YA和YB,由於q和α是公開的,所以C可以選擇兩個私鑰Xc,僞造兩份Yc發給A和B,這樣A、B會錯以爲他們之間已經共享密鑰K,然而實際上A、B只是分別和C共享了密鑰K1和K2,這樣A、B之間發送的加密消息都會被C竊聽和篡改。

EIGamal密碼

這是基於離散對數問題上的公開密鑰密碼體系。

數學基礎

  • 有限域:對於素數p,整數集合(0,1,2……p-1),在mod p意義下,關於四則運算構成域,當域的元素數目有限時稱爲有限域。
  • 階:有限域中元素的個數,比如,模19下7的階爲3。(a、p互質,使得ad ≡ 1 (mod p)成立的最小正整數d稱爲a對模p的階。)

71 mod 19 = 7
72 mod 19 = 11
73 mod 19 = 1
階爲3

  • 本原元(原根):設p爲素數,若存在一個正整數g使得g1 、g2、g3……gp-1 關於模p互不同餘,即模p下g的階爲φ( p ) = p - 1, 則稱g爲模p的本原元。 如果存在ad ≡ 1 (mod p), 且階d = φ(n),那麼a就是p的本原元,一個域的本原元可能不唯一。

EIGamal的加密和解密

  • 參數定義和密鑰生成
    ①選取大素數p,並且要求p-1有大素數因子,再選取一個模p的本原元g。p、q爲系統中所有用戶共享。
    ②系統中每個用戶U都隨機挑選一個整數XU,1 <= XU <= p-1。並計算:YU = gXu mod p.
    ③用戶的公鑰爲(YU,p,q),私鑰爲XU
  • 加密算法:
    選一數k,k滿足k<p且gcd(k, p-1) = 1,計算a = g^k ^mod p和b = yk *M mod p。其中(a,b)爲密文對。
  • 解密算法:
    接收方收到密文對後,計算M = b * (ax ) -1 mod p

數字簽名

特徵

驗證簽名的真實性
不可僞造
不可改變
不可抵賴
驗證消息的完整性

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章