检测对存储器的故障注入式攻击的方法及相应的存储器的制作方法

文档序号:6772635阅读:219来源:国知局
专利名称:检测对存储器的故障注入式攻击的方法及相应的存储器的制作方法
技术领域
本发明总体涉及电子电路,更具体地涉及检测对存储器的故障注入式攻击。本发明有利地但以非限制性方式应用于芯片卡,并应用于芯片卡所包含的保密数 据的保护。
背景技术
在黑客进行的从例如芯片卡中的受保护存储器之类的存储器中提取保密数据的 可能攻击中,存在例如借助于放射线(激光、红外线、X射线等)以扰乱存储器的操作和/或 内容为目的的所谓故障注入式攻击(DFA或“差分故障分析”)。因此,能够检测这种故障注入式攻击尤其有用。一旦检测到攻击,依赖于实际应用 就有或者限制组件的使用或者防止移交敏感数据或者重新初始化组件等的多种解决方案。对于传统的存储器架构,例如其中存储的每个位都能够被单独读取的位型存储器 架构来说,可以在读取操作期间基于对所读取的位进行的奇偶校验来检测这种攻击。然而,在故障注入式攻击实际已经发生时,这种解决方案在某些情况下无法检测 到这种攻击。

发明内容
根据第一实施方式和实施例,提出一种检测对存储器的故障注入式攻击的方法及 相应的存储器,提供对故障注入式攻击的更可靠检测。根据一方面,提出一种检测对存储器的故障注入式攻击的方法,所述存储器包括 至少一组存储单元,所述至少一组存储单元用于存储包括数据位和m个奇偶校验位的至少 一个位块,所述检测包括在读取块时,读取所述块的包含在相应存储单元中的每个位,以 及基于读取的每个数据位的值和读取的每个奇偶校验位的值执行奇偶校验。根据该方面的一般性特征,该方法包括在所述组的至少一些存储单元之间插入基准存储单元以便创建m个存储单元的 分离包;在每个基准存储单元中存储基准位,所述基准位被编程有在故障注入式攻击期间 很可能会被修改的基准值;以及在每个m个存储单元的包中存储所述块中与不同奇偶性相关联的m个位,其中m 大于1,并且,所述检测还包括在读取所述块时,对每个基准位的值进行校验。因此,例如在存储板中选择的点处插入基准位,并在这些基准位之间存储必须被 读取的、与不同奇偶性相关联的位块,使得即使在激光束宽至足以照射很可能包含相同奇 偶性的两个位的两个存储单元时也可以检测到故障注入式攻击,这是因为,在这种情况下, 激光束也会通过反转基准位的值来影响基准位,而这将导致检测到攻击的信号。此外,与给定奇偶性相关联的位可以或者是具有所述奇偶性的数据位,甚至也可以是与该奇偶性有关的奇偶校验位本身。尽管多处位置可以用于插入基准存储单元,但是在特别给定位的位号与用于存储 这些位的存储单元的对应关系时,每m个存储单元插入基准存储单元尤其简单。根据一种实施方式,当存储器包括用于分别存储多个位块的多组存储单元,每个 位块具有相同数目的数据位和m个奇偶校验位,并且用于存储不同块中同一位号的位的所 有存储单元被一起归组到存储板的同一个区域内时,所述基准存储单元优选被插入到所述 区域的至少一些区域之间。根据另一方面,提出一种存储器,包括存储板,包括至少一组存储单元,所述至少 一组存储单元用于存储包括数据位和m个奇偶校验位的至少一个位块;以及故障注入式攻 击的检测装置,包括读取装置,被配置为读取块中的每个位,以及第一校验装置,被配置为 在读取块时,基于读取的每个数据位的值和读取的每个奇偶校验位的值执行奇偶校验。根据该方面的一般性特征,所述存储板包括基准存储单元,被布置在所述组的至 少一些存储单元之间,以便创建m个存储单元的分离包,每个基准存储单元存储基准位,所 述基准位被编程有在故障注入式攻击期间很可能会被修改的基准值,并且每个m个存储单 元的包用于存储所述块中与不同奇偶性相关联的m个位,其中m大于1,并且所述检测装置 进一步包括第二校验装置,被配置为在读取所述块时,对每个基准位的值执行校验。根据一个实施例,每m个存储单元布置基准存储单元。根据一个实施例,其中所述存储板包括多组存储单元,用于分别存储多个位块, 每个位块具有相同数目的数据位和m个奇偶校验位,用于存储不同块中同一位号的位的所 有存储单元被一起归组到存储板的同一个区域内,所述基准存储单元被布置在所述区域的 至少一些区域之间。根据另一方面,提出一种合并有以上所限定的存储器的集成电路。根据又一方面,提出一种包括以上所限定的集成电路的芯片卡。


