易灵思Titanium 加密详解 📅 2026/8/17 19:03:57 易灵思Titanium 加密详解加密Titanium从设计特性来说FPGA可被重新配置以执行用户编程的任意功能但如果缺乏防护恶意用户可能篡改FPGA使其执行其他未授权功能。为防范这类攻击FPGA需要对配置比特流进行安全保护一种防止篡改的手段是认证FPGA通过认证确认比特流来自可信来源仅使用用户创建的比特流 —— 用户辛苦开发出硬件产品肯定不希望有人逆向工程FPGA的功能、窃取成果或据此打造竞争产品。另一种需求是比特流加密FPGA需支持该功能以确保用户的设计安全。Titanium FPGA 内置了认证与加密安全功能用于保护应用安全。用户可单独使用其中一种或同时启用两种来增强安全性。认证Titanium FPGA支持基于RSA-4096算法的非对称比特流认证流程如下用户生成一对公钥 / 私钥并用私钥对比特流进行签名。将公钥数据烧写到 FPGA 的熔丝中硬件级固化。配置时FPGA使用熔丝中的公钥验证比特流的签名若签名正确FPGA 确认比特流来自可信来源、未被篡改继续正常配置并进入用户模式。若签名错误FPGA 停止配置不会进入用户模式。比特流认证比特流包含RSA公钥的相关数据FPGA用公钥验证签名私钥需严格保密。流程开发者电脑端生成密钥对私钥 公钥用私钥对 “未签名比特流” 签名得到 “已签名比特流”将公钥烧写到 FPGA 的熔丝中FPGA 系统端FPGA 用熔丝中的公钥认证 “已签名比特流”签名有效FPGA 进入用户模式签名无效不进入用户模式加密为确保知识产权安全Titanium FPGA 采用256 位密钥的对称加密并使用 AES-GCM-256 算法。用户生成密钥并用该密钥加密比特流随后将密钥烧写到 FPGA 的熔丝中保存。配置期间FPGA 使用存储的熔丝密钥解密比特流 —— 密钥无法从熔丝中提取因此恶意用户无法恢复密钥。Efinity 软件简化操作Efinity 软件内置工具可轻松完成密钥生成、熔丝烧写、比特流加密**生成密钥**Efinity 软件内置密钥生成工具可生成 AES 密钥.bin和 / 或 RSA 密钥.bin 公钥 私钥。可选择通过强随机化生成这些密钥若需要该功能。此外RSA 私钥可导出为行业标准的.pem 文件格式方便第三方工具使用。务必将密钥妥善保存在安全位置**加密比特流**要保护比特流只需在 Efinity 项目编辑器的 “比特流生成” 选项卡中指定密钥文件开启认证和 / 或加密功能。编译期间软件会自动用密钥加密比特流之后用户可像往常一样用受保护的比特流对 FPGA 进行编程。烧熔丝用户需使用JTAG SVF 配置器和.svf 文件来烧写熔丝。使用易灵思开发套件可通过软件内置的JTAG SVF 配置器 USB 线缆实现若使用自定义板卡需用JTAG SVF 配置器 JTAG 线缆。烧写熔丝前先给板卡上电并触发CRESET_N。注意烧熔丝是永久性操作一旦烧写无法撤销熔丝设置也无法更改。因此执行该步骤前请务必确认已准备就绪。验证安全性完成整个流程后用户需要验证安全功能是否正常工作用正确的密钥和比特流测试FPGA 会正常进入用户模式测试异常场景比如比特流错误、密钥错误若用不正确的 AES 密钥加密比特流FPGA 不会进入用户模式同理若使用认证功能发送未签名的比特流FPGA 也不会进入用户模式最终用户可以用Efinity 编程器检查 FPGA 的安全引擎是否启用了 RSA/AES 算法以及这些算法是否成功运行。比特流加密FPGA 的熔丝中存储用于解密比特流的 256 位密钥流程开发者电脑端生成密钥用密钥加密 “明文比特流”得到 “加密比特流”将密钥烧写到 FPGA 的熔丝中FPGA 系统端FPGA 用熔丝中的密钥解密 “加密比特流”解密成功FPGA 进入用户模式解密失败不进入用户模式安全流程自己理解在 Titanium FPGA 的安全流程中正确的顺序是 “先加签RSA 私钥签名再加密AES 加密”逻辑如下加签RSA 私钥签名的目的是验证 “原始比特流的来源可信性”加密AES的目的是保护 “原始比特流 签名” 的内容保密性逻辑流程如下**先加签**用 RSA 私钥对原始比特流进行签名得到 “原始比特流 签名”签名是原始比特流的 “身份凭证”**后加密**将 “原始比特流 签名” 作为一个整体用 AES 密钥加密为密文保护内容不被窃取对应的 FPGA 端流程FPGA拿到密文后会先执行AES解密得到 “原始比特流 签名”再用熔丝中存储的RSA公钥验证签名 —— 若签名有效才会正常配置若无效则拒绝配置。