简述:机顶盒系统中存在个性化的加密芯片,该加密芯片与CPU进行交互认证,从而控制机顶盒的软件流程,实现系统的防拷贝。该加密芯片内部配置数据基本无法获取,与CPU间通信采用密文方式。安全性较好。
机顶盒主程序在启动或运行过程中可以随时唤醒加密认证任务。完成机顶盒产品中芯片(ID)的确认。加密认证任务通过发送一个认证指令,查找加密芯片的存在。
下面将利用本加密芯片进行产品加密的最安全模式的原理及其实现过程进行阐述。
1)芯片的认证:通过读取芯片配置区内的序列号,制造商ID以及加密的存储区,获得数据进行64位密钥的运算(自制的F1算法),得到芯片内部的加密种子Gc。再获得芯片内部的特定寄存器的随机数Ci 和CPU产生的随机数Q1,利用芯片内部的F2算法,芯片和CPU分别进行F2(Ci,Q1,Gc)运算,利用计算结果进行双向判断,从而完成认证。
2)芯片的加密认证:芯片认证完成后,采用第一步运算产生的SK(F2算法特定处的中间结果),以及由认证更新过得Ci+1 和CPU产生的随机数Q2再进行一次加密运算F2(Ci+1,Q2,SK)认证,最后再通过读取芯片内部更新的Ci+2与CPU计算的结果进行比较,如果相同,则加密认证完成,进入加密模式。
3)加密模式下访问加密的存储区:在加密模式下,I2C总线上传输的数据为经过加密的密文数据,首先将存储区的密码进行加密,发送给芯片进行认证;然后利用加密读指令加密访问带密码的加密存储区,将获得数据进行解密,并与产品内部特定存储空间的数据进行比较,如果相同,则更新芯片内部的数据和FLASH的数据。如果上述操作均成功,则完成加密认证任务的处理。
1)芯片的加密种子Gc是加密认证中最重要的加密算子,不能泄露。
2) 芯片的F1算法是获得加密种子Gc的途径,不可泄露。
3) 芯片存储区密码是获取存储区数据的钥匙,不可泄露。
转载搜集的AT88SC系列加密芯片资料(网络搜索获得)
AT88SC168保密性能强,读写速度快,无需先擦除就可以进行写操作。
AT88SC1608加密卡时钟频率为1MHz,支持页写方式(16字节/页),如果以页写方式访问的话,访问时间为10ms(最大)/页;工作电压为2.7V—5.5V;写/擦除次数为10万次;数据保持100年;工作温度为0—70℃;通讯协议符合ISO/IEC 7816-3同步协议。
尤其是AT88SC1608加密卡的高保密性能十分突出,除了带加密逻辑,还具有高保密认证及反截取跟踪技术,64位相互认证及认证错误计数器,错误计数8次。
AT88SC1608具有1个128字节设置区和8个256字节应用分区,8个区可以自由合并,分别受读密码、写密码(16套密码、各3个字节)控制,错误计数8次。
AT88SC1608共有17408位(2176字节)存储空间,其中前16K位(2K字节)为应用区,后1K位(128字节)为设置区。
$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套读写密码集, 每个分区可以分别指向唯一的密码集,也可以指向同一套密码集,这样就可以只核对一套密码而进入多个分区,使多个分区合成为一个大的分区。默认WP7、RP7为读写密码。写密码7(WP7)还作为传输密码(SC)。另外,如果需要修改读写密码时,也必须核对同一套密码集的写密码。
SC:传输密码。初始值由ATMEL定认,发到每个卡厂都不同。可以修改,在个人化前一直使用SC,个人化后其它密码才会被用到。
PAC:为分区密码错误计数器。初始值为8。
上面说的过程是认证模式,如果想进入加密难证模式的话,需要再次利用认证成功时返回更新的SK值,用它取代Gc,Ci再作为参数;利用F2函数,芯(卡)片和主机再计算一次并比较,判断相等后才进入加密认证模式。
认证(加密)成功后就可以发送命令选择用户分区进行数据的读写访问了,如果各个分区还有读或写的口令限制,则还需要向访问的分区写入口令进行校验,口令正确后,才能真正完全访问用户分区。此时如果多个用户分区使用相同的安全等级和口令,则可以将这多个用户区进行合并。需要说明的是,认证一旦成功后,芯片内部的加密机制就立即开始启动,主机对芯片的任何操作都需要根据芯片加密机内部算法进行计算,以保持与它的同步。特别是向用户分区写数据后,发送写数据命令后,要紧接着发送一次主机方计算的加密校验结果,与芯片内部加密计算的结果进行校验。芯片只有接收到正确的校验和后才能将数据写入到相应的地址内,否则数据写不到目的地址,同时芯片会返回错误信息。