嵌入式系统中的密码算法性能参考(STM32F10x)

随着物联网的发展, 在嵌入式系统(embedded system)中使用各种密码算法进行数据保护和身份认证逐渐成为一项基本需求. 但是, 增加密码算法会影响嵌入式系统的性能吗? 会影响到什么程度? 我应该选择什么样的密码算法呢?

为了回答上面的问题, 我们首先从在IoT中使用较为广泛的STM32系列CPU开始, 移植各类密码算法, 并将主要算法性能发布在这里, 供各位参考.

STM32F107ZE@72MHZ
Flash: 512KB
RAM: 64KB

AES      25 kB  0.052 seconds,    0.466 MB/s
Camellia 25 kB  0.048 seconds,    0.513 MB/s
ARC4     25 kB  0.010 seconds,    2.511 MB/s
RABBIT   25 kB  0.019 seconds,    1.259 MB/s
3DES     25 kB  0.242 seconds,    0.101 MB/s
SM4      25 kB  0.076 seconds,    0.320 MB/s
ZUC      25 kB  0.035 seconds,    0.702 MB/s

MD5      25 kB  0.010 seconds,    2.548 MB/s
SHA      25 kB  0.015 seconds,    1.666 MB/s
SHA-256  25 kB  0.029 seconds,    0.854 MB/s
SHA-384  25 kB  0.073 seconds,    0.335 MB/s
SHA-512  25 kB  0.078 seconds,    0.313 MB/s
SM3      25 kB  0.041 seconds,    0.590 MB/s

RSA 2048 public encryption      255.043 milliseconds,  3.92/s
RSA 2048 private decryption     2619.672 milliseconds,  0.38/s
RSA 2048 sign   2619.346 milliseconds,  0.38/s
RSA 2048 verify 254.671 milliseconds,  3.93/s

DH  2048 key generation  1008.250 milliseconds,  0.99/s
DH  2048 key agreement   1162.475 milliseconds,  0.86/s

ECC  256 key generation  419.448 milliseconds,  2.38/s
EC-DHE   key agreement   477.113 milliseconds,  2.10/s
EC-DSA   sign   time     510.192 milliseconds,  1.96/s
EC-DSA   verify time     955.580 milliseconds,  1.05/s