如何对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

2026最新 Python+AI 入门指南:0基础也能快速上手,避开90%新手坑

2026最新 Python+AI 入门指南:0基础也能快速上手,避开90%新手坑

🎁个人主页:User_芊芊君子 🎉欢迎大家点赞👍评论📝收藏⭐文章 🔍系列专栏:AI 文章目录: * 【前言】 * 一、为什么2026年入门AI,首选Python?(新颖热点解读) * 二、Python+AI入门必备:前提+环境搭建(10分钟搞定) * 2.1 核心前提(不用啃硬骨头) * 2.2 环境搭建(Windows/Mac通用,避版本冲突) * 三、Python+AI入门实战:3个热门案例(附完整代码) * 案例1:数据处理(AI入门必备,80%AI开发第一步) * 案例2:机器学习入门(线性回归,房价预测) * 案例3:2026热门·大模型对接(LangChain快速调用) * 四、

OpenClaw 配置本地 Ollama 模型完整指南:零成本打造全离线个人 AI 助理

OpenClaw 配置本地 Ollama 模型完整指南:零成本打造全离线个人 AI 助理

OpenClaw 配置本地 Ollama 模型完整指南:零成本打造全离线个人 AI 助理(2026 最新版·含 Auth 配置) 大家好,我是你的 AI 技术博主。今天我们来聊一个 2026 年最火的本地 AI 助理项目——OpenClaw。它能帮你清理收件箱、发邮件、管理日历、处理文件、集成 Telegram/WhatsApp,甚至执行复杂任务,而且完全跑在你自己的电脑上。 配合 Ollama 运行本地模型(如 Qwen3、Qwen2.5、GLM-4.7、Llama3.3 等),你就可以实现真正零费用、零网络依赖、全隐私保护的智能体体验。官方从 Ollama 0.17

用 AI 做鸿蒙游戏 NPC,是一种什么体验?

用 AI 做鸿蒙游戏 NPC,是一种什么体验?

子玥酱(掘金 / 知乎 / ZEEKLOG / 简书 同名) 大家好,我是子玥酱,一名长期深耕在一线的前端程序媛 👩‍💻。曾就职于多家知名互联网大厂,目前在某国企负责前端软件研发相关工作,主要聚焦于业务型系统的工程化建设与长期维护。 我持续输出和沉淀前端领域的实战经验,日常关注并分享的技术方向包括前端工程化、小程序、React / RN、Flutter、跨端方案, 在复杂业务落地、组件抽象、性能优化以及多端协作方面积累了大量真实项目经验。 技术方向:前端 / 跨端 / 小程序 / 移动端工程化 内容平台:掘金、知乎、ZEEKLOG、简书 创作特点:实战导向、源码拆解、少空谈多落地 文章状态:长期稳定更新,大量原创输出 我的内容主要围绕 前端技术实战、真实业务踩坑总结、框架与方案选型思考、行业趋势解读 展开。文章不会停留在“API 怎么用”,而是更关注为什么这么设计、在什么场景下容易踩坑、

OpenClaw 刚配好就完了?5 步调教,让你的 AI 助手真正“能干活”

OpenClaw 刚配好就完了?5 步调教,让你的 AI 助手真正“能干活”

很多人装完 OpenClaw,接上 Discord 或 Telegram,发现能聊天了就觉得“搞定了”。 但我自己踩坑一圈后,越来越确定一件事:默认状态的 OpenClaw,可能只发挥了 20% 的能力。剩下的 80%,藏在一些你没太注意的配置文件里——而且改起来并不难。 下面我按“收益从高到低”的顺序,把我自己最有效的 5 步调教方法整理出来。新手照着做,大概率能立刻感受到差别。 默认状态 vs 调教后:差别到底在哪? 先给你一个直观对比,方便建立预期: 项目默认状态调教后回复风格客服味:“我很乐意帮助您!”更像懂你的搭档记忆每次对话都像陌生人记得你们之前聊过什么能力只能聊天能下载视频、查股票、做 PPT、巡检服务器…主动性你不说它不动会定期检查状态,主动提醒成本/效率所有任务都用同一个模型复杂任务用强模型,简单活用便宜模型 如果你只做一件事:先把第 1 步和第 2 步做了,