CN107690769A - 密码处理 - Google Patents

密码处理 Download PDF

Info

Publication number
CN107690769A
CN107690769A CN201680031791.1A CN201680031791A CN107690769A CN 107690769 A CN107690769 A CN 107690769A CN 201680031791 A CN201680031791 A CN 201680031791A CN 107690769 A CN107690769 A CN 107690769A
Authority
CN
China
Prior art keywords
data
round
equipment
input
output
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.)
Pending
Application number
CN201680031791.1A
Other languages
English (en)
Inventor
H.约翰逊
J.杜门
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.)
Ai Dide Technology Co Ltd
Irdeto BV
Original Assignee
Ai Dide Technology Co Ltd
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 Ai Dide Technology Co Ltd filed Critical Ai Dide Technology Co Ltd
Publication of CN107690769A publication Critical patent/CN107690769A/zh
Pending legal-status Critical Current

Links

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/14Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols using a plurality of keys or 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/32Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
    • H04L9/3271Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials using challenge-response
    • 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/12Details relating to cryptographic hardware or logic circuitry
    • H04L2209/122Hardware reduction or efficient architectures
    • 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/24Key scheduling, i.e. generating round keys or sub-keys for block encryption

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Storage Device Security (AREA)
  • Signal Processing For Digital Recording And Reproducing (AREA)

Abstract

一种密码方法,包括顺序地执行多个轮次,每个轮次包括对该轮次的相应输入数据执行相应的轮次函数以生成该轮次的相应输出数据,其中对于第二和随后轮次中的每一个,该轮次的输入数据是前一轮次的输出数据,其中针对每一轮次,相应的轮次函数包括:将相应的双射操作应用于第一量的数据以产生第一结果,该双射操作对应于密码密钥的至少一部分;以及通过应用多个处理操作来处理第二量的数据以产生第二结果,其中处理操作中的至少一个是双射操作;其中第一量的数据和第二量的数据是基于所述轮次的输入,并且其中所述轮次的输出数据是基于第一结果和第二结果;其中以下中的一项或两项适用:(a)对于处理操作中的一个或多个中的每一个,该处理操作包括取决于第一结果的相应部分的功能性;以及(b)对于处理操作中的一个或多个中的每一个,当处理第二量的数据时应用该处理操作的次数取决于第一结果的相应部分。

Description

