LPC55S28 密码加速器 CASPER 介绍

一、 概述

本文将介绍 LPC55S28 密码加速器 CASPER 模块,具体包括 CASPER 模块的基本特性、CASPER 模块的工作模式以及CASPER 模块加速性能的实测。

二、 CASPER 特性

CASPER 密码加速模块基于蒙哥马利算法可以对 RSA、DH、ECC 等操作提供加速,比如可以增强以下操作的速度:

  • RSA 模幂运算
  • ECC 标量乘法
  • ECDSA 签名生成和校验

下图为官方实测的 CASPER 对部分算法的加速性能,可以看出,使用 CASPER 加速器的执行以下算法要比纯软件运算的速度(CortexM33 100 MHz 主频)要快4 ~ 8 倍左右。

                                             图 2.1 CASPER 对部分算法的加速性能实测

 

CASPER 模块通过以下特性实现加速运算的功能。

(1)4 个 32 位的数据寄存器 ( ABCD ),可供两个 32 位乘法器使用

(2)4 个结果寄存器 RES[0-3],配合数据寄存器使用,实现加掩码、异或等操作

(3)1 个掩码寄存器用于创建异或掩码来对 ABCD 进行去掩码操作和对输出进行掩码

(4)乘法器中使用一个特别的加法状态机用于实现 64 位乘法

(5)可并行访问 2 个 RAM ( 4 KB ),可同时执行 2 个操作(64 位)

 

以下为 CASPER 模块的框图:

                                                                   图 2.2 CASPER 框图

三、 CASPER 工作模式

如下表所示,CASPER 加速器支持以下工作模式:

工作模式

名称

描述

0x01

MUL6464_NOSUM

64 位乘法,不累加

0x02

MUL6464_SUM

64 位乘法,最后一次累加

0x03

MUL6464_FULLSUM

64 位乘法,全部累加

0x08

ADD64

64 位加法

0x09

SUB64

64 位减法

0x0C

RSUB64

64 位减法

0x0A

DOUBLE64

左移一位,带进位

0x0B

XOR64

64 位异或操作

0x14

COPY

将 AB 寄存器的值复制到 RES 寄存器

0x16

FILL

对 RES 寄存器填充 AB 寄存器的值

0x17

ZERO

对 RES 寄存器填充 0

                                            表 3.1 CASPER 工作模式

 

以下为 CASPER 实现 64 位乘法的计算流程,首先将输入参数读取到数据寄存器 ABCD,接着执行以下两个计算步骤:

  • 计算 DB 和 DA 以及 SUM = DBH + DAL,保持到结果寄存器:
    1. RES[0] = DBL
    2. RES[1] = SUM
    3. RES[2] = DAH
    4. RES[3] = 0



                                                           图 3.1 64 位乘法计算步骤 1

  • 计算 CB 和 CA 以及 SUM = CBH + CAL,保存到结果寄存器:
    1. RES[1] += CBL ( 生成进位 )
    2. RES[2] += SUM + 进位 ( 生成进位 )
    3. RES[3] = CAH + 进位



                                                         图 3.2 64 位乘法计算步骤 2

四、 CASPER 加速性能实测

以下通过板子实际测试下 LPC55S28 的 CASPER 模块的加速性能,测试的板子如下所示。

                                                            图 4.1 LPC55S28 开发板

使用的 IDE 为 Keil ( V5.33 ) ,测试的代码为SDK ( V2.11.0 ) 中的例程: SDK_2_11_0_LPCXpresso55S28_Keil\boards\lpcxpresso55s28\mbedtls_examples\mbedtls_benchmark\mdk。

以下为使用 CASPER 加速器后各算法的执行速度。

                                             图 4.2 使用 CASPER 各算法的执行速度

 

如下图,修改宏定义 FSL_FEATURE_SOC_CASPER_COUNT 为 0 ,禁用 CASPER。

                                                                 图 4.3 修改宏定义

禁用 CASPER 后各算法的执行速率如下图所示。

                                             图 4.4 禁用 CASPER 各算法的执行速度

五、参考资料

  1. 《UM11126》,https://www.nxp.com.cn/webapp/sps/download/preDownload.jsp?render=true
  2. 《AN12445》, https://www.nxp.com.cn/docs/zh/application-note/AN12445.pdf

★博文内容均由个人提供,与平台无关,如有违法或侵权,请与网站管理员联系。

★文明上网,请理性发言。内容一周内被举报5次,发文人进小黑屋喔~

评论