CN108011706A - 数据处理装置和用于数据的加密处理的方法 - Google Patents
数据处理装置和用于数据的加密处理的方法 Download PDFInfo
- Publication number
- CN108011706A CN108011706A CN201711027111.1A CN201711027111A CN108011706A CN 108011706 A CN108011706 A CN 108011706A CN 201711027111 A CN201711027111 A CN 201711027111A CN 108011706 A CN108011706 A CN 108011706A
- Authority
- CN
- China
- Prior art keywords
- seed
- data
- sequence
- data block
- processing equipment
- 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
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/14—Protection against unauthorised use of memory or access to memory
- G06F12/1408—Protection against unauthorised use of memory or access to memory by using cryptography
-
- 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/70—Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
- G06F21/71—Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information
- G06F21/75—Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information by inhibiting the analysis of circuitry or operation
- G06F21/755—Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information by inhibiting the analysis of circuitry or operation with measures against power attack
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/002—Countermeasures against attacks on cryptographic mechanisms
- H04L9/003—Countermeasures against attacks on cryptographic mechanisms for power analysis, e.g. differential power analysis [DPA] or simple power analysis [SPA]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
- G06F11/1008—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
- G06F11/1048—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices using arrangements adapted for a specific error detection or correction feature
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
- G06F12/0238—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
- G06F12/0246—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
-
- 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/602—Providing cryptographic facilities or services
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C16/00—Erasable programmable read-only memories
- G11C16/02—Erasable programmable read-only memories electrically programmable
- G11C16/06—Auxiliary circuits, e.g. for writing into memory
- G11C16/34—Determination of programming status, e.g. threshold voltage, overprogramming or underprogramming, retention
- G11C16/3418—Disturbance prevention or evaluation; Refreshing of disturbed memory data
- G11C16/3427—Circuits or methods to prevent or reduce disturbance of the state of a memory cell when neighbouring cells are read or written
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/06—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols the encryption apparatus using shift registers or memories for block-wise or stream coding, e.g. DES systems or RC4; Hash functions; Pseudorandom sequence generators
- H04L9/0618—Block ciphers, i.e. encrypting groups of characters of a plain text message using fixed encryption transformation
- H04L9/0625—Block ciphers, i.e. encrypting groups of characters of a plain text message using fixed encryption transformation with splitting of the data block into left and right halves, e.g. Feistel based algorithms, DES, FEAL, IDEA or KASUMI
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/06—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols the encryption apparatus using shift registers or memories for block-wise or stream coding, e.g. DES systems or RC4; Hash functions; Pseudorandom sequence generators
- H04L9/0618—Block ciphers, i.e. encrypting groups of characters of a plain text message using fixed encryption transformation
- H04L9/0631—Substitution permutation network [SPN], i.e. cipher composed of a number of stages or rounds each involving linear and nonlinear transformations, e.g. AES algorithms
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/06—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols the encryption apparatus using shift registers or memories for block-wise or stream coding, e.g. DES systems or RC4; Hash functions; Pseudorandom sequence generators
- H04L9/0643—Hash functions, e.g. MD5, SHA, HMAC or f9 MAC
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/06—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols the encryption apparatus using shift registers or memories for block-wise or stream coding, e.g. DES systems or RC4; Hash functions; Pseudorandom sequence generators
- H04L9/065—Encryption by serially and continuously modifying data stream elements, e.g. stream cipher systems, RC4, SEAL or A5/3
- H04L9/0656—Pseudorandom key sequence combined element-for-element with data sequence, e.g. one-time-pad [OTP] or Vernam's cipher
- H04L9/0662—Pseudorandom key sequence combined element-for-element with data sequence, e.g. one-time-pad [OTP] or Vernam's cipher with particular pseudorandom sequence generator
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/20—Employing a main memory using a specific memory technology
- G06F2212/202—Non-volatile memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2221/00—Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F2221/21—Indexing scheme relating to G06F21/00 and subgroups addressing additional information or applications relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F2221/2123—Dummy operation
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C7/00—Arrangements for writing information into, or reading information out from, a digital store
- G11C7/10—Input/output [I/O] data interface arrangements, e.g. I/O data control circuits, I/O data buffers
- G11C7/1006—Data managing, e.g. manipulating data before writing or reading out, data bus switches or control circuits therefor
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Signal Processing (AREA)
- Computer Networks & Wireless Communication (AREA)
- Computer Hardware Design (AREA)
- Software Systems (AREA)
- Mathematical Physics (AREA)
- Quality & Reliability (AREA)
- Power Engineering (AREA)
- Health & Medical Sciences (AREA)
- Bioethics (AREA)
- General Health & Medical Sciences (AREA)
- Storage Device Security (AREA)
Abstract
公开了一种数据处理装置和用于数据的加密处理的方法。数据处理装置包括:变形器,其被配置成根据第一种子对第一数据块进行变形;种子生成器,其被配置成生成第二种子序列,其中,第二种子序列包括第一种子;加密处理器,其被配置成接收经变形的第一数据块,并且对于每个第二种子,根据第二种子对经变形的第一数据块进行变形以生成第二数据块序列,并且对第二数据块序列中的每个第二数据块进行加密处理以生成经处理的数据块序列;以及提取器,其被配置成从经处理的数据块序列中提取第一数据块的加密处理结果。
Description
技术领域
本公开涉及数据处理装置和用于数据的加密处理的方法。
背景技术
处理安全数据的电子设备(如加密密钥)应受到保护以免受诸如错误攻击和侧信道分析等攻击。一种对抗攻击的方法是引入虚拟(dummy)计算,其在处理流程中被引入。然而,虚拟操作的执行和要在虚拟操作中处理的虚拟数据的生成均消耗处理能力,因此期望一种使得能够高效生成虚拟数据的方法。
发明内容
根据一个实施方式,提供了一种数据处理装置,所述数据处理装置包括:变形器,所述变形器被配置成根据第一种子对第一数据块进行变形;种子生成器,所述种子生成器被配置成生成第二种子序列,其中,所述第二种子序列包括第一种子;加密处理器,所述加密处理器被配置成接收经变形的第一数据块,并且对于每个第二种子,根据第二种子对经变形的第一数据块进行变形以生成第二数据块序列,并且对第二数据块序列中的每个第二数据块进行加密处理以生成经处理的数据块序列;以及提取器,所述提取器被配置成从经处理的数据块序列中提取第一数据块的加密处理结果。
附图说明
在附图中,在不同的视图中相似的附图标记通常指代相同的部分。附图不一定按比例绘制,而是通常重点在于说明本发明的原理。在下面的描述中,参考以下附图描述各个方面,附图中:
图1示出了芯片卡;
图2示出了根据一个实施方式的数据处理装置,例如智能卡或安全控制器;
图3示出了根据另一实施方式的数据处理装置;
图4示出了包括接受共享数据的加密核的数据处理装置;
图5示出了根据一个实施方式的数据处理装置;
图6示出了说明用于数据的加密处理的方法的流程图。
具体实施方式
以下详细描述涉及通过示例的方式示出可以实践本发明的本公开的具体细节和方面的附图。在不脱离本发明的范围的情况下,可以利用其他方面并且进行结构、逻辑和电变化。本公开的各个方面不必相互排斥,因为本公开的一些方面可以与本公开的一个或更多个其他方面组合以形成新的方面。
图1示出了芯片卡100。
芯片卡(或智能卡)100包括载体101和芯片卡模块102。芯片卡模块包括各种部件,诸如非易失性存储器103、易失性存储器(例如RAM)104和CPU(中央处理单元)105。为了执行加密操作,芯片卡模块可以包括一个或更多个加密协处理器106,即一个或更多个加密(图形)加速器或加密(图形)模块。
一般来说,例如由加密协处理器106所实现的加密核应该有效地抵御错误攻击和侧信道分析(即差分功率分析(DPA))。这样做的一个选择是实施掩蔽(mask)以使内部状态在实现的处理中随机化以及双重计算以例如保护AES(高级加密标准)实现。然而,直接的方法可能导致区域方面的实现成本高,以及设计工作方面的执行很复杂或者根本不足够(这是由于高阶攻击、错误攻击或实现错误)。此外,有时在非安全关键数据必须以高性能被处理的非安全操作模式下执行加密核时,最好使用除了掩蔽之外的其他方法来实现高性能。
除了掩蔽或功率平衡的逻辑样式之外,保护加密核免受功率分析的一种方法是使用虚拟计算来引入附加的噪声/跟踪失配。虚拟计算可以被用于加密核的执行流(即虚拟循环或虚拟块)内部(例如,利用虚拟数据进行S-Box(S盒)评估)或被用于更高级别。在这种情况下,利用虚拟数据(即,与真实数据不同的数据(例如包括有用数据和密钥数据))来执行密码原语(即,一种AES加密)的完全虚拟计算作为虚拟计算。这也允许隐藏双重计算来检查(例如,由激光器引入的)错误。作为示例,配备有由CPU 105执行的程序所控制的基于硬件的加密加速器106的智能卡100可以计算16个加密操作(例如,AES加密),其中两个操作对真实数据起作用而14个操作对随机数据起作用,并且其中真实操作和虚拟操作以随机方式交错。为了检测错误,CPU 105可以检查两个真实计算的结果是否相匹配。
这种方法仍然留有如何以高效的方式在CPU上生成虚拟数据的问题。特别是当考虑安全编码规则时,为虚拟计算和真实计算生成输入的软件的性能以及检查(共享)可能是一种负担并且减慢整个系统的工作(即使利用非常快速的加密加速器也是如此)。
另外地,这种基于软件的方法需要在CPU 105与加密加速器106之间进行大量的数据传输,使得性能可能不足。此外,对于公共缓冲区宽度,CPU 105必须向加密加速器106不断地馈送数据,或者必须获取并存储结果,从而不能执行其他任务。另外地,数据传输操作通常在这样的系统中的功率配置文件(profile)中可见,并且在CPU上生成随机虚拟数据成本很高。如果加速器106不支持掩蔽传输,则附加的安全性问题是数据必须以明文发送到其中攻击者能够探测数据(尽管如此,攻击者仍然必须区分开虚拟数据和真实数据)的加速器106。为了检测强制攻击,可能需要在虚拟计算流内难以隐藏的知道答案测试(know-answer-test)。
在下文中,描述了解决用于通用目的加密加速器的基于高效CPU的虚拟数据生成的上述问题的方法,并且描述了用于通过提出将功能高效划分成软件和硬件及其交互来进行CPU控制的但硬件加速的虚拟计算的方法。应当注意,下面描述的方法不仅可以应用于芯片卡模块(诸如图1的芯片卡模块102),而且可以应用于其他安全元件,例如,被实现为集成电路的嵌入式安全元件(例如,TPM(可信平台模块)),其可以被不同地封装,例如不被安装在塑料卡上。
下面描述的方法与实际的加密操作无关,并且可以与用于对称密码(例如AES、DES(数据加密标准))、散列函数、(例如SHA(安全散列算法)-1、SHA-2、SHA-3)、流密码(如Achterbahn或Trivium)或者在一些限制下的公钥密码(如ECC(椭圆曲线加密)、RSA或NTRU)的(包括在加密加速器或加密模块中的)一个或更多个加密核结合使用。加密核本身可以配备有或不配备有诸如随机掩蔽、功率平衡逻辑样式或错误检测码的安全特征。
在下文中,描述了一种用于使用通用目的加密加速器(加密模块)的基于CPU的虚拟计算的方法,其可以使得(待被加密处理,例如加密或解密的)数据或共享的加密密钥被传输或可以不允许它们被传输。对于这种方法,不需要对虚拟数据生成的硬件支持—然而,数据传输可能会导致性能下降。针对智能卡或安全控制器架构的一个示例在图2中给出。
图2示出了数据处理装置200,例如智能卡或安全控制器。
装置200包括CPU 201、RAM 202和非易失性存储器203。
在该架构中,CPU 201经由共享总线205访问各个加密模块204,每个加密模块经由相应的接口206耦接至共享总线205。每个加密模块204包括用于(例如根据AES、SHA、ECC)执行某些加密操作的加密核,并且可以配备有或不配备有基于硬件的安全特征。总线205本身可以被掩蔽或明示。
对于下面描述的方法,假设在执行加密操作之前,将要处理的掩蔽(或明文)数据(其可以包括例如待加密或解密的有用数据或密钥数据)存储在装置的存储器即NVM 203或RAM 202中。
装置200(例如,基于用户到装置200的输入的CPU 201)选择随机初始种子,并且在CPU 201上执行的软件中使线性PRNG(伪随机数发生器)初始化。
然后,CPU 201使用该PRNG的输出,以通过将待处理的数据异或到RAM 202中的(可能首先从NVM 203移动到RAM 202中的)数据(即,XOR(异或)-将其组合)而使待处理的数据变形(换句话说掩蔽)。然后,CPU 201生成随机的种子序列(例如,基于用户到装置的输入)。CPU 201以特定方式选择这些种子。在将利用来自序列的种子播种的PRNG的输出应用(即,异或)到先前经变形的数据的情况下,该序列的一个种子去除变形并产生原始数据(即序列的一个种子是初始的种子;利用该种子对经变形的数据进行变形即恢复为原始数据),而序列的其他种子产生所得数据的附加(第二)变形,然后将其用作虚拟数据。这意味着当初始种子被用于第二变形(第二掩蔽)时,可以执行真实计算,这是因为当应用基于初始种子的PRNG时,数据被(第一)变形,而当使用其他种子进行第二变形时,生成可用作随机化虚拟数据的进一步变形的数据。
例如,对于从CPU到加密核的数据传输可以使用两个选项。
数据传输选项1:非共享数据传输到加密模块
当加密模块204仅支持非共享数据传输时,可以应用该选项。
根据此选项,装置执行以下操作:
1.将作为到加密核204的输入的数据(即,待由加密核或模块204根
据加密操作处理的有用数据或密钥数据)存储在RAM 202或NVM
203中(以明文(单共享)或共享(多共享)的方式来存储)。
2.CPU 201选择随机初始种子r。
3.CPU 201通过对由r播种的PRNG(也称为SWD(软件虚拟)
-PRNG)的输出进行异或而使CPU 201上的原始数据变形(这可以
看作是利用PRNG的输出对数据进行掩蔽)从而产生经变形的数据。
4.CPU 201生成随机指令序列。每个指令包含种子和RAM 202中的
一个或更多个目标缓冲区目的地(即指针地址)。序列的一个种子是r。
5.CPU 201对指令序列中的每一项进行如下操作:
a.CPU 201将经变形的数据复制到RAM 202或CPU寄存器中的临时位置。
b.CPU 201将由指令中的种子播种的SWD-PRNG的输出异或成临时位置中的经变形的数据。
c.CPU 201将临时位置中的数据复制到加密模块204中。
d.CPU 201对加密模块204进行配置并指示其开始加密操作。
e.CPU 201通过使从加密模块204获得的结果异或成RAM 202中的指令中指定的、大到足以保持各个加密模块204的输出(例如,AES密文或SHA-1散列)的一个、两个或更多个缓冲区,来存储从加密模块204获得的结果。
在所有命令都被处理之后,CPU检查缓冲区的一致性并获得结果(或对共享表示执行进一步计算)。
数据传输选项2:共享数据传输到加密模块
当加密模块204支持多次共享的数据传输时,可以应用该选项。在该示例中,模块输入=in_share1(第一输入共享)XOR in_share2(第二输入共享)和/或模块输出=out_share1(第一输出共享)XOR out_share2(第二输出共享)。
根据该选项,装置200执行以下操作:
1.将作为对加密核204的输入的数据(即,待由加密核或模块204根据加密操作处理的有用数据或密钥数据或两者)存储在RAM 202或NVM 203中(以明文(单共享)或共享(多共享)表示存储)。
2.CPU 201选择随机初始种子r。
3.CPU 201通过对由r播种的PRNG(SWD-PRNG)的输出进行异或来使CPU 201上的原始数据变形,从而产生经变形的数据。
4.CPU 201生成随机指令序列。每个指令包含种子和RAM中的一个或更多个目标缓冲区目的地(即指针地址)。序列中的一个种子是r。
5.CPU 201对指令序列中的每一项进行如下操作:
a.CPU 201将经变形的数据复制到加密模块的in_share1输入缓冲区中(如果数据仍然存在或已经存在则可以跳过该操作)。
b.CPU 201计算由指令中的种子播种的SWD-PRNG的输出,并且将该数据复制到加密模块的in_share2输入缓冲区中。
c.CPU 201对加密模块204进行配置并指示其开始加密操作。
d.CPU 201通过将从加密模块204获得的结果异或成RAM中的指令中指定的、大到足以保持各个加密模块204的输出(例如,AES密文或SHA-1散列)的一个、两个或更多个缓冲区,来存储从加密模块204获得的结果。在输出共享可用的情况下,CPU201可以独立地存储这些共享(例如,对于out_share1使用一个或更多个RAM缓冲区以及对于out_share2使用一个或更多个RAM缓冲区)。
在所有命令都被处理之后,CPU检查缓冲区的一致性并获得结果(或对共享表示进行进一步计算)。
应当注意,即使基于加密核204被实现为硬件模块来描述实施方式,也可以利用SW中的在CPU 201上运行的加密核引擎实现相应的实施方式。术语“加密模块”(或加密加速器)因此可以指代在硬件中实现的加密模块或者SW中的在CPU上运行的加密核引擎。
在下文中,描述了CPU控制但硬件加速的虚拟计算的方法。
这种方法可以使以上参照图2描述的方法的虚拟计算在硬件中加速。
为此,提供了一种加密模块,其支持用于对非安全关键数据进行计算的正常操作模式(NOM)和用于对安全关键数据进行计算的虚拟操作模式(DOM)。
图3示出了数据处理装置300,例如智能卡或安全控制器。
类似于图2的装置200,装置300包括CPU 301、RAM 302和非易失性存储器303。CPU301通过总线305访问加密模块304,加密模块304通过接口306耦接至总线305。
在该示例中,加密模块304实现多个加密核307,其中每个加密核被配置成(例如,根据AES、SHA、ECC)执行各自的加密操作。
加密模块304还包括控制器308和核心存储器309。
NOM可以被看作通常的操作模式:在NOM下将要处理的数据写入核心存储器309、经由第一多路复用器310传输到加密核并且将结果经由可由CPU 301访问的第二多路复用器311写回核心存储器309。
在DOM中,装置300(例如,CPU 301,可能基于用户到装置300的输入)将经变形的数据放置在RAM 302中,然后将种子序列发送到核心模块304。通过使用加密模块304中的线性PRNG(即,SWD-PRNG)312而使这些种子被展现(unrolled),其中经由耦接至接口306的命令缓冲区313向该线性PRNG馈送种子,并且PRNG的输出流被组合器314异或成其经由第一多路复用器310被加载到加密核中时的数据。可以以如下方式使数据在CPU 301上变形:一个特定种子去除变形(即,使得真实数据被馈送到加密核307,例如散列核心),而其他种子再次使已经变形的数据变形(即,将伪随机虚拟数据馈送到加密核307)。
调用加密核307的结果总是被(例如可由用户配置的)SWD存储单元315异或成若干输出缓冲区中的一个、两个或更多个,并且目标缓冲区的特定选择使得装置(例如CPU 301)能够获得真实计算并检查虚拟计算以及真实计算的完整性。该方法使得实现虚拟计算和真实计算,而不需要在CPU 301与加密模块304之间传输完整(所有数据大小)输入和/或输出数据块。另外地,核心存储器304中的数据以变形的方式被传输并且被存储,以及当应用PRNG输出时也可以以共享的方式在CPU 301中被处理(它不会以明文的方式被存储在寄存器中)。
例如,装置300执行以下操作以实现防止侧信道攻击:
1.将作为对加密核307的输入的数据(例如包括待由加密核307根据
加密操作处理的有用数据或密钥数据或两者)存储在RAM 302或
NVM 303中(以明文(单共享)或共享(多共享)表示存储)。
2.CPU 301针对DOM配置加密模块307。
3.CPU 301选择随机种子r。
4.CPU 301通过对由r播种的PRNG(SWD-PRNG)的输出异或成数据来使CPU 301上的数据变形。
5.CPU 301将经变形的数据复制到加密模块304的核心存储器309中。
6.CPU 301生成随机命令序列。命令包含种子和一个或更多个结果目标缓冲区目的地。其中一个命令中的种子是r。CPU 301将这些命令发送到加密模块304,在加密模块304中,它们可以可选地被缓存在命令缓冲区313中,例如在FIFO中。当加密模块304作用于命令时,CPU 301执行其他任务、等待或准备新的命令。
7.当使用明文对接的加密核硬件引擎307(也可以在硬件中实现参照图2描述的共享数据传输)时,加密模块304执行如下命令:
a.加密模块304加载来自核心存储器309的经变形的数据,以及
b.将由(由命令缓冲区313输出的)当前命令中的种子所播种的SWD-PRNG312的输出应用于经变形的数据,以及
c.将结果传输到加密核307中(对于匹配的种子,这是原始数据),以及
d.通过使从加密核307获得的结果异或成命令中指定的大到足以保持各个加密核307的输出(例如,AES密文或SHA-1散列)的一个、两个或更多个缓冲区(即,核心存储器309中的空间),来存储从加密核307获得的结果。
在所有命令都被发送之后,CPU 301读取缓冲区并检查缓冲区的一致性。
为了另外地防止错误攻击,在图2和图3的处理中可以触发双重计算。这可以通过由CPU 201、301发送指令序列中具有相同种子的两个命令来被实现。这称为双虚拟方法,其仅需要改变在CPU 201、301上执行的程序。在该方法中,CPU 201、301执行(参照图2描述的处理的)2至5或(参照图3描述的处理的)3至7两次(即,通过一和通过二),其中CPU 201、301在通过一与通过二之间将刚刚变形的数据传输到核心模块204、304,并且其中在通过一与通过二之间没有清除结果缓冲区。CPU201、301选择命令中的种子,使得通过一中的每个经变形的数据块也在通过二中出现在序列中的随机位置处。作为示例,对于六个双虚拟和四个目标缓冲区,装置200、300执行以下操作,其中Core(x)=c是指加密核204、307被馈送以数据x并且返回密文c:
-CPU:选择随机或数据相关的种子S1,S2,S3,S4,S5(其中CPU将利用r进行异或的每个种子提供至SWDPRNG以在每个通过中具有不同的种子序列)。
-CPU:针对DOM配置模块
通过1:
-CPU:选择随机或数据相关的值r
-CPU:将d=数据/密钥xor SWDPRNG(r)写入核心存储器
-CPU:以随机顺序发出命令(以下是示例;针对每次执行都随机化),使得模块执行以下操作:
1.核(d xor SWDPRNG(S4xor r))=c4,其中c4被异或成缓冲区0和缓冲区3
2.核(d xor SWDPRNG(S1xor r))=c1,其中c1被异或成缓冲区1和缓冲区3
3.核(d xor SWDPRNG(S5xor r))=c5,其中c5被异或成缓冲区1和缓冲区3
4.核(d xor SWDPRNG(S3xor r))=c3,其中c3被异或成缓冲区1和缓冲区3
5.核(d xor SWDPRNG(r))=c,其中c被异或成缓冲区0和缓冲区3
6.核(d xor SWDPRNG(S2xor r))=c2,其中c2被异或成缓冲区0和缓冲区3
因此,在通过一中被提供至SWDPRNG的种子序列为s4XOR r、s1XOR r、s5XOR r、s3XOR r、r、s2XOR r。
通过2:
-CPU:选择随机值r’
-CPU:将d’=数据/密钥xor SWDPRNG(r’)写入核心存储器
-CPU:以随机顺序发出命令(以下是示例,针对每次执行而随机化),使得模块执行以下操作:
7.核(d’xor SWDPRNG(S2xor r’))=c3,其中c3被异或成缓冲区0和缓冲区2
8.核(d’xor SWDPRNG(S4xor r’))=c4,其中c4被异或成缓冲区1和缓冲区2
9.核(d’xor SWDPRNG(r’))=c,其中c被异或成缓冲区0和缓冲区2
10.核(d’xor SWDPRNG(S1xor r’))=c1,其中c1被异或成缓冲区0和缓冲区2
11.核(d’xor SWDPRNG(S2xor r’))=c2,其中c2被异或成缓冲区1和缓冲区2
12.核(d’xor SWDPRNG(S5xor r’))=c5,其中c5被异或成缓冲区0和缓冲区2
因此在该示例中被提供至SWDPRNG的种子序列为s3XOR r’、s4XOR r’、r’、s1XORr’、s2XOR r’、s5XOR r’。
因此,由于利用r(通过1)和r’(通过2)对数据进行变形并且在5和9中种子也为r或r’,因此分别在操作5(通过1)和操作9(通过2)中对真实(原始)数据进行计算,因而去除了变形。对于所有其他操作,数据被重新随机化。最后缓冲区的内容是:
-缓冲区0:c4xor c xor c2(第一通过后)xor c3xor c xor c1xor c5(第二通过后)
-缓冲区1:c1xor c5xor c3(第一通过后)xor c4xor c2(第二通过后)
-缓冲区2:c3xor c4xor c xor c1xor c2xor c5(仅第二通过)
-缓冲区3:c4xor c1xor c5xor c3xor c xor c2(仅第一通过)
现在CPU 201、301将存储在缓冲区(在装置300的情况下的核心存储器309)中的结果加载到RAM 202、302中。为了获得真实计算c*的结果(即,对原始数据的计算),CPU 201、301执行以下操作:
-c=缓冲区0XOR缓冲区2=
c4xor c xor c2xor c3xor c xor c1xor c5xor c3xor c4xor c xor c1xorc2xor c5
-c*=缓冲区1XOR缓冲区3=
c1xor c5xor c3xor c4xor c2xor c4xor c1xor c5xor c3xor c xor c2
为了检测错误攻击,CPU检查是否
-c*=c-缓冲区2=缓冲区3
另一个检查是检查是否缓冲区0=缓冲区1。但是,如果执行了其他两个检查,则这是冗余的。
攻击者不知道何时在各自的通过中执行真实计算(结果c)和虚拟计算(结果ci),在每个通过中顺序都是随机化的。因此,攻击者只有在错误被引入到通过1和通过2中的相应计算中才会引入错误。否则,检查会检测到此错误。
注意,在不使数据之间变形(即d=d’)的情况下也可以执行通过1和通过2。
为了进一步的安全性,可以扩展CPU 201、301能提供加密模块304、404的命令,以使得触发DOM中的已知答案测试(KAT)。这样可以检测在加密核304、404中的线的静态或动态强制。例如,可以利用触发位或通过定义触发这种KAT计算的特殊种子值(魔术数)来扩展命令。可以利用基于存储在ROM中的固定KAT种子、通过SFR(特殊功能寄存器)提供的KAT种子的PRNG,或者通过使用命令中的种子作为KAT种子,来生成KAT输入数据。应该注意的是,为将结果存储在目标缓冲区中可以使用与每个其他命令相同的语义。为了检测错误,CPU201、301可以如预期的那样检查缓冲区中是否存在KAT结果数据,并将其去除以获得真实结果(例如,通过将所存储的结果与期望的KAT结果数据进行异或)。
另外地,数据中的特定模式可能存在,这取决于攻击者也知道并且不是秘密的应用程序,因此,真实数据和虚拟数据的分布不同,这可能是可以利用的,并使得攻击者区分真实数据和虚拟数据。因此,根据一个实施方式,在图3的装置300中,CPU 301可以被配置成应当将SWD-PRNG 312输出异或到哪些数据块。例如,经变形数据被分成大小为32位或16位的几个字,并且在若干循环中被写入加密核307。当SWD-PRNG 312输出被异或成变形数据时,(例如,由CPU 301提供的命令中的)位域指示如果位域中的第一位被设置(或不设置,这取决于惯例),则SWD-PRNG 312输出应该被异或成第一块,并且如果位域中的第二位被设置,则SWD-PRNG312输出应被异或成第二块等等。以这种方式,CPU 301可以使得具有某种图案的数据块保持该图案并且不被变形(即被随机化)。
在下面的示例中,第一块总是0x0000(例如,已知常数)并且不是秘密的,因此CPU301控制当将SWD-PRNG 312的输出应用到(例如,密钥的)第二块时第一块不应用SWD-PRNG312的输出。
图2的装置200中的CPU也可以执行同样的操作。
例如,加密模块304可以基于支持SHA-1和SHA-2的SHA模块来被实现。它可以例如使用Marsaglia XORPRNG(可能是仿射或非仿射版本)。然而,任何其他线性PRNG可以被用作SWD-PRNG 312以产生用于使密文变形的数据。具有非线性PRNG的实例也是可能的。
通常,被发送到加密模块304的命令可以被直接地执行或被存储在命令缓冲区313中,命令缓冲区313例如是当加密模块304正忙时可以写入的单独的FIFO,但是如果区域应被保留并满足访问条件则命令也可以被存储在核心存储器309。经变形的数据和目标缓冲区可以驻留在单个存储器(核心存储器309)或多个存储器中。核心存储器309可以被实现为当加密模块304正在运行时不允许访问的单端口存储器,或者作为即使当加密模块304正在执行加密操作时也通常通过接口305访问的双端口存储器。结果目标缓冲区的数量可以小于四或大于四,以获得更大的灵活性。作为附加的安全措施,可以在写入目标缓冲区之后交换缓冲区。可以通过附加掩蔽来保护目标缓冲区的选择。
另一种实现还可以包括如下单元:其使用命令的种子或通过寄存器被提供至加密模块304的种子,在SWD-STORE 315中利用随机数据流对来自加密核304的输出数据进行掩蔽。这样,将以共享的方式存储结果,并且明文的曝光将是有限的。
如前所述,其他技术实现可以实现AES、SHA-3或甚至椭圆曲线加密核或者另外地几个核心(例如,AES和SHA-1)并使用相同的原理。可以相应地调整数据块的长度和数据块的量。
可以有几种方式来执行双重虚拟计算的方法,并且可以对如何以安全的方式在CPU中生成种子和排列(permutations)进行变型。种子和随机数可以从True RNG中获得,或根据数据(数据相关的种子)来推导。为了更高的安全性,还可以有三重、四重等虚拟概念,其中由于攻击者必须猜测更多的位置,因此可以实现更好地防止错误攻击。
通过在加密核中使用错误对策可以提高对错误的抵抗能力。同样地,通过在加密核中使用最先进的功率分析对策可以提高抗功率分析能力。
由于结果被异或成目标缓冲区,因此可以通过具有预定义值的软件对目标缓冲区初始化,以增加随机性并保护总线上的传输。
加密核可以提供接受两个共享的数据的接口。
图4示出了数据处理装置400,例如智能卡或安全控制器。
类似于图3的装置300,装置400包括CPU 401、RAM 402、非易失性存储器403、总线405和具有接口406的加密模块404、加密核407(假设其被配置成接收共享1输入和共享2输入以及被配置成输出两个共享输出)、控制器408、核心存储器409、命令缓冲区413、SWD-PRNG 412、XOR组合器414和SWD-Store 415。
在该实施方式中,来自核心存储器409的经变形数据经由多路分用器按原样作为共享1输入被写入各个加密核407,并且由XOR组合器414与SWD-PRNG412的输出组合的经变形数据作为共享2输入被写入各个加密核407(如参照图3所述)。
另外地,也可以使用不同的方法来实现XOR组合器和通过异或PRNG的输出进行的数据变形。作为示例,原始数据的变形可以通过加上PRNG的输出(算术加法模2n,其中n是PRNG的输出的长度或一个输出块的长度)来完成。当(例如由加密协处理器实现的)加密模块作用于指令和种子的序列时,可以通过加上2n-x与2n模(2n减x与2n模的算术加法)来应用PRNG的输出x。这实现了与恢复原始数据并且对其他(虚拟)数据进行第二次变形的XOR相同的结果。也可以通过加法和减法来组合结果。
总之,根据各种实施方式,提供如图5所示的数据处理装置。
图5示出了数据处理装置500。
数据处理装置500包括:变形器501,其被配置成根据第一种子(例如,第一随机数发生器种子)对第一数据块进行变形;以及种子生成器502,其被配置成生成第二种子(例如,第二随机数发生器种子)序列,其中第二种子序列包括第一种子。
此外,数据处理装置500包括加密处理器503,其被配置成接收经变形的第一数据块,并且对于每个第二种子,根据第二种子对经变形的第一数据块进行变形以生成第二数据块序列,并且对第二数据块序列中的每个第二数据块进行加密处理以生成经处理的数据块序列。
此外,数据处理装置500包括:提取器504,其被配置成从经处理的数据块序列中提取第一数据块的加密处理结果。
换句话说,根据各种实施方式,对待加密处理的数据进行变形(即掩蔽),并且将经变形的数据用作生成数据序列(即数据块序列,例如待加密处理的数据量中的每个数据)的基础。数据(块)序列中的每个数据块基于种子序列中的相应种子而从经变形数据中生成,所述相应种子特别包括对数据进行变形所基于的种子。将变形选择成利用相同的种子对数据进行两次变形给出原始数据(即,恢复原始数据块),使得数据块序列包括原始数据块。数据块序列中的其他数据块用作虚拟数据。这防止了攻击,因为攻击者不知道在加密处理中何时处理原始数据以及何时处理虚拟数据。此外,可以通过检查(例如比较)处理结果来检测错误。
应当注意,根据种子对数据块进行变形可以被理解为将种子馈送到随机数发生器并且使用随机数发生器(响应于种子的)输出来使数据块变形(例如,通过使随机数发生器输出与数据块异或)。如果由变形器和加密处理器使用的随机数发生器不同,则随机数发生器实际上可以被提供以不同版本的第一种子,但是它们的输出和基于其输出的变形仍然被理解为是基于第一种子的,这是因为如果随机数发生器(和相关联的变形电路)相同,则所提供的种子将是相同的。特别地,变形器的变形被理解为基于第一种子,因为第一种子作为第二种子序列中的第二种子之一而被包含。
还应当注意,种子不仅可以表征要组合(例如,异或)成数据块的随机数序列,而且可以表示其他变形,例如数据块中的数据元素(例如字节)的重新排序等。换句话说,可以将种子视为表征变形的值,即作为响应于种子执行(伪随机)变形的变形器的输入。
数据处理装置中的各部件(例如,变形器、种子生成器、加密处理器和提取器)可以例如由一个或更多个电路实现。“电路”可以被理解为任意类型的逻辑实现的实体,其可以是专用电路或执行存储在存储器、固件或其任何组合中的软件的处理器。因此,“电路”可以是硬连线逻辑电路或诸如可编程处理器的可编程逻辑电路(例如微处理器)。“电路”也可以是执行软件的处理器,例如任何类型的计算机程序。将在下面更详细描述的各个功能的任意其他类型的实现也可以被理解为“电路”。特别地,数据处理装置中的各部件可以由例如具有相应编程的处理器的单个电路实现。
数据处理装置例如执行如图6所示的数据的加密处理方法。
图6示出了流程图600。
在601中,根据第一种子对第一数据块进行变形。
在602中,生成第二种子序列,其中第二种子序列包括第一种子。
在603中,对于每个第二种子,根据第二种子对经变形的第一数据块进行变形以生成第二数据块序列。
在604中,对第二数据块序列中的每个第二数据块进行加密处理,以生成经处理的数据块序列。
在606中,从经处理的数据块序列中提取第一数据块的加密处理结果。
应当注意,601和602也可以以与图6所示的不同顺序执行。
下面给出了可以提供的实施方式的各种示例:
示例1是数据处理装置,包括:变形器,其被配置成根据第一种子对第一数据块进行变形;种子生成器,其被配置成生成第二种子序列,其中第二种子序列包括第一种子;加密处理器,其被配置成接收经变形的第一数据块,并且对于每个第二种子,根据第二种子对经变形的第一数据块进行变形以生成第二数据块序列,并且对第二数据块序列中的每个第二数据块进行加密处理以生成经处理的数据块序列;以及提取器,其被配置成从经处理的数据块序列中提取第一数据块的加密处理结果。
示例2是示例1的数据处理装置,其中,根据第一种子对第一数据块进行变形以及根据第二种子对经变形的第一数据块进行变形两者被配置成使得利用第一种子对经变形的第一数据块变形得到第一数据块。
示例3是示例1或2的数据处理装置,其中,根据第一种子对第一数据块进行变形包括将第一数据块与基于第一种子生成的随机数至少部分地进行异或组合。
示例4是示例1至3中任一项的数据处理装置,其中,根据第二种子对经变形的第一数据块进行变形包括将经变形的第一数据块与基于第二种子生成的随机数至少部分地进行异或组合。
示例5是示例1至4中任一项的数据处理装置,其中,对第一数据块进行变形包括保持第一数据块中的至少一个非秘密部分不变形。
示例6是示例1至5中任一项的数据处理装置,其中,加密处理器被配置成执行指令序列,每个指令包括第二种子序列中的种子并且指示加密处理器在根据该种子对经变形的第一数据块进行变形之后对经变形的第一数据块进行加密处理。
示例7是示例1至6中任一项的数据处理装置,其中,待加密处理的数据包括有用数据和密钥数据中至少之一。
示例8是示例1至7中任一项的数据处理装置,其中,第一数据块包括有用数据和密钥数据,并且对第一数据块进行加密处理包括根据由密钥数据给出的密钥对有用数据进行加密处理。
示例9是示例1至8中任一项的数据处理装置,其中,加密处理包括加密、解密和散列计算中至少之一。
示例10是示例1至9中任一项的数据处理装置,还包括被配置成至少部分地组合经处理的数据块序列的组合器,和被配置成存储组合的经处理数据块序列的存储器。
示例11是示例10的数据处理装置,其中组合为异或组合。
示例12是示例1至11中任一项的数据处理装置,还包括错误检测器,其被配置成基于经处理的数据块序列来检测错误。
示例13是示例12的数据处理装置,其中,错误检测器被配置成基于处理结果的比较来检测错误,该比较在没有错误的情况下是等同的。
示例14是示例12的数据处理装置,其中,错误检测器被配置成基于处理结果与已知处理答案的比较来检测错误。
示例15是示例1至14中任一项的数据处理装置,其中,种子生成器被配置成生成多个第二种子序列,其中多个第二种子序列中的每一个包括第一种子;其中,变形器被配置成对于每个第二种子序列,根据第一种子对第一数据块进行变形;其中,加密处理器被配置成对于每个第二种子序列接收经变形的第一数据块,并且对于每个第二种子序列和第二种子序列中的每个第二种子,根据第二种子对经变形的第一数据块进行变形,以对于每个第二种子序列生成第二数据块序列并且对第二数据块序列中的每个第二数据块进行加密处理以生成经处理的数据块序列;并且其中,错误检测器被配置成基于对于第二种子序列生成的经处理的数据块序列的比较来检测错误。
示例16是示例15的数据处理装置,其中,第一种子对于第二种子序列是不同的。
示例17是示例15的数据处理装置,其中,第一种子对于第二种子序列中的至少一些是相同的。
示例18是示例15至17中任一项的数据处理装置,其中,第二种子序列在第二种子的顺序上至少不同。
示例19是示例15至18中任一项的数据处理装置,还包括组合器,组合器被配置成对于每个第二种子序列至少部分地组合经处理的数据块序列,其中,错误检测器被配置成基于对于第二种子序列生成的组合的经处理的数据块序列的比较来检测错误。
示例20是示例19的数据处理装置,其中,组合器被配置成对于每个第二种子序列,生成经处理的数据块序列中的经处理数据块的多个不同组合,并且错误检测器被配置成基于对于第二种子序列生成的组合的比较来检测错误,该比较在没有错误的情况下是等同的。
示例21是示例19或20的数据处理装置,其中,组合为异或组合。
示例22是示例1至21中任一项的数据处理装置,其中,变形器和加密处理器包括随机数发生器,随机数发生器被配置成基于种子生成随机数。
示例23是示例1至22中任一项的数据处理装置,其中,变形器和加密处理器由经由接口耦接的不同硬件电路实现,其中,变形器被配置成经由接口向加密处理器提供经变形的掩蔽数据。
示例24是一种用于对数据进行加密处理的方法,包括:根据第一种子对第一数据块进行变形;生成第二种子序列,其中,第二种子序列包括第一种子;对于每个第二种子,根据第二种子对经变形的第一数据块进行变形以生成第二数据块序列;对第二数据块序列中的每个第二数据块进行加密处理以生成经处理的数据块序列;以及从经处理的数据块序列中提取第一数据块的加密处理结果。
根据另外的示例,提供数据处理装置,其被配置成生成数据块序列,其中,每个数据块通过进一步变形或恢复原始数据块(即反向变形)而由经变形的原始数据块生成,并且被配置成对数据块序列中的每个数据块进行加密处理,以及确定原始数据块的加密处理结果或基于数据块的加密处理结果来检测对数据处理装置的攻击中至少之一。
应当注意,在数据处理装置的背景下描述的示例对于数据的加密处理方法类似地有效,反之亦然。
虽然已经描述了特定的方面,但是本领域技术人员应当理解,可以在不脱离由所附权利要求限定的本公开的各方面的精神和范围的情况下对形式和细节做出各种改变。因此,范围由所附权利要求指示并且因此旨在包含落在权利要求的等同内容的含义和范围内的所有变型。
Claims (24)
1.一种数据处理装置,包括:
变形器,其被配置成根据第一种子对第一数据块进行变形;
种子生成器,其被配置成生成第二种子序列,其中,所述第二种子序列包括所述第一种子;
加密处理器,其被配置成接收经变形的第一数据块,并且对于每个第二种子,根据所述第二种子对所述经变形的第一数据块进行变形以生成第二数据块序列,并且对所述第二数据块序列中的每个第二数据块进行加密处理以生成经处理的数据块序列;以及
提取器,其被配置成从所述经处理的数据块序列中提取所述第一数据块的加密处理结果。
2.根据权利要求1所述的数据处理装置,其中,根据所述第一种子对所述第一数据块进行变形以及根据所述第二种子对经变形的第一数据块进行变形两者被配置成使得利用所述第一种子对所述经变形的第一数据块进行变形得到所述第一数据块。
3.根据权利要求1或2所述的数据处理装置,其中,根据所述第一种子对所述第一数据块进行变形包括将所述第一数据块与基于所述第一种子生成的随机数至少部分地进行异或组合。
4.根据权利要求1至3中任一项所述的数据处理装置,其中,根据所述第二种子对经变形的第一数据块进行变形包括将所述经变形的第一数据块与基于所述第二种子生成的随机数至少部分地进行异或组合。
5.根据权利要求1至4中任一项所述的数据处理装置,其中,对所述第一数据块进行变形包括保持所述第一数据块中的至少一个非秘密部分不变形。
6.根据权利要求1至5中任一项所述的数据处理装置,其中,所述加密处理器被配置成执行指令序列,每个指令包括所述第二种子序列中的种子,并且指示所述加密处理器在根据所述种子对所述经变形的第一数据块进行变形之后对所述经变形的第一数据块进行加密处理。
7.根据权利要求1至6中任一项所述的数据处理装置,其中,待加密处理的数据包括有用数据和密钥数据中至少之一。
8.根据权利要求1至7中任一项所述的数据处理装置,其中,所述第一数据块包括有用数据和密钥数据两者,并且对所述第一数据块进行加密处理包括根据由所述密钥数据给出的密钥对所述有用数据进行加密处理。
9.根据权利要求1至8中任一项所述的数据处理装置,其中,所述加密处理包括加密、解密和散列计算中至少之一。
10.根据权利要求1至9中任一项所述的数据处理装置,还包括被配置成至少部分地组合经处理的数据块序列的组合器,和被配置成存储所组合的经处理的数据块序列的存储器。
11.根据权利要求10所述的数据处理装置,其中,所述组合为异或组合。
12.根据权利要求1至11中任一项所述的数据处理装置,还包括错误检测器,所述错误检测器被配置成基于所述经处理的数据块序列来检测错误。
13.根据权利要求12所述的数据处理装置,其中,所述错误检测器被配置成基于处理结果的比较来检测错误,所述处理结果在没有错误的情况下是等同的。
14.根据权利要求12所述的数据处理装置,其中,所述错误检测器被配置成基于处理结果与已知处理答案的比较来检测错误。
15.根据权利要求1至14中任一项所述的数据处理装置,其中,所述种子生成器被配置成生成多个第二种子序列,其中所述多个第二种子序列中的每一个包括所述第一种子;
其中,所述变形器被配置成对于每个第二种子序列,根据所述第一种子对所述第一数据块进行变形;
其中,所述加密处理器被配置成对于每个第二种子序列,接收所述经变形的第一数据块,并且对于每个第二种子序列和所述第二种子序列的每个第二种子,根据所述第二种子对所述经变形的第一数据块进行变形,以针对每个第二种子序列生成第二数据块序列并且对所述第二数据块序列中的每个第二数据块进行加密处理以生成经处理的数据块序列;以及
其中,所述错误检测器被配置成基于针对所述第二种子序列生成的经处理的数据块序列的比较来检测错误。
16.根据权利要求15所述的数据处理装置,其中,所述第一种子对于所述第二种子序列是不同的。
17.根据权利要求15所述的数据处理装置,其中,所述第一种子对于所述第二种子序列中的至少一些是相同的。
18.根据权利要求15至17中任一项所述的数据处理装置,其中,所述第二种子序列至少在第二种子的顺序上是不同的。
19.根据权利要求15至18中任一项所述的数据处理装置,还包括组合器,所述组合器被配置成对于每个第二种子序列至少部分地组合所述经处理的数据块序列,其中,所述错误检测器被配置成基于针对所述第二种子序列生成的所组合的经处理的数据块序列的比较来检测错误。
20.根据权利要求19所述的数据处理装置,其中,所述组合器被配置成:对于每个第二种子序列,生成所述经处理的数据块序列中的经处理的数据块的多个不同组合,并且所述错误检测器被配置成基于针对所述第二种子序列生成的组合的比较来检测错误,该组合在没有错误的情况下是等同的。
21.根据权利要求19或20所述的数据处理装置,其中,所述组合为异或组合。
22.根据权利要求1至21中任一项所述的数据处理装置,其中,所述变形器和所述加密处理器包括随机数发生器,所述随机数发生器被配置成基于所述种子生成随机数。
23.根据权利要求1至22中任一项所述的数据处理装置,其中,所述变形器和所述加密处理器由经由接口耦接的不同硬件电路实现,其中,所述变形器被配置成经由所述接口向所述加密处理器提供所述经变形的第一数据块。
24.一种用于数据的加密处理的方法,包括:
根据第一种子对第一数据块进行变形;
生成第二种子序列,其中,所述第二种子序列包括所述第一种子;
对于每个第二种子,根据所述第二种子对经变形的第一数据块进行变形以生成第二数据块序列;
对所述第二数据块序列中的每个第二数据块进行加密处理以生成经处理的数据块序列;以及
从所述经处理的数据块序列中提取所述第一数据块的加密处理结果。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
DE102016120558.3 | 2016-10-27 | ||
DE102016120558.3A DE102016120558A1 (de) | 2016-10-27 | 2016-10-27 | Datenverarbeitungsvorrichtung und -verfahren für kryptographische verarbeitung von daten |
Publications (2)
Publication Number | Publication Date |
---|---|
CN108011706A true CN108011706A (zh) | 2018-05-08 |
CN108011706B CN108011706B (zh) | 2021-04-06 |
Family
ID=61912297
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201711027111.1A Active CN108011706B (zh) | 2016-10-27 | 2017-10-27 | 数据处理装置和用于数据的加密处理的方法 |
Country Status (3)
Country | Link |
---|---|
US (1) | US10678707B2 (zh) |
CN (1) | CN108011706B (zh) |
DE (1) | DE102016120558A1 (zh) |
Families Citing this family (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
DE102016119750B4 (de) * | 2015-10-26 | 2022-01-13 | Infineon Technologies Ag | Vorrichtungen und Verfahren zur Mehrkanalabtastung |
KR101989943B1 (ko) * | 2017-04-28 | 2019-06-17 | 삼성에스디에스 주식회사 | 부채널 공격에 안전한 연산 장치 및 방법 |
EP3419005A1 (en) * | 2017-06-22 | 2018-12-26 | Gemalto Sa | Computing device processing expanded data |
FR3087604B1 (fr) * | 2018-10-18 | 2021-09-17 | Ingenico Group | Procede et dispositif de protection de donnees saisies au moyen d'une interface utilisateur non securisee. |
US11403107B2 (en) * | 2018-12-05 | 2022-08-02 | Micron Technology, Inc. | Protection against timing-based security attacks by randomly adjusting reorder buffer capacity |
US11138158B2 (en) | 2019-05-20 | 2021-10-05 | Callplex, Inc. | Binding a local data storage device to remote data storage |
DE102019127335A1 (de) | 2019-10-10 | 2021-04-15 | Infineon Technologies Ag | Erzeugen von Hash-Werten |
US11456855B2 (en) * | 2019-10-17 | 2022-09-27 | Arm Limited | Obfuscating data at-transit |
JP7446923B2 (ja) * | 2020-06-02 | 2024-03-11 | キオクシア株式会社 | 半導体装置及び半導体記憶装置 |
US11360911B2 (en) * | 2020-09-29 | 2022-06-14 | Infineon Technologies Ag | Dummy data removal in an authenticated encryption with associated data cryptographic scheme |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101853701A (zh) * | 2009-03-04 | 2010-10-06 | 三星电子株式会社 | 非易失性存储器件及其操作方法 |
CN102208210A (zh) * | 2010-03-31 | 2011-10-05 | 深圳市朗科科技股份有限公司 | 闪存设备及其数据存储方法 |
US20120297271A1 (en) * | 2008-10-30 | 2012-11-22 | Naftali Sommer | Data scrambling schemes for memory devices |
US20140310534A1 (en) * | 2013-04-15 | 2014-10-16 | Apple Inc. | Data scrambling in memory devices using combined sequences |
CN104380651A (zh) * | 2012-05-24 | 2015-02-25 | 埃尼格传媒公司 | 生成伪随机序列的方法和对数据流进行编码或解码的方法 |
CN105761753A (zh) * | 2016-02-02 | 2016-07-13 | 清华大学 | 数据加扰解扰器、存储装置及加扰解扰方法 |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102609640B (zh) * | 2004-10-25 | 2015-07-15 | 安全第一公司 | 安全数据分析方法和系统 |
US8154918B2 (en) * | 2008-06-30 | 2012-04-10 | Sandisk Il Ltd. | Method for page- and block based scrambling in non-volatile memory |
US8751729B2 (en) * | 2010-12-23 | 2014-06-10 | Samsung Electronics Co., Ltd. | Flash memory device and memory system including the same |
US10182346B2 (en) * | 2013-11-07 | 2019-01-15 | Lg Electronics Inc. | Method for transmitting security data and method for receiving same |
US9990249B2 (en) * | 2015-12-24 | 2018-06-05 | Intel Corporation | Memory integrity with error detection and correction |
-
2016
- 2016-10-27 DE DE102016120558.3A patent/DE102016120558A1/de active Pending
-
2017
- 2017-10-25 US US15/792,817 patent/US10678707B2/en active Active
- 2017-10-27 CN CN201711027111.1A patent/CN108011706B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20120297271A1 (en) * | 2008-10-30 | 2012-11-22 | Naftali Sommer | Data scrambling schemes for memory devices |
CN101853701A (zh) * | 2009-03-04 | 2010-10-06 | 三星电子株式会社 | 非易失性存储器件及其操作方法 |
CN102208210A (zh) * | 2010-03-31 | 2011-10-05 | 深圳市朗科科技股份有限公司 | 闪存设备及其数据存储方法 |
CN104380651A (zh) * | 2012-05-24 | 2015-02-25 | 埃尼格传媒公司 | 生成伪随机序列的方法和对数据流进行编码或解码的方法 |
US20140310534A1 (en) * | 2013-04-15 | 2014-10-16 | Apple Inc. | Data scrambling in memory devices using combined sequences |
CN105761753A (zh) * | 2016-02-02 | 2016-07-13 | 清华大学 | 数据加扰解扰器、存储装置及加扰解扰方法 |
Also Published As
Publication number | Publication date |
---|---|
US20180121369A1 (en) | 2018-05-03 |
DE102016120558A1 (de) | 2018-05-03 |
CN108011706B (zh) | 2021-04-06 |
US10678707B2 (en) | 2020-06-09 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108011706A (zh) | 数据处理装置和用于数据的加密处理的方法 | |
EP2356771B1 (en) | Low latency block cipher | |
US9304944B2 (en) | Secure memory access controller | |
CN107851163A (zh) | 用于i/o数据的完整性、防重放和真实性保证的技术 | |
KR101863143B1 (ko) | 메모리 무결성 | |
KR20180070459A (ko) | 비트-믹서에 의한 암호 라운드 키의 발생을 위한 방법 및 시스템 | |
CN107924448A (zh) | 硬件实施的单向密码术 | |
KR102383829B1 (ko) | 안전하게 메시지를 교환하기 위한 방법, 이 방법을 구현하기위한 장치 및 시스템 | |
CN107005415A (zh) | 用于加密/解密消息的块加密方法以及实现该方法的密码设备 | |
CN105095097B (zh) | 随机化的存储器访问 | |
CN106548100B (zh) | 集成电路以及用于保护集成电路的方法 | |
KR20200022018A (ko) | Sbox를 이용하는 암호화 프로세스를 고차 부채널 공격으로부터 보호하기 위한 방법 | |
US20200110906A1 (en) | Encryption circuit for performing virtual encryption operations | |
US8958549B2 (en) | Countermeasure method and device for protecting data circulating in an electronic component | |
Lin et al. | Scatter-and-gather revisited: High-performance side-channel-resistant AES on GPUs | |
US20070217608A1 (en) | Data scramble/descramble technique for improving data security within semiconductor device | |
CN107798248B (zh) | 防止差分故障分析的软件保护 | |
US11476872B2 (en) | Protection against side-channel attacks | |
EP3200173B1 (en) | Method of protecting electronic circuit against eavesdropping by power analysis and electronic circuit using the same | |
US20220237304A1 (en) | Data Processing Device and Method for Processing Secret Data | |
KR20210030985A (ko) | 컴퓨터 프로세서의 데이터 보호 | |
Beckers et al. | Fault analysis of the chacha and salsa families of stream ciphers | |
CN114205104A (zh) | 针对功率和电磁侧信道攻击的对认证标签计算的保护 | |
US10055194B2 (en) | Operation based on two operands | |
US11956345B2 (en) | DPA-resistant key derivation function |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |