我们正在使用ATECC508A
在WolfSSL
上支持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
,您可能需要的所有日志,等等。
预先感谢您的任何想法。
答案 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
结束报价