




已阅读5页,还剩18页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
sam芯片手册芯片手册11.一般描述31.1.目录31.2.芯片简介31.3.芯片特征31.4.芯片框架41.5.管脚定义52.控制模块72.1.章节内容72.2.简介72.3.指令集说明72.4.寄存器描述92.5.状态机103.aes运算模块113.1.章节内容113.2.简介113.3.特性113.4.结构描述123.4.1.接口单元123.4.2.循环运算单元123.4.3.密钥扩展单元123.4.4.控制单元133.5.寄存器描述133.6.功能描述144.rsa运算模块154.1.章节内容154.2.简介154.3.特性154.4.结构描述164.4.1.接口单元164.4.2.模幂控制器164.4.3.数据状态寄存器164.4.4.模乘运算单元164.5.寄存器描述164.6.功能描述181. 一般描述1.1. 目录 1.2 芯片简介3 1.3 芯片特征3 1.4 芯片框架4 1.5 管脚定义51.2. 芯片简介基于可重构算法的sam芯片,作为可信模块用于个人计算机或者其他嵌入式系统,以保证该系统信息安全。该芯片包括rsa、aes运算模块,伪随机数产生模块,控制模块,分别用于加解密运算,指令译码和信号流的控制,内部用wishbone作为总线,将各模块与控制模块相连。运用可重构算法,可以用较少的资源实现不同长度的加解密处理,以适应不同程度的运用,同时节约资源,节省成本。1.3. 芯片特征sam芯片特征包括以下几点:1)、完备的控制指令集,通过从外部引脚cdio,可以对芯片的运算方式、密钥长度和工作模式进行配置,已完成不同的加解密要求;2)、sam包含一个控制器,该控制器的功能包括:指令译码,数据流控制,各运算模块选择,使各模块协调工作;3)、rsa模块,该模块可重构算法设计,可以通过指令配置,选择256、512、1024和2048位的密钥对明文进行加解密运算;4)、aes模块,该模块同样基于可重构算法,可以实现密钥长度为128、192和256位的加解密运算;5)、伪随机数产生模块,用于产生运算所需的密钥,利用随机数作为密钥,可以提高系统的安全性。1.4. 芯片框架1.5. 管脚定义编号信号名功能描述信号类型有效电平1syn_icd_io与ctrl读写信号输入2cs片选信号输入13test_r测试信号输入14clk系统时钟输入5test_c测试信号输入16vss2_l第二组电源7vss1_l第一组电源8vdd2_l第二组地9vdd1_l第一组地10rst全局复位信号输入111test_io测试信号输入112io_ctrl控制双向数据端口方向输入13data7双向数据端口7双向14data6双向数据端口6双向15data5双向数据端口5双向16data4双向数据端口4双向17data3双向数据端口3双向18data2双向数据端口2双向19data1双向数据端口1双向20data0双向数据端口0双向21vdd2_r第四组地22vdd1_r第三组地23vss1_r第三组电源24vss2_r第四组电源25busy运算进行信号输出126ready运算完成信号输出127ctrl1表明输入数据类型(高位)输入28ctrl0表明输入数据类型(低位)输入注:其中clk一般接晶振,sam有两种工艺,一种3.3v,一种1.8v。3.3v一般接624mhz的晶振,1.8v工艺的一般接6mhz的晶振。 2. 控制模块2.1. 章节内容2.2 简介62.3 指令集说明62.4 寄存器描述92.5 状态机102.2. 简介该模块主要完成指令译码,并控制各功能模块完成指令。2.3. 指令集说明 2.3.1功能定义该协处理器的主要功能包括:使用aes进行加解密、使用rsa进行加解密、使用aes和rsa进行混合加解密和使用prng产生所需要的伪随机序列。在具体使用时,这几个功能可以细分为以下几种运算:(1)密钥、明(密)文由用户输入,进行aes-128/192/256加(解)密运算。(2)密钥保持不变,明(密)文由用户输入,进行aes-128/192/256加(解)密运算。(3)密钥使用prng生成的随机序列,明文由用户输入,进行aes-128/192/256加密运算。(4)密钥使用rsa运算结果,明(密)文由用户输入,进行aes-128/192/256加(解)密运算。(5)密钥、明(密)文由用户输入,进行rsa-256/512/1024/2048加(解)密运算。(6)密钥保持不变,明(密)文由用户输入,进行rsa-256/512/1024/2048加(解)密运算。(7)密钥由用户输入,明文为aes的密钥,进行rsa-256/512/1024/2048加密运算。(8)密钥保持不变,明文为aes的密钥,进行rsa-256/512/1024/2048加密运算。(9)密钥e/d使用上一次rsa运算结果,输入明/密文进行rsa-256/512/1024/2048运算。(9)密钥由用户输入,明文为prng生成的随机序列,进行rsa-256/512/1024/2048加密运算。(10)密钥保持不变,明文为prng生成的随机序列,进行rsa-256/512/1024/2048加密运算。(11)种子由用户输入,prng生成伪随机序列。(12) 种子不变,prng继续生产伪随机序列。用户可以使用以上一个或者多个操作来完成所需的运算任务。下面介绍一个具体的运算任务的例子:aes-rsa混合加密。aes-rsa混合加密就是使用aes算法来进行大量数据的加解密运算,使用rsa算法来对aes的密钥进行保密传输,这样刚好克服了对称加密算法aes存在密钥传输的难题,非对称加密算法rsa有着运算速度慢的缺点。2.3.2指令定义用户通过data7:0输入的指令帧格式为:运算类别+输入数据+数据结束位,其中输入数据和传输结束位是可选的,当不需要外部输入数据时,则命令中不包括输入数据和数据结束位。用户可以通过ctrl1,ctrl0信号来选择输入的是命令或者具体的数据类型。ctrl1为高位,ctrl0为低位。当ctrl1:0为01b时,表示data7:0上的数据为运算命令,其中data3:0表示具体运算类别,data5:4说明选择的运算模块,data7:6代表选择算法的密钥长度。ctrl信号功能定义ctrl 1:0data7:0输入的数据类型00b无操作01b运算命令(包括进行什么类型的运输与密钥长度)10b数据1(rsa的明/密文,或者是aes的明/密文,或者是rng的种子)或者数据3(rsa的模数n)11b数据2(rsa的密钥e/d,或者是aes的密钥)或者数据4(rsa的常数c)data7:4运算命令定义数值data5:4data7:600b保留rsa-256/aes保留01brsa运算rsa-512/aes-12810bprng运算rsa-1024/aes-19211baes运算rsa-2048/aes-256data3:0运算命令定义data3:0运算类别0000b密钥明文外部输入进行aes加密运算;rsa保留;prng保留;0001b密钥和明/密文外部输入进行rsa运算;密钥密文外部输入进行aes解密运算;输入种子,prng生成随机数;0010b密钥使用rng结果,明文外部输入,进行aes加密运算;密钥输入,明/密文使用aes的密钥,进行rsa运算;种子不变prng生成随机数;0011baes保留;密钥输入,明/密文使用rng结果,进行rsa运算;prng保留;data3:0运算类别0100b密钥使用rsa结果,明文外部输入,进行aes加密运算;密钥不变,明/密文外部输入更新,进行rsa运算;prng保留;0101b密钥使用rsa结果,密文外部输入,进行aes解密运算;密钥不变,明/密文使用aes的密钥,进行rsa运算;prng保留;0110b密钥不变,明文外部输入更新,进行aes加密运算;密钥不变,明/密文使用rng结果,进行rsa运算;prng保留;0111b密钥不变,密文外部输入更新,进行aes解密运算;rsa密钥e使用rsa运算结果,明/密文外部输入进行运算;prng保留;1001b读运算结果;其余保留;2.4. 寄存器描述该模块包含一个2048位的数据寄存器和2个1位状态寄存器。数据寄存器用于存储各运算模块的运算结果:1)、rsa加解密后的结果;2)、aes加解密后的结果;3)、伪随机数模块生成的随机数。当指令选择相应模块进行计算时,在运算模块给出完成标志后,会由外部管脚接收到输出指令,在输出指令被成功译码之后,运算模块会将结果先送到数据寄存器中,然后由低位到高位,每8位数据为一组进行输出。下图是控制模块的结构框图。图2.1 控制单元结构框图状态寄存器用于寄存该模块状态机的现态和末态。2.5. 状态机控制单元主要由有限状态机(fsm)来实现,整个设计分成7个状态:idle、command_in、data_in、data_supplement、run、output、error。具体各个状态之间的转换关系如图2.2所示。图2.2 系统状态机3. aes运算模块3.1. 章节内容 3.2 简介11 3.3 特性11 3.4 结构描述12 3.5 寄存器描述13 3.5 功能描述143.2. 简介该模块基于可重构算法设计,可以通过指令实现密钥长度为128、192和256位的aes运算。3.3. 特性aes运算模块可以执行以下操作:密钥、明(密)文由用户输入,进行aes-128/192/256加(解)密运算;密钥保持不变,明(密)文由用户输入,进行aes-128/192/256加(解)密运算;密钥使用prng生成的随机序列,明文由用户输入,进行aes-128/192/256加密运算;密钥使用rsa运算结果,明(密)文由用户输入,进行aes-128/192/256加(解)密运算。3.4. 结构描述图3.1 aes结构框图3.4.1. 接口单元接口单元是外部总线和内部算法运算单元之间的桥梁,提供与加解密运算单元之间数据分组的交换和密钥的输入,传递各种控制信号和状态信号。3.4.2. 循环运算单元循环运算单元是实现加密和解密运算的主体部分。接收到启动信号后该模块顺序接收来自接口单元的输入分组,存放在一个128位的寄存器组中(即state阵列),接着根据是加密操作还是解密操作展开轮函数的迭代。s盒代换、行位移、列混合、密钥加变换都在这里实现,其中密钥加变换需要由密钥扩展单元提供轮密钥。由密钥长度指定的轮数的迭代完成后,模块发出输出有效信号,等待外部将运算结果读出。3.4.3. 密钥扩展单元密钥扩展单元为不同密钥长度的加解密运算实时地提供所需的轮密钥。该模块包括以下操作:正向和逆向的密钥扩展,密钥建立(解密时初始密钥的预计算),以及初始密钥的存储。3.4.4. 控制单元控制单元产生控制循环运算单元和密钥扩展单元的协调工作的控制信号,主要工作是根据不同密钥长度的加密或解密过程的要求来控制密钥扩展和循环运算单元的运算轮数和具体的运算顺序。3.5. 寄存器描述从上图可知,模块在接口单元中定义了三个寄存器,分别为密钥寄存器、加解密数据寄存器和结果寄存器,当芯片状态标志信号ready和busy均为低电平时,三个寄存器分别被以下指令影响。密钥寄存器:输入如下指令后,若控制管脚io_ctrl=1,crtl0=1,crtl1=1;时,密钥寄存器的内容被来自外部输入的数据更新。data7:0=01(10/11)11 0000aes密钥明文外部输入进行加密运算,密钥长度128(192、256)b01(10/11)11 0001aes密钥密文外部输入进行解密运算当输入如下指令时,密钥寄存器的值被随机数生成器生成的随机数更新。data7:0=01(10/11)11 0010aes密钥使用rng结果,明文外部输入,进行加密运算01(10/11)11 0011aes密钥使用rng结果,密文外部输入,进行解密运算 当输入如下指令时,密钥寄存器的值被rsa模块处理过的数据更新。data7:0=01(10/11)11 0100aes密钥使用rsa结果,明文外部输入,进行加密运算01(10/11)11 0101aes密钥使用rsa结果,密文外部输入,进行解密运算 当输入如下指令时,密钥寄存器的值保持不变。data7:0=01(10/11)11 0110aes密钥不变,明文外部输入更新,进行加密运算01(10/11)11 0111aes密钥不变,密文外部输入更新,进行解密运算加解密数据寄存器:当控制管脚io_ctrl=1,crtl0=0,crtl1=1;时,该寄存器的值在aes运算前会被来自输入管脚的cdio信号更新。结果寄存器:输入指令data7:0=01(10/11)11 1001后,该寄存器的值被aes运算的结果更新。3.6. 功能描述下图是aes模块进行一次完整加密过程的时序图。在片选信号cs为高时,系统可以正常工作,i_o信号为1时,双向接口的data7:0作为输入信号使用,ctrl(为了书写方便,ctrl代表ctrl1和ctrl0且ctrl1在前)信号=01b时,说明当前data7:0输入的是指令,指令70h表明系统要进行aes加密运算,且长度为128b,密钥和明文均由外部输入;下个syn_i下降沿,ctrl=10b,说明此时data7:0输入的是明文的密钥,由于data7:0位宽为8b,所以需要16个时钟完成密钥的输入; 在ctrl=11b,表明data7:0此时输入密钥数据,同样需要16个syn_i下降沿完成输入;然后ctrl=01b,输入指令ff,表明数据已输入完毕,开始计算,当ready信号变为低电平,说明计算完毕可以输出结果;然后ctrl=01b,由data7:0输入指令79h,aes加密后的结果在下个时钟开始输出,同时i_o变低电平,data7:0作为数据输出信号,输出同样需要16个周期,之后ready信号也被拉高,表明系统现在空闲,可以接收新指令开始新任务。解密过程在时序上与加密完全一样,只是在第一次输入指令时,输入的为71h。若需要更长的密钥长度,只需将输入指令改为a0或者f0,密钥长度对应为192b和256b。ase控制指令集:数据输入sam芯片时,io_crtl=1;数据从sam芯片输时,io_crtl=1;ctrl=01,表示输入指令;ctrl=10,表示输入明文或者密文,只有一种,即:128bitctrl=11,表示输入密钥,密钥长度有三种,128bit,192bit,或者256bit 加解密后的结果都是128bit。4. rsa运算模块4.1. 章节内容4.2 简介154.3 特性154.4 结构描述154.5 寄存器描述164.6 功能描述184.2. 简介该模块基于可重构算法设计,可以通过指令实现密钥长度为256、512、1024和2048b的rsa运算。4.3. 特性rsa运算模块可以完成以下操作,所有操作均适用于以上四种长度的密钥:明文和密钥均由外部输入进行运算;密钥由外部输入,对aes的密钥进行加解密运算;密钥由外部输入,对随机数生成器生成的随机数进行加解密运算;密钥保持不变,明文由外部输入;密钥保持不变,对aes的密钥进行加解密运算;密钥保持不变,对随机数生成器生成的随机数进行加解密运算;4.4. 结构描述rsa算法硬件实现架构4.4.1. 接口单元接口单元是外部总线和内部算法运算单元之间的桥梁,提供与加解密运算单元之间数据的交换和密钥的输入,传递各种控制信号和状态信号。4.4.2. 模幂控制器模幂控制器负责控制模乘运算单元的循环运算以及接口单元和模乘运算单元对数据、状态寄存器的读写。4.4.3. 数据状态寄存器数据、状态寄存器用来保存一些输入数据、中间运算结果、输出结果和若干运算状态说明。4.4.4. 模乘运算单元模乘运算单元就是在模幂控制器的控制下进行一次次的模乘运算,其内部可分为模乘运算器和模乘控制器,其中模乘运算器就是模乘运算所需要使用的一些逻辑与存储单元,模乘控制器则负责控制模乘运算器的循环运算来获得模乘运算的结果。4.5. 寄存器描述与aes相比,rsa运算更为复杂,需要的时间更多,密钥长度也要长得多,其密钥由三部分组成,分别为e、n和c(三个变量的具体含义可参考rsa算法,这里不做描述),长度最大都为2048b,所以需要三个寄存器分别存储三个变量。所以,rsa运算模块共有五个寄存器,分别用于存储密钥的三个构成变量:e,n,c;一个明文寄存器和一个结果寄存器。由rsa运算模块的特性可知,rsa的密钥有只有一个来源,就是外部输入;而其明文有三个来源,分别是外部输入,随机数和aes模块的密钥。具体到运算中用哪个来源更新寄存器的值由相关指令决定。下面进行具体说明。e/n/c寄存器:在输入指令data7:0=00(01/10/11)01 0001密钥外部输入,密钥长度256(512/1024/2048)b00(01/10/11)01 0010密钥外部输入,密钥长度256 (512/1024/2048)b00(01/10/11)01 0011密钥外部输入,密钥长度256(512/1024/2048)b后,若控制信号ctrl=11输入rsa的e10输入rsa的n 11输入rsa的c在输入指令data7:0=00(01/10/11)01 0100rsa密钥寄存器值不变00(01/10/11)01 0101rsa密钥寄存器值不变00(01/10/11)01 0110rsa密钥寄存器值不变明文寄存器:在输入指令data7:0=00(01/10/11)01 0001/00(01/10/11)01 0100明文外部输入后,若ctrl=10输入rsa的明/密文若输入指令data7:0=00(01/10/11)01 0010/00(01/10/11)01 0101rsa明/密文使用aes的密钥若输入指令data7:0=00(01/10/11)01 0011/00(01/10/11)01 0110明/密文使用rng结果结果寄存器:输入指令data7:0=00(01/10/11)01 1001输出rsa运算结果4.6. 功能描述下图是rsa的一次完整运算过程,rsa的密钥和明文均由外部输入,密钥长度为256b,下面具体分析其时序。在片选信号cs有效的前提下,i_o信号为高,此时data7:0作为输入管脚,当ctrl=01b时,data7:0作为指令数日,且data7:0=11h说明将要进行rsa256b运算,密钥明文外部输入;然后ctrl分别为10b,11b,10b,11b,data7:0用于数据输入,分别输入rsa的明文,e,n和c;当ctrl=01,data7:0=ffh说明数据输入完毕,开始进行运算, 计算完毕后ready信号变低,此时ctrl=01b,由data7:0输入输出数据指令19h,下个周期开始,i_o变低,由data7:0输出运算后的结果,输出完毕后,ready信号重新变高,此时可以接收新指令开始新任务。rsa其他操作的时序与上过程类似,区别在于:当密钥保持不变时,不需要进行密钥输入;当明文用到其他模块的数据时,不需要输入明文,其他在时序上没有区别。rsa控制指令:数据输入sam芯片时,io_crtl=1;数据从sam芯片输时,io_crtl=1;ctrl=01,表示输入指令;crtl=10时,表示输入明/密文或者是密钥n;crtl=11时,表示输入密钥e或者密钥c5. 芯片配置方式5.1. 总体系统框图键盘:用于控制读/写卡器工作和输入用户验证码;led显示:用于显示读卡器的输出结果;sam:加密、解密模块;5.2. mcu与sam连接6. 典型应用实例一个实际应用要求如下:(1)发rfid卡公司也是发售读写器的公司,rfid卡只是物理层的资料存储介质。(2)sam模块对发卡公司和使用读写器的公司都是黑瞎子,不需要了解其工作原理。(3)发卡公司通过密码管理器产生一对公钥kc和私钥ks。(4)发卡公司通过密码管理器产生一组公钥和私钥对:(kc1,ks1)、(kc2,ks2)、(kc3,ks3)、(kc4,ks4)、。发卡公司销售读写器时,选择分配一对密钥kci,ksi,并用ksi把kc加密写入sam模块。kci授权给使用读写器的用户。(5)发卡公司在销售rfid时,随机产生rfid识别码rx,并用ks加密写进rfid。明文rx 密文ex rsa加密ks(6)rx作为一个对称加密密钥,对数据内容m进行进行加密,加密后的数据存入rfid。明文m 密文e rx(7)rdid存储的资料为(ex,e),仅能用带有sam模块的读写器来阅读ex或修改e
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年度国际贸易结算与风险控制服务合同
- 2025版宿舍管理员绿色节能技术应用服务合同
- 2025版机场候机厅软装设计施工合同
- 2025年度吊装工程合同范本(含吊装设备维护与保养)
- 2025年度事业单位实习生实习合同
- 2025版绿色环保住宅区绿化施工与维护合同
- 2025版数据中心通风系统升级改造合同
- 2025年度男方外遇婚姻解除协议书范本
- 2025年度房产按揭贷款与装修贷优惠利率合同
- 2025年清洁服务人员安全培训及管理合同范本
- 《免除烦恼》课件
- 《非权力影响力》课件
- 2025年江西南昌市西湖城市建设投资发展集团有限公司招聘笔试参考题库附带答案详解
- 职业教育产教融合型数字化教材开发研究
- 文学传播学概论课件
- 第3单元主题活动三《创意玩具DIY》(课件)三年级上册综合实践活动
- 商务英语词汇大全
- 麻醉质量控制专家共识
- 反走私课件完整版本
- 2024-2025学年小学劳动一年级上册人教版《劳动教育》教学设计合集
- You Raise Me Up二部合唱简谱
评论
0/150
提交评论