你好
我使用AES CBC从DA14683传输数据,我想准备我的代码为安全模式。我确实从文档中理解,为了设置AES密钥,我需要:
—开启OTP读取功能
-使用DMA通道7将密钥从OTP转移到AES密钥64寄存器
——禁用OTP
-对我的数据启动AES
我想了解更多关于hw_aes_hash_store_keys函数的信息,我目前正在使用该函数准备aes协处理器。它设置密钥扩展并在将其传输到AES寄存器之前准备密钥字节。
存储在OTP中的密钥是否需要准备?我是否只需要将它们从OTP复制到AES寄存器?
我需要在启动DMA通道7之前调用hw_aes_hash_store_keys()函数来设置密钥扩展吗?此函数中的密钥传递将失败;这将在安全模式下以硬件故障结束吗?我是否需要重新实现那个功能,使它只设置参数,准备关键,但不有效地加载关键?
换句话说,你能给我一些关于如何设置DA14683为安全模式准备的见解吗(请不要通过重定向我到教程来回答)?
先谢谢你
致以最亲切的问候
某事
关键词:
设备:
问题n°2似乎与Q n°1相当相关:在安全模式下如何处理crypto_hmac_sha256() ?看起来这个函数只实现cpu密钥传输,而根本不使用DMA。
附属问题:你们在生产中测试了安全模式和加密/hmac吗?
谢谢你!
嗨,鲍勃,
hw_aes_hash_store_keys()将AES密钥存储在AES/HASH引擎内存中。此函数将用于AES加密/解密的密钥存储在AES/HASH引擎内存中。如果由引擎执行键扩展,那么aes_keys应该只包含基本键。否则,它应该包含所有展开的键。本教程在线
如果已启用安全特性,则应用程序无法读取存储的密钥。如果安全启动闪存被禁用,那么是的,这是可能的。
存储在OTP中的密钥只能通过安全的DMA通道7访问。生成密钥之后,应该将它们存储到OTP的安全区域中。
有关安全引导的更多信息,请参见在线教程和数据表。
谢谢,PM_Dialog
认为!
你好
谢谢你的回答。
我确实理解otp内存包含aes模块直接使用的密钥。如果加密算法需要密钥扩展,则所有密钥必须存储在aes_keys中。
-我理解,密钥存储在OTP不能被cpu读取时,在安全模式。它们只能使用DMA进行传输。
实际的板支持包实现这个DMA传输吗?据我所知,没有。
——>我应该重新实现hw_aes_hash_store_keys()在安全模式下使用密钥扩展吗?我使用AES CBC和传输的数据是使用openssl解码。
你没有回答我关于crypto_hmac_sha256()的问题。
-根据我的理解,我不能使用OTP存储的密钥在安全模式下使用HMAC。这意味着HMAC特性无法从JTAG/mkimage生产工具获取密钥。
你能确认吗?
先谢谢你
致以最亲切的问候
某事
你好
我计划使用initial_flash / jtag / otp / suota_loader_secured软件集在系统中引入的对称密钥。
如果我替换了hw_aes_hash_store_keys()函数,让键被DMA通道7加载:
-我知道我需要手动设置“密钥扩展”设置,以相同的方式hw_aes_hash_store_keys
-下一个语句似乎与字节交换有关。如果我理解的很好,它与小端到大端的转换有关。
你能向我确认DMA通道7设置是否能从OTP正确地加载密钥到AES协处理器吗?是否有任何特定的字节顺序转换要执行?如果是,在哪些情况下?
先谢谢你
致以最亲切的问候
某事