CN101840361A - 程序验证装置及其方法 - Google Patents
程序验证装置及其方法 Download PDFInfo
- Publication number
- CN101840361A CN101840361A CN201010129985A CN201010129985A CN101840361A CN 101840361 A CN101840361 A CN 101840361A CN 201010129985 A CN201010129985 A CN 201010129985A CN 201010129985 A CN201010129985 A CN 201010129985A CN 101840361 A CN101840361 A CN 101840361A
- Authority
- CN
- China
- Prior art keywords
- crc
- data
- address
- cycles
- program verification
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/60—Protecting data
- G06F21/64—Protecting data integrity, e.g. using checksums, certificates or signatures
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/52—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow
Landscapes
- Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Health & Medical Sciences (AREA)
- Bioethics (AREA)
- General Health & Medical Sciences (AREA)
- Storage Device Security (AREA)
- Detection And Correction Of Errors (AREA)
Abstract
本发明用于提供能够在多数情况下检测非法行为的程序验证装置及其方法。当程序数据要被存储在安全数据存储中时,通过对程序数据执行CRC计算来获得第一校验和值。此外,通过对被传输到安全数据存储的程序数据执行CRC计算来获得第二校验和值。通过比较这些校验和值来执行程序验证。循环数目逻辑(700)使CRC计算被执行至少两次,并且确定循环的数目。计算顺序逻辑(800)改变用于CRC计算的每个循环的CRC计算的计算顺序。
Description
相关申请的交叉引用
本申请基于并且要求2009年3月17日提交的日本专利申请No.2009-064531的优选权,通过引用,将其全部内容合并于此。
技术领域
本发明涉及程序验证装置及其方法。例如,本发明涉及处理数字视频内容的数字TV领域等等。
背景技术
在处理数字视频内容的数字TV领域等中,近年来,在世界范围内已经快速地从模拟广播转化到数字广播。在数字广播中,为了防止非法浏览和非法复制,对数据进行加密。然而,此种加密经常受到非法行为的破坏,并且因此广播代理被迫将他们的加密方案变成更加安全的方案。由于此,产生用于改善安全鲁棒性的需求,以不仅用于防止篡改内容,而且还用于防止篡改处理这些内容的半导体装置。
图4是示意性地表示在专利文献1(日本未经审查的专利申请公开No.2007-183937)中公布的智能卡的功能框图。智能卡1000包括控制单元100、接口块200、RAM 300、ROM 400、以及安全数据存储500。控制单元100控制智能卡100的整体操作。RAM 300用作工作区域,并且被用于暂时地存储要被存储在安全数据存储500中或者要从安全数据存储500中读出的数据。安全数据存储500被用于存储需要通过控制单元100的控制而保护的数据(例如,财政信息)。
注意的是,被存储在智能卡1000的安全数据存储500中的数据要求高安全性。要被存储的数据的示例包括财政信息。此外,当在智能卡1000的安全数据存储500中要对数据进行编程时,必须验证数据是否被正确地写入。即,必须防止通过外部攻击等等非法操作的数据被编程。至于程序验证,已知的是CRC(循环冗余校验)方案。
图5是示出控制单元的更加详细的构造的功能框图。控制单元100包括随机延迟控制逻辑110、缓冲存储器120、数据复制和控制逻辑130、CRC计算逻辑140、CRC寄存器150、比较器160、寄存器171和172、校正/检测控制逻辑180、以及信号生成器190。
程序数据被从RAM 300传输到安全数据存储500的页缓冲器504。在编程数据被从RAM 300传输到页缓冲器504之后,随机延迟控制逻辑110将该编程数据复制到缓冲存储器120。当被存储在RAM 300中的所有编程数据已经被复制到缓冲存储器120时,随机延迟控制逻辑110生成标记信号FUDC_END。标记信号FUDC_END的激活指示被存储在RAM 300中的所有编程数据已经被复制到缓冲存储器120。
CRC计算逻辑140接收来自于数据复制和控制逻辑130的控制信号F_CRC_ST。在接收此控制信号F_CRC_ST之后,CRC计算逻辑140对被存储在缓冲存储器120中的数据执行CRC计算操作。同时,当CRC计算逻辑140接收控制信号F_CRC_ST时,从安全数据存储500的阵列501中直接地读出数据,并且对读出的数据执行CRC计算。由CRC计算逻辑140计算的结果值(即,各个结果值对应于2字节校验和值)被存储在CRC寄存器150中。CRC寄存器150对通过两个CRC计算处理获得的两个2字节校验和值进行存储。每次CRC计算操作已经完成时,CRC计算逻辑140生成标记信号FCRC_END。
比较器160接收来自于数据复制和控制逻辑130的控制信号FCOMP1。在接收控制信号FCOMP1之后,比较器160将被存储在页缓冲器504中的数据与被存储在缓冲存储器120中的数据进行比较。比较器160激活标记信号FMTC和标记信号FNMTC中的一个作为比较结果。标记信号FMTC的激活指示被存储在页缓冲器504中的数据与被存储在缓冲存储器120中的数据相匹配。标记信号FNMTC的激活指示被存储在页缓冲器504中的数据与被存储在缓冲存储器120中的数据不相匹配。
如在下文中所解释,当标记信号FNMTC被激活时,意味着被加载在页缓冲器504中的数据被外部攻击非法操作,并且因此终止程序操作。
此外,比较器160还接收来自于数据复制和控制逻辑130的控制信号FCOMP2。在接收控制信号FCOMP2之后,比较器160比较被存储在CRC寄存器150中的结果值(CRC1、CRC2),并且生成标记信号FCRC_OK或者FCRC_NOK作为比较结果。标记信号FCRC_NOK指示被存储在寄存器150中的结果值(CRC1,CRC2)不匹配。标记信号FCRC_OK指示被存储在CRC寄存器150中的结果值(CRC1,CRC2)匹配。
被用于存储安全数据存储500的控制信息的寄存器171存储高压激活信息、自定时器激活信息、指令信息等等。寄存器172是8位寄存器,并且用于存储用于安全数据存储500的写入操作的验证信息。
注意的是,[0]位是安全数据存储500的验证开启/关闭控制位。此外,逻辑值“0”指示验证功能被关闭,并且逻辑值“1”指示验证功能被开启。初始值是逻辑值“0”。
[1]位是错误校正/检测选择信息位。此外,逻辑值“0”指示错误检测功能被选择,并且逻辑值“1”指示错误校正功能被选择。
[2]位是外部攻击检测标记位。当[2]位被设置为“0”时,指示程序数据没有被外部攻击非法操作。此外,当[2]位被设置为“1”时,指示程序数据被外部攻击非法操作。
[5]位是中断发生控制位。此外,逻辑值“0”指示中断发生功能被关闭,并且逻辑值“1”指示中断发生功能被开启。
[6]位通过控制单元100的CPU(未示出)或者微处理器而被设置为错误检测标记位。此外,逻辑值“0”指示没有检测到错误,并且逻辑值“1”指示检测到错误。
注意的是,仅当[1]位被设置为逻辑值“0”时,[5]位具有有效信息。即,在[1]位被设置为逻辑值“0”的情况下,当[5]位被设置为逻辑值“1”时,可以发生中断。在[1]位被设置为逻辑值“1”的情况下,即使检测到错误,也不发生中断。在错误检测功能被选择([1]位被设置为逻辑值“0”)的情况下,当错误出现时对[6]位进行设置,并且通过接下来被激活的高压激活信号来对[6]位进行清除。剩下的[3]、[4]以及[7]位是保留位。
接下来,校正/检测控制逻辑180响应于被存储在寄存器172中的信息和标记信号FNMTC、FCRC_NOK以及FCRC_OK生成程序结束信号PGM_END、外部攻击检测信号ATT_DET、重新编程信号FRPGR、以及中断信号FIQ。例如,当标记信号FNMTC被激活时,校正/检测控制逻辑180激活程序结束信号PGM_END和外部攻击检测信号ATT_DET。此外,校正/检测控制逻辑180基于寄存器172的[5]位是否被设置来生成中断信号FIQ。
当标记信号FCRC_OK被激活时,校正/检测控制逻辑180激活程序结束信号PGM_END。该操作使程序流程终止。当标记信号FCRC_NOK被激活时,校正/检测控制逻辑180基于寄存器172的[1]位是否被设置来激活重新编程信号FRPGR或者程序结束信号PGM_END和中断信号FIQ。
信号生成器190响应于被存储在寄存器171中的指令信息和来自于数据复制和控制逻辑130的控制信号FRBC_END来激活标记信号FBLDC和FBC中的一个。例如,当在寄存器171中设置对擦除和写入操作或者写入操作进行通知的指令时,信号生成器190响应于控制信号FRBC_END的激活生成标记信号FBLDC。当在寄存器171中设置对擦除操作进行通知的指令时,信号生成器190响应于控制信号FRBC_END生成标记信号FBC。
图6是通过现有技术中的智能卡控制单元进行的程序验证的流程图。控制单元100通过外部设备开始操作,并且将来自于RAM 300的程序数据传输到页缓冲器504(步骤F100)。然后,控制单元100确定页缓冲器504中的程序数据是否被外部攻击非法操作,并且基于确定结果将页缓冲器504的程序数据存储在安全数据存储500的所选择的页中。
在将程序数据传输到页缓冲器504之后,随机延迟控制逻辑101将来自于RAM 300的程序数据传输到缓冲存储器120(步骤F101)。
在将程序数据传输到缓冲存储器120之后,为了计算用于缓冲存储器120的程序数据的第一校验和值,数据复制和控制逻辑130指示CRC计算逻辑140执行CRC计算(步骤F102)。CRC计算逻辑140通过执行用于缓冲存储器120的程序数据的CRC计算,来计算第一校验和值(步骤F103)。
在计算第一校验和值之后,数据复制和控制逻辑130将页缓冲器504的程序数据传输到缓冲存储器120(步骤F104)。在程序数据被传输到缓冲存储器120之后,为了计算用于缓冲存储器120的程序数据的第二校验和值,数据复制和控制逻辑130指示CRC计算逻辑140执行CRC计算(步骤F105)。
CRC计算逻辑140通过执行用于缓冲存储器120的程序数据的CRC计算,来计算第二校验和值(步骤F106)。在计算第二校验和值之后,比较器160将第一校验和值与第二校验和值进行比较(步骤F107)。当比较结果是匹配的时候,处理完成,然而当变成不匹配时,比较器160通知校正/检测控制逻辑180(步骤F108)。校正/检测控制逻辑180生成程序结束信号,并且处理完成(步骤F109)。
此外,专利文献2(日本未经审查的专利申请公开No.2000-4170)公布校正检验方法以校正当从记录介质中读出数据时出现的错误,并且检验在错误校正处理的结果中是否存在错误。在下面的程序中执行专利文献2中公布的校正检验方法。首先,通过使用错误检测代码对包括与PI方向(扇区(sector)的行方向)相对应的错误检测代码的数据执行检验计算,以获得第一采样值。接下来,在数据块的PI方向中执行错误校正。接下来,对通过PI方向中的错误校正获得的校正的值执行检验计算,以生成第二采样值。将获得的第一和第二采样值相互进行比较易生成第一校验值。此外,在不同于PI方向的PO方向(穿过扇区延伸的列方向)中,对基本数据执行错误校正,其中,在所述基本数据上执行了在PI方向中的错误校正。沿着PI方向,对通过在PO方向中的错误校正而获得的已校正的值执行检验计算,以生成第三采样值。然后,获得的第一和第三采样值相互进行比较,以生成用于在前述的第二方向(PO方向)中检验错误校正的第二校验值。注意的是,在专利文献2中,为了通过减少基本数据被读出的次数来缩短要求用于校正检验的时间,当要获得第三采样值时,在PI方向中执行检验计算之前执行分类,以有助于沿着PI方向中的计算。
发明内容
本发明人已经发现如下的问题,即,在专利文献1中,为RAM中的程序数据和页缓冲器中的程序数据中的每一个执行一次CRC计算,并且然后对CRC计算结果相互比较,以确定在页缓冲器中是否进行了篡改。然而,对相同的程序仅执行一次CRC计算。因此,如果生成器多项式被泄漏,那么通过对程序的一部分(生成器多项式的位长度)进行操作,能够获得唯一的CRC计算结果。因此,现有技术中的上述程序验证方法具有如下的问题,即,被存储在安全数据存储500中的程序易受到篡改的攻击。
此外,在专利文献2中公布的方法中,每次在错误校正之前,在PI方向中的错误校正之后,以及在PO方向中的错误校正之后,执行检验计算。像这样的处理能够检验是否正确地执行了错误校正。然而,在专利文献2中,由于在数据校正之前和之后执行检验计算,所以首先,对其执行计算的数据是不同的。此外,检验计算的方向总是被固定在PI方向。因此,即使在专利文献2的校正检验方法中,如果生成器多项式被泄漏,并且从而程序被篡改,那么在原则上不可能检验出此篡改。
本发明的第一示例性方面是程序验证装置,该程序验证装置通过执行CRC计算来执行程序验证,包括:循环数目逻辑,该循环数目逻辑使CRC计算执行至少两次并且确定循环的数目;和计算顺序逻辑,该计算顺序逻辑改变用于CRC计算的每个循环的CRC计算的计算顺序。
本发明的另一示例性方面是通过执行CRC计算来执行程序验证的程序验证方法,包括:使CRC计算至少执行两次;确定CRC计算的循环的数目;以及改变用于CRC计算的每个循环的CRC计算的计算顺序。
通过像这样的构造,能够构造使得由于计算顺序中的不同,在第一循环和第二循环以及后续循环之间的CRC计算结果是不同的,并且由于对相同的对象执行CRC计算,每个CRC计算结果当中存在相关性。这样,即使生成器多项式被泄露,并且从而程序的一部分(生成器多项式的位长度)被篡改,根据本发明的示例性方法的程序验证大多数时间能够检测诸如篡改的非法行为,并且从而使不可能进行非法行为。
附图说明
结合附图,从某些示例性实施例的以下描述中,以上和其它示例性方面、优点和特征将更加明显,其中:
图1是程序验证的电路图;
图2是程序验证的流程图;
图3示出了缓冲存储器的构造示例;
图4示出了现有技术中的智能卡;
图5是通过现有技术中的智能卡控制单元进行的程序验证的电路图;以及
图6是通过现有技术中的智能卡控制单元进行的程序验证的流程图。
具体实施方式
在下文中参考附图解释本发明的示例性实施例。
[第一示例性实施例]
图1是程序验证装置的电路图。在附图中,相同的标记被分配给与图5的相同的部件,并且省略它们的解释。图1具有如下的构造:使得添加了循环数目逻辑700和计算顺序逻辑800,并且以图5中的执行控制逻辑910替代随机延迟控制逻辑110。
循环数目逻辑700包括循环数目计数器701、循环数目设置部件702、以及循环数目确定电路703。
循环数目计数器701计数计算循环的数目。通过对来自于循环数目确定电路703的重新执行指令进行计数,来执行循环数目的计数。稍后解释此点的详细情况。然后,循环数目计数器701将指示计算循环的数目的循环数目信号10输出至循环数目确定电路703和计算顺序设置部件801。
在循环数目设置部件702中事先设置计算循环应重复的次数。循环数目设置部件702通过循环数目设置信号11将设置的循环数目提供给循环数目确定电路703。
循环数目确定电路703接收来自于比较器160的指示校验和值的匹配比较结果的信号FMTC,并且将计算重新执行信号12输出到循环数目计数器701和执行控制逻辑910。
计算顺序逻辑800包括计算顺序设置部件801、地址生成电路802、以及数据排列位置改变电路803。计算顺序设置部件801将地址顺序信号13和数据顺序信号14分别输出至地址生成电路802和数据排列位置改变电路803。在计算顺序设置部件801中事先设置计算顺序参数,利用所述计算顺序参数来对每个循环执行CRC计算。计算顺序参数是由地址顺序和数据顺序组成。地址顺序是由开始地址、结束地址、以及地址更新过程组成。
地址生成电路802接收来自于数据复制和控制逻辑130的指示CRC计算的执行开始的信号F_CRC_ST,并且还接收来自于计算顺序设置部件801的地址顺序信号13。此外,地址生成电路802将指示读取地址的地址信号15输出至缓冲存储器120。
数据排列位置改变电路803接收作为从缓冲存储器120读出的数据的读取数据信号16。此外,数据排列位置改变电路803将计算数据信号17输出至CRC计算逻辑140,所述计算数据信号17是对其改变排列位置的数据。
图2是根据本发明的本示例性实施例的程序验证方法的流程图。在下文中参考图2解释图1的操作。注意的是,相同的标记被分配给与图6的相同的部件,并且省略了它们的解释。
在本示例性实施例中,以循环的形式重复从步骤F101到步骤F206执行的CRC计算。在此处理中,对于每个循环改变计算顺序(步骤F200)。
在本示例性实施例中,在步骤F100和F101之后并且在CRC计算的执行被指示之前,改变计算顺序(步骤F200)。计算顺序设置部件801接收来自于循环数目计数器701的循环数目信号10。然后,读出由为每个循环设置的数据顺序和地址顺序组成的计算顺序参数,并且将地址顺序和数据顺序改变为读出值(步骤F200)。计算顺序设置部件801将地址顺序信号13和数据顺序信号14分别输出至地址生成电路802和数据排列位置改变电路803。
接下来,在下文中解释到用于获得第一校验和值的CRC计算步骤(步骤F103)的步骤。地址生成电路802响应于指示CRC计算的执行开始的信号F_CRC_ST来开始操作。地址生成电路802根据地址顺序信号13生成缓冲存储器120的读取地址。读取地址从开始地址开始,当根据地址更新过程从缓冲存储器120中读出数据时进行更新,并且当变成结束地址时结束(步骤F201)。地址被作为地址信号15输出至缓冲存储器120。
数据排列位置改变电路803根据数据顺序信号14改变从缓冲存储器120读出的读取数据信号16的数据位的排列位置。数据排列位置改变电路803将已改变的数据作为计算数据信号17输出至CRC计算逻辑140(步骤F202)。CRC计算逻辑140执行CRC计算(步骤F103)。
接下来,用于获得第二校验和值的CRC计算的操作与用于获得第一校验和值的CRC计算的操作相同,并且因此省略其详细解释。
注意的是,在用于获得第二校验和值的CRC计算中,通过地址生成电路802的地址生成(步骤F203)和通过数据排列位置改变电路803的数据排列位置改变分别对应于步骤F201和F202,所述步骤F201和F202是用于获得第一校验和值的步骤。
所获得的校验和值通过CRC寄存器150被传输到比较器160,并且在比较器160中进行比较(步骤F107)。
在下文中解释确定循环的数目的操作。当它们匹配(步骤F108:是)时,比较器160将信号(FMTC)输出至循环数目确定电路703。当循环数目确定电路703接收来自于比较器160的指示校验和值的匹配比较结果的信号FMTC时,通过将计算循环数目信号10与计算循环数目设置信号11进行比较,循环数目确定电路703确定CRC计算的循环数目是否达到预定的数目(步骤F205)。当已经达到预定的数目(步骤F206:是)时,循环数目确定电路703完成处理,然而当没有达到预定的数目(步骤F206:否)时,循环数目确定电路703输出CRC计算重新执行信号12,以继续进行CRC计算。注意的是,循环数目计数器701接收重新执行信号12,并且更新循环的数目。
在第二循环的CRC计算中,在步骤F200中,计算顺序设置部件801根据循环的当前数目改变CRC计算的计算顺序(步骤F200)。这样,第二循环中的CRC计算的计算顺序与第一循环中的计算顺序发生改变。其它的操作与第一循环中的CRC计算的相类似。
本发明的本示例性实施例包括:循环数目逻辑700,该循环数目逻辑700确定CRC计算的循环的数目;计算顺序逻辑800,该计算顺序逻辑800改变用于CRC计算的每个循环的计算顺序;以及执行控制逻辑910。循环数目逻辑700使得能够多次地执行CRC计算,并且计算顺序逻辑800使得能够生成用于存储器120的地址并且重新排列读出数据。结果,能够构造为使得由于计算顺序中的改变,在第一循环中的CRC计算结果和后续的循环中的CRC计算结果之间,CRC计算结果是不同的;并且使得因为对相同的对象执行CRC计算,所以在每个CRC计算结果当中存在相关性。因此,根据本示例性实施例中,即使生成器多项式被泄漏,篡改程序的一部分(生成器多项式的位长度)也基本上是不可能的。
关于根据本示例性实施例的计算顺序和缓冲存储器的构造,在下文中通过使用具体的示例来解释操作。为了便于解释,进行下述假定。对于缓冲存储器120的构造,通过示例来定义由位宽度和字数指定的存储大小、以及地址范围。在此示例中,通过示例定义从0到7的地址范围和具有32位宽度的8字的32字节。
图3是上面定义的缓冲存储器120的构造示例。在图3中,D0至D31表示与地址0至7相对应的字节数据。地址0的数据是由字节数据D3、D2、D1以及D0组成的32位数据。此外,以与图3中所示的相似方式来构造地址1至6的数据。注意的是,地址7的数据是由字节数据D31、D30、D29以及D28组成的32位数据。
至于生成器多项式,通过示例来定义成为要被计算和要被输入至CRC计算逻辑140的对象的数据位宽度、CRC数据的位宽度、以及从CRC计算逻辑140输出的CRC数据的位宽度。进行如下的假定:目标数据宽度是8位;CRC32(32位)被输入;并且CRC32(32位)被输出。
假定CRC计算的循环的设置数目为两次。
至于CRC1计算地址顺序,通过示例来定义在第一循环中的CRC计算开始的缓冲存储器的开始地址,和CRC计算结束的缓冲存储器的结束地址。通过示例,地址0被定义为开始地址并且地址7被定义为结束地址。至于地址更新过程,假定地址以2来递增。此外,仅当地址是6时,下一个地址变成1。
至于CRC2计算地址顺序,通过示例来定义在第二循环中的CRC计算开始的缓冲存储器的开始地址,和CRC计算结束的缓冲存储器的结束地址。通过示例,地址1被定义为开始地址并且地址6被定义为结束地址。至于地址更新过程,假定地址以2来递增。此外,仅当地址是7时,下一个地址变成0。
至于CRC1计算数据顺序,通过示例来定义根据其来改变在第一循环中从缓冲存储器120读出的数据的排列位置的顺序。假定从缓冲存储器120读出的数据(32位)的排列位置从B3、B2、B1、B0重新排列为B2、B3、B0、B1。
至于CRC2计算数据顺序,通过示例来定义根据其来改变在第二循环中从缓冲存储器120读出的数据的排列位置的顺序。假定从缓冲存储器120读出的数据(32位)的排列位置从B3、B2、B1、B0重新排列为B3、B1、B2、B0。
注意的是,上述排列位置B3、B2、B1以及B0中的每一个表示字节数据。当通过位位置来表示排列位置的每一个时,排列位置B3是位位置31位至24位;排列位置B2是位位置23位至16位;排列位置B1是位位置15位至8位;并且排列位置B0是位位置7位至0位。
在下文中,在这些假定的条件下解释操作。第一循环中的缓冲存储器地址从地址0开始,以两个字来递增,即,递增到地址2、4。然后,当地址变成地址6时,下一个地址变成地址1。然后,地址以2个字递增,即,被递增到地址3、5。然后,当地址变成地址7时,CRC计算完成。
第二循环中的缓冲存储器地址从地址1开始,以两个字递增,即,被递增到地址3、5。然后,当地址变成地址7时,下一个地址被设置为地址0。然后,地址以2个字来递增,即,被递增到地址2、4。然后,当地址变成地址6时,CRC计算完成。
因此,第一循环中的缓冲存储器地址按照地址0、2、4、6、1、3、5、7的顺序改变,并且第二循环中的缓冲存储器地址按照地址1、3、5、7、0、2、4、6的顺序改变。
同时,第一循环中的数据排列位置是以B2、B3、B0、B1的形式,并且第二循环中的数据排列位置是以B3、B1、B2、B0的形式。
因此,根据上述组合,CRC计算的第一循环中的计算数据的排列位置被表达为字节数据:
D2,D3,D0,D1,D10,D11,D8,D9,D18,D19,D16,D17,D26,D27,D24,D25,D6,D7,D4,D5,D14,D15,D12,D13,D22,D23,D20,D21,D30,D31,D28,D29。
此外,CRC计算的第二循环中的计算数据的排列位置被表达为字节数据:
D7,D5,D6,D4,D15,D13,D14,D12,D23,D21,D22,D20,D31,D29,D30,D28,D3,D1,D2,D0,D11,D9,D10,D8,D19,D17,D18,D16,D27,D25,D26,D24。
在上述具体示例中,由于在第一循环的CRC计算与第二循环的CRC计算之间要被计算的数据的排列不同,所以计算结果也不同。同时,第一循环中的CRC计算与第二循环中的CRC计算仅在它们的计算顺序中不同,并且因此对其执行CRC计算的对象(字节数据D0至D31)彼此相同。因此,即使通过对程序的一部分(生成器多项式的位长度)进行操作以企图进行篡改,使得第一循环中的CRC计算结果匹配,但是第二循环中的CRC计算结果也不匹配。因此,在多数情况下能够检测到是否已经篡改数据。即使生成器多项式被泄漏,并且从而程序的一部分(生成器多项式的位长度)被篡改,在多数情况下也能够检测到篡改。因此,不能够通过非法操作逃避根据本发明的本示例性实施例的程序验证。此外,在用于从缓冲存储器120中读出数据的地址生成中,通过将开始地址、结束地址、以及地址更新过程设置为不同的值,能够容易地创建多个组合。
根据具有像这样的结构的本发明的本示例性实施例,能够实现以下有利的效果。
(1)作为第一有利效果,即使生成器多项式被泄露,并且从而程序的一部分(生成器多项式的位长度)被篡改,在多数情况下根据本示例性实施例的程序验证也能够检测此种非法操作。即,基于被泄露的生成器多项式通过操作程序的一部分(生成器多项式的位长度)进行的该种类型的篡改,基本上是不可能的。这是因为能够构造为使得由于计算顺序中的不同,在第一循环中的CRC计算结果和后续的循环中的CRC计算结果之间,CRC计算结果是不同的,并且由于对相同的对象执行CRC计算所以在每个CRC计算结果当中存在相关性。
(2)作为第二有利效果,能够容易地改变用于从缓冲存储器中读出数据的地址生成的组合。这是因为通过将开始地址、结束地址、以及地址更新过程设置为不同的值能够创建多个组合。
(3)作为第三有利效果,能够容易地改变从缓冲存储器120读出的数据的排列位置。这是因为当要改变数据的排列位置时,能够通过使用从多个字节单位到位单位的各种不同的数据单位来进行设置。
(4)作为第四有利效果,即使计算顺序被泄露,也能够容易地改变计算顺序和计算的数目。这是因为计算顺序和计算的数目不是通过硬件固定的,使得甚至能够从外部设备对其进行设置。
注意的是,本发明不限于上述示例性实施例,并且在不脱离本发明的精神和范围的情况下能够进行各种不同的修改。关于利用其来执行处理的数据的单位,尽管示出的是其中基于一个字节改变数据排列位置的示例,但是不言而喻的是,能够使用任何给定数目的位的单位。类似地,循环设置数目、数据排列顺序、以及其它参数也不限于上述具体示例。
控制单元可以包括CPU(中央处理单元),该CPU执行控制处理、算术处理等等;ROM(只读存储器),该ROM存储由CPU执行的控制程序、计算程序等等;RAM(随机存取存储器),该RAM暂时地存储处理数据等等。利用这些组件,通过预定的程序,控制单元可以用作循环数目逻辑和计算顺序逻辑,并且使得上述示例性实施例描述的步骤中的每一个被执行。
尽管在上述示例性实施例和具体示例中示出在其中嵌入安全数据存储(存储器)的智能卡的示例作为程序验证装置,但是本发明不限于在其中嵌入安全数据存储(存储器)的此种智能卡(存储器卡和IC卡)。即,不管安全数据存储(存储器)的存在/不存在,根据本发明的示例性方面的程序验证装置被广泛地应用于执行程序验证的装置。
此外,尽管在上述示例性实施例和具体示例中示出了如下的示例,其中,当程序数据要被存储在安全数据存储中时,通过对程序数据执行CRC计算而获得的第一校验和值与通过对被传输到安全数据存储的程序数据执行CRC计算而获得的第二校验和值进行比较,以基于它们的匹配/不匹配来执行程序验证,但是,CRC计算结果的比较方法不限于此方法。例如,替代获得第一校验和值,可以准备预计算的验证码(期望值)。然后,第二校验和值可以与此验证码进行比较。
尽管基于对程序数据进行暂时地保留的缓冲存储器和对CRC计算结果进行暂时地保留的寄存器(CRC寄存器)是分离的电路的假设,示出上述示例性实施例,但是根据本发明的示例性方面的程序验证装置可以包括数据保留电路,该数据保留电路用作这些功能单元的组合单元,并且对用于程序验证的必要数据进行保留。
虽然已经按照若干示例性实施例描述了本发明,但是本领域的技术人员将理解本发明可以在所附的权利要求的精神和范围内进行各种修改的实践,并且本发明并不限于上述的示例。
此外,权利要求的范围不受到上述的示例性实施例的限制。
此外,应当注意的是,申请人意在涵盖所有权利要求要素的等同形式,即使在后期的审查过程中对权利要求进行过修改亦是如此。
Claims (7)
1.一种通过执行CRC计算来执行程序验证的程序验证装置,包括:
循环数目逻辑,所述循环数目逻辑使所述CRC计算被执行至少两次,并且确定其循环的数目;和
计算顺序逻辑,所述计算顺序逻辑改变用于所述CRC计算的每个循环的CRC计算的计算顺序。
2.根据权利要求1所述的程序验证装置,其中,所述循环数目逻辑包括:
循环数目计数器,所述循环数目计数器对所述CRC计算的循环的数目进行计数;
循环数目设置部件,所述循环数目设置部件保持指示CRC计算的循环的预定数目的参数;以及
循环数目确定电路,所述循环数目确定电路确定循环的数目是否已经达到预定数目。
3.根据权利要求1所述的程序验证装置,其中,所述计算顺序逻辑包括数据排列位置改变电路,所述数据排列位置改变电路改变用于每个循环的数据排列顺序。
4.根据权利要求1所述的程序验证装置,进一步包括数据保留电路,所述数据保留电路对程序验证中的数据进行保留,
其中,所述计算顺序逻辑包括地址生成电路,所述地址生成电路为每个循环改变来自于所述数据保留电路的读取地址。
5.根据权利要求4所述的程序验证装置,其中,所述地址生成电路为每个循环改变开始地址、结束地址、以及更新过程中的至少一个。
6.一种通过执行CRC计算来执行程序验证的程序验证方法,包括:
使所述CRC计算被执行至少两次;
确定所述CRC计算的循环的数目;以及
为所述CRC计算的每个循环改变CRC计算的计算顺序。
7.根据权利要求6所述的程序验证方法,其中,为所述CRC计算的每个循环改变CRC计算的计算顺序包括:
为每个循环生成用于数据保留电路的读取地址,所述数据保留电路被构造为对程序验证中的数据进行保留;以及
为每个循环改变从所述数据保留电路读出的数据的排列位置。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2009064531A JP2010218237A (ja) | 2009-03-17 | 2009-03-17 | プログラム検証装置及びその方法 |
JP2009-064531 | 2009-03-17 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101840361A true CN101840361A (zh) | 2010-09-22 |
CN101840361B CN101840361B (zh) | 2013-08-07 |
Family
ID=42306695
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201010129985.XA Expired - Fee Related CN101840361B (zh) | 2009-03-17 | 2010-03-09 | 程序验证装置及其方法 |
Country Status (3)
Country | Link |
---|---|
EP (1) | EP2230618A1 (zh) |
JP (1) | JP2010218237A (zh) |
CN (1) | CN101840361B (zh) |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102684841A (zh) * | 2012-05-31 | 2012-09-19 | 无锡众志和达存储技术有限公司 | 一种编码计算单元及解码数据校验方法 |
CN106104553A (zh) * | 2014-03-11 | 2016-11-09 | 西门子公司 | 用于检测程序代码的篡改的设备和方法 |
CN109254898A (zh) * | 2018-09-18 | 2019-01-22 | 南京科远自动化集团股份有限公司 | 一种软件模块执行顺序监视方法及监视系统 |
CN110716823A (zh) * | 2018-07-12 | 2020-01-21 | 马克西姆综合产品公司 | 用于连续验证器件状态完整性的系统和方法 |
CN111033470A (zh) * | 2017-08-21 | 2020-04-17 | 霍尼韦尔国际公司 | 确保双处理器架构中的校正程序序列 |
CN111666037A (zh) * | 2019-03-06 | 2020-09-15 | 半导体元件工业有限责任公司 | 存储器设备和数据验证方法 |
CN112462731A (zh) * | 2020-10-16 | 2021-03-09 | 北京西南交大盛阳科技股份有限公司 | 安全监督控制方法、安全监督控制装置、计算机设备及安全监督系统 |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107451494B (zh) * | 2017-06-30 | 2020-05-22 | 杭州旗捷科技有限公司 | 一种芯片改写设备的数据保护方法、电子设备及存储介质 |
US11263308B2 (en) * | 2019-03-25 | 2022-03-01 | Micron Technology, Inc. | Run-time code execution validation |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6317855B1 (en) * | 1998-04-14 | 2001-11-13 | Fujitsu Limited | Method and apparatus for checking data error correction |
US20050071730A1 (en) * | 2003-09-30 | 2005-03-31 | Lattice Semiconductor Corporation | Continuous self-verify of configuration memory in programmable logic devices |
CN1748202A (zh) * | 2003-02-07 | 2006-03-15 | 罗伯特·博世有限公司 | 用于监控电子控制的方法和设备 |
JP2007183937A (ja) * | 2006-01-09 | 2007-07-19 | Samsung Electronics Co Ltd | 不揮発性メモリのプログラム動作を検証する装置及び方法、並びにその装置を含むメモリカード |
US20070226580A1 (en) * | 2006-03-20 | 2007-09-27 | King Steven R | Validating data using processor instructions |
Family Cites Families (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP4023849B2 (ja) * | 1995-06-30 | 2007-12-19 | ソニー株式会社 | データ記録方法及び装置、並びにデータ再生方法及び装置 |
JPH11232178A (ja) * | 1998-02-16 | 1999-08-27 | Matsushita Electric Ind Co Ltd | メモリを搭載した半導体集積回路 |
JP3512175B2 (ja) * | 2000-04-14 | 2004-03-29 | 松下電器産業株式会社 | Crc演算装置、およびcrc演算方法 |
US7401234B2 (en) * | 2004-03-01 | 2008-07-15 | Freescale Semiconductor, Inc. | Autonomous memory checker for runtime security assurance and method therefore |
JP4685512B2 (ja) * | 2005-05-31 | 2011-05-18 | 川崎マイクロエレクトロニクス株式会社 | 演算処理装置 |
US8181262B2 (en) * | 2005-07-20 | 2012-05-15 | Verimatrix, Inc. | Network user authentication system and method |
JP4886614B2 (ja) * | 2007-06-22 | 2012-02-29 | 日本電信電話株式会社 | メッセージ認証子生成装置、メッセージ認証子検証装置、メッセージ認証子生成方法、メッセージ認証子検証方法、プログラム、および記録媒体 |
JP2009064531A (ja) | 2007-09-10 | 2009-03-26 | Ricoh Co Ltd | 記録方法、追記型多層光記録媒体、プログラム、記録媒体、情報記録装置及び情報記録システム |
-
2009
- 2009-03-17 JP JP2009064531A patent/JP2010218237A/ja active Pending
-
2010
- 2010-03-09 CN CN201010129985.XA patent/CN101840361B/zh not_active Expired - Fee Related
- 2010-03-16 EP EP10002768A patent/EP2230618A1/en not_active Withdrawn
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6317855B1 (en) * | 1998-04-14 | 2001-11-13 | Fujitsu Limited | Method and apparatus for checking data error correction |
CN1748202A (zh) * | 2003-02-07 | 2006-03-15 | 罗伯特·博世有限公司 | 用于监控电子控制的方法和设备 |
US20050071730A1 (en) * | 2003-09-30 | 2005-03-31 | Lattice Semiconductor Corporation | Continuous self-verify of configuration memory in programmable logic devices |
JP2007183937A (ja) * | 2006-01-09 | 2007-07-19 | Samsung Electronics Co Ltd | 不揮発性メモリのプログラム動作を検証する装置及び方法、並びにその装置を含むメモリカード |
US20070226580A1 (en) * | 2006-03-20 | 2007-09-27 | King Steven R | Validating data using processor instructions |
Cited By (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102684841A (zh) * | 2012-05-31 | 2012-09-19 | 无锡众志和达存储技术有限公司 | 一种编码计算单元及解码数据校验方法 |
CN102684841B (zh) * | 2012-05-31 | 2015-08-26 | 无锡众志和达数据计算股份有限公司 | 一种编码计算单元及解码数据校验方法 |
CN106104553A (zh) * | 2014-03-11 | 2016-11-09 | 西门子公司 | 用于检测程序代码的篡改的设备和方法 |
US10686812B2 (en) | 2014-03-11 | 2020-06-16 | Siemens Aktiengesellschaft | Device and method for detecting manipulation of a program code |
CN106104553B (zh) * | 2014-03-11 | 2021-01-26 | 西门子公司 | 用于检测程序代码的篡改的设备和方法 |
CN111033470A (zh) * | 2017-08-21 | 2020-04-17 | 霍尼韦尔国际公司 | 确保双处理器架构中的校正程序序列 |
CN110716823A (zh) * | 2018-07-12 | 2020-01-21 | 马克西姆综合产品公司 | 用于连续验证器件状态完整性的系统和方法 |
CN109254898A (zh) * | 2018-09-18 | 2019-01-22 | 南京科远自动化集团股份有限公司 | 一种软件模块执行顺序监视方法及监视系统 |
CN109254898B (zh) * | 2018-09-18 | 2021-09-24 | 南京科远智慧科技集团股份有限公司 | 一种软件模块执行顺序监视方法及监视系统 |
CN111666037A (zh) * | 2019-03-06 | 2020-09-15 | 半导体元件工业有限责任公司 | 存储器设备和数据验证方法 |
CN111666037B (zh) * | 2019-03-06 | 2024-05-10 | 半导体元件工业有限责任公司 | 存储器设备和数据验证方法 |
CN112462731A (zh) * | 2020-10-16 | 2021-03-09 | 北京西南交大盛阳科技股份有限公司 | 安全监督控制方法、安全监督控制装置、计算机设备及安全监督系统 |
Also Published As
Publication number | Publication date |
---|---|
JP2010218237A (ja) | 2010-09-30 |
CN101840361B (zh) | 2013-08-07 |
EP2230618A1 (en) | 2010-09-22 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101840361B (zh) | 程序验证装置及其方法 | |
JP5780174B2 (ja) | 不良ビットエラーを処理するシステムおよび方法 | |
US20090055906A1 (en) | Method and apparatus for embedded memory security | |
JP7458763B2 (ja) | 階層セキュリティを備えたフラッシュ変換層 | |
EP1855281A2 (en) | Apparatus for writing data to a medium | |
US20060120166A1 (en) | Data processing apparatus and method for flash memory | |
JP2001297038A (ja) | データ記憶装置および記録媒体並びに記録媒体制御方法 | |
CN111709010B (zh) | 基于国密算法的终端认证信息提取和验证方法及系统 | |
US20070083768A1 (en) | Program loader operable to verify if load-destination information has been tampered with, processor including the program loader, data processing device including the processor, program loading method, and integrated circuit | |
WO2003065225A1 (fr) | Dispositif de memoire, appareil terminal et systeme de reparation de donnees | |
CN111709059B (zh) | 基于国密算法的终端认证信息生成方法及系统 | |
CN113065169A (zh) | 一种文件存证方法、装置及设备 | |
CN113632084B (zh) | 运行时代码执行验证方法、设备及系统 | |
EP2568655B1 (en) | Method for authenticating a storage device, machine-readable storage medium, and host device | |
KR101512927B1 (ko) | 비휘발성 메모리의 페이지 관리 방법 및 장치 | |
JP4135413B2 (ja) | メモリチェックシステムおよびメモリチェック方法、信号処理装置および信号処理装置のメモリチェック方法、ならびに、メモリチェックプログラム | |
CN111052089B (zh) | 数据保护 | |
JP2008204085A (ja) | 半導体記憶装置 | |
US8612777B2 (en) | Apparatus and method for writing data to be stored to a predetermined memory area | |
JP7160860B2 (ja) | メモリエラーを訂正するためのシステム及び方法 | |
JP4888862B2 (ja) | メモリ管理方法 | |
CN112927119A (zh) | TrueType字库的防盗信息嵌入方法及使用方法 | |
US20220261176A1 (en) | Storage Device and Method for Modifying Memory Cells of a Storage Device | |
TWI797932B (zh) | 韌體驗證系統及韌體驗證方法 | |
CN106484477A (zh) | 安全的软件下载与启动方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
CP02 | Change in the address of a patent holder |
Address after: Tokyo, Japan Patentee after: Renesas Electronics Corporation Address before: Kanagawa, Japan Patentee before: Renesas Electronics Corporation |
|
CP02 | Change in the address of a patent holder | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20130807 Termination date: 20190309 |
|
CF01 | Termination of patent right due to non-payment of annual fee |