具体实施方式
本发明的某些实施例及相关的附图将通过下列范例来说明,其中:
图1是一手机的配置示意图。
图1为手机10的图解。该图只显示了描述本发明所需的组件,基于简洁清楚的原因,手机的其它元件(例如天线、键盘、电源、显示装置及外壳)在此被省略了。
于图1,手机10包括有数据处理器12及14(亦即数据处理单元)、一随机存取储存装置(RAM)16(亦即随机存取储存单元)、一快闪存储器控制器18(亦即控制单元)以及一NAND快闪存储器20(亦即包含非挥发性储存装置的集成电路)。图1内的双向箭头显示这些元件用于数据或指令流动的路径。
数据处理器14是一数据处理器,一方面解调来自天线端(未显示)所接收的数字化载频信号,一方面调变预定送至天线端的数据成为数字化载频信号。数据处理器12是一应用处理器,使用来自数据处理器14解调后的信息,传送手机10欲传递的信息至数据处理器14,控制手机10高阶接收及传送功能,并驱动手机10显示屏幕(未显示)及扬声器(未显示)。
快闪存储器控制器18控制数据处理器12及14对NAND快闪存储器20内容的存取。比如说当数据处理器12及14欲存取NAND快闪存储器20同一区块时,快闪存储器控制器18可扮演仲裁的角色。快闪存储器控制器18包含只读存储器(ROM)的两个区块其各包含数据处理器12及14的开机码26及28。
RAM 16可被划分为RAM区块22及24。RAM区块22及24分别只能被数据处理器12及14存取。
快闪存储器控制器18、应用处理器12、数据处理器14及RAM16可被整合至同一片芯片内或称为SoC(system on a chip,单芯片系统)。如此一来元件12至18间未经许可的存取动作出现的困难度便增高了。
稍早有提到,数据处理器12及14只能通过快闪存储器控制器18去存取NAND快闪存储器20。快闪存储器控制器18内包含一HMAC安全信息摘要机制30及AES(Advanced Encryption Standard)加密机制。HMAC及AES的准则分别在联邦信息处理标准(Federal Information Processing,FIPS)的198及197项有详细介绍。
当数据处理器12及14其中之一欲从NAND快闪存储器20撷取信息(可为数据、指令或是以上两者的组合)时,快闪存储器控制器18可利用HMAC安全信息摘要机制30去检查信息的完整性,如果此信息在NAND快闪存储器20是以加密的型式存在的话,可使用AES加密机制32去解密。撷取出来的信息通过快闪存储器控制器18以直接存储器存取(direct memory access,DMA)的方式被存入提出存取要求的数据处理器相对应的RAM区块,以确保该信息安全无虑的传送至该数据处理器。
当数据处理器12及14其中之一欲在NAND快闪存储器20写入信息(可为数据、指令或是以上两者的组合)时,快闪存储器控制器18可利用HMAC安全信息摘要机制30去产生该信息的数字签章,如果需要的话,使用AES加密机制32去加密该信息。HMAC安全信息摘要机制30及AES加密机制32所使用的金钥是储存在位于快闪存储器控制器18内的一ROM里(未显示),数据处理器12及14都没有权限至该ROM存取。这些金钥是手机10特有的。
NAND快闪存储器20储存着不同种类的数据,比如说NAND快闪存储器20储存着手机10的IMEI码、锁定SIM卡(SIM lock)的数据以及DRM的金钥。稍早有提到,数据处理器12及14的开机码26及28储存在快闪存储器控制器18内。所有数据处理器12及14所需的其它程序代码都被储存在NAND快闪存储器20。NAND快闪存储器20是一标准的商业芯片。
快闪存储器控制器18把NAND快闪存储器20内的信息划分成数组别,各组别分别有其存取、完整性及机密的设定。关于这些组别的设定及前述划分法都储存在NAND快闪存储器20内。快闪存储器控制器18把这些组别设定及划分法视为一个特别的组别,称为组别定义表。每个组别的定义包括有:
●一起始地址及该组别最大的容量,这两项数据可显示该组别在NAND快闪存储器20内所占的范围。
●一完整性标识以显示该组别内的信息是否有经过一HMAC数字签章处理。
●一加密标识以显示该组别内的信息是否有经过AES加密。
●二个存取标识,一个标识用以显示是否数据处理器12有权限存取该组别,另一个标识用以显示是否数据处理器14有权限存取该组别。
两个数据处理器都有权限去存取该组别定义表。该组别定义表包含一HMAC数字签章,其是利用手机特有的HMAC金钥并根据表内的组别定义内容而产生的。
开机程序
快闪存储器控制器18可用以控制数据处理器12及14的重置信号(resetsignal)。当图1显示的系统重开机时,快闪存储器控制器18会保持数据处理器12及14处于重置模式下。快闪存储器控制器18然后会自先初始化并读取NAND快闪存储器20内组别定义表的内容,提交代表组别定义表的数据至HMAC安全信息摘要机制30,并在一适当金钥的辅助下,通过HMAC安全信息摘要机制30产生该组别定义表所对应的数字签章,并据此检查组别定义表的真实性(authenticity)。若组别定义表内的数字签章与HMAC安全信息摘要机制30产生的数字签章相同,快闪存储器控制器18视该组别定义表为真。如果该组别定义表无法通过完整性检查(integrity check),快闪存储器控制器18会中止开机的程序。如果该组别定义表被视为真,快闪存储器控制器18会继续对NAND快闪存储器20内被选定的组别做相同的完整性检查。如果有任何一组无法通过完整性检查,快闪存储器控制器18会中止开机的程序。
假如组别定义表及其它被选定的组别都通过了完整性检查,快闪存储器控制器18会通过移除数据处理器内的重置信号以继续重开机的程序。然后并允许数据处理器自ROM26内读取开机码。依相同的程序,快闪存储器控制器18允许数据处理器14利用ROM28内的开机码来开机。如此一来,快闪存储器控制器18能保证数据处理器12及14能可靠的开机。当这一步完成后,为求充分的操作,数据处理器12及14会请求快闪存储器控制器18自NAND快闪存储器20内读信息。通常在这种情况下自NAND快闪存储器20内所撷取的多是程序代码,而且是用读取的方式,于稍后会介绍读取的步骤。如此一来,数据处理器12及14的运作是安全的。
读取快闪计忆体
当数据处理器12及14其中之一请求快闪存储器控制器18去读取NAND快闪存储器20内某一组别内的信息时,快闪存储器会执行以下一连串的步骤,在此,在此称为读取步骤:
●快闪存储器控制器18去读取组别定义表内该组别对应该数据处理器的存取标识,若该存取标识显示该数据处理器无权存取该组别的信息,则中止读取步骤。
●若该存取标识显示该数据处理器有权存取,则继续读取步骤。接下来快闪存储器控制器18自组别定义表检查该组别的加密标识,若该加密标识显示该组别是机密并经过加密的保护,快闪存储器控制器18通过AES加密机制32及一适当的金钥去解密需求的信息。
●快闪存储器控制器18自组别定义表检查该组别的完整性标识,若该完整性标识显示该组别并无该信息的数字签章,则直接传送该信息给该数据处理器;若该完整性标识显示该组别有包含一该信息所对应的一HMAC数字签章,则快闪存储器利用一适当的金钥向HMAHMAC安全信息摘要机制30申请该信息一数字签章,若以上程序产生的数字签章与该组别的数字签章不同,则中止读取步骤。
●若两数字签章相同,则传送该信息给该数据处理器并结束读取步骤。
写入快闪存储器
当数据处理器12及14其中之一请求快闪存储器控制器18自NAND快闪存储器20内的某一组别写入信息时,数据处理器请求快闪存储器控制器18执行以下一连串的步骤,在此称为写入步骤:
●快闪存储器控制器18去检查组别定义表内标示该数据处理器是否有权存取该组别的存取标识,若该存取标识显示该数据处理器无权存取该组别,则中止写入步骤。
●然而,若该数据处理器有权存取该组别,则快闪存储器控制器18开始读取该数据处理器欲写入该组别的信息。
●接下来快闪存储器控制器18自组别定义表检查该组别的完整性标识以决定放置该组别内的信息是否需要一HMAC数字签章。若该完整性标识显示需要一HMAC数字签章,快闪存储器控制器18提交该信息至HMAC安全信息摘要机制30,并利用一适当金钥产生该信息的HMAC数字签章。
●快闪存储器控制器18自组别定义表检查该组别的加密标识。若该加密标识显示放置该组别内的信息需要加密处理,快闪存储器控制器18提交该信息至AES加密机制32,并利用一适当金钥对该信息加密处理。
●快闪存储器控制器18自NAND快闪存储器20内的该组别写入该信息,若加密处理已完成,则以加密后的形式写入;若HMAC处理已完成,则包含一数字签章。
●结束写入步骤。
快闪存储器起始模式
快闪存储器控制器18有一起始模式是用以当NAND快闪存储器20有一起始产生参考版(initial production image)且快闪存储器控制器18还未建立起组别定义表时。起始模式也用于当手机欲更新一个或多个数据处理器的程序代码,或是NAND快闪存储器20已无法提供多余容量时。
在起始模式下,快闪存储器控制器18只允许数据处理器12能重新激活。此时数据处理器12自SoC内的ROM撷取重新激活所需的程序代码,以确保在起始模式下数据处理器12能正常运作。在起始模式下,数据处理器12能更新NAND快闪存储器20内的任何组别,包括组别定义表。因为去抑制数据处理器14重新激活,手机10避免在起始模式下进入了完全运作模式(fully functional state)。
假设NAND快闪存储器20已内含一起始产生参考版,快闪存储器控制器18可读取NAND快闪存储器20内那些在完整性标识内有显示需要HMAC数字签章的组别信息,并替他们计算出HMAC数字签章,如果需要的话,进一步的以加密的型式写回快闪存储器控制器18。
当某一程序代码更新需要覆盖(apply)NAND快闪存储器20某一组别时,该程序代码应经过HMAC安全信息摘要机制30而产生一数字签章,如果需要的话,也应经过AES加密机制32的加密处理并送回NAND快闪存储器20的该组别。
在起始模式下,数据处理器12检查需要产生HMAC数字签章的信息是否使用来自可信赖的机构(如该手机10的制造商)的金钥产生数字签章。
其它的实施例
在主要实施例中,直到HMAC安全信息摘要机制30产生一与该信息对应的数字签章,而且该数字签章与该信息所含的数字签章完全吻合,读取步骤才会送回该信息给数据处理器。在其它的实施例中,完整性检查与传送信息至数据处理器的动作可同时并行,万一完整性检查没有通过,则只要在信息尚未传送完毕之前有执行一适当的动作即可(如同时重新激活数据处理器12及14)。
在主要实施例中,若在开机程序中没有通过完整性检查会导致手机10重新激活。在某些实施例中,保留NAND快闪存储器20内某些重要组别的备份是有意义的,因为如此一来,这些组别在一些偶发的事件后(例如因宇宙射线引起)得以复制回来。
主要实施例是使用NAND快闪存储器20。然而,在其它的实施例中可用任何形式的非挥发性存储器来取代NAND快闪存储器20。快闪存储器控制器18是用以驱动单一的非挥发性存储器,如果有多个存储器元件,快闪存储器控制器18可通过让快闪存储器经过一标准接口例如共有快闪存储器接口(co(common flashinterface,CFI)的方式去决定快闪存储器机制。
主要实施例是包含两个数据处理器,在其它的实施例中可包含其它数目的数据处理器。
主要实施例是使用单一个NAND快闪存储器20,在其它的实施例中可使用其它数目的存储器而且一个或多个的数据处理器只能通过控制器18来存取。
在主要实施例中,RAM16内的RAM区块22及24分别对应于数据处理器12及14,在其它的实施例中单一个RAM就可能对应于所有的数据处理器。
在主要实施例中,快闪存储器控制器18传递一信息至处理器的方式是通过DMA的方式储存该信息至该数据处理器对应的RAM区块上。在其它的实施例中,可以用其它的机制来避免其它非请求的数据处理器使用自NAND快闪存储器20撷取出的信息。比如说把自NAND快闪存储器20撷取出的信息传至该请求数据处理器内的缓存器内,而非传至RAM16上。
在主要实施例中,本发明是实施在一手机10。本发明当然也可在其它的装置实施,比如说PDA、笔记本计算机及台式计算机等等。
在主要实施例中,快闪存储器控制器18内的ROM 26及28分别各包含数据处理器12及14的开机码。在其它的实施例中,这些开机码可储存在NAND快闪存储器20,通过快闪存储器控制器18传送至数据处理器12及14,由HMAC安全信息摘要机制30来通过完整性的检查。
在主要实施例中,完整性检查机制是依据HMAC的准则来实施而加密机制是依据AES的准则来实施。在其它的实施例中,显然可使用其它的完整性检查机制及加密机制。
在主要实施例中,快闪存储器控制器18是全部被建置在一芯片上。在其它的实施例中,快闪存储器控制器18可用一仅具有简单功能的处理器来实施,原有更高阶的功能可用储存在相关非挥发性存储器内的程序代码来提供。如此一来可允许快闪存储器控制器18改变其机能(比如说在快闪存储器控制器18内发现有病毒或安全漏洞时)。
在主要实施例中,元件12至18被建置在一SoC上。其实不一定一定要这么做,虽然不这么做会损失一些安全性。如果元件12至18须被建置在多个独立的芯片上,可用配置一多芯片的套装组合来加强安全性。
在主要实施例中,数据处理器12在起始模式执行Soc内ROM里面的程序代码。在一变化例中,数据处理器12在起始模式可执行来自其它来源的程序代码,所推荐的方式是该程序代码先通过数据处理器12的确认并在Soc内ROM程序代码的控制下进行。
但以上所述的实施例不应用于限制本发明的可应用范围,本发明的保护范围应以本申请的权利要求范围内容所界定技术精神及其等同的变化所含括的范围为准。即凡是根据本申请权利要求范围所作出的种种等同的改变或替换,仍将不失本发明的要义所在,亦不脱离本发明的精神和范围,故都应视为本发明的进一步实施状况。