Zynq FPGA 固件加密,安全启动

Zynq 安全启动安全启动主要为了防止以下事件发生防止外人读取NVM 固件进行逆向。防止固件内容进行篡改。1.Zynq 加密简介1.1 公钥和私钥加密的密钥与解密的密钥不相同使用私钥加密的内容,只能通过公钥来解密使用公钥加密的内容,只能通过私钥来解密公钥,可以对外给任何人的加密和解密密码,公开的,可以任何人访问私钥,私钥是一定要严格保护的,通过私钥可以生成公钥,但是从公钥可以认为是永远无法推导出私钥的。1.2 Zynq 相关密钥AES 256-bit keyAES(Ad
摘要由CSDN通过智能技术生成

Zynq FPGA固件加密,安全启动

安全启动主要为了防止以下事件发生

  1. 防止外人读取NVM 固件进行逆向。
  2. 防止固件内容进行篡改。

1.Zynq 加密简介

1.1 公钥和私钥

  • 加密的密钥与解密的密钥不相同
  • 使用私钥加密的内容,只能通过公钥来解密
  • 使用公钥加密的内容,只能通过私钥来解密
  • 公钥,可以对外给任何人的加密和解密密码,公开的,可以任何人访问
  • 私钥,私钥是一定要严格保护的,通过私钥可以生成公钥,但是从公钥可以认为是永远无法推导出私钥的。

1.2 Zynq 相关密钥

  • AES 256-bit key

    AES(Advanced Encryption Standard) Key 用于 bbram,efuse 的硬件加密,在启动阶段判断固件与硬件是否匹配(AES key 存放在FPGA, 与固件当中)。

  • HMAC key

    HMAC(Hashed Message Authentication Code )key 用于加密固件(bit/bin),并存放bit文件中,用于校验当前分区文件的正确性(HMAC key 存放在固件当中)

  • PSK

    PSK RSA Primary Secret Key,主私钥, 产生 主公钥PPK,开发者保留

  • PPK

    RSA Primary Public Key 主公钥, 认证次公钥SPK,存放在BootHeader

  • SSK

    RSA Secondary Secret Key, 次私钥,用于产生 次公钥SPK,开发者保留

  • SPK

    RSA Secondary Public Key (SPK) 次公钥, 用于认证分区数据(bin,elf等), 存放在BootHeader

小结:

  • AES / HMAC 成对使用。Bootgen 会自动生成.nky文件(如果不存在*.nky)
  • RSA 用于校验整套固件的正确性(多个文件之中的一个可能会被更改)
  • 主钥(PPK, PSK)验证次钥,次钥(SPK, SSK)验证分区固件。
  • Debug 模式用户只需要提供私钥(PSK, SSK)

1.3 Zynq 安全启动相关模块

在这里插入图片描述

模块名 描述
eFUSE SHA256(PPK) PS eFuse,hash PPK存放位置用于RSA加密, 一次性编程
BootRom 启动代码存放rom,arm启动首先从Bootrom 启动
NVM Controllers 非易失性存储控制器
AES Decryptor AES 解密器, 解密 PS, PL AES Key
HMAC Hashed Message Authentication Code 用于固件数据加密
eFuse Array PL eFuse, AES key 码存放位置,用
  • 4
    点赞
  • 54
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值