论文部分内容阅读
密码技术中,在达到相同的安全强度的情况下,椭圆曲线密码可以使用较短的密钥实现。但随着计算能力的发展以及并行分布式技术的产生,暴力破解密码在时间上成为可能,我们必须使用更长的密钥来保证信息的安全,这就需要我们对算法进行优化,提高算法速度。本文着力于实现椭圆曲线加解密,并针对在椭圆曲线加解密中较为耗时的操作进行优化。
本文在大整数操作中,通过对进位、借位的各个情况进行分析,提出满足不溢出的多精度加减操作,并对乘法和点乘进行了并行设计,对明文嵌入进行分析及实现。乘法是大整数操作中最为耗时的操作,有必要对其进行优化。乘法操作中,通过高、低位将2个2n位的大整数划分为4个n数,4个线程同时运算,各做2个n位整数的操作来提高运算速度。通过分析,选择使用仿射坐标。通过点加、倍点公式来运算点加、倍点操作。点乘是点操作中费时较多的操作,在运算中,通过预存20p,21p,…的值,开启多个线程同时做点加操作来提高速度。由于NIST推荐素数域椭圆曲线里模数的特殊性,既mod4等于3,使用推论完成明文嵌入。
根据改进后的算法,设计本文椭圆曲线密码加解密程序结构为:大整数→点操作→椭圆曲线密码加解密参数组及操作→密钥生成→加解密,并给出了大整数、点、加解密结构的定义及操作。在大整数及点的基础上做椭圆曲线加解密操作,通过设计的程序结构完成加解密。实现中完成192、224、256、384,4条椭圆曲线的加解密。