WolfSSL和ATECC508A的配置问题

时间:2019-06-13 13:29:47

标签: atmel wolfssl tls1.3

我们正在使用ATECC508AWolfSSL上支持Renesas RX600 CPU(对不起-客户要求)。我们正在尝试在IoT设备上执行TLS 1.3。使用ECC的软件WolfSSL模式-工作正常。 ATECC硬件支持的模式-失败,错误为-248(0xF4中的cryptoauthlib)。 在调试器中将程序跟踪到TLS 1.3握手的“预掌握秘密”步骤,在该程序中,无法从ATECC芯片的插槽进行读取。我们正在为ATECC508A使用MicroChip的默认配置。 看起来,预高级密钥是内部使用私钥计算的,并通过从ATECC slot3进行的加密读取返回。但是,默认ATECC配置将插槽3设置为“从不读取”模式。因此,毫不奇怪它会出错。

但是,这使用的是ATECC508A插槽的默认配置,cryptoauthib库的默认设置以及WolfSSL中的不变代码(添加的调试除外)。我在这里想念东西吗?

版本:WOlfSSL 4.0.0,CryptoAuthLib 20190304 Renesas RTOS RI600v4

关于其他需要看的建议吗?我可以提供user_settings.h,您可能需要的所有日志,等等。 预先感谢您的任何想法。

2 个答案:

答案 0 :(得分:1)

事实证明,在内部,WolfSSL调用atcab_ecdh_enc(),后者打算从(slot + 1)进行加密读取。 ATECC芯片组插槽3的默认配置将其设置为从不读取。 WolfSSL建议采用与MicroChip标准不同的配置,后者像我的公司(便宜,便宜)不想支付额外费用。因此,它可以像WolfSSL所指定的那样与ATECC配置一起使用,但不适用于默认配置。

我们的解决方法是改为调用atcab_ecdh(),这避免了加密读取,并直接将临时主密钥从temp寄存器传回。这似乎正常工作(尽管我仍在测试中)。 MicroChip FAE向我保证这不是安全风险。

感谢您的答复。

Kit Taylor

答案 1 :(得分:0)

原始答案发布在这里:https://www.wolfssl.com/forums/topic1396-configuration-issue-with-wolfssl-and-atecc508a.html

开始报价

  

用于生成ECC共享机密的调用使用加密的通道   [哪个]需要成对的加密密钥。默认的wolfSSL示例   使用atmel_get_enc_key_default(全为0xFF)。 [一个]应该   使用自己的实现和键重写此功能。这个可以   在构建时使用ATECC_GET_ENC_KEY完成。

     

如果[某人]希望使用其他插槽来生成临时密钥   [用户]可以在构建时使用宏ATECC_SLOT_ECDHE_PRIV覆盖,或   在运行时通过使用以下命令注册插槽分配器   atmel_set_slot_allocator。 [用户]可以通过以下方法测试其加密密钥   将atcab_ecdh_enc替换为atcab_ecdh   atmel_ecc_create_pms

     

ATECC芯片还有一个看门狗,如果该芯片不存在,它将发生   完成后进入空闲状态。 [用户将]注意到对atcab_idle的呼叫   在[] wolfcrypt / port / atmel / atmel.c中解决此问题。

     

请随时直接发送电子邮件至[wolfSSL支持团队]   带有[] user_settings.h和日志的support@wolfssl.com。   这些电子邮件被定向到[wolfSSL] ZenDesk   系统,[我们的一位工程师将]确保并抓住进票。

     

谢谢

     

[D.G。],wolfSSL

结束报价