论文部分内容阅读
双线性对是基于身份密码系统的基础和关键,双线性对的计算效率直接影响着密码系统的效率,双线性对的计算效率不高直接制约了其在实际中的应用。针对双线性对有效实现的问题,大量学者做了相关的研究,Miller提出了有效计算双线性对的Miller算法,随后一些改进的算法相继出现,进一步提高双线性对的实现效率;有些学者提出通过并行计算的方法,在SIMD处理器、FPGA等平台上实现有效计算。 本论文在GPU(Graphics Processing Unit)上,通过并行计算的方法,有效地实现GF(2283)上的Tate双线性对计算。近年来,GPU已不再局限于图形领域,发展成拥有上百核心的可用于通用计算的多核处理器,能支持上万的活动线程。本文通过将传统的串行执行的Tate双线性对相关算法,调整成并行化的算法,基于GPU的实现并行计算,以提高计算效率。 因为Tate双线性对计算的底层是有限域的基本算术运算,所以,任何提高底层有限域基本算术计算效率的方法,都能够有效地提高Tate双线性对的计算效率。因此,本论文从Tate双线性的底层有限域基本算术算法出发,通过分析现有算法,充分挖掘算法的并行性,结合GPU的特点,提出了适合在GPU上实现的并行算法。其中,GF(2283)上的加法运算,通过283个线程并行计算,每个线程计算元素的其中一个系数,平均计算时间为0.000117ms。GF(2283)上的乘法运算,通过80089(即2832)个线程并行计算,每个线程计算多项式乘法展开后的其中一项系数,平均计算时间为0.108426ms。GF(2283)上的平方运算,通过283个线程并行计算,平均计算时间为0.000133ms。GF(2283)上的求模归约,采用本文提出的并行化的系统化归约算法,通过283个线程并行计算,由于求模归约算法主要供乘法运算和平方运算使用,其计算时间已算入上述两个算法中。本论文还基于上述的算法,在GPU上实现了GF(2m)上的乘逆运算。此外,针对Tate双线性对计算的需要,本论文在GPU上有效实现了GF(24×283)上的乘法运算、乘方运算以及乘逆运算。 同时,本论文分析了现有的Tate双线性对有效计算的算法,选择了合适的算法在GPU上实现。本文从算法的整体出发,通过减少重复计算,减少访问低速的全局存储器,减少与CPU交互等方法,进一步使算法实现的效率提高了5倍,平均计算时间为303.166152ms。 此外,本论文提出了并发批量计算32个Tate双线性对的方法,一次性传入32对参数进行计算,能有效地减少了全局存储器的访问冲突,减少了内存与显存间数据交换的次数,扩大了算法的并行线程数,使得计算效率进一步提高。 最后,本论文通过对比实验,分析了线程划分和数据规模对有限域运算和Tate双线性对计算效率的影响,并从线程划分、各级存储器的利用方面,对程序进行了进一步的优化。相比Cohen在GPU上实现的GF(2m)上的运算,本论文在加法和平方运算上速度优势较为显著,乘法运算速度相当。