精华内容
下载资源
问答
  • elgamal数字签名方案
    2021-05-25 02:48:31

    Elgamal算法由T.E1Gamal在1985年发表的一篇论文中提出,是Rabin体制的一种变型。其修正形式已被美国国家标准技术研究所作为数字签名标准(DS),其核心就是著名是数字签名方法(DSA)。与RSA密码体系既可以用于公钥加密又可以用于数字签名等计划。E1gamal数字签名计划是专门为数字签名的意图而规划的。后来有很多变型的Elgamal签名计划被提出。在1989年,Schnorr提出了一种可看做是Eigamal数字签名计划的变型的一种签名计划,其签名的长度被大大地缩短了。数字签名办法(DSA)是E1Gamal数字签名计划的另外一种变型,它吸收了Schnorr签名计划的一些思维。

    Elgamal数字签名算法的理论基础是求解离散对数的困难性。基于离散对数问题的数字签名体制是数字签名体制中最为常用的一类,其中包括 Elgamal签字体制、DSA签字体制、 Okamoto签字体制等。

    Elgamal数字签名方案可分为初始化进程(设置体系参数,发生密钥)、签名进程和验证进程三个部分。

    1)初始化过程—设置系统参数,产生密钥

    p、q为两个大素数,可使Z*q中求解离散对数为困难问题。用户A秘密密钥x∈Z*q;

    用户A的公开密钥为y=gx mod p 。

    2)签名过程

    对于待签名的消息m,用户A执行以下步骤:

    (1)计算m的散列值H(m)。

    (2)选择随机数k:k∈RZ*p,计算r=gk(mod p)

    其中, k∈RZ*q表示k是以Z*p中随机选取的, Z*p=Zp-{0}

    (3)计算s=(H(m)-xr)k-1-(mod p-1)。(r,S)即为产生的数字签名。

    3)验证过程

    接收方在收到消息m和数字签名(r,s)后,先计算H(m)并按下式验证:

    Ver(y,(r,s),H(m))=True台→yrrs=gH(m)(mod p)

    正确性可由下式证明:

    yrrs =grxgks=grx+H(m)-rx=gH(m)(mod p)

    4)安全性

    该方案的安全性基于求离散对数的困难性。所谓离散对数,就是给定正整数x、y、n求出正整数k(如果存在的话),使y=xk(mod n)。就目前而言,人们还没有找到计算离散对数的快速算法(所谓快速算法,是指其计算复杂性在多项式范围内的算法,即O(logn)k,其中k为常数)。

    该计划的安全性根据求离散对数的困难性。所谓离散对数,就是给定正整数x、y、n求出正整数k(如果存在的话),使y=xk(mod n)。就现在而言,人们还没有找到核算离散对数的快速算法(所谓快速算法,是指其核算复杂性在多项式范围内的算法,即O(logn)k,其间k为常数)。

    5)应用

    此体制专门设计作为签名使用ANSIX9.30-199X已将Eigamal签字体制作为签名标准算法。

    更多相关内容
  • Elgamal数字签名主要利用离散对数的特性来实现签名,具体方式如下: 生成 随机选择 签名算法 验证算法
  • 主要为大家详细介绍了eclipse实现ElGamal数字签名,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
  • Elgamal数字签名

    2015-10-07 14:13:42
    Elgamal数字签名的JAVA代码,比较简单,希望有用
  • ElGamal数字签名

    2021-04-19 16:54:42
    ElGamal数字签名

    ElGamal数字签名

    ElGamal数字签名方案使用私钥加密,公钥解密。

    ElGamal数字签名方案的基本元素是素数q和a,其中a是q的原根。用户A通过以下步骤产生公钥/私钥对:

    1. 生成随机整数x,使得 1<x<q-1
    2. 计算y=a^x mod q
    3. A的私钥是x,公钥是{q,a,y}

    要对消息M签名,用户A首先计算哈希值m=H(M),这里m是一个满足0<=m<=q-1的整数,然后A通过下列步骤产生数字签名:

    1. 选择一个随机整数k,使得1<=k<=q-1,并且gcb(k,q-1)=1,即k与q-1互素
    2. 计算s1=a^k mod q 
    3. 计算k^(-1) mod (q-1) 即 计算k模q-1的逆
    4. 计算s2=k^(-1)(m-xs1)mod(q-1)
    5. 签名包括(s1,s2)对

    任意用户B都能通过如下步骤验证签名:

    1. 计算v1=a^m mod q
    2. 计算 v2=(y^s1)(s1^s2) mod q
    3. 如果v1=v2,则签名合法

    举例如下:

    下图是10 (mod 19)的整数幂(其中a是10)

    可以理解为

     

    知道此处取a=10,q=19

    假设Alice想用哈希值m=14来对消息进行签名:

    1. 选择x=16
    2. 计算y=a^x mod q = 10^16 mod 19 =4 (可查看上图查找)
    3. Alice的私钥为16,公钥为{q,a,y}={19,10,4}

    假设Alice想用哈希值m=14对消息进行签名:

    1. Alice选择k=5,因为gcb(5,18)=1(并且,k的选择要在1-18间)
    2. s1=a^k mod q = 10^5 mod 19 = 3
    3. k^(-1) mod (q-1) =5^(-1) mod 18 =11  (分数模运算)
    4. s2=k^(-1)(m-xs1)mod(q-1) =( (k^(-1) mod (q-1) ) ((m-xs1) mod (q-1)) ) mod (q-1) = 11 x2  mod 18 =4

    Bob可以对签名进行验证

    1. v1=a^m mod q = 10 ^14  mod  19 = 16
    2. v2=(y^s1)(s1^s2) mod q  =(4^3) (3^4) mod 19 = 5184 mod 19 =16
    3. 因此签名有效

     

     

     

     

     

     

     

     

     

     

     

    展开全文
  • ELGamal数字签名.doc

    2021-05-25 02:49:29
    ELGamal数字签名摘要随着网络的发展,人们之间的各种交流变得越来越来方便,但同时也对信息传递的安全提出了新的要求,数字签名随之广泛的深入到了人们的日常生活中。ELGamal作为目前应用比较广泛的数字签名算法,其...

    ELGamal数字签名

    摘要

    随着网络的发展,人们之间的各种交流变得越来越来方便,但同时也对信息传递的安全提出了新的要求,数字签名随之广泛的深入到了人们的日常生活中。

    ELGamal作为目前应用比较广泛的数字签名算法,其安全性,以及可实现程度,在很大程度上决定了它的应用范围。本文主要对数字签名体制中的签名和认证过程中所需的模块,进行了必要的描述大整数运算算法,素性测试和随机数生成算法,ABSTRACT

    With the development of network, the communions between people become more and more convenient, but also it brings forward the new security requirements of information transfer. Digital Signature goes into the people's daily life along with these processes.

    As one of the most widely used Digital Signature, the application of the ELGamal Signature is largely depend on his information security and the operation process. In this paper, we will discuss the process of the ELGamal Signature and the attestation. One can check his authorization of the sign which rely on the problem of the discrete logarithm. And then we will analyze the security of the signature. The application the ELGamal signature in the ID-BASE system will also be discussed. The key part of this paper is to introduce the concept the large integer. The arithmetic of the large integer is crucial in most cryptosystems.As to the construction of a large prime integer,we will discuss the method to construct a Random Number and the primality test.Then the high-order-cycle generator method for the formation of the foundation will introduced too.In the last part of the paper,we will go through the process of the ELGamal Signature.

    keywords: ELGamal Digital Signature authorization large Integer

    large Prime Number generator

    目录

    第一章 绪论1

    1.1 数字签名算法研究的背景1

    1.1.1 信息安全的重要性1

    1.1.2 数字签名的概念1

    1.1.3认证的基本概念2

    1.2 ELGamal签名算法概述3

    1.3 ELGamal签名算法的主要应用领域4

    1.4 本文的研究安排4

    第二章 ELGamal数字签名5

    2.1 ELGamal公钥密码体制5

    2.1.1 Diffie-Helfman体制5

    2.1.2 ELGamal密码体制6

    2.2 ELGamal数字签名体制6

    2.2.1 ELGamal签名体制6

    2.2.2 ELGamal签名安全性分析8

    2.3 基于身份的ELGamal签名体制9

    2.3.1 身份认证概念9

    2.3.2 双线性对的概念10

    2.3.4 公钥密码体制的概念10

    2.3.4 椭圆曲线密码体制的概念11

    2.3.5 基于身份的ELGamal签名具体步骤于验证过程12

    2.4 本章小结13

    第三章 ELGamal签名算法的软件实现15

    3.1 大整数的概念15

    3.

    展开全文
  • ElGamal数字签名笔记

    千次阅读 2021-10-06 19:36:42
    ElGamal数字签名核心思想在于这样的表达式: 1)am−S1XA×aS1XA≡am(modp),S11) a^{m-S_1X_{A}} \times a^{S_1X_{A}}\equiv a^{m} \pmod{p},S_11)am−S1​XA​×aS1​XA​≡am(modp),S1​是常数; 2)2)2) 对于...

    一、ElGamal数字签名的基本要素

    1)a和q,q是素数,a是q的本原根。
    2)签名方生成随机整数 X A , ( 1 < X A < q − 1 ) X_A,(1<X_A<q-1) XA(1<XA<q1),计算 Y A = a X A ( m o d q ) Y_A=a^{X_A}\pmod q YA=aXA(modq),得到公钥{ q , a , Y A q,a,Y_A q,a,YA},私钥 X A X_A XA

    二、ElGamal数字签名核心思想

    签名方用私钥生成签名,然后将原文件和签名发送给验证方,验证方用公钥对签名解密得到原文件,并做比对。在ElGamal中,原文件是 V 1 = a m ( m o d q ) V_1=a^m \pmod q V1=am(modq),私钥是 X A X_A XA,生成的签名是 ( S 1 , S 2 ) (S_1,S_2) (S1,S2),验证是用公钥{ q , a , Y A q,a,Y_A q,a,YA}和签名 ( S 1 , S 2 ) (S_1,S_2) (S1,S2)结合起来运算,得到 V 2 = S 1 S 2 × Y A S 1 ( m o d q ) V_2=S_1^{S_2} \times Y_A^{S_1}\pmod q V2=S1S2×YAS1(modq),并对比 V 1 V_1 V1 V 2 V_2 V2。在这之中,验证是恢复原文件的过程,这里重点讨论这一过程。该过程的还原思路建立在这个等式下:

    1 ) a m − S 1 X A × a S 1 X A ≡ a m ( m o d q ) , S 1 1) a^{m-S_1X_{A}} \times a^{S_1X_{A}}\equiv a^{m} \pmod{q},S_1 1)amS1XA×aS1XAam(modq)S1是常数;
    2 ) 2) 2) 对于任意整数 i , j , a i = a j ( m o d q ) i,j,a^{i}=a^{j}\pmod{q} i,jai=aj(modq),当且仅当 i ≡ j ( m o d q − 1 ) i \equiv j \pmod{q-1} ij(modq1).

    这里暂且还不知道 S 1 S_1 S1是什么,就当作常数来看;

    根据 Y A = a X A ( m o d q ) , 有 a S 1 X A = Y A S 1 ( m o d q ) Y_A=a^{X_A} \pmod q,有a^{S_1X_{A}}=Y_A^{S_1}\pmod q YA=aXA(modq)aS1XA=YAS1(modq)
    于是 a m − S 1 X A × a S 1 X A ≡ a m − S 1 X A × Y A S 1 ( m o d q ) a^{m-S_1X_{A}} \times a^{S_1X_{A}}\equiv a^{m-S_1X_{A}} \times Y_A^{S_1}\pmod q amS1XA×aS1XAamS1XA×YAS1(modq);

    此时等式右边就构成了验证逻辑,只要签名方给出 S 1 S_1 S1 ( m − S 1 X A ) (m-S_1X_A) (mS1XA),验证方就能用公钥验证。但是此时一个关键问题是知道了 S 1 S_1 S1 ( m − S 1 X A ) (m-S_1X_A) (mS1XA)中的私钥 X A X_A XA就能被算出来。所以要么隐藏 S 1 S_1 S1,要么隐藏 ( m − S 1 X A ) (m-S_1X_A) (mS1XA)。ElGamal数字签名则是隐藏了 ( m − S 1 X A ) (m-S_1X_A) (mS1XA),选择将其增加一层加密,加密的密钥用离散对数将其保护起来:

    选择随机整数 K K K,满足 1 ≤ K ≤ q − 1 , 且 K 和 q − 1 1\leq K\leq q-1,且K和q-1 1Kq1,Kq1互素,并计算 K − 1 ( m o d q − 1 ) K^{-1}\pmod{q-1} K1(modq1)

    随机整数 K K K就是实际上的密钥。至于为什么 K − 1 K^{-1} K1是模 q − 1 q-1 q1,是因为欧拉定理。

    计算 K − 1 × ( m − S 1 X A ) K^{-1}\times(m-S_1X_A) K1×(mS1XA),令 S 2 = K − 1 × ( m − S 1 X A ) S_2=K^{-1}\times(m-S_1X_A) S2=K1×(mS1XA)
    原式化为 a K × S 2 × Y A S 1 a^{K\times S_2}\times Y_A^{S_1} aK×S2×YAS1

    这样的话,只要给出 a K a^K aK S 1 、 S 2 S_1、S_2 S1S2就能完成密钥。

    关于离散对数的笔记:
    离散对数问题,比如 k = a X ( m o d q ) k=a^{X} \pmod{q} k=aX(modq)( a a a q q q的本原根),公开 k k k a a a,可以保证 X X X计算不出来,这是安全性的根本。反过来说,对于关于 X X X的算法,要想保护 X X X的安全,没有必要把 X X X放在信道上传输,只利用离散对数将其“包装”成 k k k,实际应用中传输 k k k并用 k k k来运算,就能完成加密和解密。

    由于 a K a^K aK保障了 K K K的安全,所以不用担心 K K K泄露。同时 S 1 S_1 S1是任意的整数,干脆令 S 1 = a K S_1=a^K S1=aK,原式则可以变为:

    S 1 S 2 × Y A S 1 = a m ( m o d q ) S_1^{S_2} \times Y_A^{S_1}=a^m\pmod q S1S2×YAS1=am(modq)

    S 1 、 S 2 S_1、S_2 S1S2是签名。

    三、验证ElGamal签名

    验证只要用给的公钥{ q , a , Y A q,a,Y_A q,a,YA}和签名 ( S 1 , S 2 ) (S_1,S_2) (S1,S2),计算出 V 2 = S 1 S 2 × Y A S 1 ( m o d q ) V_2=S_1^{S_2} \times Y_A^{S_1}\pmod q V2=S1S2×YAS1(modq),并和 V 1 = a m ( m o d q ) V_1=a^m \pmod q V1=am(modq)对比即可。

    展开全文
  • ElGamal 数字签名 实验目的 通过实验了解数字签名的过程(签名过程和认证过程),掌握 ElGamal签名方案。 实验原理 ElGamal 数字签名的实现过程 1密钥产生:Alice 要对一个消息签名。 她选择一个大素数 p 和一个...
  • ElGamal数字签名JAVA

    2021-11-28 14:34:06
    ElGamal数字签名JAVA
  • 为此,在环签名理论、 Elgamal数字签名算法与PBFT算法的基础上,提出一种基于 Elgamal数字签名算法的环签名改进方案。对环签名算法进行正确性及匿名性分析,运用环签名方案改进PBFT算法的签名及验证过程,使用 ...
  • elgamal数字签名

    千次阅读 2018-11-25 09:34:00
    elgamal公钥密码算法可用来实现加密以及数字签名。其中数字签名算法原理如下: 1. 秘钥产生:Alice选择大素数p,本原根g,选择一个秘密整数1&lt;&lt;x&lt;&lt;p-2,计算y=g^xmod p,公钥为(p,g,y),...
  • Elgamal算法
  • ElGamal公钥密码算法及ElGamal数字签名方案实现

    万次阅读 多人点赞 2018-03-30 15:41:58
    它既可用于加密又可用于数字签名的公钥密码体制。 一、ElGamal公钥密码算法描述 1.选取一个大素数p,使离散对数问题在有限域GF(p)上是难解的,选取g∈Z是一个本原元。 2.随机选取整数x,1≤x≤p-2,计算y=g^x...
  • ElGamal数字签名优缺点

    2021-04-16 18:53:38
    密码学 ElGamal数字签名优缺点 Schnorr数字签名算法优缺点
  • c语言代码,自己写不出这么长的代码,手里有资源的可以发给我一下吗
  • 提出了一种实用的基于ElGamal数字签名和零知识证明的双向用户鉴别方案,通过随机数和在线的挑战一响应交互机制,保证了身份认证过程中身份认证请求信息的可靠性和有效性;同时利用智能卡技术充分保证了用户秘密信息...
  • Elgamal数字签名原理

    万次阅读 2017-12-01 17:37:36
    Elgamal数字签名  Elgamal数字签名主要也是利用离散对数的特性来实现签名,具体方式如下: 1. 选择一个大素数P、一个本原元G、一个随机整数d,d属于[2,p-2]; 2. 生成β,β=G^d mod P; 3. 此时P、G、β就是公钥...
  • ElGamal数字签名

    2021-06-28 13:48:25
    ElGamal就是一种原理简单,应用广泛的数字签名方法,它的成功很大程度上取决于求解离散对数问题的困难。ElGamal的密钥和参数的产生过程如下: 它先选定一个足够大的素数P, 然后在比P小的正数中选取一个随机数g和...
  • ELGamal
  • 数据完整性算法_ElGamal数字签名方案

    千次阅读 2018-12-10 13:10:00
    ElGama数字签名方案是五种签名方案中的一种,我们知道ElGama加密方案是使用用户的公钥进行加密,使用用户的私钥进行解密。但ElGama数字签名方案是使用私钥进行加密,公钥进行解密。   ElGama方案遵循数字签名的...
  • 使用Elgamal公钥密码系统实现数字签名的程序,程序很小巧。可以自动生成大素数,经测试无误。
  • ElGamal加密算法是一个基于迪菲-赫尔曼密钥交换的非对称加密算法。这篇文章通过示例代码给大家介绍Python实现ElGamal加密算法的相关知识,感兴趣的朋友一起看看吧
  • ElGamal算法的数字签名

    2021-03-09 07:48:55
    3)设 m∈Z 是待签名的消息,秘密随机选取一个整数 k,k∈[1, p-2],且 k 与 p-1 互质2、签名过程1)计算 r 和 s:r=g^k(mod p)s=k^-1(m-rx)(mod p-1)(k^-1 表示 k mod p-1 的逆元)2)(m, r, s)为对消息 ...
  • 数字签名中的elgamal算法

    热门讨论 2011-05-09 18:28:55
    本压缩包中是用C编写的ELGAMAL加密算法

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 2,742
精华内容 1,096
关键字:

elgamal数字签名