本申请要求2009年6月17日提交的题为“Hardware BasedCryptography”的第12/486,451号美国非临时专利申请的优先权,该美国非临时专利申请的全部内容通过引用合并到本文中。
具体实施方式
在以下的详细描述中,将参照形成为其一部分的附图。在附图中,除非上下文另外规定,否则相似的标记通常表示相似的部件。在详细描述、附图以及权利要求中所描述的说明性实施例不意味着是限制性的。在不偏离文中所呈现的主题的精神和范围的情况下,可以使用其他实施例,也可以进行其他变化。容易理解,可以以各种不同的配置来设置、替换、组合、分离和设计文中大体上所描述的和图中示出的本公开,所有的这些在文中是明确预期的。
本公开涉及与加密物理上不可克隆的硬件公开功能相关的方法、装置、系统和计算机程序产品。虽然传统的加密技术通常采用数学和计算的方法,但是还可以采用物理规律和技术约束。例如,可以利用尤其是在超深亚微米技术规格下半导体集成电路(IC)中固有的制造变化性来生产唯一的、不可克隆的系统。这样的设备或系统的不可克隆的性质能够提供安全的加密功能的基础。
现代和未来的互补金属氧化物半导体(CMOS)技术或其他半导体技术中固有的制造变化性可以在制造的每个实例内引入门级唯一性(gate-level uniqueness)。当试图制作具有精确特征尺寸的门和互连导体的IC时,各种技术挑战产生了。类似的挑战会影响掺杂水平。这些挑战可以包括晶片晶格结构不完美、不均匀的掺杂分布、掩膜不对准以及化学或机械抛光。这样,单个设计的制造出的每一个IC通常会具有在其定时、面积、功率以及软错误率敏感性方面轻微不同的门。以表明这些细微差异的方式来操作这样的IC可以为IC提供唯一的工作特性。类似地,利用由于制造变化性而产生的唯一工作特性,可以支持基于光子晶体的光学芯片内和芯片间互连。这样的光学互连可以支持对信号和时钟的高吞吐量和低延迟分布。
可以将硬件加密单元实现为大量的逻辑门,所述逻辑门具有将输入供给到门的输入寄存器和在指定的时间段之后锁存来自门的结果的输出寄存器。主机可以指定输入向量和时钟周期以生成被唯一转换的输出。通过将输入向量发到硬件加密单元的输入寄存器,可以开始硬件加密单元的工作。在与输入向量相关联的信号传播通过硬件加密单元的逻辑门之后,可以将结果锁存到输出寄存器中。硬件加密单元可以例如一个或几个时钟周期实时地生成结果。因为结果取决于每个门的时序特性,所以攻击者必须在门级上以精确的定时精度来模拟或仿效硬件加密单元。
源计算机可以使用硬件加密单元的模拟来加密消息。然后,将被加密的消息发送到目标计算机。接着,目标计算机可以使用硬件加密单元来解密消息。因为目标计算机被接口到硬件加密单元,所以目标计算机还可以被称作硬件加密单元的主机。源计算机可以使用硬件加密单元的模拟将输入值的输入向量转换成模拟输出。模拟输出可以从源计算机传输到目标计算机,在目标计算机中,可以使所有可能的输入值运行通过硬件加密单元,直到硬件加密单元的输出与所述模拟输出匹配为止。生成该匹配输出的输入值现在是源计算机和目标计算机之间的共享秘密,该共享秘密从未在通信信道上明确地传输。可以利用文中所呈现的硬件加密单元和加密技术来支持对称的、不对称的、秘密的和公开的密钥方法。
如果硬件加密单元中的门的数量给定为N,则对于每个输入向量周期,模拟具有O(N3)的复杂度,并且可以利用多个周期。因此,对于100,000个门,攻击者会需要完成多于1015次的操作,以用于模拟硬件加密单元并生成来自非常大的输入值池的输入的每个通过(pass)。相反,硬件加密单元可以提供快至一纳秒并且具有几纳焦耳的能耗的加密通过。
硬件加密单元可以在一个或几个时钟周期内将指定的输入映射为唯一的输出。虽然可以针对用于秘密交换的单个输入值对硬件加密单元进行模拟,但是模拟足够的可能输入值的输出以攻击秘密密钥交换是惊人地慢的。因此,需要潜在攻击者在实时约束下进行完全的模拟的协议可以提供具有高水平安全性的加密功能。对于典型的示例,具有十亿台计算机的假想攻击者可能需要多于30,000年来破解该加密。正是硬件加密单元所提供的结果和硬件加密单元的完全模拟所提供的结果之间的这种复杂性差距能够支持强大而灵活的基于硬件的加密技术。
现在转到图1,示出了根据文中所呈现的一个或更多个实施例的具有主机120和硬件加密单元110的加密系统100。主机120可以通过主机接口125访问硬件加密单元110。可以将硬件加密单元110制造成使得制造过程的每个单独实例产生与其他硬件加密单元110不一样的硬件加密单元110。这样,对硬件加密单元110的实体占有可以支持占有者唯一地、非常安全地处理相关联的加密功能。还可以将硬件加密单元110实现为软件,诸如硬件加密单元110的软件模拟。
主机接口125可以是任何计算机接口。例如,主机接口125可以是串行的、并行的、通用串行总线(USB)、外设部件互连(PCI)、有线的、无线的、蓝牙、射频识别(RFID)、光纤的、自由空间光的或适用于将硬件加密单元110耦合到主机120的任何其他接口。硬件加密单元110内的接口模块130可以提供硬件加密单元110和主机接口125之间的接口,以用于传递来自主机120的信息以及将信息传递到主机120。
主机120可以向硬件加密单元110发出加密请求。通过将请求传递到硬件加密单元110的接口模块130,加密请求被提供到硬件加密单元110。加密请求的输入向量可以被提供作为要从接口模块130通过时钟脉冲打入输入寄存器140中的初始值。输入时钟145可以用于将输入通过时钟脉冲打入到输入寄存器140中。输入向量一旦通过时钟脉冲打入到输入寄存器140中,则可以馈送到物理上不可克隆的硬件公开功能(HPPUF)150中。
HPPUF 150可以被制造为多个逻辑门、半导体信号通道、等离子通道阵列、光子晶体结构、纳米线门、任何其他纳米线结构或在每个制造实例中以影响被测量的结构的工作的方式轻微地变化的任何结构。制造实例之间的结构中的变化可以是因为制造过程变化或有意的制造干扰,或者二者都有。在组合逻辑HPPUF 150实施例中,制造变化性可以表现为每个逻辑门具有不同延迟、功率或甚至是在对应于相同设计的集成电路之间的其他物理特性。HPPUF 150是一种可以完全特性化的物理系统,从而使其可以被精确地模拟。但是,HPPUF 150模拟会需要比实际HPPUF 150硬件的执行长得多的时间。
来自HPPUF 150的得到的输出值可以到达输出寄存器160。输出时钟165可以在指定时间将HPPUF 150的输出值锁存到输出寄存器160中。输出时钟165可以被生成为与输入时钟145具有特定的时间延迟或相位偏移。定时机制(例如定时器、延迟、锁相环或其他)可以支持在开始信号传播通过HPPUF 150的输入时钟145中的跃变之后的指定时间产生输出时钟165的跃变。锁存到输出寄存器160中的输出值可以被传送到接口模块130,以用于通过主机接口125访问到主机120。加密请求可以包括为硬件加密单元110指定输入值,以在使用输出时钟165将输出值通过时钟脉冲打入到输出寄存器160的指定时间将该输入值加载到输入寄存器140中。
HPPUF 150的所有可能的输出的完全模拟所需要的时间会非常长。例如,使用当今最先进的技术,该模拟会需要大约数年、数十年甚至数百年的时间。相反,使用HPPUF 150硬件本身计算输出会需要不到纳秒量级。同样,输出的小的随机选择的子集的概率验证可以以大约毫秒级完成。
硬件加密单元110可以被认为固有地弹性应对侧通道攻击、物理攻击和软件攻击。硬件加密单元110可以低廉的成本制造,并且可以是超快和超低功率的。硬件加密单元110可以用在许多应用中,例如通信链路、无线通信、互联网通信、网络交易、金融交易、电子邮件、软件下载、口令加密、数据存储、信用卡、身份证、护照、客户识别模块(SIM)、智能金融票据或各种其他安全应用。和通常的加密技术不同,硬件加密单元110可以不取决于未经证实的数学挑战。硬件加密单元110可以是相当低成本的、更快的以及比传统方法更节能的。
一个硬件加密单元110可以采用一个或更多个HPPUF 150。对于多个HPPUF 150,输入向量可以是相同或不同的。输入向量可以从种子随机数发生器获得。一个或更多个HPPUF 150的多个输出或部分输出可以用于支持多种模拟计算难度的加密功能块。例如,HPPUF可以具有不同的尺寸和模拟要求。HPPUF 150的输出可以应用于散列函数。
时间、辐射、电迁移以及其他效应可以引起HPPUF 150偏离其初始特性。如果这种情况发生,则硬件加密单元110会生成不再与基于加密单元110的公开特性的模拟相对应的结果。可以将加密单元110重新表征并使用与其新的物理性质相对应的一组更新的公开描述符信息将加密单元110恢复使用,而不是将该加密单元110丢弃。
可以使用例如等离子晶体、光子晶体、无线电频率或三维结构的高带宽互连向硬件加密单元110提供与加密功能块相关联的输入数据。可以通过对密码(cipher)、移位寄存器、线性反馈移位寄存器、随机数发生器进行播种(seeding)和初始化或者以任何其他方式来扩展加密功能块的输入向量,以产生数量增加的输入位。
硬件加密单元110可以用于各种安全交易、无线或有线消息或包的加密、电子邮件加密或任何其他目的。例如,客户或相关联的服务提供商可以配备有硬件加密单元110,以用于支持相互安全通信。
可以从被称作输入值池的大选择空间中选择输入值。该输入值可以用作秘密密钥。基于HPPUF 150的硬件加密单元110可以支持文中所述的秘密密钥的交换。HPPUF 150的输入可以首先通过散列操作。HPPUF 150的输出也可以通过散列函数。对HPPUF 150的输出进行散列操作可以迫使攻击者计算HPPUF 150的所有输出,而不是攻击输出的所选择的部分。在串行应用多个HPPUF 150的情况下,还可以在两个HPPUF 150之间设置散列函数。
硬件加密单元110可以支持基于硬件的公开或秘密密钥协议,其中,通信双方都有专用硬件并同时地或顺序地使用该专用硬件。硬件加密单元110可以支持基于硬件的公开或秘密密钥协议,其中,通过使用异或(XOR)运算将并行或顺序地发送的多个消息组合来获得最终的传递的消息。硬件加密单元110可以支持基于硬件的公开或秘密密钥协议,其中,通过应用被公开传递的另一个传递的消息以及被解密的消息的函数来获得最终的传递的消息。
硬件加密单元110可以支持基于硬件的公开或秘密密钥协议,其中,通过将被解密的消息与被公开地传递的另一个传递的消息进行异或来获得最终的传递的消息。硬件加密单元110可以支持基于硬件的公开或秘密密钥协议,其中,使用特定模式所位于的输出位置的地址或索引来对传递的消息进行编码。
硬件加密单元110可以是多模态的(multimodal),其中HPPUF 150输出可以提供模拟和/或数字信号。可以通过门延迟、门延迟的差异、开关功率、泄漏功率以及能够从认证单元110测量的其他物理或工作特性来建立信号。HPPUF 150可以采用多路复用器来消除HPPUF 150内的再收敛通路之间的逻辑或信号追赶。
HPPUF 150可以配置有诸如电源电压、偏置电压或其他工作设置的参数,以使得配置设置影响HPPUF 150的输出。这样的配置设置可以作为HPPUF 150的参数化特性的部分、加密密钥交换的部分或单独建立阶段或协商阶段的部分而被交换。
HPPUF 150和诸如那些使输入值池的元素运行通过HPPUF 150以识别期望的输出相关联的支持结构或模块可以一起位于硬件加密单元150上。这样的结构或模块还可以位于硬件加密单元110之外并耦合到硬件加密单元110。硬件加密单元110的结构可以被配置成支持诸如使用HPPUF150的输出值搜索的支撑功能的流水线执行。
纳米线结构可以是HPPUF 150的基础。纳米线结构可以包括具有大约100纳米数量级或更小的横截面的非常微小的线结构。纳米线结构可以是自组装的。光子晶体结构也可以是HPPUF 150的基础。这样的光子晶体结构可以被认为是能够使用电磁波光学地相互作用的光子纳米结构。
现在转到图2,示出了根据文中所呈现的一些实施例的、使用逻辑门物理上不可克隆的硬件公开功能150的硬件加密单元110。可以将输入寄存器140实现为触发器210A-210N的集合。可以通过来自接口模块130的输入时钟145对触发器进行时钟控制。组成输入寄存器140的触发器210A-210N的输出可以用作与非(NAND)门的第一层220A-220N的输入。NAND门的第一层220A-220N的输出可以用作NAND门的第二层230A-230N的输入。NAND门的第二层230A-230N的输出可以用作下一层NAND门的输入,直至延续到NAND门的第H层240A-240N。
NAND门的第H层240A-240N的输出可以用作输出寄存器160的输入。输出寄存器160可以由触发器250A-250N的阵列组成。可以通过输出时钟165对输出触发器250A-250N进行时钟控制。输出寄存器160的输出端的输出可以反馈到接口模块130以响应主机120。根据实施例和工作环境,组成HPPUF 150的逻辑门的总数可以为数十个、数百个、数千个、数百万个或者更多。
HPPUF 150可以由如所示的NAND门形成,然而也可以使用其他类型的逻辑门。应当理解,可以使用诸如2输入、3输入、4输入或其他的多输入逻辑门来组成HPPUF 150的逻辑门。可以在单个HPPUF 150内使用混合类型的逻辑门以及具有不同数量输入的门。例如,可以在HPPUF150内使用或(OR)门、或非(NOR)门、与(AND)门、与非(NAND)门、异或(XOR)门或其他类型的组合逻辑。逻辑门的层之间的互连(例如NAND门的第一层220A-220N与NAND门的第二层230A-230N之间)可以是从一层到下一层的任何类型的互连,以使得每一层的输出可以合理地取决于来自前一层的各种输入。输出触发器250A-250N的数量通常与输入触发器210A-210N的数量相同,尽管这两个数量也可以不同。
HPPUF 150的宽度或W可以与输入触发器210A-210N的数量和输出触发器250A-250N的数量中的一个相关,或与二者的数量都相关。HPPUF150内的层数或H可以被认为是HPPUF 150的高度。乘积(W×2H)较大会是有利的。假定W=106以及H=80,会需要大约1030次计算来复制HPPUF 150的输出。这可以在十亿台计算机上比较超过十亿年。将H减小到60可以将比较计算降低到在一百万台计算机上大约一百万年。将H减小到50可以为HPPUF 150提供通常能够支持加密单元110的安全工作的计算复杂度。假定W=109,则H=40通常也将支持加密单元110的安全工作。通常,H的值可以在范围2至100之间,或比这更高。
若将HPPUF 150的应用重复M次,则W会随M线性地减小,而H会随M对数地减小。因此,对于M=109,W=106以及H=20的值通常能够支持加密单元110的安全工作。通常,W可以减小到1000,甚至是几百,但是期望不要尝试将W减小到100以下,以避免对基于猜测的攻击的敏感性。尽可能大地设置W可以降低对HPPUF 150的输出进行采样所需要的定时精度。
用于形成硬件加密单元110(具体地,HPPUF 150的逻辑门)的半导体工艺内的制造变化性可以允许每个单独制造的硬件加密单元110的唯一性。例如,每个门内的半导体结构或晶体管的结构尺寸和电特性可以轻微改变每个门相对于其他门的相关定时、延迟、速度。
例如,在硬件加密单元110的一个制造实例中,NAND门220A可以具有比NAND门220B大的延迟。在另一个制造实例中,NAND门220B可以具有比NAND门220A大的延迟。这些变化可以与制造变化性相关,制造变化性例如光刻对准、掺杂、金属化或其他半导体制造特性。当一个门晚于另一个相应的逻辑门产生其输出时,通过HPPUF 150内的逻辑门的信号的延迟的变化可以引起在每一层的输出包括多次跃变。例如,如果NAND门220A具有比NAND门220B大的延迟,则当NAND门220B传送其输出时,从层一到层二的输出将见到跃变,然后,当NAND门220A产生其输出时,在稍后的时刻可以见到额外的跃变。
在HPPUF 150内的H层中的每一层中,信号中的跃变数可以被复合到一个点,其中在最后的层或第H层处输出在从最快的信号到达输出端直到静止在最终逻辑输出的时间段内变化若干组值。这个输出变化的时间段提供了窗口,在窗口期间,输出时钟165可以特定地对一组输出进行采样。因为各种逻辑门之间的时序变化性对于认证单元110的每个制造实例可以是唯一的,所以在特定时间在输出寄存器160处所采样的特定逻辑状态对于硬件加密单元110也可以是唯一的。采样该时间实例作为HPPUF150的结果可以提供使用硬件加密单元110的加密功能块的唯一操作和输出。因为精确的采样可能是困难的,所以如果响应在围绕特定采样时间的变化的小时间窗口上匹配了HPPUF 150的输出状态,则响应可以被接受为正确的响应。
当制造硬件加密单元110的特定实例时,上述被识别的时序特性可以被特性化并被作为关于硬件加密单元110的该实例的公开信息分发。加密计算机可以使用关于特定硬件加密单元110的公开信息来模拟可以在使用硬件加密单元110的解密计算机处被搜索的输出。虽然该模拟可能花费例如若干秒用于计算,但是硬件加密单元110可以非常快速地计算该模拟,可能在若干纳秒之内。大量可能的输入值可以阻止攻击者针对所有可能的输入值计算HPPUF 150输出。因此,对共享秘密密钥的及时识别只可能来自硬件加密单元110的一个特定硬件实例。这样,包括HPPUF 150的硬件加密单元110可以用作安全加密系统的基础。
现在转到图3,电路图300示出了根据文中所呈现的一个或更多个实施例的被布置成演示变化的门延迟的影响的三个逻辑门。NAND门310和NAND门320可以提供他们的输出作为到NAND门330的输入。NAND门310可以具有比NAND门320的延迟稍小的延迟。因此,NAND门310的输出(信号A)可以先于NAND门320的输出(信号B)到达NAND门330的输入。因为NAND门330将信号A和信号B作为其输入,所以NAND门330的输出(信号C)会取决于信号A和信号B两者。
现在转到图4,时序图350示出了根据文中所呈现的一个或更多个实施例的由于物理上不可克隆的硬件公开功能的两个层之间的变化的门延迟引起的信号跃变数量增加的影响。时序图350内的信号是根据图3定义的那些。NAND门310输出为信号A,且示出为时序迹线(trace)352A。NAND门320输出为信号B,且示出为时序迹线352B。NAND门330输出为信号C,且示出为时序迹线352C。NAND门310输出(信号A)的跃变在T1时刻处,随后在T2时刻跟随有NAND门320的输出(信号B)的跃变。信号C的迹线352C示出了将信号A和信号B作为其输入的NAND门330的输出。信号C的迹线352C示出了NAND门330的输出在其输入的每个跃变处如何跃变。因此,即使在输入的每一个处只有一个跃变,来自NAND门310和NAND门320的两个输入之间的延迟也可以引起NAND门330的输出实际上跃变两次。在二输入门堆叠中的每一层处的潜在的信号跃变加倍,使得层H可以在短时间段内具有多达2H次的信号跃变。通过在指定时间对该跃变值序列进行采样可以获得硬件加密单元110的输出。信号C的迹线352C内的跃变中的轻微延迟可以与通过NAND门330的延迟相关。
对跃变输出值的序列进行采样可能需要非常精确的定时机制。精确度要求会随着H而指数增加。如上文所讨论的,增大的M(用于应用HPPUF150的重复计数)和增大的W(与HPPUF 150相关联的宽度)可以减小H的值,而不一定降低HPPUF 150的计算复杂度。对于制造的逻辑门,H=20的值在当前是合理的。根据某些半导体实施例,H=30的值可以被认为是片上时钟定时的极限。采用例如原子钟中所使用的技术的先进的时钟定时技术,H=70的值或更高是可能的。
现在参照图5,计算机网络图示出了用于基于硬件的加密技术的工作环境400。消息可以在源计算机410处加密,以用于传输到目标计算机420。该消息可以在目标计算机420处解密。输入值的池405可以包括到硬件加密单元110的HPPUF 150(在图1中示出)的输入的大选择空间。输入值的池405的选择空间可以是由硬件加密单元110的输入寄存器140指定的尺寸的所有可能值。选择空间还可以是更大可能空间的某个子集。与输入值的池405相关联的输入值还可以被称作硬件加密单元110的初始值。输入值还可以被认为是秘密加密密钥。
目标计算机420可以耦合到硬件加密单元110。与硬件加密单元110相关联的HPPUF 150的参数化特性450可以从目标计算机420传输到源计算机410。源计算机410可以随机地从输入值的池405中选择输入值425。可以使用HPPUF 150的参数化特性450在源计算机410中执行HPPUF 150的模拟430。HPPUF 150的模拟430可以根据随机选择的输入值425生成模拟输出435。模拟输出435可以从源计算机410传输到目标计算机420。目标计算机420可以使用运行所有池值的硬件455将硬件加密单元110应用到输入值的池405中的所有值,以识别生成模拟输出460的池值。这样,目标计算机420可以恢复只有源计算机410知道的随机选择的输入值425。现在,随机选择的输入值425的秘密共享于源计算机410和目标计算机420之间,而从未在源计算机410和目标计算机420之间的通信信道上公开地传输随机选择的输入值425。
因为源计算机410和目标计算机420知道随机选择的输入值425,所以随机选择的输入值425可以用作密码或加密密钥来加密和解密信息。源计算机410可以将原始的明文消息440与随机选择的输入值425进行XOR(异或)操作,以生成密文消息445。密文消息445可以从源计算机410传输到目标计算机420。在目标计算机420处,可以将密文消息445与恢复为生成模拟输出460的池值的随机选择的输入值425进行异或操作。
在目标计算机420用接收的密文445与生成模拟输出460的池值进行异或操作可以在目标计算机420处生成恢复后的明文465。随机选择的输入值425可以被认为是秘密密钥或共享秘密。通过执行安全的密钥分发或密钥共享,系统400还可以用于共享任何类型的密钥。可以用要从源计算机410安全地传输到目标计算机420的密钥来替代明文440。一旦在源计算机410和目标计算机420之间共享任何类型的密钥,则该密钥反过来可以用于将信息从目标计算机420传输到源计算机410。一旦被交换,密钥还可以用作流密码的输入,或用作随机数发生器的种子。这两种方法都可以支持任意长度的消息。
加密系统400可以支持如下加密方法,该加密方法将传统的公开密钥或秘密密钥加密协议与文中所公开的基于硬件的加密技术相结合。可以操作加密系统400,以使得通过在输入向量上应用散列函数而不是直接使用随机选择的输入值425来获得加密消息。可以操作加密系统400,以使得通过在与HPPUF 150相关联的输出或中间值的子集上应用散列函数或其他类型的函数来获得加密消息。
现在参考图6,将提供有关文中所呈现的、使用物理上不可克隆的硬件公开功能的加密技术的实施例的另外的细节。具体地,图6是示出了根据文中所呈现的至少一些实施例的使用物理上不可克隆的硬件公开功能来加密用于解密的消息的处理500的流程图。
应当理解,文中所述的操作可以实现为操作或制造动作的序列、实现为运行在计算系统上的计算机实现动作或程序模块的序列、或实现为与计算系统内的互连的机器逻辑电路或电路模块。实现方式的选择取决于各种实施例的性能和其他要求。文中所述的一些逻辑操作被不同地称作状态操作、结构设备、动作或模块。这些操作、结构设备、动作和模块可以用软件、固件、专用数字逻辑和这些方式的任意组合来实现。还应当理解,可以执行比文中所述和图中所示更多或更少的操作。还可以顺序地、并行地或以与文中所述的这些不同的顺序来执行这些操作。
处理500从操作510开始,在操作510中,源计算机410可以从大输入值池405中选择输入值。可以随机地、伪随机地或以任何其他方式来进行选择。一旦共享给目标计算机420,则随机选择的输入值425可以被认为是源计算机410和目标计算机420之间的共享秘密密钥。继续到操作520,可以在源计算机410处接收来自目标计算机420的用于模拟HPPUF150的参数化特性。与参数化特性相关联的HPPUF 150可以被包括在与目标计算机110相关联的硬件加密单元110内。
继续到操作530,源计算机410可以使用在操作520中接收到的公开的参数化特性来模拟位于目标计算机420处的硬件加密单元110。硬件加密单元110的模拟可以用于生成操作510中所选择的随机选择的输入值425的模拟输出435。
继续到操作540,可以将模拟输出435从源计算机410传输到目标计算机420。继续到操作550,源计算机410可以将选择的输入值425与明文消息440进行异或操作以生成密文445。继续到操作560,可以将密文445从源计算机410传输到目标计算机420。
现在参照图7,将提供有关文中所呈现的、使用物理上不可克隆的硬件公开功能的加密技术的实施例的另外的细节。具体地,图7是示出了根据文中所呈现的至少一些实施例的使用物理上不可克隆的硬件公开功能来解密消息的处理600的流程图。
处理600从操作610开始,在操作610中,可以制造包括物理上不可克隆的硬件公开功能的硬件加密单元110。继续到操作620,可以针对硬件加密单元110进行唯一特性参数化。继续到操作630,可以将在操作620中参数化的唯一特性传输到源计算机410。
继续到操作640,目标计算机420可以接收来自源计算机410的模拟输出。继续到操作650,目标计算机420可以接收来自源计算机410的密文或加密消息。继续到操作660,可以使来自输入值的池405的所有值运行通过硬件加密单元110以找到特定输入值,该特定输入值生成在操作640中从源计算机410接收到的模拟输出435。对来自输入值的池405的生成所接收到的模拟输出435的随机选择的输入值425进行识别可以向目标计算机420提供之前只有源计算机410知道的随机选择的输入值425的值。该值现在是源计算机410和目标计算机420之间的共享秘密。
继续到操作670,目标计算机420可以使用在操作660中确定的输入值来解密在操作650中接收到的密文445。可以将操作660中所确定的输入值与操作650中所接收到的密文445进行异或操作以产生恢复的明文465。
参照图8,示出了用于实现各种实施例的示例性计算系统。计算系统可以支持用于主机120、源计算机410、目标计算机420或在硬件加密单元110的制造和特性化中所使用的计算机的实施例。计算系统包括计算机10。计算机10可以包括处理器11、存储器12以及一个或更多个驱动器13。驱动器13及其相关联的计算机存储介质可以提供对计算机可读指令、数据结构、程序模块23和用于计算机10的其他数据的存储。可以将计算机10实现为传统的计算机系统、嵌入式控制计算机、便携式计算机,或者服务器计算机、移动设备、置顶盒、信息站、车用信息系统、移动电话、定制机或其他硬件平台。处理器11可以是通用处理器、处理器核、多处理器、多核处理器、图形处理器、数字信号处理(DSP)处理器、在专用集成电路内实现的定制计算设备、在现场可编程门阵列(FPGA)内实现的定制计算设备、在任何类型的可编程逻辑内实现的定制计算设备、状态机、可重构处理器、任何其他处理单元或其任意组合或复合。
驱动器13、其他存储设备或其相关联的计算机可读存储介质可以存储操作系统21、应用程序22、程序模块23和数据库24。计算机10可以包括用户输入设备15,通过该用户输入设备15用户可以输入命令和数据。输入设备可以包括电子数字转换器、麦克风、键盘、定点设备或其任意组合。定点设备的示例可以包括鼠标、跟踪球、光笔、触摸屏或触摸板。计算机10的其他输入设备可以包括操纵杆、游戏板、碟形卫星天线、扫描仪等等。输入设备可以通过耦合到系统总线的用户输入接口连接到处理器11。输入设备还可以通过例如并行端口、游戏端口或通用串行总线(USB)的其他接口和总线结构进行连接。诸如计算机10的计算机还可以包括其他外围输出设备,例如扬声器,该其他外围输出设备可以通过输出外围接口19或类似的接口进行连接。
计算机10可以使用到一个或更多个计算机(例如连接到网络接口16的远程计算机)的逻辑连接而在网络化环境中工作。远程计算机可以是个人计算机、服务器、路由器、对等设备或其他公用网络节点。远程计算机可以包括文中所述的与计算机10相关的很多或所有元件。网络化环境可以包括网络(WAN)、局域网、企业内部互联网、因特网或其组合。
当在LAN或无线LAN(WLAN)网络化环境中使用时,计算机10可以通过网络接口16或网络适配器连接到LAN。当在WAN网络化环境中使用时,计算机10可以包括调制解调器或用于建立在WAN上的通信的其他机制。WAN可以包括因特网、示出的网络18、各种其他网络或其任意组合。应当理解,可以使用在计算机之间建立通信链路、环、网、总线、云或网络的其他机制。
根据一个或更多个实施例,计算机10可以被配置成使得处理器11和/或程序模块23可以使用根据文中所呈现的物理上不可克隆的硬件公开功能来执行加密操作。计算机10可以包括与驱动器13或其他存储设备相关联的物理计算机可读存储介质的一个或更多个实例。系统总线可以使得处理器11能够读取来自/去往计算机可读存储介质的代码和/或数据。介质可以表示使用任何合适的技术实现的存储元件的形式的装置,所述任何合适的技术包括但不限于半导体、磁性材料、光学介质、电存储、电化学存储或任何其他这样的存储技术。介质可以表示与存储器12相关联的部件,无论是随机存取存储器(RAM)、只读存储器(ROM)、闪存还是其他类型的易失性或非易失性存储器技术。介质还可以表示次级存储器,无论被实现为存储驱动器13还是其他。硬件驱动实现可以是固态,或者可以包括存储磁性编码信息的旋转介质。
存储介质可以包括一个或更多个程序模块23。程序模块23可以包括软件指令,如果该软件指令被加载到处理器11中并被执行,则将通用计算系统转换成被定制成使用物理上不可克隆的硬件公开功能以方便加密操作的专用计算系统。如通过该说明书所详细描述的,程序模块23可以提供各种工具或技术,计算机10通过这些工具或技术可以参与到使用文中所讨论的部件、逻辑流和/或数据结构的整个系统或工作环境内。
处理器11可以由可以单独地或共同地呈现任意种状态的任意数量的晶体管或其他电路元件构成。更具体地,处理器11可以作为状态机或有限状态机工作。通过加载包含在程序模块23内的可执行指令,这样的机器可以被转换成第二机器或专用机器。这些计算机可执行指令可以通过指定处理器12如何在状态间跃变从而使构成处理器11的晶体管或其他电路元件从第一机器转换成第二机器来转换处理器11,其中第二机器可以被具体地配置成支持使用物理上不可克隆的硬件公开功能的加密操作。还可以通过接收来自一个或更多个用户输入设备15、网络接口16、其他外围设备、其他接口或一个或更多个用户或其他行动者的输入来转换任一机器的状态。任一机器还可以转换状态、或各种输出设备(例如打印机、扬声器、视频显示器或其他)的各种物理特性。
对程序模块23进行编码还可以转换存储介质的物理结构。在该说明书的不同实施方式中,物理结构的具体转换可以取决于各种因素。这样的因素的示例可以包括但不限于:用于实现存储介质的技术,无论存储介质表现为主要存储器还是次级存储器等。例如,如果存储介质被实现为基于半导体的存储器,则当软件被编码在其中时程序模块23可以转换半导体存储器12的物理状态。例如,软件可以转换构成半导体存储器12的晶体管、电容器或其他分立电路元件的状态。
作为另一个示例,可以使用诸如驱动器13的磁或光学技术来实现存储介质。在这样的实施方式中,当软件被编码在其中时,该程序模块23可以转换磁或光学介质的物理状态。这些转换可以包括改变给定磁介质内的特定位置的磁特性。这些转换还可以包括改变给定光学介质内的特定位置的物理特征或特性,以改变这些位置的光学特性。应当理解,可以进行物理介质的各种其他转换,而不偏离本说明书的范围和精神。
本公开不限于在本申请中所描述的特定实施例,所述特定实施例意在说明各个方面。可以进行多种修改和变型而不偏离其精神和范围,这对于本领域的技术人员是显然的。除了文中列举的之外,在本公开的范围之内的功能上等同的方法和装置根据前述描述对本领域的技术人员将是显然的。这样的修改和变型意在落入所附权利要求的范围之内。本公开仅由所附权利要求以及这样的权利要求所要求的全部等同物范围来限制。应当理解,本公开不限于特定的方法、部件、元件、装置或系统,并且所述特定的方法、部件、元件、装置或系统当然还可以变化。还应当理解,文中所使用的术语只是为了描述特定实施例的目的,而不意在限制。
关于文中基本上任何复数和/或单数术语的使用,在对于上下文和/或应用合适时,本领域的技术人员可以将复数变换成单数,和/或将单数变换成复数。各种单数/复数置换为了清晰起见在文中会被清楚地阐明。
本领域的技术人员将会理解,通常,文中所使用的术语、特别是在所附权利要求(例如,所附权利要求的主体)中所使用的术语通常意在为“开放性”术语(例如,术语“包括(including)”应当被解释为“包括但不限于”,术语“具有”应当被解释为“至少具有”,术语“包括(includes)”应当被解释为“包括但不限于”等)。
本领域的技术人员还将理解,如果意在被引入的权利要求陈述的具体数目,则这样的意图将在权利要求中明确地陈述,在没有这样的陈述的情况下,则不存在这样的意图。例如,为了帮助理解,所附权利要求可以包括介绍性用语“至少一个”和“一个或更多个”的使用,以引入权利要求陈述。然而,即使在同一权利要求包括介绍性用语“一个或更多个”或“至少一个”以及诸如“一个(a)”或“一个(an)”(例如,“一个(a)”和/或“一个(an)”应当被解释为意味着“至少一个”或“一个或更多个”)的不定冠词情况下,这样的用语的使用也不应当被解释为暗示如下内容:由不定冠词“一个(a)”或“一个(an)”引入的权利要求陈述将包括这样引入的权利要求陈述的任何特定权利要求限制为仅包含一个这样的陈述的实施例;对于使用定冠词引入权利要求陈述的情况同样适用。另外,即使明确地陈述了被引入的权利要求陈述的具体数目,本领域的技术人员也将认识到:这样的陈述应当被解释为意味着至少所陈述的数目(例如,仅有“两个陈述”而没有其他修饰的陈述,意味着至少两个陈述,或两个或更多个陈述)。
在使用类似于“A,B和C等中的至少一个”的惯用实例中,通常这样的结构用语意在本领域的技术人员将理解该惯用语(例如,“具有A,B和C中的至少一个的系统”将包括但不限于单独具有A、单独具有B、单独具有C、A和B一起、A和C一起、B和C一起、和/或A、B、C一起等的系统)。在使用类似于“A,B或C等中的至少一个”的惯用语的那些实例中,通常这样的结构用语意在本领域的技术人员将理解该惯用语(例如,“具有A,B或C中的至少一个的系统”将包括但不限于单独具有A、单独具有B、单独具有C、A和B一起、A和C一起、B和C一起、和/或A、B、C一起等的系统)。本领域的技术人员还将理解,事实上表示两个或更多个可替换的术语的任何分离性(disjunctive)词语和/或短语,无论是在说明书、权利要求还是附图中,都应当被理解成考虑包括术语中的一个、两个术语中的任一个或两个术语的可能性。例如,短语“A或B”将被理解成包括“A”或“B”或“A和B”的可能性。
另外,在本公开的特征或方面以马库什组描述的情况下,本领域的技术人员将认识到:本公开由此还可以描述为马库什组的成员的子组或任何单独的成员。
本领域的技术人员将理解,为了任何和所有目的,诸如在提供书面描述方面,文中所公开的所有范围还包括任何和所有可能的子范围以及子范围的组合。可以容易地认为任何列出的范围充分地描述以及使得同一范围能够被分解成至少相等的一半、三分之一、四分之一、五分之一、十分之一等。作为非限制性示例,可以将文中所讨论的每个范围容易地分解成下三分之一、中三分之一和上三分之一等。本领域的技术人员还将理解,诸如“高达”、“至少”、“大于”、“小于”等所有的语言包括所陈述的数目并涉及可以如上所讨论连续地分解成子范围的范围。最后,本领域的技术人员还将理解,范围包括每个单独的成员。因此,例如,具有1至3单元的组涉及具有1、2或3个单元的组。类似地,具有1至5单元的组涉及具有1、2、3、4或5个单元的组,如此等等。