CN110663216A - 密码设备和方法 - Google Patents

密码设备和方法 Download PDF

Info

Publication number
CN110663216A
CN110663216A CN201880033665.9A CN201880033665A CN110663216A CN 110663216 A CN110663216 A CN 110663216A CN 201880033665 A CN201880033665 A CN 201880033665A CN 110663216 A CN110663216 A CN 110663216A
Authority
CN
China
Prior art keywords
shares
fourier coefficients
fourier
internal state
data
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
Application number
CN201880033665.9A
Other languages
English (en)
Other versions
CN110663216B (zh
Inventor
R·里特曼
S·J·A·德雷赫
L·M·G·M·托尔胡伊泽恩
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Koninklijke Philips NV
Original Assignee
Koninklijke Philips NV
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Koninklijke Philips NV filed Critical Koninklijke Philips NV
Publication of CN110663216A publication Critical patent/CN110663216A/zh
Application granted granted Critical
Publication of CN110663216B publication Critical patent/CN110663216B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/06Cryptographic 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/0618Block ciphers, i.e. encrypting groups of characters of a plain text message using fixed encryption transformation
    • H04L9/0631Substitution permutation network [SPN], i.e. cipher composed of a number of stages or rounds each involving linear and nonlinear transformations, e.g. AES algorithms
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/002Countermeasures against attacks on cryptographic mechanisms
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • G06F17/10Complex mathematical operations
    • G06F17/14Fourier, Walsh or analogous domain transformations, e.g. Laplace, Hilbert, Karhunen-Loeve, transforms
    • G06F17/141Discrete Fourier transforms
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/06Cryptographic 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/0618Block ciphers, i.e. encrypting groups of characters of a plain text message using fixed encryption transformation
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L2209/00Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
    • H04L2209/16Obfuscation or hiding, e.g. involving white box

Abstract

一些实施例涉及一种电子密码设备,该电子密码设备被布置为对输入数据执行密码操作以获得输出数据。密码设备将内部状态存储为份额集合。对应于份额集合的傅立叶系数满足它们之间的预定关系。通过重复更新内部状态来执行密码操作。

Description

密码设备和方法
技术领域
本发明涉及密码设备、密码方法和计算机可读介质。
背景技术
如果仅知道原语输入和输出的攻击者无法提升其权限(例如,获取秘密密钥、加密消息、解密消息等),则在黑盒模型中将密码原语称为安全的。然而在实践中,攻击者通常不在黑盒模型中进行操作,并且实际上,他们所获得的信息不仅仅是输入和输出。例如,在灰盒模型中,假定攻击者可以访问一些与原语的执行有关的信息。这些附加的信息来源称为“边通道(side-channel)”。例如,边通道包括操作花费的时间量或者被消耗的功率的量等等。在一个更强大的模型(所谓的白盒模型)中,并且攻击者可以完全访问原语的所有内部变量。攻击者还可以甚至在程序运行时修改变量。即使这样,白盒实施方式也旨在防止从程序中提取秘密密钥。
抵抗白盒攻击的实施方式有时被实现为对编码数据进行操作的编码表网络。在S.Chow等人的论文“White-Box Cryptography and AES Implementation”中提出了分组密码AES(高级加密标准)的白盒实施方式(以下称为“Chow”,并且在此通过引用并入)。Chow形成了AES的实施方式,所述实施方式完全由表查找操作组成。通过若干中间方法,明文密码被变换为采用这种形式的实施方式,使得可以使用表网络来计算AES。通过在表网络中对表进行编码,可以提高系统对分析和攻击的抵抗力。Chow中使用的技术也可以应用于其他分组密码。
尽管很难分析使用表网络的白盒实施方式,但是基于表的分组密码实施方式仍然可能容易受到一些攻击。有趣的是,在灰盒模型上下文中开发的攻击有时也可以有效针对白盒实施方式。因此,避免灰盒模型下的攻击也可能是白盒模型中的有效的对策。此类攻击的示例可以在Joppe W.Bos等人的论文“Differential Computation Analysis:Hidingyour White-BoxDesigns is Not Enough”中找到。
有必要更好地保护密码原语的计算机实施方式免受攻击;特别是针对应用于白盒实施方式的灰盒类型攻击提供了更好的保护。
在此引用公开的PCT专利申请WO 2017/063986A1(“A Cryptographic Device andan Encoding Device”)。
发明内容
提出了解决这些和其他问题的改进的密码设备。
密码设备是电子设备。例如,该设备可以是移动电子设备,例如移动电话。电子设备可以是机顶盒、智能卡、计算机等。本文描述的密码设备和/或密码方法可以在广泛的实际应用中应用。此类实际应用包括:安全性、密码学、内容保护、复制保护、财务应用、隐私保护、通信应用等。
根据本发明的方法可以在计算机上作为计算机实现的方法来实现,或者可以在专用硬件中实现,或者二者的组合。用于根据本发明的方法的可执行代码可以被存储在计算机程序产品上。计算机程序产品的实例包括存储器设备、光学存储设备、集成电路、服务器、在线软件等。优选地,计算机程序产品包括存储在计算机可读介质上的非暂时性程序代码,当所述程序产品在计算机上执行时,用于执行根据本发明的方法。
在优选实施例中,计算机程序包括计算机程序代码,所述计算机程序代码适于在计算机程序在计算机上运行时执行根据本发明的方法的所有步骤。优选地,计算机程序被体现在计算机可读介质上。
本发明的另一方面提供了一种使计算机程序可用于下载的方法。当将计算机程序被上载到例如苹果的App Store、谷歌的Play Store或微软的Windows Store并且当可以从此类商店下载计算机程序时,此方面被使用。
附图说明
将仅通过举例的方式,参考附图来描述本发明的其他细节、方面和实施例。为了简单和清楚,图中的元素被示出,并且不一定按比例绘制。在附图中,与已经描述的元素相对应的元素可以具有相同的附图标记。在图中,
图1示意性示出的密码设备的实施例的示例,
图2示意性地示出了更新内部状态的实施例的示例,
图3示意性地示出了内部状态的表示的实施例的示例,
图4示意性示出的密码方法的实施例的示例,
图5a示意性地示出了根据实施例的具有包括计算机程序的可写部分的计算机可读介质,
图5b示意性地示出了根据实施例的处理器系统的表示。
附图标记列表,在图1-3中:
100 密码设备
110 输入接口
112 输入运算符
120 输出接口
122 输出运算符
130 内部状态存储装置
141、142、143 非线性运算
146、147、148 线性运算
210 明文输入数据
211、212、213、214 内部状态
215 明文输出数据
310 明文内部状态
311、312、313 数据元素
320 表示为份额集合(未编码)的内部状态
321、322、323 份额集合
330 内部状态的傅立叶系数
331、332、333 傅立叶系数集合
340 表示为份额集合(已编码)的内部状态
341、342、343 编码的份额集合
具体实施方式
虽然本发明容许许多不同形式的实施例,附图中示出了并将在本文详细描述一个或多个具体实施例,应理解的是,本公开应被视为本发明的原理的示例性描述,并且并不旨在将本发明限制于所示出和描述的特定实施例。
在下文中,为了理解,在操作中描述实施例的元素。然而,将显而易见的是,相应元件被布置为执行被描述为由它们执行的功能。
此外,本发明不限于实施例,并且本发明在于本文描述或在互不相同的从属权利要求中记载的每个新颖特征或特征的组合。
本发明的实施例允许实现密码原语,例如分组密码,例如AES算法,其提供对各种类型的密钥恢复攻击的高弹性,包括已知边通道攻击的白盒概括以及许多纯白盒攻击。注意,根据本发明的实施方式不仅在白盒模型中而且在灰盒模型中都增加了安全性。
为了介绍本发明,首先描述了对白盒实施方式的多种攻击。在整个文档中,重点是分组密码AES。AES是重要的经常使用的密码原语。然而,需要强调的是,以下技术也可以应用于其他密码原语。例如,可以将其他分组密码实现为实施例。特别是SLT设计的分组密码(替代/线性变换分组密码,有时也称为替代置换网络(SPN)分组密码),例如AES(Rijndael),3-Way、Kuznyechik、PRESENT、SAFER、SHARK和Square,可以毫不费力地适应。密码原语可以是对称原语,例如,其中加密/解密密钥相同,或者是签名/验证密钥。密码原语也可以是无密钥的,例如哈希函数。保护哈希函数可能很重要,因为它们可能应用于秘密数据。实际上,哈希函数可能是键控设计的一部分,例如,如果哈希函数在HMAC中使用。
高级加密标准(AES)在2001年联邦信息处理标准出版物197中的高级加密标准中进行了描述。下面,我们概述可以访问正在运行的程序及其环境以及能够读取和修改出现在存储器中的所有程序变量的“白盒”攻击者可以对AES实施方式实施的主要攻击。
除了是纯粹的白盒攻击的存储器抓取攻击外,主要攻击还来自边通道分析;这些“灰盒”攻击也可以在白盒环境中应用。
在存储器抓取攻击中,密钥是从程序存储器中读取的。这是最简单的白盒攻击。为了阻止这种攻击,密钥绝不能以“明文”形式出现在程序存储器中,而只能以某种编码形式出现。
基于差分能量分析/差分计算分析/互信息分析/冲突等的攻击均靠冲突原则起作用。当内部程序变量对程序的两个不同输入或输出采用相同值时,将发生冲突。当在变量上发生冲突时(所述变量不仅取决于程序的输入或输出,还取决于密钥),则仅发生冲突的事实就揭示了关于密钥的信息。注意,对所有AES状态和密钥字节进行编码(例如,在该集合{0,1,K,255}上选择可逆映射的集合E,并且对于一些E∈E,用E(x)替换每个状态和密钥字节x)本身不会阻止冲击攻击:编码E混淆字节x的值,但是当在字节x上发生冲突时,程序变量E(x)上也会发生冲突。
在基于“差异故障分析”的攻击中,攻击者在同一输入上运行程序两次,通过在一次运行中更改一个或多个程序变量来引入故障,并记录两个输出。两个输出的不同的方式可能会揭示有关密钥的信息。
防范后一种攻击的对策是通过使用多个份额代表变量来掩盖变量。例如,变量x可以用n个份额x0,K,xn-1来相加地表示,其中n≥2且
Figure BDA0002282594710000051
这里的加法是XOR运算。例如,在硬件实施方式中,可以随机选择n-1份额并计算剩余的份额,使得n个份额表示变量x。然后,在任何k个份额的集合上的同时冲突(其中,k<n)不会揭示有关在变量x上是否发生冲突的任何信息;仅当在所有n个份额上同时发生冲突时,攻击者才能推断在x上发生了冲突。因此需要n阶DPA攻击来提取密钥。
在白盒环境中,必须对份额进行编码:如果攻击者可以简单地对份额求和(即,计算份额的异或)以恢复变量x或对x的编码E(x),则他可以通过对份额求和来检查份额X表示的变量x上是否存在冲突。为了防止这种攻击,程序中出现的值应该是份额的编码Ei(xi),其中,每个份额xi都使用不同的编码Ei∈E进行编码。然后,该和
Figure BDA0002282594710000052
与x不相关。注意,如果仅在灰盒模型而不在白盒模型中应用本文描述的对策来提高安全性,则可能不需要对每个份额进行单独的加密。这转而可以例如通过避免对编码的份额进行操作的表查找操作来引起更有效的实施方式。
发明人的见解是,白名单攻击者仍然可以通过将同一集合X中的两个或更多份额引入错误并检查程序的输出是否改变来避开后者(将变量表示为多个编码份额):如果输出未更改,则两个份额集合X*和X分别在有故障和无故障的情况下表示相同的字节。实际上,当在ξi=Ei(xi)的情况下份额(ξ0,K,ξn-1)表示字节x时,存在份额集合(ξ′,0,0,K,0),其中,最后n-1个份额已被编码值0并且表示相同值x。因此,为了检查两个份额集合X和X*是否表示相同的值,对于0≤ξ<256,攻击者将X更改为(ξ,0,K,0),并且检查对于ξ的哪个值输出不变,然后他求得ξ*,使得X*和(ξ*,0,K,0)给出相同的输出,并且然后他得出结论,当且仅当ξ=ξ*时,X和X*表示相同的值。
在上述攻击的情况下,使用份额的增加的安全性被抵消,并且可以有效地执行许多灰盒类型的攻击,尤其是基于发现冲突的攻击。在一个实施例中,避免了这种份额减少攻击。
实施例利用有限域中的离散傅立叶变换。例如,在数据元素是字节的情况下,有限域可以是F256,其是具有256个元素的有限域。在实施例中,数据元素是包括多个比特的二进制字;在这种情况下,具有特征2的有限域是适当的并且对于比特数的幂大小为2。但这不是必需的。人们可以构造对例如三进制比特的字进行操作的分组密码,其中,有限域可以具有特征3,等等。下面介绍了具有份额集合的计算,并解释了它们与傅立叶变换的关系。
具有份额的数据元素表示理想地适合于线性变换。线性变换具有的特性是
Figure BDA0002282594710000061
因此为了将L应用于变量x,L可以个别地应用于每个份额。注意,通常对份额进行编码,使得可以通过查表来执行操作L(xi)和求和。注意,当份额的编码是线性的时候,运算符L可以在份额上表示为对份额中的比特进行运算的矩阵,例如对“份额数”乘以“每个数据元素的比特数”比特进行运算的矩阵。下面讨论线性运算符的更详细的实施方式。例如,可以用线性编码(例如,随机线性编码)对份额进行编码,使得可以将编码集成在线性运算中。
上面适用于线性运算符的计算不适用于非线性运算符,特别是替代盒,例如AES的S-box。AES Sbox是非线性变换。有趣的是,对数据元素的任何非线性运算都可以表示为多项式。例如,对字节上的非线性变换f是有限域F256上的多项式。
Figure BDA0002282594710000062
其中,fj∈F256
这里求和(∑)是对F256的加法,即字节的异或,·代表对F256的乘法。可以通过卷积的方式将非线性变换应用于份额。两个份额集合X=(x0,K,xn-1)和Y=(y0,K,yn-1)的卷积被定义为
Z=X*Y,其中,Z=(z0,K,zn-1),其中,
Figure BDA0002282594710000071
认为
Figure BDA0002282594710000072
份额的卷积是乘积的份额表示。因此,该函数f可以在份额上实现为函数
Figure BDA0002282594710000073
其中,Xj是X自身的j倍卷积:X0是1的份额表示,X1=X,X2=X*X,X3=X*X*X,等等,并且其中,Fj是fj的份额表示。
AES Sbox可以写为
Figure BDA0002282594710000074
其中,I(x)=x254是F256上的逆,M是F256上的加法运算符,并且该运算
Figure BDA0002282594710000075
将S(0)=0x63与其在F256上的输入相加。加法运算符M可以写为加法多项式
Figure BDA0002282594710000076
其中,m0=0x05,m1=0x09,m2=0xf9,m4=0x25,m5=0x01,m6=0xb5,m7=0x8f。
下面,我们进一步讨论当份额数除以有限域中的元素数减1时的离散傅立叶变换;例如在字节255的情况下。下面我们讨论字节的情况,但对于其他域情况类似。对于元素x∈F256\{0},x的阶(表示为ord(x))被定义为最小正数k,使得xk=1。对于所有x,ord(x)除以255,F256\{0}的元素数量。设n为255的除数,即,n∈{1,3,5,15,17,51,85,255},并且设Ω为n的元素。
Figure BDA00022825947100000711
的傅立叶变换被定义为
我们将这些数
Figure BDA0002282594710000079
称为份额集合X的傅立叶系数。傅立叶逆变换由下式给出
与Cn上的传统的傅立叶变换相比,由于F256具有特征2且n为奇数,因此缺少了总因子1/n。注意,即使份额集合的任何排列都代表相同的数据元素,但出于傅立叶变换的目的,我们仍将集合视为有序的。同样,一组傅立叶变换是有序的。注意,傅立叶系数集合的排列仍然不太可能表示相同的数据元素。如果需要识别傅立叶系数集合中的特定傅立叶系数,我们将参考其索引,例如其下标。
当使用份额表示形式时(按照惯例,份额的总和等于所表示的数据元素),存在与傅立叶变换的有趣的联系:份额集合X表示的值等于第零傅立叶系数
Figure BDA0002282594710000081
因此以上结果意味着如果Z=X*Y,则
Figure BDA0002282594710000082
实际上,该关系适用于所有傅立叶系数,而不仅是第零:
Figure BDA0002282594710000083
这意味着映射
Figure BDA0002282594710000084
有效地将傅立叶系数
Figure BDA0002282594710000085
映射到
Figure BDA0002282594710000086
上,其中,
Figure BDA0002282594710000087
是份额集合Fj的第k个傅立叶系数。在实施例中,通过使用具有索引0的傅立叶系数来表示数据元素和使用具有较高索引的傅立叶系数来防止攻击,利用份额集合表示与对应的傅立叶系数集合之间的这种自然映射。然而,根本不需要傅立叶系数中的任何一个,例如,任何一个或两个或更多的傅立叶系数可以代表数据元素,而其余的傅立叶系数用于防止攻击。例如,在实施例中,数据值不仅仅由第零傅立叶系数确定,而是由一个或多个不同的傅立叶系数确定,或者由第零傅立叶系数与一个或多个不同的傅立叶系数一起确定。
发明人认识到,如果可能以使得份额集合表示的值和程序输出二者都保持相同的方式改变来自份额集合的两个或更多个份额,则份额减少攻击是成功的。攻击者将输出未改变的事实用作信号,表明攻击者注入的故障并未改变份额集合所表示的值。用于阻止这种攻击的一种方法是一种用于优选地以以下方式改变输出的机制:每当对份额集合X进行改变时,即使当该改变使得由份额集合表示的值(例如,值
Figure BDA0002282594710000088
)相同时,攻击者也无法预测输出。
图1示意性地示出了密码设备100的实施例的示例。设备100被布置为对输入数据执行密码操作并获得输出数据;输出数据是对输入数据应用密码操作的结果。在实施例中,输入数据和输出数据二者都是明文数据。我们将明文数据称为未用秘密编码(例如,对于攻击未知的编码(例如,私有编码(例如,对设备100私有)))进行加密的数据。密码操作可以是加密或解密操作,例如对称的,例如分组密码,例如AES,或者签名或验证操作,例如对称的。后者可以是从哈希函数或从分组密码(例如,以CBC-Mac模式运行的分组密码)构造的MAC。设备100可以被集成在出于某种目的而使用密码操作的设备中。例如,设备100可以被布置为接收加密的内容。使用密码操作,内容可以被解密。因为白盒实施方式的本质,即使内容被解密,也很难获得用于解密内容的密钥。例如,设备100可以被布置为例如通过将签名或MAC应用于消息来认证金融交易。对于攻击者,很难从设备(例如,从设备上运行的软件)中提取用于完成操作的密钥。
原语的执行在处理器电路中实现,其示例如下所示。图1示出了可以是处理器电路的功能单元的功能单元。例如,图1可以用作处理器电路的可能功能组织的蓝图。处理器电路未与图1中的单元分开示出。例如,图1所示的功能单元可以全部或部分地以存储在设备100处并可由设备100的微处理器执行的计算机指令来实现。在混合实施例中,功能单元部分地以硬件(例如,作为协处理器,例如,密码协处理器)来实现,并且部分地以在设备100上存储和执行的软件来实现。
设备100包括内部状态存储装置130。内部状态存储装置130可以被实现为存储器,例如电子存储器。内部状态存储装置130被布置为存储内部状态。内部状态包括一个或多个数据元素。数据元素可以是二进制数据元素。例如,数据元素可以是字节、半字节或更大的字,例如,在实施例中,数据元素包括多个比特,例如至少4个比特,并且具有至少16个不同的可能值。通常,所有数据元素都具有相同的大小。内部状态被反复更新。例如,在AES的情况下,内部状态包括16个数据元素,在这种情况下为16个字节,总共128比特。内部状态的数据元素不直接存储在内部状态存储装置130中,如本文进一步解释的。
这在图2中示出。图2示意性地示出了更新内部状态的实施例的示例。图2所示是内部状态211、212、213、214。通过应用线性或非线性运算符,可以更新内部状态。图2所示是从内部状态211到内部状态212、从内部状态212到内部状态213的更新。初始内部状态是从输入数据中导出的。在图2中,输入数据在210处表示,并且初始内部状态是内部状态211。同样,输出数据215是从最终内部状态214导出的。对内部状态的一些操作可能依赖于密钥。通常,输入和输出数据210、215将是明文的,例如不使用秘密编码来编码的。如果设备100被配置用于分组密码加密,则明文输出数据仍然是输入数据的加密,例如明文加密数据。但这不是必需的。设备100可以被集成在更大的密码系统中,例如数字版权管理(DRM)系统。在这样的系统中,只有在数字权限允许的情况下,才能呈现内容。进入密码原语的数据可以是作为进一步密码处理或采取决策的结果或输入的数据。这些操作也可以在编码数据上执行。在这种情况下,输入和输出数据之一或二者可以被编码而不是明文的。还将假定输入和输出数据是未编码的,但是可以通过省略对应的变换步骤来产生具有编码的输入/输出数据的实施例。
内部状态以特殊方式表示在内部状态存储装置130。图3示意性地示出了内部状态的表示的实施例的示例。图3示出了大表,其具有相同内部状态的不同视图。在340处,仅左下框示出了实际数据,因为其物理地存储在内部状态存储装置130中,例如存储器中。框340中的个体数据元素(例如,字节)被加破折号以指示它们被编码了。例如,它们可以用某种秘密编码,例如在编译时选择的随机编码。右列是左列的傅立叶变换。
框310所示的是明文内部状态。示出了数据元素,例如内部状态的字节311、312和313。例如,在AES的情况下,字节数可以为16或更多。例如,内部状态310可以是Fips 197中定义的“状态数组”。
框310所示的每个数据元素可以在存储器中被表示为对应的份额集合。例如,数据元素311对应于份额集合321,数据元素312对应于份额集合322,并且数据元素313对应于份额集合323。数据元素和份额集合之间的关系是一对多的。份额集合的数据大小是数据元素大小的倍数。例如,份额集合可以包括多个份额,每个所述份额具有与数据元素相同的大小,例如,它们都可以是字节。
框320所示的份额集合未被编码。因此,如果将这些份额集合在白盒实施方式中像这样使用,则攻击者可以简单地从存储器读取份额并将其映射到正确的数据元素。
在框330中,示出了320中的份额集合的离散傅立叶变换。示出了傅立叶系数集合331、332和333。例如,傅立叶系数集合331可以通过在有限域中将离散傅立叶变换应用于份额集合321来获得。框330中的傅立叶系数的集合也不被编码,并且在白盒实施方式中都无法以这种方式存储在存储器中。框340示出了表示为编码份额集合的内部状态。可以通过单独地对每个集合中的每个份额进行编码来从框320获得框340中的数据。例如,通过对集合321中的第一份额进行编码,人们可以获得集合341中的第一份额等。在实施例中,仅框340所示的数据可以是直接可见的,例如可以被物理地存储在存储器中。
有趣的是,编码是在份额域中完成的,而份额集合的意义是在傅立叶域中表达的。份额是单独编码的,其通常会妨碍对它们执行大多数操作。然而,傅立叶系数是由整个份额集合确定的全局属性;通过傅立叶变换和卷积之间的关系,即使对份额集合进行了单独编码,也可以对份额集合的意义进行控制。
框320或340中的份额集合表示内部状态的数据元素。表示哪个数据元素取决于傅立叶系数。在实施例中,框330中的傅立叶系数集合中的每个傅里叶系数集合的傅立叶系数之一被选择作为其表示的数据元素。例如,人们可以选择与给出数据元素的值的份额集合相对应的预定傅立叶系数之一,例如傅立叶系数可以等于数据元素。在实施例中,确定对应数据元素的值的是第零傅立叶系数(例如,索引为0的傅立叶系数)。该选择简化了分析和实施方式,因为其结果是,对应的份额集合的总和也确定了数据元素(例如,等于它)。然而,这不是必需的,在实施例中,某个其他傅立叶系数可以确定数据元素,例如索引为1的系数。甚至不需要相同的系数表示不同集合的数据元素,例如,在集合331中其可以是索引0的傅立叶系数,而在集合332中其是索引1的傅立叶系数,等等。事实上,哪个傅立叶系数表示数据值甚至可以每轮变化,例如每次内部状态更新。例如,在下一次更新之后,在集合331中其可以是索引2的傅立叶系数,而在集合332中其可以是索引3的傅立叶系数,等等。
甚至更一般地,不需要单个傅立叶系数确定数据元素。例如,在实施例中,傅立叶系数的子集确定数据元素,例如具有2个或更多个元素的子集。该子集是适当的子集,例如最多一半的傅立叶系数确定数据值。其余的傅立叶系数用于防止诸如份额减少攻击之类的攻击。
与存储器中的份额集合相对应的傅立叶系数集合满足它们之间的预定关系。该预定关系通过更新而保持为不变量。在实施例中,预定关系包括一些傅立叶系数相等。基本思想是部分使用代表变量的份额选择中的可用自由度来加强代表不同变量的份额集合之间的关系。该关系依据有限域F256中的傅立叶变换来表达。
例如,在实施例中,关系包括不同的傅立叶系数集合中的两个或更多个傅立叶系数相等。例如,可以例如在编译时选择特定的傅立叶系数。例如,在实施例中,傅立叶系数的集合是有序的,该集合中的系数具有索引。预定关系包括对于至少某个索引而言,相同索引的傅立叶系数中的至少两个相等。例如,预定关系可以要求集合331和332的第零傅立叶系数相等。预定关系还可以包括对于至少某个索引而言,该索引的所有傅立叶系数都相等。例如,预定关系可以要求集合331、332、333的第零傅立叶系数和所有其他傅立叶系数集合相等。
关系优选地扩展到更多份额集合,或更优选地所有份额集合。例如,在实施例中,为每个傅立叶系数集合选择索引,关系包括那些集合的所选傅立叶系数相等。例如,如果有16个集合,则人们可以选择16个索引,每个集合一个索引,并要求对应的傅立叶系数相等。例如,在第一、第二、第三傅立叶系数集合中分别具有索引1、5、7,……的系数可以相等。
对预定关系的要求越严格,攻击者发现冲突就越难。例如,预定关系可以是:傅立叶系数集合中的每个傅立叶系数(除一个之外)等于其他傅立叶系数集合中的相应傅立叶系数;该一个例外用来表示数据元素。一种用于完成这一点的方法是,要求相同索引的傅立叶系数相等,除了一个索引(例如,第零索引)之外。例如,集合331、332、333、……中的第一傅立叶系数可以相等,集合331、332、333、……中的第二傅立叶系数可以相等,等等。
上面的示例未施加同一集合中的傅立叶系数之间的关系。例如,对于任何内部状态和对于份额集合之一的任何选择,例如对于集合321的任何选择或者替代地对于傅立叶系数集合之一(例如,集合331)的任何选择,存在一种方法来选择剩余集合,使得有效地表示内部状态并满足关系。换句话说,通过要求傅立叶系数之间的关系,不会减少内部状态下单个数据元素的有效表示的数量,但是整个内部状态的有效表示的数量会减少。
因此在选择关系时有很大的选择。例如,假设每集合16个数据元素和n个份额,每集合使用一个傅立叶系数代表数据元素,并且其余的用于保护,则通过以下方式可以具有n(n!)15个:在第一集合中选择一个傅立叶系数来表示数据元素(n个选择),并且对其他傅立叶系数集合进行排序,以指示哪个系数代表数据元素并且其余元素与哪个系数相等(n!个选择)。从这个较大的空间中选择随机关系进一步复杂化攻击者的工作。例如,每个设备100可以接收不同的关系,这例如可以用于为设备加水印。
选择运算符使得它们保留关系。对于线性运算符,可以这样做,因为傅立叶变换是线性的并且关系是线性的。可以使用以下见解来维护非线性运算符的关系:映射有效地将傅立叶系数
Figure BDA0002282594710000132
映射到
Figure BDA0002282594710000133
其中,
Figure BDA0002282594710000134
是份额的第k傅立叶系数。换句话说,份额集合上的映射变换为傅立叶系数上的并行多项式。因此,如果不同集合中相同索引的两个傅立叶系数相等,则仅通过将相同的映射作用于两个份额集合即可保持此关系。对于将相同的非线性运算符应用于内部状态下的所有数据元素且该关系仅表示具有相同索引的傅立叶系数的相等关系的实施例,仅通过将相同映射应用到所有份额集合,关系的保留就是自动的。在这种情况下,可以选择
Figure BDA0002282594710000135
中的份额集合Fj作为碰巧代表密码原语的正确多项式系数的任何份额集合。例如,可以例如在编译时选择随机份额集合Fj来表示系数。但是在实施例中,除了Fj中的元素之一之外的所有元素都被选择为0。例如,在AES中使用逆运算的实施方式中,Fj中的所有条目都可以为0或1。
可以通过对Fj的适当选择来保持其他关系。例如,根据该关系,假设集合331中的第一傅立叶系数等于集合332中的第二傅立叶系数。在这种情况下,人们可以选择作用在集合331上的非线性运算符的
Figure BDA0002282594710000141
等于作用在集合332上的非线性运算符的
Figure BDA0002282594710000142
(对于所有j)。如果例如第零傅立叶系数对应于数据元素的实际值,则人们可以根据要对数据元素执行的期望的非线性运算(例如,期望的S盒)为这些集合选择
Figure BDA0002282594710000143
也可能让由傅立叶系数的子集表示的数据元素例如确定该数据元素,例如,可以使用具有2个或更多个元素的子集。例如,数据元素可以等于第零傅立叶系数和第一傅立叶系数的总和。这可以通过选择通过多项式系数
Figure BDA0002282594710000144
Figure BDA0002282594710000145
表达的多项式来实现,所述多项式系数的总和等于对数据元素的期望的运算,例如期望的Sbox。
注意,任何非线性运算都可以表示为多项式。即使使用它们的傅立叶系数定义了非线性运算符,也要根据份额集合的(编码)份额对它们进行评估。例如,份额集合的幂可以被计算为份额集合与其自身的重复卷积。
更新内部状态存储装置130中的内部状态可以涉及非线性和线性运算符。图1示出了非线性运算141、142、143。对内部状态操作的非线性运算可以被布置为单独的非线性运算,例如非线性子运算,其作用于内部状态的单个数据元素。例如,对于所有数据元素,这些子运算可以是相同的(例如,相同的S盒),或者它们可以是不同的。即使在数据元素的级别(例如在框310的级别)上执行的S框相同,在份额集合的级别(例如,在框320)上执行的运算,或在框340上的实际编码中执行的运算可以是不同的,例如,它们可以针对不属于该关系的一部分的傅立叶系数执行不同的功能,例如,所述傅立叶系数用于表示数据值。作用于单个数据元素的非线性运算符仅作用于对应份额集合中的份额。
图1示出了线性运算146、147、148。更新内部状态的线性运算同时作用于代表内部状态的至少两个数据元素的存储器中的至少两个份额集合。例如,线性运算可以表示为矩阵,例如在具有2个元素(比特)的域上或者在更大的有限域上,例如F256。由于关系和傅立叶变换二者都是线性运算,因此可以通过级联以下各项来构造线性运算
-傅立叶运算符,其为线性运算所作用于的每个份额集合产生傅立叶系数集合,
-一个或多个作用于保持不变量的傅立叶系数的线性运算符,以及
-逆傅立叶运算符。
线性运算的输入可以是例如具有两个或更多个份额集合中的份额作为元素的向量。例如,在线性运算符作用在代表数据值的傅立叶系数上的范围内,它们可以执行密码原语所需的线性运算,例如如标准所期望的;但是在线性的一个或多个线性运算符作用于不代表数据值的傅立叶系数上的范围内,它们可以执行任何线性运算,例如随机线性运算,只要可以保持这种关系即可。注意,如果例如由于故障攻击而使关系最初没有得到满足,则优选的是关系保持无效,或者至少意外恢复关系的机会不比使用均匀随机分布好。
例如,在关系要求具有相同索引的傅立叶系数相等的实施例中,除了代表数据值的一个(或多个)傅立叶系数之外,人们可以使用以下方法:
-傅立叶运算符,其为线性运算所作用于的每个份额集合产生傅立叶系数集合,该傅立叶系数集合用该集合中具有索引的系数排序,
-独立于不同索引的傅立叶系数作用于相同索引的傅立叶系数的一个或多个线性运算符,该一个或多个线性运算符被布置为作用于保持不变量的傅立叶系数,
-逆傅立叶运算符。
这样的运算符分离是可能的,但不是必需的。例如,一个或多个线性运算符可以包括:用于作用于表示数据元素的傅立叶系数(例如,作用于每集合的一个或多个傅立叶系数)的一个运算符,以及作用于所有其余的傅立叶系数的一个线性运算符(例如,随机线性运算,除了必须保留关系的要求之外)。
注意,如果对份额进行编码,则可以通过查表来完成评估矩阵乘积时的低级乘法。替代地,如果编码是线性的,则可以将份额的解码和重新编码集成在线性运算中。
如所指出的,一些操作可以是用密钥的。例如,在操作中,可以将轮次密钥添加到内部状态的全部或部分。密钥可以以编码形式存储在设备100中。优选地,密钥使用与内部状态相同类型的编码,例如作为(编码的)份额的集合,其中,对集合的傅立叶系数施加限制。例如,密钥可以在设备100的存储器中被表示为对应的份额集合,该份额集合满足根据有限域中的离散傅立叶变换与密钥的份额集合相对应的傅立叶系数之间的预定关系。
返回图1,该图还示出了布置为接收输入数据的输入接口100。例如,输入接口100可以包括计算机网络连接、计算机存储单元等。输入接口100可以包括应用编程接口(API);本文给出了进一步的示例。在实施例中,输入数据可能已经以适合内部状态的方式被编码。下面我们将描述其中输入接口未根据私有编码进行编码的情况。在那种情况下,设备100可以包括明文输入数据的可选的输入运算符112。输入运算符112产生代表初始内部状态的多个份额集合。多个满足集合预定关系。
例如,可以通过级联多个线性运算符来构造输入运算符:
-用于将输入数据映射到满足关系的傅立叶系数集合的运算符。例如,运算符可以将输入数据映射到代表数据元素的傅立叶系数。例如,如果单个傅立叶系数表示数据元素,则运算符可以将输入的数据元素直接映射到对应的傅立叶系数。如果多个傅立叶系数一起表示输入数据元素(例如,作为总和),则可以随机选择除了傅立叶系数之一之外的所有傅立叶系数,并且可以从输入数据元素和所选的随机傅立叶系数计算最后一个傅里叶系数。对于其余的保护性傅立叶系数,进行满足关系的随机选择。可以通过将随机运算符应用于输入数据来选择随机傅立叶系数。在白盒实施方式中,通常不建议使用单独的随机数生成器。仅对于灰盒实施方式,可以由随机数生成器选择随机傅立叶系数。
-傅立叶逆变换
-编码操作,例如用于对每个份额进行编码。编码可以被选择为线性的。
如果份额集合的比特大小至少与输入数据的大小一样大,则其具有优势。在这种情况下,不太可能发生冲突,即两个不同的输入数据不太可能导致在份额集合上发生冲突。通过针对每个份额集合使输入运算符可逆,可以获得更好的保证。即,可以选择输入运算符,使得可以根据代表单个数据元素的单个份额集合的内容来唯一确定输入数据。对于AES的情况,这可以通过获得17个份额来实现。在这样的具有17个份额的AES的实施方式中,避免了所有冲突,因此可以预期它对相互信息分析(MIA)是完全安全的。
设备100还包括输出运算符122,以从最终内部状态导出输出数据。输出运算符122将份额集合映射到它表示的数据元素加上失真。失真取决于份额集合的傅立叶系数,使得如果傅立叶系数满足预定关系,则失真为零。输出数据可以是明文输出数据,也可以是如由可以利用该输出数据的下一个应用期望的那样编码的输出数据。我们将假定输出数据是明文输出数据。
例如,可以通过级联以下各项来构造输出运算符
-解码运算符,其用于移除内部状态的编码
-傅立叶变换,其用于将内部状态变换为傅立叶系数集合
–运算符,其将表示数据元素的那些傅立叶系数映射到它们表示的数据元素,
-运算符,其将保护性傅立叶系数映射到失真(例如,失真矢量)。运算符被构造为使得其将满足关系的傅立叶系数映射到0,例如映射到不失真。例如,表示关系的向量可以在运算符的内核中。
可选地,在后续应用期望以编码方式递送数据的情况下,可以添加编码运算符。
下面给出在根据本发明的密码设备或方法中实现的密码原语的详细实施例。选择的密码原语是AES分组密码,被选择作为说明。下面的描述是针对加密操作的,然而,解密操作直接适用。注意,对于许多元素,各种实施方式是可能的。可以使用n个份额来构建AES实施方式,其中,n是除数255,具有在所有AddRoundKey,ShiftRow,MixColumns和SubBytes运算(或对于AES解密,它们的逆运算)之前和之后的属性,对于每个k,1≤k<n,份额集合Sr,c的表示状态字节
Figure BDA0002282594710000171
的第k个傅立叶系数对于所有行和列索引r,c都是相等的。行和列索引将AES内部状态表示为状态数组,例如具有4行4列。对于加法变换AddRoundKey、ShiftRows和MixColumns,这可以通过适合地选择对傅立叶系数的变换来实现,如将在下文中详述的,而对于SubBytes运算,由于傅立叶变换与作用于份额集合的多项式兼容,因此可以保证此属性。在该实施例中,对该关系做出一个特定选择。此外,第零傅立叶系数用于表示内部状态的数据元素。
假设在这样的实施方式中,攻击者以
Figure BDA0002282594710000173
不变的方式更改了份额集合(例如,S0,0)中的一些份额。然后,其他傅立叶系数
Figure BDA0002282594710000174
中的至少一个必须已更改(因为否则他将不会更改任何内容)。如果在更改之前,对于1≤k<n,代表16个状态字节sr,c的16个份额集合Sr,c的第k傅立叶系数彼此相等,则在更改之后,至少存在k的一个值,1≤k<n,使得更改后的份额集合S0,0的第k傅立叶系数与其他15个份额集合的第k傅立叶系数不同。
当从上次AES操作之后的16个份额集合生成由16个字节组成的AES输出时,必须注意确保每个输出字节outi都依赖于
Figure BDA0002282594710000182
和所有
Figure BDA0002282594710000183
1≤k<n,0≤r<4,0≤c<4,使得当至少一个
Figure BDA0002282594710000184
与另一个
Figure BDA0002282594710000185
不同时,输出错误(即,对于i的至少一个值,
Figure BDA0002282594710000186
)。
我们注意到,这种机制也使常规的DFA攻击更加困难:现在,攻击者的目标是更改某个份额集合X,使得他可以从输出更改的方式中获取有关密钥的信息。但是,如果采用了这种机制,那么攻击者所做的给出使攻击者认为有用的输出的仅有改变就是他仅更改份额集合的第零傅立叶系数而使其他傅立叶系数不变的那些更改。如果仅要更改一个傅立叶分量,则必须以适当的方式更改X的所有份额,这意味着攻击者必须执行第n阶DFA才能成功。
在这里,我们呈现使用以前给定成分的AES实施方式。AES实施方式在运行时将128比特输入变换为128比特输出。这些实施方式是在编译时创建的。实施方式的安全性主要取决于份额的数量n。我们首先给出构造AES加密的细节。
在编译时,实现者执行以下操作:
1.选择份额数n,其中,n是除数255。选择n=1不能提供相对于默认AES实施方式的安全性优势,并且n∈{51,85,255}可能太大而不实际,因此优选n∈{3,5,15,17}。实现者还选择元素Ω∈F256,其中,ord(Ω)=n。如上所述,选择n=17是特别有益的。
2.实现者将AES密钥扩展成如AES标准中指定的(Nr+1)轮次密钥。每个轮次密钥由16个字节组成,排列成4×4数组。轮次密钥字节表示为
Figure BDA0002282594710000187
其中,0≤r≤Nr,0≤i<4,0≤j<4。
对于每个轮次索引r,0≤r≤Nr,实现者都会随机选择以
Figure BDA0002282594710000188
表示的n-1个字节,其中,1≤k<n。对于每个轮次r和位置i,j,实现者都会创建具有
Figure BDA0002282594710000189
Figure BDA00022825947100001810
作为傅立叶系数的n分量轮次密钥份额
Figure BDA00022825947100001811
使得
Figure BDA0002282594710000191
其中
Figure BDA0002282594710000192
3.对于每个轮次r,位置i,j和每个份额索引m,实现者都会随机选择可逆加法编码
Figure BDA0002282594710000193
AES实施方式的大小随所使用的轮次编码的数量线性增长。为了减小实施方式的规模,实现者可以选择在每一轮中使用相同的编码,使得编码不依赖于r;他还可以选择每轮交替编码,使得编码仅通过rmod2取决于r。这些选择对我们考虑的针对冲突和DFA攻击的安全性没有影响——选择大量不同的编码会使一些白盒攻击变得更加困难。在每个轮次r中,16n编码
Figure BDA0002282594710000194
优选全部是不同的。
Figure BDA0002282594710000195
的逆将被表示为
Figure BDA0002282594710000196
4.实现者计算编码的轮次密钥份额
Figure BDA0002282594710000197
并创建编码的密钥份额集合
Figure BDA0002282594710000198
5.实现者计算包含字节的编码乘法表
这里0≤r<Nr,0≤m0,m1<n,0≤e0,e1<8。由于乘法表满足对称性
Figure BDA00022825947100001910
该实现者可以例如选择只存储具有e0≤e1的乘法表的元素。
例如,人们可以将上面使用的2的幂实现为2^0=00000001,2^1=00000010,2^2=00000100,2^3=00001000,2^4=00010000,2^5=00100000,2^6=01000000,2^7=10000000;这些数字或比特串形成域的基础。
6.对于每个0≤r<Nr,实现者选择当输入等于0时Sbox的输出S(0)的随机份额表示形式S(0)(r),以及Sbox中加法运算符M的多项式系数mk的随机份额表示形式
Figure BDA00022825947100001911
其中0≤k<8。实现者对这些表示的份额进行编码,这给出位置相关的编码份额集合
Figure BDA00022825947100001912
以及
Figure BDA00022825947100001913
7.对于任何轮次索引0≤r<Nr,实现者在16n个字节上创建加法运算符
Figure BDA00022825947100001914
作为
Figure BDA00022825947100001915
其中
-对于任何轮次索引r,0≤r≤Nr,D(r)被定义为将16n个字节的向量(B0,K,B16n-1)作为输入的运算符,并且对于0≤i,j<4和0≤m<n,将
Figure BDA00022825947100001916
应用于Bn(i+4j)+m
-对于任何轮次索引r,0≤r≤Nr,E(r)将16n个字节的向量(B0,K,B16n-1)作为输入,并且对于0≤i,j<4和0≤m<n,将应用于Bn(i+4j)+m
-F将16n个字节的序列作为输入,并且对于每个i,j,设置X=(Bn(i+4j),K,Bn(i+4j)+n-1),将傅立叶变换应用于X并设置
Figure BDA0002282594710000202
-T将16n个字节的向量
Figure BDA0002282594710000203
作为输入,并将其置换为序列
Figure BDA0002282594710000204
其中,
Figure BDA0002282594710000205
0≤i<16,0≤m<n;
-L(r)将16n个字节的向量
Figure BDA0002282594710000206
作为输入,并且对于每个k,0≤k<n,将变换
Figure BDA0002282594710000207
应用于16字节向量
Figure BDA0002282594710000208
变换
Figure BDA0002282594710000209
将其输入
Figure BDA00022825947100002010
放入4×4矩阵A中,其中,
Figure BDA00022825947100002011
0≤i,j<4。如果0≤r<Nr-1,它将MixColumns oShiftRows运算应用于A;如果r=Nr-1,它将ShiftRows运算应用于A。然后,它按列输出A的16个字节。
对于1≤k<n,变换
Figure BDA00022825947100002012
是对16个字节的随机选择的加法可逆变换,其属性是,当作用于其条目全部相等的16字节向量时,它输出其条目全部相等的16字节向量。下面示出了如何高效地生成此类变换。
8.实现者构造加法运算符
Figure BDA00022825947100002013
以对16个字节进行操作并输出16n个字节,如
Figure BDA00022825947100002014
其中
Uin(B0,K,B15)=(B0,K,B15,
Figure BDA00022825947100002015
并且每个Rin,k(1≤k<n)是随机加法运算符,其作用于16个字节并输出一个字节;在Uin中重复16次。用于构造运算符Rin,k的好方法是选择16个字节上的随机可逆运算符R,并让Rin,k(B0,K,B15)=Bk-1,其中,(B0′,K,B15)=R(B0,K,B15)。当n=17时,此构造保证在16个输入字节(B0,K,B15)和16个字节(R1(B0,K,B15),K,R16(B0,K,B15))之间存在双射。因此,在16个输入字节和16个傅立叶系数
Figure BDA00022825947100002017
之间存在双射,其中,份额集合的非零索引表示任何状态字节,使得不同的输入始终给出不同的份额集合:不存在冲突。
9.实现者构造运算符
Figure BDA0002282594710000211
Figure BDA0002282594710000212
其中
Figure BDA0002282594710000213
其中,每个Rout,k(1≤k<n)是随机加法运算符,其作用于16个字节并输出16个字节,其属性是,当作用于其所有条目都相同的16字节向量时,输出全零向量。
实现者构建使用运算符
Figure BDA0002282594710000214
Figure BDA0002282594710000215
编码的密钥份额
Figure BDA0002282594710000216
编码的乘法表
Figure BDA0002282594710000217
Sbox偏移份额
Figure BDA0002282594710000218
和线性变换常数份额
Figure BDA0002282594710000219
的AES加密程序。实现者使用乘法表来创建函数Mul、Conv和Square。
函数Mul将两个个别编码的份额x和y与各自的索引mx和my相乘,根据份额mx和my在轮次r和位置i,j中的编码进行编码,并且返回根据份额(mx+my)modn在轮次r和位置i,j中的编码进行编码的编码结果。注意,在具有n个份额的卷积中,乘积
Figure BDA00022825947100002110
出现在z=xy的份额
Figure BDA00022825947100002111
中。位置i,j是AES状态在4x4数组中的位置。伪代码实施方式是Mul(r,i,j,mx,my,x,y):
查找比特ξ0,K,ξ7,使得
Figure BDA00022825947100002112
查找比特η0,K,η7,使得
Figure BDA00022825947100002113
返回
Figure BDA00022825947100002114
其中,求和在F256上。
根据轮次r中位置i,j处的编码,函数Conv返回两个编码份额集合X=(x0,K,xn-1)和Y=(y0,K,yn-1)的编码卷积。伪代码实施方式是
Figure BDA0002282594710000221
其中,求和在F256上。
函数Square根据轮次r和位置i,j中的编码返回编码的份额集合X=(x0,K,xn-1)与其自身的编码卷积。伪代码实施方式是
其中,求和在F256上。
使用这些函数作为子例程,实现者创建函数Inverse,所述函数根据轮次r和位置i,j上的编码返回编码份额集合X与其自身的254倍编码卷积。
伪代码实施方式是
Inverse(r,i,j;X):
Y←Square(r,i,j,X)
Z←Conv(r,i,j,X,Y)
Y←Square(r,i,j,Y)
X←Conv(r,i,j,Y,Z)
Y←Square(r,i,j,Y)
Z←Conv(r,i,j,X,Y)
Z←Square(r,i,j,Z)
Z←Square(r,i,j,Z)
Z←Square(r,i,j,Z)
Y←Conv(r,i,j,X,Z)
Y←Square(r,i,j,Y)
返回Y
函数ShareSbox返回Sbox运算符输出的编码份额表示,通过卷积方式作用于编码份额集合X,所述卷积根据轮次r和位置i,j中的编码来编码。
伪代码实施方式是
Figure BDA0002282594710000231
按照以下伪代码,函数SubShares将函数ShareSbox应用于每个份额集合。
AES加密函数AES加密明文的16字节输入(in0,K,in15)并返回明文的16字节结果(out0,K,out15)。伪代码实施方式是
Figure BDA0002282594710000241
具有17个份额的AES程序的重要特征是,对于表示状态字节的任何编码的份额集合,在16个输入字节与已解码的份额集合的第一至第十六傅立叶系数之间存在双射。这意味着对于两个不同的输入,任何此类份额集合中的17个份额上决不会存在同时冲突,使得MIA/Collision攻击不会成功。更一般地,在实施例中,可以使用实施方式的知识(编码、密钥等)来从下一轮的份额集合导出前一轮的内部状态。例如,在实施例中,在一轮中的未编码(没有份额的)内部状态(或输入)与下一轮中的编码内部状态的份额集合之间存在双射。
上面的构造使用具有某些规定属性的随机加法运算符。在编译时,实现者必须选择具有某些属性的随机加法运算符。这里我们示出了如何有效地做到这一点。由于字节是8比特的级联,因此Nbytes字节上的加法运算符与大小N×N的二进制矩阵之间存在一对一的映射,其中,N=8Nbytes
生成任意大小N×N的随机可逆二进制矩阵。算法由以下步骤构成:
1.构造大小为N×N的二进制矩阵L,其对角线上为1,对角线上方为零,并且对角线下方为随机比特。
2.构造大小为N×N的二进制矩阵U,其对角线上为1,对角线下方为零,并且对角线上方为随机比特。
3.返回A=LU。
生成大小为8Nbytes×8Nbytes的随机可逆二进制矩阵,具有以下属性:当作用于8比特的Nbytes次重复序列时,其将得到8比特Nbytes次重复序列。算法由以下步骤构成:
1.构造大小为8×8的随机可逆二进制矩阵A。
2.构造大小为8×8(Nbytes-1)的随机二进制矩阵B。
3.构造大小为8(Nbytes-1)×8(Nbytes-1)的随机可逆二进制矩阵C。
4.设R为块矩阵
Figure BDA0002282594710000251
5.构造大小为8(Nbytes-1)×8(Nbytes-1)的随机二进制矩阵L′,其对角线上为1,对角线上方为零,并且对角线下方为随机比特。
6.通过堆叠8×8单位矩阵I8×8的L个副本来构建大小为8(Nbytes-1)×8的块矩阵D。
7.构造块矩阵
Figure BDA0002282594710000252
8.返回A=LRL-1
生成大小为8Nbytes×8Nbytes的随机可逆二进制矩阵,具有以下属性:当作用于8比特的Nbytes次重复序列时,其将得到全零比特序列。
1.设矩阵A为大小为8×8的零矩阵。
2.执行第4.2节中算法的步骤2-8。
在密码设备的各种实施例中,输入接口可以从各种替代选项中选择。例如,输入接口可以是到局域网或诸如因特网之类的广域网的网络接口、到内部或外部数据存储装置的存储接口、键盘、应用接口(API)等。输出接口可以是到局域网或诸如因特网之类的广域网的网络接口、到内部或外部数据存储装置的存储接口、应用接口(API)、显示器、打印机等。输入和输出接口可以组合在一个通信接口中。
密码设备可以具有用户接口,所述用户接口可以包括诸如一个或多个按钮、键盘、显示器、触摸屏等的公知元素。用户接口可以被布置为容适用于执行密码动作(例如,解密)的用户交互。
设备100的存储器(例如,内部状态存储装置130)可以被实现为电子存储器,例如闪速存储器或RAM、或磁存储器(例如,硬盘等)。存储装置110可以包括一起构成存储器的多个分立存储器。存储器可以是部分易失性、部分非易失性的。例如,表和计算机指令可以存储在非易失性部分中,并且内部状态存储在易失性部分中。
通常,设备100包括微处理器(未在图1中单独示出),所述微处理器执行存储在设备100处的适当的软件;例如,该软件可能已经被下载和/或存储在对应的存储器中,例如诸如RAM之类的易失性存储器或诸如Flash之类的非易失性存储器(未单独示出)。替代地,设备100可以全部或部分地以可编程逻辑实现,例如作为现场可编程门阵列(FPGA)。设备100可以全部或部分地实现为所谓的专用集成电路(ASIC),即针对其特定用途而定制的集成电路(IC)。例如,可以例如使用诸如Verilog、VHDL等的硬件描述语言在CMOS中实现电路。
在实施例中,设备100包括以下各项中的一项或多项或全部:输入接口电路,输入运算符电路,输出接口电路,输出运算符电路,内部状态存储电路,多个非线性运算电路,多个线性运算电路。设备100可以包括附加电路。电路实现本文描述的对应单元。这些电路可以是处理器电路和存储电路,处理器电路执行在存储电路中以电子方式表示的指令。电路也可以是FPGA、ASIC等。
处理器电路可以以分布式方式实现,例如作为多个子处理器电路。存储装置可以分布在多个分布式子存储装置上。存储器的一部分或全部可以是电子存储器、磁存储器等。例如,存储装置可以具有易失性和非易失性部分。存储装置的部分可以是只读的。
图4示意性地示出了密码方法400的实施例的示例。方法400被布置为对输入数据执行密码操作以获得输出数据。方法400包括
-接收410输入数据,
-将输入运算符应用于412明文输入数据,所述输入运算符产生代表初始内部状态的多个份额集合,多个份额集合满足预定关系,
-存储430内部状态,内部状态包括一个或多个数据元素,每个数据元素在存储器中表示为对应的份额集合,存储器中的份额集合根据有限域中的离散傅立叶变换具有对应的傅立叶系数集合,与存储器中的份额集合相对应的傅立叶系数集合满足它们之间的预定关系,
-重复地更新内部状态,更新内部状态被布置为使得与更新的内部状态的份额集合相对应的更新的傅立叶系数集合作为不变量满足它们之间的预定关系,更新包括应用441一个或多个非线性运算符和/或一个或多个非线性运算符446,在应用了运算符之后,更新的内部状态再次存储在430中,
-将输出运算符应用422于最终的内部状态,以导出输出数据,该输出运算符将份额集合映射到它表示的数据元素上加上失真,所述失真取决于份额集合的傅立叶系数,使得如果傅立叶系数满足预定关系,则失真为零。例如,可以在内部状态下已经执行预定次数的更新轮次之后应用输出运算符,并且
-输出420输出数据。
如本文所述,该方法中的一些步骤是可选的;例如,如果已经对输入数据进行编码,则不需要对输入数据进行编码。
如本领域技术人员将显而易见的,执行该方法的许多不同方式是可能的。例如,步骤的顺序可以改变,或者一些步骤可以并行执行。此外,在步骤之间可以插入其他方法步骤。插入的步骤可以表示如本文所述的方法的完善,或者可以与该方法无关。例如,更新步骤可以至少部分地并行执行;例如,可以并行地将非线性运算符应用于内部状态的不同数据元素。此外,在开始下一步骤之前,给定步骤可能尚未完全完成。
可以使用软件来执行根据本发明的方法,所述软件包括用于使处理器系统执行方法400的指令。软件可以仅包括由系统的特定子实体采取的那些步骤。软件可以存储在合适的存储介质中,例如硬盘、软盘、存储器、光盘等。软件可以作为信号沿着线、或无线地、或使用数据网络(例如,因特网)发送。可以使该软件可用于下载和/或服务器上的远程使用。可以使用比特流来执行根据本发明的方法,所述比特流被布置为配置可编程逻辑(例如,现场可编程门阵列(FPGA))以执行该方法。
应当领会,本发明还扩展到适于使本发明付诸实践的计算机程序,特别是在载体上或载体中的计算机程序。程序可以采用源代码、目标代码、代码中间源和目标代码的形式(例如,部分编译的形式),或者是适合用于实现根据本发明的方法的任何其他形式。与计算机程序产品有关的实施例包括与所阐述的方法中的至少一个的每个处理步骤相对应的计算机可执行指令。这些指令可以细分成子例程和/或存储在一个或多个可以静态或动态链接的文件中。与计算机程序产品有关的另一实施例包括与所阐述的系统和/或产品中的至少一个的每个单元相对应的计算机可执行指令。
图5a示出了根据实施例的具有包括计算机程序1020的可写部分1010的计算机可读介质1000,该计算机程序1020包括用于使处理器系统执行密码方法的指令。计算机程序1020可以作为物理标记或借助于计算机可读介质1000的磁化而体现在计算机可读介质1000上。然而,任何其他合适的实施例也是可想到的。此外,将领会,尽管计算机可读介质1000在这里被示出为光盘,但是计算机可读介质1000可以是任何合适的计算机可读介质,例如硬盘、固态存储器、闪速存储器等,并且可以是不可记录的或可记录的。计算机程序1020包括用于使处理器系统执行所述密码方法的指令。
图5b以示意图示出了根据密码设备的实施例的处理器系统1140的表示。该处理器系统包括一个或多个集成电路1110。在图5b中示意性地示出了一个或多个集成电路1110的架构。电路1110包括处理单元1120(例如,CPU),以用于运行计算机程序组件以执行根据实施例的方法和/或实现其模块或单元。电路1110包括用于存储编程代码、数据等的存储器1122。存储器1122的一部分可以是只读的。电路1110可以包括通信元件1126,例如天线、连接器或二者,等等。电路1110可以包括专用集成电路1124,以用于执行该方法中定义的部分或全部处理。处理器1120、存储器1122、专用IC 1124和通信元件1126可以经由互连1130(例如,总线)彼此连接。处理器系统1110可以被布置为分别使用天线和/或连接器进行接触和/或无接触通信。
例如,在实施例中,密码设备可以包括处理器电路和存储器电路,处理器被布置为执行存储在存储器电路中的软件。例如,处理器电路可以是英特尔酷睿i7处理器、ARMCortex-R8等。在实施例中,存储器电路可以包括ROM电路或非易失性存储器,例如闪速存储器。存储器电路可以是易失性存储器,例如SRAM存储器。在后一种情况下,设备可以包括非易失性软件接口(例如,硬盘驱动器、网络接口等),其被布置用于提供软件。
以下条款不是权利要求,而是包括预期的实施例。申请人特此通知,在本申请或由其衍生的任何进一步申请的审查期间,可以将新的权利要求制定为这些条款和/或从描述或权利要求中获得的这样的条款和/或特征的组合。
1.一种被布置为对输入数据执行密码操作以获得输出数据的电子密码设备,所述密码设备包括
-输入接口,其被布置为接收所述输入数据,
-存储器,其被布置为存储内部状态,所述内部状态包括一个或多个数据元素,每个数据元素在所述存储器中被表示为对应的份额集合,所述存储器中的份额集合根据有限域中的离散傅立叶变换具有对应的傅立叶系数集合,与所述存储器中的份额集合相对应的傅立叶系数集合在它们之间满足预定关系,
-处理器电路,其被配置为-通过重复更新所述内部状态来执行所述密码操作,从所述输入数据导出初始内部状态,从最终内部状态导出所述输出数据,更新所述内部状态被布置为使得与所更新的内部状态的份额集合相对应的更新的傅里叶系数集合作为不变量满足它们之间的所述预定关系;
-将输出运算符应用于所述最终内部状态,以导出所述输出数据,所述输出运算符将份额集合映射到其表示的数据元素加上失真,所述失真取决于所述份额集合的傅立叶系数,使得如果所述傅立叶系数满足所述预定关系,则所述失真为零。
2.根据条款1所述的密码设备,其中,所述预定关系包括:不同的傅立叶系数集合中的至少两个傅立叶系数相等。
3.根据条款1或2所述的电子密码设备,其中,更新所述内部状态包括对所述内部状态的数据元素应用非线性运算,非线性运算被布置为通过作用于代表所述数据元素的对应份额集合中的、所述存储器中的份额来作用于所述内部状态的数据元素。
4.根据条款3所述的密码设备,其中,所述非线性运算是所述有限域中的多项式,所述处理器电路被布置为计算份额集合的幂作为所述份额集合与其自身的卷积。
5.根据条款2和条款4的组合的密码设备,其中,所述多项式在所述傅立叶系数上定义并行多项式,作用在不同傅立叶系数集合的至少两个傅立叶系数上的并行多项式的所有系数相等。
6.根据前述条款中的任一项所述的电子密码设备,其中,更新所述内部状态包括对所述内部状态应用线性运算,所述线性运算同时在所述存储器中的表示所述内部状态的至少两个数据元素的至少两个份额集合上进行。
7.根据条款6所述的密码设备,其中,所述线性运算是通过级联以下各项来构造的-傅立叶运算符,其为所述线性运算所作用于的每个份额集合产生傅立叶系数集合,所述傅立叶系数集合用所述集合中具有索引的系数进行排序,
-独立于不同索引的傅立叶系数作用于相同索引的傅立叶系数的一个或多个线性运算符,所述一个或多个线性运算符被布置为作用于保持不变量的傅立叶系数,
-逆傅立叶运算符。
8.一种用于对输入数据执行密码操作以获得输出数据的电子密码方法(400),所述密码方法包括:
-接收(410)所述输入数据,
-存储(430)内部状态,所述内部状态包括一个或多个数据元素,每个数据元素在所述存储器中被表示为对应的份额集合,所述存储器中的份额集合根据有限域中的离散傅立叶变换具有对应的傅立叶系数集合,与所述存储器中的份额集合相对应的傅立叶系数集合在它们之间满足预定关系,
-通过重复更新所述内部状态来执行(441、446)所述密码操作,从所述输入数据导出初始内部状态,从最终内部状态导出所述输出数据,更新所述内部状态被布置为使得与所更新的内部状态的份额集合相对应的更新的傅立叶系数集合作为不变量满足它们之间的所述预定关系,
-将输出运算符应用(422)于所述最终内部状态以导出所述输出数据,所述输出运算符将份额集合映射到其表示的数据元素加上失真,所述失真取决于所述份额集合的傅立叶系数,使得如果所述傅立叶系数满足所述预定关系,则所述失真为零。
9.一种计算机可读介质(1000),其包括表示指令的暂时性或非暂时性数据(1020),所述指令用于使得处理器系统执行根据条款8的方法。
应当注意,上述实施例示出而非限制本发明,并且本领域技术人员将能够设计许多替代实施例。
在权利要求中,置于括号之间的任何参考符号不应解释为限制权利要求。词语“包括”及其词形变化的使用不排除权利要求中所述的元素或步骤之外的元素或步骤的存在。元素前的词语“一”或“一个”不排除存在多个这样的元素。本发明可以通过包括若干不同元素的硬件的方式以及通过合适地编程的计算机的方式来实现。在列举若干单元的设备权利要求中,这些单元中的若干单元可以由一个相同的硬件项来体现。在互不相同的从属权利要求中记载了某些措施的仅有事实并不意味着不能有利地使用这些措施的组合。
在权利要求书中,括号中的引用指代示例性实施方式的附图中的附图标记或实施方式的公式,从而增加了权利要求的可理解性。这些引用不应被解释为限制权利要求。

Claims (19)

1.一种被布置为对输入数据(210)执行密码操作以获得输出数据(215)的电子密码设备(100),所述密码设备包括
-输入接口(110),其被布置为接收所述输入数据,
-存储器(130),其被布置为存储内部状态(310),所述内部状态包括一个或多个数据元素(311、312、313),每个数据元素在所述存储器中被表示为对应的份额集合(321、322、323),所述存储器中的份额集合根据有限域中的离散傅立叶变换具有对应的傅立叶系数集合(331、332、333),在与所述存储器中的份额集合相对应的傅立叶系数集合之间满足预定关系,
-处理器电路,其被配置为
-通过重复更新所述内部状态来执行所述密码操作,初始内部状态是从所述输入数据导出的,所述输出数据是从最终内部状态导出的,其中,如果在与所述内部状态的份额集合相对应的傅立叶系数集合之间满足所述预定关系,则在与所更新的内部状态的份额集合相对应的更新的傅立叶系数集合之间满足所述预定关系;
-将输出运算符(122)应用于所述最终内部状态,以导出所述输出数据,所述输出运算符将份额集合映射到其表示的数据元素加上失真,其中,如果所述份额集合的傅立叶系数满足所述预定关系,则所述失真为零,并且所述失真取决于所述份额集合的傅立叶系数。
2.根据权利要求1所述的密码设备,其中,份额集合表示由与所述份额集合相对应的傅立叶系数的子集确定的数据元素。
3.根据权利要求1或2所述的密码设备,其中,份额集合表示等于与所述份额集合相对应的傅立叶系数中的一个傅立叶系数的数据元素。
4.根据前述权利要求中的任一项所述的密码设备,其中,所述预定关系包括:不同的傅立叶系数集合中的至少两个傅立叶系数相等。
5.根据权利要求4所述的密码设备,其中,除了一个傅立叶系数之外,傅立叶系数集合中的每个傅立叶系数等于其他傅立叶系数集合中的相应傅立叶系数。
6.根据权利要求4或5所述的电子密码设备,其中,更新所述内部状态包括:对由与所述不同的傅立叶系数集合相对应的份额集合表示的数据元素应用非线性运算,非线性运算被布置为以通过作用于表示所述数据元素的对应份额集合中的、所述存储器中的份额来作用于所述内部状态的数据元素,所述相同的非线性运算作用于与所述数据元素相对应的份额集合上。
7.根据权利要求6所述的密码设备,其中,所述非线性运算是所述有限域中的多项式,所述处理器电路被布置为份额集合的计算的幂,作为所述份额集合与其自身的卷积。
8.根据前述权利要求中的任一项所述的电子密码设备,其中,更新所述内部状态包括:将线性运算应用于所述内部状态,所述线性运算同时在表示所述内部状态的至少两个数据元素的、所述存储器中的至少两个份额集合上操作。
9.根据权利要求8所述的密码设备,其中,所述线性运算是通过级联以下各项来构造的:
-傅立叶运算符,其对于所述线性运算所作用于的每个份额集合产生傅立叶系数集合,
-一个或多个线性运算符,其作用于傅立叶系数以保持所述预定关系,以及
-逆傅立叶运算符。
10.根据权利要求9所述的密码设备,其中,所述傅立叶系数集合用集合中具有索引的系数排序,所述一个或多个线性运算符独立于不同索引的傅立叶系数而作用于相同索引的傅立叶系数。
11.根据前述权利要求中的任一项所述的密码设备,其中,每个傅立叶系数集合包括表示所述数据元素的一个或多个傅立叶系数和一个或多个保护性傅立叶系数,所述输出运算符通过级联一个或多个运算符来构造,所述运算符中的一个运算符将所述一个或多个保护性傅立叶系数映射到所述失真。
12.根据权利要求11所述的密码设备,其中,所述输出运算符是通过级联以下各项来构造的:
-解码运算符,其用于移除对所述最终内部状态的编码,
-傅立叶变换,其用于将所述最终内部状态变换为与由所述输出运算符映射的份额集合相对应的傅立叶系数集合,
-运算符,其将与所述数据元素相对应的所述傅立叶系数映射到对应的数据元素,
-将所述保护性傅立叶系数映射到所述失真的所述运算符。
13.根据前述权利要求中的任一项所述的密码设备,其中,执行所述密码操作包括:向所述内部状态的全部或部分添加密钥,所述密钥在所述存储器中被表示为对应的份额集合,所述份额集合根据所述有限域中的所述离散傅立叶变换满足与所述密钥的份额集合相对应的傅立叶系数之间的预定关系。
14.根据前述权利要求中的任一项所述的密码设备,其中,份额集合的组合的比特大小至少与所述输入数据的比特大小一样大。
15.根据前述权利要求中的任一项所述的密码设备,其中,所述密码操作是分组密码。
16.根据前述权利要求中任一项所述的密码设备,其中,表示数据元素的份额集合中的份额是用线性编码来编码的。
17.根据前述权利要求中的任一项所述的密码设备,其中,所述处理器电路被布置为将输入运算符应用于明文输入数据,所述输入运算符产生表示所述初始内部状态的多个份额集合,所述多个份额集合满足所述预定关系。
18.一种用于对输入数据执行密码操作以获得输出数据的电子密码方法(400),所述密码方法包括:
-接收(410)所述输入数据,
-存储(430)内部状态,所述内部状态包括一个或多个数据元素,每个数据元素在所述存储器中被表示为对应的份额集合,所述存储器中的份额集合根据有限域中的离散傅立叶变换具有对应的傅立叶系数集合,在与所述存储器中的份额集合相对应的傅立叶系数集合之间满足预定关系,
-通过重复更新所述内部状态来执行(441、446)所述密码操作,初始内部状态是从所述输入数据导出的,所述输出数据是从最终内部状态导出的,其中,如果在与所述内部状态的份额集合相对应的傅立叶系数集合之间满足所述预定关系,则在与所更新的内部状态的份额集合相对应的更新的傅立叶系数集合之间满足所述预定关系,
-将输出运算符应用(422)于所述最终内部状态以导出所述输出数据,所述输出运算符将份额集合映射到其表示的数据元素加上失真,其中,如果所述份额集合的傅立叶系数满足所述预定关系,则所述失真为零,并且所述失真取决于所述份额集合的傅立叶系数。
19.一种包括表示指令的暂时性或非暂时性数据(1020)的计算机可读介质(1000),所述指令使得处理器系统执行根据权利要求18所述的方法。
CN201880033665.9A 2017-05-24 2018-05-22 密码设备和方法 Active CN110663216B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
EP17172743.1A EP3407528A1 (en) 2017-05-24 2017-05-24 Cryptographic device and method
EP17172743.1 2017-05-24
PCT/EP2018/063414 WO2018215487A1 (en) 2017-05-24 2018-05-22 Cryptographic device and method

Publications (2)

Publication Number Publication Date
CN110663216A true CN110663216A (zh) 2020-01-07
CN110663216B CN110663216B (zh) 2023-08-22

Family

ID=58772755

Family Applications (2)

Application Number Title Priority Date Filing Date
CN201880050622.1A Active CN110999201B (zh) 2017-05-24 2018-05-17 密码设备和方法
CN201880033665.9A Active CN110663216B (zh) 2017-05-24 2018-05-22 密码设备和方法

Family Applications Before (1)

Application Number Title Priority Date Filing Date
CN201880050622.1A Active CN110999201B (zh) 2017-05-24 2018-05-17 密码设备和方法

Country Status (7)

Country Link
US (3) US11310030B2 (zh)
EP (4) EP3407528A1 (zh)
JP (2) JP7065888B6 (zh)
CN (2) CN110999201B (zh)
BR (2) BR112019024545A2 (zh)
RU (2) RU2020108662A (zh)
WO (2) WO2019025046A1 (zh)

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP3407528A1 (en) 2017-05-24 2018-11-28 Koninklijke Philips N.V. Cryptographic device and method
US11218291B2 (en) * 2018-02-26 2022-01-04 Stmicroelectronics (Rousset) Sas Method and circuit for performing a substitution operation
FR3078463A1 (fr) * 2018-02-26 2019-08-30 Stmicroelectronics (Rousset) Sas Procede et dispositif de realisation d'operations en table de substitution
FR3078464A1 (fr) * 2018-02-26 2019-08-30 Stmicroelectronics (Rousset) Sas Procede et circuit de mise en oeuvre d'une table de substitution
EP3664359A1 (en) * 2018-12-07 2020-06-10 Koninklijke Philips N.V. A computation device using shared shares
CN109714154B (zh) * 2019-03-05 2021-10-29 同济大学 一种代码体积困难白盒安全模型下的白盒密码算法的实现方法
CN116998130A (zh) * 2021-02-10 2023-11-03 拉姆帕特通信股份有限公司 传输器或接收器内的信号样本的自同构变换

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1427625A (zh) * 2001-12-20 2003-07-02 皇家菲利浦电子有限公司 信息信号中水印的优化检测
US20070053417A1 (en) * 2005-09-08 2007-03-08 Toshio Nagata Methods and apparatus to perform fractional-spaced channel estimation for frequency-domain equalizers
US20080232597A1 (en) * 2007-03-20 2008-09-25 Michael De Mare Iterative symmetric key ciphers with keyed s-boxes using modular exponentiation
CN101304525A (zh) * 2008-06-06 2008-11-12 南京邮电大学 基于高级加密标准的视频加密方法
NL2015599B1 (en) * 2015-10-12 2017-05-02 Koninklijke Philips Nv A cryptographic device and an encoding device.

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6970935B1 (en) * 2000-11-01 2005-11-29 International Business Machines Corporation Conversational networking via transport, coding and control conversational protocols
US20040086117A1 (en) * 2002-06-06 2004-05-06 Petersen Mette Vesterager Methods for improving unpredictability of output of pseudo-random number generators
FR2893796B1 (fr) * 2005-11-21 2008-01-04 Atmel Corp Procede de protection par chiffrement
JP5354914B2 (ja) * 2008-01-18 2013-11-27 三菱電機株式会社 暗号処理装置及び復号処理装置及びプログラム
WO2010102960A1 (en) * 2009-03-10 2010-09-16 Irdeto B.V. White-box cryptographic system with input dependent encodings
WO2012136763A2 (en) * 2011-04-05 2012-10-11 Intrinsic Id B.V. Random number generating system based on memory start-up noise
WO2014085910A1 (en) * 2012-12-04 2014-06-12 Interaxon Inc. System and method for enhancing content using brain-state data
US9734129B2 (en) * 2014-04-22 2017-08-15 Sandisk Technologies Llc Low complexity partial parallel architectures for Fourier transform and inverse Fourier transform over subfields of a finite field
US10963581B2 (en) * 2015-05-20 2021-03-30 Board Of Regents, The University Of Texas System Systems and methods for secure file transmission and cloud storage
NL2015745B1 (en) 2015-11-09 2017-05-26 Koninklijke Philips Nv A cryptographic device arranged to compute a target block cipher.
US10015009B2 (en) * 2015-11-25 2018-07-03 Nxp B.V. Protecting white-box feistel network implementation against fault attack
EP3407528A1 (en) 2017-05-24 2018-11-28 Koninklijke Philips N.V. Cryptographic device and method
EP3413500A1 (en) 2017-06-09 2018-12-12 Koninklijke Philips N.V. Device and method to compute a block cipher

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1427625A (zh) * 2001-12-20 2003-07-02 皇家菲利浦电子有限公司 信息信号中水印的优化检测
US20070053417A1 (en) * 2005-09-08 2007-03-08 Toshio Nagata Methods and apparatus to perform fractional-spaced channel estimation for frequency-domain equalizers
US20080232597A1 (en) * 2007-03-20 2008-09-25 Michael De Mare Iterative symmetric key ciphers with keyed s-boxes using modular exponentiation
CN101304525A (zh) * 2008-06-06 2008-11-12 南京邮电大学 基于高级加密标准的视频加密方法
NL2015599B1 (en) * 2015-10-12 2017-05-02 Koninklijke Philips Nv A cryptographic device and an encoding device.

Also Published As

Publication number Publication date
JP7065888B2 (ja) 2022-05-12
EP3407529A1 (en) 2018-11-28
RU2019143090A (ru) 2021-06-24
EP3407528A1 (en) 2018-11-28
EP3632032B1 (en) 2021-07-07
US20200177371A1 (en) 2020-06-04
US11818245B2 (en) 2023-11-14
US11310030B2 (en) 2022-04-19
RU2020108662A (ru) 2021-09-02
BR112019024545A2 (pt) 2020-06-09
WO2019025046A1 (en) 2019-02-07
BR112019024404A2 (pt) 2020-06-09
US20200177365A1 (en) 2020-06-04
JP7076474B2 (ja) 2022-05-27
US11368282B2 (en) 2022-06-21
EP3632032A1 (en) 2020-04-08
CN110663216B (zh) 2023-08-22
JP2020529034A (ja) 2020-10-01
EP3662612A1 (en) 2020-06-10
US20220182218A1 (en) 2022-06-09
EP3662612B1 (en) 2021-07-21
JP7065888B6 (ja) 2022-06-07
CN110999201A (zh) 2020-04-10
WO2018215487A1 (en) 2018-11-29
JP2020521392A (ja) 2020-07-16
CN110999201B (zh) 2023-08-29

Similar Documents

Publication Publication Date Title
CN110663216B (zh) 密码设备和方法
CN105024803B (zh) 白箱实现中的行为指纹
CN109661792B (zh) 计算分组密码的设备和方法
CN105095695B (zh) 经由白箱实现的不正确功能行为实现授权
EP3477889B1 (en) Using white-box in a leakage-resilient primitive
CN110663215A (zh) 在白盒场景中的椭圆曲线点乘设备和方法
CN105184115A (zh) 用于将隐式完整性或可信性检查包括到白箱实现中的方法
CN106888081A (zh) 白盒实施方案内中间值的宽编码
CN109039596A (zh) 利用加扰电路的白盒实施方案
CN105022937B (zh) 用于将白箱实现紧附到周围程序的接口兼容方法
CN105978680A (zh) 在白盒实现方案中实现填充
CN105281893A (zh) 用于引入白箱实现对串集合的依赖性的方法
CN105024808A (zh) 无需改变密钥的安全性补丁

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