发明内容
本发明要解决的技术问题是提供一种对单向网络中的接收终端进行合法性认证的方法。
针对上述第一个难点,可以利用半导体芯片的技术,将接收终端的UID固化到接收终端的芯片中去。这个技术在芯片生产时将UID的信息散布在大规模的集成电路中,可以读取但基本不可能复制,保证了UID的唯一性。而针对第二个难点。本发明提出了对UID签名的方法,服务器认证代理程序只需要验证UID的签名是否正确,就可以验证UID是否合法。
基于以上思路,本发明提供了一种对单向网络中的接收终端进行合法性认证的方法,包括以下步骤:
(a)在接收终端的生产过程中,将一部分信息固化为固件,包括功能程序、根公钥、第一签名证书、唯一标识符UID签名,该UID签名是用该第一签名证书的私钥对芯片的UID签名得到的;
(b)所述接收终端上电后,自检通过后,将包含所述根公钥的服务器认证代理程序下载到本地的硬件平台;
(c)所述固件先对所述服务器认证代理程序进行认证,如认证通过,继续下一步,否则,退出工作状态,结束;
(d)所述服务器认证代理程序用所述根公钥验证固件中的所述第一签名证书是否来自可信任的来源,以及用所述第一签名证书的公钥对UID签名解密得到的解密值是否与读出的芯片UID的数字摘要值相同,如果均是,则对所述接收终端的合法性认证通过,否则,认证不通过。
在一较佳实施例中,所述步骤(b)中接收终端的自检包括以下步骤:
固件先用第一签名证书中的公钥对UID签名解密得到解密值,再读出芯片的UID并按计算出其数字摘要值,将这两个值进行比较,如果相同,自检通过,继续下一步;如果不同,该机顶盒为非法机顶盒,固件退出工作状态,结束。
在一较佳实施例中,所述步骤(a)的机顶盒生产过程中,所述固件中还包括固件的数字签名;所述步骤(b)中,接收终端的自检包括以下步骤:
所述固件用所述第一签名证书的公钥解密所述固件的数字签名得到解密值,再按照对固件签名时的相同算法对接收终端中存储的固件进行数字摘要计算,如果计算的摘要与解密值相同,则自检通过,继续下一步;否则退出工作状态,结束。
在一较佳实施例中,所述服务器认证代理程序中还包括用第二签名证书的私钥对本程序的数字签名,所述步骤(c)中,固件对所述服务器认证代理程序的认证包括以下两个方面:
A,所述固件先用服务器认证代理程序内嵌或从网络中得到的第二签名证书的公钥解密所述服务器认证代理程序的数字签名,得到解密值,再按相同算法对该服务器认证代理程序进行数字摘要计算,如果计算的摘要与解密值相同,则确认该服务器认证代理程序是正确和完整的;
B,所述固件用根公钥验证第二签名证书是否来自可信任的来源,如果是,那么确认服务器认证代理程序来自合法的来源;
只有确认所述服务器认证代理程序是正确和完整的,并且来自合法的来源时,所述固件对所述服务器认证代理程序的认证通过。
在一较佳实施例中,所述步骤(d)中,如合法性认证通过,则所述服务器认证代理程序才为机顶盒进行软件升级或服务更新操作,否则,所述服务器认证代理程序不执行这些操作。
基于以上思路,本发明还提供了一种对单向网络中的接收终端进行合法性认证的方法,包括以下步骤:
(a)在接收终端的生产过程中,将一部分信息固化为固件,包括功能程序、根证书、签名证书、UID签名,该UID签名是用该签名证书的私钥对芯片的UID签名得到的;
(b)所述接收终端上电后,所述固件进行自检,用第一签名证书中的公钥对UID签名解密得到解密值,再读出芯片的UID并计算其数字摘要值,将这两个值进行比较,如果相同,自检通过,继续后续处理;否则,自检不通过,退出工作状态,结束。
在一较佳实施例中,所述步骤(b)所述固件在自检时,还用所述签名证书的公钥解密所述固件的数字签名得到解密值,再按照对固件签名时的相同算法对接收终端中存储的固件进行数字摘要计算,如果计算的摘要与解密值相同,则认为固件是正确和完整的,并将其作为自检通过的必要条件,如计算的摘要与解密值不同,退出工作状态,结束。
本发明要解决的另一技术问题是提供一种可实现对自身合法性认证的单向网络中的接收终端。
本发明的可实现对自身合法性认证的单向网络中的接收终端,包括固件以及与网络的通讯接口,所述固件包括功能单元代码以及根公钥、第一签名证书和UID签名,该UID签名是用该第一签名证书的私钥对芯片的UID签名得到的。所述功能单元包括一个下载子单元,用于将所述服务器认证代理单元的代码从所述网络侧设备下载到接收终端并运行;一个程序认证子单元,用于对下载的服务器认证代理单元的代码进行认证;以及一自检子单元,用于在上电后,用第一签名证书中的公钥对UID签名解密得到解密值,再读出芯片的UID并计算其数字摘要值,比较这两个值,如果相同,自检通过,否则,自检不通过,退出工作状态。
本发明要解决的又一技术问题是提供一种可对单向网络中的接收终端进行合法性认证的系统。
本发明提供的一种可对单向网络中的接收终端进行合法性认证的系统,包括网络侧设备、接收终端和服务器认证代理单元,其中:
所述服务器认证代理单元的代码存储在所述网络侧设备中,并可被下载到所述接收终端并运行,用于利用其携带的根公钥验证接收终端固件中的第一签名证书是否来自可信任的来源,并用该第一签名证书的公钥对唯一标识符UID签名解密,比较解密值与读出的芯片UID的数字摘要值是否相同,如果均是,则对该接收终端合法性的认证通过,否则,认证不通过;
所述接收终端的固件包括功能单元代码以及所述根公钥、第一签名证书和UID签名,该UID签名是用该第一签名证书的私钥对芯片的UID签名得到的,所述功能单元包括一个下载子单元,用于将所述服务器认证代理单元的代码从所述网络侧设备下载到接收终端并运行,以及一个程序认证子单元,用于对下载的服务器认证代理单元的代码进行认证。
在一较佳实施例中,所述功能单元还包括一个自检子单元,用于在上电后,用第一签名证书中的公钥对UID签名解密得到解密值,再读出芯片的UID并计算其数字摘要值,比较这两个值,如果相同,自检通过,否则,自检不通过,退出工作状态。
由上可知,本发明在基于单向数字传输网络中,利用终端芯片UID的唯一性和数字签名的不可否认性,对终端设备进行双向认证,实现了对终端设备合法性的识别,可防止单向网络终端设备被仿制和克隆。可以应用于HFC网络,数字卫星网络和无线数字电视网中的接收设备的合法性识别。
具体实施方式
下面先简要介绍一下本发明要使用到的数字签名和数字摘要技术。
数字签名是一个广泛应用的数字安全技术。它建立在非对称密钥算法和数字摘要的基础上。非对称密钥算法采用一对密钥进行加解密的操作,公钥加密,私钥解,用于保密性要求;私钥加密,公钥解用于不可否认性要求。如果发送的信息要经过信息发送者的署名,则需要用信息发送者的私钥做签名操作,则接收方只要用发送者的公钥进行验证,就可识别信息发布者的身份。常用的公钥算法有RSA、DSA、Diffie-Hellman等。
数字摘要是把一个叫做散列算法的单向数学函数应用于数据,其运算结果就是将任意长度的一块数据转换为一个定长的、不可逆转的数字。散列算法通常用于数字签名过程。最常用的两个散列函数是MD5和SHA-1。
数字证书的格式一般采用X.509国际标准。数字证书的格式在ITU标准和X.509 V3里定义,包括证书申请者的信息和发放证书CA的信息,如下所示:
◆证书版本号,不同版本的证书格式不同;
◆序列号,同一身份验证机构签发的证书序列号唯一;
◆签名算法,包括必要的参数;
◆身份验证机构的标识信息;
◆有效期;
◆证书持有人的标识信息;
◆证书持有人的公钥;
◆身份验证机构对证书的签名。
本发明对接收终端认证的实现是由两个软件程序来完成的,一个是接收终端固件,一个是服务器认证代理程序。接收终端固件是固化在接收终端中的一段程序,接收终端在启动后必须先执行固件,才可能执行其他的应用程序。接收终端出厂以后,固件不可以被更改。为了避免固件被更改的情况,接收终端固件拥有自检的功能。一旦发现自己被更改,固件将不再执行任何功能。服务器认证代理程序是接收终端固件从网络中的服务器上下载的。它能否被下载到本地的终端的硬件平台,是要经过固件的认证的。
固件和服务器认证代理程序的相互认证建立在一个信任链的基础上的。这个信任链的基础是一个根证书。这个根证书由一个各方都认可的密钥管理机构发放。接收终端固件和服务器认证代理程序都认为这个密钥管理机构是可信任的。这个机构向这个网络中所有合法的设备,包括接收终端固件和服务器认证代理程序,发放根证书。对根证书签名的根私钥被密钥管理机构保存,这个机构保证这个根私钥不被窃取和损坏。
当有了根证书这个信任基础后,整个信任链就可以搭建起来了。能够最终用根公钥验证通过的信息都会被接收终端固件认为是来自可信任的来源。有一种信息是比较特别的,它本身是一个证书。被根私钥签名的证书被称为二级证书。二级证书的私钥又可以用来签名信息,由于二级证书被认为是可信任的,那么二级证书签名的信息也会被认为是来自于可信任的来源。同时,二级证书还可以签发三级证书。以此类推,由各级证书串起来的信任链就这样建立起来了。网络中的任何设备和程序,都可以通过根证书中的根公钥验证这个信任链上的任何一个证书的合法性。建立这样一个信任链使网络中的证书管理更加灵活和易于管理。利用这个信任链上的任何一个证书,固件和服务器认证代理程序都可以实现相互的认证。
在本发明涉及的服务器和接收终端的结构里,由于服务器认证代理程序是运行在接收终端上的,很容易被破解和跟踪,所以不允许将秘密嵌入到服务器认证代理程序中。也就是说,服务器认证代理程序中隐藏对UID的运算方法的方式是不安全的。由于运算的方法无法保密,本发明就提出了对参与运算的参数进行保密的方法。本发明提出在接收终端保存UID数字签名。这个签名是对UID用私钥加密得到的。解密这个电子签名在服务器认证代理程序中实现,但解密所用的公钥和解密的算法都可以以明文的形式存在,使破解和跟踪服务器认证代理程序失去意义。即,本发明将秘密保存在生成UID数字签名的私钥中,而该私钥在使用后可以销毁,基本上没有泄密的风险。这个方法用密码学的原理保证了校验的安全性。
本发明方法可以基于现有接收终端的硬件结构,通过对固件的改进来实现。
下面介绍本发明在HFC网络中的一种具体实施方法,但本发明可适用于其它任何单向网络。在HFC网络中,接收终端被称为机顶盒。网络中可能存在两种非法的机顶盒。一种是完全复制合法机顶盒的硬件设计,并拷贝合法机顶盒的固件,称为克隆机顶盒;另一种是复制合法机顶盒的硬件设计,但采用自己的固件完成相同的功能,称为仿制机顶盒。
在像HFC这样的单向网络,这两种机顶盒在网络中的存在都不会被前端发现,可以在网络中享受服务而不需要付费。本实施例提出的方法可以使上述两种非法机顶盒在网络中无法正常地工作。
本实施例对接收终端进行双向认证的方法涉及机顶盒的生产过程和工作过程。如图1所示,该方法包括以下步骤:
步骤110,在机顶盒的生产过程中,将一部分信息固化在机顶盒的存储空间中成为固件,固件的组成部分包括功能程序、根证书、签名证书、UID签名和固件的数字签名;
功能程序指机顶盒中固化的实现机顶盒启动时功能的程序,支持的功能可包括自检、对服务器认证代理程序的认证以及其它运行所需的功能等。
根证书是用根私钥签名的包含根公钥的数字证书,还包含证书序列号、签名算法、证书申请者、发放证书机构等信息。这里,用一个根公钥也是可以的。
签名证书是用根私钥签名的,包含签名公钥的数字证书,还包含证书序列号、签名算法、证书申请者、发放证书机构等信息。
UID签名是用上述签名证书对应的私钥对UID签名得到的。
固件的数字签名是对机顶盒中存储的固件(部分或全部)进行数字摘要计算,然后用签名私钥对生成的数字摘要进行加密得到的。
根私钥由该管理机构保存,并不驻留在用于产生UID签名的生产签名服务器中。而UID签名和固件的数字签名是通过一台机顶盒生产签名服务器实现的。在机顶盒生产时,生产签名服务器与机顶盒通讯,读出每个机顶盒芯片的UID,计算出其数字摘要值再用签名私钥加密生成UID签名,该签名私钥在使用后可以销毁。本实施例中,上述签名证书属于二级证书,不过,本发明另一实施例中,上述签名证书也可以是三级证书,即是由根私钥签名的二级证书中的私钥签名得到的证书。
机顶盒固件的工作流程如下所述,这个流程保证了机顶盒的安全性。
步骤120,在初始化过程中,机顶盒固件先进行自检,用签名公钥解密固件的数字签名得到解密值,再按照签名时相同的算法对机顶盒中存储的固件进行数字摘要计算,如果计算的摘要与解密值相同,则认为固件是正确和完整的,继续下一步;否则认为固件被篡改,固件退出工作状态,结束;
步骤130,固件再对UID签名进行验证,先将UID签名用签名证书中的签名公钥进行解密,得到解密值,再读出芯片的UID并计算出其数字摘要值,将这两个值进行比较,如果相同,就证明这个机顶盒是在生产时认证合法的机顶盒,继续下一步;如果不同,该机顶盒为非法机顶盒,固件退出工作状态,结束;
因为UID是固化在芯片中的,可读取但基本不可能复制。因此,克隆机顶盒虽然可以复制出UID签名,但是,由于其芯片的UID值和其复制对象芯片的UID不同,两者比较的结果也不会相同,从而使克隆机顶盒无法工作。仿制机顶盒虽然可以跳过自检的部分,从而可以正常地工作。但是仿制机顶盒无法在机顶盒升级时,无法从服务器程序得到服务更新的信息。在服务更新后,将无法正常工作。
步骤140,固件自检成功后,接收终端检测网络中是否有适用的服务器认证代理程序供下载,如果有,执行步骤150,否则,执行步骤190;
步骤150,在网络中检测到有服务器认证代理程序时,固件将其下载到本地的硬件平台,该服务器认证代理程序中包含根公钥、签名证书和对自身程序的数字签名,其中签名证书不必与机顶盒中的签名证书相同;
步骤160,固件在把程序执行的控制权交给服务器认证代理程序前,先对其进行认证,保证它来自于合法的来源,如认证通过,继续下一步,否则,执行步骤190;
认证包括以下两个方面:
第一,验证服务器认证代理程序在传输过程中是否保持了程序的完整性。固件先用服务器认证代理程序内嵌或从网络中得到的签名证书中的公钥解密服务器认证代理程序的数字签名,得到解密值,再按相同算法对下载的服务器认证代理程序进行数字摘要计算,如果计算的摘要与解密值相同,则认为服务器认证代理程序是正确和完整的。
第二,验证为服务器认证代理程序签名的证书是否在由根证书建立起来的信任链中,如果服务器认证代理程序的证书是在信任链中被认可的,即被根证书或其下级证书的私钥签名的,那么服务器认证代理程序就是来自合法的来源的。
服务器认证代理程序中或根据该程序中的信息从网络中找到的签名证书可以是根私钥签名的二级证书,也可以是二级证书私钥签名的三级证书或更下级的证书。每个证书都是以x.509的格式存在,规定了这个证书是由谁签发的,通过发行者,编号等一系列属性。对于二级证书,固件直接用保存的根公钥就可以解密其签名而完成验证。对于三级证书,机顶盒先根据证书中的发行机构等信息到网络中获取相应的二级证书,用该二级证书的公钥解密其签名而完成首次验证,然后再用保存的根公钥解密该二级证书的签名完成再次验证,对于更下级的证书的验证过程依此类推,这是一个常规的判断方法。总之,在这个网络中只有一个根公钥,这是这个信任链的基础。
在另一种特殊情况下,该服务器认证代理程序也可以是由根私钥签名的。这样,服务器认证代理程序中可内嵌一个根证书或无需内嵌有证书,接收终端固件可以直接用根公钥对该程序的签名进行验证。
以上两个方面的认证没有固定的先后顺序,只有同时通过二个方面的认证,才认为认证通过。
步骤170,服务器认证代理程序先对机顶盒固件进行认证,保证机顶盒不是非法机顶盒,如认证通过,执行步骤180;否则,执行步骤190;
同样,该认证包括以下二个方面:
第一,对接收终端固件中的UID签名进行验证。服务器认证代理程序先将机顶盒固件中存储的UID签名用机顶盒中存储的签名证书进行解密,得到解密值,再从芯片中读出芯片的UID并计算其数字摘要值,将这两个值对比。这两个值必须相同才能验证固件不是被拷贝的,是与这个机顶盒相匹配的。
第二,验证为UID签名的证书是否在由根证书建立起来的信任链中。即服务器认证代理程序验证机顶盒固件中存储的签名证书是否被根证书或其下级证书签名的,是在信任链中被认可的。其验证方法与步骤150固件对服务器认证代理程序中的签名证书的验证是相同的,这里不再重复。
当这两个条件同时成立,服务器认证代理程序就验证了机顶盒固件是合法的,才接受程序运行的控制权完成服务器认证代理程序的其它功能。同样由于UID的不同复制性,如UID签名的验证通过,则可以检测出克隆或仿制的非法机顶盒。当然该步中,服务器认证代理程序还可对机顶盒中存储的固件的数字签名进行验证,方法与步骤120中固件自检时相同,从而保证固件是正确和完整的。
步骤180,服务器认证代理程序为机顶盒进行应用程序升级、服务更新等操作;
为了维护网络运营商的利益,运营商可以利用服务器认证代理程序来进行用户的服务更新和机顶盒应用程序的升级。通过定时对用户的服务进行更新和对机顶盒软件进行升级,仿制或克隆的机顶盒将得不到服务的更新和升级,从而无法正常地工作。
步骤190,启动固件中的其它功能程序或接收终端中的应用程序。
相应的,本实施例可对单向网络中的接收终端进行合法性认证的系统,包括网络侧设备、接收终端和服务器认证代理单元,其中:
所述服务器认证代理单元的代码存储在所述网络侧设备中,并可被下载到所述接收终端并运行,用于利用其携带的根公钥验证接收终端固件中的第一签名证书是否来自可信任的来源,并用该第一签名证书的公钥对唯一标识符UID签名解密,比较解密值与读出的芯片UID的数字摘要值是否相同,如果均是,则对该接收终端合法性的认证通过,否则,认证不通过;
所述接收终端的固件包括功能单元代码以及所述根公钥、第一签名证书和UID签名,该UID签名是用该第一签名证书的私钥对芯片的UID签名得到的。所述功能单元包括一个下载子单元,用于将所述服务器认证代理单元的代码从所述网络侧设备下载到接收终端并运行;一个程序认证子单元,用于对下载的服务器认证代理单元的代码进行认证;一个自检子单元,用于在上电后,用第一签名证书中的公钥对UID签名解密得到解密值,再读出芯片的UID并计算其数字摘要值,比较这两个值,如果相同,自检通过,否则,自检不通过,退出工作状态。自检通过后,可以运行固件中的功能单元,也可以运行终端中的应用程序,本发明不做限定。
在上述实施例的基础上,本发明还可以有各种变换。
例如,在另一实施例中,接收终端的自检、固件对服务器认证代理程序的认证方法都可以采用已有的方法来实现。只要服务器认证代理程序对固件中的UID签名进行校验,就可以对单向网络中的接收终端进行合法性的认证。
相似的,在又一实施例中,也可以只在接收终端自检时,对UID签名进行校验,下载的服务器认证代理程序可以按已有的方式工作。这样也可以在终端本地实现对终端合法性的认证。
综上所述,本发明在终端设备中写入该终端设备芯片UID的数字签名,终端设备的固件从网络中下载一个服务器认证代理程序,对终端设备的认证由这个服务器认证代理程序来实现。服务器认证代理程序运行在终端设备的硬件平台上,从服务器认证代理程序中内嵌或是终端设备内嵌的签名证书中得到公钥,用公钥对UID的签名进行解密。服务器认证代理程序通过将解密得到的值与芯片中读出的UID的摘要值进行比对的结果,以及从根证书导出的信任链所确定的证书的可信性,从而确定终端设备的合法性。
这个合法性作为终端设备软件运行和软件更新的前提条件,这样仿制和克隆的终端设备就无法在单向网络中运行和升级。通过固件的自检,和服务器认证代理程序的与固件的相互认证,可以使克隆和仿制的机顶盒无法在网络中正常工作。