ESAM嵌入式安全保密模块说明书

阅读: 评论:0

ESAM嵌入式安全保密模块用户指南
为了使SEED-DEC5502具有更好的保密措施,防止用户的软件被盗版,在SEED-DEC5502中采用握奇公司提供的ESAM嵌入式安全保密认证模块。该ESAM模块的硬件平台是西门子公司提供的SLE4480,它具有如下的特征:
微处理器:8位保密控制器
隔离端子RAM:256字节
EEPROM:8K,寿命为500.000次
擦写时间:擦写1/2/4/8/16字节需要5.28/5.31/5.38/5.52/5.8毫秒
数据保存时间:10年
工作电压:2.7∽5.5V,缺省为5V
工作电流:小于10mA
工作温度:-25∽+70摄氏度
通信速率:9600bps
通信协议:T=0(异步半双工字符传送);t=1(异步半双工块传输)。默认为t=0  命令报文数据域长度:小于178个字节
本用户指南介绍了在SEED-DEC5502系统中利用ESAM卡成功实现版权保护的硬件设计和时序、安全保密实施方案、SCTools读写器使用、ESAM接口函数及DES和MAC 算法实现函数。具体介绍如下:
1.ESAM与DSP的连接和时序
1.1 ESAM卡的硬件设计
SEED-DEC5502系统中ESAM卡的硬件设计如下图所示:
硬件设计说明如下:
其中RST由系SEED-DEC5502系统内的CPLD给出,VC5502可以通过EMIF 来访问CPLD,使RST为高或低,完成复位的过程。
VC5502的UART在CPLD的控制下完成数据的双向传送。其过程如下:
1、 SYSCNTL1的UARTSEL位置1。使VC5502的UART指向ESAM卡。
2、将SYSCNTL2的KEYEN位置1,使VC5502的串口与ESAM相连接。
3、当通过UART读ESAM卡时,将KEYDIR置高。
4、当通过UART写ESAM卡时,将KEYDIR置低。
CLK是由SCY22381给出,其频率为3.57MHz。
1.2 ESAM卡的时序说明
一、ESAM卡的上电复位时序
1、冷复位
肩垫按照图1所示,在Ta时间对CLK加时钟信号。I/O线路应在时钟信号加于CLK的200个时钟周期(ta)内被卡置于状态Z(ta 时间在Ta之后)。时钟加于CLK后,保持RST为状态L,至少400周期(tb)内卡复位(tb在Ta之后)。
ta
未定义
Ta
在时间Tb,RST被置于状态H。I/O上的应答应在RST上信号的上升沿之后的
400~40000个时钟周期(tc)内开始(tc在Tb之后)。
在RST处于状态H的情况下,如果应答信号在40000个时钟周期内仍未开始,RST上的信号将返回到状态L,且电路被接口设备释放。
注:1、假定卡的内部状态在冷复位前不定,这样卡的设计必须避免不适当的操作。
2、卡的复位可以由接口设备在任意时间随意启动。
2、热复位
按照图2所示,当VCC和CLK保持稳定时,接口设备置RST为状态L至少400时钟周期(时间te)后,接口设备启动热复位。
tdusb存储器
未定义
Tc
图2 热启动
在时间Td,RST置于状态H。I/O的应答在RST上信号上升沿之后的400~40000个时钟周期(tf)之前开始(时间tf在Td之后)。
在RST处于状态H时,如果应答信号未在40000个周期之后开始,RST上的信号将返回状态L,且电路接口设备释放。
3、本设计ESAM复位时序的实现
gtem小室
首先通过设置系统控制寄存器2( SYSCNTL2)的KEY_RST位为0,并且将系统控制寄存器1(SYSCNTL1)的keyen位设为1,keydir位设为0。此时VC5502的片上UART 连接到ESAM卡上,并且ESAM卡的I/O端设为输出,准备从ESAM卡接收复位应答信号;然后通过一个延时程序延时大约600个时钟周期,满足复位时序的要求(复位时序要求至少是400个时钟周期);当延时结束时,将系统控制寄存器2( SYSCNTL2)的
KEY_RST位设为1,脱离复位状态;最后把VC5502的片上UART设为等待接收方式,即当UART的线状态寄存器的数据就绪位DR为1时,接收数据,否则等待,这样直到接收到指定接收的数据个数为止。
二、ESAM卡的发送和接收时序
ESAM卡支持两种通信协议:T=0,异步半双工字符传输协议;T=1,异步半双工块传输协议。默认的是T=0协议,波特率是9600bps,偶校验方式。可以通过读ESAM复位后所取得的反馈信息来判断目前ESAM使用的是那个通信协议,如果使用T=1协议,可以通过读写器将T=1协议改为T=0协议。鉴于上述考虑,本指南中的所有ESAM接口函数都是基于T=0协议设计,并不支持T=1协议。
1、异步半双工字符传输协议的时序
Start Start
_____    _____________________________________    ___________ | | | | Byte i | | |P | | | Byte i+1
|__|__|__|__|__|__|__|__|__|__| guartime |__|___________
传输时序的简要说明:
两个连续字符的发送时间间隔不少于12个ETU,ETU计算如下:
1ETU=372/f=372/3.57=0.1042毫秒
命令总是由DSP启动,它先发一个5字节的报头通知ESAM做什么,并且允许ESAM在发出的过程字节的控制下传输数据字节。即在发送命令时,必须先发送
5个字节的命令报头,然后发送命令的数据域。
2、本设计异步半双工字符传输协议的实现
对VC5502的片上UART做如下配置:波特率=9600bps,数据位=8bit,校验位=偶校验,停止位=2(满足时序中的guardtime要求);
利用VC5502的一个定时器来产生周期为14个ETU的时钟中断(协议要求是不低于12个ETU,为可靠起
见,设为14个ETU),当调用Write_Esam()函数
时,定时器开始定时,每一个时钟中断发送一个字符,当指定长度的字符发送完
毕时停止定时。用定时器来控制字符的发送,其产生的时序是很精确的,可以很
好的满足时序的要求。
在发送完最后一个字节时,要延时一定的时间。因为DSP的数据很快,如果一发送完最后一个字节,就将ESAM卡的I/O引脚从接收状态改为发送状态,那么
ESAM接收不到最后一个字节。延时时间必须接近于字节传输时间(8个位传输时
间)。
在接收ESAM反馈回的数据之前,应该清空片上UART的接收缓冲区,对于那些发送完5字节命令报头就马上反馈回数据的指令(比如Get_Random()),应该
将接收到的第一个返回的数据丢弃,因为该数据仅仅是命令报头第2个字节的回
馈,指明命令报头传输是否正确,而没有别的具体意义。
其它反馈数据的接收都采用等待接收的方式,对时序配置无要求,但一定要指定正确的接收数据个数,否则将产生接收数据不全或程序执行不下去(即一直在等待点火装置
接收数据)现象。
2.ESAM嵌入式安全保密模块的实施方案
2.1、安全保密方案
本安全保密方案采用二级或三级安全策略,用户可以根据实际的需要自由选择。当采用二级安全策略时用户至少需要保存两个密钥;采用三级安全策略时用户至少需要保存3个密钥。
第一级的保护:建立是CSK,该密钥用来进行外部认证,控制对文件的建立、删除等操作,即如果没有通过外部认证,就无权对ESAM卡的文件系统进行变更,这就防止了对ESAM卡的非法破坏。
第二级保护:建立线路加密保护密钥DESK,该密钥对在DSP(或读写器)和ESAM卡之间传输的数据进行加密保护和MAC码验证,并且用来对传输的密文数据进行解密,这样就避免了通过线路侦听来窃取关键数据的可能,MAC码主要用来验证数据传输的完整性。
第三级保护:建立文件保护密钥FSK,该密钥用来对第二级保护中建立的线路加密带MAC码的文件的
访问进行控制,即如果没有对FSK进行外部认证,打开线路加密带MAC码保护的文件的读写权限,就不能对文件进行读写访问。
2.2、典型的外部认证过程(A=DSP程序,B=ESAM卡)
升降式晾衣架通过A向B发取随机数指令,B接收到该指令后,向A返回8字节的随机数Random,并将该随机数内部保存起来。
A取回B返回的随机数,并采用外部认证密钥(如果是新的ESAM卡,采用出厂默认的16字节外部认证密钥,否则采用用户自己建立的外部认证密钥)进行加密
(如果是8字节密钥,采用Single-DES算法,如果是16字节密钥,采用Triple -
DES算法),然后通过外部认证指令将加密后的密文数据输入到B。
B接收到外部认证指令后,接收A输入的密文数据,然后通过内部预置的外部认证密钥对密文数据进行解密,最后将解密后的数据与第2步自己保留的随机数进
行比较,如果相等,B返回9000,表明外部认证成功,如果不相等,B返回别的
状态码,表明认证失败。
A接收B返回的状态码,如果是9000,即外部认证成功,才能进行文件的建立、删除等操作;否则为外部认证失败,不能进行上述操作。到此外部认证过程
结束。
2.3、本设计的安全保密方案实施步骤(以二级保护为例)
在DSP中预制8字节或16字节的密钥MK;
在DSP中调用Reset_Esam()函数对ESAM进行复位操作,获取8字节的
ESAM全球唯一的序列号S/N,并可以由返回的信息来判断ESAM卡的通信协议
是T=0还是T=1,然后调用DES算法(如果MK是8字节,调用Single-DES算
法,如果是16字节,调用Triple-DES算法)将所得的S/N进行加密得到CSK。
调用Get_Random()函数向ESAM卡发取随机数指令,然后取得ESAM卡返回的8字节随机数。
调用Extern_Authen()函数向ESAM卡发外部认证指令。
如果外部认证通过,调用Del_Direct()函数执行删除目录操作。注意进行该操作将删除除主目录MF外的所有文件,在删除目录操作以后必须连续进行以后的
6、7步操作,并且在操作的过程中不能有ESAM卡的复位,否则ESAM卡将死
锁,不能再用。
如果删除目录操作成功,调用Create_Keyfile()函数来创建Key文件。
如果建立Key文件成功,调用Increase_Key()函数来创建外部认证密钥,外部认证密钥为第2步得到的 CSK,用户必须保存该CSK,以后的所有外部认证都用
到它。
到此用户可以根据需要调用Increase_Key()函数来建立1ς 4个线路加密保护密钥,注意线路加密保护密钥的标识只能是00、01、02、03,在读写线路保护二
进制文件时,需要对数据用线路加密保护密钥进行加解密,所以建立的线路加密
保护密钥必须妥善保存。
调用Create_Binaryfile()函数来建立线路加密保护带MAC码的二进制文件,建立时用户必须指定该二进制文件的线路加解密密钥。当然用户可以根据需要建立多
个线路加密保护带MAC码的二进制文件。
调用Select_File()函数来选择欲进行写操作的线路加密保护带MAC码的二进制文件。
调用Write_Binaryfile()函数将指定长度的关键数据(或部分程序代码)经线路保护加密密钥(该密钥必须是欲写入文件的线路加密保护密钥)加密后写入所选定的二
进制文件。注意此时命令的数据域为密文数据加4字节MAC码。
到此,可以说完成了ESAM卡的发布过程。当DSP程序运行过程中需要获取关键数据时,执行下列的操作:
调用Select_File()函数来选择欲读的线路加密保护带MAC码的二进制文件。
调用Read_Binaryfile()函数来获取指定长度的关键数据(或部分程序代码),最好将获取的关键数据(或部分程序代码)存放在FLASH中运行,这样一旦程序停止
运行或掉电,所取出的关键数据(或部分程序代码)将自动丢失。
3.SCTools读写器使用方法
握奇公司提供了在PC平台上对ESAM卡进行操作的工具,这些工具由单卡读写器、稳压电源、转接板和读写器操作软件SCTools组成。其使用方法和步骤如下:
连接读写器:将读写器连接到PC机的串口上,并通过与读写器相配套的稳压电源给读写器供电,然后将ESAM卡嵌入到读写器的转接板的卡槽里,注意ESAM卡上的定位点(卡上的小点)应该向外侧,然后将转接板插入到读写器。
打开读写器软件:双击可执行程序,打开读写器的操作界面。
选择DLL库:如果在打开读写器的操作界面的过程中,出现“读写器动态链接库错误”对话框,那么点击确定,然后再点击打开的操作界面上工具栏中的带勾号的“使用自定义DLL”按钮,此时会出现一个Windows窗口,用户在这里查并选定读写器工具软件所处目录下的“WSCRW32.DLL”文件,然后点击Windows窗口上的“打开”按钮完成自定义DLL的选择。
连接串口:点击“通信设置”菜单,根据具体的串口连接选择下拉菜单的“连接

本文发布于:2023-05-13 06:26:13,感谢您对本站的认可!

本文链接:https://patent.en369.cn/patent/2/97316.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:数据   密钥   字节   读写器   接收   进行
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2022 Comsenz Inc.Powered by © 369专利查询检索平台 豫ICP备2021025688号-20 网站地图