加密芯片DM2016 在数字电视加密中的应用
扫描二维码
随时随地手机看文章
据统计,全球每三款软件就有一款被拷贝或盗版,使得正规厂家的正版系统销量锐减。面对形形色色的解密公司,封装和PCB布线的保护已经显得力不从心,而单纯的软件保护也无济于事,如E2PROM和MCU保护软件,由于E2PROM的易复制以及MCU的易读性,保护力度远远不能经受市场的考验。如果用硬件来保护软件,或软硬件相结合,就能加大盗版和破解的难度。
针对MCU加密易被破解,防抄版嵌入式系统加密芯片DM2016内嵌了1024位E2PROM,采用特殊算法、明文随机数产生、密钥OTP(一次性可编程)写入数据线自动熔断等多种保护措施。加密芯片DM2016广泛适用于PMP、GPS、DVD、DVR、DVB等嵌入式应用系统。
1 DM2016的特点
DM2016的内部结构如图1所示。
DM2016有如下特性:
◆符合I2C总线标准;
◆支持2位I2C地址选择;
◆内置128位密钥解密算法,保密性能类似于3DES算法,且一次性烧录;
◆内置1 024位E2PROM;
◆采用随机数通信算法。
2 DM2016在数字电视加密领域中的应用
2.1 硬件结构
图2是DM2016加密芯片在数字电视加密领域中的应用结构示意图。图中DMll05是一款针对性很强的芯片,它接收标准的TS流,选择进行解复用、解扰,将处理好的TS流以DMA方式通过PCI总线送到计算机内存。该芯片可以通过与接口控制芯片DMl021搭配,实现2个CAM卡控制,并可以接收外部红外遥控信号实现遥控功能。DMll05只需外挂加密芯片DM2016,通过I2C接口与DM2016连接,实现加密控制和部分内部寄存器上电配置。DM2016芯片内部具有128位密钥区,厂商可以一次写入,通过加密算法保护自己的软件。同时,DM2016还具有1 024位E2PROM区域,DM1105部分需配置的寄存器可以保存在此,上电时将其读入,完成DMll05部分寄存器的配置。
2.2 软件实现
图3是DM2016加密芯片在数字电视加密领域中加、解密的认证流程。从该认证流程可看出,主处理芯片DMll05根据DM2016的返回值B产生64位随机数作为明文(如加密前的数字电视信号),该明文与DMll05程序里的密钥通过调用加密库来参与加密运算,得到运算结果暗文A,DMll05将暗文A通过I2C总线传到加密芯片DM2016,然后DM2016使用与DMll05程序里密钥相同的密钥对暗文A进行解密运算,并将得到的运算结果与加密前的64位随机数进行比较。如果一致则表示认证通过,此时被加密的数字电视信号就可以被解密还原成正常信号,合法用户就可以收看到相关的电视节目;否则就表示认证失败,被加密的数字电视信号不能被解密还原成正常信号,用户就不能收看到相关的电视节目。
下面以BlowFish算法为例介绍加密算法在嵌入式系统中的应用。
32位微处理器诞生后,Blowfistl算法在加密速度上超越了DES,引起了人们的关注。Blowfish算法没有注册专利,不需要授权,可以免费使用。正是由于这些特点,它广泛应用于很多产品中。在这里,BlowFish算法用来加密64位的字符串,BlowFish算法使用2个“盒”——unSigned long pbox[18]和unsigned long sbox[4,256]。BlowFish算法中,有一个核心加密函数:BF_En。该函数输入64位信息,运算后以64位密文的形式输出。用BlowFish算法加密信息需要2个过程,即密钥预处理和
信息加密。
以密钥预处理为例,这时,BlowFish算法的源密钥——pbox和sbox是固定的。要加密一个信息,需要自己选择一个。key,用这个key对pbox和sbox进行变换,得到下一步信息加密所需的key_pbox和keg_sbox。具体的变换算法如下:
①用sbox填充key_sbox。
②用自己选择的key以8个一组去异或pbox,用异或的结果填充key_pbox。key可以循环使用。例如,选的key是”abcdefghijklmn”,则异或过程为
keg_pbox[O]=pbox[O]abcdefgh
keyr_pbox[1]=pbox[1]ijklmnab
…………
如此循环,直到key_box填充完毕。
③用BF_En加密一个全“O”的64位信息,用输出的结果替换key__pbox[O]和key_pbox[1]。此时,i=O。
④用BF_En加密替换后的key_pbox[i]和key_phox[i+1],用输出替代key_pbox[i+2]和key_phox[i+3]。
⑤i=i+2,继续第4步,直到key_pbox全部被替换。
⑥用key_pbox[16]和keyl_pbox[17]做首次输入(相当于上面的全“O”输入),用类似的方法替换key_sbox进行信息加密。信息加密就是用函数把待加密信息x分成32位的两部分:xL和xR,再用BF_En函数对输入信息进行变换。
以下是初始化sbox、pbox及定义全局变量key_pbox、key_sbox的C程序例子。
结 语
随着嵌入式系统越来越广泛的应用,安全保密问题也越来越受到重视。密码学为其提供了正确的理论基础。同时,性能优良的硬件(如DM2016)成为实现其安全保密的物质基础。二者的有效结合为防止嵌入式系统开发成果被仿制或剽窃提供了有力的保障。