国密算法Python工具包的性能优化方法.pdf
《国密算法Python工具包的性能优化方法.pdf》由会员分享,可在线阅读,更多相关《国密算法Python工具包的性能优化方法.pdf(7页珍藏版)》请在咨信网上搜索。
1、技术应用DOl:10.12379/j.issn.2096-1057.2023.10.10TechnicalApplications国密算法Python工具包的性能优化方法谢振杰2付伟罗芳1(海军工程大学信息安全系武汉430033)2(中国人民解放军7 8 156 部队重庆400039)()Performance Optimization Method of Python Toolkit for DomesticCryptographic AlgorithmXie Zhenjiel.2,Fu Wei,and Luo Fang!1(Department of Information Securit
2、y,Naval University of Engineering,Wuhan 430033)2(Unit 78156 of the PLA,Chongqing 400039)Abstract The known Python libraries of domestic cryptographic algorithms are not workingefficiently.By comprehensively using performance optimization methods such as pre-compilation,calling mature cryptographic a
3、lgorithm library,precomputation,parallel execution,constructingdouble-byte S-box,reducing function calls,avoiding intermediate type conversion and optimizingcode details,a high-efficiency Python toolkit containing four domestic cryptographic algorithmsSM2,SM3,SM4 and ZUC is developed.All algorithms
4、in this toolkit contain the acceleratedversions suitable for efficient machine operation and the non-accelerated versions suitable forteaching.And the gap of open source Python code of SM2 key exchange protocol is filled.Thecomparative test shows that,comparing with the best performance in the exist
5、ing open sourcedomestic cryptographic algorithm Python libraries,the performance of SM2 in this toolkit is about10 times,the performances of SM3,SM4 and ZUC can reach more than 100 times,which areequivalent to the performances of the mature international cryptographic algorithm Python library.Key wo
6、rds domestic cryptographic algorithm;Python;performance optimization;cryptographicalgorithm library;software implementation摘要针对现有国密算法Python库运行效率不高的问题,综合运用提前编译、调用成熟的密码运算链接库、预计算、并行执行、构造双字节S盒、减少函数调用、避免中间类型转换以及优化代码细节等性能优化方法,开发包含SM2,SM3,SM4,ZUC这4种国密算法的高效Python工具包.该工具包的所有算法均包含适合机器高效运行的加速版与适合教学的未加速版,填补了SM2
7、密钥交换协议Python开源代码的空白.对比测试表明,相比现有开源国密算法Python库中性能最佳的实现,该工收稿日期:2 0 2 2-11-0 5基金项目:国家自然科学基金项目(6 2 2 7 6 2 7 3)通信作者:付伟()引用格式:谢振杰,付伟,罗芳.国密算法Python工具包的性能优化方法J.信息安全研究,2 0 2 3,9(10):10 0 1-10 0 7网址http:/11001信息安全研究第9 卷第10 期2 0 2 3年10 月Journalotimformation Securty BesearchVol.9No.10Oct.2023具包SM2性能为其10 倍左右,而SM
8、3,SM 4,ZU C 性能可达10 0 倍以上,与成熟的国际密码算法Python库性能相当.关键词国密算法;Python;性能优化;密码算法库;软件实现中图法分类号TP311.56中国商用密码标准算法是指国家密码管理局认定的一系列国产商用密码算法,即国密算法.其中SM2是我国自主设计的基于椭圆曲线密码(el-liptic curvecryptosystem,ECC)的公钥密码算法(以下简称“SM2)1-5,包含数字签名、密钥交换和公钥加密,对应RSA,ECDSA,DH,ECDH等国际算法.SM3是我国自主设计的密码杂凑算法(以下简称“SM3)6,对应MD5,SHA-1,SHA-2等国际算法.
9、SM4是我国自主设计的分组密码算法(以下简称“SM4)7,用于数据加解密运算以保证机密性,对应DES,AES等国际算法.祖冲之密码是我国自主设计的序列密码算法(以下简称“ZUC)8,是我国首个成为国际标准的密码算法,在5G通信领域至关重要.国密算法作为国家网信自主安全的重要基础设施,具备高安全性且自主可控,正在各领域加速推广,其在各平台的实现性能同样是一个不容忽视的问题.Python作为一种解释型程序设计语言,其代码简洁易学、第三方资源丰富的特性极大提升了编程效率.但Python的运行效率(指单位时间处理的数据量)相比编译型语言(如C语言)有明显短板,在运算量大、实时性高的场景下,Python
10、程序可能成为性能瓶颈.随着国密算法逐步推广应用,国内Python程序员(特别是信息安全软件开发者)对便捷、稳定、高效的国密算法Python工具包有迫切需求.对于国密算法的软件实现及优化,近年来国内已有一些研究成果,如:文献10 研究了SM4算法快速软件实现方法;文献11-12 研究了ZUC算法快速软件实现方法;文献13从椭圆曲线计算、有限域上的大整数计算以及处理器平台等层面研究了SM2算法的性能优化;文献14 介绍将国密算法集成到OpenSSL的工作.上述均采用C语言或汇编语言.文献15实现了国密算法JavaScript通用密码库.对于在Python环境下高效实现国密算法,尚未见系统的、效果足
11、够好的研究成果或开源代码.1002当前,采用Python语言编写的国密算法第三方库主要是 gmss16 和 snowland-smx(pysmx)17,二者实现了SM2,SM3,SM4等国密算法.然而,相较于更为成熟的国际密码算法库PyCryptodomel181,gmssl或pysmx中同类密码运算的运行效率低13个数量级.究其原因,gmssl和pysmx使用纯Python语言编写,由Python解释器逐行解释执行,而PyCryptodome库的核心算法使用C语言编写,编译成链接库后供Python调用,编译后的机器代码在执行效率上有显著优势.此外,gmssl和pysmx尚有诸多细节值得改进.
12、因此,当系统对密码运算性能有较高要求时,现有的国密算法Python库可能难以满足需要,这在一定程度上阻碍了国密算法在Python环境下的推广应用.针对上述问题,本文开发了高效的国密算法Python工具包,可支持SM2,SM 3,SM 4,ZU C 这4种国密算法,相较于现有的国密算法Python库gmssl 和pysmx,性能有大幅提升,基本与国外成熟的PyCryptodome库的同类密码算法性能相当.开发过程参考了gmssl,pysmx,PyCryptodome 的代码以及相应的国家标准1-8 .1性能优化相较于gmssl和pysmx对国密算法的Python实现,本工具包采用的性能优化方法如
13、下(按照性能提升幅度由高至低排序).1.1Numba加速Numba是一个第三方Python库19,用于把Python代码先编译成机器代码再执行,对数值计算和循环的加速效果尤其明显,可极大提升代码运行效率.由于在Python中“一切皆为对象”,变量采用弱类型,而编译成机器代码需要明确指定类型,所以使用Numba加速的代码要牺牲一部分Python语言特性,代码风格介于Python和C之间.Numba只支持部分Python内置库和函数,但技术应用.TechnicalApplications对数值计算常用的第三方库Numpy201有很好的支持.通过cProfile(Python内置的性能分析工具))对
14、密码算法运行过程进行分析,发现耗时主要来自循环执行的数值计算,而这正是Numba 擅长的部分.参考Numba规范重写 SM3,SM4,ZUC的核心代码后,运行效率可提升10 0 倍以上1.2调用PyCryptodome库的椭圆曲线运算SM2的主要耗时来自椭圆曲线点乘,涉及大整数运算,自主实现大整数运算并用Numba加速后,运行效率反而不及Python内置的大整数运算.而PyCryptodome库实现的椭圆曲线运算与SM2是一致的,采用编译好的C链接库,且允许自定义椭圆曲线参数.因此,调用PyCryptodome库的椭圆曲线运算链接库,装载SM2椭圆曲线参数,运行效率比纯Python实现的SM2
15、椭圆曲线运算高510倍.1.3采用预计算加速SM2基点点乘SM2在生成密钥、签名、验证、加密运算中,以及密钥交换的双方,均需要运行1次基点点乘(kG)运算,采用预计算技术可显著提升计算效率13.标量k是一个2 56 b的整数,令其二进制下1的数量占一半且最高位为1,则采用二进制展开法1计算kG需要进行2 55十12 7=38 2 次点加运算.若将k视为32 B数据,对于k上的每个字节B;预先计算出B,=1,2,255(iE0,31)而其他字节为全O时的kG坐标并保存,则计算任意kG最多仅需31次点加运算.而每个点坐标为512b即6 4B,预计算数据大小仅为2 5532 6 4B=522240B
16、=510KB.虽然理论上应提速12 倍,但从1次调用点乘变为多次调用点加,频繁调用链接库使开销增大,所以采用预计算进行基点点乘的实测效率约为普通点乘的45倍.1.4并行运算Numba支持各循环轮次的并行运算.对于SM4算法,ECB模式下的加密和解密、CBC模式下的解密可并行执行,并行运算可使效率提高12倍.由于单线程运算量较小,且引人多线程有额外的通信和调度开销,线程数达到4以后,设置更多的线程数也不会有明显提升。1.5林构造双字节S盒快表在SM4和ZUC中,S盒变换是高频操作,传统做法是用长度为2 56 B的S盒表逐个字节转换.初始化阶段构造双字节S盒快表(大小为2 56 256X2B=13
17、1072B=128KB),S盒查表操作可减少一半,“移位”和“按位与”运算也大幅减少.实验表明,双字节S盒快表可使SM4和ZUC的运行效率提高10%2 0%.1.6减少函数调用函数调用使代码简洁,但高频的函数调用会引人额外开销.例如SM3,SM4,ZU C 有大量循环移位运算,将循环移位的函数去掉,再尽可能消除“&Oxfff运算(“&Oxfff用于确保值大小为32 b,对于6 4位处理器,运算中间值也可超过32b,仅在最后赋值前再进行“&0 xff运算;但同一变量连续2 次循环移位之间不能将其省略,否则会引起计算错误),运行效率提高10%16%.1.7避免中间类型转换在gmssl和pysmx中
18、,各函数间传递的数据类型在整数(int)、字节串(bytes)、16 进制字符串(str)和列表(list)之间反复转换,这类穴余操作应尽可能避免.尽量用同一种数据类型完成运算和参数传递,运行效率可提高8%15%.1.8针对Python的专门优化构造双字节S盒快表、减少函数调用和避免中间类型转换对所有编程语言都适用,针对Python语言还可作以下优化:一是用类型明确的数组代替弱类型的列表;二是用生成器表达式代替列表推导;三是能在原数组上修改就不要生成新数组,等等.通过若干实现细节的优化,运行效率可提高5%左右.2工功能扩展相较于gmssl和pysmx,本工具包还包含以下扩展.2.1包含SM2密
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 算法 Python 工具包 性能 优化 方法
1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前自行私信或留言给上传者【自信****多点】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时私信或留言给本站上传会员【自信****多点】,需本站解决可联系【 微信客服】、【 QQ客服】,若有其他问题请点击或扫码反馈【 服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【 版权申诉】”(推荐),意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:4008-655-100;投诉/维权电话:4009-655-100。