2022年elgamaml签名设计报告 .pdf
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_05.gif)
《2022年elgamaml签名设计报告 .pdf》由会员分享,可在线阅读,更多相关《2022年elgamaml签名设计报告 .pdf(17页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、专业课程设计 I 报告( 2008 / 2009 学年 第 二 学期)题目:ElGamal 签名设计专业信息安全学生姓名吴俊锋班级学号B08030216 指导教师王志伟指导单位南京邮电大学日期2010.4 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 1 页,共 17 页 - - - - - - - - - 1 指导教师成绩评定表学生姓名班级学号专业评分内容评分标准优秀良好中等差平时成绩认真对待课程设计,遵守实验室规定,上机不迟到早退,不做和设计无关的事设计成果设计的科学、合理性功
2、能丰富、符合题目要求界面友好、外观漂亮、大方程序功能执行的正确性程序算法执行的效能设计报告设计报告正确合理、反映系统设计流程文档内容详实程度文档格式规范、排版美观验收答辩简练、准确阐述设计内容,能准确有条理回答各种问题,系统演示顺利。评分等级指导教师简短评语指导教师签名日期备注评分等级有五种:优秀、良好、中等、及格、不及格名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 2 页,共 17 页 - - - - - - - - - 2 Elgamal 签名设计一、课题内容和要求主要实现的模
3、块包括,计算体系参数,计算密钥,对文件签名,验证签名文件。该部分可参考前面给出的问题描述再加以细化一些计算体系参数随机素数 p,用户的私有密钥 x,g 和 x 计算得到的整数 y,消息 m,随机数 k。计算密钥公开密钥( p,g,y) ,私有密钥 x 对文件签名任何一个给定的消息都可以产生多个有效的ELGamal 签名。验证签名文件验证算法能够将上述多个ELGamal 签名中的任何一个当作可信的签名接受。二、设计思路分析ElGamal 算法既能用于数据加密也能用于数字签名,其安全性依赖于计算有限域上离散对数这一难题。密钥对产生办法首先选择一个素数p,两个随机数 , g 和 x,g, x p,
4、计算 y = gx ( mod p ),则其公钥为 y, g 和 p。私钥是 x。g 和 p 可由一组用户共享。ElGamal 用于数字签名。被签信息为M ,首先选择一个随机数k, k与 p - 1互质,计算a= gk ( mod p ) 再用扩展 Euclidean 算法对下面方程求解b:M = xa + kb ( mod p - 1 ) 签名就是 ( a, b )。随机数 k 须丢弃。验证时要验证下式:ya * ab ( mod p ) = gM ( mod p ) 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整
5、理 - - - - - - - 第 3 页,共 17 页 - - - - - - - - - 3 同时一定要检验是否满足1= a p。否则签名容易伪造。ElGamal 签名的安全性依赖于乘法群(IFp)* 上的离散对数计算。 素数 p 必须足够大, 且 p-1至少包含一个大素数。因子以抵抗Pohlig & Hellman算法的攻击。 M一般都应采用信息的 HASH 值( 如 SHA 算法)。ElGamal 的安全性主要依赖于p 和 g,若选取不当则签名容易伪造,应保证g 对于 p-1 的大素数因子不可约。一般的 ElGam数字签名方案在系统中有两个用户A和 B,A要发送消息到 B,并对发送的消
6、息进行签名。 B收到 A发送的消息和签名后进行验证。1 系统初始化选取一个大的素数p,g 是 GF(p)的本原元。 h:GF(p)GF(p),是一个单向 Hash函数。系统将参数p、g 和 h 存放于公用的文件中,在系统中的每一个用户都可以从公开的文件中获得上述参数。2 对发送的消息进行数字签名的过程假定用户 A要向 B发送消息 m 1,p-1 ,并对消息 m签字。第一步:用户A选取一个 x 1,p-1作为秘密密钥,计算y= (mod p) 作为公钥。将公钥 y 存放于公用的文件中。第二步: 随机选取 k 1,p-1且 gcd(k,(p-1)=1,计算 r= (mod p)。对 一般的ElGa
7、mal 型 数字签 名方 案有 签名 方 程( Signature Equation ) :ax=bk+c(mod(p-1) 。其中(a ,b,c) 是(h(m),r,s)数学组合的一个置换。由签名方程可以解出s。那么(m,(r,s)就是 A对消息 m的数字签名。第三步: A将(m,(r,s)发送到 B 3 数字签名的验证过程当 B接收到 A发送的消息 (m,(r,s),再从系统公开文件和A的公开文件中获得系统公用参数 p,g,h 和 A的公钥 y。由(m,(r,s)计算出 (a ,b,c) 验证等式:= (mod p) 是否成立。在该部分中叙述每个模块的功能要求或者如何开展此题目的求解?三、
8、概要设计在此说明每个部分的算法设计说明(可以是描述算法的流程图),每个程序中使用的存储结构设计说明 (如果指定存储结构请写出该存储结构的定义,如果用面向对象的方法,应该给出类中成员变量和成员函数原型声明)。整个程序的流程图名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 4 页,共 17 页 - - - - - - - - - 4 产生素数 p 由用户选择素数 p 的范围,来算出p 函数定义为int prime_number_p(); 产生随机数 g g 是一个在 1-(p-1)中的一
9、个随机数函数为 int random_number_g(int p) 产生一个随机数g 输入私钥x 计算出公钥y 输入 m 计算出签名(a,b)验证签名产生一个素数p 由用户输入产生素数的范围 n,m P-m 判断 m 是否为素数m=m-1 mn Y N N Y 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 5 页,共 17 页 - - - - - - - - - 5 p 是选择的大素数利用随机函数 rand()%p来得 g。产生公钥 y 自定义函数为 int PKI_y(int
10、p,int g,int x) P 是产生的大素数, g 是大素数的生成元, x 是私钥计算公式 y=gx(mod p) 产生 m 签名( a,b)自定义函数void elg_sign_develop(int g,int p,int x,int m) g 是 p 的生成元, p 是大素数, x 是私钥, m 是要签名的数据验证签名自定义函数名 void elg_sign_test(int y,int p,int m,int g,char name) y 是公钥, p 是大素数, m 是签名的数据, g 是大素数的生成元b=i 计算a= gk ( mod p )i=1 x*a+k*b)%(p-1)
11、=m i=i+1 输出 a 产生一个随机数 k K 与 p-1 互质Y N Y N 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 6 页,共 17 页 - - - - - - - - - 6 四、详细设计#include #include #include int a,b; int prime_number_p(); int random(int); int m_develop(int ); /*-*/ int prime(int p) int i,j; for(i=2;i=n;p
12、-) if(prime(p)=1) return p; 计算i=(ya)*(ab)%p; 计算j=(gm)%p; i=j Y N 输出签名正确输 出 不 是name 的签名名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 7 页,共 17 页 - - - - - - - - - 7 / 求出 n,m 之间的最大素数/*-*/ int prime_number_p() int p,m,n; cout 为一组用户产生一个公钥P(p 为素数 )endl; cout 请输入 p 所在范围n,
13、m(系统将选择最大的素数P)endl; coutn; coutm; p=prime_number_max(n,m); if(p=0) coutn,m 中无素数 ; p=prime_number_p(); return p; /p 的产生/*-*/ int Random_number_g(int p) int g; srand(int) time (NULL); g=rand()%p; return g; /g 的产生int PKI_y(int p,int g,int x) int y; int i; y=1; for(i=0;ib) s0=a; s1=b; else 名师资料总结 - - -精
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 2022年elgamaml签名设计报告 2022 elgamaml 签名 设计 报告
![提示](https://www.taowenge.com/images/bang_tan.gif)
限制150内