1. 首页
  2. 业界观点

重要里程碑!IOTA生态基金资助项目–加密内核FPGA开发完成!

导读:IOTA加密内核FPGA项目是IOTA生态基金资助项目之一,该项目的顺利完成,再次强化了未来IOTA成为物联网骨干的可能性,为硬件厂商直接围绕IOTA加密内核,设计和生产物联网的各种部件提供了完整的验证和实践过程,也进一步会加强现有物联网的厂商对IOTA的关注度和信心。敬请阅读项目负责人“MicroEngineer”的项目总结报告(如下)

这是我IOTA加密核心项目的总结报告。如果你错过了上一个报告,点击这里

项目的几个里程碑

项目的几个里程碑

长达9个月的有趣的工作即将结束,是时候从头到尾捋一捋了。

整体框架

系统的整体设计框架

系统的整体设计框架

PiDiver PoW

第一个里程碑是PiDiver。虽然这项工作是在“正式获得基金会生态基金资助”之前就已经完成,它被包括在资助计划当中,这点让我很开心,因为我所做的工作得到了不错的补偿。

同样还有powsrv,它是一种以PiDiver为基础,将PoW外包给高度专业化和高效的硬件的服务。

IOTA加密FPGA核心

第二个里程碑是FPGA核心的开发,它为大多数IOTA核心功能提供了硬件加速。它提供了一个易于使用的高级API,而计算密集型的低级计算则被卸载到专门的逻辑块中,与纯软件解决方案相比,这种逻辑块在速度上具有显著的优势。

在这项工作中,我使用了一个现成的Arty S7板,做了一个像“帽子”一样的设计。“帽子”上有一个安全元件,SPI-Flash(从未用过)和一个W5500以太网控制器。

在FPGA内部,Cortex M1 (ARM)的Cpu运行频率是100MHz,支持C/ c++编程。固件由FPGA提供的安全机制保护。攻击者应该很难未经授权地访问存储在被加密的内存中的种子,或者对固件进行篡改。

FPGA内部还有专门的逻辑,可以进行Hash加速(如:Curl-P81(和PoW)、Keccak384(用于Kerl)和Troika)和类型转换(二进制<->三进制)。这种特殊的逻辑块称为硬件加速器,与纯软件实现相比,它提供了很好的性能提升(Hash速率提升150倍以上)。它们的Hash速率通常比CPU为3GHz的电脑上还要快(这里和这里有一些速度比较)。

IOTA加密FPGA模块

下一个里程碑是为上一个里程碑中开发的FPGA核心构建专用硬件。
最终我们得到了一个小型(30x26mm) FPGA模块,它可以放在一个mini-PCIe插槽中(但它并不是mini-PCIe板卡)

针对该模块,我还开发了一个小型测试板,以便对该模块进行测试。

起初我以为可能不会用到这块板卡了,但是我错了。我很喜欢它,每次改版我都会用到它。

测试板

测试板

基于Linux的板载系统SoM

下一个工作就是找到一个能支撑FPGA模块的板载系统SoM。一开始,我计划采用一个稍微大点的微控制器,但它被一个更强大的微控制器ATSAMA5D27所取代,它有128MB的内存,能够运行完整的主流Linux,这使它适合于许多应用程序。

ATSAMA5D27有非常好的安全特性,比如引导签名的Linux内核,它也非常省电(0.5W)。它还拥有一组很不错的外围设备,如10/100M的以太网接口、USB集线器和其他串行接口(I2C、SPI、UART)。

ATSAMA5D27 SoM

ATSAMA5D27 SoM

里程碑4 -网关

为了充分利用基于Linux的SoM,我设计了一块板卡用于充当网关。大多数外围设备都可以访问它,此外还提供了3G移动调制解调器、WiFi和蓝牙。

充当网关的板卡

充当网关的板卡

拼在一起形成完整形态

完整形态

完整形态

