[密码学] ElGamal加密算法与离散对数

文章目录

  • 前言
  • 离散对数问题
  • ElGamal加密算法
    • 算法描述
      • 密钥生成
      • 加密算法
      • 解密算法
  • 椭圆曲线群上的ElGamal加密
    • 密钥生成
    • 加密算法
    • 解密算法
    • 优势
    • 点压缩
  • 离散对数问题的困难性
    • 穷举搜索法
    • Shanks算法BSGS
      • 原理
      • 算法描述
    • Pohlig-Hellman算法
      • 原理
      • 伪代码
    • Pollard ρ算法
      • 原理
      • 伪代码
      • 例子
    • 指数计算算法
      • 原理
      • 例子

前言

ElGamal加密算法是由Taher ElGamal于198年提出的一种基于离散对数问题公钥加密算法。是一种非确定性的加密算法,即每次加密会使用一个随机数,加密相同的明文时,不同的随机数可能会产生不同的密文。好的加密算法应该具有非确定性,可引入工作模式将算法转变成非确定性加密算法。

离散对数问题

给定乘法群(G,·),一个阶为n的元素α∈G(即αn=e)以及元素β∈<α>。计算唯一的整数a,0≤a≤n-1,满足**αa=β**,其中a称为β的离散对数以a为底的logβ

[密码学] ElGamal加密算法与离散对数_第1张图片

ElGamal加密算法

算法描述

密钥生成

[密码学] ElGamal加密算法与离散对数_第2张图片

加密算法

[密码学] ElGamal加密算法与离散对数_第3张图片

解密算法

[密码学] ElGamal加密算法与离散对数_第4张图片

椭圆曲线群上的ElGamal加密

[密码学] ElGamal加密算法与离散对数_第5张图片

密钥生成

[密码学] ElGamal加密算法与离散对数_第6张图片

加密算法

[密码学] ElGamal加密算法与离散对数_第7张图片

解密算法

[密码学] ElGamal加密算法与离散对数_第8张图片

优势

①基于计算椭圆曲线上离散对数的困难性

密钥短(160-bit)

③同一基域上选取不同的椭圆曲线

点压缩

表示明文或公钥参数的时候,用点表示,且点有一定规律。

横坐标相同的点,纵坐标互为相反数。

离散对数问题的困难性

穷举搜索法

在0≤a≤n-1之间去遍历a,看哪个a满足条件。

时间O(n),空间O(1)

Shanks算法BSGS

原理

[密码学] ElGamal加密算法与离散对数_第9张图片

算法描述

[密码学] ElGamal加密算法与离散对数_第10张图片

时间O(n0.5),空间O(n0.5)

所以群的阶应该足够大

Pohlig-Hellman算法

原理

[密码学] ElGamal加密算法与离散对数_第11张图片
[密码学] ElGamal加密算法与离散对数_第12张图片
[密码学] ElGamal加密算法与离散对数_第13张图片

伪代码

[密码学] ElGamal加密算法与离散对数_第14张图片

时间复杂度O(cq)

因此群的阶应该含有足够大的素因子

Pollard ρ算法

原理

[密码学] ElGamal加密算法与离散对数_第15张图片

在这里插入图片描述

[密码学] ElGamal加密算法与离散对数_第16张图片

[密码学] ElGamal加密算法与离散对数_第17张图片

[密码学] ElGamal加密算法与离散对数_第18张图片

伪代码

[密码学] ElGamal加密算法与离散对数_第19张图片

[密码学] ElGamal加密算法与离散对数_第20张图片

[密码学] ElGamal加密算法与离散对数_第21张图片

例子

[密码学] ElGamal加密算法与离散对数_第22张图片

[密码学] ElGamal加密算法与离散对数_第23张图片

[密码学] ElGamal加密算法与离散对数_第24张图片

所以群的阶应该足够大

指数计算算法

只适用于模p的群上

原理

[密码学] ElGamal加密算法与离散对数_第25张图片

例子

[密码学] ElGamal加密算法与离散对数_第26张图片

[密码学] ElGamal加密算法与离散对数_第27张图片

[密码学] ElGamal加密算法与离散对数_第28张图片

[密码学] ElGamal加密算法与离散对数_第29张图片

所以模p应该足够大,群中元素难以用少量素数表示

你可能感兴趣的:(密码学)