摘要:传统密码算法难以适用于物联网等资源受限环境,为了满足此类场景的安全防护需求,轻量级密码算法应运而生且不断发展。近些年,世界各国学者、机构推出了大量的轻量级密码算法,本文对选取的6个典型轻量级密码算法进行对比分析,结合算法结构和软硬件上的性能表现,给予相应的评价以及应用场景推荐。最后从算法应用的角度对轻量级密码算法在物联网端边云协同、自动驾驶和卫星安全通信三个场景下的应用进行探讨。
1999年,麻省理工学院在研究无线射频技术(RadioFrequencyIdentification,RFID)时首次提出“物联网”的概念;2005年,国际电信联盟(InternationalTelecommunicationUnion,ITU)发布的年度报告指出,物联网时代即将来临;2009年,各国纷纷提出物联网发展战略和规划,如美国的“智慧地球”计划、欧盟的“物联网行动计划”等。物联网发展至今已经在电力、安防、交通、物流、智能家居、智慧城市等领域得到了广泛应用,但也面临着严峻的安全风险和挑战。物联网传感器常应用于电卡、汽车ETC等场景,数量巨大,同时存在内存资源较少、处理能力有限、功耗要求严格等限制。密码技术是保障信息通信系统安全的核心和基础,而传统的密码算法通常需要大量的计算和存储资源,不适合以上场景。为此,研究人员开始探索开发轻量级密码,以满足这些设备的加密认证需求。
传统密码算法如AES和RSA,虽然在安全性方面表现出色,但在资源受限的环境下使用时,会面临计算复杂性、存储需求、能耗和操作时延等多方面的问题。以RFID为例,这项技术需要在应用中确保数据的安全性,但由于设备可用的计算资源少,要求所采用的密码算法的逻辑门数量不能超过2000个。为了满足资源受限环境下的密码需求,轻量级密码算法应运而生,并持续发展。这些算法基于特定的设计原则,在硬件实现、加密速度和运行功耗等方面相对于强密码算法具有显著的优势,更适合在物联网微型计算设备上使用。随着对轻量级密码算法的需求不断增加,国际标准化组织(InternationalOrganizationforStandardization,ISO)和其他标准机构开始考虑制定适用于这些环境的密码标准。我国科学家也在积极推动轻量级密码算法的发展,在近些年推出了多个优秀算法。
1
2013年,美国国家安全局(NationalSecurityAgency,NSA)发布了两个轻量级分组密码算法,分别是SIMON和SPECK。同时,美国国家标准与技术研究所(NationalInstituteofStandardsandTechnology,NIST)启动了一个轻量级密码项目。为了推动这一项目,NIST在2015年和2016年分别举办了两次轻量级密码研讨会,以征求公众的建议和观点。随后,NIST于2017年4月发布了有关轻量级密码标准化进程的白皮书,并在2018年5月发布了文件,以征求有关轻量级密码算法标准化流程和评估策略的意见。最终,在2018年8月,NIST正式启动了轻量级密码的征集、评估和标准化工作,旨在开发一系列适用于那些现有NIST密码算法标准不适用的资源受限环境的轻量级密码算法,其中,重点考虑认证加密算法。这一工作的目标是确保在嵌入式设备、物联网和其他资源受限应用中提供适当的数据安全性。经过3轮评选,2023年2月7日,NIST宣布从最初的56个候选算法中选择Ascon算法簇作为优胜算法,并开展轻量级密码学标准化工作。
欧洲、日本等国家或地区也较早开展了轻量级密码的研究工作。欧洲早在2004年就开始将轻量级密码算法作为欧盟委员会第6和第7框架计划ECRYPTI和ECRYPTII的研究主题。eSTREAM计划则最终选择了一些适用于硬件实现的轻量级流密码算法。2013年,日本密码学研究和评估委员会(CryptographyResearchandEvaluationCommittees,CRYPTREC)成立了轻量级密码工作组,制定了轻量级密码技术指南,为需要轻量级加密技术的产品和用户推荐合适的算法。此外,2015年,俄罗斯发布了密码算法标准GostR34.12-2015,用分组密码Kuznyechik代替了之前的算法。这些举措表明,全球范围内对轻量级密码算法的研究和标准化工作正在积极推进,以满足不同国家和地区对于资源受限环境下的数据安全需求。
我国的第一个轻量级密码算法是在2011年由吴文玲和张蕾等人在ACNS2011上提出的LBlock,它的出现推动了我国在轻量级分组密码设计上的发展。随后在2015年,我国学者张文涛等人提出Rectangle算法。近期,我国科学家在基于同态加密的轻量级密码算法研究中取得了一些重要成果。由于我国目前还没有启动关于轻量级密码算法的标准化进程,对于轻量级密码算法的研究更多的是对国内外轻量级算法的优化、安全性分析等。
2
2.1算法分类
区别于传统密码算法,轻量级密码算法重点关注分组密码、认证加密算法、杂凑函数和流密码等技术方向。NIST提出,公钥密码现阶段面临的主要是后量子安全的问题,轻量级密码项目暂不考虑公钥密码。在众多技术路线中,轻量级分组密码是研究与应用的热点,本文将重点探讨这个领域。同时,认证加密算法通过结合对称密码与消息认证码的方式,为数据提供机密性、完整性及数据源认证等功能,因此在各个行业中越来越受青睐,本文也将对其进行深入研究。
2.2分组密码
近年来发布的轻量级分组密码大多采用传统的分组密码整体结构,其主要特点体现在非线性部件、扩散层和密钥扩展算法等方面。表1列出了国际上一些重要的期刊和会议上发表的35种轻量级分组密码算法。
表1已发表的轻量级分组密码
下面将从算法结构的角度选取5个国内外典型的轻量级密码算法进行介绍。
2.2.1Feistel结构
Feistel结构是一种经典的分组密码结构,被广泛用于设计和构建分组密码算法,它以高度的安全性和可逆性在密码学领域中备受赞誉。
如图1所示,Feistel结构的核心思想是将明文数据分成两个部分,并通过一系列轮函数的迭代处理逐步转换这两个部分,最终将它们合并生成密文。在每一轮中,右半部分的数据会被送入轮函数中与左半部分进行某种运算,例如异或操作。这个过程会被反复执行多轮,每轮中的密钥都会发生变化,增加了密码的复杂性。Feistel结构最著名的应用是数据加密标准(DataEncryptionStandard,DES),并且它的变体结构在轻量级分组密码算法中也得到了广泛应用。
图1Feistel结构
(1)LBlock
LBlock是一种由我国学者吴文玲和张蕾在ACNS2011上提出的轻量级分组密码算法。它采用32轮Feistel结构,并拥有80bit的密钥和64bit的分组长度。
(2)SIMON
SIMON算法是由美国国家安全局(NationalSecurityAgency,NSA)于2013年发布的一族轻量级分组密码算法,旨在满足不同应用需求并强调灵活性。该算法支持多种分组长度和密钥长度,以适应不同安全性和资源限制的场景。SIMON算法采用Feistel结构,分组长度可以是32bit、48bit、64bit、96bit和128bit,而密钥长度根据分组长度的选择而变化,范围从64bit到256bit不等。这种设计使得SIMON算法在多样化的应用中具有广泛的适用性。
2.2.2SPN结构
如图2所示,代换-置换网络(Substitution-PermutationNetwork,SPN)结构一般由可逆的线性函数S和可逆的线性变换P组成,其中S通过替换操作实现数据的混合作用,而P则通过置换操作实现数据的扩散作用。相比于Feistel结构,SPN结构的数据扩散速度更快。S层和P层可以在实现中考虑并行操作,以取得更快的性能表现。
图2SPN结构
SPN结构最具代表性的分组密码算法是AES,许多轻量级分组密码算法在设计中也采用了SPN结构。
(1)PRESENT
PRESENT发布于2007年,2012年被纳入ISO/IEC轻量级分组密码国际标准。PRESENT在轻量级密码算法中占据了重要的地位,在设计之初,它一度被认为是最杰出的超轻量级密码算法。PRESENT的整体结构将简单性原则体现得淋漓尽致,非线性层使用4bitS盒,线性层的操作仅为比特置换。PRESENT的分组长度为64bit,密钥长度为80/128bit,整体结构为SPN结构,迭代轮数为31。
(2)GIFT
GIFT是Banik等人[12]为庆祝PRESENT算法10周年设计的,延续了后者的设计策略。GIFT的主要设计目标是弥补PRESENT在安全性上的弱点,同时在实现性能方面更有效,硬件实现面积更小、速度更快。为了尽可能达到轻量化设计极限,GIFT选取了硬件实现面积更小的S盒,放宽了密码特性的一些指标限制。GIFT有两个版本,密钥长度为128bit,分组长度分别为64bit和128bit。
(3)Rectangle
Rectangle发布于2015年,是我国学者张文涛等人发布的轻量级分组密码算法,其主要设计思想是采用比特切片技术设计适合多个软硬件平台的轻量级分组密码算法。Rectangle的分组长度为64bit,密钥长度为80bit和128bit。整体结构为SP结构,迭代轮数为25。由于采用比特切片设计的风格,在现有的轻量级分组密码中,Rectangle实现了非常有竞争力的软件速度。S盒可以使用12条基本逻辑指令序列来实现。p层由3个旋转组成,这使得它对硬件和软件实现都非常友好。
2.3认证加密算法
认证加密算法(AuthenticatedEncryption&AuthenticatedCipher)指同时完成数据加密和完整性验证的密码算法。早期的认证加密算法多采用组合方式设计,主要的组合方式有Encrypt-then-MAC、MAC-then-Encrypt、Encrypt-and-MAC,这3种构造方式的优势在于通用性,适用于常见的加密和认证算法,但缺乏令人信服的安全性。
认证加密AE方案构造如图3所示,具体流程为:发送者将临时值、关联数据、明文数据作为输入,生成密文和标签T,接收者进行解密并生成T’,若T’=T,则输出明文;否则返回空。
图3可认证加密的工作原理
ASCON是NIST轻量级密码竞赛的获胜算法。ASCON算法采用复式结构,共分为初始化、处理关联数据、处理明文、终止函数4个阶段。ASCON算法的作者推荐两个参数的算法版本分别为:ASCON-128和ASCON-128a,它们的区别在于数据块长度,分别为64bit和128bit,其中第2个版本在处理长数据上有性能优势。ASCON的密钥灵活性高,其底层置换状态小仅320bit,轮函数设计简单,同时采用了比特切片的设计理念。该算法在2013年就已公布,经历了长期的国际学术界的安全性分析与考验。
3
本节对第2节所提到的LBlock、SIMON、PRESENT、GIFT、Rectangle、ASCON共6项轻量级密码算法进行细化的对比研究,分别从算法理论设计、算法硬件性能、算法软件性能等维度评估各项算法的基础能力。
3.1算法设计理论对比分析
表2是从算法设计理论的角度进行对比分析的结果。PRESENT算法最早发布,算法设计简洁,是较为公认的首个轻量级分组密码;LBlock算法以PRESENT为参照,采用了广义Feistel结构减少S盒的个数;GIFT算法发布最晚,沿用PRESENT的设计策略,采用了更小的S盒。Rectangle和ASCON算法都加入了比特切片理念,使得它们对硬件和软件实现都非常友好。SIMON算法支持多种分组长度和密钥长度,应用灵活。
表2算法设计理论的对比分析
3.2算法硬件性能对比分析
根据文献[9]中提供的数据,LBlock在与PRESENT算法达到相同输出速率的情况下,实现面积约为1350GE;ASCON算法提供认证加密功能的轻量级实现,该实现的面积约为2600GE。当采用基于轮数的实现时,面积将近10000GE,但这样的实现可以达到4.9~7.3Gbit/s的吞吐量,足够对千兆以太网连接进行加密。
表3部分算法硬件实现性能对比
表格中分组密码算法的硬件实现面积均小于2000GE,单从面积指标上分析都满足资源受限环境场景,其中,64bit分组长度的GIFT算法实现面积最小。但在最大输出功率和能量消耗方面,密钥长度为128bit的Rectangle算法以较小的实现面积在这两项指标中表现较为优秀。ASCON算法的实现面积虽然较高,考虑到其具备认证加密功能和良好的吞吐量,该算法的表现也十分优异。
3.3软件性能测试对比分析
图4软件实现性能对比
另外,由于Rectangle、ASCON在设计中采用了比特切片的思想,这些算法在使用指令集实现时有着很大的优势,通过指令集可以在特定场景下取得相当优异的软件性能,而本次实验中并没有体现指令实现的性能。
3.4算法总体分析及应用评估
本节综合上述的算法设计理念、算法硬件性能、软件性能对选取算法进行总体评价,并对算法的应用场景进行建议,为算法应用落地提供参考,具体如表4所示。
表4选取算法总体分析及应用评估
4
4.1物联网端边云协同
物联网的快速发展使得大量的设备连接到云端,这些设备在信息传输、数据存储及身份认证时均需进行密码保护。图5给出了轻量级密码算法在物联网“端—边—云”协同场景中的应用案例。对于直连物联网云平台的物联网设备,采用嵌入轻量级密码算法的安全MQTT/HTTP协议,确保“端—云”通信安全。对于“端—边—云”通信情形,在“端侧”的物联网设备内集成轻量级分组密码算法,实现本地敏感数据的快速加密;在“端—边”通信链路,使用基于轻量级密码算法的信源加密方式保证通信的安全性和高效性;在“边—云”通信链路,可选传统密码算法、轻量级密码算法等不同方案,确保安全通信的灵活性。对于自组网情形,可使用轻量级认证加密算法实现自组网内部快速的群组设备认证,提升自组网的安全性。
图5物联网端边云协同轻量级密码应用案例
本场景下,物联网嵌入式设备往往具有受限的计算存储资源,对功耗极为敏感,而轻量级密码算法兼顾资源效率、安全性、低功耗和快速性,可在不影响业务的前提下保护物联网设备通信及数据的安全性。此外,轻量级密码算法可在边缘计算服务器、云平台等集成,这使得物联网“端—边—云”协同更加安全。在物联网的快速增长中,轻量级密码算法将继续发挥关键作用,确保数据的保密性和完整性。
4.2自动驾驶
汽车自动驾驶技术的快速发展要求在车辆通信和数据传输中确保数据的安全和隐私。图6给出了轻量级密码算法在自动驾驶车辆网络架构下的应用案例,其中主要包括云服务数据中心(DataCenter,DC)、车载控制中心(VehicleCenter,VC)、远端用户(User)、自动驾驶车辆(Car)。云服务数据中心拥有极大的存储空间和极高的计算能力,可采用传统密码和轻量级密码算法相结合的资源计算中心,而自动驾驶车辆需要配备电子控制器单元(ElectronicControlUnit,ECU)。
“User-DC”端通信中,一方面用户可以访问路况和天气等信息,并做出相应的评估;另一方面,用户通过身份认证后可以获取车辆的实时数据,并通过远程指令对车辆路线规划、应急处理进行管理。对于这种通信情形,可采用传统密码算法和轻量级密码算法等不同方案保证身份认证和安全通信的灵活性。“DC-VC-Car”端的通信,可采用轻量级可认证加密算法保证对数据源的认证及控制指令的安全性。“Car-Car-DC”端的通信分为两个部分,其中“Car-Car”指车辆与车辆之间的“挑战-响应”对(Challenge-ResponsePair),车辆之间可以通过轻量级认证加密算法对车辆间的指令信息加密,保证无线传输网络的安全性,同时车内的ECU单元利用轻量级分组密码对本地敏感数据进行加密保护;“Car-DC”指自动驾驶车辆与云服务数据中心之间的通信,该通信可采用基于轻量级分组密码算法的无线安全传输协议。
图6自动驾驶轻量级密码应用案例
本场景下,通过认证的车主可以远程控制本人的汽车,车载控制中心虽然具备客观的计算能力,但由于车辆众多,可分配到每辆汽车的资源有限,所以轻量级密码算法的低功耗特点可以很好地弥补这一点。另外,由于车内ECU单元存储及计算资源有限,且车内通信时效性高,因此可将轻量级密码库作为终端安全支撑设施,采用对称密码技术实现车内安全通信保障,或采用可认证加密同时完成数据加密和数据完整性保护。
4.3卫星安全通信
卫星通信是一种经常应用于远程通信、数据传输和全球联网的技术。在卫星通信中,轻量级密码算法具有重要的应用价值。
如图7所示,卫星通信网络分为星间链路和星地链路。星地链路是指从地球上的终端用户到卫星,然后返回到地球上的地面站点的通信链接。这种链路通常分为上行链路(用户到卫星)和下行链路(卫星到用户)。星地链路主要采用的通信协议是5G等标准协议,由标准制定单位进行设计。而星间链路通信可以采用定制化协议。
图7卫星安全通信轻量级密码应用案例
卫星通信中传输的数据往往是敏感的,因此数据的安全性尤为重要。然而,卫星通信终端的计算和存储资源通常是有限的,并且卫星设备常常依赖有限的能源供应,如太阳能电池等。因此,在选择加密算法时,低功耗是一个重要的考量指标。
轻量级密码算法正好符合上述特点和需求,它们适用于资源受限的环境。将带有认证加密功能的轻量级算法应用于星间链路的定制化通信协议中,可以很好地解决上述问题。这样做既满足卫星之间通信的数据安全和隐私需求,又能尽量减少资源消耗。
5
轻量级密码算法发展至今,在其不断发展的进程中仍然存在一些问题和难点,但这些问题也为其未来的发展指明了方向。
(1)安全性分析:轻量级密码算法的安全性需要进行深入的分析和评估。与传统密码算法相比,轻量级密码算法采用了新的设计方法,因此需要使用新的分析手段和技术来评估算法的安全性。
(4)应用场景需求:随着自动驾驶、卫星通信等技术的兴起,对于部件、功耗、面积的标准有着更为严苛的要求,这迫使轻量级密码进一步完善与发展。
(5)量子安全和后量子密码算法:随着量子计算机的发展,传统密码算法的安全性可能受到威胁。因此,量子安全的MAC算法和后量子轻量级公钥密码算法是未来的研究方向。
6
本文通过对比分析多种轻量级密码算法的设计理论,比较它们在硬件与软件性能上的差异,给出了总体评价和应用建议。探讨了轻量级密码学在物联网、自动驾驶和卫星安全通信等前沿应用场景中的关键作用和发展现状。最后提出了轻量级密码算法目前存在的问题和对未来的展望。
综合上述分析可以看出,轻量级密码算法作为保护资源受限环境中的数据安全的强有力工具,未来将持续扮演至关重要的角色。随着技术的不断演进,轻量级密码算法需要不断优化,以满足日益增长的安全需求,为数字世界提供坚实的安全基石。