想用FPGA和RISC-V核做一个‘物联网终端安全协处理器’的毕设,实现轻量级加密算法和物理不可克隆功能(PUF),有哪些开源生态和关键模块可以借鉴?

开放4 回答 108 浏览

毕设选题想结合IoT和安全热点。计划在FPGA上用软核(如VexRiscv)或硬核(EOS S3)搭建系统,实现AES/ECC等算法加速,并探索基于SRAM或RO的PUF生成密钥。难点在于:1. 如何选择适合IoT场景的轻量级开源RISC-V SoC平台?2. PUF模块的稳定性和后处理(如模糊提取)在FPGA上如何实现?3. 整个系统如何与主MCU(如STM32)通过SPI等接口安全交互?求有经验的大神指点方向或开源参考。

分享:
  • FPGA学号2

    毕设做这个方向挺有意思的,结合了IoT和安全。开源生态的话,你可以重点关注几个项目。首先,RISC-V软核,VexRiscv确实是个好选择,它轻量、可配置,在SpinalHDL里用着方便。如果想更完整点,可以看看PicoRV32或者Ibex,后者是lowRISC维护的,对安全特性支持可能更好。PUF模块,开源的实现不多,但学术论文里有很多参考。你可以搜一下基于SRAM的PUF,FPGA上电时SRAM的初始值是随机的,这个特性就能用。关键是后处理,比如用纠错码做模糊提取,这个算法你得自己实现或者找Verilog/VHDL的代码。系统交互,用SPI没问题,但要在FPGA里设计一个安全的协议,比如加上认证和防重放。建议你先搭一个最小SoC,把RISC-V跑起来,再慢慢加模块。

  • 数字IC萌新

    同学你好,我也做过类似的课题,分享点经验。平台选择上,如果FPGA有硬核(比如EOS S3里的Cortex-M),开发会简单些,但RISC-V软核更灵活。我推荐用Ibex核,它来自OpenTitan项目,天生为安全设计,有文档和参考SoC。PUF这块是难点,稳定性需要大量测试和后期处理。你可以用Xilinx FPGA的BRAM初始值做SRAM PUF,但不同温度电压下会漂移,所以必须配合模糊提取器。网上有开源的Helper Data算法模块可以找找。整个系统,建议你把FPGA作为从设备,主MCU通过SPI发命令过来,FPGA里的RISC-V核负责执行加密或PUF响应,返回结果。关键是要设计好通信协议,比如每个命令带MAC校验。开源参考可以看OpenTitan的硬件设计,还有谷歌的OpenSK项目,虽然它是用于安全密钥的,但架构有借鉴意义。

  • 芯片设计新人

    从实现角度给点具体步骤吧。1. 选平台:先用仿真试试。在GitHub搜“VexRiscv”或“Ibex”,找到带SoC框架的(比如用LiteX构建的)。LiteX框架能快速集成CPU、内存、外设,你的PUF和加密模块可以当成自定义外设挂上去。2. PUF实现:找论文《SRAM PUF on FPGAs》里的方法,写个模块读取FPGA上电后的BRAM值作为指纹。后处理用BCH纠错码或重复码,这部分算法可以用C在RISC-V上跑,或者用硬件实现加速。3. 安全交互:SPI接口加一个AES-GCM的加解密层,由FPGA内的硬件AES模块实时处理。这样主MCU和FPGA之间的数据都是加密的。整个项目的难点是模块集成和调试,建议分阶段:先让SoC在FPGA上运行裸机程序,再添加PUF外设,最后做通信测试。注意,PUF的响应需要多次上电测试其稳定性,留出足够时间。

  • 数字电路入门生

    你这个毕设选题挺有意思的,IoT安全现在确实是热点。结合我的经验,给你捋一下思路。

    首先,平台选择上,我强烈建议你用VexRiscv软核。它非常轻量,文档和社区支持都不错,而且有完整的SoC例子(比如用SpinalHDL写的)。EOS S3这类硬核虽然性能好,但可能不够灵活,而且生态相对封闭,对于毕设来说调试起来更麻烦。你可以在GitHub上搜“VexRiscv”或“Litex”,后者是一个用Python生成SoC的框架,里面集成了VexRiscv,能快速搭建带外设(比如SPI、UART)的系统,特别适合你这种需要和外部MCU通信的场景。

    PUF这块是难点。SRAM PUF实现起来相对简单,就是利用FPGA上电时SRAM单元的随机初始值。但关键在后处理——模糊提取。这个在FPGA上实现需要一些数字电路设计。你可以找开源的“Fuzzy Extractor”或“Helper Data Algorithm”的Verilog/VHDL代码,GitHub上有一些学术项目开源了。核心是纠错编码(比如BCH码或重复码)。注意,PUF的稳定性需要大量测试,你要在代码里加入校准逻辑,可能还需要在软核里跑一些辅助算法来处理原始响应。

    关于和主MCU的安全交互,思路要清晰。你的FPGA协处理器应该作为一个“黑盒”存在。通过SPI接口,主MCU发送命令(比如“加密此数据”)和接收结果。关键是要在协议层面设计好:1. 身份认证(可以用PUF生成的密钥来做双向认证);2. 防止重放攻击(加入随机数或序列号)。你可以在RISC-V软核里跑一个简单的固件,来解析SPI命令、调用AES/ECC硬件加速模块、并管理PUF。

    开源模块推荐:
    1. Crypto加速器:搜“riscv-crypto”或“AES32”(RISC-V指令集扩展),也有独立的AES/ECC Verilog内核。
    2. PUF:搜“FPGA PUF SRAM”或“RO PUF”,注意看有没有包含后处理。
    3. 整个SoC参考:Litex项目里有一个“vexriscv_secure”的例子,可能直接相关。

    最后提醒,毕设时间有限,别贪多。先把VexRiscv+SPI在FPGA上跑通,再逐步集成PUF和加密模块。稳定性测试要早点开始。祝你顺利!

登录后可在本页底部提交回答

提问者

数字系统初学者查看主页

描述场景与已尝试方案,更容易获得有效解答

浏览「其他」

相关问题

同分类问答

提问建议

  • 标题写清核心疑问,避免「求助」「请问」等空泛用语
  • 正文补充环境、版本、报错信息或截图
  • 先搜索本站是否已有相近问题,减少重复提问
  • 若与课程相关,请标明课时或章节便于讲师定位

技术问答

问完之后的闭环

  • 关联课程精学高频问题往往对应章节,建议回到课程补基础。
  • 产出与互助解决过程可写成笔记,帮助后续同学。

探索全站