1.
對于RSA,給定大整數n分解的一對素因子p和q,p或q是否素數決定不了安全性,但決定算法的正確性,也就是說p或q不能為合數,而安全性取決于n的位數及p、q的距離,n越大則難于素因子分解(因為素數測試是一個P問題,而因子分解是一個NP問題,其耗時是關于n的指數),|p - q|要大是為抵抗一種
特殊因子分解攻擊,論證如下:由(p+q)
2/4 - n = (p+q)
2/4 - pq = (p-q)
2/4,若|p - q|小,則(p-q)
2/4也小,因此(p+q)
2/4稍大于n,(p+q)/2稍大于n
1/2即根號n。可得n的如下分解法:a) 先順序檢查大于n
1/2的每一整數x,直至找到一個x使得x
2 - n是某一整數y的平方;b) 再由x
2 - n = y
2 得 n = (x+y)(x-y)。另外,p - 1和q - 1都應有大素因子(所有因子皆是大素數),以抵抗可能的
重復加密攻擊(重復加密較少步后可恢復出明文)
2.
對于DH密鑰交換,通常選擇階為素數的有限循環(子)群,這時素數決定了安全性。因素數不能再因子分解,故避免了針對階為合數的質因子分解且利用中國剩余定理求離散對數的(已知最好)攻擊。具體講就是為了防
index-calculus方法求解離散對數,底層循環群G的素數模p要足夠大,長度1024位可實現80位安全等級,長度3072位可實現128位安全等級;另為了防
Pohlig-Hellman攻擊,G的階p-1必須不能因式分解為全部都是小整數的素數因子,且為了p-1的每個因子構成的子群防
baby-step giant-step或
Pollards's rho攻擊,要求對80位安全等級而言,p-1的最小素因子必須至少為160位,而對128位安全等級,其至少為256位
3.
對于Hash函數,安全性要求有三點:第一是單向性,由于壓縮函數理論上存在碰撞,因此單向性是指計算不可行,為什么要單向性?因為若不單向,則可從結果比如簽名逆出原文消息;第二是抗弱沖突性即
第1類生日攻擊,計算不可行;第三是抗強沖突性即
第2類生日攻擊,計算不可行。這三點要求,取決于壓縮函數是否能抗差分、線性等密碼分析
4. 周知
Shamir門限方案基于多項式的拉格朗日插值公式,普遍的設計采用GF(q)域上的多項式,秘密s為f(0),q是一個大于n的大素數(n是s被分成的部分數)。正常來講,參與者個數必須至少是設計時的k,才能恢復出正確的s。如果個數少于k比如k-1,則只能猜測s0=f(0)以構建第k個方程,那么恢復得到的多項式g(x)等同設計時的多項式f(x)的概率是1/q。因為g(x)的項系數可以看作關于s0的同余式即h(s0)=(a+b*s0)mod q的形式,因q為素數,故依模剩余系遍歷定理,當s0取GF(q)一值時,則h(s0)唯一對應另一值。所以h(s0)等于f(0)的概率為1/q。由此可見,當q取80位以上,敵手攻擊概率不大于1/2
80,這已經很低了。這種門限方案如同RSA加密,再次佐證了素數越大安全性越高
5.
PGP是密碼學經典應用,體現在首先支持保密與認證業務的正交,即獨立或組合,且組合時按認證、壓縮、加密的順序,這個順序是經考究有優勢的;其次會話密鑰是一次性的,由安全偽隨機數生成器生成,且按公鑰加密;最后使用自研的密鑰環與信任網解決公鑰管理問題。理論本質上,PGP提供的是一種保密認證業務的通用框架,因為具體的對稱加密算法、隨機數生成、公鑰算法,都可依需要靈活選配擴展。PGP有兩個問題跟組合與概率相關,一個是算密鑰環N個公鑰中,密鑰ID(64位)至少有兩個重復的概率?設所求概率為p,先算任意兩個不重復的概率q,令m=2
64,則q=m!/((m-N)!*m
N),則p=1-q,不難看出,N越小則q越大則p越小,因實際應用N<<m,故p非常小可忽略,即PGP取公鑰中最低64有效位作密鑰ID,是可行的。另一個是簽名摘要暴露了前16位明文,對哈希函數安全的影響有多大?這問題意思應該是敵手拿到消息后但沒發送方的私鑰作簽名,只能窮舉變換原消息并求哈希值,使之與消息摘要剩余位組相等。這本質是求
兩類生日攻擊碰撞概率大于0.5時所需的輸入量。在僅認證模式中,抗弱碰撞計算量降低為原來的1/2
16,抗強碰撞計算量至少降低為原來的1/2
8。另外,考慮到這16位明文可能的特殊性,有沒更快的代數攻擊,需進一步研究
posted on 2023-09-28 08:04
春秋十二月 閱讀(3022)
評論(0) 編輯 收藏 引用 所屬分類:
Algorithm