通过阅读对非限制性实施方式和实施例的详细描述以及附图,本发明的其它特征 和优点将更明显,附图中图1示意性地示出根据现有技术的示例性存储器;图2示意性地示出根据本发明的存储器的示例性实施例;图3示意性地示出根据本发明的攻击检测方法的示例性实施方式;图4至图7示意性地示出根据本发明的存储器的其它可能配置;图8示意性地以更详细的方式示出根据本发明的存储器的再一示例性实施例;并 且图9至图10示意性地示出本发明其它方面的示例。
具体实施例方式图1中,附图标记DM表示传统的存储器,其存储板PM包括存储单元的集合GCELi。 存储单元的同一个集合中所有的存储单元用于存储必须存储于存储板中的不同位块BL的 相同位号的位。
5
更具体地说,在这里描述的示例中,必须存储于存储板中的位块BL包括数据位和 奇偶校验位,在该示例中,数据位有16个(位号为0至15),奇偶校验位有两个位号为16 和17。此外,对于给定块BL,存储单元CELO用于存储位号为0的位b0,存储单元CELl用 于存储位号为1的位bl,更一般地,存储单元CELi用于存储位号为i的位bi。因此,存储 单元CELi的组用于存储块BL。这里,存储器具有位架构,这意味着在读取块BL时,该块的所有位都可以被单独 读取。对此,读取装置ML通常被提供为可以选择包含块BL的存储单元组,以读取该块BL 的位 b0-bl7。在激光束触及(照射)包含位的存储单元时,位的值会改变并假设一故障值(故 障模式),除非该位已经被编程为与其故障值相对应的值。例如,如果位的故障值等于1,并 且该位具有等于0的编程值,则该位受激光射线影响的事实结果使其切换为1。然而,如果 它已经被编程为值1,则其在受激光束影响时将仍然被编程为值1。为了检测例如借助于激光束进行的故障注入式攻击,提出执行奇偶校验的建议。在图1描述的示例中,提供两个奇偶校验位,即偶数奇偶校验位(位bl6)和奇数 奇偶校验位(位bl7)。位bl6的值由块的偶数数据位的值之和得到,而位bl7的值由块的 奇数数据位的值之和得到。为了在读取块BL时执行奇偶校验,读取的每个偶数位的值被用作确定新的奇偶 校验位的基础,新的奇偶校验位的值与读取的奇偶校验位(位bl6)的值进行比较。如果二 者不匹配,则可以得出有故障注入式攻击的结论。对奇数位执行同样的操作。然而,在某些情况下,奇偶校验可能会导致在事实上已经实际发生了攻击的情况 下得出不存在这种攻击的结论。更具体地说,如图1所示,假定激光束照射位号为0、1和2的位。同时假定在此照 射期间,块的位b0和位b2的值改变,并且假定在此照射期间,奇数位bl的值由于已经对应 于故障值而没有改变。在这种情况下,对奇数位的奇偶校验不会给出检测到攻击的指示。类似地,由于两 个偶数位的值改变,因此对偶数位的奇偶校验也会导致得出不存在攻击的结论。图2示出了尤其可以纠正这种缺陷的存储器的示例性实施例。更具体地说,在所描述的示例中,仍然假定必须存储在装置DM的存储板PM中的每 个块均包括η个数据位和m个奇偶校验位,且在这种情况下η = 16,m = 2。一般情况下,m 大于0且小于或等于η。在这里呈现的架构中,用于存储不同块中位号为i的位bi的所有 存储单元CELi被一起归组为单元的集合GCELi。此外,在这些不同的集合中,每组存储单元CEL0-CEL17用于存储18个位b0_bl7 的块BL。在这里描述的示例中,块的数据位是位号为0-15且存储于存储单元CEL0-CEL15 中的位,而两个奇偶校验位是分别存储于存储单元CEL16和CEL17中的位号为16和17的位。
如果我们现在从用于存储块BL的存储单元CEL0-CEL17组的级别来看,在该组的 至少一些存储单元之间插入了与该组的存储单元相同并且在该例子中被称为基准存储单 元的其它存储单元,从而创建m个存储单元的分离包。在本示例中,m等于2。因此创建了两个存储单元的包。更具体地说,包PQO由存 储单元CELO和CELl形成,而包PQl由存储单元CEL2和CEL3形成,...并且包PQ7由存储 单元CEL14和CEL15形成,而最后一个包,即包PQ8由存储单元CEL16和CEL17形成。每个基准单元CELRj包含基准位dj,基准位dj被编程为在故障注入式攻击期间很 可能会被修改的基准值。换言之,如果位的故障值等于1,则每个基准位最初被编程为值0, 因而激光束对该位的照射就会导致该位的值改变为逻辑值1。此外,在每个包中存储有块BL的与不同奇偶性相关联的m位(在此例子中为两 位)。与给定奇偶性相关联的位可以是具有所述奇偶性的数据位或者甚至是相应的奇 偶校验位。因此,与偶数奇偶性相关联的位可以是偶数数据位或甚至是偶数奇偶校验位。类 似地,与奇数奇偶性相关联的位可以是奇数数据位或甚至是奇数奇偶校验位。此外,从图2中可以看出,包PQ0-PQ7中的每一个包含奇数位和偶数位,而包PQ8 包含偶数奇偶校验位和奇数奇偶校验位。然而,还有可能是每个块的偶数奇偶校验位被容纳在例如包1中位号为2的位中, 并且奇数奇偶校验位被容纳于位号为5的位的位置中。在这种情况下,位号为2和5的位 会被容纳于包PQ8中。更一般地说,由于包的m个存储单元存储与不同奇偶性相关联的m个位,因此块的 位的位号与用于存储该位的存储单元的位号之间的对应关系并不重要。在例如使用激光束进行故障注入式攻击的情况下,如果激光束仅触及例如单元 CEL0,从而改变了位b0的值,则这种攻击会通过偶数奇偶校验检测到。在激光束仅照射例如位号为bl的位并且改变了其值时同样有效。该攻击会通过 奇数奇偶校验检测到。如果激光束同时照射两个位b0和bl,则偶数奇偶校验和奇数奇偶校验也会检测 到该攻击。此外,如果激光束甚至更宽,以致照射位b0、bl、dl和b2全部,则结果必然是基准 位dl的基准值改变,这会使得可以检测到该攻击,并且即使是在两个偶数位bO和b2的值 同时改变时,也可以检测到该攻击。显而易见的是,如果激光束仅照射奇数位bl,而没有改变它的值,则奇数奇偶校验 不会检测到该攻击。然而,在任何情况下这都无关紧要,因为该攻击不会使位bl的真正值 被修改。图3概括了使得可以检测故障注入式攻击的实施方式的主要步骤。更具体地说,在读取块BL时,读取块的所有位(步骤30)。基于读取的所有偶数位的值执行偶数奇偶校验位的计算(步骤31)。并且基于读取的奇数位的值执行奇数奇偶校验位的计算(步骤32)。并且执行基准位的值的读取(步骤33)。然后执行偶数奇偶校验(步骤34),包括将计算出的偶数奇偶校验位与读取的偶数奇偶校验位进行比较。类似地,执行奇数奇偶校验(步骤35),包括将计算出的奇数奇 偶校验位的值与读取的奇数奇偶校验位的值进行比较。并且执行读取的基准位的值与这些位的基准值之间的比较(步骤36)。在所有这些比较给出正确结果的情况下(步骤37、38和39),没有检测到攻击(步 骤 41)。然而,如果这些比较37、38和39中至少之一给出错误的逻辑值,则检测到故障注 入式攻击(步骤40)。在图2所示的示例中,每m个存储单元,在该示例中是每两个存储单元,插入基准 存储单元CELRj。 那么,基准位的数目等于比值n/m,其中η是数据位的数目,m是奇偶校验位的数 目。因此,在图2的示例中,基准位的数目等于8。然而,其它配置也可以,例如图4至图7中示出的示例。在图4至图7中,为了简化起见,仅表示出块的数据位和奇偶校验位,以及在这些 位的至少某些位之间插入的基准位。同样,在这些附图中,这些位也对应于存储它们的存储单元。图4中,仍然假定块包括位号为1至15的16个数据位,以及两个奇偶校验位,即 位 bl6 和 bl7。在该示例中,也是块的每两位(或者每两个存储单元)插入基准位dj (对应于基 准存储单元)。然而,并不是像图2的示例那样从位bl之后开始,而是从位b0之后开始。因此在这种情况下,插入了 Ι+η/m个基准位,即在当前示例中,插入9个基准位 dl-d9。由此可以看出,两个存储单元的分离包PQ1-PQ8仍然各自包含与不同奇偶性相关 联的两个位。更具体地说,包PQl至PQ7各自包含偶数数据位和奇数数据位,而包PQ8包含 位号为15的奇数数据位(bl5)和位号为16的偶数奇偶校验位(bl6)。此外,在存储板中彼此相对的位置的存储单元中存储的位号为0和18的位,即位 b0和位bl7,形成块BL中与不同奇偶性相关联的两个位的第九个包。实践中,位b0是块的 第一个偶数位,并且位bl7是奇数奇偶校验位。显而易见的是,可以对每个包中位的顺序和/或位的位号进行修改,只要每个包 存储与不同的奇偶性相关联的两个位即可。图5中,假定块BL包括十六个数据位(η = 16) b0_bl5,和四个奇偶校验位bl6、 bl7、bl8、bl9(m = 4)。奇偶校验位b 16的值由位号为4k的位的值之和得到,其中k从0至3变化。奇偶校验位bl7的值由位号为4k+l的位的值之和得到,其中k从0至3变化。奇偶校验位bl8的值由位号为4k+2的位的值之和得到,其中k从0至3变化。奇偶校验位bl9的值由位号为4k+3的位的值之和得到,其中k从0至3变化。这里同样,每四个存储单元,即块的每四位,插入包含基准位dj的基准存储单元。 在图5的示例中,这种插入开始于位号为3的位b3之后,这使得插入四个基准位(n/m = 16/4 = 4)。包PQO、PQU PQ2、PQ3和PQ4中的每一个都存储与不同奇偶性相关联的位。在图5的示例中,包PQ4包括所有的奇偶校验位。然而,也可以将这些奇偶校验位分布在其它包 PQO、PQU PQ2和PQ3中,只要这些包中每个包的剩余位与不同于其中所存储奇偶校验位的 奇偶性的奇偶性相关联。图6中,仍然有十六个数据位和四个奇偶校验位(η = 16,m = 4)。然而,基准位 dj的插入开始于位号为1的位b 1之后。这使得插入五(Ι+η/m)个基准位dl_d5。包PQ1、 PQ2和PQ3各自包括奇偶性不同的四个数据位,而包PQ4包括奇偶性不同的两个数据位(位 bl4和bl5)以及与其它两个奇偶性相关联的两个奇偶校验位bl6和bl7。最后,分别包含位b0、bl、bl8和bl9的存储单元形成第五个包。图7中,假定块具有十六个数据位b0_bl5(n = 16)和一个奇偶校验位bl6 (m = 1),该奇偶校验位bl6的值由块的所有数据位的值之和得到。在这种情况下,在块的所有位之间都插入基准位dj,也就是说,基准存储单元被置 于用于分别包含块的数据位和奇偶校验位的所有存储单元之间。在该示例中,再次构建了包含块中的一位的存储单元的分离包。更具体地参见图8来更详细地示出存储器DM的攻击检测装置的示例性实施例。在该示例中,如以上所述,用于存储不同块中位号为0的位b0的存储单元,例如单 元CELO被一起归组,以形成存储单元的集合或矩阵GCEL0。该集合GCELO位于存储板的区 域ZMO内。读取装置与存储板的每个区域ZMk相关联,使得可以选择包含块中实际将要被 读取的位b0的单元CEL0。这些装置MLO具有本身已知的常规结构,并创新性地包括列译码 器和读取器放大装置。此外,存储器DM还包括具有本身已知的常规结构的行译码器,使得 可以在存储板中选择存储单元的期望行。所以,行和列的选择使得可以向装置MLO的输出端传送块中将要被读取的位号为 0的位b0。因此,与不同集合GCELk相关联的不同装置MLk分别传送块中的位b0_bl5。这些 数据位在具有本身已知的常规结构的计算装置MCLl中进行处理,即确定偶数位的值之和 以及奇数位的值之和,以确定分别以bl6c和bl7c表示的计算的偶数奇偶校验位和奇数奇 偶校验位。然后,在比较器CMPPlO中将位bl6c与从存储板中提取的偶数奇偶校验位bl6进 行比较。类似地,在比较器CMPPll中将计算的奇偶校验位bl7c与从存储板中提取的奇数 奇偶校验位bl7进行比较。比较器CMPPlO和CMPPll分别提供表示真比较结果或假比较结果的信号SC16和 SC17,也就是说没有检测到攻击或者是检测到攻击。此外,将基准存储单元布置在存储板的不同区域ZMk之间。更具体地说,如图8所示,在位于区域ZMO与包含用于存储每个块中位号为1的位 的存储单元的区域ZMl之间的区域ZMRl中提供一列基准存储单元。该基准存储单元CELRl 的集合GCELRl链接到读取装置MLRl,读取装置MLRl具有与装置MLO类似的结构,但不存在 列译码器,这是由于这些基准存储单元的集合仅布置在同一列上。显而易见的是,每一行都有基准存储单元,结果每一行由行译码器选择。从所选择的基准单元CELRl提取的基准位dl会在比较器CMPl中与基准值进行比较,从而传送比较信号SCR,该比较信号表示比较结果的真值或假值,从而表示没有检测到 攻击或检测到攻击。因此,装置CMPl在这里形成被配置为对相应基准位的值执行校验的第二校验装置。存储器DM可以有利地以集成形式制作并插入集成电路CI内,如图9中以极其示 意的方式所示出的。这种集成电路CI可以形成芯片卡CP的芯片P的一部分(图10)。因此,本发明使得可以以简单方式尤其改善对存储器的故障注入式攻击进行检测 的可靠性,并能够应用于具有位架构的任何类型的存储器,例如ROM、RAM、FLASH和其它这 类存储器。
权利要求
一种检测对存储器的故障注入式攻击的方法,所述存储器包括至少一组存储单元,所述至少一组存储单元用于存储包括数据位和m个奇偶校验位的至少一个位块,其中所述检测包括在读取块时,读取所述块的包含在相应存储单元中的每个位(30),以及基于读取的每个数据位的值和读取的每个奇偶校验位的值来执行奇偶校验(37,38),其特征在于,该方法包括在所述组的至少一些存储单元(CELi)之间插入基准存储单元(CELR1),以便创建m个存储单元的分离包;在每个基准存储单元中存储基准位(dj),所述基准位(dj)被编程有在故障注入式攻击期间很可能会被修改的基准值;以及在每个m个存储单元的包中存储所述块中与不同奇偶性相关联的m个位,其中m大于1,并且所述检测还包括在读取所述块时,对每个基准位的值进行校验(39)。
2.根据权利要求1所述的方法,其中每m个存储单元插入基准存储单元(CELRj)。
3.根据上述权利要求之一所述的方法,其中所述存储器包括多组存储单元,用于分别存储多个位块,每个位块(BL)具有相同数目的数据位和m个 奇偶校验位,用于存储不同块中同一位号的位的所有存储单元(GCELO)被一起归组到存储 板的同一个区域(ZMO)内,并且所述基准存储单元(CELRl)被插入到所述区域的至少一些 区域之间。
4.一种存储器,包括存储板(PM),包括至少一组存储单元,所述至少一组存储单元用于存储包括数据位和 m个奇偶校验位的至少一个位块(BL);以及故障注入式攻击的检测装置,包括读取装置(ML),被配置为读取块中的每个位;以及 第一校验装置(MCL1,CMPP10,CMPP11),被配置为在读取块时,基于读取的每个数据位的值 和读取的每个奇偶校验位的值执行奇偶校验,其特征在于所述存储板(PM)包括基准存储单元(CELRj),被布置在所述组的至少一些存储单元之间,以便创建m个存储 单元的分离包(PQ),每个基准存储单元存储基准位(dj),所述基准位(dj)被编程有在故障 注入式攻击期间很可能会被修改的基准值,并且每个m个存储单元的包用于存储所述块中 与不同奇偶性相关联的m个位,其中m大于1,并且所述检测装置进一步包括第二校验装置(CMPl),被配置为在读取所述块时,对每个基准位的值执行校验。
5.根据权利要求4所述的存储器,其中每m个存储单元布置基准存储单元(CELRj)。
6.根据权利要求4至5之一所述的存储器,其中所述存储板包括多组存储单元,用于分别存储多个位块,每个位块具有相同数目的数据位和m个奇偶 校验位,用于存储不同块中同一位号的位的所有存储单元(GCELO)被一起归组到所述存储 板的同一个区域(ZMO)内,并且所述基准存储单元(CELRl)被布置在所述区域的至少一些 区域之间。
7.一种集成电路,包括根据权利要求4至6之一所述的存储器。
8. —种芯片卡,包括根据权利要求7所述的集成电路。
全文摘要
提供一种检测对存储器的故障注入式攻击的方法及相应存储器。存储器包括存储板,包括用于存储包括数据位和m个奇偶校验位的至少一个位块的至少一组存储单元;故障注入式攻击的检测装置,包括被配置为读取块的每个位的读取装置和被配置为基于读取的每个数据位的值和读取的每个奇偶校验位的值执行奇偶校验的第一校验装置;基准存储单元,被布置在所述组的至少一些存储单元之间以便创建m个存储单元的分离包,每个基准存储单元存储被编程有故障注入式攻击期间很可能会被修改的基准值的基准位,并且每个m个存储单元的包用于存储所述块中与不同奇偶性相关联的m个位,m大于1,检测装置进一步包括第二校验装置,被配置为对每个基准位的值执行校验。
文档编号G11C29/42GK101923903SQ20101020592
公开日2010年12月22日 申请日期2010年6月13日 优先权日2009年6月16日
发明者朱利安·梅尔切尔, 马蒂厄·利萨特 申请人:St微电子(鲁塞)有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1