采用AT88SC系列芯片进行系统加密的原理

简述:机顶盒系统中存在个性化的加密芯片,该加密芯片与CPU进行交互认证,从而控制机顶盒的软件流程,实现系统的防拷贝。该加密芯片内部配置数据基本无法获取,与CPU间通信采用密文方式。安全性较好。

机顶盒主程序在启动或运行过程中可以随时唤醒加密认证任务。完成机顶盒产品中芯片(ID)的确认。加密认证任务通过发送一个认证指令,查找加密芯片的存在。

下面将利用本加密芯片进行产品加密的最安全模式的原理及其实现过程进行阐述。

1)芯片的认证:通过读取芯片配置区内的序列号,制造商ID以及加密的存储区,获得数据进行64位密钥的运算(自制的F1算法),得到芯片内部的加密种子Gc。再获得芯片内部的特定寄存器的随机数Ci CPU产生的随机数Q1,利用芯片内部的F2算法,芯片和CPU分别进行F2CiQ1Gc)运算,利用计算结果进行双向判断,从而完成认证。

 

2)芯片的加密认证:芯片认证完成后,采用第一步运算产生的SKF2算法特定处的中间结果),以及由认证更新过得Ci+1 CPU产生的随机数Q2再进行一次加密运算F2Ci+1Q2SK)认证,最后再通过读取芯片内部更新的Ci+2CPU计算的结果进行比较,如果相同,则加密认证完成,进入加密模式。

 

3)加密模式下访问加密的存储区:在加密模式下,I2C总线上传输的数据为经过加密的密文数据,首先将存储区的密码进行加密,发送给芯片进行认证;然后利用加密读指令加密访问带密码的加密存储区,将获得数据进行解密,并与产品内部特定存储空间的数据进行比较,如果相同,则更新芯片内部的数据和FLASH的数据。如果上述操作均成功,则完成加密认证任务的处理。

 

注意事项:
 

1)芯片的加密种子Gc是加密认证中最重要的加密算子,不能泄露。

2)  芯片的F1算法是获得加密种子Gc的途径,不可泄露。

3)  芯片存储区密码是获取存储区数据的钥匙,不可泄露。

 

 

 

 

转载搜集的AT88SC系列加密芯片资料(网络搜索获得)

[ 2007-4-3 19:40:00 | By: 老妖 ]

 

AT88SC168保密性能强,读写速度快,无需先擦除就可以进行写操作。
AT88SC1608
加密卡时钟频率为1MHz,支持页写方式(16字节/),如果以页写方式访问的话,访问时间为10ms(最大)/页;工作电压为2.7V—5.5V;写/擦除次数为10万次;数据保持100年;工作温度为0—70℃;通讯协议符合ISO/IEC 7816-3同步协议。
尤其是AT88SC1608加密卡的高保密性能十分突出,除了带加密逻辑,还具有高保密认证及反截取跟踪技术,64位相互认证及认证错误计数器,错误计数8次。
AT88SC1608
具有1128字节设置区和8256字节应用分区,8个区可以自由合并,分别受读密码、写密码(16套密码、各3个字节)控制,错误计数8次。
AT88SC1608
共有17408位(2176字节)存储空间,其中前16K位(2K字节)为应用区,后1K位(128字节)为设置区。

