随笔-167  评论-223  文章-30  trackbacks-0
从数学上考虑,主要是如下几点
  1. 模数N的两个素因子p、q之间的距离(差的绝对值)要够大。这是为了防费马因子分解法
  2. p-1 和q-1 要有大的素因子,即它们的素因子分解中最小的素数都得够大。这是为了防Pollard p-1 因子分解法、重复加密攻击 
  3. 解密指数d要比较大。这是为了防连分数方法攻击求解d。详见《简单连分数攻击RSA的迭代次数分析
  4. N的选取应考虑它难以找到二次剩余即x2≡y2 mod N。这是为了防Dixon分解法、二次筛法

从工程上考虑,有以下几点
​  5. RSA系统生成N不要重复。这是为了防共模攻击恢复明文
  6. 不同的N用不同的加密指数e,或不要加密相同的消息,或被加密的多个消息避免有仿射线性关系
  7. 避免暴露N的欧拉函数值。不然解一元二次方程可得到p、q
  8. 随机填充。给明文按一定规则填充随机串后加密,一定程度上可抗击选择明文与选择密文攻击


进一步提升安全性的考虑
  密钥生成KeyGen(κ):
      (N, e, d) ← GenRSA(κ); 
       pk = (N, e), sk = (N, d)
 
  加密过程Epk (M)、解密过程Dsk (C1, C2):
       与抗攻击的安全性有关
 
  H:抗碰撞哈希函数
 
 为抗选择明文攻击,利用H来改造
      Epk(M):
            r ←R ZN*
           输出(re mod N,H(r)⊕M)
     
      Dsk (C1, C2):
            r = C1d mod N
           输出H(r)⊕C2
 
 为抗选择密文攻击(攻击利用RSA的乘法同态性),利用H与IND-CCA安全的私钥加密方案<PrivGen, Enc, Dec>来改造:
      Epk (M):
            r ←R ZN*
            h = H(r)
            输出(re mod N,Ench (M))
     
      Dsk (C1, C2):
            r = C1d mod N
            h = H(r)
            输出Dech(C2)

 以上改造后的两种RSA方案,是可证明安全的。但第一种不支持IND-CCA
posted on 2026-03-17 23:03 春秋十二月 阅读(9) 评论(0)  编辑 收藏 引用 所属分类: Cryptography