[IT-Security-1] 非對稱式密碼學 Asymmetric Cryptography

Asymmetric Cryptography 


Notes from RWTH Aachen University course 
“IT security 1” Wintersemester 2019/20
professor: Meyer, Ulrike Michaela

RSA

  • Asymmetric加密機制
  • 變數長度通常小於key
  • 但加密結果與key長度相同
  • 較少用在長訊息的加密
  • 運用:
    • 加密對稱key
    • 加密authentication challenges
    • digital signature
  • public key:
    • 選擇兩個質數 p,q
    • 計算 n=pq
    • ϕ(n) 中選擇 e
    • public key: (n,e)
  • private key:
    • 計算 d,其中 ed=1 mod ϕ(n)
    • private key: d

Euler’s Theorem

  • for any aZn
    aϕ(n)=1 mod n
  • idea: 循環群,ϕ(n)是元素個數
  • 一般化:
    for any aZn in case n=pq
    aϕ(n)+1=a mod n
    a 不必與 n 互值

RSA的安全性

  • 分解 n=pq  計算 ϕ(n) 計算 d
  • 目前還不知道有沒有方法:如果不知道 d 仍能破解RSA加解密
  • 建議用2048 bit,即p,q為1024 bit

PKCS (Public Key Cryptography Standard)

  • 定義兩個RSA的encoding方法:
    • RSAES-PKCS1-v1_5
    • RSAES-OAEP
OAEP = Optimal Asymmetric Encryption Padding
RSAES = RSA Encryption Scheme
    • 兩者定義如何pad訊息為更長的訊息
為什麼需要PKCS?

  • 確認明文是合法的、可辨識的
  • 避免被竄改密文
為什麼需要OAEP?

  • 使得密文具有隨機性(有random seed)

RSA後門

  • 製造RSA的key
  • Naïve RSA backdoor
    • 固定prime p,選擇隨機 q,計算出公開 n
    • 此backdoor可以用 p 找到 d,為什麼?
      • 計算 q=p1n
      • 計算 deϕ(n) 中的inverse
    • 被external攻擊:
      • 取得兩個public key (n,e),(n,e)即可攻擊
      • 因為 p 固定,則 gcd(n,n)=p
      • 則可用上列的方式取得 d,d
  • Better RSA backdoor
    • 製造商擁有key pair
      public key: (E,N)
      private key: D
    • 隨機選取 p,q
    • 計算 e=pE mod N
      檢查是否可逆,某則重新選取 p
    • 被external攻擊:
      • 若知道 (e,n)
      • 則計算 eD mod N=p,用此計算 d
        • 因為 e=pE mod N
        • eD=pED mod N=pϕ(N)+1 mod N=p mod N
        • 需要製造商的private key才有辦法攻擊
  • Naïve RSA signature
    • 跟Naïve RSA生成key方式相同
    • 易受 existential forgery 攻擊
      • 攻擊者隨機選擇 sZn,宣稱是Alice對 m 生成的signature:m:=se mod n
        • 因為 md=sed mod n=s mod n
      • 很容易生成pair (m,s) 使得 sm 的合法簽章
      • 但是很難對有意義的 m 生成 s
existential forgery 是針對 digital signature 或 MAC 攻擊的詞
  • RSA是 multiplicative homomorphic(乘法同態)
加密後再相乘等於相乘後再加密
    • s:=s1s2=md1md2=(m1m2)d mod n
    • s 仍是 m1m2 的合法簽章
  • 安全的RSA signature
    • 簽章前先用已知的hash function
    • s=h(m)d mod n
    • 解決
      • existential forgery
        因為pre-image resistant,難找到 se=h(m)
      • multiplicative homomorphic
        因為pre-image resistant,難找到h(m)=h(m1)h(m2)
    • 對DSS, ECDSA簽章機制仍適用
    • 簽章的訊息若過長,hash之後能縮短
  • PKCS
    • RSA的兩個encoding scheme
      • RSASSA-PSS
      • RSASSA-PKCS1-v1_5
    • 用digital signature的好處:
      • MAC無法為 public 提供authenticity
      • Non-repudiation 簽章人無法否認自己傳送過這個訊息
  • RSA攻擊的結果:
    • Total break: 取得私鑰
    • Universal forgery: 偽造所有訊息簽章
    • Selective forgery: 偽造選擇的訊息簽章
    • Existential forgery: 偽造沒有意義的訊息的簽章

DSS (Digital Signature Standard)

  • 用DSA(Digital Sianature Algorithm)
  • 建立在離散對數問題(discrete logarithm problem)的困難度
  • 給定 Y,p,g:Y=gx mod p,難以找到 x
  • Key generation
    p: 1024 bit
    q: 160 bit
    q|(p1)
  • 隨機選擇 xZp 使得xp1q mod p1
    g:=xp1q mod p
  • 隨機選擇 a {1..., q 1}
    計算 A=ga mod p
  • public key:
    (p, q, g, A)
  • private key:
    a
支援的bitlength:
1024/160
2048/224
2048/256
3072/256

  • Signature generation
    • 隨機選擇 k {1..., q 1}
      計算
      r =(gk mod p) mod q
      s =(k1(h(m)+ar)) where k1 is the inverse of k mod q
    • signature on m is the pair (r, s)
指數160 bit較有效率
k 對每個訊息需不同

為何需要不同的 k

    • s1=(k1(h(m1)+ar)) mod q
      s2=(k1(h(m2)+ar)) mod q
    • s1s2=k1(h(m1)h(m2)) mod q
      可得 k
    • 則private key a 可被算出來

  • Signature verification
    • 當收到 m,s,r
    • 檢查 s,r1,...,q1
    • 計算
      u1=h(m)s1 mod q
      u2=rs1 mod 
    • 計算 v=(gu1Au2 mod p) mod q
      r=v 則接受此signature

Diffie-Hellman Key Exchange

  • 用在雙方需使用同一把對稱私鑰時
  • 建立在離散對數問題的困難度
  • 方法:
    • 雙方得到質數 p 及generator gZp
    • Alice計算 hA=ga mod p,Bob計算 hB=gb mod p
    • Alice傳 hA 給Bob,Bob傳 hB 給Alice
    • Alice計算 haB,Bob計算 hbA


  • Man-in-the-Middle Attack
    • 攻擊者在中間替換 hA,hB

Basics Reading
Kaufmann et al., Network Security Chapter 6 and 7
DSS specification: FIPS 186-2

留言

這個網誌中的熱門文章