如何对xilinx FPGA进行bit文件加密

记录背景:最近在用Vivado评估国外一个公司所提供的ISE所建的工程时,由于我并没有安装ISE工程,因此将其提供的所有v文件导入到Vivado中,对其进行编译。添加完之后成功建立顶层文件,但奇怪的是,除了顶层文件的v文件可以正常打开编辑外,其它sub层的v文件都无法正常打开编辑,双击打开后显示的是乱码,继续查找它们与顶层文件有什么不同时,发现这些文件的属性之一——encrypted 都是“yes”状态。

这多少有点震惊我了,我之前只知道为了保护某文件的保密性时,一般都是生成网表(ncg?netlist?)文件以便提供他人使用,别人拿到的网表文件只是个空壳子,尽管调用就好,里面的代码对他来说就是个空壳子。

为了知道别人是怎么做到v文件加密的(感觉逼格挺高的),上网搜索一番,最后,最后,最后发现是需要Xilinx提供特定的工具才可以(而这一说法也得到了Xilinx的FAE的认证),而这个特定的工具一般只有Xilinx的高级客户才会拥有。好吧,继续挖掘的冲动突然就猝死了。

--------------------------------------------------------------------------------------------------------------------------------------------

转自:https://blog.ZEEKLOG.net/u010161493/article/details/79200527,如有侵犯,请告知删除,抱歉!

加密的优点

xilinx的V6和7全系列FPGA支持AES256加密,加密的好处: 
1,可以防止别人回读或者对你的程序进行逆向读取; 
2,防止更改烧写的bit文件。 
如果仅仅是防止回读,可以简单设置BITSTREAM.READBACK.SECURITY,其中LEVEL1是禁止回读,LEVEL2禁止回读和重新烧写FPGA。 
但如果对手的逆向能力很强,比如说在FPGA上电加载bit的时候用逻辑分析仪把用bit文件“读”出来,这个简单的设置肯定就不行了。这时候可以使用AES256加密。

AES算法简介:

AES即高级加密标准,是一种区块加密,当然也是对称加密。区块固定为128bit,秘钥为128,192或256bit。AES有5种加密模式,xliinx采用的是CBC模式。有一个128bit初始向量IV(startCBC),先利用初始向量IV与第一组数据进行异或后再进行加密运算生成C1。将C1作为初始向量与第二组数据进行异或后再进行加密运算生成C2。以此类推,当最后一组数据加密完毕后,将加密结果拼接为最终结果,C = C1C2C3……Cn。 
所以采用CBC模式的256AES需要两个东西,128bit-startCBC和256bit-AES key。

到这里还没完,完成了bit加密还没有认证,万一别人把烧进去bit文件篡改了怎么办?(重新烧了新的bit文件)。所以xilinx又提供了HMAC的认证,这个就跟校验差不多了,检查消息的完整性。

所以还需要提供256bit-HMAC,加上128bit-startCBC和256bit-AES key,一共是三个。这三个key可以自己生成,也可以指定空的 .nky文件,由软件随机生成好。 
for example 
··· 
Device xc7a35t; 
Key 0 0f2ec1178ae0d04c8c1431afe8266d08e799b01c5c486c2567f3621f47319aaf; 
Key StartCBC a6262d508c338eeab815340a7832436d; 
Key HMAC d82e72733a7bd7904c802d13db37187b8ad20b972ac163470c5a4d239bce6308; 
··· 
加密的AES key可以存到FPGA内部易失性的BBR或只能烧写一次(OTP)的eFUSE中。 
BBR需要电池供电,可以多次编程。eFUSE不需要电池,但只能烧写一次。这里使用eFUSE

eFUSE寄存器

首先来看一下eFUSE寄存器: 

这里写图片描述

 
一共有四个寄存器,分别是存放AES秘钥,用户信息,设备DNA和eFUSE控制。下面特别关注一下eFUSE控制寄存器:

这里写图片描述

 

这里写图片描述

 
一共有6个bit有用,各种设置的优缺点表里有详细说明,使用参考设置101100就行了。 
其中bit0很重要,万一置位了,AES的key又搞丢了,FPGA就变砖头了。

具体的操作步骤如下:

1生成key和加密bit

下面三个key可以自己生成填进去,也可以由软件随机生成。 

这里写图片描述


这里写图片描述


要打开edit device properties,先要打开sythesized design 或者implement design,然后在generate bitstream右键设置 

这里写图片描述


这里写图片描述

2下载eFUSE

这里写图片描述

 

这里写图片描述

 

这里写图片描述

 

这里写图片描述

3烧写FPGA程序

这里写图片描述

 

这里写图片描述

 
program 

这里写图片描述

 

这里写图片描述

4验证

很简单,读出mcs然后烧到另一个FPGA里面去,可以看到不能工作。当然,也可以在前面eFUSE设置时选择只能加载AES加密的bit文件,这样换一个不加密的bit下进去也能验证。 

