ASCON:以“慢而稳”赢得NIST轻量级加密算法标准

1. 引言

自2016年以来,NIST一直在评估轻量级加密方法,并于2022年发布了入围决赛的10种轻量级加密算法:

  • ASCON
  • Elephant
  • GIFT-COFB
  • Grain128 AEAD
  • ISAP
  • Photon Beetle
  • Romulus
  • Sparkle
  • TinyJambu
  • Xoodyak

ASCON:以“慢而稳”赢得NIST轻量级加密算法标准_第1张图片
在评估过程中,NIST重点关注:

  • 1)算法的安全性
  • 2)在低功耗FPGA/嵌入式处理器上的性能
  • 3)对side-channel(侧信道)攻击的鲁棒性。

于2023年2月,NIST宣布ASCON是赢家,并将对ASCON进行标准化。

总体来说,ASCON在大多数测试中都表现良好,是一名优秀的全能选手。它由格拉茨理工大学(Graz University of Technology)、英飞凌科技公司(Infineon Technologies)和拉德布大学(Radboud University)的Christoph Dobraunig、Maria Eichlseder、Florian Mendel和Martin Schläffer设计。ASCON既是一种轻量级的哈希算法,也是一种轻量级的加密算法。
ASCON:以“慢而稳”赢得NIST轻量级加密算法标准_第2张图片
ASCON使用基于Sponge的操作模式的单个轻量级permutation和SPN(substitution-permutation网络)permutation。总的来说,ASCON是一种易于在硬件(等价为2.6个gate)和软件中实现的实验法。5-bit S-box(如用作Keccak的S-box的核心)用于实现轻量级方法,且其没有已知的侧信道攻击。ASCON还可以实现高吞吐量——如4.9到7.3 Gbps之间的吞吐量。它用320位存储其当前状态。

更多关于Sponge的知识可参看:

  • Prof Bill Buchanan OBE 2019年博客One of the greatest advancements in Cybersecurity: The Sponge Function (Keccak, SHAKE and ASCON)。

ASCON代码示例见:

  • ASCON AEAD - Light-weight cipher
  • https://github.com/usnistgov/Lightweight-Cryptography-Benchmarking(C)
  • https://github.com/meichlseder/pyascon/blob/master/ascon.py(Python)

2. 性能评估

目前主要包括运行在Arduino Uno R3(AVR ARmega 328P)、Arduino Nano Every(AVR ARmega 4809)、Aruino MKR Zero(ARM Cortex M10+)和Arduino Nano 33 BLE(ARM皮质M4F)之上的benchmark(基准测试)。这些都只是8位处理器,可以安装在Arduino板中。除了处理器限制外,其内存占用(运行代码和存储代码)也受到限制。因此,轻量级密码算法必须克服这些限制,在保持安全的前提下,提供良好的性能水平。在这些设备上以块模式运行AES通常是不可能的,因为资源不足。
使用的benchmark基准为:

  • 加密基准为:encryption with AEAD(关联数据的认证加密)。使用AEAD,可将额外的信息(如session ID会话ID)添加到加密过程中。这种类型的算法可将加密绑定到特定的stream流。
  • 哈希基准

2.1 ARM性能

如下表所示,在Arduino Due with an ARM Cortex M3 running at 84MHz 上运行某测试用例。这些测试用例针对AEAD定义,并与ChaCha20 stream cipher对比:
ASCON:以“慢而稳”赢得NIST轻量级加密算法标准_第3张图片
上表中的值越大,性能越好。可以看出:

  • Sparkle、Xoodyak、ASCON最快。相比于ChaCha20的加密速度,Sparkle提升了100%,Xoodyak提升了60%。
  • Elephant、ISAP、PHOTON-Beetle的加密性能最差,其速度仅有ChaCha20的约1/20。

并不是所有入围决赛的算法都支持用于哈希函数。与BLAKE2s对比,用作哈希函数时的性能对比为:
ASCON:以“慢而稳”赢得NIST轻量级加密算法标准_第4张图片
可知当用作哈希函数时,Sparkle和Xoodyak速度领先,在测试中,Sparkle要快于BLAKE2s,Xoodyak要慢一点点。ASCON用于哈希函数时性能较弱,PHOTON-Beetle相对慢。

3. energy(能效)评估

ASCON:以“慢而稳”赢得NIST轻量级加密算法标准_第5张图片
其中能效定义为:
Energy efficiency(bit/J)=Throughput(bits/sec)/Power(J/sec)

ASCON:以“慢而稳”赢得NIST轻量级加密算法标准_第6张图片

4. ASCON算法

ASCON中的sponge函数可用于生成AEAD和哈希,该sponge函数的主要参数有:

  • rate:block size(单位为字节数,如Ascon-128和Ascon-80pg的rate为8个字节,Ascon-128a的rate为16字节)
  • a:permutation的initialization/finalization轮数。(默认为12)
  • b:permutation的intermediate轮数。(如Ascon-128和Ascon-80pg的b为6,Ascon-128a的b为8)

ASCON可用于创建:

  • 1)AEAD(Authenticated Encryption with Additional Data,关联数据认证加密):可参看博客密码学中的AEAD(authenticated encryption with associated data)。
    主要变种有:
    • Ascon-128:提供128位安全性,且使用128位(16字节)nonce。
    • Ascon-128a:提供160位安全性,且使用128位(16字节)nonce。
    • Ascon-80pq:其sponge函数具有不同的rate。
  • 2)MAC(Message Authentication Code,消息认证码):可参看博客 密码学中的MAC(message authentication code)。
    • Ascon-Mac:创建的tag长度为16字节。同理有“Ascon-Maca”变种。
  • 3)PRF(Pseudo-Random Function,伪随机函数):可参看博客 密码学中的PRNG(pseudorandom number generator)及PRF(Pseudo-Random Functions)。
    • Ascon-Prf:创建的tag具有任意长度。同理有“Ascon-Prfa”变种。
    • Ascon-PrfShort:用于输入具有少量位数的情况。
  • 4)固定长度哈希 或 动态长度哈希:主要变种有:
    • Ascon-Hash:定义了具有固定长度输出的哈希算法,长度固定为32字节(256位)。同理也有“Ascon-Hasha”变种。
    • Ascon-Xof:具有动态长度哈希算法。同理也有“Ascon-Xofa”变种。

参考资料

[1] Prof Bill Buchanan OBE 2023年5月博客Slow And Steady Wins The Light-weight Race: Meet ASCON
[2] Lightweight Cryptography Primitives

你可能感兴趣的:(基础理论,基础理论)