具体实施方式
下面参照附图详细描述本发明的实施例。
1.安全处理系统1的结构
图1显示了本发明的实施例所涉及的安全处理系统的整体结构。在图中,总体上,安全处理系统1由认证机构(certificate authority)设备100、ROM写入器200、便携式终端300以及存储卡400构成。
安全处理系统1保护在便携式终端300中执行的程序免受未授权地分析和更改。将被保护的程序是在认证机构设备100中生成的,并由ROM写入器200将其写入ROM。然后将包含程序的ROM安装在便携式终端300中。
在本实施例中,作为一个例子,将被保护的程序是用于解密记录在存储卡400上的加密的音乐数据的加密音乐数据解密程序。
1.1.认证机构设备100
认证机构设备100生成第二安全处理程序,该第二安全处理程序包含图7所示的区域分配程序511、中断禁止程序512、调用程序513、密钥接收程序514、执行标记515、中断处理程序518、解密程序516以及安全程序。安全程序包含需要被保护的加密音乐数据解密程序524。通过ROM写入器200将生成的第二安全处理程序写入ROM,并将其安装在便携式终端300中。后面详细描述每一个程序。
图2显示了认证机构设备100的结构。在图中,证书机构设备100包括编译器101、程序加密单元102、密钥加密单元103、散列值计算单元104、数据嵌入单元105、存储单元106、以及传输单元107。
实际上由包括微处理器、ROM、RAM、硬盘单元、显示单元以及键盘的计算机系统来实现证书机构设备100。通过执行存储在RAM或硬盘单元中的计算机程序的微处理器来实现认证机构设备100的功能。
(1)编译器101
编译器101接收保护程序、调用程序513、解密程序516以及安全程序的源代码的输入。保护程序由区域分配程序511、中断禁止程序512、密钥接收程序514、执行标记515以及中断处理程序518构成。调用程序513用于发送检测第二安全处理程序是否已被篡改所需的数据。调用程序513包含便携式终端300的存储器上的TRS区域程序的开始地址。TRS区域程序对应于第二安全处理程序的解密程序516和加密的程序517。通过加密安全程序生成加密的程序517。
当接收到调用程序513、解密程序516、安全程序以及保护程序的源代码后,编译器101编译这些程序中的每一个。
图3是显示由编译器101编译程序的操作的流程图。
编译器101执行词法分析(S621)和语法分析(S622)。最后,编译器101生成表示可由计算机执行的程序的二进制数据(S623)。
编译器101将调用程序513的二进制数据和保护程序的二进制数据输出到数据嵌入单元105。编译器101还将解密程序516的二进制数据和安全程序的二进制数据输出到程序加密单元102。
(2)程序加密单元102
程序加密单元102接收解密程序516的二进制数据和安全程序的二进制数据。程序加密单元102还接收程序密钥。程序加密单元102根据加密算法E1使用程序密钥加密安全程序,以生成加密的程序517。作为一个例子,加密算法E1是AES(Advanced EncryptionStandard,高级加密标准)。在所述领域,AES是公知的,因此在此省略对其的说明。除AES以外的其它算法也可以被用作加密算法E1。
程序加密单元102将解密程序516和加密的程序517作为TRS区域程序输出到数据嵌入单元105。
程序加密单元102还将TRS区域程序输出至散列值计算单元104。
(3)密钥加密单元103
密钥加密单元103接收程序密钥和主密钥。
密钥加密单元103根据加密算法E1使用主密钥加密程序密钥,以生成加密的密钥。密钥加密单元103将加密的密钥输出到数据嵌入单元105。
(4)散列值计算单元104
散列值计算单元104计算第二安全处理程序的至少一部分的散列值。
在该实施例中,散列值计算单元104接收TRS区域程序和密钥,并根据散列函数使用密钥计算TRS区域程序的散列值。
例如,用于HMAC(Keyed-Hashing for Message Authentication,用于消息认证的密钥散列法)的算法可以被用于计算散列值。
设H为散列函数,K为密钥,文本为将被散列的数据,opad是由重复64次的字节值0x36构成的字符串,并且ipad是由重复64次的字节值0x5C构成的字符串。因此,用于计算散列值的算法可以被表示为H(KXOR opad,H(KXOR ipad,text))。
散列值计算单元104还计算TRS区域程序的二进制大小(binarysize)。
散列值计算单元104将散列值和二进制大小输出到数据嵌入单元105。
(5)数据嵌入单元105
数据嵌入单元105从编译器101接收调用程序513的二进制数据和保护程序的二进制数据,并从散列值计算单元104接收散列值和二进制大小。数据嵌入单元105还从密钥加密单元103接收加密的密钥,并从程序加密单元102接收TRS区域程序。
数据嵌入单元105将散列值作为篡改检测值嵌入调用程序513。数据嵌入单元105还将二进制大小和加密的密钥嵌入调用程序513。数据嵌入单元105将生成的调用程序513包含到保护程序中,并将保护程序和TRS区域程序进行组合以形成第二安全处理程序。数据嵌入单元105将第二安全处理程序写入存储单元106。
(6)存储单元106
存储单元106存储由数据嵌入单元105写入的第二安全处理程序。
(7)传输单元107
传输单元107将存储在存储单元106中的第二安全处理程序输出到ROM写入器200。
1.2.ROM写入器200
ROM写入器200与认证机构设备100相连。ROM写入器200从认证机构设备100接收第二安全处理程序,并将第二安全处理程序写入ROM。然后,将由ROM写入器200写入第二安全处理程序的ROM安装在便携式终端300中。
13.存储卡400
图4显示了存储卡400的结构。在图中,存储卡400包括控制单元401、输入/输出单元402、认证(authentication)单元403、信息存储单元404。
(1)输入/输出单元402
当存储卡400连接到便携式终端300上时,输入/输出单元402在控制单元401和便携式终端300之间执行数据的传输。
(2)信息存储单元404
信息存储单元404包括数据区域410和安全区域420。
数据区域410存储加密的音乐数据411。通过根据加密算法E1使用标题密钥421加密MP3音乐数据从而生成加密的音乐数据411。
安全区域420存储标题密钥421。只有当与认证单元403相互认证成功后,便携式终端300才能访问安全区域420。
这里,可以使用只有存储卡400才具有的信息来加密存储在信息存储单元404中的数据。
(3)认证单元403
认证单元403基于CPRM(Content Protection for RecordableMedia,可记录介质内容保护)与便携式终端300执行相互认证。如果相互认证成功,则认证单元403与便携式终端300建立共享密钥,并将该共享密钥输出到控制单元401。在本领域中,CPRM是公知的,因此,在此不再对其进行说明。除CPRM以外的其它方法也可以被用于相互认证。
(4)控制单元401
控制单元401经由输入/输出单元402与便携式终端300执行数据的传输。只有当便携式设备300与认证单元403的相互认证成功时,控制单元401才允许便携式终端300访问存储在安全区域420中的数据。当输出存储在安全区域420中的数据时,控制单元401使用从认证单元403接收的共享密钥加密数据。
同时,控制单元401允许便携式终端300访问存储在数据区域410中的数据,而无需相互认证。
1.4.便携式终端300
图5显示了便携式终端300的结构。在图中,便携式终端300包括CPU 301、调试器接口302、调试器禁止电路303、中断控制器304、存储器305、存储卡接口306、输入单元307、显示单元308、扬声器309、解码器310、麦克风312、转换单元313、无线电控制单元314、无线电单元315以及天线316。便携式终端303的这些部件与总线317相连。而且,通过中断线318,中断控制器304被连接到CPU 301。
下面描述便携式终端300的这些部件中的每一个。
(1)调试器禁止电路303和调试器接口302
在CPU 301和调试器接口302之间设置调试器禁止电路303,从而将CPU 301与调试器接口302连接/断开。
从CPU 301接收到指示“允许”的调试器控制信号后,调试器禁止电路303将CPU 301连接到调试器接口302。从CPU 301接收到指示“禁止”的调试器控制信号后,调试器禁止电路303将CPU 301从调试器接口302断开。
当CPU 301和调试器接口302彼此连接时,允许连接到调试器接口302的外部调试器设备工作。如果将CPU 301和调试器接口302彼此断开,则禁止调试器设备工作。例如,可以通过开关来实现调试器禁止电路303。这里,可以通过开关电路在CPU 301和调试器接口302之间进行物理地连接/断开,或者进行电气的连接/断开。
调试器接口302用于连接便携式终端300和调试器设备。
(2)存储器305
如图6所示,存储器305存储第一安全处理程序501、第二安全处理程序502、向量表503、音乐播放程序504、应用程序505。
(A)第二安全处理程序502
通过认证机构设备100生成第二安全处理程序502,并通过ROM写入器200将其存储在ROM中。
图7显示了第二安全处理程序502的数据结构。下面说明构成第二安全处理程序502的每一个程序。
(区域分配程序511)
区域分配程序511在存储器305中分配存储空间,以便动态地分配当执行认证程序523和加密音乐数据解密程序524时使用的存储区域。
(中断禁止程序512)
中断禁止程序512禁止(即,屏蔽)中断。
(调用程序513)
调用程序513调用第一安全处理程序501。
如图8所示,调用程序513包括篡改检测数据,该篡改检测数据包括篡改检测值541、TRS区域开始地址542、二进制大小543、以及加密的密钥544。当调用第一安全处理程序501时,调用程序513还将由认证机构设备100的数据嵌入单元105嵌入的篡改检测数据传递给第一安全处理程序501。
这里,篡改检测值541是由认证机构设备100的散列值计算单元104为第二安全处理程序502中的TRS区域程序计算的散列值。
TRS区域开始地址542是存储器305中的接受散列值计算的TRS区域程序的开始地址。
二进制大小543是TRS区域程序的二进制大小。
加密的密钥544是由认证机构设备100的密钥加密单元103使用主密钥加密的程序密钥。
(密钥接收程序514)
密钥接收程序514从第一安全处理程序501接收程序密钥,并将该程序密钥传递给解密程序516。
(执行标记515)
执行标记515显示是否正在执行安全程序。在解密程序516解密加密的程序517之前,执行标记515被设置为“ON”,其指示正在执行安全程序。当完成执行通过解密加密的程序517而获得的安全程序时,执行标记515被设置为“OFF”。
(解密程序516)
解密程序516从密钥接收程序514接收程序密钥,并根据解密算法D1使用程序密钥解密加密的程序517,以获得安全程序。这里,解密算法D1是加密算法E1的逆。
例如,在国际专利申请公开No.WO 04/013744(2004年2月12日公开)中公开的技术可以被用于解密加密的程序517。根据该技术,加密的程序517被加载到存储器并且被以小部分为单位进行解密。这可以防止全部安全程序都存在于存储器中。因此,即使当未授权的用户访问存储器中的数据时,也不能获得全部安全程序。
(加密的程序517)
通过加密安全程序生成加密的程序517。如图7所示,安全程序包括中断允许程序521、区域初始化程序522、认证程序523、加密音乐数据解密程序524、区域密钥525、区域加密程序526、区域解密程序527、区域释放程序528。在加密的程序517中,中断允许程序521、区域初始化程序522、认证程序523、区域密钥525、区域加密程序526、区域解密程序527、区域释放程序528保护加密音乐数据解密程序524免受其它程序的分析或更改。
(a)中断允许程序521
中断允许程序521释放通过中断禁止程序512产生的中断禁止。
(b)区域初始化程序
区域初始化程序522对由区域分配程序511分配的存储空间进行初始化,以在存储空间中分配将接受加密的存储区域。
分配存储区域以将认证程序523和加密音乐数据解密程序524执行期间使用的数据写入。
(c)认证程序523
认证程序523包含认证密钥531。
认证程序523执行单向认证以判断第一安全处理程序501是否有效。
(d)加密音乐数据解密程序524
加密音乐数据解密程序524根据解密算法D1,使用标题密钥421解密存储在存储卡400上的加密的音乐数据411,以获得音乐数据。
(e)区域密钥525
由区域加密程序526使用区域密钥525以加密由区域初始化程序522分配的存储区域中的数据,并由区域解密程序527使用以解密存储区域中的加密数据。
(f)区域加密程序526
区域加密程序526根据加密算法E2使用区域密钥525来加密存储区域中的数据。这里,加密算法E2使得能够进行比加密算法E1更快速的处理。作为一个例子,加密算法E2是XOR(异或)运算。或者,除XOR运算以外的其它算法也可以被用作加密算法E2,这是基于所需的安全级别和CPU 301的处理能力来确定的。
在第二安全处理程序502调用第一安全安全处理程序501以将控制传递给第一安全处理程序501之前,区域加密程序526加密存储区域中的数据。
(g)区域解密程序527
当控制从第一安全处理程序501返回到第二安全处理程序502时,区域解密程序527根据解密算法D2使用区域密钥525来解密存储区域中的加密数据,以获得原始的明文数据。
(h)区域释放程序528
区域释放程序528释放由区域初始化程序522分配的存储区域,并调用第一安全处理程序501的退出函数以结束音乐数据播放过程。
(中断处理程序518)
当在第二安全处理程序502执行期间出现中断时,执行中断处理程序518。中断处理程序518包含加密/解密密钥(未说明)。
图9是显示中断处理程序518的执行过程的流程图。虽然中断处理程序518实际上是计算机程序,但是图9以便于说明的流程图说明了中断处理程序518的执行过程。
中断处理程序518读取执行标记515(S611),判断执行标记515是“ON”还是“OFF”(S612)。如果执行标记是“ON”(S612:ON),则中断处理程序518根据加密算法E2使用加密/解密密钥来加密存储区域中的数据(S613)。之后,中断处理程序518处理中断。如果执行标记是“OFF”(S612:OFF),则中断处理程序518在不加密存储区域中的数据的情况下处理中断。
在处理中断之后,如果执行标记515是“ON”(S614:ON),则在返回原始处理之前,中断处理程序518根据解密算法D2使用加密/解密密钥来解密存储区域中的加密数据(S615)。如果执行标记515是“OFF”(S614:OFF),则中断处理程序518在不解密存储区域中的数据的情况下返回到原始处理。
(B)第一安全处理程序501
图10显示了第一安全处理程序501的数据结构。在图中,第一安全处理程序501包括断开程序551、篡改检测程序552、密钥解密程序553、密钥发送程序554、认证程序555、数据读取程序556以及连接程序557。在CPU 301的安全处理模式中执行第一安全处理程序501。后面详细说明安全处理模式。
(断开程序551)
当第一安全处理程序501起动时,断开程序551向调试器禁止电路303输出指示“禁止”的调试器控制信号。
(篡改检测程序552)
篡改检测程序552包含密钥562、并检测第二安全处理程序502是否已被篡改。为此,篡改检测程序552从第二安全处理程序502的调用程序513获取包含篡改检测值541、TRS区域开始地址542、二进制大小543以及加密的密钥544的篡改检测数据。
篡改检测程序552从由TRS区域开始地址指定的存储器305中的位置读取对应于二进制大小543的数据量,作为TRS区域程序。篡改检测程序552根据散列函数使用密钥562计算TRS区域程序的散列值。篡改检测程序552将计算的散列值与篡改检测值541进行比较。如果两个值匹配,则篡改检测程序552判断第二安全处理程序502还未被篡改。如果两个值不匹配,则篡改检测程序552判断第二安全处理程序502已被篡改,并且停止后续处理。
(密钥解密程序553)
密钥解密程序553包含主密钥563。如果篡改检测程序552判断第二安全处理程序502还未被篡改,则密钥解密程序553根据解密算法D1使用主密钥563解密加密的密钥544,以获得程序密钥。密钥解密程序553将程序密钥传递给密钥发送程序554。
(密钥发送程序554)
密钥发送程序554从密钥解密程序553接收程序密钥,并将程序密钥发送到第二安全处理程序502。
(认证程序555)
认证程序555包含认证密钥565,并且接受由第二安全处理程序502使用认证密钥565进行的认证。如果认证成功,则认证程序555与第二安全处理程序502建立共享会话密钥。使用该会话密钥来加密接下来在第一安全处理程序501和第二安全处理程序502之间传输的数据。
(数据读取程序556)
数据读取程序556基于CPRM与存储卡400执行相互认证。如果相互认证是成功的,则数据读取程序556访问存储卡400的安全区域420并获取标题密钥421。
(连接程序557)
连接程序557向调试器禁止电路303输出指示“允许”的调试器控制信号。
(c)向量表503
图11显示了向量表503的数据结构。如图所示,向量表503显示了当出现软件中断、终止以及硬件中断时将被执行的指令的地址。
(D)音乐播放程序504
音乐播放程序504播放通过第二安全处理程序502解密的音乐数据。音乐播放程序504向解码器310中的缓冲器311输出音乐数据。
(E)应用程序505
应用程序505接收用户操作的输入。如果用户操作将播放存储卡400中的音乐数据,则应用程序505起动第二安全处理程序502。
(3)CPU 301
CPU 301根据存储在存储器305中的程序进行操作。通过从与调试器接口302连接的调试器设备发出的指令来控制CPU 301的操作。
图12是显示CPU 301的操作的流程图。CPU 301提取存储在存储器305中的程序的指令(S601),解码该指令(S602),然后执行该指令(S603)。然后CPU 301增加程序计数器(S604)以提取下一条指令。
这里,CPU 301工作在安全处理模式或常规处理模式。在常规处理模式中,CPU 301执行常规处理。在安全处理模式中,CPU 301以高级别的安全性执行处理,从而使得不能从外部访问存储器305中的数据。
CPU 301在安全处理模式中执行第一安全处理程序501,在常规处理模式中执行第二安全处理程序502。
当出现中断时,中断控制器304通过中断线318输出中断信号。如果由中断禁止程序512禁止了中断,则CPU 301拒绝中断信号。如果未禁止中断,则CPU 301接受中断信号,参考图11所示的向量表503,并读取对应于中断信号的地址。CPU 301根据位于读取地址的中断处理程序处理中断。处理完中断之后,CPU 301返回原始处理。
当在执行第二安全处理程序502期间接收到中断信号时,CPU301参考向量表503并执行图9所示的中断处理程序518。
(4)输入单元307
输入单元307接收用户操作的输入。
当接收到输入时,输入单元307向中断控制器304通知中断。
(5)中断控制器304
当输入单元307或无线电控制单元314向中断控制器304通知例如邮件接收、调用接收或用户操作这样的中断时,中断控制器304经由中断线318向CPU 301输出中断信号。
(6)扬声器309和解码器310
解码器310包括缓冲器311。缓冲器311对从CPU 301接收的音乐数据进行缓冲。扬声器309根据缓冲器311中的音乐数据生成音频信号,并输出音频信号。
(7)存储卡接口306
存储卡接口306用于连接便携式终端300和存储卡400。在CPU301的控制下,存储卡接口306将数据输出到存储卡400,并从存储卡400接收数据并将其输出到CPU 301。
(8)无线电控制单元314,无线电单元315,天线316
天线316、无线电单元315、无线电控制单元314与一个设备发送/接收声音或信息,便携式终端300通过无线电基站和便携式终端网络连接到该设备。
当经由天线316和无线电单元315接收到邮件或调用时,无线电控制单元314向中断控制器304通知中断。
(9)麦克风312和转换单元313
转换单元313将从麦克风312接收到的声音转换为电子信号,并将其输出到无线电控制单元314。
2.安全处理系统1的操作
2.1.认证机构设备100的操作
编译器101接收调用程序513的源代码和保护程序的源代码的输入,并将所述源代码编译为调用程序513的二进制数据和保护程序的二进制数据。编译器101将二进制数据输出到数据嵌入单元105。编译器101还接收解密程序516的源代码和安全程序的源代码的输入,并将所述源代码编译为解密程序516的二进制数据和安全程序的二进制数据。编译器101将所述二进制数据输出到程序加密单元102。
程序加密单元102接收解密程序516的二进制数据和安全程序的二进制数据。程序加密单元102还接收程序密钥。程序加密单元102使用所述程序密钥加密安全程序,以生成加密的程序517。程序加密单元102将解密程序516和加密的程序517输出到数据嵌入单元105和散列值计算单元104,作为TRS区域程序。
散列值计算单元104接收TRS区域程序。散列值计算单元104还接收密钥。散列值计算单元104根据散列函数使用密钥计算TRS区域程序的散列值。散列值计算单元104还计算TRS区域程序的二进制大小。散列值计算单元104将散列值和二进制大小输出到数据嵌入单元105。
密钥加密单元103接收程序密钥和主密钥,使用主密钥加密程序密钥以生成加密的密钥。密钥加密单元103将加密的密钥输出到数据嵌入单元105。
数据嵌入单元105从编译器101接收调用程序513的二进制数据,并从散列值计算单元104接收散列值和二进制大小,并从密钥加密单元103接收加密的密钥。数据嵌入单元105将散列值嵌入调用程序513作为篡改检测值541。数据嵌入单元105还将二进制大小和加密的密钥嵌入调用程序513作为二进制大小543和加密的密钥544。数据嵌入单元105还从编译器101接收保护程序的二进制数据,并从程序加密单元102接收TRS区域程序。数据嵌入单元105将调用程序513包含进保护程序,并将保护程序和TRS区域程序进行组合以形成第二安全处理程序502。数据嵌入单元105将第二安全处理程序502写入存储单元106。
传输单元107从存储单元106读取第二安全处理程序502,并将第二安全处理程序502输出到ROM写入器200。
2.2.便携式终端300的音乐数据播放操作
(1)播放
下面参考图13至17说明由便携式终端300通过执行程序来播放记录在存储卡400上的音乐数据的操作。
当经由输入单元307接收到播放存储卡400上的音乐数据的用户操作的输入时,应用程序505起动第二安全处理程序502(S701)。
在第二安全处理程序502中,区域分配程序511在存储器305中分配虚拟的存储空间,用于在安全程序的执行期间,动态地分配存储区域(S702)。并且,中断禁止程序512禁止中断(S703)。因此,禁止了使用中断的未授权的程序分析和更改。中断的禁止一直有效直到中断允许。接着,调用程序513调用第一安全处理程序501,并将由篡改检测值541、TRS区域开始地址542、二进制大小543以及加密的密钥544构成的篡改检测数据传递给第一安全处理程序501(S704)。
第一安全处理程序501从第二安全处理程序502接收篡改检测数据(S705)。在第一安全处理程序501中,断开程序551将指示“禁止”的调试器控制信号输出到调试器禁止电路303(S706)。因此,调试器禁止电路303断开调试器设备。因此,禁止使用调试器设备进行未授权的程序分析和更改。
接着,篡改检测程序552执行下列过程。
篡改检测程序552从由TRS区域开始地址542指定的存储器305上的位置读取对应于二进制大小543的数据量,作为TRS区域程序。篡改检测程序552使用密钥562计算TRS区域程序的散列值(S709)。
篡改检测程序552将所计算的散列值与篡改检测值541进行比较(S710)。如果两个值不匹配(S710:否),则篡改检测程序552判断第二安全处理程序502已被篡改,并且停止后续处理。连接程序557将指示“允许”的调试器控制信号输出到调试器禁止电路303(S737),并终止操作。
如果两个值匹配(S710:是),则篡改检测程序552判断第二安全处理程序502未被篡改。因此,密钥解密程序553使用主密钥563解密加密的密钥544,以得到程序密钥(S711)。密钥解密程序553将程序密钥传递给密钥发送程序554。密钥发送程序554将程序密钥传递给第二安全处理程序502(S712)。
在第二安全处理程序502中,密钥接收程序514接收程序密钥(S713)。并且,将执行标记515设置为“ON”(S714)。之后,解密程序516使用程序密钥解密加密的程序517,以得到安全程序(S715)。完成之后,解密程序516删除程序密钥(S716)。
安全程序执行下列过程(S717)。
在安全程序中,中断允许程序521释放在步骤S703执行的中断的禁止(S718)。其后,如果出现中断,则挂起安全程序以处理中断。后面详细说明当出现中断时将被执行的过程。
然后,区域初始化程序522在存储空间中分配存储区域(S719),在该存储区域中将存储由认证程序523和加密音乐数据解密程序524使用的数据。
认证程序523根据认证过程认证第一安全处理程序501(随后描述)(S720)。第一安全处理程序501中的认证程序555经受由认证程序523进行的认证。如果认证失败,则第二安全处理程序502停止后续处理,并且在终止操作之前,第一安全处理程序501中的连接程序557将指示“允许”的调试器控制信号输出到调试器禁止电路303(S737)。
如果认证成功,则第二安全处理程序502与第一安全处理程序501建立共享的会话密钥。使用该会话密钥加密随后在第二安全处理程序502和第一安全处理程序501之间传输的数据。
如果认证成功,则第二安全处理程序502将控制传递给音乐播放程序504。
音乐播放程序504从存储卡400读取加密的音乐数据411(S721)。音乐播放程序504还请求第二安全处理程序502解密加密的音乐数据411(S722)。
当接收到解密加密的音乐数据411的请求时,第二安全处理程序502调用区域加密程序526。区域加密程序526使用区域密钥525加密在步骤S719分配的存储区域中的数据(S723)。之后,第二安全处理程序502请求第一安全处理程序501获取标题密钥421(S724)。
在第一安全处理程序501中,数据读取程序556与存储卡400中的认证单元403执行相互认证(S725)。如果相互认证成功(S726:是),则数据读取程序556访问存储卡400中的安全区域420并获取标题密钥421(S727)。如果相互认证失败,则数据读取程序556不能获取标题密钥421。在这种情况下,连接程序557在终止操作前将指示“允许”的调试器控制信号输出到调试器禁止电路303(S737)。
第一安全处理程序501使用会话密钥加密标题密钥421,以生成加密的标题密钥(S728)。第一安全处理程序501将加密的标题密钥传递给第二安全处理程序502。
在第二安全处理程序502中,区域解密程序527使用区域密钥525解密存储区域中的加密的数据,以恢复原始数据(S729)。认证程序523使用会话密钥解密加密的标题密钥,以获得标题密钥421(S730)。之后,加密音乐数据解密程序524使用标题密钥421解密由音乐播放程序504从存储卡400读取的加密的音乐数据411(S731)。因此,获得音乐数据。加密音乐数据解密程序524将音乐数据传递给音乐播放程序504。
音乐播放程序504播放音乐数据(S732)。
一旦完成音乐数据的播放(S733),则音乐播放程序504将控制传递给第二安全处理程序502。在第二安全处理程序502中,区域释放程序528释放在步骤S719中分配的存储区域(S734),并调用第一安全处理程序501的退出函数(S735)。而且,将执行标记515设置为“OFF”(S736)。
在第一安全处理程序501中,在终止操作前,连接程序557将指示“允许”的调试器控制信号输出到调试器禁止电路303(S737)。
(2)认证
下面参照图18说明在步骤S720中由第二安全处理程序502对第一安全处理程序501进行认证的过程。
第二安全处理程序502生成随机数R0,并将随机数R0传递给第一安全处理程序501(S751)。
第一安全处理程序501接收随机数R0,并使用认证密钥565加密随机数R0以生成认证值R1(S752)。第一安全处理程序501将认证值R1传递给第二安全处理程序502(S753)。
第二安全处理程序502从第一安全处理程序501接收认证值R1。第二安全处理程序502使用认证密钥531加密随机数R0,以生成认证值R2(S754)。第二安全处理程序502将认证值R1与认证值R2进行比较(S755)。如果两个值不匹配(S755:否),则第二安全处理程序502将指示“不匹配”的判断结果传递给第一安全处理程序501(S756),并终止过程。如果两个值匹配(S755:是),则第二安全处理程序502将指示“匹配”的判断结果传递给第一安全处理程序501(S757)。然后,第二安全处理程序502使用单向函数根据随机数R0和认证密钥531生成会话密钥(S759)。
如果所接收的判断结果指示“不匹配”(S758:否),则第一安全处理程序501终止过程。如果所接收的判断结果指示“匹配”(S758:是),则第一安全处理程序501使用单向函数根据随机数R0和认证密钥565生成会话密钥(S760)。
因此,第二安全处理程序502认证第一安全处理程序501,并且如果认证成功,则共享会话密钥。使用该会话密钥加密随后在第一安全处理程序501和第二安全处理程序502之间传输的数据。
(3)中断
下面参照图19说明当在执行第二安全处理程序502期间出现中断时的CPU 301的操作。这里,以邮件接收作为中断的一个例子。
当从中断控制器304接收到中断信号时(S771),CPU 301读取向量表503(S772),并根据向量表503执行中断处理程序518(S773)。
首先,CPU 301读取执行标记515(S774)。如果执行标记515是“ON”(S775:否),则CPU 301使用加密/解密密钥来加密存储区域中的数据(S776)。CPU 301还存储运行环境(context)(S777),并执行邮件接收处理(S778)。如果执行标记515是“OFF”(S775:OFF),则CPU 301在不加密存储区域中的数据的情况下执行步骤S777和S778。
在邮件接收处理之后,如果执行标记515是“ON”(S779:ON),则在返回原始处理之前,CPU 301解密存储区域中的数据(S780)。如果执行标记515是“OFF”(S779:OFF),则CPU 301在不解密存储区域中的数据的情况下返回原始处理。
3.变形
已经通过以上实施例描述了本发明,但是很明显,本发明并不局限于上述实施例。以下给出示例性的变形。
(1)上述实施例描述了保护加密音乐数据解密程序的例子,其中,由便携式终端执行加密音乐数据解密程序,但是本发明并不限于其。
执行待保护的程序的示例性设备包括DVD播放器、DVD记录器、PC以及PDA。
而且,待保护的示例性程序包括当在便携式终端上播放视频内容或游戏时使用的解密程序,以及当在DVD记录器上记录内容时使用的记录程序。因此,本发明可应用于任何需要被保护以防止未授权的分析和更改的程序。
(2)上述实施例描述了散列值被用作篡改检测值的例子,但是唯一属于TRS区域程序的任何值都能被用作篡改检测值。例如,对TRS区域程序的数字签名或通过加密TRS区域程序而生成的数据可以被用作篡改检测值。而且,除实施例中使用的算法以外的算法可以被用于计算散列值。
上述实施例描述了为TRS区域程序生成篡改检测值的例子,但是也可以为至少一部分TRS区域程序生成篡改检测值。或者,可以为至少一部分第二安全处理程序生成篡改检测值。
而且,可以通过为至少一部分TRS区域程序或第二安全处理程序执行匹配计算,或者通过将伪随机数(psuedo-random number)嵌入至少一部分TRS区域程序或第二安全处理程序来执行篡改检测。也就是说,任何能够检测程序是否已被篡改的篡改检测方法都是可用的。
上述实施例描述了在调试器禁止电路断开调试器设备后执行篡改检测的例子。作为另一个例子,可以在由调试器禁止电路断开之前执行篡改检测。在这种情况下,如果未检测到篡改,则调试器禁止电路断开调试器设备以进行后续处理。
(3)上述实施例描述了第二安全处理程序中的调用程序将篡改检测数据传递给第一安全处理程序的例子。作为另一个例子,不同于第二安全处理程序的程序可以将篡改检测数据传递给第一安全处理程序。在这种情况下,第二安全处理程序中的调用程序仅调用第一安全处理程序。同时,在存储器305中存储用于将篡改检测数据发送到第一安全处理程序的发送程序。因此,当被第二安全处理程序调用时,第一安全处理程序请求发送程序发送篡改检测数据。作为响应,发送程序将篡改检测数据发送到第一安全处理程序。
在这种情况下,认证机构设备不在第二安全处理程序的保护程序中包括该发送程序,而是根据第二安全处理程序独立地生成其。
而且,第一安全处理程序可以预先包含第二安全处理程序的篡改检测数据。
(4)上述实施例描述了第二安全处理程序对第一安全处理程序执行单向认证的例子,但是,第二安全处理程序与第一安全处理程序可以执行双向认证。而且,上述实施例描述了挑战应答认证方法的使用,但是,可以等价地使用其它用于认证程序的认证方法。
上述实施例描述了通过使用认证密钥来加密随机数R0,从而生成认证值R1和R2的例子,但是,也可以通过对随机数R0应用单向函数来生成它们。
上述实施例描述了使用单向函数根据随机数R0和认证密钥来生成会话密钥的例子,但是也可以通过加密来生成会话密钥。
(5)上述实施例描述了在将控制从第二安全处理程序传递给第一安全处理程序之前,区域加密程序加密存储区域中的数据的例子。当将控制从第二安全处理程序传递给其它程序时,例如当第二安全处理程序调用外部函数时,区域加密程序也可以加密存储区域中的数据以保护数据。
在这种情况下,当控制返回到第二安全处理程序时,区域解密程序解密存储区域中的加密数据以恢复原始数据。
(6)可以为每个执行应被保护的程序的设备分配唯一的主密钥。在这种情况下,即使未授权的用户窃取了一个设备的主密钥并试图使用该主密钥去攻击其它设备,该未授权的用户也不能正确地操作其它设备。这最小化了由未授权行为导致的破坏。
(7)上述实施例描述了第一安全处理程序和第二安全处理程序都分别包含认证密钥的例子。可选择地,可以基于程序密钥或篡改检测值来计算认证密钥。
而且,认证机构设备可以使用主密钥加密认证密钥。在这种情况下,可以基于认证密钥计算用于解密加密的程序的程序密钥。
当用于认证的密钥和用于解密加密的程序的密钥因此具有依赖关系时,任何密钥都可以被加密。此外,可以使用更多的密钥来进行多级加密,例如,通过使用另一个密钥加密已加密的密钥。
(8)本发明还应用于上述方法。该方法可以通过由计算机执行的计算机程序来实现。这种计算机程序可以作为数字信号来分发。
本发明可以通过其上记录有上述计算机程序或数字信号的计算机可读存储介质来实现,例如软盘、硬盘、CD-ROM、MO、DVD、DVD-ROM、DVD-RAM、BD或半导体存储器。相反地,本发明也可以通过记录在这种存储介质上的计算机程序或数字信号来实现。
也可以通过网络(例如,电子通信网络、有线或无线通信网络、或因特网)来传送实现本发明的计算机程序或数字信号。
也可以通过包含微处理器和存储器的计算机系统来实现本发明。在这种情况下,计算机程序可以被存储在存储器中,微处理器根据该计算机程序运行。
可以通过分发其上记录有计算机程序或数字信号的存储介质,或者通过经由网络传送计算机程序或数字信号,从而将计算机程序或数字信号提供给独立的计算机系统。然后,独立的计算机系统可以执行计算机程序或数字信号以用作本发明。
(8)可以自由地组合上述实施例和变形。
工业适用性
可以将本发明反复地以及连续地用于提供软件(例如计算机程序和电影、音乐的数字内容等等)的软件行业。而且,可以在电子产品等的制造行业中制造并销售本发明。