这里写图片描述

 

这里写图片描述

**********************************************************************************************************************

Q1:在bitstreams中的edit device property选项中,没有encyption选项,所以无法设置efues。

A1:这应该是开发工具版本过低的原因,升级到新版本试试。

Read more

零基础指南:学生如何申请和使用GitHub Copilot

快速体验 1. 打开 InsCode(快马)平台 https://www.inscode.net 2. 输入框内输入如下内容: 创建一个面向编程新手的Jupyter Notebook教程,内容包含:1. GitHub Copilot学生认证申请步骤截图;2. 基础Python语法练习(变量、循环、函数);3. 使用Copilot完成简单计算器项目。要求每个步骤都有详细说明和Copilot使用技巧提示。 1. 点击'项目生成'按钮,等待项目生成完整后预览效果 零基础指南:学生如何申请和使用GitHub Copilot 作为一名计算机专业的学生,最近在同学的推荐下尝试了GitHub Copilot这个AI编程助手,发现它真的能大幅提升学习效率。今天就把我的完整使用经验整理出来,特别适合刚接触编程的新手参考。 一、GitHub学生认证申请 1. 首先需要注册GitHub账号,这个步骤很简单,在官网填写基本信息就能完成。记得使用学校邮箱注册,后续认证会更容易通过。

3步轻松部署Stable Diffusion:Docker一键安装完整指南

3步轻松部署Stable Diffusion:Docker一键安装完整指南 【免费下载链接】stable-diffusion-webui-dockerEasy Docker setup for Stable Diffusion with user-friendly UI 项目地址: https://gitcode.com/gh_mirrors/st/stable-diffusion-webui-docker 想要体验强大的AI图像生成功能,但被复杂的安装配置吓退?现在通过Stable Diffusion WebUI Docker项目,只需简单几步就能在本地运行专业的Stable Diffusion系统。这个项目使用Docker容器技术,让AI图像生成变得触手可及。 🚀 为什么选择Docker部署Stable Diffusion Docker部署的优势: * ✅ 环境隔离:避免依赖冲突,保持系统干净 * ✅ 一键启动:无需手动安装Python、CUDA等复杂环境 * ✅ 跨平台兼容:支持Windows、macOS、Linux系统 * ✅ 快速更新:轻松升级到最新版本

2026-01-14 学习记录--LLM-申请Hugging Face 访问令牌(以Meta-Llama-3.1-8B-Instruct为例)

2026-01-14 学习记录--LLM-申请Hugging Face 访问令牌(以Meta-Llama-3.1-8B-Instruct为例)

LLM-申请 Hugging Face 访问令牌(以Meta-Llama-3.1-8B-Instruct为例) 一、请求访问Llama模型 ⭐️ 随便进入想要访问的Llama模型,这里展示的是Meta-Llama-3-8B-Instruct。 1、 点击链接,申请访问Llama模型 2、 填写相关申请信息,注意如下:👇🏻(1)、国家最好选「美国」,然后填 「美国的大学」;(2)、操作这一步时,节点需要是对应国家的节点(若是美国,那么节点也要是美国)。 3、 提交成功后,就可开始申请Llama模型的Hugging Face 访问令牌啦~ 二、申请Llama模型的Hugging Face 访问令牌(以Meta-Llama-3.1-8B-Instruct为例)⭐️ 1、判断是否需要申请 访问Meta-Llama-3.1-8B-Instruct模型在Hugging Face上的官方仓库。 假若你看见“You need to agree to share your

【AI大模型学习日志4:深度拆解Meta Llama系列——全球开源大模型的事实标准与AI普惠化的奠基者】

在上一篇AI大模型学习日志中,我们深度拆解了Anthropic的Claude系列,它以“安全对齐+长上下文对话”为核心差异化,成为企业级对话场景的标杆,凭借严谨的内容输出与隐私保护优势,在政企、法律等强合规领域站稳脚跟。而在大模型赛道,有一款产品彻底打破了“闭源模型垄断高端能力”的格局——它没有高调的发布会,没有复杂的商业化噱头,仅通过开源免费的模式,就推动了AI技术的普惠化普及,成为全球数千万开发者的首选开源底座,定义了开源大模型的事实标准,它就是Meta(原Facebook)研发的Llama(Large Language Model Meta AI)系列。 在Llama出现之前,开源大模型普遍存在“性能弱、场景适配差、商用受限”的痛点,而闭源大模型的API调用成本高昂,让中小企业与独立开发者望而却步,AI技术的普惠化陷入瓶颈。Llama的横空出世,不仅填补了“高性能开源大模型”的空白,更以宽松的开源许可、轻量化的部署优势,让全球开发者都能零成本获取旗舰级AI能力,推动了开源大模型生态的爆发式增长。本文所有核心信息均以Meta官方技术白皮书、Llama版本更新公告、开源协议文档及权