技术领域
[0003] 本公开一般涉及在彼此互连的设备之间的通信,特别是通过通信通道接收到的消息的认证的系统和过程。
相关背景技术
[0004] 多个例如通过诸如物联网(IoT)的网络彼此互连的经耦合设备被配置为通过通信通道交换消息。
[0005] 例如,由于加密通信的实现方式,通信通道一般是安全的。
[0006] 然而,欺骗(spoofing)攻击之后,虚假(fraudulent)消息可能会被发送给网络。
[0007] 需要增加彼此互连的设备的网络上的消息交换的安全性。
具体实施方式
[0047] 相似的特征已经在各种附图中由相似的附图标记来指定。具体地,在各个实施例之间公共的结构特征和/或功能特征可以具有相同的附图标记,并且可以设置相同的结构、尺寸和材料性质。
[0048] 为了清楚起见,仅详细图示和描述了对理解本文所描述的实施例有用的操作和元件。具体地,网络部署,诸如物联网的实现方式没有被详细描述。类似地,各种加密算法对于本领域技术人员是已知的并且没有被详细描述。
[0049] 除非另有指示,否则当参考两个连接的元件时,这表示除了导体之外没有任何中间元件的直接连接,并且当参考耦合在一起的两个元件时,这表示这两个元件可以被连接或者它们可以经由一个或多个其他元件被耦合。
[0050] 在以下公开中,除非另有指示,否则当参考诸如术语“前”、“后”、“顶”、“底”、“左”、“右”等之类的绝对位置限定词,或者诸如术语“上方”、“下方”、“更高”、“更低”等之类的相对位置限定词,或者诸如“水平”、“竖直”等之类的取向限定词时,参考图中所示的取向。
[0051] 除非另有说明,否则表述“约”、“大约”、“大致”和“以…的量级”表示在10%内,并且优选在5%内。
[0052] 图1是示出包括彼此通信的电子设备100(DEV1)、电子设备102(DEV2)和电子设备104(DEV3)的系统10的示例的框图。
[0053] 例如,设备100、设备102和设备104是IoT编队的部分。设备100、设备102和设备104例如由通过专用通信通道交换消息、或消息流来彼此通信。
[0054] 在设备100、设备102和设备104之间交换消息,例如,设备100、设备102和设备104被配置为发射包括加密数据的消息。例如,设备100、设备102和设备104被配置为在将数据值作为消息发射到系统的其他设备中的至少一个设备时,对一个或多个数据值应用对称加密算法,诸如,例如,AES(高级标准加密)。例如,其他设备被配置为解密接收到的数据。所发射的消息包括,例如除了加密的数据值之外,还包括前导码。消息的前导码,例如采用字符串的形式,例如在格式UTF‑8(单一代码变换格式‑8位)下。在一些情况下,例如根据规范MQTTQ(消息队列遥测传输),前导码是网络的一个或多个设备可以订阅的主题。
[0055] 消息是,例如,通过通信通道发射的。通信通道例如被配置为传输具有给定前导码的消息,前导码因此允许根据彼此的关系来标识通道。然后,系统10的设备被配置为订阅至少一个或多个通信通道以接收通过它们发射的消息。
[0056] 当系统10外部的设备发起欺骗攻击时,其可能通过通信通道中的一个通道发送虚假消息。
[0057] 根据实施例,设备100被配置为通过第一通道106(通道1)将消息发射到其他设备102和/或设备104。设备102和设备104被配置为仅通过通道106接收消息。换句话说,设备
102和设备104不被配置为通过通道106发射消息。例如,设备102被配置为通过通道108(通道2)将消息发射到设备100和设备104;并且设备104,例如,被配置为通过通道110(通道3)将消息发射到设备100和设备102。
[0058] 图2是示出根据本公开的实施例的系统10的设备100的示例的框图。尽管设备100被画出在图2中,但是设备102和设备104,例如,是与设备100等同的。
[0059] 设备100包括,例如,通过总线204被耦合到电路202的安全电路200(安全元件)。例如,总线204是I2C总线(Inter‑Integrated Circuit集成电路间电路)。
[0060] 设备100,例如,进一步包括接收器和发射器206(接收器/发射器)。接收器和发射器206,例如,被耦合到总线204。例如,接收器和发射器206包括射频天线和通信电路,射频天线诸如例如Wi‑Fi天线、4G或5G天线等,并且通信电路被配置为在接收或发射射频处接口通信以及在总线204上发送或接收数字通信。例如,接收器和发射器206被配置为在本地无线网络上接收和发出消息。在另一示例中,设备100包括彼此不同的发射机电路和接收器电路。
[0061] 安全电路200包括,例如,通过总线214彼此耦合的处理器208(CPU SEC)、存储器210(MEM)和密码电路212(CRYPTO)。作为示例,存储器210是非易失性存储器。作为示例,密码电路212被配置为根据对称加密算法,诸如,例如AES型算法对数据加密和/或解密。
[0062] 电路200包括,例如,耦合到总线214的另一密码电路216(SHA)。例如,电路216被配置为将至少一个不可逆操作应用到数据值。作为示例,电路216被配置为应用散列函数,例如,散列函数SHA‑2(安全散列算法),例如SHA‑256、SHA‑512、SHA‑224、SHA‑384、SHA‑512/256或SHA‑512/224中的一个函数。在另一示例中,电路216被配置为应用MD5型散列函数(消息摘要)。
[0063] 电路200被进一步配置为,例如,生成随机值。例如,处理器208被配置为执行伪随机数生成器代码的指令。例如,执行“标准最小型”算法的指令被存储在存储器210中。在另一示例中,随机值是专用于设备100的物理不可克隆函数(PUF)的值。在另一示例中,电路200包括数字生成电路218(RNG)诸如,例如,TRNG(真随机数生成器)。
[0064] 电路202包括,例如,经由总线226彼此耦合的通用处理器220(CPU)、易失性存储器222(RAM)和非易失性存储器224(NV MEM)。作为示例,易失性存储器222是随机存取存储器,并且非易失性存储器224是闪存类型的存储器。
[0065] 根据实施例,当设备100,例如,通过接收器和发射器206接收消息时,消息被发射到安全电路200。
[0066] 图3示出了根据本公开的实施例的由系统10的设备中的一个设备在通信通道上发射的消息300的结构。
[0067] 例如,消息300分别由设备100、设备102或设备104通过通信通道106、通信通道108或通信通道110发射。
[0068] 消息300包括,例如,未加密(明文)部分302(消息元数据)。例如,部分302包括前导码或其中消息300被发射的通道的名称。例如,部分302是“主题”,诸如MQTT主题。消息300进一步包括加密(加密的)部分304(有效载荷)。例如,部分304包括对应于由发射器发射的至少一段数据的加密数据。
[0069] 根据实施例,消息300进一步包括加密部分306(AUTH.TAG)。例如,部分306包括发射机的认证值。
[0070] 图4示出了根据本公开的实施例的用来生成前导码或通道名称的步骤。
[0071] 例如,系统10的每个设备100、设备102和设备104与唯一标识值(UUID‑“通用唯一标识符”)关联。例如,特定于每个设备100、设备102和设备104的值被存储在对应设备的存储器210中。例如,对于每个设备,关联的唯一标识值在设备的制造期间被生成并且被存储在存储器210中。例如,每个唯一标识值在至少128位上被编码,并且是基于关联设备特有的特性,诸如例如,序列号、诸如消息认证码(MAC)的地址等而生成的。因此,系统10的两个设备具有两个相关联的不同值作为唯一标识值。
[0072] 系统10的每个设备,特别是每个安全电路200,被配置为,通过例如,由电路216将一个或多个不可逆操作应用于唯一标识值来生成其认证值。例如,认证值进一步是基于随机数生成的,随机数是例如,由数字生成电路218、或由处理器202,通过应用伪随机数生成算法而生成的。在另一示例中,认证值是基于PUF值生成的。
[0073] 由于应用于唯一标识值、或应用于唯一标识值和随机值和/或PUF值的操作是不可逆操作,所以不可能从认证值中检索唯一标识值。
[0074] 例如,认证值由步骤400生成(AUTH.TAG=SHA(UUID,RN))。步骤400发生在,例如通过设备100发出消息流之前。例如,周期性地,或在两个消息流的发出之前,新的随机值被生成并且认证值被重新计算。例如,认证值被存储在存储器210中。在另一示例中,认证值被暂时存储在电路200的易失性存储器中。
[0075] 设备在步骤402(TOPIC=SHA(AUTH.TAG))中被进一步配置为基于步骤400计算的认证值生成前导码或通道名称。例如,设备的密码电路212被配置为通过将不可逆操作应用于认证值来生成前导码。作为示例,所使用的不可逆函数是散列函数,诸如SHA256。例如,前导码在消息流之前并且在认证值的生成之后被生成。例如,在消息流的发出之前,所生成的前导码在每个消息的部分300中被指定。由于前导码是从对于认证值的不可逆操作的应用中产生的,所以不能从前导码中检索到。
[0076] 以这样的方式生成的前导码是唯一的并且取决于生成它的设备。因此,系统10的设备生成通信通道,其名称或“主题”是所生成的前导码。系统的其他设备不能够生成相同的前导码。消息可以由系统的其他设备发送或发射,但是这些消息将被,例如,接收器设备忽略。因此,每个消息通道与唯一发射器设备相关联。
[0077] 认证值也在消息流的消息中被发射,但是被加密。例如,认证值在每个所发射的消息的部分304中被指定。
[0078] 步骤400和步骤402中的不可逆操作,例如,对于系统10的每个设备是相同的。
[0079] 图5是示出在来自系统10的另一设备并且通过通信通道的消息的接收处由系统10的设备处理的实现的操作的流程图。例如,发射器设备是设备100并且接收器设备是设备102和/或设备104。至少一个消息然后由设备100通过通信通道106发射。关于图5的流程图应用于通过系统10的接收器设备的每个消息接收,而无论是哪个发射器设备。
[0080] 在步骤500中(加密消息+通道名称),设备100通过通道106发出消息。通道106由在关于图4描述的处理的实现中由设备100生成的“主题”或前导码定义。所发射的消息具有,例如,关于图3描述的结构。具体地,消息包括由电路216在步骤402的实现期间生成的未加密的前导码。消息进一步包括,例如,由密码电路212加密的加密数据值。消息进一步包括加密认证值。认证值,例如,由设备100的密码电路216在步骤400的实现期间生成,然后,例如,由密码电路212加密。
[0081] 例如,接收器设备在步骤502期间接收并且处理消息。步骤502包括,例如,步骤503到步骤507。例如,消息通过接收器和发射器206被接收。消息然后被发射到安全电路200。
[0082] 消息然后在步骤503(解密消息)被发送到密码电路212。电路212然后被配置为对对应于消息300的部分302和部分304的消息的加密部分解密。加密部分包括,例如,加密数据值和认证值。在另一示例中,数据值没有在步骤503的实现中被解密。例如,仅认证值在步骤503中被解密。
[0083] 在步骤503之后,过程继续进行到步骤504(提取AUTH.TAG)的实现,其中发射器设备的解密的认证值从步骤503的解密部分中被提取出。例如,解密的认证值由密码电路212发射到密码电路216。在仅认证值已经在步骤503中被解密的情况下,步骤504是,例如,将解密的值发送到密码电路216。
[0084] 在步骤504之后,过程继续进行到步骤505(单向(AUTH.TAG))的实现,其中由设备100在步骤402进行的不可逆操作被应用到解密的认证值。例如,步骤505由密码电路216执行。在步骤505之后,解密的认证值的应用的结果是,例如,被发射到安全处理器208。
[0085] 在步骤506(通道名称),前导码或“主题”从接收到的消息中被提取出。例如,前导码被发射到安全处理器208。例如,一旦接收到消息,例如,在步骤503之前,步骤506就被执行。在另一示例中,步骤506与连续步骤503到步骤505并行执行。在又另一示例中,步骤506在步骤505之后执行。
[0086] 一旦执行了步骤505和步骤506,过程继续进行到步骤507(相同?),其中结果和前导码被比较。例如,步骤507由处理器208执行。
[0087] 如果不可逆操作对解密的认证值的结果与前导码不同(分支N),则过程以步骤508结束(错误)。例如,在步骤508,信号或错误警告被返回到,例如,电路202。在另一示例中,步骤508包括忽略消息而不生成错误信号。例如,在步骤508,步骤503的加密和/或解密的数据值从电路200中被删除。例如,加密和/或解密的认证值也从电路200中被删除。例如,前导码也从电路200中被删除。
[0088] 当收到的消息的前导码不与由设备100在步骤402的实现中接收到的结果对应时,或当错的加密认证值通过通道106被发射时,步骤508发生。
[0089] 如果,在步骤507,确定不可逆操作应用于解密的认证值的结果与前导码相对应(框507的分支Y输出),过程以步骤509结束(返回解密的消息)。在在步骤503不具有解密认证值的解密数据值被发射到,例如,电路202。例如,解密认证值从电路202中被删除。例如,加密认证值也从电路200中被删除。在数据值没有在步骤503被解密的示例中,步骤507包括在它们被发射到电路202之前对数据值加密。
[0090] 例如,关于图5所描述的过程在由设备发射并且通过通信通道发射的消息流中的每个消息的接收处被执行。在另一示例中,过程仅对于流的一个或多个消息执行,例如,对于流中的第一消息执行。在过程以步骤508的实现结束的情况下,接收器和发射器206,例如,被配置为拒绝或不将流的其他消息发送到电路200。
[0091] 所描述的实施例的优点是它们防止任何欺骗攻击。事实上,系统外的设备不可能从接收到的消息的前导码中推断出认证值。因此,攻击设备不能够在其消息流中提供正确的前导/加密认证值耦合对。
[0092] 所描述的实施例的另一优点是接收到的消息由安全电路处理。因此,如果消息从欺诈设备接收,则虚假数据不被发射到电路202。
[0093] 所描述的实施例的另一优点是认证值仅由安全电路200处理。对于由发射器设备产生前导码,以及在由接收器设备实现步骤502时生成的值,都不是提供给电路200的认证值。
[0094] 所描述的实现模式的另一优点是每个通信通道与唯一发射器设备关联。换句话说,两个不同的设备不可能将消息发出到相同的通道。
[0095] 各种实施例和变体已经被描述。本领域技术人员将理解的是,这些各种实施例和变体的某些特征可以被组合,并且本领域技术人员将想到其它变体。具体地,例如,关于所使用的不可逆操作,在步骤400、步骤402和步骤505的实现中,可能实现多个操作,包括至少一个不可逆操作。类似地,在步骤400执行的至少一个操作可以与在步骤402执行的至少一个操作不同。此外,用来在步骤400生成认证值的至少一个值的类型可以变化。事实上,例如,可能仅从来自PUF的值和/或来自数字生成器的值中生成认证值,不管是否重要(material)。此外,接收器设备解密数据值的时刻可以变化。事实上,它们的解密可以与认证值的解密同时进行,或仅在不可逆操作的应用的结果对应于前导码时进行。
[0096] 最后,基于以上给出的功能指示,所描述的实施例和变体的实际实现在本领域技术人员的能力范围内。特别地,由密码电路212和密码电路216执行的加密算法的类型可以改变。