中设置区存储结构:(字节地址以16进制表示)
$0 $1 $2 $3 $4 $5 $6 $7                  
地址
厂商信息 复位应答(ATR) 历史代码(HC)      $00
厂商代码(FZ) 保留 卡商代码(CMC        $08
访问权限 AR0 AR1 AR2 AR3 AR4 AR5 AR6 AR7 $10
保留                                     $18
认证区 AAC 识别码(Nc)                    $20
密文(Ci)                                 $28
密钥 密钥(Gc)                            $30
测试区 测试区(MTZ)                       $38
密码区 PAC 写密码0(WP0) PAC 读密码0(RP0) $40
PAC
写密码1(WP1) PAC 读密码1(RP1)       $48
PAC
写密码2(WP2) PAC 读密码2(RP2)       $50
PAC
写密码3(WP3) PAC 读密码3(RP3)       $58
PAC
写密码4(WP4) PAC 读密码4(RP4)       $60
PAC
写密码5(WP5) PAC 读密码5(RP5)       $68
PAC
写密码6(WP6) PAC 读密码6(RP6)       $70
PAC
写密码7(WP7/SC) PAC 读密码7(RP7)    $78
注:哪个区用哪套密码或是否要认证要由访问权限AR0-AR7 来决定。

ATR
:复位应答,由ATMEL定义,不可改。
HC
: 历史代码,由ATMEL定义,不可改。
FZ
: 厂商代码,由ATMEL定义,不可改。
CMC
:卡商代码,由卡厂定义,不可改。
AR0-7
:访问权限。个人化前定义。(详细用法参见访问权限)
Nc
:识别码,通常用作卡的唯一标识--卡号。个人化前定义。
Ci
:密文,个人化前可写一随机数,认证卡时使用,每次认证会被自动改写。
Gc
:密钥,64位的保密种子,由Nc通过F1公式推算出来,在个人化前,写入卡中。个人化后不可访问,认证时作为该卡的F2公式的参数。(详细用法参见认证协议)
AAC
:为认证错误计数器。初始值为8
MTZ
:用于测试卡的读写性能。任意条件下均可测试。
WP0-WP7,RP0-RP7
8套读写密码集, 每个分区可以分别指向唯一的密码集,也可以指向同一套密码集,这样就可以只核对一套密码而进入多个分区,使多个分区合成为一个大的分区。默认WP7RP7为读写密码。写密码7(WP7)还作为传输密码(SC)。另外,如果需要修改读写密码时,也必须核对同一套密码集的写密码。
SC
:传输密码。初始值由ATMEL定认,发到每个卡厂都不同。可以修改,在个人化前一直使用SC,个人化后其它密码才会被用到。
PAC
:为分区密码错误计数器。初始值为8
 
 
AT88SCXX系列加密存储芯(卡)片解决方案
 
1、   简介
         AT88SCxx系列加密存储芯(卡)片是国际著名芯(卡)片厂商Atmel公司生产的具有多用途的加密存储系列芯(卡)片。利用I2C串行总线通信,采用认证或加密验证等方式进行数据访问,因此以其容量大、体积小、使用方便、安全可靠等特点,在生产开发中得到了广泛的应用。
        AT88SCxx系列包括AT88SC0104C、AT88SC0204C、AT88SC0404C、AT88SC0808C 、AT88SC1616C、AT88SC3216C、AT88SC6416C、AT88SC12816C、AT88SC25616C等型号,用户区存储空间从1Kbits到256Kbits不等。用户存储区通过配置可划分成4到16个相同容量的应用存储区。分别受8套读、写口令的控制和安全等级的设定,这些应用分区的读写安全设定可以自由合并使用
2、   芯(卡)片是如何保证安全性的
         AT88SC系列芯(卡)片提供了标准、口令、认证和加密三种方式访问用户存储区,在标准访问方式下,对用户存储区的读写访问无任何限制;在口令访问模式下,对用户存储区的读写访问需要口令验证;在认证方式下,用户必须经过认证,同时要通过不同用户区所设定的口令检验才能正确访问用户数据区;加密验证模式下访问用户时用户必须首先经过认证,然后利用认证成功后配置区特定寄存器中更新的数据作为密钥再次进行认证,最后还要通过不同用户区设定的口令检验后才可访问用户区,这种方式下总线下传输的数据是经过加密的密文。
        AT88SC系列芯(卡)片内置了一个64bit的加密算法。其认证和加密模式都使用了这个算法。在认证和加密模式下,大大增强了IC卡访问的安全性,能有效克制旁路攻击。在这两种模式下,主机每次与IC卡或者芯(卡)片交互的信息都不一样,这样第三者很难从交互信息中获取有效数据。
3、   芯(卡)片的认证加密过程
         主机首先从芯(卡)片中读出Nc和Ci,根据自定义的函数F1(Nc,Ks)算法算出Gc,其中Ks为用户知道固定参数,同时利用芯(卡)片内部的F2(Gc,Ci,Q0)算法算出Q1,并向芯(卡)片发送初始化认证参数Q1和Q0,其中,Q0是CPU方给出的随机数。芯(卡)片内部则利用自己的F2逻辑算出Ci+1=F2(Gc,Ci,Q0),同时得出Q2=F2(Gc,Q1)。芯(卡)片收到校验认证命令后,判断是否Ci+1=Q1,如是,则有Ci+2=F2(Gc,Ci+1),且用Ci+2更新Ci,芯(卡)片中的认证通过;同时更新芯(卡)片内部同组的SK(Session Encryption Key)的值。CPU方接收芯(卡)片中更新的Ci后,判断是否等于Q2,如果通过,则认证全部通过。如下图所示:

        上面说的过程是认证模式,如果想进入加密难证模式的话,需要再次利用认证成功时返回更新的SK值,用它取代Gc,Ci再作为参数;利用F2函数,芯(卡)片和主机再计算一次并比较,判断相等后才进入加密认证模式。
        上面提到的F2算法,是芯(卡)片内部的控制逻辑利用Gc、Ci、Q0三个参数初始化的一个DES算法的变种。这个算法是所有加密解密、完整性认证与信息认证的关键。
4、   用户数据的安全访问
         认证(加密)成功后就可以发送命令选择用户分区进行数据的读写访问了,如果各个分区还有读或写的口令限制,则还需要向访问的分区写入口令进行校验,口令正确后,才能真正完全访问用户分区。此时如果多个用户分区使用相同的安全等级和口令,则可以将这多个用户区进行合并。需要说明的是,认证一旦成功后,芯(卡)片内部的加密机制就立即开始启动,主机对芯(卡)片的任何操作都需要根据芯(卡)片加密机内部算法进行计算,以保持与它的同步。特别是向用户分区写数据后,发送写数据命令后,要紧接着发送一次主机方计算的加密校验结果,与芯(卡)片内部加密计算的结果进行校验。芯(卡)片只有接收到正确的校验和后才能将数据写入到相应的地址内,否则数据写不到目的地址,同时芯(卡)片会返回错误信息。
 
-----------------------------------------------------------------------------------------------
认证(加密)成功后就可以发送命令选择用户分区进行数据的读写访问了,如果各个分区还有读或写的口令限制,则还需要向访问的分区写入口令进行校验,口令正确后,才能真正完全访问用户分区。此时如果多个用户分区使用相同的安全等级和口令,则可以将这多个用户区进行合并。需要说明的是,认证一旦成功后,芯片内部的加密机制就立即开始启动,主机对芯片的任何操作都需要根据芯片加密机内部算法进行计算,以保持与它的同步。特别是向用户分区写数据后,发送写数据命令后,要紧接着发送一次主机方计算的加密校验结果,与芯片内部加密计算的结果进行校验。芯片只有接收到正确的校验和后才能将数据写入到相应的地址内,否则数据写不到目的地址,同时芯片会返回错误信息。

你可能感兴趣的:(linux,C,linux设备驱动,加密,存储,算法,encryption,测试,任务)