现代密码学(三)——ElGamal密码体制

    在密码学中,ElGamal加密算法是一个基于Diffie-Hellman密钥交换的非对称加密算法,它在1985年由塔希尔·盖莫尔提出,既可用于加密,也可用与签名。该体制的安全性是基于Z_p^*中有限群上的离散对数的困难性。

一、参数

    令Z_p是一个有p个元素的有限域,p是一个素数,令g是Z_p^*Z_p中除去0元素)中的一个本原元(或称生成元)。明文集M为Z_p^*,密文集C为Z_p^*  ×  Z_p^*,S为签名空间 Z_p^* × Z_{p-1}

    私钥:选择一个随机数\alpha为私钥,\alpha < p

    公钥:选定g,计算公钥\beta = g^{\alpha } mod p,完整公钥为{p,g,\beta }

二、EIGamal加密

    选择随机数k \in Z_p^*,且(k,p-1)= 1,即互素,计算:

    y_1 = g^k mod p (随机数k被加密)

    y_2 = M\beta ^k mod p (明文被随机数k和公钥\beta加密)

    M是发送的明文组。密文由y_1,y_2级联构成,即密文C = (y_1 || y_2)。

    密文由明文和所选的随机数k来定,因而是非确定性加密,一般称为随机化加密,由于不同时刻的随机数k不同,对同一明文加密的密文也不同。

三、EIGamal解密

    接收方接收到密文组C后,计算:

    M = y_2 / y_1^\alphaM\beta ^k / g^{k\alpha } = Mg^{ak} / g^{k\alpha } mod p

    就能得到相应的明文。

四、例子

    假设Alice与Bob是通信的双方,p = 19,g = 10

    1)Alice选择\alpha = 5;

    2)计算\beta = g^\alpha mod p = 10^5 mod 19 = 3;

    3)Alice的私钥为5;公钥为 {p,g,\beta}

    4)现在Bob想将明文M = 17加密后发送给Alice,则做如下计算:

      a.Bob选择随机数k = 6;

      b.计算 K = \beta^k = 3^6  mod 19 = 729 mod 19 = 7;

      c.计算 y_1 = g^k mod p = 10^6 mod 19 = 11  

               y_2 = MK mod p = 17 × 7 mod 19 = 5;

    5)Bob将发送给Alice密文,

            C = (y_1 || y_2)= (11 || 5);

    6)Alice收到密文后进行解密:

            M = y_2 / y_1^\alpha mod p= 5 / 11^5 mod 19 = 17;

五、EIGamal签名

    给定消息M发送这对其进行签名,进行如下计算:

      1)选择秘密随机数k \in Z_p^*

      2)计算H(M),r = g^k mod p,

              s = (H(M)-xr)k^{-1} mod (p-1);

      3)将Sig(M,k)S = (r || s)作为签名,将M,

(r || s)送给对方;

      4)验证:接收者先计算H(M),并按下式验证:

        Ver_k(H(M),r,s) = 真 \leftrightharpoons y^rr^s = g^{H(M)} mod p

       这是因为y^rr^s = g^{rx}g^{sk} = g^{rx+sk} mod p,

       有(rx+sk) = H(M) mod (p-1),

       故有y^rr^s = g^{H(M)} mod p。

  • 5
    点赞
  • 39
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值