对ECC的小整数n阶点进行选择明文攻击

合集下载

椭圆曲线密码(ECC)加解密算法的实现

椭圆曲线密码(ECC)加解密算法的实现

毕业论文论文题目椭圆曲线密码(ECC)加解密算法的实现学生姓名学号院别数学与信息科学学院专业信息与计算科学班级指导教师完成时间 2011 年 04 月椭圆曲线密码(ECC)加解密算法的实现摘要本文首先介绍椭圆曲线密码体制(ECC);并简明地给出了椭圆曲线的定义;接着以ElGamal公钥体制的ECC加解密的实现为例具体说明了其实现流程;最后分析了实现结果,安全性能和概述了ECC的发展现状,并对其未来的发展作了展望.关键词椭圆曲线密码;公钥密码,数字签名1引言随着政府部门和行业对网络环境和网络资源依赖程度的增强,涉及国家安全和社会公共安全的所有重大问题都在网络上表现出来. 为了确保信息的保密性,完整性,可用性,可控性,避免国家或个人的信息受到非法获取,破坏,篡改等形式的威胁,人们便提出了用密码技术来保障以电子形式保存或传送的数据. 1985年,N. Koblitz和V. Miller分别独立提出了椭圆曲线密码体制 (ECC),这是一种高安全性,高效率的公钥密码体系,它在密钥强度,加解密的处理速度和存储开销上都有着明显的优势. 采用椭圆曲线密码技术使密钥协商协议可充分利用椭圆曲线密码的优势,在更小密钥量下提供了更大的安全性,所需带宽明显减少,而且还大大降低了用户端的计算负担和存储要求.2椭圆曲线密码体制2.1密码体制的含义密码体制分为对称密码体制和非对称密码体制.非对称密码体制是指在加密过程中,密钥被分为一对.这对密钥中的任何一个密钥都可以作为公开密钥通过非保密方式向他人公开, 而另一把作为私有密钥加以保存. 这对密钥具有这样一个特点: 当知道密钥对中的一个密钥时, 要检测出另一个密钥, 在计算上是不可能的. 公开密钥用来对信息进行加密, 则私有密钥用来对信息进行解密, 反之亦然. 在这个系统中, 每个通信实体都有一个加密密钥和一个紧密相关的解密密钥.通信的双方只要知道对方的公钥,就可以进行安全的通信.2.2 椭圆曲线密码体制椭圆曲线密码体制,即基于椭圆曲线离散对数问题的各种公钥密码体制. 最早由Miller和Koblitz [1] 于1985年分别独立地提出. 它是利用有限域上椭圆曲线的有限点群代替基于离散对数问题密码体制中的有限循环群所得到的一类密码体制. 对于椭圆曲线密码系统(ECC)的安全性,其数学基础是计算椭圆曲线离散对数问题(ECDLP)的难解性[2] . 一般来说,ECC没有亚指数攻击,所以它的密钥长度大大地减少,256bit的ECC密码体制成为目前已知公钥密码体制中每位提供加密强度最高的一种体制.3.椭圆曲线的定义所谓椭圆曲线指的是由韦尔斯特拉斯 (Weierstrass)方程:所确定的平面曲线[1].若F是一个域,满足方程的数偶称为域F上的椭圆曲线 E的点. F域可以是有理数域, 也可以是复数域, 还可以是有限域. 椭圆曲线通常用 E 表示.4.ECC算法的设计思想设, 称为Weierstrass多项式. 当在任意点P成立, 则椭圆曲线称为光滑的或非奇异的. 若E是定义在有限域Fq上的椭圆曲线且其(p为素数), 这样的p称为有限域Fq的特征值. E中恰好有一个Z坐标为0的点(0, 1, 0), 我们称它为椭圆曲线的无穷远点, 用O表示. 椭圆曲线上有理点的个数称为该椭圆曲线的阶, 若亦表示椭圆曲线的阶, 则由(其中), 即Hasse定理. 如果椭圆曲线E定义在域Fq上, 其特征值不等于2和3, 则E 的Weierstrass等式可以简化, 做变换, 进而Weierstrass等式变换为, 其中, 判别式, 此式为椭圆曲线的一般形式. 若令, 则等式变为.根据椭圆曲线进行加密通信的过程:1) 用户A选定一条椭圆曲线,并取椭圆曲线上一点, 作为基点G.2) 用户A选择一个私有密钥k, 并生成公开密钥.3) 用户A将和点K, G传给用户B.4) 用户B接到信息后, 将待传输的明文编码到上一点M(编码方法很多,这里不作讨论),并产生一个随机整数r ( r < n ).5) 用户B计算点.6) 用户B将C1、C2传给用户A.7) 用户A接到信息后,计算, 结果就是点M, 即明文.因为再对点M进行解码就可以得到明文. 密码学中,描述一条上的椭圆曲线,常用到六个参量:,其中p、a、b 用来确定一条椭圆曲线,G为基点,n为点G的阶,h 是椭圆曲线上所有点的个数m与n相除的整数部分[3].5. 椭圆曲线参数的选取和基点的确定5.1 选取参数和确定基点的理论分析在基于椭圆曲线的加解密和数字签名的实现方案中,首先要给出椭圆曲线域的参数来确定一条椭圆曲线. 但并不是所有的椭圆曲线都适合加密,是一类可以用来加密的椭圆曲线,也是最为简单的一类. 下面我们就选用作为我们的加密曲线. 这条曲线定义在Fq上: 两个满足下列条件的小于p (p为素数) 的非负整数a、b:则满足下列方程的所有点,再加上无穷远点∞,构成一条椭圆曲线.其中 x, y属于0到p - 1间的整数,并将这条椭圆曲线记为.参数p的选取:p当然越大越安全,但越大,计算速度会变慢,200位左右可以满足一般安全要求,我们将p取为200比特位的素数.参数a、b的选取: 先随机产生小于p - 1的正整数作为参数a, 然后依据条件,判断随机产生的小于p - 1的正整数是否适合作为参数b.基点的确定:随着参数a, b, p确定,这条曲线就定下来了. 先随机产生0到p - 1间的整数作为基点x坐标,计算的结果再开方就得出基点y坐标.5.2 选取参数和确定基点的具体程序实现具体程序实现如下:……{//GetPrime(b,40); //先随机产生一个参数Bmp_expt_d(a, 3, &temp1);mp_sqr(b, &temp2);mp_mul_d(&temp1, 4, &temp3);mp_mul_d(&temp2, 27, &temp4);mp_add(&temp3, &temp4, &temp5);mp_mod(&temp5,p,&temp);if(mp_cmp(&temp, &compare)!=0 ){break; //满足条件跳出循环}}//, 随机产生X坐标,根据X坐标计算Y坐标GetPrime(x1,30); // 随机产生30比特长的X坐标mp_expt_d(x1, 3, &temp6);mp_mul(a, x1, &temp7);mp_add(&temp6, &temp7, &temp8);mp_add(&temp8, b, &tempx);mp_sqrt(&tempx, y1); // 得到Y坐标……私钥的确定:随机选取1到P - 1之间的素数作为私钥d.公钥的确定:由d 乘我们所确定的基点得到公钥K,即.6. 椭圆曲线密码的算法6.1 椭圆曲线密码算法的特点6.1.1 离散性密码算法需要的是离散值的定点运算,而不是连续值的浮点运算,在密码算法中不允许舍入.6.1.2 大数运算密码算法往往是大数运算,椭圆曲线密码体制要求160位的大数运算,但现有微机的CPU最多只支持64位的运算.1) 要求大容量的数据存储.密码运算通常都要利用大容量的数据表,即用空间来换取时间上的加速. 这就要求运算部件具有大容量的存储.2) 包含大量的并行性.6.2 椭圆曲线密码体制中的有关计算6.2.1 椭圆曲线密码体制中的运算类型作为公开密钥算法的一种,椭圆曲线密码体制要用到点乘、点加、模乘、模加、模逆、模幂这些基本运算,它们的执行速度直接决定着椭圆曲线的加密速度. 为了提高它们的速度,可从以下两方面考虑:(1) 采用高速的算法.(2) 实现算法的并行性(以便在硬件设计中利用多处理器进行并行运算):1) 大数乘、大数取模属于整数域上的运算;2) 模加、模乘、模逆、模幂属于有限域上的运算;3) 点加和点乘属于椭圆曲线的点加群上的运算.6.2.2 简述椭圆曲线的点加和纯量乘法由于本人能力有限,短时间内很难做出一些深层次的研究和探讨,因此只能在这里做一点表面文章. 所以本文在这一部分就结合前面对有关大数计算算法进行的阐述,做一些力所能及的事情. 对于一般的椭圆曲线方程,设点,和的坐标.的计算公式如下:,,其中.当P ≠ Q时,.当P = Q时, 对于椭圆曲线方程, 上述的公式变为:,,其中当P ≠ Q时,.当P=Q时, 由上述运算公式, 可以得出点积mP的运算, 即mP = P + P + … + P, 共m个P相加, 这里m∈N.6.3椭圆曲线的点积的具体程序算法设m的二进制表示为,其中, Q = P, 从左到右依次计算:for( i = n - 2 to 0){ Q = 2Q;if(==1) Q=Q+P;}则Q=mP.Return;函数原形为:bool Ecc_points_mul(mp_int*qx, mp_int*qy, mp_int*px, mp_int*py, mp_int*d, mp_int *a,mp_int *p)成功返回true.int Two_points_add(mp_int*x1, mp_int*y1, mp_int*x2, mp_int*y2, mp_int*x3, mp_int *y3, mp_int *a, bool zero, mp_int*p)成功返回1.7.加密文件的读入与输出7.1椭圆曲线的加密体制在Diffe-Hellman公钥系统体制中,具体的椭圆曲线、曲线上点P及P的周期大素数N都是公开信息.A和B要进行通讯,首先得到椭圆曲线E、点P及素数N. 然后用户A将[1, N-1]中随机选取的整数a作为私钥, A将作为自己的公钥传送给用户B, 与此同时B将 [1, N-1]中随机选取的整数b作为私钥, 并将作为自己的公钥传送给A. A、B各自将自己的私钥点乘于对方传过来的公钥得到, 这样就完成了密钥的交换过程.当用户A需要将待传数据m传送给用户B时, A 利用m和生成, 当用户B得到后, 利用密钥交换过程自己生成的和从用户A处得到的加密数据生成数据m.见下图[5]:7.2加密文件的读入与输出的具体程序实现mp_digit只用28比特,因此一个单元最多可存放三个半字节. 为充分利用存取空间,采用一个单元放三个半字节.7.2.1函数putin()的实现函数putin()的实现的作用: 将明文的二进制比特串赋给mp_int数a. 主要循环部分及说明如下:// chlong为要存入的字符数组长for(j=0; j<<="(mp_digit)CHAR_BIT;" *temp 存入字符 255); 左移8位存入高8位并向左移8位,以便放入下一个字符 temp跳过前一个单元,先存入后一单元 *++temp 每次跳七个字符 i + ="7"; 的两个单元中以7个字符为单元循环,把七个字符放入的mp_int 7; j++){(>> 4); //存放被切分的字符的高四位,temp跳回前一个单元//存入第一单元*temp |= (mp_digit) (ch[i-4] & yy); //存放被切分的字符的低四位yy=(mp_digit)15;*temp <<= (mp_digit)CHAR_BIT; //向左移8位,以便放入下一个字符*temp |= (mp_digit)(ch[i-5] & 255); //存入字符*temp <<= (mp_digit)CHAR_BIT; //左移8位*temp |= (mp_digit)(ch[i-6] & 255); //存入字符*temp <<= (mp_digit)CHAR_BIT; //左移8位*temp++ |= (mp_digit)(ch[i-7] & 255);//存放被切分的字符的低四位,temp跳到后一个单元temp++; //再向后跳一单元,这样和下次的++temp实现每次循环跳两个单元}函数原型为:int putin(mp_int*a, char*ch, int chlong)成功返回0.7.2.2函数chdraw( )的实现函数chdraw()实现将mp_int数a中的比特串还原为字符串并赋给字符串ch: chdraw和putin是相反过程,将putin存入字符的过程反过来取出字符.函数原型为:int chdraw(mp_int* a, char*ch)成功返回0.8.密文的存取和读入此过程难点是如何保证存入文件后,再从文件中读取密文并存入mp_int型数后,和原存放密文的mp_int型数不能有一个比特位的改变.存取时先存 *mp->dp的最高8位,再依次往下存后面3个8位. 依据 *mp->dp的特点,最高8位为0000xxxx,因此,可将255作为一个密文段的结束标志,把前一密文段和后一密文段区分开. 这样在密文文件中,密文的存取结构为:0000xxxx|xxxxxxxx|xxxxxxxx|xxxxxxxx|0000xxxx|……|11111111|0000xxxx|xxxxxxxx|…..0字节 1字节 2字节 3字节 4字节 4x字节下一加密段 x为1或0利用fgetc每次读取一个字符,并赋值给一个字符数组. 当a[i]=255,且i%4=0时截止.读出之后赋值就简单了.存密文:int chmistore(mp_int*a, FILE*fp) 成功返回0把密文赋给mp_int型数a: int miwendraw(mp_int*a, char*ch, int chlong) 成功返回0.9. ECC加密的实现9.1 ECC加密实现的理论依据加密时因P长度取值为200比特,所以所取明文长度应在0到199比特之间,另外需要一个附加的标志字节char(255),所以一次取明文最大长为191比特. 在本程序中一次取20字节. 和RSA不同,ECC运算是基于点的运算. 一个点有两个参数,一个X坐标,一个Y坐标. 所以取明文时需一次取两段,前一段做X坐标,后一段做Y坐标. 因此,一次加密明文为40字节. 由于每次加密要取两段,引发了另外一个问题:当加密文件末尾所剩明文长度小于20字节时的处理. 在本程序中,我们的解决是将剩余明文取作X,而将Y取作0,且不加标志字节char(255),这样解密时,程序在Y中找不到标志字节char(255),就不会往解密文中存任何东西.取得明文后,产生一个随机整数r, 计算点;. 将点、坐标,,,依次存入密文文件[6].9.2 ECC加密的具体程序实现for(i=0; i 0) // Residue为剩余字符数{if (Residue <= enlongtemp ){fread(miwenx,1, Residue, fp); //读入字符串miwenx[Residue]=char(255);putin(&mx, miwenx,Residue+1); //文件存入mp_zero(&my);}else{fread(miwenx,1,enlongtemp,fp); //读入字符串miwenx[enlongtemp]=char(255);fread(miweny,1,Residue-enlongtemp,fp); //读入字符串miweny[Residue-enlongtemp]=char(255);putin(&mx, miwenx,enlongtemp+1); //文件存入putin(&my, miweny,Residue-enlongtemp+1); //文件存入}//加密Ecc_points_mul(&c2x,&c2y,px,py,&r,a,p); //C2=rGEcc_points_mul(&tempx,&tempy,qx,qy,&r,a,p); // rKTwo_points_add(&mx,&my,&tempx,&tempy,&c1x,&c1y,a,zero,p); // C1=M+rK//保存密文chmistore(&c1x,fq);chmistore(&c1y,fq);chmistore(&c2x,fq);chmistore(&c2y,fq);}函数原型为:void Ecc_encipher(mp_int*qx, mp_int*qy, mp_int*px,mp_int*py, mp_int*a, mp_int*p);10.ECC解密的实现10.1ECC解密实现的理论依据解密时,依据存密文时放入的结束标志255,读入密文. 依次取4段, 调用miwendraw将密文存入mp_int型数中,还原为加密时存入的点C1和C2坐标c1x, c1y, c2x, c2y. 依据. 计算(d为私钥),得到明文点坐标,. 其中两点减的计算可如下:;计算完毕后调用chdraw取出mp_int中的明文比特串,依次存入解密文件中,完成解密[6].10.2 ECC解密的具体程序实现while(!feof(fp)){//取C1点X坐标i=0;while(1){stemp[i]=fgetc(fp);if(i%4==0){if(int(stemp[i]&0xFF) == 255 ) goto L1;}i++;}L1: miwendraw(&, stemp, i); //取其他坐标Ecc_points_mul(&tempx, &tempy, &, &, k, a, p); // 计算mp_neg(&tempy, &temp); // -Q=(X,-Y)Two_points_add(&,&, &tempx, &temp, &, &, a, zero, p);int chtem;chtem=chdraw(&,stemp); //从ming中取出字符串//保存解密结果for(int kk=0;kk < chtem;kk++){fprintf(fq,"%c",stemp[kk]);}chtem=chdraw(&,stemp); //从ming中取出字符串//保存解密结果for(kk=0; kk < chtem; kk++){fprintf(fq, "%c", stemp[kk]);}}函数原型为:void Ecc_decipher(mp_int*k, mp_int*a, mp_int*p);11. 测试结果及分析为验证系统的加密解密功能,对系统进行了如下测试:测试环境Intel p4; CPU 1.5G; 256M RAM; Windows XP DEV - C++测试结果利用系统对文本文件、BMP、WORD、EXCEL、EXE等文件进行加密,然后解密. 验证结果表明,给定的明文经系统加密后再解密的结果完全一致, 没有一个比特的偏差,较好的实现了ECC的功能.12.结束语目前,国际上公认的比较安全实用的公钥密码体制是 1985年 Koblitz和Miller分别独立提出的建立在椭圆曲线上的离散对数难题基础上的椭圆曲线密码体制(ECC). 经过长期的理论研究和科学实践,ECC得到了迅猛的发展. 现在椭圆曲线密码体制不仅是一个重要的理论研究领域,而且已经从理论研究转化为实际可用的密码算法,促使民用安全技术走向产业化. 当前,国内外很多生产密码产品的公司都在致力于ECC产品的开发. 椭圆曲线加密算法ECC的安全性,是基于计算有限域上椭圆曲线点集所构成的可交换群上定义的离散对数的困难性. 该算法具有安全性能高,计算量小,处理速度快,存储空间占用小和带宽要求低等特点,已在强调速度的领域如PDA,手机,智能卡等方面得到应用.参考文献:[1] 杨超, 高海燕. 椭圆曲线密码体制理论与其安全性研究[J]电脑知识与技术, 2006,(17).[2] 孙跃刚. 椭圆曲线密码体制中若干问题的研究[D]. 吉林大学 2009. [3] 于彬. 椭圆曲线密码算法的研究与实现[D]. 沈阳工业大学.[4] 王庆先. 有限域运算和椭圆曲线数乘运算研究[D]. 电子科技大学2006.[5] 李学俊. 基于椭圆曲线离散对数问题的公钥密码及其算法研究[D].[6] 杨君辉, 戴宗铎, 杨栋毅, 刘宏伟. 关于椭圆曲线密码的实现[J]通信技术,2001(06).On the Realization of the Elliptic Curve Encryption Algorit hmYan MeitingAbstract: In this paper, we first introduce the elliptic curve encryption algorithm, then give the definition of the elliptic curve briefly. The ElGamal public encryption system is based on the elliptic curve theory, and we analyze the process and the security of this encryption system. At last we realize it in c++ and offer the source code.Keywords: elliptic curve encryption algorithm; public-key password, digital signatures。

物联网安全习题练习含答案

物联网安全习题练习含答案

39:一个加密系统数学符号描述如下:M是明文,C是密文, K是密钥,E是加密算法,D是解密算法,则(C)。
A、M=Ek (C) B、C=Dk (M) C、Dk是Ek的逆运算 D、K=E(M)
40:DES的解密和加密使用相同的算法,只是将 的使用 次序反过来? ( C ) A、密码 B、密文 C、子密钥 D、密钥
10:关于VPN,说法错误的是( B )
A、VPN是通过一个公用网络建立一个临时的、安全的连接 B、VPN的主要目的是为了访问控制 C、VPN是对企业内部网的扩展 D、VPN是在公网中形成的企业专用链路。
11:A方有一对密钥(KA公开,KA秘密),B方有一对密钥(KB公 开,KB秘密),A方向B方发送数字签名M,对信息M加密为: M’= KB公开(KA秘密(M))。B方收到密文的解密方案是_C_。
C. 在计算第i轮迭代所需的子密钥时,首先进行循环左移,每轮循环左移的 位数都相同,这些经过循环移位的值作为下一次循环左移的输入。
D. 然后将每轮循环移位后的值经过PC-2置换,所得到的置换结果即为第i轮 所需的子密钥Ki。
33:根据所依据的数学难题,除了 ( A )以外,公钥密 码体制可以分为以下几类。
5:下列哪一项是RFID的逻辑安全机制( C ) A、kill命令机制 B、主动干扰 C、散列锁定 D、阻塞标签
6:物联网感知层遇到的安全挑战主要有( D ) A、网络节点被恶意控制 B、感知信息被非法获取 B、节点受到来自DoS的攻击 D、以上都是
7:关于数据库隐私保护技术说法错误的是( A ) A、基于数据失真的技术,效率比较低下 B、基于数据加密的技术和基于数据失真的技术特点相反 C、基于限制发布的技术能保证所发布的数据一定真实 D、以上都错

中山大学密码学与网络安全期末复习题

中山大学密码学与网络安全期末复习题

获信息量最大的是
.
A. 唯密文攻击
B. 已知明文攻击
C. 选择明文攻击
D. 选择密文攻击
10. 国际标准化组织ISO所提出的信息系统安全体系结构中定义了 A. 8
种安全服务.
期末复习题(2013) 第 8 页(共 22 页)
B. 7 C. 11 D. 5
11. 国际标准化组织ISO所提出的信息系统安全体系结构中定义了 A. 8 B. 7 C. 11 D. 5
阶段.
2.
机制保证只有发送方与接受方能访问消息内容.
A. 保密性
B. 鉴别
C. 完整性
D. 访问控制
3. 如果消息接收方要确定发送方身份, 则要使用 A. 保密性 B. 鉴别 C. 完整性 D. 访问控制
机制.
4.
机制允许某些用户进行特定访问.
A. 保密性
B. 鉴别
C. 完整性
D. 访问控制
5. 下面关于密码算法的阐述,
密码算法的分析方法.
22. DES加密算法采用 A. 64 B. 56 C. 128 D. 168
位有效密钥.
23. 为保证安全性, 在设计分组密码时应该考虑以下哪些问题
.
A. 加密解密变换必须足够复杂, 使攻击者除了用穷举法攻击以外, 找不到其他简洁的 数学破译方法.
B. 分组长度要足够大.
C. 密钥量要求足够大.
密码体制, 它包括
密码和
密码.
12. 古典密码是基于
的密码, 两类古典密码是
密码和
密码.
13. 代换是传统密码体制中最基本的处理技巧, 按照一个明文字母是否总是被一个固定的
字母代替进行划分, 代换密码主要分为两类

密码习题及部分参考答案..

密码习题及部分参考答案..

一、密码学概述部分:1、什么是密码体制的五元组。

五元组(M,C,K,E,D)构成密码体制模型,M代表明文空间;C代表密文空间;K代表密钥空间;E代表加密算法;D 代表解密算法2、简述口令和密码的区别。

密码:按特定法则编成,用以对通信双方的信息进行明、密变换的符号。

换而言之,密码是隐蔽了真实内容的符号序列。

就是把用公开的、标准的信息编码表示的信息通过一种变换手段,将其变为除通信双方以外其他人所不能读懂的信息编码,这种独特的信息编码就是密码。

口令:是与用户名对应的,用来验证是否拥有该用户名对应的权限。

密码是指为了保护某种文本或口令,采用特定的加密算法,产生新的文本或字符串。

区别:从它们的定义上容易看出;当前,无论是计算机用户,还是一个银行的户头,都是用口令保护的,通过口令来验证用户的身份。

在网络上,使用户口令来验证用户的身份成了一种基本的手段。

3、密码学的分类标准:⏹按操作方式可分为:替代、置换、复合操作⏹按使用密钥的数量可分为:对称密钥(单密钥)、公开密钥(双秘钥)⏹按对明文的处理方法可分为:流密码、分组密码4、简述柯克霍夫斯原则(及其特点和意义。

?)即使密码系统中的算法为密码分析者所知,也难以从截获的密文推导出明文或密钥。

也就是说,密码体制的安全性仅应依赖于对密钥的保密,而不应依赖于对算法的保密。

只有在假设攻击者对密码算法有充分的研究,并且拥有足够的计算资源的情况下仍然安全的密码才是安全的密码系统。

一句话:“一切秘密寓于密钥之中”Kerckhoffs原则的意义:⏹知道算法的人可能不再可靠⏹设计者有个人爱好⏹频繁更换密钥是可能的,但无法频繁更换密码算法(设计安全的密码算法困难)5、密码攻击者攻击密码体制的方法有三种分别是:⏹穷举:尝试所有密钥进行破译。

(增大密钥的数量)⏹统计分析:分析密文和明文的统计规律进行破译。

(使明文和密文的统计规律不一样)⏹解密变换:针对加密变换的数学基础,通过数学求解找到解密变换。

密码学参考答案(精品)

密码学参考答案(精品)

三、名词解释18. 答:被动攻击即窃听,是对系统的保密性进行攻击,通过截获密文,进行业务流分析,如搭线窃听、对文件或程序的非法拷贝等,以获取他人的信息。

18.答:主动攻击是对数据流的篡改或产生假的数据流,包括中断可用性、篡改完整性、伪造真实性。

18. 答:研究如何从密文推演出明文、密钥或解密算法的学问称为密码分析学。

18.答:自同步流密码是密钥流的产生与明文有关的流密码。

18.答:杂凑函数H是一公开函数,用于将任意长的消息M映射为较短的、固定长度的一个杂凑值H(M),作为认证符或消息摘要。

18.答:若n次不可约多项式p(x)的阶为2n-1,则称p(x)是n次本原多项式。

18. 答:称c是两个整数a、b的最大公因子,如果①c是a的因子也是b的因子,即c是a、b的公因子。

②a和b的任一公因子,也是c的因子。

表示为c=gcd(a, b)。

18.答:对x,若有y,使得x×y≡1 mod n,则称y为x的倒数,也称为模乘逆元。

19.答:从一个文本中随机选择两个字符,两个字符相同的概率称为重合指数。

20.答:序列密码算法或称流密码算法,通过将明(密)文同密码流逐位相异或进行加(解)密。

19. 答:汉明距离w(x)表示x中所有非0元素的个数。

20. 答:将明文加密成密文时所采用的一组规则称为加密算法。

19.答:设p是素数,a<p,如果方程x2≡a (mod p)无解,称a是p的非平方剩余。

20.答:消息认证码是指消息被一密钥控制的公开函数作用后产生的、用作认证符的、固定长度的数值,也称为密码校验和。

19.答:(Fermat)若p是素数,a是正整数且gcd(a, p)=1,则a p - 1≡1 mod p。

20.答:设p是素数,a<p,如果方程x2≡a (mod p)有解,称a是p的平方剩余。

19.答:如果移位寄存器的反馈函数f(a1,a2,…,a n)是a1,a2,…,a n的线性函数,则称之为线性反馈移位寄存器(LFSR)。

现代密码学小题整理

现代密码学小题整理

一一、是非判断题(10分)1.差分分析是一种攻击迭代密码体制的选择明文攻击方法,所以,对于DES和AES都有一定的攻击效果。

(对)2.反馈移位寄存器输出序列生成过程中,抽头位对输出周期长度的影响起着决定性的作用,而初态对输出周期长度没影响。

(对)二、选择题(15分)1.公钥密码体制至少能抵御的攻击是(C.选择明文攻击)2.适合文件加密,而且有少量错误时不会造成同步失败,是软件加密的最好选择,这种分组密码的操作模式是指(D.输出反馈模式)3.按目前的计算能力,RC4算法的密钥长度至少应为(C.128)位才能保证安全强度。

4.密钥在其生命生命周期中处于不同的状态,每种状态包含若干时期,那么密钥备份时期是密钥处于(B.使用状态)5.量子密码更适合实现下面哪项密码技术。

(D.密钥分发)6.当用户收到一个证书是,应当从(C.CRL)中检查证书是否已经被撤销。

(CRL:证书撤销列表)A.在PKI中,关于RA的功能,下面说法正确的是(B.验证申请者身份)。

7.数字水印是信息隐藏技术研究领域的重要分支,现主要应用领域是(A.版权保护)8.在DES算法中,如果给定初始密钥K,经子密钥产生器产生的各个子密钥都相同,则称该密钥K为弱密钥,DES算法中弱密钥的个数为(B.4个)。

9.生日攻击是针对于下面哪种密码算法的分析方法(D.MD5)。

10.指数积分法是针对下面哪种密码算法的分析方法(C.ElGamal)11.密钥存档是密钥处于(C.过期状态)三、填空题(15分)1.关于DES算法的安全性,若Ek(m)=Dk(m),则这样的密钥称为弱密钥,又其互补性使DES在选择明文攻击下所需的工作量减半。

2.选择合适的n级线性反馈移位寄存器可使序列的周期达到最大值2^n-1,这样序列称为m 序列,但敌手知道这序列中一段长为 n 的明密文对即能破译其后序列的密文。

3.密钥分配和协商的最大区别是:密钥分配是通信双方中一方或密钥分配中心选取一个秘密密钥发给双方,而密钥协商是保密通信双方(或更多方)通过公开信道的通信来共同形成秘密密钥的过程。

加密算法介绍及加密算法的选择

加密算法介绍及如何选择加密算法加密算法介绍一.密码学简介据记载,公元前400年,古希腊人发明了置换密码。

1881年世界上的第一个电话保密专利出现。

在第二次世界大战期间,德国军方启用“恩尼格玛”密码机,密码学在战争中起着非常重要的作用。

随着信息化和数字化社会的发展,人们对信息安全和保密的重要性认识不断提高,于是在1997年,美国国家标准局公布实施了“美国数据加密标准(DES)”,民间力量开始全面介入密码学的研究和应用中,采用的加密算法有DES、RSA、SHA等。

随着对加密强度需求的不断提高,近期又出现了AES、ECC等。

使用密码学可以达到以下目的:保密性:防止用户的标识或数据被读取。

数据完整性:防止数据被更改。

身份验证:确保数据发自特定的一方。

二.加密算法介绍根据密钥类型不同将现代密码技术分为两类:对称加密算法(秘密钥匙加密)和非对称加密算法(公开密钥加密)。

对称钥匙加密系统是加密和解密均采用同一把秘密钥匙,而且通信双方都必须获得这把钥匙,并保持钥匙的秘密。

非对称密钥加密系统采用的加密钥匙(公钥)和解密钥匙(私钥)是不同的。

对称加密算法对称加密算法用来对敏感数据等信息进行加密,常用的算法包括:DES(Data Encryption Standard):数据加密标准,速度较快,适用于加密大量数据的场合。

3DES(Triple DES):是基于DES,对一块数据用三个不同的密钥进行三次加密,强度更高。

AES(Advanced Encryption Standard):高级加密标准,是下一代的加密算法标准,速度快,安全级别高;AES2000年10月,NIST(美国国家标准和技术协会)宣布通过从15种侯选算法中选出的一项新的密匙加密标准。

Rijndael被选中成为将来的AES。

Rijndael是在 1999 年下半年,由研究员 Joan Daemen 和 Vincent Rijmen 创建的。

AES 正日益成为加密各种形式的电子数据的实际标准。

ECC算法的详细说明

ECC算法的详细说明ECC(椭圆曲线密码学)是一种基于椭圆曲线数学的非对称加密算法。

它是公钥密码学的一部分,可以用于加密、数字签名、密钥交换等过程。

相比于其他非对称加密算法如RSA,ECC具有相同的安全强度下更小的密钥长度,对于资源受限的设备和网络通信而言具有更好的效率。

在ECC算法中,一个关键的概念是基点(base point),它是椭圆曲线上的一个点,用于生成其他点。

基点的选取是公开的,通常是一个事先确定好的固定点。

假设基点为G,可以通过连续重复点加法运算来获得其他点。

1.点加法:给定两个点P和Q,可以通过特定的算法将它们相加得到另一个点R。

点加法的规则是通过直线相交于曲线上的点求得R。

如果直线与曲线相交于两个点P和Q,那么R就是通过将P、Q关于x轴对称后的结果。

2.点倍乘:给定一个点P和一个整数n,可以通过连续重复的点加法运算将P倍乘n次得到另一个点Q。

点倍乘的规则是将点加法运算连续进行n次。

这个操作的结果是将点P相加n次得到Q。

3.密钥生成:ECC算法中的公钥由基点G和私钥d生成,公钥为Q=d*G。

私钥是一个随机生成的整数,范围在1到曲线上的一个恰当值之间。

通过点倍乘运算,可以将基点倍乘私钥得到公钥。

4.加密和解密:ECC算法可以用于加密和解密消息。

在加密过程中,公钥被用于将消息消息转换为曲线上的一个点,然后再将x轴坐标作为加密后的消息。

在解密过程中,私钥被用于找到加密点的y轴坐标,从而确定解密后的消息。

5.数字签名:ECC算法可以用于生成和验证数字签名。

在签名过程中,私钥被用于对消息进行加密,生成签名。

在验证过程中,公钥被用于验证签名的有效性。

ECC的数字签名具有不可伪造性和消息的完整性。

ECC算法的安全性基于离散对数问题,即在有限域上找到离散对数的困难性。

离散对数问题是指已知一个数的多次幂求解指数的问题,即已知y=g^x,求解x。

这个问题在大整数域上是计算上的NP问题,通常很难通过暴力破解或数学方法进行求解。

密码技术竞赛题库-多项选择题汇总情况

密码技术竞赛题库-多项选择题汇总情况多项选择题1.DES的三种主要的攻击方法是()A.强力攻击B.差分密码分析C.线性密码分析D.查表攻击2.下列方法可用于对消息认证码攻击的是()A.重放攻击B.密钥推测攻击C.已知明文攻击D.选择密文攻击3.维吉利亚密码是古典密码体制比较有代表性的一种密码,以下不属于其密码体制采用的是()。

A.置换密码B.单表代换密码C.多表代换密码D.序列密码4.以下说法正确的是()。

A.置换密码又称为换位密码。

B.置换密码分为列置换密码、周期置换密码。

C.周期置换密码是将明文串按固定长度分组,然后对每组中的子串按某个置换重新排列位置从而得到密文。

D.希尔密码算法抵抗频率分析攻击能力最强,而对已知明文攻击最弱。

5.后量子密码的研究领域包括()A.基于纠错码B.基于多变量C.基于格D.基于杂凑算法6.电子签名验证数据,是指用于验证电子签名的数据,包括()等。

A.代码B.口令C.指令D.算法或者公钥7.重合指数法对以下算法的破解效果较差的是()。

A.置换密码B.单表代换密码C.多表代换密码D.序列密码8.在1949年香农发表《保密系统的通信理论》之前,密码学算法主要通过字符间的()实现,一般认为密码体制属于传统密码学范畴。

A.简单置换B.代换C.复杂置换D.加解密9.根据Hash函数的安全水平,人们将Hash函数分成两大类,分别是()()A.弱碰撞自由的Hash函数B.强碰撞自由的Hash函数C.强Hash函数D.弱Hash函数10.境外组织或者个人在中国境内使用密码产品或者含有密码技术的设备,必须报经国家密码管理机构批准;但是()除外。

A.华人华侨B.外国驻华外交代表机构C.领事机构D.具有多国籍的法人11.目前应用最广的公钥密码体制主要基于以下三个问题()。

A.基于大整数因子分解B.基于有限域上的离散对数C.基于椭圆曲线上离散对数问题D.基于格困难问题12.RSA公钥密码体制是由()共同提出来的。

密码技术与应用


2.算法描述
(1)密钥的产生
① 选两个保密的大素数p和q; ② 计算n=p*q,φ(n)=(p-1)(q-1),其中φ(n)是n的欧拉函数 值; ③ 选一整数e,满足1<e<φ(n),且gcd(φ(n),e)=1,即φ(n )与e互质; ④ 再取另一个数d,满足d*e=1 mod φ(n),(表示d*e除以φ(n) 的余数为1,或者说d是e在模φ(n)下的乘法逆元,因e与φ(n)互质 ,由模运算可知,它的乘法逆元一定存在); ⑤ 以PK={e,n}为公钥,SK={d,n}为私钥。
为了保证RSA算法的安全性,p和q的选择时须注意: (1)p和q的长度相差不要太大; (2)p-1和q-1都应应大数因子; (3)gcd(p-1,q-1)的值应较小。此外,研究结果表明, 如果e<n且d<n1/4,则d能被较容易地确定。
Diffie-Hellman密钥交换协议
Diffie-Hellman的安全性是基于zp上的离散对数问题。设 p是一个满足要求的大素数,0<a<p,并且a是循环群zp的生 成元,a和p公开,所有用户都可以得到a和p。
• 根据分析者具备的条件,通常分为4类: ① 唯密文攻击(Ciphertext-only attack) • 分析者有一个或更多的用同一密钥加密的密文。 ② 已知明文攻击(Known-plaintext attack) • 除了待破解的密文,分析者还有一些明文和用同一密钥加密的对应密文。 ③ 选择明文攻击(Chosen-plaintext attack) • 分析者可以得到所需要的任何明文对应的密文,这些密文和待破解的密文 是用同一密钥加密的。密码分析者可以选择一些明文,并得到相应的密文, 而且可以选择被加密的明文,并试图推导出加密密钥或算法。 ④ 选择密文攻击(Chosen-ciphertext attack) • 分析这可以得到所需要的任何密文对应的明文,类似地,这些密文和待破 解的密文是同一密钥加密的,获得密钥是分析者的主要目的。密码分析者可 以选择不同的密文,并能得到相应的明文,并试图推导出加密密钥。 ⑤ 选择密钥攻击(Chosen-key attack)
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

对ECC的小整数n阶点进行选择明文攻击
对ECC的小整数n阶点进行选择明文攻击
摘要:提出了一种针对基于标量乘的公钥密码体制的攻击方法。

由于小整数n阶点在点加和倍点运算时能够产生显著数值变化,即产生显著功耗变化,因此基于小整数n阶点的选择明文与简单功耗分析可以有效攻击椭圆曲线密码(ECC)这种基于标量乘的公钥密码算法。

关键词:椭圆曲线密码;简单功耗分析;标量乘
与对称密钥密码体系相比,公钥密码体系允许更灵活的密钥管理。

目前,应用最广泛的两种公钥密码算法是RSA以及椭圆曲线密码(ECC)算法[1-2]。

与RSA相比,ECC具有更短的密钥长度、更快的运算(诸如内存、能量消耗以及带宽存储),从而在学术与工程领域引起持续增长的兴趣。

侧信道分析(如时序、功耗、电磁辐射)攻击已经对公钥密码体制的硬件实现产生了威胁。

简单功耗分析SPA(Simple Power Analysis)攻击已被证明可有效攻击一些公钥密码算法[3]。

该技术主要涉及对运行公钥加密算法的设备功耗进行检查分析。

RSA实现中的模方和模乘运算是可以被区分开的,使得对方可以获得密钥。

ECC中点加和倍点操作类似于RSA中的模方和模乘操作。

如果可以区分ECC实现中的点加和倍点操作,那么攻击者就可以获取ECC密钥。

目前大多数的RSA算法都使用相同的序列进行模乘和模方操作,大多数ECC算法也使用相同的序列进行点加和倍点运算,这增大了对差异的区分难度。

RSA中&ldquo;一贯的模乘和模方操作&rdquo;以及ECC中&ldquo;一贯的点加和倍点操作&rdquo;似乎成为了对抗SPA攻击的有效手段。

为了从
功耗波形中获得更强的信息泄露,针对特殊输入数据的RSA的选择明文攻击方法得以提出[4-7],以及采取更为复杂的原子化平衡操作[9]和蒙哥马利方法[10]等,但都使得在SPA攻击时得不到点加和倍点运算的显著功耗变化。

为了在功耗波形中获得增强的信息泄露,本文提出了一种针对ECC算法的选择明文侧信道攻击方法,该方法利用了2阶或者其他小整数阶点作为特殊输入点P,以增强点和倍点操作中的显著变化。

1 ECC概述1.1 椭圆曲线ECC算法把现有的离散对数问题转化为椭圆曲线上的连续问题。

一个生成元为g的n阶循环群G的离散对数问题指的是找出群G上使y=gx 成立的x。

椭圆曲线上的离散对数比其他有限域上的群(诸如乘法群)要困难得多。

令E(EP)为一个定义在有限域FP上的椭圆曲线,令P为一个E(EP)上的点。

素数p、椭圆曲线方程FP、点P以及其阶数n是公共的域参数。

私钥是一个从区间[1,n-1]上均匀随机选取的整数d,其相应的公钥是Q=dP。

私钥d的确定问题就是椭圆曲线上的离散对数问题(ECDLP)。

寻找其他阶数点的方法可以进一步阅读。

相关文档
最新文档