vivado 高级编程功能1

适用于 7 系列、 UltraScale UltraScale+ FPGA MPSoC 的回读和验证
7 系列器件生成已加密文件和已经过身份验证的文件
注释 如需获取其它信息 请参阅《使用加密确保 7 系列 FPGA 比特流的安全》 ( XAPP1239 )
要生成加密比特流 请在 Vivado IDE 中打开已实现的设计。在主工具栏中 依次选择“ Flow ” → “ Bitstream Settings” 这样会显示“设置 (Settings) ”对话框。在此对话框顶部单击“ Configure Additional Bitstream Settings”。
这样会显示“编辑器件属性 (Edit Device Properties) ”对话框。选择左侧窗格中的“ Encryption ”。
在“编辑器件属性 (Edit Device Properties) ”对话框中 指定加密和密钥设置
• 加密设置 (Encryption Settings)
Enable Bitstream Encryption ”可设置为“ YES ”。
Select location of encryption key ”可设置为“ BBRAM ”或“ EFUSE ”。
- 密钥位置将嵌入加密比特流中。
- 当加密比特流下载至器件后 它会指令 FPGA 使用已加载到 BBR eFUSE 密钥寄存器中的密钥来对加密的 比特流进行解密。
• 密钥设置 (Key Settings)
指定 HMAC 身份验证密钥和密码分组链接 (CBC) 起始值。
- 如果不指定这些值 Vivado 会为您生成随机值。
- 这些值将嵌入加密比特流 而无需编程到 FPGA 中。
注释 除非指定输入加密文件 否则这些值将存储在当前工程约束文件中。要避免将该值存储在约束文件中 , 请指定输入加密文件。
AES encryption key ”用于指定对比特流进行加密时要使用的加密密钥。您可使用最多 64 个十六进制字符来 指定 256 位密钥。
- 此密钥将写入含 .nky 文件扩展名的文件中。将该密钥加载到 BBR 中时 或者将该密钥编程到 eFUSE 密钥 寄存器中时, 请使用此文件。
注释 除非指定输入加密文件 否则这些值将存储在当前工程约束文件中。要避免将该值存储在约束文件中 , 请指定输入加密文件。
指定输入加密文件。
- 指定现有 .nky 文件即可获取加密密钥设置。该字段为可选字段 如果手动指定 AES HMAC CBC 则 可省略该字段。 指定加密设置后, 请单击“ OK ”以将设置应用于工程并重新生成比特流。成功完成 write_bitstream 操作后 , 将得到 1 个编程文件和 1 .nky 加密文件。
UltraScale UltraScale+ 生成已加密文件和已经过 身份验证的文件
注释 如需了解更多信息 请参阅《使用加密和身份验证确保 UltraScale/UltraScale+ FPGA 比特流的安全》 ( XAPP1267 ) 。 要生成加密比特流, 请在 Vivado IDE 中打开已实现的设计。在主工具栏中 依次选择“ Flow ” → “ Bitstream Settings” 这样会显示“设置 (Settings) ”对话框。在此对话框顶部 单击“ Configure Additional Bitstream Settings”。
这样会显示“编辑器件属性 (Edit Device Properties) ”对话框。选择左侧窗格中的“ Encryption ”。
在“ Edit Device Properties ”对话框中 指定“ Encryption Settings ”和“ Key Settings
• “ Encryption Settings
Enable Bitstream Encryption ”可设置为“ YES ”。
Select location of encryption key ”可设置为“ BBRAM ”或“ EFUSE ”。
- 密钥位置会嵌入加密比特流中。
- 当加密比特流下载至器件后 它会指令 FPGA 使用已加载到 BBR eFUSE 密钥寄存器中的密钥来对加密的 比特流进行解密。
Enable obfuscated key load ”可设置为“ ENABLE ”或“ DISABLE ”。
- 启用此项后 此用户生成的密钥将先经过加密 随后再被存储到 BBRAM 中。如果禁用此项 那么此密钥将 “按现状”直接存储到 BBRAM 中。
• “ Key Settings
Starting AES encryption key (key0) ”用于指定对比特流进行加密时要使用的加密密钥。您可使用最多 64 个十 六进制字符来指定 256 位密钥。
- 此密钥将写入含 .nky 文件扩展名的文件中。将该密钥加载到 BBR 中时 或者将该密钥编程到 eFUSE 密钥 寄存器中时, 请使用此文件。
注释 除非指定输入加密文件 否则该值将存储在当前工程约束文件中。要避免将该值存储在约束文件中 请 指定输入加密文件。
Input encryption file ”用于指定输入加密文件。
- 指定现有 .nky 文件即可获取加密密钥设置。该字段为可选字段 如果手动指定 AES HMAC CBC 则 可省略该字段。
Starting AES initial vector (IV0) value ”用于指定输入加密文件。
- 对应第一个密钥的初始化矢量。请注意 每个密钥都需要 1 个独立的初始化矢量值 该值可通过输入加密文 件来提供。
注释 该值将存储在当前工程约束文件中。要避免将该值存储在约束文件中 请指定输入加密文件。
Starting obfuscate initial vector (Obfuscate IV0) value ”用于指定输入加密文件。
- 对应模糊密钥的初始化矢量。
注释 该值将存储在当前工程约束文件中。要避免将该值存储在约束文件中 请指定输入加密文件。
• “ Key Rolling Settings
如需生成调试文件以报告 KDF 模式下生成的所有密钥 请指定“ debug file to report all the keys generated in KDF mode”。
Fixed Input Data for KDF keyrolling ”可指定用于 KDF 密钥滚动的固定输入数据。该值为可选 60 字节固定输
入值 并指定为 120 位十六进制值。此 60 字节输入搭配 4 字节计数器即可通过 RAND_bytes 充当 KDF 虚拟随 机固定输入值的 64 字节输入。
Seed for KDF Keyrolling ”用于指定 KDF 密钥滚动的种子。该值为 KDF 的可选 32 字节种子值 指定为 64 位十六进制值。
Number of encryption blocks per key ”用于指定每个密钥的加密块数 Number of frames per AES-256 key”则用于指定每个 AES-256 密钥的帧数。
- 加密块数和帧数用于指定每个比特流通过每个不同密钥细分到的段数。
要执行身份验证设置 请选择左侧窗格中的“ Authentication ”。
在“ Edit Device Properties - Authentication ”对话框中 指定如下加密和密钥设置
• “ Authentication Settings
Enable Bitstream Authentication ”可设置为“ YES ”。
Input file containing RSA Private Key ”用于指定包含 RSA 专用密钥的输入文件。
指定加密和身份验证设置后提供 RSA 专用密钥 单击“ OK ”即可将这些设置应用于工程。重新运行实现 并重新 生成比特流文件。成功完成 write_bitstream 操作后 生成的 .nky 加密密钥文件将显示在加密比特流文件所 在目录中。
您可通过使用 256 位高级加密标准 (AES) 密钥、下载比特流并仅在经授权的 FPGA 上运行来保护比特流中的 IP 。具体 方法是将 256 位密钥编程到经授权的 FPGA BBR 寄存器中 然后再下载加密比特流。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/586978.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

