mbedTLS sha256 的性能现实吗?

Posted

技术标签:

【中文标题】mbedTLS sha256 的性能现实吗?【英文标题】:Performance of mbedTLS sha256 realistic? 【发布时间】:2019-07-15 11:36:08 【问题描述】:

目前我在 stm32f7 核板上测试 mbedTLS 的 sha256 性能。我用cycle counter register 测量了 stm32 板的经过周期。测量公式如下所示:

DWT->CYCCNT = 0;
uint32_t dwtStart = DWT->CYCCNT;
//uncomment for mbed calculation mbedtls_sha256();
//uncomment for atecc508a calculation atecc508a_sha256();
uint32_t dwtStop = DWT->CYCCNT;
double dStart = (double) dwtStart;
double dStop = (double) dwtStop;
// SystemCoreClock is a constant = 216000000
double result_in_milliseconds = (dStop-Start)/SystemCoreClock * 1000;

我在执行硬件散列的微芯片 atecc508a 上测试了 sha 命令,大约需要 18ms 散列 32 字节数据。

使用 mbedTLS 仅需要大约 0.05ms 在软件中散列 32 字节的数据。

我知道我必须记住,通过 i2c 进行的通信需要额外的操作时间,但这些结果是否合法?这两个操作之间会不会有这样的差异?

两个操作都将相应的哈希返回到某个 32 字节的输入。

如果有人能回答我的问题,将非常感激。

【问题讨论】:

作为嵌入式开发人员,以doubles 的身份进行计算绝对没有意义,即使是在你按喇叭的大 F7 上。 另外,也就是 10,800 个时钟周期,这并非完全不合理,但我对算法还不够熟悉,无法肯定地说。 @unwind 你完全正确!下次我将提供正确的值时,我已经对结果进行了四舍五入以获得更好的可读性。我的错。 【参考方案1】:

在标准 I2C 速度 (100kbit/s) 下,您可以传输

0.018*100000 = 1800 位 = 225 字节

在 18 毫秒内(包括开销)。这不是很多,所以是的,大部分时间都被 i2c 通信占用似乎是合理的。

【讨论】:

感谢您的回答,非常感谢!

以上是关于mbedTLS sha256 的性能现实吗?的主要内容,如果未能解决你的问题,请参考以下文章

mbedtls 和 openssl 之间的不同 AES-256 加密输出

sha256双向加密吗

Mbedtls_pk_parse_public_key 返回 0xfffffff0 和 secp256k1 公钥

每部Android手机都支持SHA-256吗?

为什么hashlib比sha256的其他代码更快?如何让我的代码接近hashlib性能?

Google Play 签名 SHA256 指纹发布一次后会改变吗?