密码处理
技术领域
本发明涉及密码方法、用于执行这种密码方法的设备和计算机程序、用于创建这种设备的方法和装置以及这种密码方法、设备和计算机程序的不同用途。
背景技术
各种密码算法是熟知的,诸如AES加密算法(参见http://csrc.nist.gov/publications/fips/fips197/fips-197.pdf)。这样的密码算法被用于提供安全相关的功能性(诸如数据的加密、消息认证码的生成等等)。
这样的算法的许多实现很容易被拷贝。对于硬件实现也是如此,其中可以对使用特定密码密钥实现密码算法的设备进行克隆以便产生复制设备/相同设备。通常,一旦一个硬件设备已经被成功攻击(或“黑客攻击”),成功攻击其它类似的硬件设备就变得相对简单。通常,实现很容易被攻击,以便识别嵌入在实现内的秘密密钥——一旦这个秘密密钥被攻击者识别了,攻击者就可以将该密钥分发给其他人,从而潜在地造成损害、损失收入、数据泄露等等。这种针对硬件设备的攻击的示例包括边信道攻击和差分功率分析。
能够以仅使用少量硬件或软件资源的方式来提供类似的类密码功能性(使得它们制造或实现和运行便宜)、其可以很容易使用密码密钥来配置而同时难以进行逆向工程或攻击将会是合期望的。
发明内容
根据本发明的第一方面,提供了一种密码方法,包括顺序地执行多个轮次,每个轮次包括对该轮次的相应输入数据执行相应的轮次函数以生成该轮次的相应输出数据,其中针对第二轮次和随后轮次中的每一个,该轮次的输入数据是前一轮次的输出数据,其中针对每一轮次,相应的轮次函数包括:将相应的双射操作应用于第一量的数据以产生第一结果,所述双射操作对应于密码密钥的至少一部分;以及通过应用多个处理操作来处理第二量的数据以产生第二结果,其中处理操作中的至少一个是双射操作;其中第一量的数据和第二量的数据是基于所述轮次的输入,并且其中所述轮次的输出数据是基于第一结果和第二结果;其中以下中的一项或两项应用:(a)对于处理操作中的一个或多个中的每一个,该处理操作包括取决于第一结果的相应部分的功能性;以及(b)对于处理操作中的一个或多个中的每一个,当处理第二量的数据时应用该处理操作的次数取决于第一结果的相应部分。
在一些实施例中,作为双射操作的所述处理操作是所述一个或多个处理操作中的针对其当处理第二量的数据时应用该处理操作的次数取决于第一结果的相应部分的一个。
在一些实施例中,包括取决于第一结果的相应部分的功能性的所述一个或多个处理操作中的至少一个是这样的操作:其将到所述操作的输入的元素循环地轮换取决于第一结果的所述相应部分的元素数目。
在一些实施例中,包括取决于第一结果的相应部分的功能性的所述一个或多个处理操作中的至少一个是这样的操作:其倒转到所述操作的输入的一个或多个元素,所述一个或多个元素是基于第一结果的所述相应部分而选择的。
上面提及的元素可以是位。
在一些实施例中,双射操作被布置为通过顺序地使用Ns个双射映射集合Si(i=1,...,Ns)来将n位输入值双射映射到n位输出值,每个集合Si(i=1,...,Ns)具有相应数目Nbi个相应双射映射,其中每个双射映射Bi,j(i=1,...,Ns,j=1,…,Nbi)被布置为将具有相应位数wi,j的输入双射映射到具有wi,j个位的输出,其中对于i=1,...,Ns,,其中:对于集合S1,双射映射B1,j(j=1,...,Nb1)的输入是由w1,j个位形成的,所述w1,j个位来自根据密码密钥的至少一部分选择的n位输入值;对于集合Si(i=2,...,Ns),双射映射Bi,j(j=1,...,Nbi)的输入包括来自双射映射的输出的wi,j个位;n位输出值包括根据密码密钥的至少一部分布置的来自双射映射的输出的位。在一些实施例中:n=27,Ns=3,Nbi=9(对于i=1,2,3),并且wi,j=3(对于i=1,2,3且j=1,...,9)。
双射映射集合可以形成榕树网络。
双射映射集合可以被布置成使得n位输入值的每个位影响n位输出值的基本上所有位。
在一些实施例中,每个双射映射Bi,j(i=1,...,Ns,j=1,...,Nbi)可以是基于密码密钥的至少一部分。
在一些实施例中,所述轮次的输出数据包括第一结果和第二结果。所述轮次的输出数据可以包括N个位,其中N为偶数,并且其中第一结果和第二结果包括输出数据的N/2个相应位。
在一些实施例中,所述轮次的输入数据包括第一量的数据和第二量的数据。所述轮次的输入数据可以包括N个位,其中N是偶数,并且其中第一量的数据和第二量的数据包括来自输入数据的N/2位的相应位。
在一些实施例中,N=54。
在一些实施例中,对于每个轮次,相应轮次函数还包括对相应输入数据块执行相应双射函数以生成相应输出数据块,其中输入数据块是基于所述轮次的输入,并且其中所述轮次的第一量的数据和第二量的数据是基于输出数据块。
然后,在一些实施例中,输入数据块和输出数据块是m位值,其中双射函数使用相应的双射映射集合B1,...,BNb,其中Nb是相应的正整数,其中每个双射映射Bj(j=1,...,Nb)被布置成将具有相应位数wj的输入双射映射到具有wj位的输出,其中,其中双射映射Bj(j=1,...,Nb)的输入是由来自m位输入数据块的wj个位形成的并且m位输出数据块包括来自双射映射B1,...,BNb的输出的位。然后,在一些实施例中:m=54,Nb=27且wj=2(对于j=1,...,Nb)。
在一些实施例中,每个双射映射Bj(j=1,...,Nb)是基于密码密钥的至少一部分。
在一些实施例中,输入数据块是所述轮次的输入数据。
根据本发明的第二方面,提供了一种被布置成执行本发明的第一方面或其任何实施例的方法的设备。
根据本发明的第三方面,提供了一种生成本发明的第二方面的多个设备的方法,该方法包括:针对所述多个设备中的每一个:确定针对每个轮次的轮次函数,其中所确定的轮次函数的集合对所述设备而言是特定的;以及生成设备,其中设备被布置成使用所确定的轮次函数的集合来执行本发明的第一方面或其任何实施例的方法。
在一些实施例中,所述生成设备包括使用以下之一:(a)印刷电子器件(electronics);或(b)电子束光刻。
根据本发明的第四方面,提供了一种执行挑战-响应协议的方法,于是方法包括:接收挑战;以及使用根据本发明的第一方面或其任何实施例的密码方法来处理挑战,以生成对应于挑战的响应。
根据本发明的第五方面,提供了一种执行挑战-响应协议的方法,于是方法包括:生成挑战;以及向本发明的第二方面的设备提供挑战,设备被布置为使用根据本发明的第一方面或其任何实施例的密码方法来处理挑战,以生成对应于挑战的响应;以及接收来自设备的响应。
根据本发明的第六方面,提供了一种认证物品的方法,该方法包括:生成挑战;以及向与该物品相关联的本发明的第二方面的设备提供挑战,设备被布置为使用根据本发明的第一方面或其任何实施例的密码方法来处理挑战,以生成对应于挑战的响应;接收来自设备的响应;以及确定响应是否是预期响应。
根据本发明的第七方面,提供了一种在数据处理器上执行软件项目的方法,该方法包括:在执行软件项目期间:数据处理器向与数据处理器相关联的本发明的第二方面的设备提供挑战,设备被布置为使用根据本发明的第一方面或其任何实施例的密码方法来处理挑战,以生成对应于挑战的响应;以及数据处理器接收来自设备的响应,其中软件项目的后续执行至少部分地基于所接收的响应。
根据本发明的第八方面,提供了一种被布置成执行根据本发明的第三至第七方面中的任一方面的方法的装置。
根据本发明的第九方面,提供了一种计算机程序,该计算机程序在由一个或多个处理器执行时使所述一个或多个处理器执行根据本发明的第一方面或第三至第七方面中的任一方面的方法。该计算机程序可以存储在计算机可读介质上。
附图说明
现在将参考附图仅以示例的方式描述本发明的实施例,在附图中:
图1示意性地图示出了根据本发明实施例的密码方法;
图2示意性地图示出了根据本发明实施例的轮次函数Fi
图3和图6示意性地图示出了根据本发明实施例的图2的函数Xi
图4示意性地图示出了根据本发明实施例的图2的函数Yi
图5和图7示意性地图示出了根据本发明实施例的图4的双射操作Hi
图8示意性地图示出了根据本发明实施例的使用图1的密码方法来处理数据块;
图9示意性地图示出了计算机系统的示例;
图10示意性地图示出了用于生成或制造多个设备的系统;
图11示意性地图示出了根据本发明实施例的系统;
图12是示意性地图示出根据本发明实施例的使用图11的系统执行的方法的流程图;
图13示意性地图示出了根据本发明实施例的系统;以及
图14和图15是示意性地图示出根据本发明实施例的使用图13的系统执行的方法的流程图。
具体实施方式
在下面的描述中以及在附图中,描述了本发明的某些实施例。然而将领会到,本发明不限于所描述的实施例,并且一些实施例可以不包括下面描述的特征中的全部。然而,将显而易见的是,可以在本文中做出各种修改和改变而不脱离所附权利要求书中所阐述的本发明的更宽泛的精神和范围。
1——密码方法
图1示意性地图示出了根据本发明实施例的密码方法100。
方法100包括顺序地执行多个处理轮次(或仅简称为“轮次”)。在本文中将通过Nr来表示轮次的数目,其中Nr是正整数。在本文中第i轮次(i=1,...,Nr)将被表示为轮次Ri。因此,方法100包括执行(或进行或实行)被称为轮次Ri(i=1,...,Nr)的一系列Nr个处理阶段/步骤。优选地,Nr=5,但是将领会到,本发明的实施例可以利用Nr的其它值。
每个轮次Ri(i=1,...,Nr)包括执行相应的轮次函数Fi(i=1,...,Nr)。将在下面更详细地简要描述轮次函数Fi。每个轮次函数Fi(i=1,...,Nr)接收(或者作为输入具有、或对其进行操作)相应的输入数据di(i=1,...,Nr)并输出(或提供或生成)相应的输出数据ei(i=1,...,Nr),即ei=Fi(di)。如图1中所示,对于第二轮次和后续轮次,即对于轮次Ri(i=2,...,Nr)中的每一个,到该轮次的输入(即di)是前一轮次的输出(即ei-1),即di=ei-1(对于i=2,...,Nr)。因此,方法100被布置为处理输入数据d1以生成输出数据eNr
输入di(i=1,...,Nr)中的每一个以及输出ei(i=1,...,Nr)中的每一个可以被认为是相应的量的数据(或数据块或数据分块)或者相应的数据值。优选地,输入di(i=1,...,Nr)和输出ei(i=1,...,Nr)的尺寸(即,用于表示的位数)是相同的。
图2示意性地图示出了根据本发明实施例的轮次函数Fi。虽然在轮次Ri(i=1,...,Nr)中的每一个处执行(具有图2中所示的结构的)该轮次函数Fi,但是图2中所示出的针对轮次函数Fi的确切配置(或参数或设置或布置)可以在轮次之间改变或变化,如将从下面的讨论变得显而易见的那样。然而将领会到,在一些实施例中,用于两个或更多(且可能是全部)轮次Ri的轮次函数Fi的配置可以彼此相同,因为这将减少实现方法100所需的资源(硬件或代码)的量。轮次函数Fi(i=1,...,Nr)中的每一个的配置可以是基于用于方法100的密码密钥ψ或通过其来设置。反过来,可以将用于轮次函数Fi(i=1,...,Nr)的集合的配置(其可能是随机选取的配置)视为固有地定义用于方法100的对应密码密钥ψ。用于轮次函数Fi(i=1,...,Nr)的配置与密码密钥ψ之间的关系将从下面的讨论变得显而易见。
如图2中所示,轮次函数Fi可以包括执行可选的预处理步骤200,在该步骤处,对输入di执行一个或多个操作。这一个或多个操作可以是任何种类的数据处理。
轮次函数Fi可以包括执行相应的函数Xi。如果轮次函数Fi包括预处理步骤200,那么由函数Xi处理的输入数据dxi是由预处理步骤200产生的输出数据。另一方面,如果轮次函数Fi不包括预处理步骤200,那么由函数Xi处理的输入数据dxi是到轮次函数Fi的输入di。函数Xi的输出是输出数据exi,即exi=Xi(dxi)。函数Xi的性质将在下面参照图3进行简要描述。
如果轮次函数Fi包括函数Xi,那么轮次函数Fi可以包括执行可选的中间处理步骤202,在该步骤202处,对输出数据exi执行一个或多个操作。这一个或多个操作可以是任何种类的数据处理。
轮次函数Fi包括执行相应的函数Yi。如果轮次函数Fi包括中间处理步骤202,那么由函数Yi处理的输入数据dyi是由中间处理步骤202产生的输出数据。另一方面,如果轮次函数Fi不包括中间处理步骤202但包括函数Xi,那么由函数Yi处理的输入数据dyi是函数Xi的输出数据exi。如果轮次函数Fi不包括函数Xi但包括预处理步骤200,那么由函数Yi处理的输入数据dyi是由预处理步骤200产生的输出数据。否则,由函数Yi处理的输入数据dyi是到轮次函数Fi的输入di。函数Yi的输出是输出数据eyi,即,eyi=Yi(dyi)。函数Yi的性质将参照图4和图5进行简要描述。
轮次函数Fi可以包括执行可选的后处理步骤204,在该步骤204处,对输出数据eyi执行一个或多个操作。这一个或多个操作可以是任何种类的数据处理。如果轮次函数Fi包括后处理步骤204,那么轮次函数Fi的输出ei是后处理步骤204的输出。另一方面,如果轮次函数Fi不包括后处理步骤204,那么轮次函数Fi的输出ei是输出数据eyi,即ei=eyi
在本发明的优选实施例中,对于每个i=1,...,Nr,轮次函数Fi不包括预处理步骤200、中间处理步骤202和后处理步骤204,因为这使得轮次函数Fi(i=1,...,Nr)更高效(即执行起来更快)。另外,更优选地,对于每个i=1,...,Nr,轮次函数Fi确实包括函数Xi,因为这使得方法100更加安全。
图3示意性地图示出了根据本发明实施例的针对轮次Ri的函数Xi(对于i=1,...,Nr)。从下面的讨论中将变得显而易见的是,每个函数Xi对应于或可以定义用于方法100的密码密钥ψ的至少一部分。
函数Xi是对输入数据fi(以下称为输入数据分块/块/量fi)进行操作以生成输出数据(以下称为输出数据分块/块/量gi)的双射函数(或操作或映射)。函数Xi被布置为将输入数据块fi双射映射到输出数据块gi。输入数据块fi和输出数据块gi都包括相同数目的位,该数目在本文中表示为mi,其中mi是对应于轮次Ri的正整数。这在图3中被示出,其中输入数据块fi包括位并且输出数据块gi包括位
将领会到,由函数Xi提供的双射可以以任何方式实现,因为所需要的是函数Xi将具有mi个位的值域以1对1的方式映射到具有mi个位的对应值。这例如可以是(由通过用于方法100的密码密钥ψ的至少一部分催发出(seed)的随机数发生器所确定的)随机映射。然而,图3中所示的用于实现函数Xi的架构/结构是优选的,因为它:(a)有效地利用了硬件组件(即,单独的双射映射Bi,j);(b)使得更易于基于用于方法100的密码密钥ψ来形成函数Xi(或者,反过来,基于已用于函数Xi的结构来确定或识别用于方法100的密码密钥ψ的至少一部分);以及(c)通过确保输入数据块fi的位可以影响输出数据块gi的大量的位来帮助改进密码强度。因此,图3中针对函数Xi所示出的结构有助于改进方法100的密码强度,同时还有助于使得更易于做出方法100的多个不同实例(即,做出特定版本或多样化实现)。
如图3中所示,双射操作Xi的实现可以包括使用具有相应数目Nbi个相应双射映射的对应双射映射集合,其中每个双射映射Bi,j(j=1,...,Nbi)被布置为将具有相应位数wi,j的输入双射映射到具有wi,j个位的输出值,其中。双射映射Bi,j(j=1,...,Nbi)的输入由来自mi位输入fi的wi,j个相应位形成。双射映射Bi,j(j=1,...,Nbi)的输入可以由来自mi位输入fi的wi,j个相应预定(即,独立于密码密钥ψ的)位形成(这在图3中被示出为对应关系或者连接线300)。可替代地,双射映射Bi,j(j=1,...,Nbi)的输入可以由根据密码密钥ψ的至少一部分选择的wi,j个相应位形成。例如,输入fi的每个位可以是双射映射Bi,j中仅仅一个的输入的对应位,其中来自输入fi的位与到双射映射Bi,j的输入的位的这种对应关系(在图3中被示出为连接线300)取决于方法100的密码密钥ψ的至少一部分。反过来,可以将该对应关系300视为定义或指定密码密钥ψ的至少一部分。可以使用由密码密钥ψ的至少一部分所催发出的随机数发生器来随机选择对应关系300。
类似地,mi位输出值gi包括共同形成双射映射的输出值的mi个位。mi位输出值gi可以包括以预定(即,独立于密码密钥ψ的)顺序布置的双射映射的mi个位的输出值。这种布置在图3中被示出为对应关系(或连接线)302。可替代地,mi位输出值gi可以包括基于用于方法100的密码密钥ψ的至少一部分布置的双射映射的mi个位的输出值。例如,来自每个双射映射Bi,j(j=1,...,Nbi)的每个输出值的每个位可以被用作输出值gi中的对应位置处的对应位,其中来自双射映射的输出的位到输出值gi的位的这种对应关系(在图3中被示出为连接线302)取决于方法100的密码密钥ψ的至少一部分。反过来,可以将该对应关系302视为定义或指定密码密钥ψ的至少一部分。例如,可以使用由密码密钥ψ的至少一部分所催发出的随机数发生器来随机选择对应关系302。
对于每个双射映射,可以使用由密码密钥ψ的至少一部分所催发出的随机数发生器来随机选择由该双射映射执行的实际的相应双射。反过来,可以将由相应的双射映射执行的双射视为定义或指定密码密钥ψ的至少一部分。例如,每个双射映射Bi,j(j=1,...,Nbi)可以是数字集{0,1,2,...,}的相应的随机生成的双射。
从图2中可以清楚,输入数据块fi是基于轮次Ri的输入di。返回参考图2,输入数据块fi是输入dxi,并且输出数据块gi是输出exi
图4示意性地图示出了根据本发明实施例的图2的函数Yi(对于i=1,...,Nr)。正如从下面的讨论中将变得显而易见的,每个函数Yi对应于或可以定义用于方法100的密码密钥ψ的至少一部分。
对于轮次Ri(对于i=1,...,Nr),对应的函数Yi处理两个相应量的数据ai,1和ai,2。将稍后描述两个量的数据(或数据分块或数据块或数据值)ai,1和ai,2与输入dyi的关系(图2中所示)。所述量的数据ai,1和ai,2的该处理生成两个结果bi,1和bi,2。将稍后描述两个结果(或数据分块​​/数据块或值)bi,1和bi,2与输出eyi的关系(图2中所示)。函数Yi执行的处理如下:
• 将针对该轮次Ri的相应双射操作Hi应用于第一输入,即第一量的数据ai,1。将该双射操作Hi应用于第一量的数据ai,1所得到的输出是第一结果bi,1,即bi,1=Hi(ai,1)。
• 处理第二量的数据ai,2。从该处理得到的输出是第二结果bi,2。该处理涉及到应用多个处理操作。这里,NKi是该轮次Ri的该多个处理操作中的处理操作的数目(并且因此是大于1的整数)。顺序地应用所述多个处理操作(即,第一处理操作Ki,1作用在第二量的数据ai,2上,并且每个随后的处理操作Ki,j(j=2,...,NKi)作用在前一处理操作的结果上)。特别而言,。所述处理操作中的至少一个与应用到第一量的数据ai,1的双射操作Hi相同,即对于至少一个整数jϵ{1,2,...Nki},Ki,j=Hi。这在图4中由箭头400、402示出。
如下面将更详细地描述的,下面的属性(A)和(B)中的一个或二者适用:
属性(A):对于处理操作中的一个或多个中的每一个,该处理操作包括取决于第一结果bi,1的相应部分的功能性。这在图4中由箭头404示出。换言之,对于至少一个整数jϵ{1,2,...Nki},由处理操作Ki,j提供的功能性(即,处理操作Ki,j的实际运转)取决于bi,1(的至少一部分)。因此,可以将第一结果bi,1(或者第一结果bi,1的至少一部分)视为形成配置处理操作Ki,j的参数或设置,使得处理操作Ki,j将基于该配置参数来处理其输入。因此,该配置参数可以是ti,j位的值,其中ti,j个位中的每一个是从第一结果bi,1的相应位置取得的位——在这里,ti,j是对应于轮次Ri并且对应于该特定处理操作Ki,j的正整数,并且可以在轮次之间变化或者可以是跨所有轮次的预定值常数。可以基于方法100的密码密钥ψ的至少一部分来选择用于配置处理操作Ki,j的结果bi,1的特定位(以及可能的位数)。反过来,可以将选取结果bi,1的哪些特定位(以及可能的多少个位)用于配置处理操作Ki,j视为定义或指定密码密钥ψ的至少一部分。例如,可以使用由密码密钥ψ的至少一部分所催发出的随机数发生器来随机地选择从结果bi,j中选取哪些位(以及可能的多少个位)来使用。这种处理操作Ki,j的示例将在稍后给出。
属性(B):对于处理操作中的一个或多个中的每一个,应用该处理操作的次数(在本文中称为数目β)取决于第一结果bi,1的相应部分。换言之,处理操作序列的构成取决于第一结果bi,1(或至少取决于第一结果bi,1的一部分)。这在图4中由箭头404表示。因此,对于至少一个整数jϵ{1,2,...Nki},处理操作Ki,j在处理操作序列中出现的次数βi,j(即整数αϵ{1,2,...Nki}的数目,其中Ki,j=Ki,α)取决于第一结果bi,1(或者取决于第一结果bi,1的至少一部分)。因此,数目Nki本身取决于第一结果bi,1(或取决于第一结果bi,1的至少一部分)。相同的处理操作Ki,j的这些实例/执行可以在处理操作序列中是连续的,即,可以基于第一结果bi,1的至少一部分来确定数目βi,j,使得在处理操作序列中,处理操作都是相同的。然而,将领会到,情况无需是这种情况,并且处理操作Ki,j的βi,j个实例可以分散在处理操作序列内的其它处理操作之间。因此,可以将第一结果bi,1(或第一结果bi,1的至少一部分)视为形成配置参数或设定,其指定额外重复了(或再次执行了)特定处理操作Ki,j多少次。该配置参数因此可以是si,j位的值,其中si,j个位中的每一个是从第一结果bi,1的相应位置取得的位——在这里,si,j是对应于轮次Ri并且对应于该特定处理操作Ki,j的正整数,并且可以在轮次之间变化或者可以是跨所有轮次的预定值常数。可以基于方法100的密码密钥ψ的至少一部分来选择用于定义处理操作Ki,j的重复执行数目的结果bi,1的特定位(以及可能的位数)。反过来,可以将选取用于该配置参数的结果bi,1的哪些特定位(以及可能的多少个位)视为定义或指定密码密钥ψ的至少一部分。例如,可以使用由密码密钥ψ的至少一部分所催发出的随机数发生器来随机地选择从结果bi,j中选取哪些位(以及可能的多少个位)来使用。
通过在上面讨论了属性(A)和/或(B),函数Yi(以及因此的轮次函数Ri和方法100)对于攻击者来说显著地更加难以进行逆向工程或分析,因为由方法100实行的实际算法或步骤在方法100的执行期间以最终取决于正在处理的输入数据di的方式来动态地改变/更新,即,方法100的性质基于输入数据di和在执行方法100时生成的中间结果而变化。
所述量的输入数据ai,1和ai,2优选地具有相同的位尺寸。所述量的输入数据ai,1和ai,2包括从函数Yi的输入数据dyi中取得的位。在一些实施例中,所述量的输入数据ai,1和ai,2是输入数据dyi的非重叠部分;在其它实施例中,所述量的输入数据ai,1和ai,2是输入数据dyi的重叠部分。然而,在优选实施例中,如果输入数据dyi包括数目2λ个位,那么所述量的输入数据ai,1和ai,2是各自具有数目λ个位的输入数据dyi的非重叠部分。选取输入数据dyi的哪些位贡献给哪个量的输入数据ai,1和ai,2可以基于用于方法100的密码密钥ψ的至少一部分来设置、或者可以定义或指定用于方法100的密码密钥ψ的至少一部分。
结果bi,1和bi,2优选地具有相同的位尺寸。函数Yi的输出数据eyi由结果bi,1和bi,2形成。在一些实施例中,输出数据eyi的每个位是基于第一结果bi,1和/或第二结果bi,2的一个或多个位。在优选实施例中,将输出数据eyi的每个位设置为是来自第一结果bi,1或第二结果bi,2的对应位。选取如何将结果bi,1和bi,2的位映射到输出数据eyi的位可以基于用于方法100的密码密钥ψ的至少一部分来设置、或者可以定义或指定用于方法100的密码密钥ψ的至少一部分。
优选地,输出数据eyi和输入数据dyi具有相同的位尺寸。
因此,轮次Ri的输出数据ei是基于第一和第二结果bi,1和bi,2。类似地,所述量的数据ai,1和ai,2是基于轮次Ri的输入数据di。对于其中轮次函数Ri(i=1,...,Nr)包括如图3中所示的函数Xi的本发明的实施例,清楚的是,第一量的数据ai,1和第二量的数据ai,2是基于由函数Xi生成的输出数据块gi
图5示意性地图示出了根据本发明实施例的针对轮次Ri的双射操作(或函数或映射)Hi(对于i=1,...,Nr)。如从下面的讨论将变得显而易见的那样,双射操作Hi对应于或可以定义或指定用于方法100的密码密钥ψ的至少一部分。
双射操作被布置成将输入值ui双射映射到输出值vi。输入值ui和输出值vi二者都包括数目ni个位,其中ni是对应于轮次Ri的正整数。这在图5中示出,其中输入值ui包括位并且输出值vi包括位
将领会到,由函数Hi提供的双射可以以任何方式实现,因为所需要的是函数Hi将具有ni个位的值域以1对1的方式映射到具有ni个位的对应的值。这例如可以是(由通过用于方法100的密码密钥ψ的至少一部分所催发出的随机数发生器所确定的)随机映射。然而,图5中所示的用于实现函数Hi的架构/结构是优选的,因为它:(a)有效地利用了硬件组件(即,单独的双射映射Bi,j,k);(b)使得更易于基于用于方法100的密码密钥ψ来形成双射操作Hi(或者,反过来,基于已用于双射操作Hi的结构来确定或指定用于方法100的密码密钥ψ的至少一部分);以及(c)通过确保输入值ui的位可以影响输出值vi的大量的(并且优选地全部的)位来帮助改进密码强度。因此,图5中针对函数Hi所示出的结构有助于改进方法100的密码强度,同时还有助于使得更易于做出方法100的多个不同实例(即,做出特定版本或多样化实现)。
如图5中所示,针对轮次Ri的双射操作Hi的实现(i=1,...,Nr)可以包括使用双射映射(或函数或操作)的Nsi个集合Si,j(j=1,...,Nsi)的序列。这里Nsi是对应于轮次Ri的正整数。每个集合Si,j(j=1,...,Ns)具有相应数目Nbi,j个相应双射映射,其中每个双射映射Bi,j,k(k=1,...,Nbi,j)被布置成将具有相应位数Wi,j,k的输入值双射映射到具有Wi,j,k个位的输出值,其中对于j=1,...,Nsi。具体来说:
• 对于第一集合Si,1,双射映射Bi,1,k(k=1,...,Nbi,1)的输入值由来自根据密码密钥ψ的至少一部分所选择的ni位输入值ui的Wi,1,k个相应位形成。例如,输入值ui的每个位可以是双射映射Bi,1,k中的仅一个的输入的对应位,其中来自输入值ui的位与到双射映射Bi,1,k的输入的位的这种对应关系(在图5中被示出为连接线500)取决于方法100的密码密钥ψ的至少一部分。反过来,可以将该对应关系500视为定义密码密钥ψ的至少一部分。可以使用由密码密钥ψ的至少一部分所催发出的随机数发生器来随机选择对应关系500。
• 对于后续集合,集合Si,j(j=2,...,Nsi),双射映射Bi,j,k(k=1,...,Nbi,j)的输入值包括来自双射映射的前一集合Si,j-1的输出值的Wi,j,k个位。前一集合Si,j-1的双射映射Bi,j-1,k(k=1,...,Nbi,j-1)的输出的每个位可以是双射映射的当前集合Si,j的双射映射Bi,j,k中的仅一个的输入值的对应位——位的这种对应关系被示为图5中的连接线502(至少在集合Si,1和Si,2之间)。对应关系502可以从一对相邻集合到另一对相邻集合而变化。该对应关系502可以是预定的。反过来​​,该对应关系可以以与针对对应关系500相同的方式取决于(或被视为定义)方法100的密码密钥ψ的至少一部分。
• ni位输出值vi包括基于用于方法100的密码密钥ψ的至少一部分布置的来自最后一个集合的双射映射的输出值的位。例如,来自双射映射中的每一个的每个输出值的每个位可以用作在输出值vi中的对应位置处的对应位,其中,来自双射映射的输出的位与输出值vi的位的这种对应关系(在图5中被示出为连接线504)取决于方法100的密码密钥ψ的至少一部分。反过来,可以将该对应关系504视为定义或指定密码密钥ψ的至少一部分。例如,可以使用由密码密钥ψ的至少一部分所催发出的随机数发生器来随机选择对应关系504。
对于每个双射映射(i=1,...,Nr,j=1,...,Nsi),可以使用由密码密钥ψ的至少一部分所催发出的随机数发生器来随机选择由该双射映射执行的实际的相应双射。反过来,由这些双射映射执行的相应双射可以被看作定义或指定密码密钥ψ的至少一部分。例如,每个双射映射Bi,j,k(i=1,...,Nr,j=1,...,Nsi,k=1,...,Nbi,j)可以是数字集{0,1,2,...,}的相应的随机生成的双射。
返回参考图4,当函数Hi被用于处理所述量的输入数据ai,1时,输入值ui是所述量的输入数据ai,1,并且输出值vi是所述量的输出数据bi,1。类似地,当函数Hi是处理操作Ki,j中的一个时,那么输入值ui是到处理操作Ki,j的输入(如箭头400所示),并且输出值vi是来自处理操作Ki,j的输出(如箭头402所示)。
在优选实施例中,将双射映射的Nsi个集合Si,j(j=1,...,Nsi)的序列布置成使得ni位输入值ui的每个位ui,j影响ni位输出值vi的全部(或基本上全部)的位vi,j。这有助于改进双射操作Hi的密码安全性,并因此改进方法100的密码安全性。实现此目的的一种方式是通过使得双射映射的Nsi个集合Si,j(j=1,...,Nsi)形成榕树网络。榕树网络是熟知的,并且将因此不在本文中更详细地描述。
如从上文可以看出的,方法100可以以许多不同的方式来配置,这可以被视为设置或定义(或至少对应于)密码密钥ψ。反过来,给定密码密钥ψ(其可以是随机生成的),可以相应地确定/设置方法100的配置(例如,通过使用密码密钥ψ作为用于随机数生成器的种子,并且使用由该催发出的随机数发生器所生成的随机数来指定配置)。特别而言,密码密钥ψ可以对应于或定义以下参数/设置中的一个或多个:
• 用于对应轮次Ri的函数Xi的双射映射Bi,j的数目Nbi(i=1,...,Nr)。
•• 针对函数Xi的由双射映射Bi,j执行的实际双射(i=1,...,Nr且j=1,...,Nbi)。由双射映射Bi,j对其进行操作的位数是wi,j,使得存在可以针对双射映射Bi,j选取的或由双射映射Bi,j实现的个可能双射。
•• 针对函数Xi的双射映射Bi,j的输入和输出的位宽wi,j(i=1,...,Nr且j=1,...,Nbi)。
• 用于对应轮次Ri的函数Yi的双射映射Bi,j,k的集合的数目Nsi(i=1,...,Nr)。
• 针对集合Sj的双射映射Bi,j,k的数目Nbi,j(i=1,...,Nr且j=1,...,Nsi)。
• 针对函数Hi的由双射映射Bi,j,k执行的实际双射(i=1,...,Nr,j=1,...,Nsi,k=1,...,Nbi,j)。由双射映射Bi,j,k对其进行操作的位数是wi,j,k,使得存在可以针对双射映射Bi,j,k选取的或由双射映射Bi,j,k实现的个可能双射。
• 双射映射Bi,j,k的输入和输出的位宽wi,j,k(i=1,...,Nr,j=1,...,Nsi,k=1,...,Nbi,j)。
• 设立对应关系300、302、500、502、504中的一个或多个的方式。例如,对于第i轮次Ri,针对每个对应关系300、302,存在个可能的对应关系;类似地,对于每个对应关系500、502、504,存在个可能的对应关系。
• 对于上面讨论的属性(A)和(B),与那些属性(A)和(B)相关地使用的第一结果bi,1的位(和可能的位数)。
虽然用于密码密钥ψ的密钥空间的尺寸并非简单地是上面提及的针对属性(A)和(B)的可能位选择和可能对应关系的数目以及可能双射的数目的乘积(因为这些的某些组合将等同于其它组合),但是针对上述方法100的结构仍以易于实现/可配置的方式提供了极大尺寸的密钥空间(即,等效密码密钥的位尺寸事实上可以做得非常大,同时仍然提供用于利用对应的不同密钥来产生方法100的个体化实例/实现的极大灵活性)。
因此,如上的方法100提供了许多优点:
(a)极大尺寸的密钥空间。
(b)易于根据特定密钥来配置方法100。等效密码密钥的位尺寸事实上可以做得非常大,同时仍然提供用于利用对应的不同密钥来产生方法100的个体化实例/实现的极大灵活性。
(c)属性(A)和(B)意味着对于攻击者来说显著地更加难以对方法100的任何特定实现/实例进行逆向工程或分析,因为由方法100执行的实际算法或步骤在方法100的执行期间是以最终取决于正被处理的输入数据d1的方式动态地改变/更新的,即,方法100的性质基于输入数据d1和在执行方法100时所生成的中间结果而变化。
(d)可以使得该方法的实现使用相对少量的硬件或软件资源,例如由于函数Hi在轮次Ri(对于i=1,...,Nr)期间的重复使用;以及由于属性(B)。
(e)实际算法提供了类密码水平的安全性。
2-具体示例实施例
如下文描述的那样,在图6-图7中示意性地图示出了方法100的特定示例。
在该示例实施例中:函数Xi被包括在每个轮次函数Fi(i=1,...,Nr)中;预处理步骤200未被包括在轮次函数Fi(i=1,...,Nr)中;中间处理步骤202未被包括在轮次函数Fi(i=1,...,Nr)中;后处理步骤204未被包括在轮次函数Fi(i=1,...,Nr-1)中;并且后处理步骤204被包括在轮次函数FNr中——在这里,后处理步骤只包括执行函数XNr+1(即,基本函数Xi,但是潜在地与该函数的较早实例即X1,...,XNr不同地被配置)。
在该示例实施例中,轮次数目Nr为5,但是将领会到,这可以被设置为任何其它正整数。该数目越大,密码安全性越好,或者至少攻击者成功攻击/分析方法100将会越困难;反过来​​,该数目越小,处理输入数据d1所花费的时间就越少(即,处理速度或等待时间减少),并且需要越少的存储器和/或硬件资源。值Nr=5被认为是一个平衡了这些问题的较好的值。
在该示例实施例中,每个输入数据di和每个输出数据ei(i=1,...,Nr)的尺寸是54位。
图6示意性地图示出了与图3中所示的类似的函数Xi,但是具有针对该特定实施例的具体配置。到函数Xi的输入(即dxi=fi)和来自函数Xi的输出(即exi=gi)都是54位数据块。为了易于图示,仅标记了输入fi的一个位(即,位16:fi,16),仅标记了输出gi的一个位(即,位22:gi,22),并且仅标记了一个双射映射(即,Bi,1)。正如可以看出的:
• 对于每一轮次Ri(i=1,...,Nr),针对函数Xi的双射映射Bi,j的对应数目Nbi为27。对于双射映射Bi,j(i=1,...,Nr,j=1,...,27)中的每一个,wi,j的对应值为wi,j=2,即,每个双射映射Bi,j(j=1,...,Nbi)是将2位数映射到2位数的双射。因此,对于轮次Ri(i=1,...,Nr)中的每一个,针对27个双射映射Bi,j(j=1,...,27)中的每一个存在个可能选择。这些双射映射Bi,j(i=1,...,Nr,j=1,...,27)中的每一个可以基于密码密钥ψ的至少一部分来设置(或者反过来可以定义或指定密码密钥ψ的至少一部分)。
• 对应关系300取来自输入fi的前一半(图6中示出的左半部分)的位和来自输入fi的另一半(图6中示出的右半部分)的位来形成每个双射映射Bi,j的2位输入。图6中示出的特定对应关系300被布置成使得到双射映射Bi,j的2位输入具有被设置为fi,j+27的位2和被设置为fi,j的位1(i=1,...,Nr,j=1,...,27)。当然,这可以是反过来的。再次,这纯粹是示例,并且可以使用其它的对应关系300。
• 对于每个双射映射Bi,j,对应关系302将来自输出gi的前一半(图6中示出的左半部分)的对应位设置为Bi,j的2位输出的位中的一个,并将来自输出gi的另一半(图6中的右半部分)的对应位设置为Bi,j的2位输出的另一个位。图6中示出的特定对应关系302被布置为使得对于j=1,...,27,输出gi的第(2j-1)个位(即,位)是Bi,j的输出的位1,而输出gi的第(2j)个位(即位gi,2j)是Bi,j的输出的位2。当然,这可以是反过来的。再次,这纯粹是示例,并且可以使用其它的对应关系302。
我们接下来转向针对该特定实施例的函数Yi
由于函数Xi的输出是54位的数据块exi,所以到函数Yi的输入(即dyi=exi)也是54位的数据块。类似地,函数Yi的输出eyi是54位的数据块。
第一和第二量的数据ai,1和ai,2二者都是从输入dyi到函数Yi的27位的相应位。这可以简单地说是ai,1包括dyi的最高(或最低)有效的27位(以与dyi中相同的顺序),并且ai,2包括dyi的最低(或最高)有效的27位(以与dyi中相同的顺序)。然而,可以用任何其它方式来完成将dyi到两个分离的27位块中、即到ai,1和ai,2中的划分(其中ai,1和ai,2潜在地交错来形成dyi)。
将参考图7简要描述双射操作Hi的具体版本。在任何情况下,如上所述,第一结果bi,1形成为bi,1=Hi(ai,1)。因此,bi,1是27位的量的数据。
为了处理第二量的数据ai,2,执行以下的处理操作序列:
• 第一处理操作Ki,1循环地轮换其输入(在这种情况下是ai,2)的位。这可以是左轮换或右轮换。Ki,1循环地轮换其输入的位的位置数/位数取决于配置参数pai(或由其设置),所述配置参数pai的值由第一结果bi,1的对应位构成。在该实施例中,pai是2位值,即bi,1的两个位(在bi,1内的对应预定位置处)被用来定义Ki,1循环地轮换其输入的位的位置数/位数。在该特定的实施例中,Ki,1循环地轮换其输入的位的位置数/位数是pai+1个位,使得轮换因此可以是1、2、3或4个位置/位。因此,Ki,1的输出也是27位的量的数据。Ki,1是针对上述属性(A)的处理操作之一。
• 第二处理操作Ki,2翻转或倒转其输入(其是Ki,1的输出)的多个位。Ki,2翻转的、到Ki,2的输入的位数取决于配置参数pbi(或由其设置),所述配置参数pbi的值由第一结果bi,1的对应位构成。在该实施例中,pbi是2位值,即bi,1中的两个位(在bi,1内的对应预定位置处)被用来定义Ki,2翻转的、到Ki,2的输入的位数。在该特定实施例中,被翻转的位数是pbi+1个位,使得被翻转的位数因此可以是1、2、3或4个位。那些位的位置可以是任何预定位置。在该具体实施例中,被翻转的位是到Ki,2的输入的pbi个最低有效位。因此,Ki,2的输出也是27位的量的数据。Ki,2是针对上述属性(A)的处理操作之一。
• 第三处理操作Ki,3是双射操作Hi。因此Ki,3涉及到将双射操作Hi应用于处理操作Ki,2的输出。处理操作Ki,3是针对上述属性(B)的处理操作之一。因此,重复处理操作(Ki,3=Hi)的次数取决于配置参数pci(或由其设置),所述配置参数pci的值由第一结果bi,1的对应位构成。在该实施例中,pci是2位值,即bi,1的两个位(在bi,1内的对应预定位置处)被用来定义执行Ki,3的额外次数。因此,Ki,3可以重复0、1、2或3次。因此,在处理操作序列ki,j中,处理操作Ki,3,...,都是相同的(即Hi)。
• 所执行的下一个处理操作,即,翻转或倒转其输入(其是的输出)的多个位。翻转的、到的输入的位数取决于配置参数pdi(或由其设置),所述配置参数pdi的值由第一结果bi,1的对应位构成。在该实施例中,pdi是2位值,即bi,1的两个位(在bi,1内的对应预定位置处)被用来定义翻转的、到的输入的位数。在该特定实施例中,被翻转的位数是pdi+1个位,使得被翻转的位数因此可以是1、2、3或4个位。那些位的位置可以是任何预定位置。在该具体实施例中,被翻转的位是到的输入的pdi个最低有效位。因此的输出也是27位的量的数据。是针对上述属性(A)的处理操作之一。因此,处理操作,除了它对不同的输入数据进行操作以及可以使用bi,1的不同位来设置其配置参数之外,与处理操作Ki,2相同。
• 执行的下一个处理操作,即,循环地轮换其输入(其是的输出)的位。这可以是左轮换或右轮换。循环地轮换其输入的位的位置数/位数取决于配置参数pei(或由其设置),所述配置参数pei的值由第一结果bi,1的对应位构成。在该实施例中,pei是2位值,即bi,1的两个位(在bi,1内的对应预定位置处)被用来定义循环地轮换其输入的位的位置数/位数。在该特定实施例中,循环地轮换其输入的位的位置数/位数是pei+1个位,使得轮换因此可以是1、2、3或4个位置/位。的输出(即第二结果bi,2)因此也是27位的量的数据。是针对上述属性(A)的处理操作之一。因此,处理操作,除了它对不同的输入数据进行操作以及可以使用bi,1的不同位来设置其配置参数之外,与处理操作Ki,1相同。
优选地,使用从第一结果bi,1取得的相应的不同位来设置针对每个轮次Ri的配置参数pai、pbi、pci、pdi和pei。这有助于增加用于方法100的密钥空间的有效尺寸。类似地,在一些实施例中,从第一结果bi,1中选择使用的位在轮次之间改变。
处理操作Ki,1、Ki,2是提供上述属性(A)的处理操作的示例。将领会到,在本发明的其它实施例中,处理操作Ki,j可以执行其它类型的处理以提供属性(A),诸如:(i)将值添加到到Ki,j的输入,其中所述值取决于bi,1的一个或多个位;(ii)向后重新排序Ki,j的一定数目的位,其中该数目取决于bi,1的一个或多个位;等等。
图7示意性地图示出了双射操作Hi,其与图5中示出的相类似,但针对该特定实施例具有具体的配置。到函数Hi的输入(即ui)和来自函数Hi的输出(即vi)都是27位数据块。为了易于图示,仅标记了输入ui的一个位(即,位8:ui,8),仅标记了输出vi的一个位(即,位21:vi,21)。诸如可以看出的:
• 对于每个轮次Ri(i=1,...,Nr),针对函数Hi的双射映射Bi,j,k的集合的对应数目Nsi是3。
• 对于每个集合Si,j(i=1,...,Nr且j=1,...,3),该集合Si中的双射映射Bi,j,k的数目Nbi,j是9。
• 对于每个集合Si,j(i=1,...,Nr且j=1,...,3),对于在该集合中的每个双射映射Bi,j,k(k=1,...,9),wi,j,k的对应值为wi,j,k=3,即,每个双射映射Bi,j,k(k=1,...,Nbi,j)是将3位数映射到3位数的双射。因此,对于轮次Ri(i=1,...,Nr)中的每一个,针对27个双射映射Bi,j,k(j=1,...,3且k=1,…,9)中的每一个存在个可能选择。这些双射映射Bi,j,k(i=1,...,Nr,j=1,...,3且k=1,…,9)中的每一个可以基于密码密钥ψ的至少一部分来设置(或者反过来可以定义或指定密码密钥ψ的至少一部分)。
• 对应关系500可以由密码密钥ψ的至少一部分来确定/设置(或反过来可以定义或指定密码密钥ψ的至少一部分)。如图7中所示(其仅示出对应关系500的一个示例),使用输入ui的三个相应位将第一集合Si,1中的每个双射映射Bi,1,k(k=1,...,9)的输入形成为3位输入,其中输入ui的每个位形成双射映射Bi,1,k(k=1,...,9)的输入的仅一个输入位。
• 第一集合Si,1与第二集合Si,2之间的对应关系502是预定的,并被定义如下:
• 令双射映射Bi,1,k(k=1,...,9)的3位输出包括作为3位值的位δk,3、δk,2和δk,1
• 令到双射映射Bi,2,k(k=1,...,9)的3位输入包括作为3位值的位 k,3 k,2 k,1
• 那么
k,3p,q,其中p=3((k-1)mod3)+1且
k,2p,q,其中p=3((k-1)mod3)+2且
k,1p,q,其中p=3((k-1)mod3)+3且
• 第二集合Si,2和第三集合Si,3之间的对应关系502是预定的,并被定义如下:
• 令双射映射Bi,2,k(k=1,...,9)的3位输出包括作为3位值的位δk,3、δk,2和δk,1
• 令到双射映射Bi,3,k(k=1,...,9)的3位输入包括作为3位值的位 k,3 k,2 k,1
• 那么
k,3p,q,其中+1且q=3-((k-1)mod3)
k,2p,q,其中+2且q=3-((k-1)mod3)
k,1p,q,其中+3且q=3-((k-1)mod3)
• 对应关系504可以由密码密钥ψ的至少一部分确定/设置(或者反过来可以定义或指定密码密钥ψ的至少一部分)。如图7中所示(其仅示出对应关系504的一个示例),输出形成最后一个集合Si,3中的双射映射Bi,3,k(k=1,...,9),每一个提供输出vi的3个位,使得输出vi的每个位对应于来自双射映射Bi,3,k(k=1,...,9)之一的输出的相应位。
值得注意的是:
• 让wi,j,k>2(i=1,...,Nr,j=1,...,Nsi,k=1,...,Nbi,j)意味着对应的双射映射Bi,j,k可以是非线性的(或非仿射的)。因此,在优选实施例中(例如,如图7中所示),双射映射Bi,j,k中的至少一些(并且优选地全部)让wi,j,k>2。可以执行双射映射Bi,j,k的选择以确保它们总是非线性的。
• 如上面针对图7所描述的,优选地,wi,j,k=3(i=1,...,Nr,j=1,...,Nsi,k=1,...,Nbi,j)。这是对应双射映射Bi,j,k可以是非线性(或非仿射)的最小值。通过使用wi,j,k=3,实现所有双射映射Bi,j,k所需的硬件或软件资源显著小于wi,j,k为较高值时将会需要的硬件或软件资源。因此,通过让wi,j,k=3(i=1,...,Nr,j=1,...,Nsi,k=1,...,Nbi,j),实现了能够具有非线性双射的最小硬件或软件资源使用。
• 具有如图7中所示的对应关系502意味着,对于每个轮次Ri(i=1,...,Nr),双射映射Bi,j,k(j=1,...,Nsi,k=1,...,Nbi,j)形成榕树网络。这(从硬件或软件资源的角度)提供了一种确保到双射函数Hi的输入ui的每个位ui,j能够影响(或贡献于)由输出vi的每个输出位vi,j所取的值的有效方式。这有助于增加方法100的整体安全性。虽然使用所提及的其它对应关系502来确保到双射函数Hi的输入ui的每个位ui,j都可以影响由输出vi的每个输出位vi,j所取的值将会是可能的,但是在图7中使用的特定对应关系从小型硬件/软件资源使用的角度来看是有益的。
事实上,让wi,j,k=3(i=1,...,Nr,j=1,...,Nsi,k=1,...,Nbi,j)和在函数Hi(i=1,...,Nr)内使用榕树网络是一种选择,其确定:(a)到函数Hi的输入尺寸是27位,正如从图7中可以看到的,以及(b)因此,输入di和输出ei的尺寸(i=1,...,Nr)是2×27=54位。
将领会到,虽然在该特定示例实施例中的方法100的输入d1和输出eNr的尺寸是54位,但是可以使用用于适配块密码以处理不同尺寸的数据的任何标准技术来将方法100的该特定实施例用于处理具有不同位数的量的数据。图8中示意性地示出了一示例,其中要被处理的量的数据800包括64位。在该示例中,使用方法100来处理数据800的输入的64个位数量中的54位以产生具有54位的中间结果802。然后使用方法100来处理54位的量的数据,其包括(a)来自中间结果802的44位和来自初始量的数据800的未被处理以产生中间结果802的10位。那么最终输出的量的数据804是64位数量的数据,其包括(a)由方法100的该第二应用产生的54位和(b)未由方法100的第二应用处理的中间结果802的10位。将领会到,为了能够处理任意数据尺寸的量的输入数据,可以实现图8的众多变型,并且这可以利用与上面讨论的具体示例实施例不同的其它版本的方法100。
3——系统概述
图9示意性地图示出了计算机系统900的示例。系统900包括计算机902。计算机902包括:存储介质904、存储器906、处理器908、接口910、用户输出接口912、用户输入接口914和网络接口916,它们全都通过一个或多个通信总线918链接在一起。
存储介质904可以是任何形式的非易失性数据存储设备,诸如硬盘驱动器、磁盘、光盘、ROM等中的一个或多个。存储介质904可以存储为了使计算机902运转而供处理器908执行的操作系统。存储介质904还可以存储一个或多个计算机程序(或软件或指令或代码)。
存储器906可以是适合于存储数据和/或计算机程序(或软件或指令或代码)的任何随机存取存储器(存储单元或易失性存储介质)。
处理器908可以是适合于执行一个或多个计算机程序(诸如存储在存储介质904上和/或存储器906中的计算机程序)的任何数据处理单元,所述计算机程序中的一些可以是根据本发明实施例的计算机程序或者是当由处理器908执行时使得处理器908执行根据本发明实施例的方法100并且将系统900配置为根据本发明实施例的系统的计算机程序。处理器908可以包括单个数据处理单元或者分离地或彼此协作地、并行地操作的多个数据处理单元。处理器908在执行针对本发明实施例的数据处理操作时可以将数据存储到存储介质904和/或存储器906和/或从存储介质904和/或存储器906读取数据。
接口910可以是用于向设备922提供接口的任何单元,所述设备922在计算机902外部或可从计算机902移除。设备922可以是数据存储设备,例如光盘、磁盘、固态存储设备等等中的一个或多个。设备922可以具有处理能力——例如,设备可以是智能卡。因此,接口910可以根据其从处理器908接收的一个或多个命令而从设备922访问数据、或向设备922提供数据、或与设备922对接。
用户输入接口914被布置为接收来自系统900的用户或操作者的输入。用户可以经由系统900的诸如鼠标(或其它指针设备)926和/或键盘924的一个或多个输入设备来提供该输入,所述一个或多个输入设备连接到用户输入接口914或与用户输入接口914通信。然而,将领会到,用户可以经由一个或多个附加的或替代的输入设备(诸如触摸屏)向计算机902提供输入。计算机902可以将经由用户输入接口914从输入设备接收到的输入存储在存储器906中,以供处理器908随后访问和处理,或者可以直接将其传递给处理器908,使得处理器908可以相应地对用户输入进行响应。
用户输出接口912被布置成向系统900的用户或操作者提供图形/视觉和/或音频输出。这样,处理器908可以被布置成指示用户输出接口912形成表示期望图形输出的图像/视频信号,并将该信号提供给连接到用户输出接口912的系统900的监视器(或屏幕或显示单元)920。附加地或可替代地,处理器908可以被布置成指示用户输出接口912形成表示期望音频输出的音频信号,并将该信号提供给连接到用户输出接口912的系统900的一个或多个扬声器921。
最后,网络接口916提供用于计算机902从一个或多个数据通信网络下载数据和/或将数据上传到一个或多个数据通信网络的功能性。
将领会到,图9中图示出的以及上面描述的系统900的架构仅仅是示例性的,并且具有不同架构的其它计算机系统900(例如,具有比图9中示出的更少的组件、或者具有除图9中示出的之外附加和/或替代的组件)可以用于本发明的实施例中。作为示例,计算机系统900可以包括以下中的一个或多个:个人计算机;服务器计算机;移动电话;平板计算机;膝上型计算机;电视机;机顶盒;游戏控制台;其它移动设备或消费电子设备;等等。
虽然将领会到,上面描述的通用系统900可以用于执行或实现方法100,但是从上面对方法100的描述(并且特别是参照图6和图7讨论的特定示例实施例)很清楚的是,方法100可以以仅使用少量硬件(即,小的门数)的方式来实现,这是归因于其总体结构和硬件组件在方法100期间的不同阶段的潜在重复使用。此外,正如已经描述的,方法100是高度可个体化的(根据用于方法100的密码密钥ψ),使得容易产生方法100的大量多样化/不同的实例而同时保持高安全性级别。这意味着方法100特别适合于经由例如印刷电子器件或电子束光刻(或e束光刻)或者可以被快速配置以便在每一遍/每次印刷时产生不同设备的其它制造技术来以硬件实现。
“印刷电子器件”技术是用于通过印刷过程或印刷技术在各种衬底上创建或制造完整的电气设备或电路的熟知方法和过程。印刷可以使用许多常规印刷技术,诸如丝网印刷、柔版印刷、凹版印刷、平版印刷、喷墨和3D印刷技术。特别而言,电功能电子或光学墨水可以被沉积在衬底上,从而形成有源和/或无源电子组件。这些组件可以包括例如二极管、晶体管、导线、触点和电阻器、以及开关、传感器(诸如光传感器)、输出设备、输入设备、致动器、电池、LED等。从印刷电子过程得到的设备称为“印刷电子设备”或“印刷电子电路”。由于印刷电子器件是熟知的,所以本文中将不提供进一步的细节。然而,可以在例如http://en.wikipedia.org/wiki/Printed_electronics上找到关于印刷电子器件的更多信息,其全部内容通过引用并入本文。自然地,术语“印刷电子设备”和“印刷电子电路”不应与术语“印刷电路板”混淆,印刷电路板是一个板,该板支持电气组件(其实际上提供功能性)并使用该板上的导电轨道连接那些组件。
电子束光刻涉及到扫描聚焦电子束以在覆盖有电子敏感的膜(称为抗蚀剂)的表面上绘制定制形状(称为“暴露”的过程)。电子束改变抗蚀剂的溶解度,通过将抗蚀剂浸渍在溶剂中使得能够选择性地去除抗蚀剂的已暴露或未暴露区域(称为“显影”的过程)。这使得能够在抗蚀剂中创建非常小的结构,随后可以将其转移到衬底材料上(经常是通过蚀刻)。由于电子束光刻技术是熟知的,因此本文中将不提供进一步的细节。然而,可以在例如http://en.wikipedia.org/wiki/Electron-beam_lithography中找到关于电子束光刻的更多信息,其全部内容通过引用并入本文。使用电子束光刻技术创建芯片的示例是通过Mapper Lithography(参见http://www.mapperlithography.com/)。
这样的制造技术使得能够生产每一个都实现方法100的一系列硬件设备,其中(使用用于依照针对方法100的密码密钥ψ对方法100进行配置的上述选项中的任何)每个设备都与其它设备不同地配置。这在图10中示意性地图示出。
图10示意性地图示出了用于生成或制造多个设备(或芯片)1002的系统1000。
系统1000包括设备生成器1004,其被布置为经由上面提及的制造技术之一来生产(或制造或生成)设备1002。设备生成器1004例如可以是实现印刷电子器件的印刷的印刷机,或者可以是用于经由电子束光刻来创建芯片的电子束光刻设备。当然,设备生成器1004将需要指定设备生成器1004要生产的每个设备1002的性质(或者组件的组成或者配置或者布局或者规范或者布置)的输入。系统1000因此包括布局模块1007,所述布局模块1007被布置为产生针对每个设备的布局并且将该布局(以适合于由设备生成器1004使用的格式)提供给设备生成器1004。这样的布局模块1007是熟知的并且本文中将不会更详细地描述。布局模块1007可以被实现为任何数据处理系统(诸如一个或多个计算机系统900)或者在其上执行。
每个设备1002被布置为执行各种功能性,包括执行方法100。每个设备1002可以被与所生产的其它设备1002不同地配置。为此,布局模块1007包括配置模块1006。配置模块1006被布置为针对每个设备1002确定对应的配置(如上所述)。这样,配置模块1006可以被布置为生成对将要被制造的每个设备1002而言是特定的用于方法100的密钥ψ,并且基于该密钥ψ来确定要由该设备1002实现的用于方法100的对应的配置。可替代地,配置模块1006可以被布置为确定对将要被制造的每个设备1002而言是特定的用于方法100的配置(例如,通过随机地生成配置),其中该配置然后对应于(或者设置/定义)对该设备1002而言是特定的用于方法100的密钥ψ。
将领会到,除了执行方法100之外,设备1002还可以被布置为执行其它功能性,并且可能需要附加的组件(诸如数据输入/输出接口、存储器等)。由布局模块1007生成的布局包括或使用由配置模块1006生成的用于方法100的配置,以及形成设备1002的完整布局的其它组件/元素的细节。
系统1000还可以包括配置存储系统1008。配置存储系统1008可以是任何数据处理系统,并且因此可以包括一个或多个计算机系统900。例如,配置存储系统1008可以包括一个或多个服务器。配置存储系统1008包括数据库1010。系统1000可以被布置成使得由配置模块1006生成的配置被提供或传送给配置存储系统1008——配置存储系统1008然后可以将接收到的配置存储在数据库1010中。这可以涉及到仅存储定义对应配置的用于方法100的密钥ψ,或者可以涉及到存储关于配置的更详细的信息(例如,双射映射Bi,j和/或Bi,j,k的细节,对应关系300、302、500、502、504的细节等)。这意味着能够访问数据库1010和存储在其中的配置的实体可以以根据一个或多个已存储配置进行配置的方式来执行方法100。
每个设备1002可以具有对应的标识符(例如识别号或字符串)。该标识符可以唯一地识别对应的设备1002并且将该设备1002与制造的所有其它设备1002进行区分。该标识符可以由布局模块1007(以及可能的配置模块1006)生成;可替代地,布局模块1007可以从外部源(图10中未示出)接收标识符。由布局模块1007生成的布局可以被布置成使得设备1002的标识符被存储为该设备1002内的值或者数据。设备1002可以被布置为响应于接收到对其标识符的请求而提供或者输出其标识符。设备1002可以被布置为作为设备1002被配置成执行的一个或多个操作(或数据处理/功能)的一部分来使用其标识符。附加地,系统1000可以被布置为将针对设备1002的标识符连同针对该设备1002的配置一起提供给配置存储系统1008,使得配置存储系统1008然后可以将接收到的配置与它们相应的标识符相关联地存储在数据库1010中。这意味着:给定针对特定设备1002的标识符,能够访问数据库1010和存储在其中的配置的实体可以从数据库1010确定对应于该标识符的配置,使得它们可以以根据该配置进行配置的方式来执行方法100(从而以与该特定设备1002应执行其方法100相同的方式来执行该方法100,即,模仿该具体设备1002)。
4——示例用途
可以以各种方式使用设备1002,其示例在下面阐述。当然,将领会到,设备1002也可以应用于其它用途,并且本发明的实施例不应被视为局限于下面的示例。
图11示意性地图示出了根据本发明实施例的系统1100。
系统1100可以用于提供关于物品/对象1102是否是真品(或可信)的指示。物品1102可以是任何对象(例如,人可能正考虑购买或提货的商品,并且那个人希望验证该商品是真品而不是赝品)。在系统1100中,原始(或真品)物品1102已经附着(或应用或附接)到对应的设备1002上,或嵌入(或包含)在对应的设备1002内。可以以任何方便的方式将设备1002附接到物品1102,所述方式诸如是经由粘合剂、与物品1102整体地形成、经由锁定机构(例如安全销/标签)附接等。
为了能够检查物品1102的真实性,系统1100包括验证设备1104和验证系统1106。验证系统1106可以被布置为与配置存储系统1008通信,或者替代地,验证系统1106可以包括配置存储系统1008。
验证设备1104和验证系统1106可以被布置为经由任何合适的数据通信方法来彼此通信。例如,验证设备1104和验证系统1106可以经由网络(图11中未示出)来彼此通信。所述网络可以是适合于在验证设备1104和验证系统1106之间传送或传递数据的任何种类的数据通信网络。因此,所述网络可以包括以下中的一个或多个:局域网、广域网、城域网、互联网、无线通信网络、有线或线缆通信网络、卫星通信网络、电话网络等。验证设备1104和验证系统1106可以被布置为经由网络经由任何合适的数据通信协议彼此通信。当然,将领会到,在验证设备1104和验证系统1106之间可以存在一个或多个中间计算机或设备,其使得能够在验证设备1104和验证系统1106之间进行数据通信。验证设备1104可以被布置为经由由验证系统1106提供的网站或网页来与验证系统1106通信。
验证设备1104可以是适合于与设备1002通信的任何数据处理设备。验证设备1104可以例如包括计算机系统900。验证设备1104可以例如是移动电话。验证设备1104可以被布置为经由任何合适的通信手段来与设备1002通信。例如,设备1002可以包括一个或多个触点/焊盘/引脚,验证设备1104(当与那些一个或多个触点/焊盘/引脚接触时)可以使用所述一个或多个触点/焊盘/引脚从设备1002接收数据和/或向设备1002提供数据。可替换地,设备1002可以被布置为经由无线/非接触式通信信道(诸如近场通信、WiFi、蓝牙等)来与验证设备1104通信,在这种情况下,设备1002和验证设备1104可以包括执行这种无线/非接触式通信所需的任何合适的无线/非接触式通信接口/组件。
验证系统1106可以是任何数据处理系统,并且因此可以包括一个或多个计算机系统900。例如,验证系统1106可以包括一个或多个服务器。
图12是示意性地图示出根据本发明实施例的使用系统1100执行的方法1200的流程图。该方法可以部分地通过在验证设备1104上执行的应用或计算机程序以及部分地通过在验证系统1106上执行的应用或计算机程序来实现。
在步骤1202处,由验证设备1104向设备1002提供挑战p。挑战p可以是随机生成的数或量的数据。挑战p可以由验证设备1104生成,或者可以由验证系统1106(其然后提供挑战p给验证设备1104供验证设备1104继而将挑战p传递给设备1002)生成。挑战p可以包括等于输入数据d1的位尺寸的多个位。
在步骤1204处,设备1002使用方法100来处理挑战p以生成第一响应q1。例如,如果挑战p包括等于输入数据d1的位尺寸的多个位,那么设备1002可以使用挑战p作为输入数据d1,在这种情况下,第一响应q1可以是方法100的输出,即q1=eNr
在步骤1206处,设备1002将第一响应q1和设备1002的标识符(存储在设备1002上)提供给验证设备1104。将领会到,这可以作为一个通信/消息而完成或者这可以经由多个通信/消息来实现(例如,一个消息包括第一响应q1并且另一个不同的消息包括标识符)。实际上,标识符可以先前已被提供给验证设备1104是可能的(例如,当设备1002和验证设备1104建立它们的通信信道/链路时)。
在步骤1208处,验证设备1104将所接收的标识符提供给验证系统1106。
在步骤1210处,验证系统1106使用接收到的标识符来确定该具体设备1002的对应配置。例如,验证系统1106可以访问/查询数据库1010以识别/检索用于由该具体设备1002实现的方法100的配置(或密钥ψ)。验证系统1106然后可以使用该配置来使用(如由所确定的配置所配置的)方法100来处理挑战p以生成第二响应q2。以这种方式,验证系统1106旨在模仿由设备1002执行的处理。步骤1210可以涉及到验证设备1104向验证系统1106提供挑战(特别是如果它是最初生成了挑战p的验证设备1104)。
在步骤1212处,确定第一响应q1是否与第二响应q2相同(即,将第一响应q1与第二响应q2相比较)。步骤1212可以由验证系统1106执行(在这种情况下,方法1200还涉及到验证设备1104将第一响应q1传递给验证系统1106,例如在步骤1208处)。可替代地,步骤1212可以由验证设备1104执行(在这种情况下,方法1200还涉及到验证系统1106将第二响应q2传递给验证设备1104)。
如果在步骤1212处确定了第一和第二响应q1和q2相同,那么在步骤1214处,基于物品1102可信,采取一个或多个步骤。例如,如果步骤1212由验证系统1106执行,那么步骤1214可以包括验证系统1106向验证设备1104提供消息或指示以向验证设备1104通知该物品1102可信。步骤1214可以包括验证设备1104向验证设备1104的操作者通知该物品1102的成功认证(例如通过在验证设备1104的屏幕上显示对应的消息和/或通过输出对应的音频信号)。
如果在步骤1212处确定了第一和第二响应q1和q2不相同,那么在步骤1216处,基于物品1102不可信,采取一个或多个步骤。例如,如果步骤1212由验证系统1106执行,那么步骤1214可以包括验证系统1106向验证设备1104提供消息或指示以向验证设备1104通知该物品1102不可信。步骤1214可以包括验证设备1104向验证设备1104的操作者通知该物品1102的不成功认证(例如通过在验证设备1104的屏幕上显示对应的消息和/或通过输出对应的音频信号)。
作为验证过程的一部分,也可以执行附加的检查。例如,步骤1214可以包括验证系统1106查明具有该特定标识符的设备1002是否在阈值时间段内在多个不同地理位置处(以上面阐述的方式)被认证了。如果该确定是肯定的,那么验证系统1106可以断定设备1002已被克隆或复制(各种克隆体可能以未授权的方式在不同物品上在不同位置处使用),在这种情况下,步骤1214可以包括采取适当的动作来对抗该设备1002的克隆(例如不再授权具有该特定标识符的设备1002的使用或批准/认证)。
系统1100可以类似地用于执行物品1102的跟踪/追踪(例如,当在各个位置之间运输物品1102时)。可以执行方法1200以用于物品1102的这种跟踪/追踪,在这种情况下,步骤1214可以包括:验证系统1106记录与物品1102有关的数据,诸如:与所接收的标识符相对应的物品1102(或者至少其设备1002)处于某个位置(即,验证设备1104的位置);在某个日期/时间对与所接收的标识符对应的物品1102(或至少其设备1002)进行测试;等等。
图13示意性地图示出了根据本发明实施例的系统1300。系统1300可以用于控制软件项目的使用,如下面将更详细描述的。
在系统1300中,数据处理设备1302(诸如计算机、移动电话、膝上型计算机或任何其它系统900)已经附着(或应用或附接)到对应的设备1002上或嵌入(或包含)在对应的设备1002内。设备1002可以以任何方便的方式附接到数据处理设备1302,所述方式诸如是经由粘合剂、与数据处理设备1302整体地形成、经由锁定机构(例如安全销/标签)附接等。可替代地,数据处理设备1302的用户/操作者可以简单地具有包括设备1302的令牌(例如,密钥卡、记忆棒、USB令牌或其它便携式设备)。
数据处理设备1302被配置为经由任何合适的通信手段来与设备1002进行通信。例如,设备1002可以包括一个或多个触点/焊盘/引脚,数据处理设备1302(当与一个或多个触点/焊盘/引脚接触时)可以使用所述一个或多个触点/焊盘/引脚从设备1002接收数据和/或向设备1002提供数据。可替代地,设备1002可以被布置为经由无线/非接触式通信信道(诸如近场通信、WiFi、蓝牙等)来与数据处理设备1302进行通信,在这种情况下,设备1002和数据处理设备1302可以包括用于执行这样的无线/非接触式通信所需的任何合适的无线/非接触式通信接口/组件。
数据处理设备1302还被布置成执行(例如,使用设备1302的一个或多个处理器)计算机程序(或软件项目)1304。旨在计算机程序1304应该仅在该特定数据处理设备1302(或者如果数据处理设备1302的用户拥有对应的设备1002)上运行或执行——即,如果计算机程序1304要被拷贝或传送到不同的数据处理设备1302(或者如果数据处理设备1302的用户不拥有正确的设备1002),那么计算机程序1304将不会在该数据处理设备1302上正确地执行(即,将不提供期望的/正常的功能性)。
为了实现这一点,系统1100包括软件提供者系统1306。软件提供者系统1306可以被布置为将计算机程序1304提供给数据处理设备1302。这可以经由任何合适的手段(例如在网络上经由数据传送或物理递送)来实现。因此,软件提供者系统1306和数据处理设备1302可以被布置成经由任何合适的数据通信方法来彼此通信。例如,软件提供者系统1306和数据处理设备1302可以经由网络(图13中未示出)来彼此通信。所述网络可以是适合于在软件提供者系统1306和数据处理设备1302之间传送或传递数据的任何种类的数据通信网络。因此,所述网络可以包括以下中的一个或多个:局域网、广域网、城域网、互联网、无线通信网络、有线或线缆通信网络、卫星通信网络、电话网络等。软件提供者系统1306和数据处理设备1302可以被布置成经由网络经由任何合适的数据通信协议彼此通信。当然,将领会到,在软件提供者系统1306和数据处理设备1302之间可以存在一个或多个中间计算机或设备,其使得能够在软件提供者系统1306和数据处理设备1302之间进行数据通信。数据处理系统1302可以被布置为经由由软件提供者系统1306提供的网站或网页来与软件提供者系统1306通信。
软件提供者系统1306可以是任何数据处理系统,并且因此可以包括一个或多个计算机系统900。例如,软件提供者系统1306可以包括一个或多个服务器。软件提供者系统1306可以被布置为与配置存储系统1008通信,或者可替代地,软件提供者系统1306可以包括配置存储系统1008。
图14是示意性地图示出根据本发明实施例的使用系统1300执行的方法1400的流程图。
在步骤1402处,数据处理设备1302向软件提供者系统1306发送对软件项目的请求。该请求包括设备1002的标识符。因此,步骤1402可以包括数据处理设备1302向设备1002发送对设备标识符的请求,并且设备1002响应于该请求向数据处理设备1302提供标识符。
在步骤1404处,软件提供者系统1306生成挑战p。挑战p可以是随机生成的数或量的数据。挑战p可以包括等于输入数据d1的位尺寸的多个位。
在步骤1406处,软件提供者系统1306使用接收到的标识符来确定数据处理设备1302的具体设备1002的对应配置。例如,软件提供者系统1306可以访问/查询数据库1010以识别/检索由该具体设备1002实现的方法100的配置(或密钥ψ)。然后,软件提供者系统1306可以使用该配置来使用(如由所确定的配置进行配置的)方法100来处理挑战p以生成第一响应q1。例如,如果挑战p包括等于输入数据d1的位尺寸的多个位,那么软件提供者系统1306可以使用挑战p作为输入数据d1,在这种情况下,第一响应q1可以是方法100的输出,即q1=eNr。以这种方式,软件提供者系统1306旨在模仿将由设备1002执行的处理。
在步骤1408处,软件提供者系统1306基于第一响应q1并且用挑战p来配置所请求的软件项目1304。如将简短地描述的,软件项目1304(当由数据处理设备1302执行时)被布置成将挑战p发送到设备1002并且从设备1002接收回第二响应q2。因此,软件提供者系统1306可以被布置为配置所请求的软件项目1304,使得当它由数据处理设备1302执行时,它将所接收的第二响应q2与第一响应q1的已知“正确”值进行比较,并且(a)如果所接收的第二响应q2等于第一响应q1,那么软件项目1304执行预期的/正常的功能性,而(b)如果所接收的第二响应q2不等于第一响应q1,那么软件项目1304执行与预期的/正常的功能性不同的功能性(例如,软件项目1304可以终止它自己的执行,或者可以向数据处理设备1302的操作者提供无意义或无用的输出数据)。可替代地,软件项目1304可以不被配置为明确地将所接收的第二响应q2与第一响应q1的已知“正确”值进行比较——相反,软件提供者系统1306可以配置软件项目1304以使用所接收的第二响应q2作为到一个或多个计算/操作的输入,其中,这些计算/操作仅在所接收的第二响应q2等于第一响应q1的情况下提供正确的/预期的/正常的结果。例如,软件项目1304中的操作可以被布置为处理变量x,在这种情况下,软件提供者系统1306可以修改该操作使得它处理x* XOR q2,其中x*在修改的软件项目1304中被配置为等于x XOR q1——在这种情况下,操作将仅在q1=q2的情况下处理变量x(如原来预期的那样)。将领会到,软件提供者系统1306可以基于第一响应q1并且用挑战p来以任何其它方式配置所请求的软件项目1304(使得软件项目1304将仅仅在响应于挑战p而从设备1002获得的第二响应q2的值等于第一响应q1的情况下提供其正常的/预期的/期望的功能性)。
在步骤1410处,软件提供者系统1306将已配置的软件项目1304提供给数据处理设备1302。
在步骤1412处,数据处理设备1302执行软件项目1304。如上文解释的,这涉及到软件项目1304(或数据处理设备1302)将包含在软件项目1304中的挑战p提供给设备1002。设备1002使用方法100来处理挑战p以生成第二响应q1。例如,如果挑战p包括等于输入数据d1的位尺寸的多个位,那么设备1002可以使用挑战p作为输入数据d1,在这种情况下,第二响应q2可以是方法100的输出,即q2=eNr。设备1002向软件项目1304(或数据处理设备1302)提供回第二响应q2,并且软件项目1304然后使用第二响应q2继续执行。
图15是示意性地图示出了根据本发明实施例的使用系统1300执行的另一方法的流程图。
在步骤1502处,数据处理设备1302向软件提供者系统1306发送对软件项目的请求。该请求包括设备1002的标识符。因此,步骤1502可以包括数据处理设备1302向设备1002发送对设备标识符的请求,并且设备1002响应于该请求向数据处理设备1302提供标识符。
在步骤1504处,软件提供者系统1306使用接收到的标识符来确定数据处理设备1302的具体设备1002的对应配置。例如,软件提供者系统1306可以访问/查询数据库1010以识别/检索由该具体设备1002实现的方法100的配置(或密钥ψ)。然后,软件提供者系统1306可以配置所请求的软件项目1304以能够使用与该具体设备1002相同的配置来执行方法100(例如通过包括用于根据该配置执行方法100的代码和/或通过在软件项目1304内包括供软件项目1304使用的密钥ψ)。软件提供者系统1306还可以配置所请求的软件项目1304使得当它被数据处理设备1302执行时:
(a)生成挑战p。挑战p可以是随机生成的数或量的数据。挑战p可以包括等于输入数据d1的位尺寸的多个位。
(b)使用(如包含/编码在软件项目1304内的)方法100来处理挑战p以生成第一响应q1。例如,如果挑战p包括等于输入数据d1的位尺寸的多个位,那么软件项目1304可以使用挑战p作为输入数据d1,在这种情况下,第一响应q1可以是是方法100的输出,即,q1=eNr
(c)向设备1002发出挑战p,并从设备1002接收第二响应q2。在这里,第二响应q2是由处理挑战p的设备1002提供的值。
软件提供者系统1306可以配置软件项目1304使得软件项目1304将仅仅在响应于挑战p而从设备1002获得的第二响应q2的值等于第一响应q1的情况下提供其正常的/预期的/期望的功能性。例如,软件提供者系统1306可以被布置成将所请求的软件项目304配置为将所接收的第二响应q2与第一响应q1进行比较,并且(a)如果所接收的第二响应q2等于第一响应q1,那么软件项目1304执行预期的/正常的功能性,而(b)如果所接收的第二响应q2不等于第一响应q1,那么软件项目1304执行与预期的/正常的功能性不同的功能性(例如,软件项目1304可以终止它自己的执行,或者可以向数据处理设备1302的操作者提供无意义或无用的输出数据)。可替代地,软件项目1304可以不被配置为明确地将所接收的第二响应q2与针对第一响应q1的已知“正确”值进行比较——相反,软件提供者系统1306可以配置软件项目1304以使用第一和第二响应q1和q2作为到一个或多个计算/操作的输入,其中这些计算/操作仅在所接收的第二响应q2等于第一响应q1的情况下提供正确的/预期的/正常的结果。例如,软件项目1304的操作可以被布置为处理变量x,在这种情况下,软件提供者系统1306可以修改该操作,使得它处理x XOR q2 XOR q1——在这种情况下,仅在q1=q2的情况下,经修改/配置的软件项目1304的操作将以预期的方式处理变量x。将领会到,软件提供者系统1306可以以任何其它方式配置所请求的软件项目1304(使得软件项目1304将仅仅在响应于挑战p而从设备1002获得的第二响应q2的值等于第一响应q1的情况下提供其正常的/预期的/期望的功能性)。
在步骤1506处,软件提供者系统1306将已配置的软件项目1304提供给数据处理设备1302。
在步骤1508处,数据处理设备1302执行软件项目1304。这涉及到软件项目1304(或数据处理设备1302)执行上面阐述的步骤(a)、(b)和(c)。
由于由系统1000生成的设备1002全部是个体化的(即,以其自己的相应配置执行方法100),所以如果不正确的设备1002与软件项目1304一起使用(例如,如果软件项目1304已被转移到不同的数据处理设备1302),那么第二响应q2将不等于“正确的”第一响应q1,并且软件项目1304将不以正常的/预期的/期望的功能性执行。
以上示例涉及到在挑战-响应机制中使用设备1002,由此向设备1002发出挑战,设备1002使用方法100来处理挑战以形成响应,并且基于该响应是否是从特定设备1002所预期的响应来执行后续处理(例如,认证或者继续软件项目的“正确”执行)。将领会到,作为任何挑战-响应协议的一部分(其可以与上面阐述的那些相同或不同)以及为了任何其它目的(不仅仅是认证物品1102或者将软件项目1304的执行锁定到具体设备1302),可以使用方法100(和设备1002)来确定响应。以这种方式,设备1002可以用于提供相应的可认证的唯一标识符,其可以用在具有标识符是有用的的各种场景中。
将领会到,在本发明的实施例中,可以使用方法100(以及实现方法100的设备1002)来加密或解密数据。例如,如果两个实体A和B共享密码密钥ψ,那么它们中的一个(例如A)可以使用(根据密码密钥ψ配置的)方法100来处理一个或多个输入数据块d1,从而有效地加密那些输入数据块d1。然后可以由另一实体(例如B)对这些加密块进行解密——由于方法100是可逆过程,所以可以通过反向执行(根据密码密钥ψ配置的)方法100来处理每个加密块。
将领会到,在本发明的实施例中,可以使用方法100(以及实现方法100的设备1002)为一些数据生成签名或消息认证码(MAC)。例如,如果两个实体A和B共享密码密钥ψ,则它们中的一个(例如A)可以使用(根据密码密钥ψ配置的)方法100来处理一个或多个输入数据块d1并组合(例如,XOR)经处理的块以形成所述一个或多个输入数据块的散列值。可以将所述一个或多个输入数据块与散列值一起发送到另一实体(例如B)。然后,另一实体(例如B)可以对所接收的一个或多个数据块执行相同的处理以生成第二散列——然后可以将该第二散列与接收到的散列进行比较,并且(a)如果两者匹配,则得出的结论是所接收的一个或多个数据块没有被修改并且源自于A,而(b)如果两者不匹配,则得出的结论是:(i)所接收的一个或多个数据块和/或散列已被修改和/或(ii)所接收的一个或多个数据块和/或散列不是源自于实体A。
5——修改
将领会到,所描述的方法已经被示出为以具体顺序执行的单独的步骤。然而,技术人员将领会到,这些步骤可以以不同的顺序进行组合或执行同时仍然实现期望的结果。
将领会到,可以使用各种不同的信息处理系统来实现本发明的实施例。特别而言,虽然附图及其讨论提供了示例性计算系统和方法,但是呈现这些仅仅是为了在讨论本发明的各个方面时提供有用的参考。本发明的实施例可以在诸如个人计算机、膝上型计算机、个人数字助理、移动电话、机顶盒、电视、服务器计算机等的任何合适的数据处理设备上执行。当然,为了讨论的目的,已经对系统和方法的描述进行了简化,并且它们只是可以用于本发明实施例的许多不同类型的系统和方法中的一个。将领会到,逻辑块之间的边界仅仅是例证性的,并且可替代实施例可以合并逻辑块或元件,或者可以对各种逻辑块或元件强加功能性的替代分解。
将领会到,上面提及的功能性可以被实现为作为硬件和/或软件的一个或多个对应模块。例如,上面提及的功能性可以被实现为用于由系统的处理器执行的一个或多个软件组件。可替代地,上面提及的功能性可以被实现为硬件,诸如在一个或多个现场可编程门阵列(FPGA)和/或一个或多个专用集成电路(ASIC)和/或一个或多个数字信号处理器(DSP)和/或其它硬件布置上。如上所述或者在本文中所包含的流程图中实现的方法步骤可以各自由对应的各个模块来实现;如上所述或者在本文中包含的流程图中所实现的多个方法步骤可以一起由单个模块来实现。
将领会到,在本发明的实施例由计算机程序实现的范围内,那么存储或承载所述计算机程序的一个或多个存储介质和/或一个或多个传输介质形成本发明的各个方面。计算机程序可以具有一个或多个程序指令或程序代码,所述程序指令或程序代码在由一个或多个处理器(或一个或多个计算机)执行时实行本发明的实施例。如本文中使用的术语“程序”可以是被设计用于在计算机系统上执行的指令序列,并且可以包括子例程、函数、进程、模块、对象方法、对象实现、可执行应用、小应用、小服务程序、源代码、目标代码、字节代码、共享库、动态链接库和/或被设计用于在计算机系统上执行的其它指令序列。存储介质可以是磁盘(诸如硬驱或软盘)、光盘(诸如CD-ROM、DVD-ROM或蓝光盘)或存储器(诸如ROM、RAM、EEPROM、EPROM、闪存或便携式/可移动存储设备)等。传输介质可以是通信信号、数据广播、两个或更多个计算机之间的通信链路等。

Claims (30)

1.一种密码方法,包括顺序地执行多个轮次,每个轮次包括对该轮次的相应输入数据执行相应的轮次函数以生成该轮次的相应输出数据,其中对于第二和随后轮次中的每一个,该轮次的输入数据是前一轮次的输出数据,其中针对每一轮次,相应的轮次函数包括:
将相应的双射操作应用于第一量的数据以产生第一结果,双射操作对应于密码密钥的至少一部分;以及
通过应用多个处理操作来处理第二量的数据以产生第二结果,其中处理操作中的至少一个是双射操作;
其中第一量的数据和第二量的数据是基于所述轮次的输入,并且其中所述轮次的输出数据是基于第一结果和第二结果;
其中以下中的一项或两项适用:
(a)对于处理操作中的一个或多个中的每一个,该处理操作包括取决于第一结果的相应部分的功能性;以及
(b)对于处理操作中的一个或多个中的每一个,当处理第二量的数据时应用该处理操作的次数取决于第一结果的相应部分。
2.根据权利要求1所述的方法,其中,作为双射操作的所述处理操作是所述一个或多个处理操作中的针对其当处理第二量的数据时应用该处理操作的次数取决于第一结果的相应部分的一个。
3.根据前述权利要求中的任一项所述的方法,其中,包括取决于第一结果的相应部分的功能性的所述一个或多个处理操作中的至少一个是这样的操作:其将到所述操作的输入的元素循环地轮换取决于第一结果的所述相应部分的元素数目。
4.根据前述权利要求中的任一项所述的方法,其中,包括取决于第一结果的相应部分的功能性的所述一个或多个处理操作中的至少一个是这样的操作:其倒转到所述操作的输入的一个或多个元素,所述一个或多个元素是基于第一结果的所述相应部分而选择的。
5.根据权利要求3或4所述的方法,其中,所述元素是位。
6.根据前述权利要求中的任一项所述的方法,其中,双射操作被布置为通过顺序地使用Ns个双射映射集合Si(i=1,...,Ns)来将n位输入值双射映射到n位输出值,每个集合Si(i=1,...,Ns)具有相应数目Nbi个相应双射映射,其中每个双射映射Bi,j(i=1,...,Ns,j=1,…,Nbi)被布置为将具有相应位数wi,j的输入双射映射到具有wi,j个位的输出,其中对于i=1,...,Ns,,其中:
对于集合S1,双射映射B1,j(j=1,...,Nb1)的输入是由w1,j个位形成的,所述w1,j个位来自根据密码密钥的至少一部分选择的n位输入值;
对于集合Si(i=2,...,Ns),双射映射Bi,j(j=1,...,Nbi)的输入包括来自双射映射的输出的wi,j个位;
n位输出值包括根据密码密钥的至少一部分布置的来自双射映射的输出的位。
7.根据权利要求6所述的方法,其中,双射映射集合形成榕树网络。
8.根据权利要求6所述的方法,其中,双射映射集合被布置成使得n位输入值的每个位影响n位输出值的基本上所有位。
9.根据权利要求6至8中的任一项所述的方法,其中:
n=27;
Ns=3;
Nbi=9(对于i=1,2,3);并且
wi,j=3(对于i=1,2,3且j=1,...,9)。
10.根据权利要求6至9中的任一项所述的方法,其中,每个双射映射Bi,j(i=1,...,Ns,j=1,...,Nbi)是基于密码密钥的至少一部分。
11.根据前述权利要求中的任一项所述的方法,其中,所述轮次的输出数据包括第一结果和第二结果。
12.根据权利要求11所述的方法,其中,所述轮次的输出数据包括N个位,其中N为偶数,并且其中第一结果和第二结果包括输出数据的N/2个相应位。
13.根据前述权利要求中的任一项所述的方法,其中,所述轮次的输入数据包括第一量的数据和第二量的数据。
14.根据权利要求13所述的方法,其中,所述轮次的输入数据包括N个位,其中N是偶数,并且其中第一量的数据和第二量的数据包括来自输入数据的N/2位的相应位。
15.根据权利要求12或14所述的方法,其中N=54。
16.根据权利要求1至13中的任一项所述的方法,其中,对于每个轮次,相应轮次函数还包括对相应输入数据块执行相应双射函数以生成相应输出数据块,其中输入数据块是基于所述轮次的输入,并且其中所述轮次的第一量的数据和第二量的数据是基于输出数据块。
17.根据权利要求16所述的方法,其中,输入数据块和输出数据块是m位值,其中双射函数使用相应的双射映射集合B1,...,BNb,其中Nb是相应的正整数,其中每个双射映射Bj(j=1,...,Nb)被布置成将具有相应位数wj的输入双射映射到具有wj位的输出,其中,其中双射映射Bj(j=1,...,Nb)的输入是由来自m位输入数据块的wj个位形成的并且m位输出数据块包括来自双射映射B1,...,BNb的输出的位。
18.根据权利要求17所述的方法,其中:
m=54;
Nb=27;并且
wj=2(对于j=1,...,Nb)。
19.根据权利要求16至18中的任一项所述的方法,其中,每个双射映射Bj(j=1,...,Nb)是基于密码密钥的至少一部分。
20.根据权利要求16至19中的任一项所述的方法,其中,输入数据块是所述轮次的输入数据。
21.一种被布置成执行根据前述权利要求中的任一项所述的方法的设备。
22.一种生成根据权利要求21所述的多个设备的方法,所述方法包括:
对于所述多个设备中的每一个:
确定针对每个轮次的轮次函数,其中所确定的轮次函数的集合对所述设备而言是特定的;以及
生成设备,其中设备被布置成使用所确定的轮次函数的集合来执行根据权利要求1至20中的任一项所述的方法。
23.根据权利要求22所述的方法,其中所述生成设备包括使用以下之一:(a)印刷电子器件;或(b)电子束光刻。
24.一种执行挑战-响应协议的方法,所述方法包括:
接收挑战;以及
使用根据权利要求1至20中的任一项所述的密码方法来处理所述挑战以生成对应于所述挑战的响应。
25.一种执行挑战-响应协议的方法,所述方法包括:
生成挑战;以及
向根据权利要求21所述的设备提供所述挑战,所述设备被布置为使用根据权利要求1至20中的任一项所述的密码方法来处理所述挑战以生成对应于所述挑战的响应;
接收来自所述设备的所述响应。
26.一种认证物品的方法,所述方法包括:
生成挑战;以及
向与所述物品相关联的根据权利要求21所述的设备提供所述挑战,所述设备被布置为使用根据权利要求1至20中的任一项所述的密码方法来处理所述挑战以生成对应于所述挑战的响应;
接收来自所述设备的所述响应;以及
确定所述响应是否是预期响应。
27.一种在数据处理器上执行软件项目的方法,所述方法包括在执行所述软件项目期间:
所述数据处理器向与所述数据处理器相关联的根据权利要求21所述的设备提供挑战,所述设备被布置为使用根据权利要求1至20中的任一项所述的密码方法来处理所述挑战以生成对应于所述挑战的响应;以及
所述数据处理器接收来自所述设备的所述响应,其中所述软件项目的后续执行至少部分地基于所接收的响应。
28.一种被布置成执行根据权利要求22至27中的任一项所述的方法的装置。
29.一种计算机程序,所述计算机程序在由一个或多个处理器执行时使所述一个或多个处理器实行根据权利要求1至20或22至27中的任一项所述的方法。
30.一种存储根据权利要求29所述的计算机程序的计算机可读介质。
CN201680031791.1A 2015-03-30 2016-03-30 密码处理 Pending CN107690769A (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
GBGB1505434.9A GB201505434D0 (en) 2015-03-30 2015-03-30 Cryptographic processing
GB1505434.9 2015-03-30
PCT/EP2016/056895 WO2016156378A1 (en) 2015-03-30 2016-03-30 Crytographic processing

Publications (1)

Publication Number Publication Date
CN107690769A true CN107690769A (zh) 2018-02-13

Family

ID=53178352

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201680031791.1A Pending CN107690769A (zh) 2015-03-30 2016-03-30 密码处理

Country Status (5)

Country Link
US (1) US20180091296A1 (zh)
EP (1) EP3278492A1 (zh)
CN (1) CN107690769A (zh)
GB (1) GB201505434D0 (zh)
WO (1) WO2016156378A1 (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114285558A (zh) * 2021-12-24 2022-04-05 浙江大学 一种基于半可信硬件的多方隐私计算方法及装置

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10079206B2 (en) 2016-10-27 2018-09-18 Mapper Lithography Ip B.V. Fabricating unique chips using a charged particle multi-beamlet lithography system
US10522472B2 (en) 2016-09-08 2019-12-31 Asml Netherlands B.V. Secure chips with serial numbers
US11176300B2 (en) 2018-02-03 2021-11-16 Irdeto B.V. Systems and methods for creating individualized processing chips and assemblies
JP2022549671A (ja) * 2019-09-25 2022-11-28 コモンウェルス サイエンティフィック アンド インダストリアル リサーチ オーガナイゼーション ブラウザアプリケーション用の暗号化サービス

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6199162B1 (en) * 1997-09-17 2001-03-06 Frank C. Luyster Block cipher method
US20060140401A1 (en) * 2000-12-08 2006-06-29 Johnson Harold J System and method for protecting computer software from a white box attack
CN102158337A (zh) * 2006-09-01 2011-08-17 索尼株式会社 信息处理装置
EP2738705A1 (en) * 2012-11-30 2014-06-04 Certicom Corp. Challenge-Response Authentication Using a Masked Response Value

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP1016240A1 (en) * 1997-09-17 2000-07-05 Frank C. Luyster Improved block cipher method

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6199162B1 (en) * 1997-09-17 2001-03-06 Frank C. Luyster Block cipher method
US20060140401A1 (en) * 2000-12-08 2006-06-29 Johnson Harold J System and method for protecting computer software from a white box attack
CN102158337A (zh) * 2006-09-01 2011-08-17 索尼株式会社 信息处理装置
EP2738705A1 (en) * 2012-11-30 2014-06-04 Certicom Corp. Challenge-Response Authentication Using a Masked Response Value

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114285558A (zh) * 2021-12-24 2022-04-05 浙江大学 一种基于半可信硬件的多方隐私计算方法及装置
CN114285558B (zh) * 2021-12-24 2023-09-08 浙江大学 一种基于半可信硬件的多方隐私计算方法及装置

Also Published As

Publication number Publication date
GB201505434D0 (en) 2015-05-13
WO2016156378A1 (en) 2016-10-06
US20180091296A1 (en) 2018-03-29
EP3278492A1 (en) 2018-02-07

Similar Documents

Publication Publication Date Title
EP3449452B1 (en) Implementing logic gate functionality using a blockchain
US10097351B1 (en) Generating a lattice basis for lattice-based cryptography
JP7048511B2 (ja) ブロックチェーンIoT装置のためのオペレーティングシステム
CN107690769A (zh) 密码处理
Saračević et al. Cryptographic keys exchange model for smart city applications
CN105794145B (zh) 利用服务器辅助的私有集交集(psi)的方法
CN102461063B (zh) 基于硬件的加密技术
US9031228B2 (en) Systems and methods for implementing block cipher algorithms on attacker-controlled systems
CN109756338A (zh) 物理不可克隆功能的远程重新注册
CN107017981A (zh) 硬件辅助快速伪随机数生成
CN104126284B (zh) 生成数字签名
CN109478279A (zh) 区块链实现的方法和系统
CN106464490A (zh) 用于确定共享密钥的设备
CN106797314A (zh) 布置用于密钥共享的密码系统
CN104838387B (zh) 芯片验证
Yan et al. PCBChain: Lightweight reconfigurable blockchain primitives for secure IoT applications
CN105095695B (zh) 经由白箱实现的不正确功能行为实现授权
CN105723647A (zh) 用于共享密码密钥的系统
JP4892478B2 (ja) 認証システム、認証装置、端末装置及び検証装置
CN110663216A (zh) 密码设备和方法
CN105024992A (zh) 在单个白箱实现中实现使用相关安全性设置
CN108833117A (zh) 一种私钥存储和读取方法、装置及硬件设备
CN109565440B (zh) 密钥交换方法,密钥交换系统
CN114257366A (zh) 信息同态处理方法、装置、设备及计算机可读存储介质
CN107278357A (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
RJ01 Rejection of invention patent application after publication

Application publication date: 20180213

RJ01 Rejection of invention patent application after publication