要求优先权
本申请要求题为“用于在不安全共享通信介质上共享密钥和消息认证的方法和系统”(“methodandsystemforsharekeyandmessageauthenticationoveraninsecuresharedcommunicationmedium”)并且在2017年8月29日提交的美国临时申请号62/551,609的权益,其全部内容通过引用明确地并入于此。
本公开一般涉及网络通信领域,并且更特别地,涉及用于使用共享通信介质的包括前向保密性的安全通信的系统和方法。
背景技术:
控制器局域网络(can)总线通信标准提供了鲁棒的通信接口,所述通信接口用于广泛范围的应用中,包括但不限于汽车和其它运输车辆、建筑自动化、工业系统、机器人以及需要使用共享通信介质在嵌入式数字设备之间通信的其它领域。许多can总线实施例采用称为can-high(canh)和can-low(canl)的两条导电线,并且称为“节点”的电子设备使用canh和canl线作为共享通信介质以使用标准化数据帧格式来发射和接收数据。can总线通常利用一对屏蔽或非屏蔽绞合线缆对作为用于信号传输的物理介质。
在正常操作期间,当一个或多个节点希望发射数据帧时,节点执行总线仲裁过程,以确保一次仅一个节点在can-high和can-low上实际发射数据来提供可靠通信,而没有当两个或更多个节点同时发射时发生的“冲突”。在can总线标准中,当在总线上发射显性位“0”时,输出引脚canh和canl被驱动到不同的电压电平,并且从canh到canl之间的差值是can总线的输出。类似地,当canh和canl没有被驱动时发生隐性位“1”的发射,并且将具有类似的电压电平。因为can总线是共享通信介质,所以连接到can总线的每个节点可以读取通过总线发射的每个数据位。当两个节点希望私下地传送不能被连接到总线的其它节点理解的数据时,can总线的所述属性呈现了问题。
对can总线的实施方式的最近改进包括配置,其中连接到can总线的两个节点同时发射数据位(以有意地产生冲突),从而以防止第三方节点能够确定两个正在发射的节点中的哪一个实际上正在发射形成密码密钥的一部分的信息的方式来交换密码密钥数据。在这些密钥协定技术的一部分中,两个节点同时发射逻辑1和逻辑0信号,随后同时发射来自两个节点的原始位的逻辑补码,这产生了可以被每个附接的节点检测到的canh和canl线之间的求和电压差分。然而,虽然附接到can总线的所有设备可以检测到通过can总线的显性位(逻辑0)的发射,但是因为两个节点同时发射,所以连接到can总线的其它节点不能在随后是逻辑补码的0/1位的发射序列期间的任何一个时间确定两个节点中的哪一个正在发射显性0或非显性1,并且仅两个正在发射的节点确实知道哪个位正在被发射。两个节点以随机化的方式发射逻辑0和1位及其逻辑补码(如果两个节点发射逻辑00/11序列或逻辑11/00序列,则所述发射被忽略,因为那些信号确实使第三方能够确定从每个节点发射的数据),这防止了连接到can总线的其它节点检测到发射每个位的节点的身份。所述操作形成了使两个节点(以及间接地甚至较大的节点组)能够交换形成共享密码密钥的基础的数据的基础。在节点已经交换了密码密钥之后,那些共享密钥被用于使用以其它方式被本领域已知的技术来执行数据加密和认证/验证操作,所述技术使总线上的节点的不同子集能够交换不能以不可检测的方式由连接到can总线的其它节点解密或更改的数据。
虽然上面所描述的过程使秘密数据的安全交换能够在诸如使用不安全共享通信介质的can总线之类的系统中生成共享密码密钥,但是现存的过程不提供实现前向保密性的高效过程来生成保护先前使用的密码密钥的新的密码密钥。如本领域已知的,前向保密性是密码系统的属性,所述属性保护来自过去会话的经加密的数据对抗秘密密钥的未来损害。虽然可以使用新的随机生成的数据集来重复上面所描述的过程,以生成提供较旧的秘密密钥的前向保密性的新的密码密钥,但是以高频率执行上面所描述的密钥协定过程可能消耗在使用共享通信介质的系统中的大量时间和网络容量,这是低效的过程。因此,对用于在使用不安全共享通信介质来提供前向保密性和高效操作二者的系统中生成共享密码密钥的方法和系统的改进将是有益的。
技术实现要素:
在一个实施例中,已经开发了用于具有前向保密性的共享秘密协定的方法。所述方法包括:用第一节点中的控制器,使用应用于存储在存储器中的第一节点种子值和至少一个索引值的密码安全伪随机数生成器(prng)来生成第一多个数据位;用第一节点中的控制器和收发器,与来自连接到共享通信介质的第二节点并由第一节点中的收发器接收的第二多个数据位的发射同时地,通过共享通信介质来发射第一多个数据位中的每个位;用第一节点中的控制器,使用第一多个数据位的一部分来识别与第二节点的共享秘密数据,所述第一多个数据位是由第一节点和第二节点同时发射的第二多个数据位的逻辑补码;用第一节点中的控制器,使用应用于共享秘密数据的米面安全单向函数来生成共享种子值,所述共享种子值存储在存储器中;以及用第一节点中的控制器,使用应用于第一节点种子值的密码安全单向函数来生成经更新的节点种子值,所述经更新的节点种子值存储在存储器中以替换第一节点种子值。
在另外的实施例中,所述方法包括:用第一节点中的控制器,使用应用于共享秘密数据的密钥生成函数来生成第一共享秘密密码密钥,所述第一共享秘密密码密钥存储在存储器中。
在另外的实施例中,所述方法包括:用第一节点中的控制器,使用应用于共享种子值的密钥生成函数来生成第二共享秘密密码密钥,所述第二共享秘密密码密钥存储在存储器中以替换第一共享秘密密码密钥;用第一节点中的控制器,使用应用于共享种子值的密码安全单向函数来生成经更新的共享种子值,所述经更新的共享种子值存储在存储器中以替换共享种子值。
在另外的实施例中,所述方法包括:用第一节点中的收发器,将第一多个数据位中的每个位作为两次发射的序列来发射,第一发射是第一多个数据位中的位,并且第二发射是第一多个数据位中的位的逻辑补码。
在另外的实施例中,所述方法的密码安全单向函数是密码哈希(hash)函数。
在另外的实施例中,所述方法的密钥生成函数是密码安全prng。
在所述方法的另外的实施例中,第一节点中的收发器通过can总线共享通信介质发射第一多个数据位中的每个位。
在另一实施例中,已经开发了一种用于具有前向保密性的共享秘密协定的方法。所述方法包括:用第二节点中的控制器,使用应用于存储在第二节点中的存储器中的第一共享种子值和至少一个索引值的密码安全伪随机数生成器(prng)来生成第一多个数据位,所述第一共享种子值在连接到共享通信介质的第二节点和第一节点之间共享;用第二节点中的控制器和收发器,与来自连接到共享通信介质的第三节点并由第二节点中的收发器接收的第二多个数据位的发射同时地,通过共享通信介质来发射第一多个数据位中的每个位;用第二节点中的控制器,使用第一多个数据位的一部分来识别与第三节点的第一共享秘密数据,所述第一多个数据位是由第二节点和第三节点同时发射的第二多个数据位的逻辑补码;用第二节点中的控制器,使用应用于第一共享秘密数据的密码安全单向函数来生成第二共享种子值,所述第二共享种子值存储在存储器中;以及用第二节点中的控制器,使用应用于第一共享种子值的密码安全单向函数来生成经更新的第一共享种子值,所述经更新的第一共享种子值存储在存储器中以替换第一共享种子值。
在另外的实施例中,所述方法包括:用第一节点中的控制器,使用应用于存储在第一节点的存储器中的第一共享种子值和至少一个索引值的密码安全prng来生成第一多个数据位;用第一节点中的控制器,基于第一多个数据位,并且通过使用第一节点中的收发器接收第二节点和第三节点的发射来识别第二多个数据位的逻辑补码的第一多个数据位的部分,以识别第一共享秘密数据;用第一节点中的控制器,使用应用于第一共享秘密数据的密码安全单向函数来生成第二共享种子值,所述第二共享种子值存储在存储器中;以及用第一节点中的控制器,使用应用于第一共享种子值的密码安全单向函数来生成经更新的第一共享种子值,所述经更新的第一共享种子值存储在第一节点的存储器中以替换第一共享种子值。
在另外的实施例中,所述方法包括:用第一节点中的控制器,使用应用于第一共享秘密数据的密钥生成函数来生成第一节点的存储器中的第一共享秘密密码密钥;以及用第二节点中的控制器,使用应用于第一共享秘密数据的密钥生成函数来生成第二节点的存储器中的第一共享秘密密码密钥。
在另外的实施例中,所述方法包括:用第二节点中的控制器,使用应用于第二共享种子值的密钥生成函数来生成第二共享秘密密码密钥,所述第二共享秘密密码密钥存储在存储器中以替换第一共享秘密密码密钥;以及用第二节点中的控制器,使用应用于第二共享种子值的密码安全单向函数来生成经更新的第二共享种子值,所述经更新的第二共享种子值存储在第二节点的存储器中以替换第二共享种子值。
在另外的实施例中,所述方法包括:用第二节点中的控制器,使用应用于第二共享种子值和至少一个索引值的密码安全prng来生成第三多个数据位;用第二节点中的控制器和收发器,与来自连接到共享通信介质的第三节点并由第二节点中的收发器接收的第四多个数据位的发射同时地,通过共享通信介质来发射第三多个数据位中的每个位;用第二节点中的控制器,使用第三多个数据位的一部分来识别与第三节点的第二共享秘密数据,所述第三多个数据位是由第二节点和第三节点同时发射的第四多个数据位的逻辑补码;用第二节点中的控制器,使用应用于第二共享秘密数据的密钥生成函数来生成第二节点的存储器中的第二共享秘密密码密钥,所述第二共享秘密密码密钥替换第二节点的存储器中的第一共享保密密码密钥;以及用第二节点中的控制器,使用应用于第二共享秘密数据的密码安全单向函数来生成经更新的第二共享种子值,所述经更新的第二共享种子值存储在第二节点的存储器中。
在另外的实施例中,所述方法包括:用第三节点中的控制器,使用应用于存储在第三节点的存储器中的节点种子值和至少一个索引值的密码安全prng来生成第四多个数据位;用第三节点中的控制器,使用第三多个数据位的一部分来识别第二共享秘密数据,所述第三多个数据位是由第二节点和第三节点同时发射的第四多个数据位的逻辑补码;用第三节点中的控制器,使用应用于第二共享秘密数据的密钥生成函数来生成第三节点的存储器中的第二共享秘密密码密钥,所述第二共享秘密密码密钥替换第三节点的存储器中的第一共享秘密密码密钥;以及用第三节点中的控制器,使用应用于节点种子值的密码安全单向函数来生成经更新的节点种子值,所述经更新的节点种子值存储在第三节点的存储器中以替换节点种子值。
在另外的实施例中,所述方法包括:用第一节点中的控制器,使用应用于第二共享种子值和至少一个索引值的密码安全prng来生成第三多个数据位;用第一节点中的控制器,基于第三多个数据位,并且通过使用第一节点中的收发器接收第二节点和第三节点的发射来识别第四多个数据位的逻辑补码的第三多个数据位的一部分,以识别第二共享秘密数据;用第一节点中的控制器,使用应用于第二共享秘密数据的密钥生成函数来生成第一节点的存储器中的第二共享秘密密码密钥,所述第二共享秘密密码密钥替换第一节点的存储器中的第一共享秘密密码密钥;以及用第一节点中的控制器,使用应用于第二共享秘密数据的密码安全单向函数来生成经更新的第二共享种子值,所述经更新的第二共享种子值存储在第一节点的存储器中以替换第二共享种子值。
在另外的实施例中,所述方法包括:用第三节点中的控制器,使用应用于存储在第三节点的存储器中的第二共享种子值和至少一个索引值的密码安全prng来生成第三多个数据位;用第三节点中的控制器和收发器,与来自连接到共享通信介质的第四节点并由第三节点中的收发器接收的第四多个数据位的发射同时地,通过共享通信介质来发射第三多个数据位中的每个位;用第三节点中的控制器,使用第三多个数据位的一部分来识别与第四节点的第二共享秘密数据,所述第三多个数据位是由第三节点和第四节点同时发射的第四多个数据位的逻辑补码;用第三节点中的控制器,使用应用于第二共享秘密数据的密码安全单向函数来生成第三节点的存储器中的第三共享种子值,所述第三共享种子值存储在第三节点的存储器中;以及用第三节点中的控制器,使用应用于第二共享秘密数据的密钥生成函数来生成第三节点的存储器中的第二共享秘密密码密钥,所述第二共享秘密密码密钥替换第三节点的存储器中的第一共享秘密密码密钥。
在另外的实施例中,所述方法包括:用第二节点中的控制器,响应于第三节点离开包括第一节点、第二节点、第三节点和第四节点的组,使用应用于经更新的第一共享种子值和至少一个索引值的密码安全prng来生成第五多个数据位;用第二节点中的控制器和收发器,响应于第三节点离开包括第一节点、第二节点、第三节点和第四节点的组,与来自连接到共享通信介质的第四节点并由第二节点中的收发器接收的第六多个数据位的发射同时地,通过共享通信介质来发射第五多个数据位中的每个位;用第二节点中的控制器,使用第五多个数据位的一部分来识别与第四节点的第三共享秘密数据,所述第五多个数据位是由第二节点和第四节点同时发射的第六多个数据位的逻辑补码;用第二节点中的控制器,使用应用于第三共享秘密数据的密码安全单向函数来生成经更新的第二共享种子值,所述经更新的第二共享种子值存储在第二节点的存储器中;以及用第二节点中的控制器,使用应用于第三共享秘密数据的密钥生成函数来生成第二节点的存储器中的第三共享秘密密码密钥,以实现通过共享通信介质在第一节点、第二节点和第四节点而没有第三节点之间进行加密通信。
在另外的实施例中,所述方法包括:用第一节点中的控制器,响应于第三节点离开包括第一节点、第二节点、第三节点和第四节点的组,使用密码安全prng基于经更新的第一共享种子值和至少一个索引值来生成第五多个数据位;用第一节点中的控制器,基于第五多个数据位,并且通过使用第一节点中的收发器接收第二节点和第四节点的发射来识别第六多个数据位的逻辑补码的第五多个数据位的一部分,以识别第三共享秘密数据;用第一节点中的控制器,使用应用于第三共享秘密数据的密码安全单向函数来生成经更新的第二共享种子值,所述经更新的第二共享种子值存储在第一节点的存储器中;以及用第一节点中的控制器,使用应用于第三共享秘密数据的密钥生成函数来生成第一节点的存储器中的第三共享秘密密码密钥,以实现通过共享通信介质在第一节点、第二节点和第四节点而没有第三节点之间进行加密通信。
在另外的实施例中,所述方法的密码安全单向函数是密码哈希函数。
在另外的实施例中,所述方法的密钥生成函数是密码安全prng。
在另外的实施例中,所述第二节点中的收发器通过can总线共享通信介质来发射第一多个数据位中的每个位。
附图说明
图1是使用不安全共享通信介质的通信系统的示意图。
图2是用于图1的系统中的两个节点的具有前向保密性的安全共享秘密密码密钥生成的一轮的过程的框图。
图3是用于图1的系统中的三个或更多个节点的具有前向保密性的安全共享秘密密码密钥生成的过程的框图。
图4是用于在图1的系统中生成新的共享秘密密码密钥的交互式密钥更新(re-key)过程的过程的框图。
图5是用于从图1的系统中的共享秘密密码密钥的节点组中移除节点的过程的框图。
图6是用于在图1的系统中生成新的共享秘密密码密钥的非交互式密钥更新过程的过程的框图。
具体实施方式
为了促进对本文中所公开的实施例的原理的理解的目的,现在对以下书面说明书中的附图和描述进行参考。参考不意图限制主题的范围。本公开还包括对所图示的实施例的任何变更和修改,并且包括本公开所属领域技术人员通常将会想到的所公开的实施例的原理的进一步应用。
如本文中所使用的,术语“位”指的是可以具有两个离散值中的一个的二进制值,所述两个离散值在本文中通常表示为“0”或“1”。通信系统生成具有不同电压电平、相位或其它信号特性的信号,所述信号在数据的发射期间表示二进制位的两个值。如本领域众所周知的,数字数据包括一个或多个位的系列,其可以表示数字、字母或数据的任何其它形式,并且特别地位的集合可以形成密码密钥。如本文中所使用的,如应用于二进制值的术语“逻辑补码”或“反码”是可互换的,并且指的是改变二进制数据的每个位的值的数据集或操作(例如,二进制序列“101”是“010”的逻辑补码)。如下面更详细地描述的,用于安全密钥协定的协议给不同的节点留下共享密钥的对应位集,所述共享密钥是彼此的逻辑补码。所选择的节点集执行反操作,使得所有节点具有相同的共享密钥。
如本文中所使用的,术语“密钥”或“密码密钥”指的是通信网络中的两个或更多个节点用于执行包括数据的加密和解密以及用于对所发射的数据的认证的密码操作的位的序列。“共享密钥”指的是与彼此通信的两个或更多个节点已知的密钥,但是共享密钥不会以其它方式对于包括对手的第三方已知。本文中所描述的方法和系统使通信网络中的两个或更多个节点能够生成并更新共享密钥以提供前向保密性,这防止了对手在从通信的较后轮次获得共享密钥的情况下从通信的先前轮次获得对较旧的共享密钥的访问。
如本文中所使用的,术语“共享通信介质”指的是物理网络连接和网络通信协议,其中多个节点以其中来自单个节点的任何发射由连接到共享通信介质的所有其它节点接收的方式来发射和接收数据。在共享通信介质中,两个或更多个节点可以同时发射数据。共享通信介质被考虑为“不安全”或“不可信”的通信信道,因为假定对手具有监视通过共享通信介质发生的任何以及所有通信的能力。
共享通信介质的两个非限制示例包括控制器局域网总线(can总线)网络通信总线和协议以及i2c总线。这些实施例二者中,通信地连接到共享通信介质的所有节点可以观察通过通信介质发射的所有信号,所述信号包括不意图由特定节点接收的信号。如下面更详细地描述的,每个节点是包括收发器的计算设备,所述收发器被配置为通过共享通信介质向一个或多个附加节点发射和接收信号二者。
can总线系统使用针对信号的差分电压,其中两个节点同时发射逻辑0(高电压)和逻辑1(低电压),节点中的仅一个在canh和canl导体上产生电压差分中的改变。在大多数can实施例中,canh和canl导体二者被默认驱动到预确定的电压电平(例如,2.5v),并且如果canh和canl上的电压之间的差为零或者在零的预确定操作阈值内,则发射被称为“隐性”,其对应于逻辑1,并且连接到can总线的节点基于零或低电压差分来检测逻辑1。然而,如果节点发射逻辑0,则该节点将canh导体驱动到高于2.5v的较高的电压电平,并且将canl线驱动到低于2.5v的较低的电压电平。canh和canl导体之间的电压差容易被连接到can总线以检测逻辑1和0信号的其它节点检测到。
如本文中所使用的,术语“密码安全单向函数”或更简单地“单向函数”指的是由计算设备执行的一种类型的计算函数,所述计算设备提供计算高效过程来生成针对给定输入值的输出值,但是其中假设输入值是从足够大范围的可能输入随机选择的,当提供有输出值时,导出原始输入值的反向操作在计算上是不可行的。密码安全单向函数需要多项式有界的对手在可能输入的较大范围上执行计算上不可行数量的“强力”单向函数操作来识别原始输入。本文中所描述的单向函数使用
如本文中所使用的,术语“密码安全伪随机函数”或更简单地“伪随机函数”(prng)指的是由计算设备执行的一种类型的计算函数,其当密码安全prng被供应两个输入值k和ind时,产生不可由多项式有界的对手与随机值区分的输出,其中k本身是对手先前不知道的随机或显然随机选择的值,并且ind可以是任何任意值,其包括下面将进一步详细描述的非随机索引值。密码安全prng函数f在数学上描述为:
如本文中所使用的,术语“密钥生成函数”k指的是当提供有输入值时可以生成共享密码密钥的函数。密钥生成函数k是另一类型的单向函数,如果对手被提供有共享密码密钥输出值,则所述单向函数不会揭露原始输入。在本文中所描述的一些实施例中,密码安全prng函数f还充当密钥生成函数k,但是也可以使用其它密钥生成函数。
图1描绘了包括多个计算设备的系统100,所述计算设备被称为使用不安全共享通信介质与彼此通信的“节点”。系统100包括多个节点104a、104b、104c以及到104d,所述节点均通信地连接到共享通信介质102。虽然图1为了说明的目的描绘了四个节点104a-104d,但是系统100的其它实施例包括至少两个节点或较大数量的五个或更多个节点。在图1的说明性实施例中,系统100使用can总线,并且共享通信介质102实现了canh和canl电导体,但是替代的实施例可以使用共享通信介质的其它实施例,所述共享通信介质使所有连接的节点能够观察通过共享通信介质发射的信号。图1还描绘了对手150。对手150不是系统100的部分,但是假设对手150能够观察通过共享通信介质102发生的所有通信。此外,在一些实例中,对手150可以从节点104a-104d中的一个的存储器提取当前时间密码密钥以及其它数据。如下面进一步详细描述的,系统100实现了共享密钥协定和更新系统,所述系统提供了前向保密性,以防止对手150使用较旧的密码密钥对经加密的较旧的消息进行解密,即使对手150恢复了较后生成的密码密钥。
图1更详细地描绘了系统100的节点104a,并且其它节点104b-104d包括与节点104a类似的配置。节点104a包括操作性地连接到can收发器112的控制器108和存储器120。can收发器112包括到共享通信介质102中的canh和canl导体的连接,以使节点104a能够向其它节点104a-104d发送和接收数据。
在节点104a中,控制器108是数字逻辑设备,其包括诸如微处理器、微控制器、现场可编程门阵列(fpga)、专用集成电路(asic)等之类的一个或多个元件。在一些实施例中,控制器108包括硬件随机数生成器,或者操作性地连接到外部硬件随机数生成器或用于随机数据的生成的熵源。控制器108执行存储在存储器120中的所存储的指令数据124,以实现本文中所描述的操作。特别地,控制器108控制can收发器112以通过共享通信介质102接收和发射数据。控制器108还控制can收发器112,以实现与系统100中的另一节点的安全数据交换过程,并且生成如本文中所描述的具有前向保密性的密码密钥。
在节点104a中,存储器120是数字数据存储设备,其包括诸如随机存取存储器(ram)之类的易失性存储器设备以及诸如磁性硬盘或固态数据存储驱动之类的非易失性存储器设备二者。存储器120存储指令数据124、节点种子值130、索引值132、一个或多个共享种子值134、用于在三个或更多个节点之间共享组密钥的实施例的轮次计数器136、共享密码密码密钥140以及伪随机数据144。节点种子值130是由每个节点使用真或伪随机数生成器单独生成的值,节点种子值130不与系统100中的其它节点共享。共享种子值134包括使用防止对手150访问共享种子134的通信过程在系统100中的至少两个节点之间共享的一个或多个种子值。如下面进一步详细描述的,在操作期间,控制器108将密码安全单向函数g应用于更新节点种子值130以及共享种子134的值,作为保持用于共享秘密密码密钥140的前向保密性的过程的部分。伪随机数据144是使用密码安全prng基于节点种子值130或共享种子值134二者任一以及索引值132生成的。在图1的实施例中,所存储的指令数据124包含控制器108执行以实现本文中所描述的函数的编程指令,所述函数包括密码安全单向函数和密码安全prng。
在节点104a中,can收发器112是商业上可用的发射器和接收器,其提供到共享通信介质102中canh和canl线二者的电连接。can收发器112在节点104a的操作期间发射用于非显性位(逻辑1)和显性位(逻辑0)的信号。can收发器112还接收通过canh和canl线发射的信号,并且可以在can收发器112空闲(没有正在发射)或正在主动发射数据二者时检测从其它节点发射的信号。在一些实施例中,can收发器112与控制器108一起集成到芯片上系统(soc)配置中的单个固态设备中。can收发器112是更一般的网络接口设备的一个实施例,其使节点104a能够通过共享通信介质102发送和接收数据。在其它实施例中,网络接口设备是用于i2c总线的收发器,或者通过共享通信介质提供通信的另一收发器。
在图1中,对手150是连接到共享通信介质102中的canh和canl线的另一计算设备。假设对手150能够监视通过共享通信介质102进行的所有发射,这是为什么共享通信介质102在本文中被称为“不安全”。在一些实例中,对手150经由诸如机载诊断ii(obd-ii)连接器或一些其它电连接之类的外部接口端口连接到can总线系统。在其它实例中,对手150是已经被对手损害的系统100中的另一节点。本文中所描述的实施例提供了前向保密性,以保护来自节点104a-104d的较旧的密码密钥和对应的加密发射免受对手150影响,即使对手150能够损害系统100中较新的密码密钥。
图2描绘了用于节点对的操作的过程200,所述节点对连接到共享通信介质以执行具有前向保密性的一轮秘密数据交换过程。过程200可以由单个节点对来执行,以在两个节点之间生成共享密码密钥,或者由三个或更多个节点的较大组中的节点对来执行,作为如下面在图3中进一步详细描述的在节点的较大组之间交换共享秘密数据以及生成共享秘密密码密钥的过程的部分。在下面的描述中,对执行函数或动作的过程200的描述指的是一个或多个控制器执行所存储的程序指令以执行与通信系统中的其它组件相关联的函数或动作的操作。为了说明的目的,结合图1的系统100来描述过程200。
过程200开始,诸如图1中的节点104a和104b之类的两个节点中的每一个,生成种子值和初始索引值以发起用于交换n个共享秘密数据位的过程(框204)。使用节点104a作为示例,控制器108使用硬件或软件随机数生成器生成随机节点种子值130,所述随机数生成器可以是密码安全prng或产生不能被对手150预测的值的任何其它随机数生成器。节点104a-104d中的每一个的存储器120中的节点种子值130从不与系统100中的其它节点直接共享。如下面进一步详细描述的,在通信的后续轮次中,在至少两个节点的组已经建立共享秘密数据之后,一个节点使用先前生成的共享种子值134作为初始值,但是组中的第一节点对中的每个节点使用第一轮次的单独的节点种子值130来建立第一共享秘密数据集。控制器108还生成初始索引值132,所述索引值132可以是零、另一预确定的值或另一随机生成的索引值。n个位对应于共享秘密数据的量,所述共享秘密数据的量提供了足够的数字空间以使节点104a和104b能够生成共享秘密密码密钥,而不使对手150能够以实际的方式猜测秘密密钥。n的非限制性示例是64、80或128位。
随着每个节点使用密码安全prng基于节点种子值130和索引值132来生成l个伪随机数据位144的集合(框208),过程200继续。如上面所描述的,密码安全prngf生成输出
随着两个节点使用不安全共享通信介质102经由l个伪随机数据位的同时发射来执行数据的安全交换(框212),过程200继续。更详细地,节点104a和104b中的每一个中的控制器108使用can收发器112通过共享通信介质102在预确定的位发射时间内同时发射伪随机数据位144,所述位是逻辑0或逻辑1二者任一。每个节点后续在预确定的位发射时间发射位值的逻辑补码。这样,每个节点将每个伪随机数据位144作为该位和该位的逻辑补码的两次发射的序列来发射。因为每个节点可以发射两个逻辑值中的一个,所以每个位集存在四个可能的同时发射序列:1.节点104a发射0,1序列,而节点104b也发射0,1序列;2.节点104a发射0,1序列,而节点104b发射1,0序列;3.节点104a发射1,0序列,而节点104b发射0,1序列;并且4.节点104a发射1,0序列,而节点104b也发射1,0序列。
如上面所描述的,在can总线系统中,逻辑0发射在canl和canh线之间产生显性电压,而逻辑1发射在共享通信介质102中的canl和canh线之间产生隐性电压。因此,如果两个节点同时发射相同的位(逻辑0或逻辑1二者任一),则对手150可以通过测量canh和canl线中的电压电平来确定两个节点正在发射相同的位。这样,在上面的情况1和4中,其中两个节点发射0,1/0,1序列或1,0/1,0序列,两个节点104a和104b丢弃不成为共享秘密数据的部分的所发射的位。然而,在情况2和3中,当两个节点104a和104b发射位0,1/1,0或1,0/0,1的逻辑补码序列时,则对手150不能确定发射逻辑0或逻辑1的节点104a或104b的身份。正在发射的节点104a和104b中的每一个中的控制器108可以确定序列,然而,因为控制器108具有关于正在由can收发器112发射的位的先验信息,并且can收发器112还感测canh和canl线中的总电压电平,以使控制器108能够在同时发射序列期间检测由第二节点正在发射的位。
在过程200期间,两个节点104a和104b执行框212的发射以安全地交换g个数据位,其中位的总数由于发射的随机特性而变化,因为平均来说,如上面所描述的,发射的一半被丢弃。如果两个节点成功地交换g个伪随机数据位144,其中g<n,并且耗尽了当前的伪随机数据集,这意味着两个节点还没有以安全的方式交换n个秘密数据位(例如,g=48位而n=80位)(框216),则当每个节点修改索引值132时,过程200继续数据交换(框220),每个节点使用经修改的索引值132和相同的种子值134来重新生成新的伪随机数据集144(框208),并且两个节点使用新生成的伪随机数据再次执行同时发射过程(框212)。在一个实施例中,每个节点将索引值132增加一或另一预确定的值以生成经修改的索引,所述经修改的索引使密码安全prng能够产生新的伪随机数据144。
过程200如上面所描述的继续,直到两个节点104a和104b已经交换了n个共享秘密数据位(框216)。因为上面所描述的过程仅当两个节点发射彼此是逻辑补码(例如,节点104a发射0而节点104b发射1,并且反之亦然)的伪随机生成的位集时才成功地交换数据位,所以按照惯例,第二节点104b执行逻辑位反转以生成与第一节点104a一致的共享秘密数据集(例如,位“0110”被反转为“1001”),尽管在另一实施例中,第一节点104a执行逻辑位反转。
在过程200的一个实施例中,节点104a和104b二者使用共享的n个数据位作为使用密码安全单向函数生成用于共享种子值134的新值的基础,并且使用节点种子值130作为生成伪随机数据144的基础的节点中的二者任一或二者将密码安全单向函数应用于节点种子值130以生成经更新的节点种子值(框224)。在两个节点104a和104b之间交换秘密数据的第一轮次中,其中节点104a和104b二者都没有参与秘密数据交换的先前轮次,节点104a和104b二者中的控制器108将密码安全单向函数应用于n个共享位以生成新的种子值s,该种子值s与共享种子值134一起存储在存储器120中:对于n个共享数据位,s=g(共享位)。在过程200中,至少一个节点并且潜在地两个节点使用节点种子值130作为生成伪随机数据144的原始基础,并且控制器108将密码安全单向函数应用于节点种子值130以生成经更新的节点种子值130,所述经更新的节点种子值130替换存储器120中的原始节点种子值130:s节点=g(s节点)。在其中节点不使用先前生成的共享种子值134来生成伪随机数据144的情况下,每个节点将经更新的节点种子值130用于过程200的附加迭代。在未来的通信轮次中,节点使用共享种子值134作为用于生成伪随机数据144或新的共享秘密密码密钥140的基础,并且共享种子值134的每个节点中的控制器108将密码安全单向函数g应用于共享种子值134,以在完成伪随机数据144的另一交换之后更新共享种子值134,以确保旧的共享种子值134没有存储在存储器120中。如本文中所使用的,对节点种子值130或共享种子值134二者任一的“更新”或生成“更新值”的引用指的是删除较旧的节点种子值130或共享种子值134并且用较新的更新值替换旧值的过程,由于在系统100中使用的单向函数的属性,所述较新的更新值不能用于导出较旧的值。从节点104a或系统100中的另一节点的存储器120删除较旧的节点种子值130或共享种子值134提供了前向保密性,以保护较旧的经加密的消息,因为对手150不能恢复被删除的种子值集,所述种子值集被用于生成已经从存储器120删除的较旧的共享秘密密码密钥。
在过程200期间,如果在最终组中仅有两个节点,则仅存在单个共享种子,但是在包括三个或更多个节点的实施例中,每个种子在交换n个数据位的节点对以及先前在组中的任何其它节点之间共享,如下面将进一步详细描述的。当在节点对之间的秘密数据交换的附加轮次期间添加附加节点时,每轮次的共享种子值134与新轮次计数器值136结合地单独存储,以保持在接收种子值的节点中的一系列轮次上生成的共享种子值134的记录。
在过程200期间,如果过程200中的两个节点是组中的最终节点对(框228),则节点中的每一个还通过将密钥生成函数应用于n个共享秘密数据位来生成共享秘密密码密钥140(框232)。在上面的示例中,节点104a和104b是两个节点组中最终并且唯一的节点对,并且每个节点中的控制器108将诸如密码安全prng之类的密钥生成函数应用于n个共享秘密数据位以生成共享秘密密码密钥140。新生成的共享秘密密码密钥140替换存储器120中来自先前加密通信会话的较旧的共享秘密密码密钥140(如果存在任何的话),以针对来自共享共享秘密密码密钥140的两个或更多个节点之间的较旧的加密通信会话的加密数据提供前向保密性。共享秘密种子值134的生成、节点种子值130的更新以及共享秘密密码密钥140的生成(如果生成一个的话),可以以任何次序或同时发生,一旦对中的两个节点交换n个共享秘密数据位的话。此外,在生成共享秘密种子值134和共享秘密密码密钥140时(如果生成一个的话),对中的节点的每一个中的控制器108从存储器120删除n个共享秘密数据位。
如上面所描述的,用于一轮次通信的共享种子值134是使用应用于n个共享保密位的密码安全单向函数生成的(s=g(共享位)),而共享秘密密码密钥140是使用应用于n个共享秘密位的密码安全prng生成的(k=f(共享位,0))。因此,虽然共享种子值134和共享秘密密码密钥140二者是基于相同的n个共享秘密数据位生成的,但是种子值和共享秘密密码密钥与彼此不同,并且如果提供有共享种子值134,则对手150不能再生共享秘密密码密钥140,反之亦然。另外,每个节点中的控制器108删除n个共享秘密数据位,并且使用节点种子值130来生成伪随机数据144的任何节点使用密码安全单向函数来更新节点种子值130。因此,在过程200的后续迭代期间,一旦秘密密码密钥140已经由存储器120中的较新的密钥替换,每个节点的存储器120就不包含可以由对手使用以计算秘密密码密钥140的任何信息,这向系统100提供了前向保密性。
在完成过程200之后,两个或更多个节点使用共享秘密密码密钥140来使用本领域以其它方式已知的一个或多个对称密钥密码方案来执行加密通信会话。例如,共享秘密密码密钥140可以与各种块或流密码加密方案一起使用,所述块或流密码加密方案包括但不限制于aes,以使每个节点能够对用于通过共享通信介质102发射的消息进行加密,并且对从共享通信介质102接收的来自其它节点的消息进行解密,而对手150仅可以观察经加密的数据,并且实际上不能恢复原始消息的纯文本内容。共享秘密密钥140用于单个加密通信会话,其中在节点104a-104b以及在加密通信会话期间使用共享秘密密码密钥140的任何其它节点之间交换的数据量可以取决于系统100的安全性约束以及使用秘密密钥140的密码方案的密码属性。在一些实施例中,当现存的加密通信会话在预确定的加密发射数量或预确定的时间段后终止时,系统100中的节点生成新的共享密码密钥。如下面将进一步详细描述的,在加密通信会话之后,两个节点104a和104b更新密码密钥以保持前向保密性,所述前向保密性保护了较旧的共享密钥以及加密数据。
图2的过程200描述了系统100中的两个节点对执行生成共享秘密数据的单轮通信的操作,并且包括两个节点的组也可以执行过程200来生成共享秘密密码密钥。在一些实例中,三个或更多个节点的组需要使用具有前向保密性的共享秘密密码密钥来通信。在这些实施例中,进行多轮次通信(对组中的n个节点进行n-1轮)以在三个或更多个节点之间建立共享秘密密码密钥,而同时提供前向保密性。图3描绘了与连接到共享通信介质的三个或更多个节点的组进行具有前向保密性的安全共享秘密密码密钥协定过程的过程300。在下面的描述中,对执行函数或动作的过程300的描述指的是一个或多个控制器执行所存储的程序指令以执行与通信系统中的其它组件相关联的函数或动作的操作。过程300使用上面所描述的图2的过程200的元素,并且包括附加操作,所述附加操作实现了针对三个或更多个节点的组的具有前向保密性的高效密码密钥生成过程。为了说明的目的,结合图1的系统100来描述过程300。在下面所描述的示例中,节点104a、104b和104c生成对手150或系统100中的其它节点不可用的公共共享密码密钥。
随着共享密码密钥的组中的n个节点中的每一个(例如,节点104a、104b、104c)生成初始节点种子值130、索引值132和轮次计数器136(框304),过程300开始。使用节点104a作为示例,控制器108使用硬件或软件随机数生成器生成随机节点种子值130,所述随机数生成器可以是密码安全prng或产生不能够由对手150预测的值的任何其它随机数生成器。控制器108还生成初始索引值132,所述初始索引值132可以是零、另一预确定的值或另一随机生成的索引值。n个位对应于共享秘密数据的量,所述共享秘密数据的量提供了足够的数字空间以使节点104a、104b和104c能够生成共享秘密密码密钥,而不使对手150能够以实际方式猜测秘密密钥。与过程200一样,n的非限制性示例是64、80或128位。轮次计数器136被初始化为零或另一预确定的数值,并且在过程300中被用于跟踪节点之间已经发生的成对数据交换的轮次,并且跟踪针对每轮次生成的共享种子值134,因为序列中的较早的节点对将来自较早轮次的一个或多个种子值134存储在存储器120中。轮次计数器136跟踪节点组在过程300期间交换以生成组共享保密密码密钥的一个或多个种子值。
随着第一对节点(在该示例中节点104a和104b)以安全的方式建立共享秘密数据(框308),过程300继续。节点104a和104b以上面参考图2中框208-224的处理所描述的相同方式交换伪随机秘密数据,所述处理包括伪随机位随后是位的逻辑补码的同时发射,以实现通过不安全共享通信介质102的节点104a和104b之间的安全数据交换。在一个实施例中,第一节点对通过将密码安全单向函数应用于n个共享数据位来建立与过程300的第一轮次相关联的第一轮次共享种子值134(框312)。例如,在节点104a中,控制器108生成种子值
随着每个节点更新轮次计数器136并且来自先前轮次的第二节点成为下一轮次的第一节点(框316),过程300继续。在图1的示例中,来自第一轮次的第二节点104b成为下一轮次的第一节点,所述下一轮次将节点104c合并为第二轮次中的第二节点。为了说明的目的,使用来自先前轮次的“第二”节点作为下一轮次的第一节点的描述被用作惯例。更广泛地,成为后续轮次中的“第一”节点的“第二”节点可以是参与最近轮次的两个节点中的二者任一,诸如图1的示例中的节点104a和104b中的二者任一。
随着下一节点对(例如104b和104c)建立针对过程300的下一轮次的另一共享保密种子,过程300继续,其中第一节点(在该示例中节点104b)使用来自先前轮次的共享种子作为密码安全prng函数的输入的基础(框320)。第一节点104b还使用从预确定的值(例如,0)或发射到系统100中的所有节点的另一数值二者任一开始的索引值132(ind),使得来自先前轮次的每个节点可以计算由第一节点104b使用的相同的l个伪随机数据位的集合:
随着下一节点对以及已经参与先前轮次的组中的所有节点使用密码安全单向函数建立了用于下一轮次的共享种子值134(框324),过程300继续。特别地,节点104b和104c之间的最近轮次的n个位的集合由节点104a-104c中的每一个共享,并且每个节点中的控制器108使用n个位作为单向函数g的输入来生成用于下一轮次的共享种子值134。如上面所描述的,下一轮次中的第二节点(例如,节点104c)也将密码安全单向函数应用于节点种子值130以更新节点种子值130。针对将另一节点添加到组的每个附加轮次,已经参与一个或多个先前轮次的所有节点将与轮次计数器136相关联的下一轮次种子值134存储在存储器120中,以保持当每个附加节点被添加到组时用于每轮次的种子值的记录。如上面所描述的,来自初始轮次的节点104a和104b还在存储器120中存储与第一轮次的轮次索引136相关联的单独的共享种子值134,其中用于每轮次的种子值是应用于该特定轮次的共享秘密数据的单向密码函数的输出(例如,对于由第一轮次中的节点104a和104b共享的n个共享秘密数据位,
过程300继续针对加入组的任何附加节点如上面的框316-324中描述的添加附加节点(框328)。一旦不存在附加节点(框328),则组中的每个节点基于来自组中的最终节点对之间的最终轮次的共享秘密数据集而生成共享秘密密钥,所述共享秘密密钥由组中的所有节点观察(框332)。每个节点以类似于上面在过程200中所描述的框232的过程的方式来执行框332的处理。在一个实施例中,每个节点中的控制器108将密钥生成函数应用于共享秘密数据共享位轮次n-1,所述共享秘密数据共享位轮次n-1在编号n-1的最终轮次中在最终节点对(例如,节点104b和104c)之间交换。在一个实施例中,密钥生成函数是应用于共享秘密数据共享位轮次n-1和预确定的索引值(例如,0或由所有节点使用的另一值)的密码安全prng,以生成最终共享秘密密码密钥140。组的每个节点中的控制器108使用输出的全部或一部分来生成第一共享密码密钥140:k=f(共享位轮次n-1,0)作为节点104a-104c中的每一个之间的第一加密通信会话的初始秘密密钥140。
在组中的节点已经执行上面所描述的过程300之后,将新节点添加到组包括使用上面参考框316-328所描述的相同过程将组中最近添加的节点(例如,节点104c)用作附加对中的第一节点,并且使用参考框332所描述的过程生成用于所有节点的新共享密码密钥。例如,在系统100中,节点104d可以在节点104a-104c已经生成共享秘密密钥之后添加到节点104a-104c组。与轮次计数器136相关联的节点104c中的最近轮次种子值134充当用于生成附加prng数据的初始种子值,以用于添加新节点104d的安全数据交换过程,所述轮次计数器136被所有的节点104a-104c存储在存储器中。节点104a-104b现在存储与用于第一轮次(节点104a-104b)、第二轮次(节点104b-104c)以及第三轮次(节点104c-104d)的计数器136相关联的多轮次种子值134的历史。节点104c存储与仅用于第二轮次(节点104b-104c)以及第三轮次(节点104c-104d)的轮次计数器136相关联的种子值134。节点104d存储与仅用于第三轮次(第三轮次节点104c-104d)的轮次计数器136相关联的种子值134。所有的节点104a-104d使用应用于在节点104c-104d之间交换的n个数据位的密码安全prng来生成新的共享秘密密码密钥140,以生成用于所有的节点104a-104c的共享密码密钥。
在三个或更多个节点的组已经执行图2和图3的过程之后,在某些情况下,组中的节点执行生成用于组中的所有节点的新的共享秘密密码密钥140的交互式密钥更新过程。该过程与过程300不同,因为在交互式过程中,组中的一些节点通过共享通信介质102发射位,但是在三个或更多个节点的组中,交互式密钥再生成过程不需要组中的所有节点如在原始过程300中一样发射数据。图4描绘了交互式密钥再生成过程400。过程400使组中的所有节点能够再生成新的最终轮次共享种子和共享密码密钥,而不需要组中的所有节点重复过程300。在下面的描述中,对执行函数或动作的过程400的描述指的是一个或多个控制器执行所存储的程序指令以执行与通信系统中的其它组件相关联的函数或动作的操作。为了说明的目的,结合图1的系统100来描述过程400。
随着过程300期间添加到组的最终节点对的第一节点以及组中除了最终节点之外的所有其它节点使用过程300的最终轮次的共享种子值134作为用于生成新的伪随机数据集144的基础,而最终对中的第二个节点使用先前更新的节点种子值130作为用于生成新的伪随机数据集144的基础以用于共享秘密数据的另一交换(框404),过程400开始。例如,在图1的系统100中,如果组包括以104a-104b、104b-104c、104c-104d的次序成对添加的节点104a-104d中的每一个节点,则节点104c是最终对的第一节点,并且节点104d是最终对的第二节点。节点104a-104c中的每一个中的控制器108使用最终轮次种子值
随着节点104c和104d执行上面在过程300中描述的安全数据交换过程以基于伪随机数据144交换n个位(框408),过程400继续,每个节点中的控制器108使用具有输入种子值和索引值的密码安全prng的输出来生成所述伪随机数据144。如上面在图3中所描述的,第一节点104c使用其它节点104a-104b已知的最终轮次种子值134,并且使用其它节点104a-104b提前已知的或在过程400期间发射到其它节点104a-104b的索引值132。节点104a-104b中的每一个中的控制器108生成与节点104c的控制器108相同的伪随机数据,并且所有的三个节点在与最终节点104d的交换过程期间接收n个位的相同集合。因为节点104d使用先前未被用作prng的输入的节点种子值130来生成伪随机数据,所以新交换的n个位形成了与较旧的种子值和密码密钥不相关的所有节点104a-104d中的新的最终轮次共享种子值134和共享秘密密码密钥140的基础。
随着组中的节点104a-104d中的每一个基于n个共享位生成新的共享秘密密码密钥140,并且生成经更新的种子值以在附加的通信轮次期间提供前向保密性(框412),过程400继续。组的每个节点中的控制器108使用密钥生成函数生成下一个共享密码密钥140,所述共享密码密钥140在一个实施例中是来自密码安全prng的输出的全部或一部分:k=f(共享位,0),以生成用于节点104a-104d中的每一个之间的加密通信的下一轮次的经更新的秘密密码密钥140。作为共享秘密密码密钥140的更新过程的部分,节点104a-104d中的每一个中的控制器108还删除在执行过程400之前使用的较旧的共享密码密钥140,以针对节点104a-104d之间的先前加密通信会话提供前向保密性。每个节点中的控制器108还使用应用于n个共享位的集合的密码安全单向函数来更新与最终轮次计数器136相关联的最终轮次种子值134以保持附加通信轮次的前向保密性:
在三个或更多个节点的组已经执行过程300之后,节点可以离开共享秘密密码密钥的节点组。图5描绘了用于组中剩余节点以提供前向保密性并且防止离开的节点能够对组中剩余节点之间的未来加密发射进行解密的方式再生成新的共享密码密钥的过程500,假定所述离开的节点在存储器120中保留共享种子值134和共享保密密码密钥140。在下面的描述中,对执行函数或动作的过程500的描述指的是一个或多个控制器执行所存储的程序指令以执行与通信系统中的其它组件相关联的函数或动作的操作。为了说明的目的,结合图1的系统100来描述过程500。
随着节点离开先前已经共享秘密密码密钥的节点组(框504),过程500开始。在图1的说明性实施例中,节点104a-104d的组共享秘密密码密钥,并且一个节点104c离开该组。在图1的示例中,该组包括以104a-104b、104b-104c、104c-104d的次序成对添加的节点104a-104d中的每一个。这样,在上面所描述的过程300中,节点104c在节点104a-104b之后并且在节点104d之前添加到组。当节点离开组时,所有剩余的节点(例如,节点104a、104b和104d)删除共享秘密密码密钥140,因为在节点104c离开该组之后,旧的共享秘密密码密钥不用于附加的密码操作。此外,先前的节点(例如,节点104a和104b)删除对应于包括离开组的节点以及来自过程300的所有较后节点的轮次计数器值136的所有共享种子值134。在该示例中,节点104a和104b二者删除添加了节点104c的第二轮次的共享种子值
随着剩余节点将组中已经失效的但仍然是组的成员的节点以剩余的节点组中的最终节点(例如,节点104b)开始添加回组中(框508),过程500继续。在前述的示例中,节点104b成为新对中的第一节点,所述新对包括失效的节点104d,但是排除离开组的节点104c。因为节点104b使用在节点104c被添加到组之后在过程300期间更新的共享种子值134(种子
在过程500中,系统100执行不同的操作来处理其中第一节点对中的节点离开组或要添加到组的最终节点离开组的情况。在其中组中的第一节点对中的节点之一(例如,节点104a或104b二者任一)离开组的情况下,整个组无效,并且系统100代替地仅使用剩余节点来处理节点从组中的第一对离开来执行上面所描述的过程300。在其中要添加到组的最终节点离开组的情况下(例如,如果节点104d而不是节点104c离开组),组中剩余节点可以在最终轮次之前使用对应于轮次计数器136的共享种子值134(例如,分别用于节点104a-104c的种子值
在一些实施例中,如果所有的节点已经使用图2和图3的过程建立了共享种子,则组中的节点集在不需要一个或多个节点对来交换新的共享秘密数据的非交互式密钥更新操作中生成新的共享密码密钥140。图6更详细地描绘了非交互式密钥更新过程600。在下面的描述中,对执行函数或动作的过程600的描述指的是一个或多个控制器执行所存储的程序指令以执行与通信系统中的其它组件相关联的函数或动作的操作。为了说明的目的,结合图1的系统100来描述过程600。
随着组中的每个节点使用应用于最终轮次共享种子值134的密钥生成函数来生成新的共享秘密密码密钥140并且每个节点删除旧的共享秘密密码密钥140(框604),过程600开始。例如,在系统100中,如果节点104a、104b和104c在组中,则每个节点中的控制器108通过将具有预确定的索引值的密码安全prng应用于最终轮次共享种子值134来生成新的共享秘密密码密钥140来替换旧的密钥:
随着组中的每个节点使用应用于最终轮次种子值的密码安全单向函数来更新最终轮次种子值以使用共享种子值针对附加操作提供前向保密性(框608),过程600继续。在上面的示例中,在节点104a-104c中的每一个中的控制器108使用密码安全单向函数g生成替换先前的共享种子值的用于最终轮次的经更新的共享种子值134:
将理解的是,上面所公开的变型以及其它特征和功能或其替代可以期望地结合到许多其它不同的系统、应用或方法中。本领域技术人员后续可以进行各种目前未预见或未预料到的替代、修改、变化或改进,这些也意图被以下权利要求所包含。
1.一种用于具有前向保密性的共享秘密协定的方法,包括:
用第一节点中的控制器,使用应用于存储在存储器中的第一节点种子值和至少一个索引值的密码安全伪随机数生成器(prng)来生成第一多个数据位;
用第一节点中的控制器和收发器,与来自连接到共享通信介质的第二节点并由第一节点中的收发器接收的第二多个数据位的发射同时地,通过共享通信介质来发射第一多个数据位中的每个位;
用第一节点中的控制器,使用第一多个数据位的一部分来识别与第二节点的共享秘密数据,所述第一多个数据位是由第一节点和第二节点同时发射的第二多个数据位的逻辑补码;
用第一节点中的控制器,使用应用于共享秘密数据的密码安全单向函数来生成共享种子值,所述共享种子值存储在存储器中;以及
用第一节点中的控制器,使用应用于第一节点种子值的密码安全单向函数来生成经更新的节点种子值,所述经更新的节点种子值存储在存储器中以替换第一节点种子值。
2.根据权利要求1所述的方法,还包括:
用第一节点中的控制器,使用应用于共享秘密数据的密钥生成函数来生成第一共享秘密密码密钥,所述第一共享秘密密码密钥存储在存储器中。
3.根据权利要求2所述的方法,还包括:
用第一节点中的控制器,使用应用于共享种子值的密钥生成函数来生成第二共享秘密密码密钥,所述第二共享秘密密码密钥存储在存储器中以替换第一共享秘密密码密钥;以及
用第一节点中的控制器,使用应用于共享种子值的密码安全单向函数来生成经更新的共享种子值,所述经更新的共享种子值存储在存储器中以替换共享种子值。
4.根据权利要求1所述的方法,所述第一多个数据位的发射还包括:
用第一节点中的收发器,将第一多个数据位中的每个位作为两次发射的序列进行发射,第一发射具有第一多个数据位中的位,并且第二发射具有第一多个数据位中的位的逻辑补码。
5.根据权利要求1所述的方法,其中所述密码安全单向函数是密码哈希函数。
6.根据权利要求2所述的方法,其中所述密钥生成函数是密码安全prng。
7.根据权利要求1所述的方法,其中所述第一节点中的收发器通过can总线共享通信介质发射第一多个数据位中的每个位。
8.一种用于具有前向保密性的共享秘密协定的方法,包括:
用第二节点中的控制器,使用应用于存储在第二节点的存储器中的第一共享种子值和至少一个索引值的密码安全伪随机数生成器(prng)来生成第一多个数据位,所述第一共享种子值在连接到共享通信介质的第二节点和第一节点之间共享;
用第二节点中的控制器和收发器,与来自连接到共享通信介质的第三节点并由第二节点中的收发器接收的第二多个数据位的发射同时地,通过共享通信介质来发射第一多个数据位中的每个位;
用第二节点中的控制器,使用第一多个数据位的一部分来识别与第三节点的第一共享秘密数据,所述第一多个数据位是由第二节点和第三节点同时发射的第二多个数据位的逻辑补码;
用第二节点中的控制器,使用应用于第一共享秘密数据的密码安全单向函数来生成第二共享种子值,所述第二共享种子值存储在存储器中;以及
用第二节点中的控制器,使用应用于第一共享种子值的密码安全单向函数来生成经更新的第一共享种子值,所述经更新的第一共享种子值存储在存储器中以替换第一共享种子值。
9.根据权利要求8所述的方法,还包括:
用第一节点中的控制器,使用应用于存储在第一节点的存储器中的第一共享种子值和至少一个索引值的密码安全prng来生成第一多个数据位;
用第一节点中的控制器,基于第一多个数据位,并且通过使用第一节点中的收发器接收第二节点和第三节点的发射来识别第二多个数据位的逻辑补码的第一多个数据位的一部分,以识别第一共享秘密数据;
用第一节点中的控制器,使用应用于第一共享秘密数据的密码安全单向函数来生成第二共享种子值,所述第二共享种子值存储在存储器中;以及
用第一节点中的控制器,使用应用于第一共享种子值的密码安全单向函数来生成经更新的第一共享种子值,所述经更新的第一共享种子值存储在第一节点的存储器中以替换第一共享种子值。
10.根据权利要求9所述的方法,还包括:
用第一节点中的控制器,使用应用于第一共享秘密数据的密钥生成函数来生成第一节点的存储器中的第一共享秘密密码密钥;以及
用第二节点中的控制器,使用应用于第一共享秘密数据的密钥生成函数来生成第二节点的存储器中的第一共享秘密密码密钥。
11.根据权利要求10所述的方法,还包括:
用第二节点中的控制器,使用应用于第二共享种子值的密钥生成函数来生成第二共享秘密密码密钥,所述第二共享秘密密码密钥存储在存储器中以替换第一共享秘密密码密钥;以及
用第二节点中的控制器,使用应用于第二共享种子值的密码安全单向函数来生成经更新的第二共享种子值,所述经更新的第二共享种子值存储在第二节点的存储器中以替换第二共享种子值。
12.根据权利要求10所述的方法,还包括:
用第二节点中的控制器,使用应用于第二共享种子值和至少一个索引值的密码安全prng来生成第三多个数据位;
用第二节点中的控制器和收发器,与来自连接到共享通信介质的第三节点并由第二节点中的收发器接收的第四多个数据位的发射同时地,通过共享通信介质来发射第三多个数据位中的每个位;
用第二节点中的控制器,使用第三多个数据位的一部分来识别与第三节点的第二共享秘密数据,所述第三多个数据位是由第二节点和第三节点同时发射的第四多个数据位的逻辑补码;
用第二节点中的控制器,使用应用于第二共享秘密数据的密钥生成函数来生成第二节点的存储器中的第二共享秘密密码密钥,所述第二共享秘密密码密钥替换第二节点的存储器中的第一共享秘密密码密钥;以及
用第二节点中的控制器,使用应用于第二共享秘密数据的密码安全单向函数来生成经更新的第二共享种子值,所述经更新的第二共享种子值存储在第二节点的存储器中。
13.根据权利要求12所述的方法,还包括:
用第三节点中的控制器,使用应用于存储在第三节点的存储器中的节点种子值和至少一个索引值的密码安全prng来生成第四多个数据位;
用第三节点中的控制器,使用第三多个数据位的一部分来识别第二共享秘密数据,所述第三多个数据位是由第二节点和第三节点同时发射的第四多个数据位的逻辑补码;
用第三节点中的控制器,使用应用于第二共享秘密数据的密钥生成函数来生成第三节点的存储器中的第二共享秘密密码密钥,所述第二共享秘密密码密钥替换第三节点的存储器中的第一共享秘密密码密钥;以及
用第三节点中的控制器,使用应用于节点种子值的密码安全单向函数来生成经更新的节点种子值,所述经更新的节点种子值存储在第三节点的存储器中以替换节点种子值。
14.根据权利要求12所述的方法,还包括:
用第一节点中的控制器,使用应用于第二共享种子值和至少一个索引值的密码安全prng来生成第三多个数据位;
用第一节点中的控制器,基于第三多个数据位,并且通过使用第一节点中的收发器接收第二节点和第三节点的发射来识别第四多个数据位的逻辑补码的第三多个数据位的一部分,以识别第二共享秘密数据;
用第一节点中的控制器,使用应用于第二共享秘密数据的密钥生成函数来生成第一节点的存储器中的第二共享秘密密码密钥,所述第二共享秘密密码密钥替换第一节点的存储器中的第一共享秘密密码密钥;以及
用第一节点中的控制器,使用应用于第二共享秘密数据的密码安全单向函数来生成经更新的第二共享种子值,所述经更新的第二共享种子值存储在第一节点的存储器中以替换第二共享种子值。
15.根据权利要求10所述的方法,还包括:
用第三节点中的控制器,使用应用于存储在第三节点的存储器中的第二共享种子值和至少一个索引值的密码安全prng来生成第三多个数据位;
用第三节点中的控制器和收发器,与来自连接到共享通信介质的第四节点并由第三节点中的收发器接收的第四多个数据位的发射同时地,通过共享通信介质发射第三多个数据位中的每个位;
用第三节点中的控制器,使用第三多个数据位的一部分来识别与第四节点的第二共享秘密数据,所述第三多个数据位是由第三节点和第四节点同时发射的第四多个数据位的逻辑补码;
用第三节点中的控制器,使用应用于第二共享秘密数据的密码安全单向函数来生成第三节点的存储器中的第三共享种子值,所述第三共享种子值存储在第三节点的存储器中;以及
用第三节点中的控制器,使用应用于第二共享秘密数据的密钥生成函数来生成第三节点的存储器中的第二共享秘密密码密钥,所述第二共享秘密密码密钥替换第三节点的存储器中的第一共享秘密密码密钥。
16.根据权利要求15所述的方法,还包括:
用第二节点中的控制器,响应于第三节点离开包括第一节点、第二节点、第三节点和第四节点的组,使用应用于经更新的第一共享种子值和至少一个索引值的密码安全prng来生成第五多个数据位;
用第二节点中的控制器和收发器,响应于第三节点离开包括第一节点、第二节点、第三节点和第四节点的组,与来自连接到共享通信介质的第四节点并由第二节点中的收发器接收的第六多个数据位的发射同时地,通过共享通信介质来发射第五多个数据位中的每个位;
用第二节点中的控制器,使用第五多个数据位的一部分来识别与第四节点的第三共享秘密数据,所述第五多个数据位是由第二节点和第四节点同时发射的第六多个数据位的逻辑补码;
用第二节点中的控制器,使用应用于第三共享秘密数据的密码安全单向函数来生成经更新的第二共享种子值,所述经更新的第二共享种子值存储在第二节点的存储器中;以及
用第二节点中的控制器,使用应用于第三共享秘密数据的密钥生成函数来生成第二节点的存储器中的第三共享秘密密码密钥,以实现通过共享通信介质在第一节点、第二节点和第四节点而没有第三节点之间进行加密通信。
17.根据权利要求16所述的方法,还包括:
用第一节点中的控制器,响应于第三节点离开包括第一节点、第二节点、第三节点和第四节点的组,使用密码安全prng基于经更新的第一共享种子值和至少一个索引值来生成第五多个数据位;
用第一节点中的控制器,基于第五多个数据位,并且通过使用第一节点中的收发器接收第二节点和第四节点的发射来识别第六多个数据位的逻辑补码的第五多个数据位的一部分,以识别第三共享秘密数据;
用第一节点中的控制器,使用应用于第三共享秘密数据的密码安全单向函数来生成经更新的第二共享种子值,所述经更新的第二共享种子值存储在第一节点的存储器中;以及
用第一节点中的控制器,使用应用于第三共享秘密数据的密钥生成函数来生成第一节点的存储器中的第三共享秘密密码密钥,以实现通过共享通信介质在第一节点、第二节点和第四节点而没有第三节点之间进行加密通信。
18.根据权利要求8所述的方法,其中所述密码安全单向函数是密码哈希函数。
19.根据权利要求9所述的方法,其中所述密钥生成函数是密码安全prng。
20.根据权利要求8所述的方法,其中第二节点中的收发器通过can总线共享通信介质来发射第一多个数据位中的每个位。
技术总结