[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 a∈Z∗n
aϕ(n)=1 mod n - idea: 循環群,ϕ(n)是元素個數
- 一般化:
for any a∈Zn 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 PaddingRSAES = RSA Encryption Scheme
- 兩者定義如何pad訊息為更長的訊息
為什麼需要PKCS?
- 確認明文是合法的、可辨識的
- 避免被竄改密文
為什麼需要OAEP?
- 使得密文具有隨機性(有random seed)
RSA後門
- 製造RSA的key
- Naïve RSA backdoor
- 固定prime p,選擇隨機 q,計算出公開 n
- 此backdoor可以用 p 找到 d,為什麼?
- 計算 q=p−1n
- 計算 d, e 在 ϕ(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 攻擊
- 攻擊者隨機選擇 s∈Zn,宣稱是Alice對 m 生成的signature:m:=se mod n
- 因為 md=sed mod n=s mod n
- 很容易生成pair (m,s) 使得 s 是 m 的合法簽章
- 但是很難對有意義的 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|(p−1) - 隨機選擇 x∈Z∗p 使得xp−1q mod p≠1
設 g:=xp−1q 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 =(k−1(h(m)+ar)) where k−1 is the inverse of k mod q - signature on m is the pair (r, s)
指數160 bit較有效率
k 對每個訊息需不同
為何需要不同的 k
- s1=(k−1(h(m1)+ar)) mod q
s2=(k−1(h(m2)+ar)) mod q - s1−s2=k−1(h(m1)−h(m2)) mod q
可得 k - 則private key a 可被算出來
- Signature verification
- 當收到 m,s,r
- 檢查 s,r∈1,...,q−1
- 計算
u1=h(m)s−1 mod q
u2=rs−1 mod - 計算 v=(gu1Au2 mod p) mod q
若 r=v 則接受此signature
Diffie-Hellman Key Exchange
- 用在雙方需使用同一把對稱私鑰時
- 建立在離散對數問題的困難度
- 方法:
- 雙方得到質數 p 及generator g∈Z∗p
- 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
Kaufmann et al., Network Security Chapter 6 and 7
DSS specification: FIPS 186-2
留言
張貼留言