Verilog开源项目——百兆以太网交换机(二)AES加解密模块设计

Verilog开源项目——百兆以太网交换机(二)AES加解密模块设计


🔈声明:未经作者允许,禁止转载
😃博主主页:王_嘻嘻的CSDN主页
🔑全新原创以太网交换机项目,Blog内容将聚焦整体架构、模块设计方面;更新周期可能会略慢,希望朋友们多多包涵
🧡关注本专题的朋友们可以学习到原创交换机设计的全流程,包括设计与验证(FPGA)。
🚩第一代交换机  从零开始 verilog 以太网交换机系列专栏:点击这里
💥第二代交换机  Atom(百兆以太网交换机)专利:点击这里

  在Atom的MAC中和第一代设计有所不同的是,Atom将实现数据包的加解密,支持AES和SM2两种加解密算法。本章重在介绍AES在Atom中的实现方案,就不介绍AES算法原理了。

  虽然暂时做不到MACSEC IP那样专业化的方案,但是Atom的SEC还是会尽可能向实用化靠拢。



一、AES Feature

  • 支持128-bits192-bits256-bits密钥长度加解密;
  • 每个MAC的RMAC和TMAC密钥可配置;(不支持MACSEC)
  • 支持ECBCBC两种工作模式;
  • 256-bits密钥长度模式下,32 cycle内至少完成一次128-bits数据的加解密;
  • CBC模式下初始向量可配置也可以自动生成(后续支持
  • 电路最高主频达250MHz(为后续扩展支持2Gbps或更高转发速率);


二、AES概述

  因为Atom定位于百兆交换速率,所以MAC中仍采用MII接口,clk频率为25MHz,数据位宽为4-bits,MAC上游数据位宽为8-bits,所以MAC以12.5MHz频率处理发送数据,就能满足MII时序要求。

  以TMAC为例,TMC将与上游模块PM以256-bits数据位宽进行数据收发,256=32*8-bits,即一个时钟周期内PM下发的数据,足够MII发送32个时钟,为了满足MII接口以最大速率发送,AES模块需要在32 cycle内完成一次256-bits的加解密,否则数据转发速率将受限。同理,如果后续转发速率提升至1G,AES主频需要达到125MHz。为留出足够裕量能进一步提升速度,将直接以250MHz为目标进行设计。

  另一方面,从一次加解密的时钟周期开销分析,AES操作基础为SBox转换、行移位、列混淆、密钥变换,统一将这些操作执行一次称做一轮子操作。对于密钥长度为128、192、256-bits而言,分别需要完成10、12、14轮操作,为保证14轮操作也能在32 cycle内完成,所以需要限制每轮操作在2 cycle内。

            请添加图片描述

  AES核心模块为:密钥扩展、轮密钥加、S盒替换、行移位、列混合。不论是ECB或BCB工作模式,计算过程类似,只是两次明文子块间是否有依赖关系。

  在实现上将S盒替换、行移位进行合并,成为一个操作,并和轮密钥加一起在一个时钟内完成列混合独立消耗一个时钟,而密钥扩展考虑到解密时需要首先用到最后一轮的子密钥,所以根据最终timing,将在2个clk内完成全部扩展

  如下图所示,计算过程中128-bits明文/密文按Byte为单位切分为16个单元,组成矩阵形式参与全程计算,密钥也是同样方式转换。

在这里插入图片描述

  • Key Add(轮密钥加):将明文块与密钥进行异或;
  • SBox(S盒替换):SBox本质上是在复合域实现乘法逆,具体原理就不介绍了,在Atom中为了追求性能,先直接采用查表的方式,且全部用寄存器堆搭建,实现全并行查找(如果后续timing有较大裕量,可以采用更节约面积的做法)
  • Line Shifter(行移位):按下图移位方式实现即可,具体实现中,可以讲SBox与Line Shifter合并为一步,例如S0’代表S0进行SBox替换后的结果。

在这里插入图片描述

  • Col Mixer(列混合):列混合是状态矩阵与常数矩阵相乘的过程,由于其中一个是常数矩阵,所以计算过程相对简单,由于我们追求较高的主频,所以每个元素都采用并行的方式计算。
    在这里插入图片描述

解密中的列混合逆变换,就是将求逆后的常数矩阵与状态矩阵相乘,计算方式一致,可以采用模块复用,具体的常数矩阵如下。

在这里插入图片描述

  • Key Extend(密钥扩展):当分组长度和密钥长度都是128位时,AES的加密算法共迭代10轮,需要10个子密钥,AES的密钥扩展的目的是将输入的128位密钥扩展成11个128位的子密钥。以字为一个基本单位(4B),刚好是密钥矩阵一列。


三、AES接口

在这里插入图片描述


若有不专业或错误之处,欢迎指正!


搜索关注我的微信公众号【IC墨鱼仔】,获取我的更多IC干货分享!

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值