执行安全启动的片上系统、使用该片上系统的图像形成装置及其方法_2

文档序号:8548103阅读:来源:国知局
symbol,BSS)、内核、初始化程序、操作系统(OS)、另一OS(无线堆栈)、引擎、仿真、固定分段(fixed segment)、堆、认证密钥、加密的OS以及设备驱动程序。
[0080]可以按各种方法加密数据。例如,可以使用数据加密标准(DES)方法、三重DES (TDES)方法、先进加密标准(AES)方法、SEED 算法、Rivest Shamir Adleman (RSA)方法以及学院研宄所机构(academy-research institute-agency,ARIA)算法。
[0081]DES方法是指使用利用56位密钥的对称密钥加密算法对数据进行加密和解密的方法。TDES方法是指将DES重复三次的方法。AES方法是指使用32位的任意倍数(诸如128位、160位、192位、224位或256位)的密钥对128位大小的块进行加密和解密的方法。SEED方法,类似于AES方法,是指使用128位或256位的加密密钥对数据进行加密和解密的128位块加密方法。RSA方法是一种使用单向函数的公共密钥加密系统,而ARIA算法是使用128位、192位、或256位的密钥对128位的块进行加密和解密的块加密方法。
[0082]用各种上述加密方法加密的各种数据可以被存储在非易失性存储器200中。所存储的数据或加密方法可以根据其中安装了图1的片上系统100和非易失性存储器200的产品的特性或其它环境条件来选择性地应用。
[0083]参考图1,片上系统100包括第一存储器110、第二存储器120以及中央处理单元(CPU) 130。CPU 130可以是处理器和/或执行本总体发明构思的示范性实施例的任何适当的设备。加密密钥可以被存储在第一存储器110中。第一存储器110可以通过使用掩模只读存储器(ROM)或一次性可编程(one time programmable, OTP)存储器来实施。
[0084]掩模ROM是在制造时预先记忆数据而不允许用户修改该数据的存储器。OTP存储器可以用在系统编程中,但是它是一种一旦数据被编程就不允许其被修改的可编程ROM。
[0085]加密密钥是对存储在非易失性存储器200中的数据(具体为启动代码)进行解密的密钥。非易失性存储器200可以存储按上述方法中的一个加密的数据,并且与加密的数据相对应的加密密钥可以被存储在第一存储器110中。
[0086]第一存储器110可以存储关于启动加载器的信息。启动加载器是指这样的程序:该程序在OS起动之前被预先运行、结束起动内核所需的所有操作、并最终起动OS。也就是说,OS被划分成其中驱动真实命令的内核、向内核发送包括在程序中的命令的架构以及在内核和架构上驱动的用户接口(UI)。启动加载器是指在起动内核之前配备硬件的程序。具体而言,专用启动加载器信息可以被存储在第一存储器110中。专用启动加载器信息可以包括初始化系统所需的信息。
[0087]第二存储器120是用来执行启动操作的内部存储器。第二存储器120可以是不需要初始化的SRAM。然而,这不应当被认为是限制,并且第二存储器120可以是执行如这里公开的本总体发明构思的示范性实施例的任何适当的存储器。
[0088]CPU 130使用存储在第一存储器110中的加密密钥,对存储在位于片上系统100外部的非易失性存储器200中的加密的数据进行解密,并且将解密的数据存储在第二存储器120中。CPU 130可以使用存储在第二存储器120中的数据执行启动。解密方法可以对应于数据加密方法。
[0089]例如,如果AES方法被应用,则通过重复以下过程来对数据进行加密:对于将被加密的数据和初始输入的密码密钥执行XOR运算的AddRoundKey过程;根据特定规则替代XOR运算的结果的SubBytes过程;移动数据行的ShiftRows过程;以及将数据行混合10次的MixColumn过程。非易失性存储器200可以存储按上述方法加密的数据。CPU 130可以通过重复与上述加密过程相对应的逆过程来对加密的数据进行解密。解密的数据被存储在第二存储器120中,并且CPU 130使用所存储的数据执行随后的启动过程。
[0090]如果RSA方法被应用,则使用公共密钥{N,E}和专用密钥{N,D}对数据进行加密和解密。具体而言,选择两个大素数‘P’和‘q’(即,大于预定量的素数),并且计算模数N=P*q和PI (η)。而且,E被任意地选择以使得E与PI (N) = (p_a) (q_l)互质。使用扩展欧几里德算法来计算D,D具有如下关系:E*D mod PI(N)_1。结果,RSA加密可以使用公共密钥{N,E}和专用密钥{N,D}来执行。RSA加密可以使用等式E (M) = M Λ E mod N = C来执行。M表示将被加密的数据。非易失性存储器200可以存储根据这个等式加密的启动代码。在这种情况下,CPU 130可以使用等式D(C) = C Λ D mod N = ((M Λ E)人D)mod N=M来执行RSA解密。解密的数据被存储在第二存储器120中,并且CPU 130使用所存储的数据执行随后的启动过程。
[0091]根据上述方法,片上系统100按加密的状态向其中加载存储在外部存储器200中的数据,解密数据并执行启动操作。因此,即使未经授权的人攻击外部存储器200和片上系统100之间交换的数据,也不能改变启动过程,并且可以提高启动安全性。
[0092]图2是详细图示出根据本总体发明构思的示范性实施例的安全启动方法的流程图。参考图2,如果在操作S210中,其中安装了片上系统(例如,片上系统100)的电子装置被开启,则在操作S220中,片上系统访问第一存储器110并读取存储在第一存储器110中的数据。具体而言,CPU 130去往向其分配了特定地址的重置向量,并取得指令。在本示范性实施例中,重置向量的地址可以被指定为第一存储器110。
[0093]如果第一存储器110被指定,则CPU 130使用存储在第一存储器110中的数据执行安全启动。第一存储器110可以存储各种数据,诸如初始化系统(例如,片上系统100)的代码和对加密的外部程序代码进行解密的代码或加密密钥。
[0094]在操作S230,CPU 130从第一存储器110检测用于初始化系统的代码,并相对于电子装置的硬件执行初始化作业。初始化作业可以包括使用内部锁相环(PLL)电路调快在片上系统100中使用的时钟,或者初始化双倍数据速率(DDR)控制器以使用DDR存储器。初始化作业还可以包括各种初始化操作,诸如初始驱动各种应用,初始化设置以形成与电子装置的内部或外部装置的通信信道,初始化存储器值,设定内部寄存器值,输入/输出(I/O)设定,串行设定,获得MAC地址,以及以太网端口设定。初始化作业可以包括与片上系统100 一起配备安装在电子装置中的另一硬件。这样的初始化操作可以根据其中安装了片上系统100的电子装置的种类按各种方式实施。存储在第一存储器110中的代码可以用于其它操作。例如,数据CPU 130读取启动选项引脚设定(SPI/NAND/SD)值,并且根据相应的启动选项将数据引入(即,写入)第二存储器120中。
[0095]在操作S240,CPU 130对加载到片上系统100中的加密的数据进行解密。CPU 130可以使用存储在第一存储器110中的加密密钥对数据进行解密。在操作S250,CPU 130将解密的数据存储在第二存储器120或DDR存储器中。在操作S260,CPU 130使用解密的数据执行启动。
[0096]也就是说,CPU 130可以使用如下数据执行启动:诸如解密的启动块启动符号(BSS)、内核代码、初始化程序、OS、另一 OS(无线堆栈)、引擎、仿真、固定分段以及堆。启动是指以下操作:加载内核、运行架构、运行UI以及起动OS。
[0097]根据上述示范性实施例,安全启动可以使用没有被加密的片上系统100的第一存储器110和第二存储器120来执行,其中加密的数据被存储在外部非易失性存储器200中。
[0098]图3是图示出根据本总体发明构思的示范性实施例的片上系统的框图。参考图3,除了第一存储器110、第二存储器120以及CPU 130以外,片上系统100还可以包括第三存储器140。
[0099]根据本总体发明构思的示范性实施例,多个加密密钥可以被存储在第一存储器110中。用于选择多个加密密钥之一的设定值可以被存储在第三存储器140中。这样的设定值被称为加密密钥设定值。第三存储器140可以是电子熔丝(EFUSE)存储器,其是一种OPT存储器。然而,这不应当被认为是限制,并且第三存储器140可以是任何适当的存储器以便执行如这里公开的本总体发明构思的示范性实施例。
[0100]CPU 130根据存储在第三存储器140中的设定值(也就是说,加密密钥设定值)来确定存储在第一存储器110中的多个加密密钥中的哪一个将被选择。如果使用中的密钥暴露,则片上系统100的制造商或其中安装了片上系统100的电子装置通过改变第三存储器140的加密密钥设定值来改变密钥。
[0101]根据本示范性实施例,即使一个加密密钥暴露,也不需要替换整个片上系统,并且CPU 130可以通过改变在第三存储器140中编程的设定值来处理这个问题。
[0102]第二存储器120和CPU 130的其它操作与以上第一示范性实施例中所描述的相同,从而省略冗余的解释。
[0103]图4是图示出其上安装了片上系统100和非易失性存储器200的主板300的框图。主板300可以被布置在例如电子装置中。参考图4,片上系统100和非易失性存储器200可以安装在单个主板300上。除了片上系统100和非易失性存储器200,各种部分(例如,电子装置的硬件组件、诸如例如,通信接口、用户接口、图像处理器、图像传感器、音频处理器等)都可以被安装在主板300上,但是为了解释方便没有图示。
[0104]片上系统100包括第一存储器110、第二存储器120、CPU 130、第三存储器140以及总线150。参考图4,CPU 130可以通过总线150连接到各种元件,包括第一到第三存储器110、120和140。总线150可以包括各种种类的总线,诸如地址总线、数据总线以及控制总线。
[0105]在图3和图4中图示的片上系统100可以使用第三存储器140(例如,DES、TDES、SEED、RSA, ARIA等)来适当地选择加密方法。
[0106]图5是图示出图3或图4中图示的片上系统的安全启动方法的流程图。参考图5,如果在操作S510,其中安装了片上系统100的电子装置被开启,则在操作S520,片上系统100的CPU 130访问第一存储器110并识别初始化数据。对第一存储器110的访问可以根据从重置向量取得的指令来执行。在操作S530,CPU 130根据所识别的初始化数据来初始化硬件(例如,电子装置的硬件组件,诸如一个或多个存储器设备、通信接口等)。以上已经参考图2描述了初始化操作的示例,并且冗余的解释被省略。在安全启动被执行的同时,CPU 130可以禁止通过外部端口对其自身的访问。
[0107]如果初始化完成,则在操作S540,CPU 130识别存储在第三存储器140中的设定值,并在操作S550,选择存储在第一存储器110中的多个加密密钥当中与设定值相对应的加密密钥。如果加密密钥被选择,则在操作S560,CPU130使用该加密密钥对存储在非易失性存储器200中的加密的数据进行解密并执行认证。解密的数据被复制到第二存储器120或DDR存储器中。
[0108]如上所述,数据根据各种加密算法来进行解密,所述各种加密算法诸如DES方法、TDES方法、AES方法、SEED算法、RSA方法以及ARIA方法。
[0109]认证是检验数据的认证代码的有效性的过程。为了实现认证,可以使用认证算法,诸如HMAC-SHA256、HMAC-SHAI以及HMAC-MD5和/或用于执行本总体发明构思的示范性实施例的任何适当的认证算法。这些算法是共享单一秘密密钥的基于密钥的算法。具体而言,HMAC在RFC 204中定义(用于消息认证代码的键入_散列法(keyed-hashing))。如上所述,用于解密的加密密钥值和用于认证的密钥值可以被存储在第一存储器110中。
[0110]如果在操作S570,认证代码不是有效的或者解密失败,则在操作S595,CPU 130停止运行安全启动程序和/或落入无限循环。
[0111]如果解密和认证成功,并且所有的系统配备都完成,则在操作S580,CPU130改变地址映射。因此,当有对访问第一存储器110的尝试时,该访问被强制改变为对第二存储器120的访问。
[0112]在操作S590,CPU 130使用被复制到第二存储器120中的解密的数据来执行启动。以上已经描述了启动过程,从而省略冗余的解释。
[0113]在以上示范性实施例中,已经描述了执行安全启动的片上系统及其操作。然而,根据示范性实施例,根据其中使用了片上系统的环境,可以选择性地执行安全启动或正常启动。
[0114]图6是图示出根据本总体发明构思的示范性实施例的片上系统的启动方法的流程图。根据示范性实施例,非易失性存储器200可以将加密的数据和非加密的数据存储在一起。
[0115]在这种状态下,如果在操作S610,电子装置被开启,则在操作S615,CPU 130确定是执行安全启动还是执行正常启动。也就是说,如果电力被接通,则CPU 130去往重置向量并取得指令。第一存储器110或第二存储器120可以被指定为重置向量。也就是说,第一存储器110和第二存储器120经由总线150被映射到相同的地址(例如,OxffffOOOO)上。如果CPU 130从重置向量识别出地址OxffffOOOO,则CPU 130访问被指定的第一存储器110和第二存储器120之一。存储器可以由通过连接到CPU 130的外部引脚输入的指定值或存储在第三存储器140中的指定值来指定。
[0116]如果第二存储器120被指定,则在操作S615:否,确定执行正常启动而非安全启动。在这种情况下,CPU 130访问非易失性存储器200并使用非加密的数据来执行正常启动。
[0117]如果第一存储器110被指定,则在操作S615:是,确定执行安全启动。如果执行安全启动,则CPU 130在操作S625访问第一存储器110并在操作S630检测初始化数据。在此之前,CPU 130可以禁止经由外部端口对其自身的访问。
[0118]在操作S630,CPU 130使用初始化数据来初始化基础硬件。CPU 130将存储在非易失性存储器200中的加密的数据加载到第二存储器120中。
[0119]在操作S635,CPU 130确定是否设定了安全启动模式。也就是说,CPU 130可以使用外部引脚(或第一外部引脚)或第三存储器140来确定是否执行安全启动,而不管第一存储器110是否被指定。例如,即使非加密的数据被存储在非易失性存储器200中,CPU 130也可以使用第一存储器110来执行启动。在这种情况下,省略解密。基于存储在第三存储器140中的另一指定值或另一外部引脚(下文中为第二外部引脚)来确定模式是否是安全启动模式。
[0120]如果设定了安全启动模式,则在操作S640,CPU 130使用存储在第一存储器110中的加密密钥执行解密和认证。可以根据上述各种算法(例如,DES、TDES, AES、SEED、RSA、ARIA等)来执行解密和认证。
[0121]如果在操作S645:否,解密和认证中的至少一个失败,则在操作S660,CPU 130落入无限循环。也就是说,CPU 130停止运行安全启动模式。如果在操作S645:是,解密和认证成功,则在操作S650,CPU 130改变地址映射。CPU 130可以控制将要使用第二存储器120而非第一存储器110。因此,在地址映射改变之后,不可能访问存储在第一存储器110中的代码。这时,不可能用JTAG追踪代码和密钥值,并且地址在被访问时被设定为读取Oxffffff。
[0122]当地址映射改变时,CPU 130跳到复制到第二存储器120 (例如,第一启动加载器)中的数据,并在操作S655,使用这个数据执行启动操作。第一启动加载器是指用于将第二启动加载器加载到存储器中的启动加载器。由第二启动加载器执行用于提供Π并加载内核的启动加载器的核心功能。考虑到不足的空间,启动加载
当前第2页1 2 3 4 5 6 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1