第14章安全引擎mpc83xx中文手册.docx
- 文档编号:711690
- 上传时间:2023-04-29
- 格式:DOCX
- 页数:163
- 大小:888.59KB
第14章安全引擎mpc83xx中文手册.docx
《第14章安全引擎mpc83xx中文手册.docx》由会员分享,可在线阅读,更多相关《第14章安全引擎mpc83xx中文手册.docx(163页珍藏版)》请在冰点文库上搜索。
第14章安全引擎mpc83xx中文手册
第14章安全引擎(SecurityEngine)
本章对MPC8349E集成安全引擎(SEC2.4)的功能进行了描述。
分为如下主题:
14.1节,“概述”
14.2节,“体系结构概述”
14.3节,“内存空间的配置“
14.4节,“描述符概述”
14.5节,“执行单元“
14.6节,“加密通道”
14.7节,“控制器“
14.8节,“总线接口”
14.9节,“省电模式“
14.1概述
SEC2.4的设计目的是将计算密集型的安全功能从MPC8349E的处理器核心中转移出去,这些功能包括:
密钥的生成和交换、认证、批量加密等。
它经过优化,可以处理与IPsec、IKE、SSL/TLS、iSCSI、SRTP和802.11i相关的算法。
SEC2.4(应用于MPC8349E)源自基于PowerQUICC家族中其他成员的集成安全核心,这些成员包括应用于MPC8272/MPC8248的SEC1.0版本。
该安全引擎的执行单元和主要特性如下:
●PKEU——公共密钥执行单元,支持:
⏹RSA和Diffie-Hellman算法
◆可编程字段最大为2048位
⏹椭圆曲线加密算法(Ellipticcurvecryptography)
◆F2m和F(p)模式
◆可编程字段最大为511位
●DEU——数据加密标准执行单元
⏹DES,3DES算法
⏹在3DES算法中使用双密钥(K1,K2,K1)或者三密钥(K1,K2,K3)
⏹在DES和3DES中使用ECB和CBC模式
●AESU——高级加密标准单元
⏹实现Rijndael对称密钥加密算法
⏹ECB,CBC,CCM和计数器模式
⏹128位,192位,256位密钥长度
●AFEU——ARC四执行单元
⏹实现了一个流加密,兼容RC4算法
⏹40位到128位可编程密钥
●MDEU——报文摘要执行单元
⏹SHA模式,报文摘要为160位、224位、或256位
⏹MD5模式,报文摘要可为128位
⏹HMAC,可以使用上面两种算法
●RNG——随机数发生器
●XOR奇偶生成加速器,应用于RAID应用
●主/从逻辑,拥有DMA能力
⏹32位地址/64位数据
⏹高达200MHz的操作
⏹主接口允许多个流水式请求
⏹DMA数据块可为任意字节边界
●四个通道,每个通道都支持命令队列(描述符指针)
⏹通过集成控制器动态分配加密执行单元
⏹在每个执行单元的输入和输出路径上都有256位的先进先出(FIFO)缓冲区,并对大长度数据进行流量控制
●分散/聚集(Scatter/Gather)能力
⏹聚集能力使SEC2.4在读取输入数据时能将存储器中的多个段连接起来
⏹相似的,分散能力使SEC2.4在写输出数据时能可以将数据写到多个段中
14.2体系结构概述
SEC2.4(以后简称SEC)可以在内部总线上充当主设备的角色。
这使得SEC能减轻与仅从(模式?
)(slave-only)核相关的数据转移的瓶颈问题。
主处理器通过它的设备驱动访问SEC,在这个过程中使用系统存储器存储数据。
SEC驻留在处理器的外部存贮器映射中,因此,当有应用需要加密功能时,它仅需要为SEC创建描述符,描述符定义要执行的加密方法和数据的地址。
SEC的总线主控能力使得主处理器使用几个短小的寄存器写操作建立加密通道,而让SEC在系统存储器上进行读和写操作,完成所请求的任务。
图14-1显示了SEC通过内部总线与其他单元的通信
图14-1连接到MPC8349E内部总线的SEC
图14-2显示了SEC内部体系结构的结构图。
总线和SEC的内部寄存器通过总线接口模块进行64位的数据传输。
图14-2SEC功能模块
当主机在SEC的四个通道中的任何一个的取FIFO队列中写入一个描述符指针时,就开始一个操作。
从这一点开始,通道将控制操作的顺序。
通道使用描述符指针来读取描述符,读取之后,对描述符的第一个字进行解码,以决定要选择执行的操作和执行该操作的加密执行单元。
通道请求控制器分配所需要的加密执行单元。
接下来,通道请求控制器取出密钥和数据,它们的位置在描述符的剩余部分确定。
控制器为了满足通道的请求,按照可编程优先级方案向主接口发出请求。
数据通过执行单元的寄存器和输入FIFO送入相应的执行单元。
这些单元从各自的输入FIFO中读取数据,把处理过的数据写入输出FIFO中。
通道向控制器发出请求,控制器通过主/从接口将输出FIFO和寄存器中的数据写回到系统存储器。
对于大多数分组来说,全部有效载荷太长,无法匹配执行单元的输入和输出FIFO,因此,SEC采用了一种流量控制方案对数据进行读写。
通道指示控制器读取必要数量的输入以填充输入FIFO,直到全部的有效负载都被取出。
同样,当执行单元的输出FIFO累积了足够长的空间时,通道指示控制器将几块输出写入执行单元的输出FIFO.
14.2.1数据分组描述符
作为一个加密加速部件,SEC控制器被设计成可以容易使用,并且能和已有的系统及软件进行集成。
所有的加密功能都可以通过描述符进行访问。
描述符指定了要执行的加密功能,并包含了一些指针,这些指针指向所有必要的输入数据和输出数据所要写入的位置。
一些描述符类型可以执行多个功能,为特定协议提供了方便。
表14-1显示的是一个数据分组的描述符。
表14-1数据分组描述符
字段名
值/类型
说明
DPD_DES_CTX_CRYPT
TBD
代表使用上下文进行加密的DES的首部
LEN_CTXIN
PTR_CTXIN
长度
指针
要写的字节数
要写入DES引擎的上下文IV的指针
LEN_KEY
PTR_KEY
长度
指针
密钥的字节数
分组加密(blockcipher)密钥的指针
LEN_DATAIN
PTR_DATAIN
长度
指针
需要加密的数据的字节数
要进行加密的数据的指针
LEN_DATAOUT
PTR_DATAOUT
长度
指针
加密后的数据的字节数
要写入加密输出的位置的指针
LEN_CTXOUT
PTR_CTXOUT
长度
指针
输出上下文IV的长度
要写入改变了的上下文的位置的指针
Nulllength
Nullpointer
长度
指针
对固定长度的描述符过滤器为0
对固定长度的描述符过滤器为空
Nulllength
Nullpointer
长度(Length)
指针(Pointer)
对固定长度的描述符过滤器为0
对固定长度的描述符过滤器为空
每个描述符都包括8个长字,每个为64位。
其组成如下:
●一个长字的首部——首部描述所需要的服务和一些编码信息。
这些信息指示要使用哪些EU和设置哪些模式。
它还指示当描述符操作完成时,是否需要通知主机。
●七个长字,它们包含用来定位输入或输出数据的指针和长度。
每个指针可以直接指向数据,也可以指向一个链接表,该链接表将数据段连接在一起。
更多信息请参见14.4节“描述符概述”。
14.2.2执行单元(ExecutionUnit)
执行单元是一个一般术语,指的是一个加密处理协议的要求执行数学排列(?
)的功能部件。
执行单元与IPSec、IKE、SSL/TLS、iSCSI、SRTP以及802.11i处理兼容,它们可以协作执行高级的加密任务。
SEC的执行单元如下:
●PKEU—用于计算非对称密钥操作,包括模指数(和其他的模算法函数)或ECC指针算法
●DEU—用于执行使用DES和3DES的分组加密,对称密钥加密
●AFEU—用于执行兼容RC的流密码对称密钥加密
●AESU—用于执行高级加密标准算法和XOR加速
●MDEU—用于执行使用MD-5、SHA-1或SHA-256的安全散列算法
●RNG—用于随机数生成
14.5节“执行单元”中对每一个执行单元进行了详细描述。
14.2.2.1公共密钥执行单元(PKEU)
PKEU可以执行很多高级数学函数,支持RSA和ECC公开密钥加密算法。
ECC在F2m(基于多项式的)和F(p)模式中支持。
该EU支持所有级别的功能,以帮助主微处理器执行其所需要的加密任务。
例如,在最高级,加速器执行模指数支持RSA算法,执行点乘支持ECC算法。
在较低级别,PKEU可以执行一些简单的操作,例如模乘。
更多信息参见14.5.1节“公开密钥执行单元(PKEU)”。
14.2.2.1.1椭圆曲线运算
PKEU有其自己的数据和控制单元,包括一个通用寄存器组,该寄存器组位于可编程大小的算术单元里。
字段或模数的大小可以设定160位到512位之间的任意值,增量值为8,可编程。
即每个变量i支持的实际字段的大小为8i-7至8i。
其结果是由硬件支持一个范围很大的密码安全机制。
大的字段或模数产生很高的安全性,但是性能较低;执行时间是由字段或模数的大小决定的。
例如,如果字段长度为160位,则其提供的安全性与1024位的RSA大致相当。
字段长度为208位,则其安全性与2048位的RSA相当。
PKEU包含了为椭圆曲线处理实现原子函数的特定程序——点算术运算和有限字段算术运算。
点运算(乘、加、加倍)包含一个或多个有限字段运算,即加、乘、求反和平方。
点加和加倍运算每个都使用了这四种操作。
类似的,点乘运算使用了所有的EC点乘和有限字段运算。
所有这些功能在模运算和基于多项式的有限字段中都支持。
14.2.2.1.2模指数(ModularExponentiation)运算
PKEU还可以执行常规整数模算法。
该运算是RSA公开密钥算法的整数部分,但它还可在ECC数字签名的生成和Diffie-Hellman密钥交换中发挥作用。
SEC的PKEU支持的模算法函数如下:
●R2modN
●A′EmodN
●(A×B)R–1modN
●(A×B)R–2modN
●(A+B)modN
●(A–B)modN
其中,有如下参数定义:
A’=ARmodN,N为模向量,A和B为输入向量,E为指数向量,R为2s。
N向量向上舍入为最接近的32的倍数,该数的位长即为s。
PKEU可以为最大长度为2048位的操作数执行模运算。
模必须大或等于97位(13个字节)。
不将其视为一个限制,因为对于长度比该数值小的数据,没有有效的加密应用存在。
而且对于较小长度的数据,使用硬件加速不是很恰当。
PKEU使用Montgomery模乘算法执行核心功能。
加减功能用来支持已知的中国余数定理,以更好的执行RSA算法。
14.2.2.2数据加密标准执行单元(DEUDataEncryptionStandadExecutionUnit)
DES执行单元(DEU)依照数据加密标准算法(ANSIx3.92)执行批量数据的加密和解密。
DEU也可以计算3DES,3DES是DES算法的扩展,在该算法中,每一个64位的输入块都被处理三次。
SEC支持双密钥(K1=K3)或三密钥3DES。
DEU的执行使用一个共享的56位密钥和一个初始化向量(IV),对64位的数据块进行序列置换。
SEC支持两种操作模式:
电子编码簿(electroniccodebookECB)和加密时钟链接(cipherclockchainingCBC)。
更多信息参见14.5.2节“数据加密标准执行单元(DEU)”。
14.2.2.3ARC四执行单元(AFEUARCFourExecutionUnit)
AFEU对一种批量加密算法进行加速,该算法与RSA安全公司的RC4流加密兼容。
该算法是面向字节的,也就是说,一个字节的明文通过一个密钥被加密为一个字节的密文。
该密钥的长度是可变的,且AFEU支持的密钥长度为8位到128位,这就提供了一个范围比较大的安全强度。
ARC4是一个对称算法,即通信双方共享同一个密钥。
更多信息请参见14.5.3节“ARC四执行单元(A7FEU)”。
14.2.2.4高级加密标准执行单元(AESUAdvancedEncryptionStandadExecutionUnit)
AESU对符合高级加密标准(Rijndael)算法的批量数据加密/解密进行加速。
AESU在128位的分组上执行,密钥的长度可以选择为:
128、192或256位。
AESU是一个对称密钥算法,发送方和接收方使用相同的密钥进行加密和解密。
在加密之前将会话密钥(sessionkey)和IV提供给AESU模块。
处理器将数据处理为128位的输入提供给该模块。
AESU可以运行在ECB、CBC、CTR和CCM模式。
AESU也被用来执行异或(XOR)操作,异或操作被用来产生用于RAID存储应用的奇偶数据。
当在该种模式下进行处理时,不使用会话密钥,而且AESU可以对最多3个数据流同时进行XOR操作,以产生奇偶数据。
更多信息请参见14.5.4节“高级加密标准执行单元(AESU)”。
14.2.2.5报文摘要执行单元(MDEUMessageDigestExecutionUnit)
MDEU使用作用于批量数据散列操作的MD5、SHA—1或SHA—256算法,为出现在输入总线上的所有数据计算一个单一报文摘要(散列或完成性检验)值。
利用任意散列算法,将较大的报文映射到一个比较小的输出空间中;因此可能存在冲突,虽然不大会发生。
160位的散列值是一个足够大的空间,使得冲突非常少。
散列函数的安全性基于定位冲突的难度,也就是说,在计算理论上,两个相似但不同的报文是不可能产生相同的散列输出的。
●MD5生成一个128位的哈希值;该算法在RFC1321规定
●SHA—1是一个160位的散列函数,在ANSIX9.30-2和FIPS180-1标准中规定
●SHA-224和SHA—256是加密的散列函数,它们提供了防止冲突冲击的完整保护
●MDEU还支持HMAC计算,在RFC2104规定
更多信息请参见14.5.4节“报文摘要执行单元(MDEU)”。
14.2.2.6随机数发生器(RNGRandomNumberGenerator)
RNG是一个用于生成64位随机数的功能部件。
它的随机性和不确定性遵从FIPS140-1标准。
因为许多加密算法都使用随机数产生加密值(一个临时值),因此SEC使用一个私有的RNG是非常必要的。
必须维持每一个随机数的匿名性,以及下一个随机数的不可预知性。
符合FIPS—140标准的私有RNG允许系统产生随机的请求(challenge)或随机密钥,所以该密钥可以在更高级别的应用代码中保持隐藏,提供一个附加的物理安全方法。
更多信息请参见14.5.5节“随机数发生器(RNG)”。
14.2.3加密通道
SEC包括四个管理数据和EU功能的加密通道。
每个通道的组成如下:
●一个取FIFO,包保存等待服务的描述符的指针队列
●一个配置寄存器,它允许用户选择SEC事件信号
●多个控制寄存器,包括正在处理的事务的信息
●一个状态寄存器,包括最后一个未完成的总线请求的指示
●一个描述符缓冲区,用于保存活动的描述符
●分散和聚集链表缓冲区,用于保存活动的链表
只要通道空闲且其取FIFO非空,通道就从取FIFO读取下一个描述符指针。
使用该指针,通道取出描述符,并将它放入其描述符缓冲区。
为服务该描述符,通道按下列步骤控制执行。
1.分析描述符首部,确定所需要的加密服务,向控制器请求使用合适的EU。
2.等待控制器准许访问所请求的EU。
3.为请求的服务设置EU中的适当的模式位。
4.使用来自描述符缓冲区的指针取出“数据包”,经它们放入EU输入FIFO或EU寄存器(适当的)中。
术语数据报在这里是指任何加密处理的输入或输出,例如密钥、散列结果、输入上下文、输出上下文或文本数据。
“上下文”是指要处理的明文或密文。
5.如果数据长度超过EUFIFO的大小,继续取输入数据,并将输出数据写入存贮器。
6.等待EU完成处理。
7.完成时,从输出FIFO和上下文寄存器卸载结果,使用描述符缓冲区中的指针,将它们写入外部存贮器。
8.如果请求多个服务,返回到步骤3。
9.释放EU。
(注意,在以前的Freescale安全协处理器中,可以为多个描述符的使用保留EU。
利用SEC2.4增加的功能,这种‘静态’分配已没有必要,且不再支持。
在描述符完成后,始终释放EU。
)
10.如果描述符首部允许‘完成通知’,执行该通知。
通道可以通过中断或将描述符首部写回主机存贮器的方式通知主机它处理完了描述符。
在写回方式中,写回的值与所读取的值相同,只是将完成字段置为全1。
此外,可以把通道配置为在每个描述符结束时或在所选择的描述符结束时发出通知。
关于配置信号的更多信息
参见14.6.1.1节“加密通道配置寄存器(CCCR)”。
许多安全协议包括加密和分组有效载荷的散列。
为做到这一点而不需要两次通过数据,通道可以配置数据流,让它通过多个EU。
在这种情况下,一个EU是主EU,其他则为辅EU。
主EU通过控制器从存贮器接收数据,辅EU通过监听SEC总线接收数据。
由两种类型的监听:
●把数据送给主EU,辅EU监听相同的输入数据。
称之为‘内监听(in-snooping)’。
●辅EU可以监听主EU的输出数据。
称之为‘外监听(out-snooping)’。
在SEC中,辅EU始终为MDEU。
更多信息参见14.6节“加密通道”。
14.2.4SEC控制器
SEC控制器管理片上资源,包括各个执行单元(EU)、FIFO、主/从接口和连接所有不同模块的内部总线。
控制器接收来自主/从接口和各个加密通道的服务请求,并调度所请求的服务。
控制器可以按两种模式配置每个片上资源:
●主机控制的访问——主机直接负责将所有数据移入和移出资源。
该模式通常只在调试模式中使用。
●通道控制的访问——通道可以从任何可用的执行单元请求一个特殊服务。
这是正常操作状态。
系统总线接口和对系统存贮器的访问是性能的关键因素,SEC控制器的64位主/从接口允许它获得辅(secondary)总线不可能达到的性能。
14.2.4.1主机控制的访问
完全通过寄存器读/写访问就可以使用所有的执行单元。
SEC作为从设备操作,主机必须将写信息定位到SEC的适合寄存器和FIFO中。
写信息通常通过描述符提供。
该模式更是CPU密集型的,需要大量使用SEC寄存器。
推荐仅为使用一个EU的操作或为调试目的使用主机控制的访问。
更多信息参见14.7节“控制器”。
14.2.4.2通道控制的访问
当把一个描述符指针写入一个通道的取FIFO时,处理开始。
根据描述符首部所请求的服务,通道向控制器申请为它分配必要的EU。
如果所有合适的EU都已经被其他通道占用,则该通道停止,并等待取数据,直到合适的EU可用为止。
如果多个通道同时请求同一EU,则按加权优先级或轮转方法分配EU。
一旦得到了所请求的EU,通道就请求控制器取出并装入合适的数据。
控制器作为系统总线上的主设备工作,按字节边界读和写数据。
通道操作EU,进一步请求控制器把输出数据写入系统存贮器。
当描述符处理完毕时,通道请求控制器释放EU,让其他通道使用。
14.2.5总线接口
主/从接口管理SEC内部执行单元与MPC8349E内部总线的通信。
所有的片上资源都是内存映射的,可以按字节边界处理对SEC的从访问。
SEC执行按字节边界执行发起者读操作,在内部调整数据,按适合的字边界存放。
系统总线接口和对系统存贮器的访问是性能的关键因素,SEC控制器的64位主/从接口允许它获得辅(secondary)总线不可能达到的性能。
更多信息参见14.8节“总线接口”。
14.3内存空间的配置
表14-2给出了基址映射,表14-3提供了地址映射,包括执行单元中的所有寄存器。
给出了18位的SEC地址总线值。
这些地址值是距内存映射的寄存器基址的偏移量,该基址在IMMRBAR中设定。
更多信息参见2.2节“完全IMMR映射”。
注意,这些表用的是模8地址,未给出用于64位字中选择字节的三个最低有效位。
表14-2SEC基址映射
偏移量
模块
说明
类型
节/页
0x3_0000-0x3_0FFF
-
保留
-
-
0x3_1000-0x3_10FF
控制器
仲裁器/控制器控制寄存器空间
资源控制
14.7/14-92
0x3_1100-0x3_11FF
通道1
加密通道1
数据控制
14.6/14-81
0x3_1200-0x3_12FF
通道2
加密通道2
0x3_1300-0x3_13FF
通道3
加密通道3
0x3_1400-0x3_14FF
通道4
加密通道4
0x3_2000-0x3_20FF
DEU
DES/3DES执行单元
14.5.2/14-34
0x3_4000-0x3_40FF
AESU
AES执行单元
14.5.6/14-68
0x3_6000-0x3_60FF
MDEU
报文摘要执行单元
14.5.4/14-51
0x3_8000-0x3_8FFF
AFEU
ARC四执行单元
14.5.3/14-42
0x3_A000-0x3_AFFF
RNG
随机数发生器
14.5.5/14-63
0x3_C000-0x3_CFFF
PKEU
公开密钥执行单元
14.5.1/14-26
表14-3给出了所有功能寄存器的系统地址映射。
在偏移量0x000–0xFFF之间未定义的4字节地址空间是保留的。
表14-3SEC地址映射
偏移量
寄存器
访问控制
复位
节/页
控制器寄存器
0x3_1008
IMR—中断屏蔽寄存器
R/W
0x0000_0000_0000_0000
14.7.2.1/14-94
0x3_1010
ISR—中断状态寄存器
R
0x0000_0000_0000_0000
14.7.2.2/14-95
0x3_1018
ICR—中断清除寄存器
W
0x0000_0000_0000_0000
14.7.2.3/14-95
0x3_1020
ID—标识寄存器
R
0x0000_0000_0000_0040
14.7.2.4/14-97
0x3_1028
EUASR—EU分配状态寄存器
R
0xF0F0_F0F0_00FF_F0F0
14.7.2/14-93
0x3_1030
MCR—主控制寄存器
R/W
0000_0000_0000_0000
14.7.2.5/14-97
通道1
0x3_1108
CCCR1—加密通道1配置寄存器
R/W
0x0000_0000_0000_0000
14.6.1.1/14-82
0x3_1110
CCPSR1—加密通道1指针状态寄存器
R
0x0000_0000_0000_0007
14.6.1.2/14-84
0x3_1140
CDPR1—加密通道1当前描述符指针寄存器
R
0x0000_0000_0000_0000
14.6.1.3/14-90
0x3_1148
FF1—加密通道1取FIFO地址寄存器
W
0x0000_0000_0000_0000
14.6.1.4/14-90
0x3_1180-
0x3_11BF
DBn—加密通道1描述符缓冲区[0-7]
R
0x0000_0000_0000_0000
14.6.1.5/14-91
通道2
0x3_1
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 14 安全 引擎 mpc83xx 中文 手册