具体实施方式
为了能够更清楚地理解本发明的上述目的、特征和优点,下面结合附图和具体实施方式对本发明进行进一步的详细描述。
在下面的描述中阐述了很多具体细节以便于充分理解本发明,但是,本发明还可以采用其他不同于在此描述的其他方式来实施,因此,本发明的保护范围并不受下面公开的具体实施例的限制。
下面结合附图和实施例对本发明做进一步说明。需要说明的是,在不冲突的情况下,本申请的实施例及实施例中的特征可以相互组合。
由于认证过程中涉及到认证双方,因此针对相应侧来说明相关的认证处理过程,在以下实施例中以电视机和服务器为例进行说明,应理解,本发明提出的认证过程既可以应用在电视机与服务器上,也可以应用在其他电子设备例如平板电脑与服务器之间的认证。
图1示出了根据本发明的一个实施例的认证方法的示意图。
如图1所示,根据本发明的实施例的认证方法可以包括以下步骤:步骤102,在接收到来自电视机的认证请求时,向所述电视机发送随机数;步骤104,接收来自所述电视机的第一加密数据和电视机标识,并使用预存的且与所述电视机标识对应的电视机端公开密钥,对所述第一加密数据进行解密,其中,所述第一加密数据是所述电视机使用电视端私有密钥对所述随机数进行加密生成的数据,所述电视机端公开密钥和所述电视机端私有密钥是一对匹配密钥;步骤106,判断解密出的随机数与所述服务器反馈至所述电视机的随机数是否相同;步骤108,若判断结果是相同,则向所述电视机发送认证成功结果。
在上述实施例中,采用非对称加密算法参与认证过程,非对称加密算法需要两个密钥:公开密钥和私有密钥。公开密钥与私有密钥是一对密钥,如果用公开密钥对数据进行加密,只有用对应的私有密钥才能解密;如果用私有密钥对数据进行加密,那么只有用对应的公开密钥才能解密。
非对称加密算法实现机密信息交换的基本过程是:甲方生成一对密钥并将其中的一把作为公用密钥向其它方公开;得到该公用密钥的乙方使用该密钥对机密信息进行加密后再发送给甲方;甲方再用自己保存的另一把专用密钥对加密后的信息进行解密。另一方面,甲方可以使用乙方的公钥对机密信息进行签名后再发送给乙方;乙方再用自己的私匙对数据进行验签。
服务器预先保存其服务范围内的电视机标识以及与每一电视机标识对应的公开密钥。在电视机请求服务器的认证时,服务器会向电视机发送随机生成的随机数如果电视机使用电视机端私有密钥对服务器发送给该电视机的随机数进行加密,则服务器将使用与电视端私有密钥对应的电视机端公开密钥对第一加密数据进行解密,若解密出的随机数与之前服务器向电视机发送的随机数相同,则说明该电视机被认证通过。这样,通过私有密钥和公开密钥进行认证,不需借助外部设备,也无需增加可信计算模块,因此认证过程简单,也没有增加硬件成本,并且由于私有密钥在认证过程中没有被向外传输(一直加密保存在电视机中的存储介质中),传输的仅仅是公开密钥,因此外界很难获取该私有密钥。除此之外,因为每次认证都有随机数参与,即使被攻击者截取到某次认证的数据流,也无法应用到下次的认证过程,因为每次生成的随机数是不相同的,因此认证过程可以经受得住重放攻击,从而保证了电视机与服务器之间的认证数据安全。在上述技术方案中,优选的,还可以包括:接收来自所述电视机的电视机端公开密钥;判断接收的电视机端公开密钥与预存的电视机端公开密钥是否相同,若相同,则确定所述电视机在所述服务器的服务范围内。
在服务器接收到来自电视机的电视机端公开密钥后,根据预存的电视机标识(ID)对应的公开密钥与接收的公开密钥进行比对,如果相同,则表明该加密数据的确是与该ID相同的电视机发送过来的,可以进行后续的认证过程,否则认为是假冒信息,就需要进行后续认证过程,从而避免多余的后续处理过程,减轻服务器的认证负担。
在上述技术方案中,优选的,还可以包括:在所述电视机发送的第一加密数据为根据所述服务器反馈的随机数生成的摘要值时,判断所述服务器解密出的摘要值与所述服务器根据反馈至所述电视机的随机数生成的摘要值是否相同,若判断结果是相同,则向所述电视机发送认证成功结果。
所述电视机在接收所述服务器发送的随机数后,计算生成摘要值并用电视机端私有密钥对摘要值进行加密生成第一加密数据。实际应用中,可能某些应用需要加密(签名)的数据量较大,可以对这些数据先计算摘要值,然后再进行后续处理,提高认证效率。
在上述技术方案中,优选的,还可以包括:在接收到来自电视机的认证请求时,向所述电视机发送所述服务器的服务器端公开密钥。
在接收到电视机的认证请求时,将该服务器端公开密钥发送至电视机,以便在服务器向电视机发送认证请求时解密使用。
在上述技术方案中,优选的,还可以包括:使用与所述电视机标识对应的电视机端公开密钥对所述随机数和所述服务器端公开密钥进行加密,并将加密后的数据发送至所述电视机。
为了进一步加强数据的安全性,在服务器将随机数与服务器端公开密钥发给电视机时,用电视机端公开密钥对这些数据进行加密,大大增加恶意终端通过批量获取这些样本数据分析认证协议或是电视机端私有密钥的难度,此外,在实际的一些应用中,有些数据需要加密传输,该方法可以很好的保证这些数据的传输安全性。
在上述技术方案中,优选的,还可以包括:向所述电视机发送认证请求;接收来自所述电视机的随机数;使用服务器端私有密钥对来自所述电视机的随机数进行加密,得到第二加密数据;将所述第二加密数据发送至所述电视机。
在本实施例中,还可以实现双向认证,即除了服务器对电视机进行认证之外,还可以实现电视机对服务器进行认证,电视机对服务器的认证过程与服务器对电视机的认证过程相同,即在服务器向电视机发送认证请求后,接收来自电视机的随机数,使用服务器端私有密钥对来自电视机的随机数进行加密,得到第二加密数据,将第二加密数据发送至所述电视机,等待所述电视机的认证结果,完成所述电视机对所述服务器的认证过程。同样的,由于服务器端私有密钥保存在服务器中,没有向外传输,故该服务器端私有密钥很难被其他终端窃取。
图2示出了根据本发明的另一实施例的认证方法的示意图。
如图2所示,根据本发明的另一实施例的认证方法可以包括以下步骤:步骤202,向服务器发送认证请求;步骤204,接收来自所述服务器的随机数;步骤206,使用电视机端私有密钥对来自所述服务器的随机数进行加密,得到第一加密数据;步骤208,将所述第一加密数据和电视机标识发送至所述服务器。
该认证方法是电视机侧的认证方法,与上面提出的服务器侧的认证方法相对应,在电视机向服务器请求认证之后,会接收到来自服务器的随机数,在电视机中预先保存的生成的电视机端私有密钥,该电视机端私有密钥与服务器中的电视机端公开密钥是根据非对称算法计算出的一对匹配密钥。公开密钥可预先保存在服务器中,而私有密钥则保存在电视机中,不向外传输,因此可防止该私有密钥被窃取,虽然公开密钥被向外传输,但是即使其他人获取了该公开密钥,也不能够获取与该公开密钥相对应的私有密钥,从而不能利用该私有密钥来生成认证加密数据,从而防止服务器对其他恶意终端进行授权,提高了认证过程的数据安全性。在上述技术方案中,优选的,还可以包括:在向所述服务器发送认证请求时,还向所述服务器发送电视机端公开密钥,所述电视机端公开密钥与所述电视机端私有密钥是一对匹配密钥。
电视机向服务器发送电视机端公开密钥是为了服务器便于进一步确定发送该信息的电视机属于服务器的服务范围内的电视机,进一步提高安全性能。
在上述技术方案中,优选的,还包括:在接收到来自所述服务器的随机数时,根据所述随机数生成摘要值;使用所述电视机端私有密钥对所述摘要值进行加密,并将加密后的数据发送至所述服务器进行验证。
非对称算法计算量非常大,如果要加密(签名)的数据量很大,为了提高认证效率,可以先计算得到随机数的摘要值,然后利用电视机端私有密钥对该摘要值进行加密。
在上述任一技术方案中,优选的,还可以包括:预先对所述电视机端私有密钥进行加密存储;在接收到来自所述服务器的随机数时,对所述电视机端私有密钥进行解密,获取所述电视机端私有密钥的明文,以使用所述电视机端私有密钥对所述摘要值进行加密。
为了进一步增强对电视端私有密钥的保护,可采用对称算法等加密算法对该服务器端私有密钥进行加密,并只有在接收到所述电视机的随机数后,对所述电视端的私有密钥进行解密,获取所述电视端的私有密钥,对接收到的随机数加密后,私有密钥仍需加密保存,以确保认证系统的安全性。
在上述任一技术方案中,优选的,还可以包括:在所述随机数被加密时,使用所述电视机端私有密钥对所述随机数进行解密,以得到所述随机数的明文。为了防止服务器发送给电视机的随机数以及服务器端公开密钥被获取,因此采用电视机端公开密钥对这些数据进行了加密,电视机在接收到该加密数据之后,利用自己的私有密钥进行解密,这样其他终端(由于其他终端不知道电视机端私有密钥)即使获取了加密数据也不能得到随机数以及服务器端公开密钥。
图3示出了根据本发明的实施例的电视机与服务器端双向认证的流程图。
如图3所示,根据本发明的实施例的电视机与服务器端双向认证的流程如下:
步骤302:用户通过电视端访问某个网络,向该网络的服务器发送认证请求。
步骤304:网络服务器收到请求后,用随机数发生器生成一串随机数然后连同网站服务器的公开密钥一起发送给电视端,该服务器端公开密钥发送给电视机为了便于以后服务器请求电视机的认证。
步骤306:电视端接收到随机数和公开密钥后,先从存储器中读取电视端的公开密钥、电视端标识以及私有密钥的密文,并用对称密钥解密得到私有密钥的明文(如果后续电视端需要验证服务器的话,需要电视端调用随机数生成模块生成一定长度的随机数)。电视端调用算法把服务器发来的随机数进行计算得到随机数的摘要值,然后用解密得到的私有密钥对该摘要值进行加密(即用电视端私有密钥对该摘要值进行加密),最后将加密数据、电视端公开密钥以及电视机标识一起发送给服务器端。
步骤308:服务器端接收成功后,先根据接收到的电视机标识从数据库中找出对应的公开密钥,与接收到的电视端公开密钥进行对比。如果不相同,可以认为该信息为假冒信息,拒绝为其提供相应服务,如果公开密钥比对相同,则表明该信息的确是该标识的电视端发送来的,可以进行解密工作,即用电视端的公开密钥对加密值进行解密,得到之前服务器端发送的随机数的摘要值。最后服务器端计算自己产生的随机数的摘要值,如果自己计算出的摘要值与解密出的摘要值相等,则表明一定是该标识的电视端发送的认证请求,认证成功,服务器可以为该标识的电视端提供相应网络服务。这是因为其余攻击者不知道该标识电视端的私有密钥,无法对服务器发送的随机数进行加密,如果随便找一个私有密钥值进行加密,则服务器在用正确的公开密钥进行解密时,得到的随机数的摘要值肯定是错误的,即攻击者因为不知道该标识的电视端私有密钥,因此无法假冒其加密信息。至此,服务器对电视端的认证已经完成。
步骤310:在验证成功后,服务器对电视机提供网络服务,电视机开始享用网络服务器。
某些应用可能需要电视端对服务器进行认证,比如该网站可能涉及到付款信息,电视端需要确认该网站是否为合法网站,服务器端对接收到的电视端的随机数进行计算得到随机数的摘要值,然后用服务器的私有密钥对摘要值进行加密,并将对电视端的认证结果一起发送给电视端。
电视端进行的验证动作与服务器端的验证动作相同,即先调用服务器端的公开密钥对加密信息进行解密,得到之前发送给服务器的随机数的摘要值,然后对自己产生的随机数进行计算,得到一个摘要值,比较解密出的摘要值与自己生成的摘要值是否一样,如果相同,则表明服务器端是合法的,电视端可以安全的访问该服务器,电视端和服务器端可以进行数据交互。
图4示出了根据本发明的一个实施例的服务器的框图。
如图4所示,根据本发明的实施例的服务器400包括:发送单元402,用于在接收到来自电视机的认证请求时,向所述电视机发送随机数;接收单元404,用于接收来自所述电视机的第一加密数据和电视机标识;解密单元406,使用预存的且与所述电视机标识对应的电视机端公开密钥,对所述第一加密数据进行解密,其中,所述第一加密数据是所述电视机使用电视端私有密钥对所述随机数进行加密生成的数据,所述电视机端公开密钥和所述电视机端私有密钥是一对匹配密钥;认证单元408,用于判断解密出的随机数与所述服务器反馈至所述电视机的随机数是否相同,若判断结果是相同,则通过所述发送单元402向所述电视机发送认证成功结果。
在上述实施例中,采用非对称加密算法参与认证过程,非对称加密算法需要两个密钥:公开密钥和私有密钥。公开密钥与私有密钥是一对密钥,如果用公开密钥对数据进行加密,只有用对应的私有密钥才能解密;如果用私有密钥对数据进行加密,那么只有用对应的公开密钥才能解密。
服务器预先保存其服务范围内的电视机标识以及与每一电视机标识对应的公开密钥。在电视机请求服务器的认证时,服务器会向电视机发送随机生成的随机数如果电视机使用电视机端私有密钥对服务器发送给该电视机的随机数进行加密,则服务器将使用与电视端私有密钥对应的电视机端公开密钥对第一加密数据进行解密,若解密出的随机数与之前服务器向电视机发送的随机数相同,则说明该电视机被认证通过。这样,通过私有密钥和公开密钥进行认证,不需借助外部设备,也无需增加可信计算模块,因此认证过程简单,也没有增加硬件成本,并且由于私有密钥在认证过程中没有被向外传输(一直加密保存在电视机中的存储介质中),传输的仅仅是公开密钥,因此外界很难获取该私有密钥,因此认证过程可以经受得住重放攻击,除此之外,因为每次认证都有随机数参与,即使被攻击者截取到某次认证的数据流,也无法应用到下次的认证过程,因为每次生成的随机数是不相同的,从而保证了电视机与服务器之间的认证数据安全。在上述技术方案中,优选的,所述接收单元404还接收来自所述电视机的电视机端公开密钥;所述认证单元408包括:判断单元4082,用于判断接收的电视机端公开密钥与预存的电视机端公开密钥是否相同,若相同,则确定所述电视机在所述服务器的服务范围内。
在服务器接收到来自电视机的电视机端公开密钥后,根据预存的电视机标识(ID)对应的公开密钥与接收的公开密钥进行比对,如果相同,则表明该加密数据的确是与该ID相同的电视机发送过来的,可以进行后续的认证过程,否则认为是假冒信息,就需要进行后续认证过程,从而避免多余的后续处理过程,减轻服务器的认证负担。
在上述技术方案中,优选的,还包括:摘要值生成单元410,用于在所述电视机发送的第一加密数据为根据所述随机数生成的摘要值时,根据反馈至所述电视机的随机数生成摘要值;所述认证单元408还用于判断所述服务器解密出的摘要值与所述摘要值生成单元410生成的摘要值是否相同,若判断结果是相同,则向所述电视机发送认证成功结果。
所述电视机在接收所述服务器发送的随机数后,计算生成摘要值并用电视机端私有密钥对摘要值进行加密生成第一加密数据。实际应用中,可能某些应用需要加密(签名)的数据量较大,可以对这些数据先计算摘要值,然后再进行后续处理,提高认证效率。
在上述技术方案中,优选的,所述发送单元402还用于在接收到来自电视机的认证请求时,向所述电视机发送所述服务器的服务器端公开密钥。
在接收到电视机的认证请求时,将该服务器端公开密钥发送至电视机,以便在服务器向电视机发送认证请求时解密使用。
在上述任一技术方案中,优选的,还可以包括:加密单元412,使用与所述电视机标识对应的电视机端公开密钥对所述随机数和所述服务器端公开密钥进行加密,并将加密后的数据发送至所述电视机。
为了进一步加强数据的安全性,在服务器将随机数与服务器端公开密钥发给电视机时,用电视机端公开密钥对这些数据进行加密,防止恶意终端获取这些数据,从而减小恶意终端根据这些数据得到电视机端私有密钥的可能性。
在上述技术方案中,优选的,所述发送单元402还用于向所述电视机发送认证请求,以及将加密单元412生成的第二加密数据发送至所述电视机;所述接收单元404还用于接收来自所述电视机的随机数;所述加密单元412还用于使用服务器端私有密钥对来自所述电视机的随机数进行加密,得到所述第二加密数据。
在本实施例中,还可以实现双向认证,即除了服务器对电视机进行认证之外,还可以实现电视机对服务器进行认证,电视机对服务器的认证过程与服务器对电视机的认证过程相同,即在服务器向电视机发送认证请求后,接收来自电视机的随机数,使用服务器端私有密钥对来自电视机的随机数进行加密,得到第二加密数据,将第二加密数据发送至所述电视机,等待所述电视机的认证结果,完成所述电视机对所述服务器的认证过程。同样的,由于服务器端私有密钥保存在服务器中,没有向外传输,故该服务器端私有密钥很难被其他终端窃取。
图5示出了根据本发明的一个实施例的电视机的框图。
如图5所示,根据本发明的实施例的电视机500包括:发送单元502,向服务器发送认证请求,以及将加密单元506生成的第一加密数据和电视机标识发送至所述服务器;接收单元504,接收来自所述服务器的随机数;加密单元506,使用电视机端私有密钥对来自所述服务器的随机数进行加密,得到第一加密数据。
该认证方法是电视机侧的认证方法,与上面提出的服务器侧的认证方法相对应,在电视机向服务器请求认证之后,会接收到来自服务器的随机数,在电视机中预先保存的生成的电视机端私有密钥,该电视机端私有密钥与服务器中的电视机端公开密钥是根据非对称算法计算出的一对匹配密钥。公开密钥可预先保存在服务器中,而私有密钥则保存在电视机中,不向外传输,因此可防止该私有密钥被窃取,虽然公开密钥被向外传输,但是即使其他人获取了该公开密钥,也不能够获取与该公开密钥相对应的私有密钥,从而不能利用该私有密钥来生成认证加密数据,从而防止服务器对其他恶意终端进行授权,提高了认证过程的数据安全性。在上述技术方案中,优选的,所述发送单元502在向所述服务器发送认证请求时,还向所述服务器发送电视机端公开密钥,其中,所述电视机端公开密钥与所述电视机端私有密钥是一对匹配密钥。
电视机向服务器发送电视机端公开密钥是为了服务器便于进一步确定发送该信息的电视机属于服务器的服务范围内的电视机,进一步提高安全性能。
在上述技术方案中,优选的,还可以包括:摘要值生成单元508,在接收到来自所述服务器的随机数时,根据所述随机数生成摘要值;所述加密单元506还用于使用所述电视机端私有密钥对所述摘要值进行加密,并通过所述发送单元502将加密后的数据发送至所述服务器进行验证。
在上述任一技术方案中,优选的,所述加密单元506还用于预先对所述电视机端私有密钥进行加密存储;所述电视机还包括:第一解密单元510,用于在接收到来自所述服务器的随机数时,对所述电视机端私有密钥进行解密,获取所述电视机端私有密钥的明文,以使用所述电视机端私有密钥对所述摘要值进行加密。
为了进一步增强对电视端私有密钥的保护,可采用对称算法等加密算法对该服务器端私有密钥进行加密,并只有在接收到所述电视机的随机数后,对所述电视端的私有密钥进行解密,获取所述电视端的私有密钥,对接收到的随机数加密后,私有密钥仍需加密保存,以确保认证系统的安全性。
在上述任一技术方案中,优选的,还可以包括:第二解密单元512,在所述随机数被加密时,使用所述电视机端私有密钥对所述随机数进行解密,以得到所述随机数的明文。为了防止服务器发送给电视机的随机数以及服务器端公开密钥被获取,因此采用电视机端公开密钥对这些数据进行了加密,电视机在接收到该加密数据之后,利用自己的私有密钥进行解密,这样其他终端(由于其他终端不知道电视机端私有密钥)即使获取了加密数据也不能得到随机数以及服务器端公开密钥。
为了实现双向认证,同样的,电视机中实际上也包含认证单元,来验证服务器发送的随机数是否正确,其认证过程与服务器端的认证过程相同,在此不再赘述。
需说明的是,在每台电视机出厂时,由电视机的密钥生成模块生成一对非对称算法的公钥私钥对,然后用随机数随机生成对称算法的密钥,最后用相应的对称算法把非对称算法的私钥加密得到密文,与相应的公钥以及每台电视端的ID(Identity,身份标识号码)一块存储到相应的存储介质中(公钥与ID可以明文存储,不必加密),为了提高安全性,私钥的密文以及对称算法的密钥都不允许被读取到芯片外部,与可信计算方案中可信根要发送到服务器端的方案相比,安全性更高。因为每台电视机随机数发生器生成的对称密钥都不一样,所以即使某台计算机的密钥信息被窃取,也不会影响其他电视机的安全性。大大提高了整个认证系统的安全性。
图6示出了根据本发明的又一实施例的电视机端的模块框图。
如图6所示,根据本发明的又一实施例的电视机600包括:密钥对生成模块602,用于在电视机出厂时,生成公开密钥和私有密钥,其中私有密钥需要用对称算法加密存储,公开密钥不用做任何处理直接明文存储到存储介质中即可。非对称算法模块604,用于与服务器端认证时加密用,如果需要对服务器端进行认证,则该模块还负责解密功能。对称算法模块606(可集成在图5中的加密单元506中),用于对私有密钥的保护,即该模块对私有密钥加密后把密文存储到存储介质中。hash(散列)算法模块608(可集成在图5中的加密单元506中),用于对认证过程中的随机数进行hash计算。存储介质608,用来存放电视端标识,公开密钥与私有密钥,一般电视中都有这样的存储介质,其中私有密钥为了保险起见一定要加密保存。随机数模块612,产生随机数,在每次认证的过程中都需要随机数进行参与,这样才能避免重放攻击。
图7示出了根据本发明的再一实施例的服务器端的模块框图。
如图7所示,根据本发明的又一实施例的服务器700包括:密钥对生成模块702,用于生成公开密钥和私有密钥,其中私有密钥需要用对称算法加密存储,公开密钥不用做任何处理直接明文存储到存储介质中即可。非对称算法模块704(对应于图4中的解密单元406和加密单元412),用于验证服务器端的加密信息是否正确,如果电视端需要对服务器端进行认证,该模块还需要为服务器生成服务器的加密信息。数据库模块706(对应于图4中的认证单元408),在接收到电视端认证请求后,需要服务器通过数据库模块来验证发送过来的电视端标识是否包含在数据库中,如果电视机端标识并未包含在数据库中,则认证失败,否则取出数据库中对应于该电视端标识的公开密钥进行后续的加密或解密动作。。hash算法模块708,用于对认证过程中的随机数进行hash计算,如果要加密(签名)的数据比较大,可以先用该模块算得该数据的摘要值。授权模块710(对应于图4中的认证单元408),功能是对电视端认证成功后对电视端授权。随机数模块712,产生随机数,在每次认证的过程中都需要随机数进行参与,这样才能避免重放攻击。
以上结合附图详细说明了根据本发明的技术方案,根据本发明的技术方案,可实现服务器与电视机的双向认证,不需借助外部设备,认证过程简单且有随机数参与,即使被攻击者截取到某次认证的数据流,也无法应用到后续的认证过程,从而提高了认证系统的安全性。其次,不需要增加专门的硬件模块,现在很多多媒体芯片的硬件都已经包含很多常用的密码算法,且linux内核支持很多常用算法,并且这些密码算法都是可以用软件来实现的,如果要提高认证速度,也可以外接一个USB-KEY等硬件算法模块以加快速度。服务器端的压力比较小,即使服务器端遭受攻击,只要服务器端的私钥不被破坏,就不会对整个系统造成影响。因为有非对称算法的参与,在电视端与服务器端认证结束后,如果在后续的数据交互中有大量的数据需要加密,则通过非对称算法可以协商会话密钥,即每次通讯的会话密钥都不相同,这也会大大提高整个系统的安全性。
以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。