现代密码学:公钥密码-期末复习大纲

  1. 公钥密码体制的特点

    1. 最大的特点
      1. 将加密和解密能力分开

    2. 算法的重要特性
      1. 已知密码算法和加密密钥,求解解密密钥在计算上不可行。

    3. 公钥体制加密
      1. 公钥用于加密,私钥用于解密,私钥只有自己知道

    4. 公钥体制认证
      1. 私钥用于加密,公钥用于解密,私钥只有自己知道

      2. 完成了对信息来源和信息完整性的认证

      3. 问题
        1. 需要很大的存储空间,既需要存储明文,也需存储密文(数字签字)

        2. 消息会被任何人窃听

      4. 解决
        1. 减小文件的数字签名的大小,得到一个较短的比特串(认证符)

        2. 为同时提供认证功能和保密性,可使用双重加密:先用私钥加密(提供数字签字),后用公钥加密

  2. 公钥密码算法满足的要求

    1. 本质:是一个陷门单向函数
      1. 函数是易于计算的,但求逆是不可行的

      2. 研究公钥密码算法就是找出合适的陷门单向函数

    2. 密钥对的产生是容易的(由接收方产生)

    3. 加密,解密在计算上是容易的

    4. 由公钥求私钥是不可行的

    5. 由密文,公钥,恢复明文是不可行的

    6. 加解密次序可换(对部分算法有要求)

  3. 对公钥密码体制的攻击

    1. 密钥太短,则容易受到穷搜索攻击
      1. 解决:密钥足够长。但密钥太长会使得加解密太慢而不实用

    2. 寻找从公开钥计算秘密钥的方法
    3. 可能字攻击(仅适用于对公钥密码算法的攻击)
      1. 用公钥对可能的密钥(明文)加密,若结果和密文一致,则对应的密钥(明文)被找出

      2. 本质是对密钥(明文)的穷搜索攻击

      3. 解决:在明文后添加一些随机比特

  4. RSA算法

    1. 地位
      1. 理论上最成熟完善的公钥密码体制

    2. 密钥的产生
      1. d * e  同余 1 mod  ψ(pq)

      2. p,q是保密的大素数,gcd(e,ψ(pq))=1

      3. 以{e,n}为公开钥,{d,n}为秘密钥

      4. 寻找大素数是一个繁琐的工作,计算e、d可由Euclid算法完成

    3. 密钥的安全性要求
      1. |p-q|足够大

        1. 否则顺序检查大于 根号n的整数x,容易找到x²-n=y²

      2. p-1和q-1有大的素因子

        1. 这是因为可能的重复加密攻击法,重复加密能够恢复出密文m

    4. 分组
      1. 使得每个分组对应的十进制数小于n,即分组长度小于logn

    5. 加密
      1. c 同余m的e次方(mod n)

    6. 解密
      1. m 同余 c的d次方 (mod n)

      2. m和n未必互素

    7. 问题
      1. 中间结果大,重复的指数运算

      2. 解决

        1. 利用模运算的性质减小中间结果

        2. 采用快速指数算法

      3. 解密的速度过慢

      4. 解决

        1. 利用中国剩余定理

    8. 安全性
      1. 基于分解大整数的困难性假定

        1. 假设是NP问题

        2. 当n成功被分解时,攻击成功

      2. 估计在未来一段时期,密钥长度介于1024-2048比特之间的RSA是安全的

      3. 不通过大整数分解的方法的攻击

        1. 由p,q确定ψ(n)和由ψ(n)确定p,q是等价的,即由n,ψ(n),便能轻易得到p,q

    9. 攻击
      1. 共模攻击
        1. 当模数n相同,明文消息相同时

          1. 敌手截获c1,c2,利用Euclid算法,e1,e2进行辗转相除,c1,n进行辗转相除,获得m

      2. 低指数攻击
        1. 当e很小,ni互素(否则通过辗转相除能获得ni的分解)时

          1. 由中国剩余定理求出m

  5. 背包密码体制

    1. 原理
      1. 设A是n个不同正整数构成的n元组,s是密文,背包问题就是从A中找到ai,使其和等于s。

    2. 加密
      1. 把二进制数x(长度=n)对应位置为1的ai相加,得到s。即完成一个十进制数到另一个十进制数的单向映射

    3. 解密
      1. 由于A的所有子集非常大,故背包问题是NPC问题。解密无异于穷搜

    4. 优化
      1. 构建超递增背包向量

        1. 容易通过贪婪算法求解

        2. 问题

          1. 敌手若得知超递增背包向量,也容易解密

        3. 解决

          1. 用模乘对A进行伪装,k>∑ai,gcd(t,k)=1,B 同余t*A mod k

        4. 以B作为公钥,以t,t逆,k作为私钥

    5. 改进后的解密
      1. 用t逆*c mod k求出s,把s当做超递增背包向量A的容积

    6. 破译
      1. 不必找到正确的k和t,只要找到能够产生超递增背包向量的任意k和t

  6. Rabin密码体制

    1. 破译该体制等价于大整数分解

    2. 特征
      1. 对同一密文,有可能有两个以上对应的明文

      2. 选取公钥e=2

        1. e小意味着d大,而d大意味着难解密,但e小容易被低指数攻击

    3. 密钥的产生
      1. 选取两个形如4k+3的大素数,计算n=p*q

    4. 加密
      1. c 同余 m²(mod n)

    5. 解密
      1. 方程的解容易求出,每个方程都有两个解

        1. 由于每个方程都有两个解,故一共有四个解,也即每一密文对应的明文不唯一。

  7. NTRU公钥密码系统

    1. 基于的公钥密码系统

    2. 特点
      1. 密钥短

      2. 容易产生

      3. 算法运算快

      4. 所需存储空间小

    3. 算法的参数
      1. 3个整数(N,p,q)和4个次数为N-1的整系数多项式集合Lf,Lg,LΦ,Lm

      2. gcd(p,q)=1,q>p,p,q未必是素数

    4. 密钥的产生
      1. 由接收方完成

      2. 从Lg中选取f,g,f在模q下逆元为Fq,f在模p下逆元为Fp,计算h同余Fq*g mod q

      3. 以h为公开钥,f为私密钥

    5. 加密
      1. 从Lm中选取m,从LΦ中选取Φ,计算e同余pΦ*h+m mod q

    6. 解密
      1. 计算a同余f*e mod q,a的系数在-q/2到q/2之间

      2. m同余Fp*a mod p

  8. 椭圆曲线密码体制

    1. 特点
      1. 可以用短的多的密钥来获得较大的安全性

    2. 有限域上的椭圆曲线
      1. 加法具有加法运算的一般性质

      2. 当4a²+27b²=0时,点Q的倍点运算无定义

      3. Ep(a,b)表示0≤x<p,0≤y<p的整点(第一象限中的整数点)并上无穷远点O,最终Ep(a,b)是一个Abel群

      4. 当P是Ep(a,b)上的点时,-P也是Ep(a,b)中的点(mod p)

      5. 倍点计算方法
        1. P126

      6. 椭圆曲线上的点数
        1. 定理4-22

    3. 明文消息到椭圆曲线上的嵌入
      1. 设明文消息是m,k是一个足够大的整数,计算x=mk+j,直到x³+ax+b(mod p)有正平方根

    4. 椭圆曲线到明文消息的获取
      1. m=向下取整 x/30

    5. 椭圆曲线上的密码
      1. 由k,P易求Q,但由P,Q求k是困难的,即椭圆曲线上的离散对数问题

  9. Diffie-Hellman密钥交换

    1. 基于有限域上离散对数问题的公钥体制

    2. 密钥交换
      1. 取Ep(a,b)的一个生成元G(x1,y1),要求G的阶是一个非常大的素数

      2. A选取小于n的整数na作为秘密钥,将PA=nA*G作为公开钥

      3. 由K=nB*PA产生双方的共享密钥

  10. ELGamal密码体制

    1. 基于有限域上离散对数问题的公钥体制

    2. 算法
      1. 选取素数p,及小于p的随机数g,密钥x

      2. 计算y 同余 g的x次方 mod p

      3. 将{y,g,p}作为公钥,x作为私钥

    3. 加密
      1. C1 同余 g^{k} mod p,C2 同余 y^{k}* M mod p,gcd(p-1,k)=1

      2. 密文为(C1,C2)

    4. 解密
      1. M=C2/C1的x次方 mod p

  11. 利用椭圆曲线实现ElGamal密码体制

    1. 加密
      1. 取Ep(a,b)及其生成元G(x1,y1),将明文m嵌入到曲线上的点Pm

      2. 用户A选取小于阶的整数nA,以PA=nA*G作为公钥

      3. 选取随机正整数k,计算Cm={kG,Pm+kPA}

    2. 解密
      1. 第二个点减去nA对第一个点的倍乘

    3. 相比于有限域上的离散对数问题的公钥体制的优点
      1. 安全性高

        1. 难以解决离散对数问题

      2. 密钥量小

        1. 椭圆曲线密码体制所需的密钥量,远少于有限域上的离散对数问题的公钥体制的密钥量

      3. 灵活性好

        1. 有限域的q确定时,循环群确定。

        2. 而椭圆曲线的q确定时,通过改变曲线参数,得到不同的循环群

    4. 其他优点
      1. 椭圆曲线具有丰富的群结构和多选择性

      2. 保持和RSA体制同样安全性能的前提下大大缩短密钥长度

  12. 基于素数域的SM2椭圆曲线公钥密码加密算法

    1. 中国商用公钥密码标准算法

    2. 基本参数
      1. Fp的阶为m比特长的素数,p尽可能大

      2. 任取长度不小于192比特的比特串SEED;利用256比特输出的SM3哈希算法得到H,进一步利用H和p得到r

      3. 定义曲线E(Fp):y²=x²+ax+b,满足rb²同余a³ mod p,且4a³+27b²≠0 mod p

      4. 定义基点G=(xG,yG)及其阶n,阶为m比特长的素数

      5. 计算余因子h=|E(Fp)|/n

    3. 密钥的产生
      1. 秘密钥取1~n-1的随机数dB

      2. B的公开钥取PB=dB*G

    4. 加密
      1. 图4-5

    5. 解密
      1. 图4-6

  • 12
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值