资源描述:
《国密算法分析与软件性能研究》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
国密算法分析与软件性能研究胡景秀1,2,杨阳1,2,熊璐1,2,吴金坛1,2(1.中国银联股份有限公司,上海201201)(2.电子商务与电子支付国家工程实验室,上海201201)摘要:密码技术是信息安全的核心,加快国密算法在金融等重点领域的应用推广,对维护我国网络信息安全意义重大。近年来,我国商用密码产业快速发展,但国密算法普遍存在实现效率较低的问题,将国际密码算法简单替换为国密算法难以满足业务高效运转的需求。为探究国密算法对国际密码算法的替代可行性,本文主要对国密SM3、SM2、SM4算法及其对标的的国际密码算法进行全方位对比,分析算法的计算量与安全性,并利用OpenSSL及国内某厂商优化后的国密算法对各算法进行性能测试。性能测试结果表明:SM3算法与SHA-256算法性能相近;SM2数字签名算法与ECDSA算法的性能受到两者选用的杂凑函数影响,但总体上性能相近;数据量较小时,SM2公钥加密算法与ECIES算法性能取决于加密数据规模,随着数据量增大,前者性能显著低于后者;SM4算法性能介于AES与3DES之间。根据理论分析结论与性能实测结果之间存在的差异,研究分析其成因,并提出国密算法标准的软件实现建议与性能优化方法。关键字:国密算法;SM2算法;SM3算法;SM4算法;软件性能中图分类号:TN918.1文献标识码:AGuomiAlgorithmAnalysisAndSoftwarePerformanceResearchAnalysisHuJingxiu1,2,YangYang1,2,XiongLu1,2,WuJintan1,2(1.ChinaUnionpayCo..,Ltd,Shanghai201201,China)(2.NationalEngineeringLaboratoryofE-paymentandE-commerce,Shanghai201201,China)Abstract:Cryptographyisafoundationaltechniquetoinformationsecurity.EfficientlyusingGMalgorithmsanditsgeneralizationinthemajorfieldsoffinanceissignificantlyimportanttoprotectnationalcybersecurity.ToinvestigatethesubstitutabilityofGMalgorithmstointernationalones,weanalyzethecomputationalcomplexityandsecuritypropertiesoftheSM3,SM2,andSM4algorithms,andcomparetothecorrespondinginternationalcryptographicalgorithmsfromthesetwoaspects,respectively.WeevaluatetheperformanceofGMalgorithmsusingOpenSSLandGMalgorithmsuiteoptimizedbyadomesticmanufacturer,andobserveagapbetweenthetheoreticalresultandevaluationresult.Reasonsbehindsuchgapareanalyzed,andthenfollowingseveralsuggestionstotheimplementationofGMalgorithmstandards.WefinallydesignsomepracticalapproachestooptimizetheperformanceofGMalgorithms.Keywords:GMalgorithms;SM2algorithm;SM3algorithm;SM4algorithm;softwareperformance1.引言金融信息化和金融安全是国家信息化的重要组成部分,国家信息化建设离不开网络安全,而密码技术则是网络安全保障体系的重要支撑。为推动商用密码在金融和重要领域的全面应用,并做到自主可控,自2010年起,国家商用密码管理办公室制定并陆续发布了SM系列算法,包括SM1(SCB2)、SM2、SM3、SM4、SM9等等。
1随着商用密码算法的发布,与国产密码应用场景相关的标准体系也逐步建立,形成了较完整的产业链条。而在此之前,我国金融行业内长期沿用3DES、AES、SHA、RSA等国际通用的密码算法体系和标准,信息技术安全可控程度低。此外,国密应用普及面临着实现效率低、缺乏丰富的软件形态密码产品等问题,这使得国密算法替换掉国外密码算法后难以满足业务高效运转需求,也无法满足云、移动端、IoT等新场景要求。为推进国密算法在金融业的应用工作,各金融机构均已着手重要系统的国产密码改造与应用试点,并在试点中不断摸索实际碰到的问题和困难。目前业内对国密算法在实际使用中的软件性能与对标的国际密码算法的差异性研究目前仍较少,而此类研究可为国密软件实现商对其SDK性能优化提供有效机制保障,有助于国密改造工作的有效开展。本文对SM3、SM2、SM4国密算法及对标国际密码算法的设计原理进行比较,分析算法异同点,并进行算法间的计算量及安全性对比;为验证理论分析所得结论,进而对各算法基于C语言的代码实现进行性能测试验证;然后在实际应用条件下,对经过优化手段后的算法实现进行性能测试,将该测试结果与理论分析结果的差异之处做深入研究;最后给出研究分析结果,并提出国密算法优化相关建议。为直观测算对比算法间的性能差异,本文的测试遵循以下原则:1)SM2、SM3、SM4算法采用OpenSSL实现版本与国内某厂商优化版本进行对比测试,所有参与对比测试的国际算法均采用OpenSSL实现版本,OpenSSL版本为1.1.1b;2)采用单线程测试方法,排除多线程测试时由线程间切换调度等因素对算法性能分析的干扰;3)每轮输入选取随机产生的大小写字母与数字混合的字符串,每个输入长度运算10轮,去除一个最大值和一个最小值后取平均值作为测试结果,排除单次测试的偶然性;4)每轮循环次数为N次(N根据算法耗时不同设定不同的数值),且第一次运算不计算在内,避免初始化和字符串加载缓存对结果的影响。此外,对所有算法的测试环境均相同。1.杂凑算法1.1SM3与SHA-256算法简述SHA安全加密标准,是至今国际上使用最为广泛的较为安全的杂凑系列算法,由美国NIST和NSA两个组织共同开发[1]。在2004年中国密码专家王小云教授研究小组宣布对MD5、SHA-1等算法的破解[2],出于安全性考虑,美国政府计划从2010年起不再使用SHA-1,全面推广使用SHA-256、SHA-384和SHA-512等算法。SM3杂凑算法[3]是中国国家密码局公布的杂凑算法商用标准,于2010年12月17日发布。SM3与SHA系列算法的整体步骤相同,分别为消息填充、迭代压缩、得到杂凑值三大步骤。主要区别在于,相较于SHA-256,SM3算法的压缩函数中增加了消息双字介入、P置换等的设计,压缩函数更为复杂,可抵抗强碰撞性的差分分析、弱碰撞性的线性分析等密码分析攻击[4]。鉴于压缩函数设计的复杂性,可以认为SM3的安全性比SHA-256安全性略高[5]。1.2算法计算量SM3与SHA-256的算法结构相似、步骤相同,主要差异部分在于核心的迭代压缩步骤,该步骤包含消息扩展和状态更新两个子步骤。两算法均采用移位运算、逻辑运算、模232算数加的混合运算方法,但运算量有所不同。对两算法的总体运算量做具体统计分析,将比特(1bit)移位运算记为SH,字(32bit)与、或、异或、非等逻辑运算统一记为LO,字模232算数加运算记为MA,得到算法的运算量差别如表1。
2表1SM3与SHA-256的迭代压缩步骤计算量对比Tab.1ComparisonofcalculationamountofiterativecompressionstepsofSM3andSHA256杂凑算法消息扩展状态更新合计SM3416SH+584LO1024SH+1328LO+384MA1440SH+1912LO+384MASHA-256480SH+384LO+144MA768SH+1152LO+256MA1248SH+1536LO+400MA由表1可知,SHA-256算法的模数运算相对较多,而SM3算法的移位、逻辑运算等简单运算较多(一般而言,模数运算比移位或逻辑运算等简单运算更耗时)。总体而言,SM3总体计算量与SHA-256相近。1.1算法性能测试分析1.1.1算法性能对比对某国内厂商SM3、OpenSSLSM3和SHA-256算法的C语言实现进行性能测试,循环次数N为5000,分别测试在12组不同输入长度情况下两算法运行时间比(以SHA256为基准),其中部分数据如表2所示。表2在不同输入长度下某厂商SM3、OpenSSLSM3与SHA-256的运行时间比Tab.2TherunningtimeratioofSM3,OpenSSLSM3andSHA-256underdifferentinputlengths输入长度运行时间比某厂商SM3/SHA-256OpenSSLSM3/SHA-2568B1.38191.804864B1.23291.8392256B1.16521.95811K1.12952.0152512K1.11812.02921M1.11602.0546根据表2可知,两种SM3耗时均略多于SHA-256,但两算法的软件性能较为相近,这与算法计算量分析结论相符。1.1.2优化对算法性能的影响考虑到在实际使用中,多数工具套件一般都会采用多种优化手段,以使特定密码算法达到最优的运行效率。因此,对SM3和SHA-256算法分别进行优化后与优化前的性能对比测试,测试结果如图1(图中,每个点的值代表相应算法经优化后的TPS与优化前的TPS之比值,TPS由该输入长度下算法处理数据次数除以运行耗时计算得出)。由图1可看出,SHA-256取得了良好的优化效果,性能约为优化前的两倍,SM3性能则有所下降。
3图1SM3与SHA-256算法的优化效果对比Figure.1ComparisonofoptimizationeffectsbetweenSM3andSHA-256经分析发现,SHA-256算法在gcc编译器的o3级优化、宏定义等多种优化方法的作用下,获得了较好的优化效果,算法性能得到明显提升。以宏定义优化方法为例,是将SHA-256算法的_asm块定义为C宏,在C代码中嵌入利用SIMD(SingleInstructionMultipleData,单指令多数据流)技术的汇编代码,进而实现优化。结合上个小节的测试分析结果可知,SM3算法的性能应当与SHA-256相近;但由本小节的测试情况可知,针对SHA-256算法的优化方法会使其软件性能得到较大提升,却为SM3带来性能下降的副作用。由此可见,SHA-256杂凑算法通过优化,性能明显高于SM3,国密SM3算法没有通过编译进行优化的能力,需进一步进行分析。1.公钥算法公钥密码算法基于非对称密码体制,加密密钥(公钥)与解密密钥(私钥)不同,且“由已知加密密钥推导出解密密钥在计算上是不可行的”。公钥密码算法可用于保证消息的机密性与完整性,分为数字签名和公钥加密两种应用场景,主要应用于对信息发送者的身份认证、信息加密等。在全球范围内的各类系统中,应用范围最广的公钥算法是RSA,此外,由于基于ECC的算法具备加密速度快、密钥长度短等优势,也逐渐得到业内认可与使用。相应地,国密公钥算法为SM2[6],本文将SM2与国际ECC算法和RSA三种算法进行对比,对国密算法的推广具备重要的参考价值。就算法能够提供的安全等级而言,SM2的安全级别与基于256bit域的国际ECC算法相当。1.1数字签名在数字签名中,一般会先将消息进行杂凑运算,生成较短的固定长度的杂凑值,然后使用一种签名算法对杂凑值进行签名。因此,必须在数字签名中排除杂凑算法的干扰。本文将SM2与ECDSA和RSA三种应用于数字签名的算法进行比较。1.1.1SM2、ECDSA与RSA算法简述椭圆曲线密码体制ECC于1985年被提出,有着很重要的理论研究价值和广阔的应用前景,近年来已成为公钥密码领域的研究热点。ECDSA[7]与SM2属于ECC数字签名算法,RSA[8]是迄今为止最容易理解和实现的公钥算法,在电子商业中被广泛使用。SM2数字签名算法与ECDSA算法均基于ECC上的离散对数困难问题,均由系统参数和辅助函数选取、签名算法、签名验证算法三步骤组成。两算法整体结构相似[9],主要差异在于:(1)椭圆曲线的选取不同。(2)杂凑函数选取不同。(3)处理待签名消息的方式不同。(4)签名计算方式不同。
41.1.1算法计算量SM2数字签名算法与ECDSA算法的整体结构相似,最主要的差异是杂凑函数的选取与签名的计算方式不同。考虑到数字签名算法是直接对杂凑值进行签名与验签,因此在对SM2数字签名算法与ECDSA算法进行计算量分析时,不计入杂凑值的计算量。在签名和验签两步骤中,两算法均使用了椭圆曲线上的运算和有限域上的模运算。对两算法的总体运算量做具体统计分析,将有限域上的模加运算记为MA,模逆运算记为MI,模乘运算记为MM,取模运算记为MO,椭圆曲线上的倍点运算记为MP,点加运算记为AP,得到算法的运算量差别如表3。表3SM2与ECDSA的数字签名计算量对比Tab.3ComparisonoftheamountofdigitalsignaturecalculationbetweenSM2andECDSA签名算法SM2ECDSA签名产生椭圆曲线运算1MP1MP模运算3MA+1MI+1MM1MA+1MI+1MM+1MO签名验证椭圆曲线运算2MP+1AP2MP+1AP模运算2MA2MA+1MI+1MO由表3可知,不将杂凑值的计算量考虑在内时,SM2数字签名算法的签名与验签计算量均与ECDSA相近。1.1.2算法性能测试分析对SM2数字签名算法、ECDSA和RSA数字签名算法进行性能测试,循环次数N为1000。为保持安全强度的一致性,ECDSA算法的杂凑函数选用SHA-256。(1)去除杂凑算法对签名的影响将杂凑算法运算耗时去除,对两算法进行软件性能测试。将256bit长度的随机数据模拟为由SM3和SHA-256产生的摘要值,作为SM2数字签名算法和ECDSA的输入,对该摘要数据进行签名及验签运算。下表中,ECDSA_secp256k1表示ECDSA选取曲线secp256k1,此曲线为比特币所选择的曲线;ECDSA_X9.62prime256v1表示ECDSA选取曲线X9.62prime256v1,此曲线为EMV所选择的NIST公布的曲线;SM2选取默认建议曲线。表4不计杂凑算法耗时在内的签名耗时比Tab.4Thetime-consumingratioofsignatureexcludingthetime-consuminghashalgorithm耗时比签名验签ECDSA_secp256k1/OpenSSLSM21.111.12ECDSA_secp256k1/ECDSA_X9.62prime256v116.604.16由表4可知,不计杂凑值耗时,在一般情况下(如ECDSA选取曲线secp256k1),OpenSSLSM2数字签名算法与ECDSA的签名和验签耗时相近,这与算法计算量分析结论相符。此外,由于OpenSSL工具套件对X9.62prime256v1曲线做了算法层面的快速实现,使得ECDSA在选取此曲线时,数字签名性能得到大幅提升。(2)杂凑算法对签名的影响对不含杂凑运算的数字签名耗时测试能够验证算法的计算量理论分析结论,而一个完整的数字
5签名过程包含对消息M的杂凑运算和对杂凑值数字签名运算两部分,杂凑运算会对签名算法的整体耗时产生影响。因此,本部分对包含杂凑运算耗时在内的数字签名算法性能进行测试,在15组不同输入长度下,计算SM2数字签名算法、ECDSA(使用曲线secp256k1)、RSA算法的运行耗时比。其中,对RSA算法的2048bit(当前各类系统中最常用,具有实际参考价值)和3072bit(与SM2和ECDSA安全强度相当)密钥长度均进行测试。图2三种数字签名算法的签名运算时间比Figure.2Thesignaturecalculationtimeratioofthethreedigitalsignaturealgorithms图3三种数字签名算法的验签运算时间比Figure.3Comparisonofsignatureverificationoperationtimeofthreedigitalsignaturealgorithms由图2和图3可看出,整体来说,SM2数字签名算法和ECDSA(均属于ECC算法)的签名比RSA快,但验签比RSA慢。此外,对于ECDSA和SM2数字签名算法,随着输入数据量增大,最终两算法签名和验签的效率比接近其所使用的杂凑函数效率之比(杂凑函数效率比见1.3.1小节)。其原因在于,数据量较大时,杂凑函数运算量在数字签名算法整体运算中占比很高,因此杂凑计算成为算法的主要开销。(3)优化对算法性能的影响目前国内某厂商针对国密算法进行了专项优化,本部分将对SM2算法优化前后的性能进行对比测试,测试SM2数字签名算法、ECDSA、RSA算法的签名与验签的绝对运算速度与平均运算速度比(以RSA2048为标准)的对比情况,如图4和图5。
6图4SM2、ECDSA、RSA绝对运算速度(次/秒)Figure.4AbsoluteoperationspeedofSM2,ECDSA,RSA(times/sec)图5SM2、ECDSA、RSA运算速度比Figure.5OperationspeedratioofSM2,ECDSA,RSA由图4和图5可看出,某厂商对SM2算法的优化使实际使用性能得到了大幅度提升,签名运算效率达到了OpenSSLSM2的16倍、NISTP256曲线的1.08倍、同安全级别RSA的110倍;验签运算效率达到了OpenSSLSM2的3倍、NISTP256曲线的0.84倍,同级别RSA的0.55倍。从原理上来说验签运算ECC类算法比RSA要慢,测试数据也证实了该结论。由前述(1)和(2)测试结果分析可知:不含杂凑运算开销在内,SM2数字签名算法和ECDSA的性能非常相近;将杂凑运算包含在内,随着数据量增大,SM2数字签名算法和ECDSA的性能之比逐步接近于SM3和SHA-256的性能之比。由(3)测试结果可知:在实际应用中,经过优化后的SM2性能得到了大幅提升,从绝对数值上看,SM2中较慢的签名运算速度远高于RSA中较慢的签名运算,在同时需使用签名和验签的场景中,优化后的SM2会更占优势。1.1公钥加密公钥加密属于公钥算法的另一种应用,常用于加密重要数据。用户B使用用户A的公钥对消息进行加密,用户A收到加密消息后使用自己的私钥对消息进行解密。本文将SM2与ECIES和RSA三种应用于公钥加密的算法进行比较。1.1.1SM2、ECIES与RSA算法简述SM2公钥加密算法与ECIES[10]均基于椭圆曲线密码体制,算法均由系统参数和辅助函数选取、加密算法、解密算法三步骤组成。两算法的整体结构相似,但算法细节存在差异[11]。整体而言,基于ECC的加密算法(ECIES与SM2公钥加密算法)与RSA算法加密方法完全不同。前者是通过密钥派生函数KDF产生与加密数据M等长的密钥数据,并与明文异或后得到加密结果;后者加密需要先将明文分组、填充,再对各分组分别加密,加密结果拼接后得到加密结果。
71.1.1算法计算量SM2公钥加密算法与ECIES的算法的整体结构相似,最主要的差异是辅助函数的选取不同。SM2公钥加密算法指定唯一选取SM3,为保持安全强度的一致性,我们选用SHA256/HMAC-SHA256。密钥派生函数KDF是辅助函数的重要组成部分,其原理是,对输入数据进行多轮杂凑运算,得到特定长度的杂凑值为输出。SM2与ECIES的KDF设计差别在于输入数据内容和执行轮数均不相同,前者的KDF函数输入数据长于后者,后者的执行轮数略大于前者。KDF函数不同的设计细节带来两算法运算量的差别,会表现为如下情况:(1)数据量较小情况下,两算法的KDF函数输入数据长度相差不大,每轮杂凑函数运算量也相差不大,由于ECIES执行轮数较多,因此SM2计算量会小于ECIES;(2)数据量较大情况下,KDF以及用于数据校验的杂凑运算成为加解密计算的主要开销,此时大量的数据会造成SM2中每轮杂凑运算时处理的数据分组数大于ECIES,而执行轮数只是略少于ECIES,从整体看来,最终导致SM2计算量大于ECIES。在加密和解密两步骤中,两算法均使用了椭圆曲线上的运算、有限域上的模运算和逻辑运算。对两算法的总体运算量做统计分析,记明文长度为klen,MAC密钥长度mackeylen,HMAC运算为HH,算法的运算量统计如下表。表中,HO1和HO2分别代表SM2公钥加密算法与ECIES的KDF中每轮杂凑运算的运算量。表5SM2与ECIES的加密计算量对比Tab.5ComparisonofencryptioncalculationsbetweenSM2andECIES加密算法SM2ECIES公钥加密椭圆曲线运算3MP2MP逻辑运算1LO1LO模乘运算—1MM杂凑运算(klen/256)HO1+1HO((klen+mackeylen)/256)HO2+1HH私钥解密椭圆曲线运算2MP1MP逻辑运算1LO1LO模乘运算—1MM杂凑运算(klen/256)HO(klen/256)HO由表5可知,总体上,SM2公钥加密算法的加密与解密总体上计算量与ECIES均相近。由于KDF函数带来的计算量差异,在小数据量时,SM2计算量略低于ECIES,大数据量时,SM2计算量会略高于ECIES。而RSA算法完全不同,无法直接进行理论推导,只能进行实际测试对比。1.1.2算法性能测试分析为反映算法在实际使用中的性能表现,由于ECIES在实际使用中并不常见,因此本部分仅测试了SM2公钥加密算法(使用SM3)、OAEP填充模式(常用模式)下2048bit与3072bitRSA算法的耗时情况。测试结果为以OpenSSLSM2算法为参考基准的算法运行时间比值,其中部分数据如表6所示。由表6可知,整体来说,SM2公钥加密算法的加密与解密耗时接近,而RSA加解密耗时差别很大。随数据量增加,RSA算法加解密耗时增长较多,而sm2算法加解密耗时增长较RSA而言较为平缓。表6不同输入长度下某厂商SM2、OpenSSLSM2与RSA加解密的运行时间比
8Tab.6TherunningtimeratioofSM2,OpenSSLSM2andRSAencryptionanddecryption输入长度某厂商SM2/OpenSSLSM2RSA2048/OpenSSLSM2RSA3072/OpenSSLSM2加密16B0.1477876440.0401616460.08057819464B0.1482092510.0399786190.080326983256B0.1519855830.0797263590.0803323991KB0.1627212670.1930826780.2333984264KB0.2011234320.6889623230.83725166216KB0.2985214171.8774502162.3450740732KB0.3645729112.6883914623.371995372解密16B0.2284086132.296512087.17529125864B0.2268450922.2637773847.07422817256B0.2349655914.5379503347.0821429061KB0.25016308110.639538919.954411314KB0.30161102135.3321584965.6861257816KB0.39809707478.22104433151.417557432KB0.446773723100.6119596196.0483998由表6测试结果可知:在实际应用中,在数据量较小时RSA加密耗时情况优于SM2算法,数据量较大,SM2优于RSA,SM2解密相较于RSA具备明显优势。同时,通过对某厂商SM2与OpenSSLSM2的对比发现,该SM2算法在加解密性能上都有了较大提升,分别达到了OpenSSLSM2加解密效率的6.8倍与4.4倍,且该SM2算法相比RSA在解密处理上具备了明显优势,解密运算效率在输入长度为16B时已达到了RSA算法的10倍,且随着输入长度增长,速度将远快于RSA。1.3分组算法分组算法属于对称密码体制,其加密与解密密钥相同,主要用于大量数据的保密传输。1.1SM4、3DES和AES算法简述DES[12]在1977年被公布成为美国政府的商用加密标准,并授权在非密级政府通信中使用,随后该算法在国际上广泛流传开来。但它一经公布人们就认为它的56bit密钥太短,已不适合于当今分布式开放网络对数据加密安全性的要求。AES[13]算法在此阶段应运而生,并最终成为取代DES的新一代数据加密标准。在DES向AES过渡的过程中,NIST将3DES指定为过渡的加密标准,3DES是DES的一个安全变形,通过执行3次DES来达到增加密钥长度和安全。SM4算法[14](原SMS4分组密码算法)由国家密码管理局于2012年3月21日发布。3DES、AES、SM4三种分组加密算法的整体结构及特性见表7。表7SM4、AES与3DES算法整体特性Tab.7ThecharacteristicsofSM4,AESand3DESalgorithms算法分组长度/bit密钥长度/bit迭代轮数算法结构算法特性SM412812832非平衡Feistel网络基本轮函数加迭代,含非线性变换AES128128/182/25610/12/14SP(代换-置换)网络排列、置换加迭代,含非线性变换3DES64112/16816×3=48平衡Feistel网络
9使用标准的算数和逻辑运算,先替代后置换,不含非线性变换总体来看,SM4的安全强度和计算效率介于AES与3DES之间。考虑到3DES算法安全性较低[15][16],且现有应用系统正逐步用AES替代3DES,本文着重对SM4与AES进行分析。1.1算法计算量与安全性在计算量方面,SM4与AES-128算法差别较大,因此不做计算量的统计与直接对比。在安全性方面,SM4的安全级别等同于AES-128,但是近年来的一些密码分析表明SM4的安全性略弱于AES-128[17][18]。由于SM4的密钥长度固定为128bit,没有提供更长的可选密钥长度,在今后越来越高的安全等级要求下,SM4可能面临应用范围受限的问题。1.2算法性能测试分析对SM4和AES算法进行性能测试,测试方法为对每轮数据循环迭代加密,循环次数N为10000,测试算法的加解密运行速率。(1)算法性能对比对SM4和AES算法进行ECB、CBC工作模式下的性能测试,以AES为基准,其速率比测试结果部分数据如表8、表9所示。表8ECB模式SM4与AES算法运行速率比Tab.8TheoperationspeedratiobetweenSM4-ECBandAES输入长度某厂商SM4/AESOpenSSLSM4/AESAESEVP/AES加密32B0.990.8110.69128B2.90.8325.08512B3.340.8331.961K3.350.8433.544K3.430.813416K3.540.8235.164K3.50.8235.19256K3.530.8235.41M3.520.8234.48解密32B1.311.0711.13128B3.921.1229.96512B4.471.1240.971K4.471.1243.084K4.571.1043.5416K4.711.1145.0464K4.731.0845.44256K4.741.1345.71M4.711.1245.48由表8可知,ECB模式下AES加密性能高于OpenSSLSM4,解密性能OpenSSLSM4略高于AES。通过对比可以发现,某厂商优化后的SM4算法加解密速率均优于标准AES软实现,大约为
103.5倍,为OpenSSLSM4的4倍,但与硬件AES-NI仍差距较大。表9CBC模式SM4与AES算法运行速率比Tab.8TheoperationspeedratiobetweenSM4-CBCandAES输入长度某厂商SM4/AESOpenSSLSM4/AESAESEVP/AES加密32B1.521.198.53128B1.180.896.55512B1.090.826.021K1.070.805.924K1.050.805.9316K1.050.805.9264K1.050.815.95256K1.040.805.841M1.050.805.95解密32B1.231.0910.75128B3.671.1028.65512B4.361.1144.581K4.391.1148.784K4.561.1152.4616K4.611.1153.3964K4.631.1153.93256K4.631.10541M4.661.1154.05由表9可知,CBC模式下AES加密性能高于OpenSSLSM4,解密性能OpenSSLSM4略高于AES,整体效果无太大差异。通过对比可以发现,某厂商优化后的SM4算法加解密速率均优于标准AES软实现,其中加密运算约为1.5倍,为OpenSSLSM4的1.3倍;解密运算约为标准AES软实现的4.6倍,为OpenSSLSM4的4.2倍,但加解密均与硬件AES-NI仍差距较大。(2)硬件加速对算法性能的影响OpenSSL提供了EVP接口,此接口封装了多种密码算法,在实际使用时,通常会调用AES算法的EVP接口来实现加解密运算。EVP接口支持调用AES-NI硬件加速技术,使算法性能大幅提升。由(1)和(2)分析可知:SM4加解密性能整体上与AES相差不大,在加密运算上稍有逊色。但经过某厂商优化后的SM4有较大的性能提升,且明显优于AES软实现,但与硬件AES-NI仍存在较大差距。1.结束语本文分别对国密SM3、SM2、SM4算法及其对标的国际密码算法进行理论层面的分析,包括算法异同、计算量与安全性比较等,并结合理论研究结论,对基于OpenSSL的各算法进行性能测试,同时引入了国内某厂商优化后的国密算法进行比对测试。结合理论分析与测试结果可知,SM3的性能略低于SHA-256,SM2数字签名算法与ECDSA算法的性能相近,SM2公钥加密算法与ECIES算法性能相差也不明显,SM4的性能低于AES,高于3DES。在类似于OpenSSL
11的各种软件库包中,由于缺乏对应于国密算法的优化手段,使得国密算法性能较低。我国商用密码产业日益繁荣,已有超过两千款商用密码产品取得了国家密码管理局审批型号,其中软件实现的国密算法较少,目前已有的软件实现的国密算法性能指标也大多不甚理想,无法实现广泛应用;但其中也不乏优化效果较好的产品,从本文对国内某厂商优化后的国密算法性能测试数据来看,虽与国际密码算法仍存在一定差距,但优化后的国密算法在部分场景上已经具备了一定优势,如SM2签名、SM2解密、SM4加解密等。为提升国密算法的性能水平,基于本文的测试与研究分析结果,给出几点建议:(1)建议商用产品的生产单位参考国际上广泛应用的开源软件库包中使用的优化技术,对国密算法进行优化。以SM3为例,可参照OpenSSL对SHA-256的优化代码,实现SM3算法的性能提升。(2)建议科研机构开展对SM2算法推荐使用曲线的研究,研究发现其他便于快速计算的曲线,或研究针对SM2当前推荐曲线的快速软件实现方法,可大幅提升SM2的性能。(3)建议商用密码的制定与推广单位参考AES-NI技术,与国产芯片厂商开展SM4的硬件集成加速合作,推进SM4在TLS协议、金融行业等方向的应用。此外,由于针对国密算法的检测标准体系尚不健全,缺乏对国密算法性能及相应产品功能的评测标准,影响了国产商用密码的进一步发展。随着国密SM系列算法逐步被纳入国际标准,也越来越多地被集成于国际主流密码工具包中,国密算法的重要性愈加明显,对增强我国行业信息系统的“安全可控”能力意义重大。因此,增强对国密算法的软件性能优化,建立对全系列商用密码产品密码功能检测的能力,有助于推进国密算法标准的转化应用,为我国密码产业创造更加广阔的发展空间。参考文献[1]NIST.Federalinformationprocessingstandardspublication180-3,securehashstandards(SHS)[S].Gaithersburg,MD,USA:InformationTechnologyLaboratoryofNationalInstituteofStandardsandTechnology,2008.http://csrc.nist.gov/publications.[2]WangX,YuH.HowtobreakMD5andotherhashfunctions[G]//LNCS3494:Procofthe24thAnnualIntConfontheTheoryandApplicationsofCryptographicTechniques.Berlin:Springer,2005:19-35[3]NationalCryptographyAdministration.SM3cryptographichashalgorithm[EB/OL].2010[2016-10-07].http://sca.gov.cn/sca/xxgk/2010-12/17/content_1002389.shtml国家密码管理局.SM3密码杂凑算法[EB/OL].2010[2016-10-07].http://sca.gov.cn/sca/xxgk/2010-12/17/content_1002389.shtml[4]ShenYanzhao,AnalysisOfSM3CryptographicHashAlgorithm.DonghuaUniversity,2013.申延召.SM3密码杂凑算法分析[D].东华大学,2013.[5]WangXiaoyuan,YuHongbo.SM3CryptographicHashAlgorithm[J].JournalofInternationSecurityResearch,2016,2(11):983-994.王小云,于红波.SM3密码杂凑算法[J].信息安全研究,2016,2(11):983-994.[6]NationalCryptographyAdministration.PublicKeyCryptographicAlgorithmSM2BasedEllipticCurves[EB/OL].2010[2016-10-07].http://sca.gov.cn/sca/xxgk/2010-12/17/content_1002386.shtml国家密码管理局.SM2椭圆曲线公钥密码算法[EB/OL].2010[2016-10-06].http://sca.gov.cn/sca/xxgk/2010-12/17/content_1002386.shtml[7]JohnsonD,MenezesA,VanstoneS.TheEllipticCurveDigitalSignatureAlgorithm(ECDSA)[J].InternationalJournalofInformationSecurity,2001,1(1):36-63.[8]RivestRL.Amethodforobtainingdigitalsignaturesandpublic-keycryptosystems[J].Communications
12oftheAcm,1978,26(2):96-99.[1]SunRongyan,CaiChangshu,ZhouZhou.etal,CompaRativeAnalysisOfSM2DigitalSignatureAlgorithmAndECDSAAlgorithm[J].NetworkSecurityTechnologyandApplication,2013(2):60-62.孙荣燕,蔡昌曙,周洲,等.国密SM2数字签名算法与ECDSA算法对比分析研究[J].网络安全技术与应用,2013(2):60-62.[2]AssociationAB.PublicKeyCryptographyfortheFinancialServicesIndustry,KeyAgreementandKeyTransportUsingEllipticCurveCryptography[J].Speculum,2006,81(2):566-569.[3]WangZhaohui,ZhangZhenfeng.OverviewonPublicKeyCryptographicAlgorithmSM2BasedonEllipticCurves.JournalofInternationSecurityResearch,2016,2(11):972-982.汪朝晖,张振峰.SM2椭圆曲线公钥密码算法综述[J].信息安全研究,2016,2(11):972-982.[4]BiryukovA,CannièreCD.Dataencryptionstandard(DES)[M]//EncyclopediaofCryptographyandSecurity.SpringerUS,2005:129-135.[5]TheAdvancedEncryptionStandard(Rijndael)[EB/OL].http://www.ccf.org.cn/,March,2001.[6]NationalCryptographyAdministration.AnnouncementoftheStatePasswordAdministration(No.7)[EB/OL].[2016-11-04].http://www.oscca.gov.cn/News/200709/News_1105.htm国家密码管理局.国家密码管理局公告(第7号)[EB/0L].[2016-11-04].http://www.oscca.gov.cn/News/200709/News_1105.htm[7]MerkleRC,HellmanME.Onthesecurityofmultipleencryption[J].CommunicationsoftheAcm,1981,24(7):465-467.[8]OorschotPCV,WienerMJ.AKnown-PlaintextAttackonTwo-KeyTripleEncryption[J].1991,473:318--325.[9]LvShuwang,SuBozhan,WangPeng,etal.OverviewonSM4Algorithm,JournalofInternationSecurityResearch,2016,2(11):995-1007.吕述望,苏波展,王鹏,等.SM4分组密码算法综述[J].信息安全研究,2016,2(11):995-1007.[10]DaemenJ,RijmenV.ThedesignofRijndael[M]//TheDesignofRijndael.SpringerBerlinHeidelberg,2002:137-139.