近年来,物联网技术及其在各行业的应用取得了持续发展。在物联网应用场景中,为了安全地实现众多物联网设备间的信息交互,通常需要以密码算法为基础提供安全的数据传输、设备认证等服务。由于物联网设备大多为传感器、微控制器等计算和存储能力较弱的轻量设备,轻量级密码算法成为了物联网环境下同时满足安全性和性能要求的可选方案之一。
一、什么是轻量级密码
目前,以AES、DES/3DES等对称密码算法、RSA、ECC等公钥密码算法、SHA系列哈希算法以及SM系列国密算法为代表的各类密码算法已广泛应用于不同行业的信息系统中,用于实现数据机密性、完整性、可用性的安全保护。但是,上述通用密码算法主要考虑主机级应用环境,在设计时优先满足的是安全性要求,未专门针对受限环境进行性能优化,因此,通用密码算法普遍存在着运算效率相对较低等性能局限性。
作为一类兼顾安全性和性能的密码算法,轻量级密码算法能够更好地适用于受限环境,其中受限因素主要包括芯片性能、能耗、存储空间、通信带宽、运行时间等软硬件条件,具体的受限应用场景包括射频识别(RFID)标签、非接触式智能卡应用、健康监测体域网、传感器网络、分布式控制系统等等。
与传统的通用密码算法相比,轻量级密码算法一般具有吞吐量较低、安全级别适中、性能较高等特点。
吞吐量较低:在受限应用环境中,数据处理的规模通常较小,因此对轻量级密码算法的吞吐量要求较低。
安全级别适中:轻量级密码算法的安全强度要求一般为80比特以上,适合对长期安全性要求不高的应用场景(如RFID)。
性能较高:轻量级密码算法大多适合采用硬件实现,其目标是在保证一定安全性的前提下尽可能减少存储空间并提高运行效率。
分组密码、公钥密码、哈希函数是众多类型的密码算法中最为常用的3类,但由于公钥密码一般基于数学困难问题而非复杂运算结构,因而在算法层面本身的轻量化空间较小。因此,下面对轻量级分组密码和哈希函数进行分别概述。
(一)轻量级分组密码
轻量级分组密码算法与传统分组密码算法相比具有以下特性。
分组长度更小:一些轻量级分组密码算法采用64比特或80比特分组长度,小于AES的128位分组长度。
密钥长度更小:为了提高性能,一些轻量级分组密码算法采用小于96比特的密钥长度(例如80比特的PRESENT算法)。但是,目前一般要求分组密码算法的密钥长度至少为112比特(例如采用双56比特密钥的3DES算法)。
轮函数更简单:轻量级分组密码算法采用的轮函数通常比传统分组密码算法更为简单,例如采用4比特S盒而非8比特S盒。轮函数的简化可降低对芯片面积的要求,例如PRESENT算法使用的4比特S盒仅需要28个GE(等效门),而AES算法的S盒需要395个GE。
密钥编排更简单:轻量级分组密码算法大多采用更简单的密钥编排方法用以即时生成子密钥,可降低内存、延时、能耗的要求。
几种典型的通用分组密码算法与轻量级分组密码算法的对比如表1所示。
表1 通用分组密码与轻量级分组密码对比
类型 |
典型算法 |
分组长度(bit) |
密钥长度(bit) |
安全强度(bit) |
通用分组密码 |
AES |
128 |
128 |
128 |
192 |
192 |
|||
256 |
256 |
|||
3DES |
64 |
56*2 |
80 |
|
SM4 |
128 |
128 |
128 |
|
轻量级分组密码 |
PRESENT |
64 |
80 |
80 |
128 |
128 |
|||
CLEFIA |
128 |
128 |
128 |
|
192 |
192 |
|||
256 |
256 |
|||
LEA |
128 |
128 |
128 |
|
192 |
192 |
|||
256 |
256 |
(二)轻量级哈希函数
轻量级哈希函数与传统哈希函数相比具有以下特性。
内部状态和输出长度更小:在对哈希函数的抗碰撞要求较高的情况下,足够大的输出长度十分重要;而在对抗碰撞要求不高的情况下,可以采用更小的内部状态和输出长度。因此,对于轻量级应用环境,可通过减小内部状态长度提高哈希函数性能。
消息长度更小:传统的哈希函数可支持较大的输入长度(约264比特),而在轻量级哈希函数的主要应用场景中,输入长度通常较小(约256比特)。因此可对哈希函数进行优化,通过缩短支持的消息长度以降低其他开销,进而适用于轻量级应用场景。
几种典型的通用哈希函数与轻量级哈希函数的对比如表2所示。
表2 通用哈希函数与轻量级哈希函数对比
类型 |
典型算法 |
摘要长度(bit) |
内部状态长度(bit) |
安全强度(bit) |
通用哈希函数 |
SHA-1 |
160 |
160 |
64 |
SHA-2 |
224 |
256 |
112 |
|
256 |
128 |
|||
384 |
512 |
192 |
||
512 |
256 |
|||
SHA-3 |
224 |
1600 |
112 |
|
256 |
128 |
|||
384 |
192 |
|||
512 |
256 |
|||
MD5 |
128 |
128 |
40 |
|
SM3 |
256 |
256 |
128 |
|
轻量级哈希函数 |
PHOTON |
80 |
100 |
40 |
128 |
144 |
64 |
||
160 |
196 |
80 |
||
224 |
256 |
112 |
||
256 |
288 |
128 |
||
SPONGENT |
80 |
88 |
40 |
|
128 |
136 |
64 |
||
160 |
176 |
80 |
||
224 |
240 |
112 |
||
256 |
272 |
128 |
||
Lesamnta-LW |
256 |
256 |
128 |
二、轻量级密码的标准化
目前,针对轻量级密码算法的标准化工作主要包括ISO/IEC 29192轻量级密码算法国际标准以及美国国家标准与技术研究院(NIST)轻量级密码算法标准化项目。
(一)ISO轻量级密码算法国际标准(ISO/IEC 29192)
ISO于2012至2019年期间发布了一系列轻量级密码算法国际标准,系列标准具体包括分组密码、流密码、非对称密码、哈希函数、消息认证码、广播认证协议、认证加密等,详情如表3所示。
表3 ISO轻量级密码算法国际标准
算法类型 |
标准号 |
示例算法 |
分组密码 |
ISO/IEC 29192-2:2019 |
(1)64位分组:PRESENT (2)128位分组:CLEFIA、LEA |
流密码 |
ISO/IEC 29192-3:2012 |
Enocoro-128v2、Enocoro-80、Trivium密钥流生成器 |
非对称密码 |
ISO/IEC 29192-4:2013 |
cryptoGPS、ALIKE等 |
哈希函数 |
ISO/IEC 29192-5:2016 |
(1)硬件实现优化:PHOTON、SPONGENT (2)软件实现优化:Lesamnta-LW |
消息认证码 |
ISO/IEC 29192-6:2019 |
(1)基于分组密码:LightMAC (2)基于哈希函数:Tsudik密钥模式 (3)专用MAC:Chaskey-12 |
广播认证协议 |
ISO/IEC 29192-7:2019 |
TESLA-RD |
认证加密 |
ISO/IEC 29192-8 |
制定中 |
在ISO/IEC 29192标准中,轻量级密码算法的受限因素包括芯片面积(Chip area)、能耗(Energy consumption)、程序代码和内存大小(Program code size and RAM size)、通信带宽(Communication bandwidth)、运行时间(Execution time)共5类,安全强度要求至少为80比特(与3DES相当)。
(二)NIST轻量级密码算法标准化项目
NIST于2015年启动了轻量级密码算法标准化项目,并于2017年3月发布了《轻量级密码报告》(NISTIR 8114)。根据该报告,传统的通用密码算法适用于服务器、个人电脑、平板电脑,智能手机等设备,而轻量级密码算法适用于嵌入式系统、RFID、传感器网络等环境。
2018年8月,NIST开始进行轻量级密码算法征集,接受面向软件或硬件受限环境的轻量级认证加密(AEAD)和哈希算法的投稿,并收到了57个算法。NIST分别于2019年4月和2019年8月公布了前两轮候选算法筛选结果,并于2021年3月宣布进入最终轮的10个算法为ASCON、Elephant、GIFT-COFB、Grain128-AEAD、ISAP、Photon-Beetle、Romulus、Sparkle、TinyJambu、Xoodyak,具体进展如表4所示。
表4 NIST轻量级密码候选算法
时间 |
轮数 |
候选算法 |
2019年4月18日 |
第一轮(56个) |
ACE、ASCON、Bleep64、CiliPadi、CLAE、CLX、COMET、DryGASON、Elephant、ESTATE、FlexAEAD、ForkAE、Fountain GAGE and InGAGE、GIFT-COFB、Gimli、Grain-128AEAD、HERN & HERON、HYENA、ISAP、KNOT、LAEM、Lilliput-AE、Limdolen、LOTUS-AEAD and LOCUS-AEAD、mixFeed、ORANGE、Oribatida、PHOTON-Beetle、Pyjamask、Qameleon、Quartet、REMUS、Romulus、SAEAES、Saturnin、Shamash & Shamashash、SIMPLE、SIV-Rijndael256、SIV-TEM-PHOTON、SKINNY-AEAD/SKINNY-HASH、SNEIK、SPARKLE (SCHWAEMM and ESCH)、SPIX、SpoC、Spook、Subterranean 2.0、SUNDAE-GIFT、Sycon、Thank Goodness It’s Friday (TGIF)、TinyJambu、Triad、TRIFLE、WAGE、Xoodyak、Yarará and Coral |
2019年8月30日 |
第二轮(32个) |
ACE、ASCON、COMET、DryGASON、Elephant、ESTATE、ForkAE、GIFT-COFB、Gimli、Grain-128AEAD、HyENA、ISAP、KNOT、LOTUS-AEAD and LOCUS-AEAD、mixFeed、ORANGE、Oribatida、PHOTON-Beetle、Pyjamask、Romulus、SAEAES、Saturnin、SKINNY-AEAD/SKINNY-HASH、SPARKLE (SCHWAEMM and ESCH)、SPIX、SpoC、Spook、Subterranean 2.0、SUNDAE-GIFT、TinyJambu、WAGE、Xoodyak |
2021年3月29日 |
最终轮(10个) |
ASCON:认证加密、哈希 Elephant:认证加密 GIFT-COFB:认证加密 Grain128-AEAD:认证加密(流密码) ISAP:认证加密 Photon-Beetle:认证加密、哈希 Romulus:认证加密、哈希 Sparkle:认证加密、哈希 TinyJambu:认证加密 Xoodyak:哈希、加密、消息认证码计算、认证加密 |
下一步,NIST将对最终轮算法进行为期约12个月的标准化工作,最终形成NIST轻量级密码算法标准。
三、总结
轻量级密码算法用于在计算、存储、能耗等条件受限的环境中替代性能较差的通用密码算法。现如今,随着物联网技术的发展和相关应用的推广,大量的轻量化物联网设备存在安全交互的需求,轻量级密码算法产生了更加广阔的应用场景。
来源:freebuf.com 2021-05-25 18:11:57 by: 狴犴安全团队
请登录后发表评论
注册