在上图中,传感器通过BLE(蓝牙低能耗)和low6pan(蓝牙IPv6)连接到网关,并发布MQTT的数据包。而运行在网关上的软件订阅MQTT的主题Topic,并使用FPGA-模块来高效地构建IOTA数据事务,然后将其发送到整个IOTA网络

附属项目

在生态系统提案中有一些原本没有规划的附属项目。

Troika(三驾马车)

去年12月底,新的轻量级哈希算法Troika发布了。虽然它没有包括在生态基金资助的预算计划中,但我还是针对它开发了两个版本的FPGA用例。一个高速版本(每时钟周期一次Hash)和一个成本大概5美元的低速版本(下图)。

我还花费了大量时间对它进行了优化。但事实证明,其他无名英雄比我做得更好。

我另外还实现了SIMD版本(最高可达AVX256),它可以用于同时进行多次Hash计算,到底有没有用目前还尚待证明。

传感器

传感器是资助计划中没有提到的一个部分。但我需要一个,然后我就建了一个。我采用了nRF52模块(UBlox NINA B112)、CO2传感器(Sensirion SCD30)和电子纸显示器(Waveshare)。nRF52很好的一点是,他们可以像任何其他Cortex M为基础的微控制器一样进行编程!因此,这个传感器只需要UBlox模块作为主处理器,蓝牙(BLE)是附送的。我非常喜欢nRF52!

二氧化碳传感器

二氧化碳传感器

MAM(隐秘授权消息)

也许您注意到了……在架构概述中,MAM是包含在内的,但实际项目中却或多或少被排除在外。部分原因是新的MAM机制还没有准备好,部分原因是并不清楚MAM能否在FPGA上运行,和到底是哪一部分。

Cortex M1的资源非常有限(128kB ROM, 128kB+40kB RAM)。我在项目的最后几天试图让MAM在FPGA模块上运行。这也是为什么项目结束被推迟了3天的原因。

我成功了!当然,这只是一个概念验证,大量的开发需要投入进来以便来完成产品化,但它表明,这是可行的——而且最值得称道的是:它足够快,可以实际使用。MAM可以从Troika加速器中获益良多。以下是一些与Cortex M1和3.4GHz i5 CPU的比较:

与Cortex M1上的纯软件实现相比,硬件加速提供了大约148倍的速度优势,而且它(几乎)可以跟上我的i5,而只需要基于100MHz的低于1W的功率。

未来的工作

这一切或多或少都是概念验证的工作,最终我们会发现哪些有用,哪些没什么用,但我认为这为进一步的开发提供了良好的基础。

我喜欢FPGA模块的最主要的原因是:它可以很好地用于物联网类似的独立应用程序。它提供了较强的散列能力,而只需要一点点电。它可以在C/ c++中很方便的编程,并且受安全机制(如FPGA位流加密)的保护。它还具有安全的种子存储内存。FPGA系统非常灵活。如果需要其他外围设备,系统可以相应地进行更改。

下一步我可能要做的改动,肯定会淘汰Cortex M1 soft-cpu (ARM的许可真的很差劲),而采用真正免费的RISC V。ARM假装Cortex M1对Xilinx FPGAs是免费的,但你获得许可却需要做大量的工作(包括从ARM网站下载,然后给源代码打补丁)。

相关文档

文档均可在这里查到:https://gitlab.com/iccfpga/iccfpga-core/wikis/home

代码库在这里:https://gitlab.com/iccfpga

The documentation can be found here: https://gitlab.com/iccfpga/iccfpga-core/wikis/home

All repositories here: https://gitlab.com/iccfpga

结尾

我很高兴我的项目运行得非常顺利,尤其是计划的时间范围内完成了。这就像一个奇迹,没有重大失误或拖延停滞。我真走运!!

我要感谢IOTA基金会,他们信任了我的能力,并通过生态系统发展基金资助我完成了这个项目!

本文原文非中文版本,由BruceX进行翻译,如若转载,请注明出处:http://www.iota.love/201909/iota-ecological-fund-funded-project-encryption-kernel-fpga-development-completed/