赞助论坛
  • 4373阅读
  • 0回复

应用于IPTV机顶盒的USB身份卡识别方案 [复制链接]

楼层直达
lishubo  

级别: 资深会员
发帖
1223
精华
0
金币
2389
威望
42
贡献
10
好评
17
注册
2010-02-26
楼主    lishubo 发表于: 2011-08-04 16:09:54 
应用于IPTV机顶盒的USB身份卡识别方案
1 引言

目前,针对IPTV业务的机卡分离机顶盒业界已达成共识。可用于IPTV机卡分离的接口有PCMCIA接口技术、USB接口技术和智能卡接口技术。随着硬件技术的飞速发展,通用串行总线(Universal Serial Bus,USB)已成为计算机与外设之间进行数据交换的主流总线协议,可靠性比较高。USB外设的即插即用(Plug andPlay)特性又使得设备的安装和使用都极为简便。因此,USB身份钥(USB Identification Key)成为了当前身份认证系统最合适的辅助硬件。由于体积小、携带使用方便、能够提供可靠的认证服务,并且价格便宜,越来越多的网络用户开始接受USB身份钥这种类型的认证设备。

IPTV要想真正发挥其提供个性化服务的长处,就必须让用户可对多个业务提供商进行选择。用户可自由选择机顶盒的品牌,想享受哪个业务提供商的服务就购买哪个业务提供商的卡,把卡插入机顶盒就可享受用户定制的服务了。

业务提供商将身份卡发放给用户,将用户电子身份信息及开通业务列表存储于USB身份卡中,且可以通过在身份卡中内置相关算法(如私钥签名),限定绝密信息的处理空间(如私钥不出锁),实现重要信息的保密存储。由于身份卡对安全性的特殊要求,身份卡的识别应该更加完备。一方面,机顶盒要预防可疑USB身份卡轻易通过认证,就必须对请求登录的身份卡进行设备可靠性的加强确认;另一方面,合法的身份卡为了满足设备本身及所承载信息(用户身份信息)的双重性安全需求,必须验证机顶盒的合法性。

基于上述考虑,本文提出了一种USB身份卡识别方案:在完成了 USB没备的标准配置之后,身份卡与机顶盒继续进行身份认证,只有双方身份都被确认为可信的情况下,机顶盒与身份卡之间的主信道才得以建立,机顶盒方能读取用户业务列表和进行功能性事务的处理。协议应该在网络运营商的统一管理下进行。

2 业务提供商认证协议

2.1 协议概述

对业务提供商的认证实质上是对机顶盒和身份卡设备的认证,这一步的认证与用户无关,完全由业务提供商和网络运营商设定,所以这一步的认证要求在满足安全性的基础上越简单越好,故而选择CHAP(ChallengeHandshake Authentication Protocol)协议为基础理论模型。机顶盒与身份卡之间的通信必须严格按照事先的约定进行,如果有一步没有按约定进行,便判断为认证失败。只有设备认证成功才能开启其他功能。

CHAP协议是一种基于挑战/应答的一次一密的单向认证协议,通常通过3次握手周期性地校验对端的身份。考虑到该协议具有一定的安全强度,又易于实现,本文以此为模型,结合USB接口的特点,进行了适当的改进,应用到机顶盒与身份卡之间的相互认证问。由USB的端点1完成与机顶盒设备认证的通信。

业务提供商认证分为机顶盒认证和身份卡认证两个阶段,包含4次握手,如图1所示。

2.2 协议流程

如图1所示,可以分为4步:



1) 机顶盒挑战身份卡:Rsk,Thost

身份卡驱动加载完毕,机顶盒驱动向身份卡端点1发送认证请求,请求数据包中包括机顶盒驱动生成的挑战随机数Rsk和挑战时截Thost,由此开始了首次业务提供商认证过程。



2) 身份卡应答机顶盒:Ak1

身份卡收到机顶盒通过端点1送来的认证数据,根据收到的系统时间Thost同步本地时钟,产生自己的本地挑战伪随机数Rks(8 byte),伪随机数Rks中包含2 byte的业务提供商信息,用于识别不同业务提供商。采用单向散列算法生成挑战应答