onnxruntime 中的 Gather 算子

上一篇文章中介绍了 Division by Invariant Integers using Multiplication 的原理,很多框架均才用该算法优化除法运算。onnxruntime 是已知实现中最为简洁的,因此本文结合 onnxruntime 的 Gather 实现进行介绍。 Gather 算子是一个索引类算子&#xff0…

汽车贴膜改色小程序源码 汽车配色小程序源码 车身改色app源码 带后台 带数据

汽车贴膜改色小程序源码 车身改色app源码 汽车配色小程序源码 带后台 带数据 整站源码,包含完整前端小程序,后台源码,数据库数据。 直接部署,就能使用,源码素材远程开发,可以定制开发。 全开源,…

【测试篇】接口测试

接口测试,可以用可视化工具 postman。 如何做接口测试?? 我们可以先在浏览器中随机进入一个网页,打开开发者工具(F12)。 随便找一个接口Copy–>Copy as cURL(bash) 打开postman 复制地址 进行发送。 …

关系(二)利用python绘制热图

关系(二)利用python绘制热图 热图 (Heatmap)简介 热图适用于显示多个变量之间的差异,通过颜色判断彼此之间是否存在相关性。 快速绘制 基于seaborn import seaborn as sns import pandas as pd import numpy as np i…

Windows系统下载安装SQLServer

Windows系统下载安装SQLServer Microsoft SQL Server 是一个全面的数据库平台,使用集成的商业智能 (BI)工具提供了企业级的数据管理。Microsoft SQL Server 数据库引擎为关系型数据和结构化数据提供了更安全可靠的存储功能,使您可以构建和管理用于业务的…

如何从只会 C++ 语法的水平到达完成项目编写软件的水平?

初学者在学习C的过程中,通常首先接触的是基本语法和结构。然而,仅停留在“会用语法”的阶段并不能胜任实际项目的编写工作。要真正具备独立完成项目的能力,需要对C有更深入的理解和实践积累,这包括但不限于面向对象设计、数据结构…

Python学习:面相对象

面向对象 面向对象技术简介 类(Class): 用来描述具有相同的属性和方法的对象的集合。它定义了该集合中每个对象所共有的属性和方法。对象是类的实例。方法:类中定义的函数。类变量:类变量在整个实例化的对象中是公用的。类变量定义在类中且在函数体之外。类变量通常不作为实…

k8s calico由IPIP模式切换为BGP模式

按照官网calico.yaml部署后,默认是IPIP模式 查看route -n , 看到是tunl0口进行转发 怎么切换到BGP模式呢? kubectl edit ippool 将ipipMode由Always修改为Never ,修改后保存文件即可。无需做任何操作,自动就切换为BG…

基于深度学习的端到端自动驾驶的最新进展:调研综述

基于深度学习的端到端自动驾驶的最新进展:调研综述 附赠自动驾驶学习资料和量产经验:链接 论文链接:https://arxiv.org/pdf/2307.04370.pdf 调研链接:https://github.com/Pranav-chib/ 摘要 本文介绍了基于深度学习的端到端自…

C语言联合体,枚举详解

1. 前言 前边我们已经了解了结构体在C语言当中是如何使用的,今天咱来一起聊一聊联合体与枚举在C语言当中又是如何运用的呢 2. 联合体的了解与运用 2.1 联合体的声明: 相比于结构体来说,联合体最大的区别就在于它是联合体当中所有成员共用一…

FreeRTOS作业day3

1.总结任务调度算法之间的区别,重新实现一遍任务调度算法的代码。 区别: 抢占式调度适用于任务优先级不同的任务,时间片轮转适用于相同优先级的任务 优先级调度:根据任务的优先级进行调度,高优先级的任务优先执行。 时…

国际贸易中的O/A付款方式及其风险管理 | 全球数字贸易发展联盟的作用

在复杂多变的国际贸易领域中,O/A(Open Account)付款方式作为一种常见的交易方式,既为买卖双方提供了灵活的操作空间,也带来了一定的风险。本文将对O/A付款方式进行深入探讨,并介绍全球数字贸易发展联盟如何…