《(网络空间安全技术实践)7.5ecc密码算法编程实验》由会员分享,可在线阅读,更多相关《(网络空间安全技术实践)7.5ecc密码算法编程实验(12页珍藏版)》请在金锄头文库上搜索。
1、7.5 ECC密码算法编程实验,实验目的: 掌握ECC密码加解密原理,并利用Visual C+编程实现。 实验内容: 编程实现字符串”Hi, this is ECC!”的加密,并解密验证之。,网络空间安全实践教程,1,7.5 ECC密码算法编程实验,实验原理: 系统参数: 设p3是一个素数,E是有限域Fp上的椭圆曲线 E(Fp)是相应的点群, 是E(Fp)中有较大素数阶q的一个点。 密钥生成: 随机选取整数 ,并计算P = dG。d是私钥,P是公钥。,网络空间安全实践教程,2,7.5 ECC密码算法编程实验,实验原理: 加密: 对明文 ,随机选取整数 ,计算数乘 (x,y) = kP,再计算
2、, 明文 经加密后的密文即为 。 解密: 对任意密文 ,计算数乘 ,再计 算 ,得到解密后的明文 。,网络空间安全实践教程,3,7.5 ECC密码算法编程实验,实验要点说明: 公开参数选择: ECC的参数选取不同于其他的加密算法,对于素数p,参数a,b以及基点G的选择有很多要求,产生合适的参数需要耗费很多时间。所以许多标准化文档中直接给出了一些公开参数的取值,我们在此实验中采用RFC5639中的一条椭圆曲线,ID为brainpoolP192r1,其公开参数取值如下(以16进制表示): p = 0xC302F41D932A36CDA7A3463093D18DB78FCE476DE1A86297
3、a = 0x6A91174076B1E0E19C39C031FE8685C1CAE040E5C69A28EF b = 0x469A28EF7C28CCA3DC721D044F4496BCCA7EF4146FBF25C9 G.x = 0xC0A0647EAAB6A48753B033C56CB0F0900A2F5C4853375FD6 G.y = 0x14B690866ABD5BB88B5F4828C1490002E6773FA2FA299B8F q = 0xC302F41D932A36CDA7A3462F9E9E916B5BE8F1029AC4ACC1,网络空间安全实践教程,4,7.5 ECC密
4、码算法编程实验,实验要点说明: 公开参数选择: ECC的参数选取不同于其他的加密算法,对于素数p,参数a,b以及基点G的选择有很多要求,产生合适的参数需要耗费很多时间。所以许多标准化文档中直接给出了一些公开参数的取值,我们在此实验中采用RFC5639中的一条椭圆曲线,ID为brainpoolP192r1,其公开参数取值如下(以16进制表示): p = 0xC302F41D932A36CDA7A3463093D18DB78FCE476DE1A86297 a = 0x6A91174076B1E0E19C39C031FE8685C1CAE040E5C69A28EF b = 0x469A28EF7C2
5、8CCA3DC721D044F4496BCCA7EF4146FBF25C9 G.x = 0xC0A0647EAAB6A48753B033C56CB0F0900A2F5C4853375FD6 G.y = 0x14B690866ABD5BB88B5F4828C1490002E6773FA2FA299B8F q = 0xC302F41D932A36CDA7A3462F9E9E916B5BE8F1029AC4ACC1,网络空间安全实践教程,5,7.5 ECC密码算法编程实验,实验要点说明: 椭圆曲线点的表示: 用包含两个大整数的新结构体表示椭圆曲线上的点,例如: typedef struct ECCP
6、oint Bigint x; Bigint y; ECCPoint; 而无穷远点O我们就用坐标(0, 0)表示。,网络空间安全实践教程,6,7.5 ECC密码算法编程实验,实验要点说明: 椭圆曲线数乘运算: 在椭圆曲线密码中,最重要的就是数乘运算,即给定数k与点P,计算点k * P的过程。为了计算快速,可以将数乘运算可以化为点加运算(计算P + Q)与倍点运算(计算2 * P)的结合,可参考7.1中求大数模幂时用到的模幂算法,可参考如下代码:,网络空间安全实践教程,7,7.5 ECC密码算法编程实验,ECCPoint ECCTimes(Bigint k, ECCPoint P, Bigint
7、n) /椭圆曲线数乘算法,计算k * P ECCPoint Q = 0,0; Bigint one = 1; while(Length(k) 0) while(!(k.num0 ,网络空间安全实践教程,8,7.5 ECC密码算法编程实验,实验准备: Windows 操作系统 Visual Studio 2010以上开发环境,网络空间安全实践教程,9,7.5 ECC密码算法编程实验,实验步骤: 利用Visual C+开发环境,构建类似右图的 ECC密码加解密界面。 编写密钥生成按钮事件:随机生成私钥d,利用 基点G计算公钥P = dG并输出。 编写加密按钮事件:从明文框中读入字符序列, 利用公钥进行加密,在密文框中输出。 编写解密按钮事件:从密文框中读入字符序列, 根据私钥对其解密,在解密的明文框中输出。,网络空间安全实践教程,10,7.5 ECC密码算法编程实验,实验结果要求: 给出关键编程思路。 总结实验过程中遇到的问题和经验。,网络空间安全实践教程,11,7.5 ECC密码算法编程实验,实验视频:,网络空间安全实践教程,12,