式中:H(x)为单向散列函数;Kid为机顶盒驱动和身份卡硬件共享的128 bit或更长的秘密信息。

然后生成最后的身份卡应答数据(身份卡对机顶盒驱动的挑战应答)Ak1=Ac1+Rks,并通过端点1送回。



说明:Ak1的高64位与Ac1高64位(bit)相同,低64位是Ac1低64位与Rks的异或结果。

3) 机顶盒应答身份卡:Rsk

机顶盒驱动发出挑战数据以后,如果在一定的时间内(100 ms)没有收到身份卡回送的应答数据,则认证超时失败。驱动回到初始状态,要重新认证,必须重新进行USB身份卡的枚举。如果在预定时间窗口内收到USB身份卡回送的应答数据,那么机顶盒驱动计算应该收到的应答数据Sid=H(Thost,Rsk,Kid,H(Thost,Rsk,Kid)),然后计算USB身份卡回送的挑战伪随机数Rks=Ak1+Sid。

如果计算出USB身份卡挑战随机数的非零数据位大于64位,那么机顶盒对身份卡的认证失败,否则,机顶盒对身份卡的认证成功。同时通过伪随机数Rks获取业务提供商信息。机顶盒要进一步完成身份卡对机顶盒的认证。

机顶盒驱动根据不同的业务提供商生成16位身份卡配置识别号Tid,然后进一步计算本地应答(机顶盒驱动对身份卡的挑战应答)Ac2=H(Rsk,Rks,H(Rks,Thost+1,Kid),Sid)。最后生成机顶盒驱动对身份卡(令牌)的应答数据Ask=Ac2+Tid,并通过端点1送回。



说明:Ask高112位(bit)与Ac2高112位相同,低16位是Ac2低16位与Tid的异或结果。

4) 身份卡认证机顶盒:TOKENINFO

身份卡发出认证应答数据以后,如果在一定时间内(100 ms)没有收到机顶盒驱动回送的应答数据,则认证失败。身份卡不作进一步响应,也不开放端点2。如果在预定时间窗口收到机顶盒驱动回送的应答数据,那么身份卡硬件计算应收到的应答数据Sac=H(Rsk,RksH(Rks,Thost+1,Kid),Ac1)。然后计算机顶盒驱动回送的身份卡配置识别号Tid=Ask○+Sac。

如果身份卡配置识别号非零数据位大于16 bit,那么身份卡对驱动的认证失败,身份卡不做进一步响应,也不开放端点2;否则,身份卡对机顶盒的认证成功。身份卡开放端点2通道,并通过端点2送出身份卡信息TOKENINFO。用户与业务提供商的相互认证完成后,业务提供商给用户提供的业务列表及增值业务信息都通过端点2送出。

3 性能分析

该协议选用了挑战时截T、验证方产生的挑战随机数R以及双方共享的密钥Kid作为挑战值的组成因子,其中挑战时截和挑战随机数是变化的、不确定的,采用明文传递的方式,共享密钥是双方共同拥有的秘密值,不在信道中出现。这样的参数组合既增强了挑战值的动态性,又使挑战行为更加具有网络运营商的自主特性。

协议选用MD5加密算法作为单向散列函数进行挑战应答运算,有效地提高了认证协议的性能。虽然在数学上对MD5算法实现了破解,但对加密值正文的替换在目前来说依然是基本不可行的,也就是说寻找到碰撞到寻找到特定含义的碰撞之间仍有很大的差距,而后者才会对身份认证安全性构成威胁。

协议步骤2)和步骤3)中分别把挑战随机数Rks和身份卡配置识别号Tid隐藏在应答结果中,由于MD5算法的雪崩效应,传输中只要有一位错误,就会引起最终接收数据大范围的非线性变化,所以接收方只要通过异或判断结果的非零位数就可知接收数据的正误码。这种方法在省略握手节拍、简化认证的同时,也在一定程度上增加了协议的安全性。

4 小结

本文提出的对业务提供商认证方案能够为IPTV机顶盒和身份卡提供可靠的身份认证,有效地实现网络运营商提供机顶盒对不同业务提供商