Sending and receiving messages
Pre-computing message tags and using table lookups for authentication in control networks addresses the trade-off between security and timeliness, enabling efficient and secure message verification.
Patent Information
- Application Number
- JP2024080191
- Authority / Receiving Office
- JP · JP
- Patent Type
- Patents
- Current Assignee / Owner
- Priority Date
- 2018-08-24
- Filing Date
- 2024-05-16
- Publication Date
- 2025-12-23
- Estimated Expiration
- 2039-08-14
AI Technical Summary
Existing communication systems face a trade-off between ensuring message authentication security and timely decision-making, as authenticating messages using traditional methods like digital signatures or Message Authentication Codes (MACs requires significant computational resources, slowing down the verification process.
Pre-computing message tags and using a table lookup for verification, reducing computational intensity by storing known messages and their tags, allowing for rapid authentication through asynchronous key updates.
This approach enables secure and efficient message authentication with reduced latency, ensuring rapid decision-making in control networks by minimizing computational overhead during verification.
Smart Images

Figure 0007791245000001 
Figure 0007791245000002 
Figure 0007791245000003
Abstract
Description
[Technical Field]
[0001] The present disclosure relates to receiving and transmitting messages, and particularly, but not exclusively, to the secure and efficient exchange of messages in control networks that enables secure trusted control. [Background technology]
[0002] Rapid decision-making is paramount for many digital operations implemented in communication networks. For example, autonomous driving requires immediate action based on events, such as detecting an obstacle on the road or responding to a brake pedal press. In smart grid applications, power substations are automated and must take action to prevent power outages. Decisions must be made as quickly as possible to ensure safe operation. To ensure accurate decisions, the source of the decision must be authenticated. Otherwise, an adversary could send false data, leading to inappropriate decisions and potentially dangerous behavior. This is an example of when external access to a communication network is possible, whether via the Internet or a closed, proprietary network that can be penetrated. However, authenticating or verifying the authenticity of data requires additional computation and therefore takes additional time. Therefore, the demand for security of communications may, in some circumstances, conflict with the demand for timeliness of information and / or actions taken in response to that information.
[0003] Message authentication can be based on a digital signature using asymmetric encryption, or on a commonly shared symmetric key known as a Message Authentication Code (MAC) that is used to compute a message tag. In the latter case, the MAC is exchanged along with the message, and the recipient of the message can compute it using the shared key and a shared algorithm used to compute the MAC, such as a block cipher-based Message Authentication Code (CMAC), a hash function-based Message Authentication Code (HMAC), or SipHash. By comparing the received MAC with the computed MAC, the message can be verified as authentic if the received MAC and the computed MAC match. Summary of the Invention [Problem to be solved by the invention]
[0004] In summary, this disclosure reduces the time required to authenticate and verify a message by pre-computing a message tag, such as a MAC, and then replacing the MAC computation when verifying the tag (or during authentication and transmission) with a table lookup that is much less computationally intensive than computing a MAC. This approach requires a set of known messages and works particularly well for small sets of messages, such as a few messages or fewer than five or ten messages. [Means for solving the problem]
[0005] In a first aspect, the message receiving device includes a memory that stores a plurality of messages and a plurality of message tags, a communications interface that receives the message tags without corresponding messages from the message sending device, and a processor. The processor combines each message with an authentication key to generate a respective computational message tag for each message of the plurality of messages. Generating the message tag may include encrypting the message with the authentication key, hashing the message with the authentication key, or applying any suitable MAC algorithm using the authentication key combined with the message, such as as a seed or parameter. The MAC algorithm may be, for example, CMAC, HMAC, or SipHash. The processor further stores each computational message tag in memory. The processor can then verify the received message tag as one of the set by comparing the received message tag with the stored computational message tags and identifying matching message tags.
[0006] The set of messages can be fixedly defined, e.g., a fixed set of control or sensor estimates to be transmitted. Of course, the fixed set can change from time to time. Alternatively, the set of messages can be dynamically defined, i.e., the set of messages can change over time in a predefined way so that a small set of estimates can be predicted when communication occurs, e.g., by querying a common reference value at the sender and the sender. A sufficient condition for the accuracy of the prediction is that the sender and the sender values have at least a common transmitted value and that the tag of the transmitted value can be identified. Examples of such values can be the date, time, clock ticks, and coordinates that are close to each other.
[0007] The authentication key can be calculated using a key derivation function (KDF). The key derivation function can operate on a secret state shared between the message sending device and the receiving device and public information available between the message sending device and the receiving device, or on public information exchanged between the message sending device and the receiving device, such as time data or all or part of an exchanged message, such as a message communicated by the sending device or a response message responded to by the receiving device. The secret state can be a fixed key with a shared secret, a counter, a combination of a fixed key and a counter, or other incrementing key, a final authentication key, or any other secret state that can maintain synchronization between the message sending device and the receiving device. The KDF can be KDF1, HKDF, a password hash function, a linear feedback shift register, a KDF recommended in NIST Special Publication 800-108, or any other suitable KDF.
[0008] The memory may be a general purpose random access memory or a dedicated direct access memory that stores messages / tags at dedicated memory addresses, or may consist of one or more registers dedicated to storing messages and tags for speed of access. The processing speed of comparing subsequent tags may be improved in embodiments where each message tag is stored in a corresponding register and subsequent comparisons with received tags are parallelized using their own threads, circuits, or processors.
[0009] Typically, each tag is stored in memory as a set in association with the corresponding message, allowing a received message to be verified or a message to be identified by searching the memory for the received tag. In the former case, the receiving device can check that the received message and tag match based on a table lookup in memory, while in the latter case, the received tag can be used to identify the message communicated by the sender without receiving the message itself. However, in some embodiments, the message is received with a tag, but the tag is used only to check that it is present in memory, rather than to verify the identity of the set. In these embodiments, the message and tag need not be stored as a set; in fact, it is sufficient to store the tags as a list.
[0010] The message tag itself is received without accompanying the message. In the latter case, the message may be received in encrypted form or may be decrypted for use. Where applicable, the comparison with the message in memory may be implemented using the message in encrypted or decrypted form, and the stored message may be configured accordingly. The message may be encrypted with a nonce, in which case each message tag is calculated over the combination of the nonce and the message. Of course, the message may be received in the clear. It will be understood that in embodiments where the message itself is not transmitted, encryption / decryption is omitted.
[0011] The processor further updates the authentication key in response to a trigger event, e.g., tag verification, and pairs each message with the updated authentication key to update the corresponding message tag, storing the updated message tag in memory, e.g., associated with the corresponding message, or in some cases unassociated. Key updates may occur with each communication or less frequently to reduce the likelihood of attacks. If updates are triggered based on communications, e.g., with each communication or successful verification, the process may be configured to issue a response (authentication) message to the sending device when updating the key, whether in response to tag verification or, more generally, tag reception, to ensure that the authentication keys remain synchronized. For improved security, the response message may include authentication information that, when verified by the message sending device, makes key synchronization between the sending and receiving devices more difficult. In other embodiments, the trigger event may be a specific time date or the passage of a time interval since the last update, in which case the receiving and sending devices have access to common or synchronized time sources, such as a time server or precision clocks.
[0012] The message receiving device may be part of a control system in which the exchange of messages can initiate control execution at the message sending device or the message receiving device, such as initiating a brake action in response to pedal operation or obstacle detection in a vehicle, such as an autonomous vehicle, or controlling a substation and / or local loads in a home in a smart power grid in response to measured consumption in multiple homes. Other example applications include Internet of Things (IoT) control applications, including industrial control systems, such as chemical plant control systems, robotic factories, and nuclear reactors, among others, having components that communicate over public networks. For example, in some embodiments, the response message can include a control command for an actuator device associated with the message sending device, and / or each message originating from the sending device includes a control command for a corresponding actuator device associated with the message receiving device. In some embodiments, each message originating from the message sending device includes sensor information from a corresponding sensor, such as a quantified sensor value or a binary value, associated with the message sending device. The control execution of the receiving device can additionally or alternatively be based on the received sensor value.
[0013] In a second aspect, a message sending device includes a memory storing a set of message tags, the set of message tags including each of a plurality of messages and each of a plurality of message tags; a communications interface for sending the message tags; and a processor. The processor combines each of the plurality of messages with an authentication key to generate a corresponding message tag for each of the plurality of messages, and associates each computational message tag with the corresponding message and stores the associated message tag in the memory. The processor further selects a message to communicate to the message receiving device and retrieves a message tag corresponding to the message from the memory, for example, in response to receiving an instruction to send a particular message, in response to a sensor signal or interrupt, or in response to a computation based on an input signal such as a sensor signal. The processor then causes the communications interface to transmit the retrieved message tag corresponding to the selected message without the selected message.
[0014] To reduce vulnerability to attacks, the processor, in response to a trigger event, updates an authentication key, pairs each message with the updated authentication key, updates a corresponding message tag, and stores each updated corresponding message tag in memory in association with the respective message. In some embodiments, the communication interface receives a response message from the message receiving device, and the trigger event includes transmission by the communication interface of a message acknowledging receipt of the message tag by the message receiving device. The message can include authentication information for verifying the message acknowledging receipt, and the trigger event can include successful verification of the response message.
[0015] It will be understood that a message receiving device may further include components or functions of a message sending device, or vice versa, and thus a message sending / receiving device may be referred to as a message receiving device if it has the function of receiving messages, and as a message sending device if it has the function of sending messages.
[0016] In a third aspect, a control system includes a message receiving device and a message sending device as disclosed above, with one or both of the message sending device and the message receiving device associated with the actuator device to be controlled. In some embodiments, the control system can include multiple sets of message sending devices and receiving devices, each set located at a different location or providing a different function. In such embodiments, the devices in each set can share components, such as one or more of a processor, a communication interface, or memory, and can actually be provided as a single device that includes the functionality of both a message sending device and a message receiving device. More generally, in any of the disclosed aspects, the communication interface can include separate emitter and transmitter components, for example, as separate devices, or can be provided in any suitable form, such as as a single or multiple modules of a device. It will be understood that the described components and component functions can be implemented in any combination of modules, and the present disclosure is not limited to any particular combination or distribution of the described components and functions, which can be implemented in software, hardware, or a combination thereof.
[0017] In a fourth aspect, a method for receiving messages includes combining each of a plurality of messages with an authentication key to generate a computational message tag for each of the plurality of messages, and storing the plurality of messages and the corresponding message tag. The method then includes receiving the message tag from a message sending device without the corresponding message, and verifying the received message tag by comparing the received message tag with the stored computational message tag to identify a matching message tag. The method further includes updating the authentication key in response to a trigger event, combining each message with the updated authentication key to update the corresponding message tag, and storing the updated message tag in memory. In some embodiments, each computational message is stored in memory as a set in association with a corresponding message. As a result, the method can include identifying a message communicated by the sending device without receiving the message by identifying the corresponding message in response to identifying a matching message tag. Similarly, in some embodiments, the authenticity of the message can be verified by further receiving the message and comparing the received set of message and message tag with the stored set.
[0018] The embodiments of the fourth aspect further extend to a method implemented by a message receiving device as disclosed above, and the fifth aspect of the present disclosure extends to a method implemented by a message sending device as disclosed above, with embodiments of the fifth aspect corresponding to methods implemented by embodiments of the disclosed message sending device. The sixth aspect extends to a method implemented by a control system of the third aspect as disclosed above, with corresponding embodiments corresponding to methods implemented by embodiments of the control system.
[0019] It should be noted that all aspects combine a table lookup to verify message tags with periodic updates of stored message tags with updated keys to reduce vulnerability to attacks. In some embodiments of the disclosed aspects, the updating of keys and stored message tags occurs asynchronously, i.e., at a different time than the verification of message tags and the execution of any decisions or controls based on received messages. In this way, the reaction time of the system is limited only by the (fast) lookup of message tags for verification, and not by the (potentially slow) key updates and stored tag updates. [Brief explanation of the drawings]
[0020] [Figure 1] FIG. 1 shows a communication device. [Figure 2] Figure 2 shows the data structure. [Figure 3] Figure 3 shows the hardware implementation of the data structure. [Figure 4] Figure 4 shows a distributed control system. [Figure 5] Figure 5 shows the module that authenticates the message. [Figure 6] Figure 6 shows the module that verifies authentication. [Figure 7] FIG. 7 shows a method for sending a message tag that authenticates the message. [Figure 8] FIG. 8 illustrates how a message tag is received, validated, and executed. [Figure 9] FIG. 9 shows a computing device. DETAILED DESCRIPTION OF THE INVENTION
[0021] [Detailed description of the drawings] By way of example, some specific embodiments will be described with reference to the accompanying drawings to illustrate aspects of the present disclosure. According to FIG. 1 , a message transmitting and receiving device 100 includes a memory, such as solid-state memory, flash memory, a hard drive, volatile memory, RAM, or other memory suitable for storing data; a processor 120, such as a CPU, a microprocessor, or a set of microprocessors, with or without coprocessors and hardware accelerator circuits; a communication interface 130 capable of transmitting and receiving data, such as messages and message tags; and a system interface 140, which interfaces with system components to be controlled in response to received data or messages processed by the processor 120. In some embodiments where the device 100 lacks control functionality, the system interface 140 is not present. In some embodiments, the system interface 140 receives sensor data from other system components, and the processor 120 generates or selects messages to transmit based on the sensor data. In some embodiments, the system interface both transmits control data and receives sensor data. The described components communicate with each other via a data bus 150.
[0022] In some embodiments, when device 100 only transmits or only receives messages, communication interface 130 may be only a receiver or only a transmitter, but even in such embodiments, authentication messages may be sent and received, and a bidirectional communication interface is still required. A communication interface may be referred to as a receiver when receiving and as a transmitter when sending, and the receiver may be one and the same component, or the transmitter and receiver may be implemented in separate components to form the communication interface.
[0023] 2, data structure 200 is stored in memory 110 and comprises a set 210 of messages 220 and a message tag 230 corresponding to each message, such as a MAC calculated for each message 220. Messages 220 and message tags 230 are stored as a set, allowing messages to be retrieved from the data structure by table lookup of message tag 230 as a key for message 220, and vice versa. Messages 220 are a set of possible messages that device 100 may send or receive, and data structure 200 may be of a fixed size.
[0024] The set of messages can be fixed and correspond, for example, to a set of transmitted control commands or sensor values. Alternatively, the set of messages can change over time in a predictable manner, and both the sender and receiver can share a set of messages 220 and message tags 230 and derive the set using a common reference, such as a common time reference. A particular example relates to clock signals in a GPS system, where GPS signals are transmitted using messages 220 and message tags 230.
[0025] In one particular embodiment, memory structure 200 is not implemented as a general-purpose memory, but rather as specialized hardware, such as an array of one register 310 for each message tag 230 and one register 320 for each received message tag. Each pair of registers 310, 320 is linked by an AND gate 330 to generate a logical TRUE value output for the pair of registers for which there is a match between the received message tag and the stored message tag 230. The register corresponding to each register 310 is stored with the corresponding message, allowing parallel identification of the corresponding message based on the output 340 of AND gate 330. Similarly, circuitry may be arranged to perform an AND operation on the pair of stored message 220 and the received message, or on each pair of stored pair 210 and the received message and message tag.
[0026] According to FIG. 4 , the distributed control system includes multiple communication devices 100 connected to each of the other system components, such as actuators 410, that are controlled in response to messages received by sensors 420 and generate data based on the messages they transmit to control the remote actuators 410 by transmitting sensor data or control commands based on the sensor data. In some examples, a communication device 100 can be connected to both the actuators 415 and sensors 425 in a single device or via a local connection, transmit sensor data, and receive control commands from a remote controller 430. The remote controller 430 is coupled to the device 100 and receives the sensor data and transmits control commands back. The actuators 410, 415, sensors 420, 425, and controller 430 communicate over a communication network 440, such as the Internet, via their respective devices 100. While FIG. 4 illustrates a control system with one of each type of device 410, 415, 425, 430, it will be understood that the present disclosure is not limited to a particular number of devices, or indeed to all types of devices.
[0027] 5, the operation of device 100 as a sending device is described in terms of functional modules, particularly with respect to the generation and use of message tags. It will be understood that the functional modules may be distributed among multiple components of device 100 in any suitable manner. As described above, data structure 200 stores a set 210 of messages 220 and message tags 230. Message tags 230 for messages 220, i.e., x, in message set {x i} are pre-computed by combining each x i with a current authentication key K j to generate message tag 230, e.g., MAC_K j (x i ), using any of the MAC algorithms described above. It will be understood that message tag 230 may be computed using any suitable algorithm that combines x i and K j to provide a tag that can be used to authenticate and / or identify x i. The current K j is internally secret and is computed by a KDF 510 derived from or combined with publicly available estimated update data to generate an updated K j+1 in response to a trigger event. The triggering event may include one or more of the following: the passage of a certain amount of time since the last update of Kj, a timestamp or date, the sending of a message, the receipt of authentication of a message received by a recipient, or the authentication of an authentication message. For example, any suitable KDF, such as those described above, may be used.
[0028] The pre-computation module 520 receives {xi} and Kj and calculates multiple pairs {xi, Mac_Kj(xi)}, which are stored in a database 530, for example, in memory 110, according to the data structure 200. It will be appreciated that in any embodiment where an association between a message 220 and a message tag 230 is not required, for example, because verification of the tag with any one of a set of tags is sufficient, the tag and message can be stored separately and unassociated with each other rather than as multiple pairs. The authentication module 540 receives a message x (or an index or indication of the message) to be sent, accesses the database 530 to retrieve MAC_Kj(x), and passes the pair x, MAC_Kj(x) to the communication interface for transmission. In some embodiments, only MAC_Kj(x) may be passed to the communication interface for transmission. In some embodiments, MAC_Kj(x) may be passed to the KDF 510 as update data, allowing Kj to be updated in response to a trigger event. Any suitable MAC or other algorithm may be used to compute a message tag 230, such as MAC_Kj, from a message 220, such as x, and Kj, for example as described above.
[0029] 6 describes the operation of device 100 as a receiving device in terms of functional modules, particularly with respect to verifying message tags. Modules 510, 520, and 530 may be the same or separate instances of the same module, as described above with respect to FIG. 5, where a triggering event may initiate an update of K, which may include one or more of: a certain amount of time having passed since the last update of K, a timestamp or date, receipt of a message, sending an authentication of the received message, verification of the received MAC_Kj(x), or verification of the received pair x, MAC_Kj(x). It will be understood that some of the initiations are overlapping, i.e., verification of the authenticity of x, MAC_Kj(x), at least implicitly includes verification of MAX_Kj(x), and both at least implicitly include receiving x, MAC_Kj(x) in the first place. In other words, the triggering event "x, verifying MAC_Kj(x)" includes the triggering event "verifying MAC_Kj(x)", but the triggering event "x, receiving MAC_Kj(x)" does not necessarily include these verifications.
[0030] Next, in contrast to the transmitting device (or device 100 in transmit mode) described above with reference to Figure 5, the receiving device (or device 100 in receive mode) is described with reference to Figure 6 and comprises a verification module 610 instead of the authentication module 540. The verification module 610 receives x, MAC_Kj(x), and performs one of the following functions a) to d): a) look up MAC_Kj(x) in the database 530, and if present, search for x and compare it with the received x, thereby authenticating x if they match; b) look up x in the database 530, and if present, search for MAC_Kj(x) and compare it with the received MAC_Kj(x), thereby verifying the authenticity of x if they match; c) look up the received x, MAC_Kj(x) in the database 530 and find a match, thereby verifying the authenticity of x; d) look up MAC_Kj(x) in the database and verify the received MAC_Kj(x) as one of the valid MAC_Kj(x), thereby providing a less formal authentication. Note that all four operations verify MAC_Kj(x) to some extent. The latter case is useful in embodiments where only MAC_Kj(x) is transmitted and received, and not x. In such embodiments, a match in MAC_Kj(x) is used to look up x from database 530. In any event, if MAC_Kj(x) is verified, and thus x is verified or identified and retrieved, at least to some extent, then x may be passed to other components in device 100, such as system interface 140, to trigger the execution of a control in a system associated with device 100, such as braking a vehicle or reducing or shutting down power consumption in a home.
[0031] In a connected system of two or more devices 100 (or one or more sending devices and one or more receiving devices), Kj is shared among the devices but must be kept secret among the devices, and the resulting set of tuples {xi, Mac_Kj(xi)} (tuples 210 of messages 220 and message tags 230 in data structure 200) must be kept synchronized among the devices to the extent that Kj is synchronized when messages need to be exchanged, but may be unsynchronized among the devices at other times. This allows the calculation and storage of the tuples to be performed asynchronously, separate from the validation and later execution of received message tags 230, so that the synchronization and updating of the tuples does not interfere with the rapid execution of received messages.
[0032] Referring to FIG. 7 , a method for a sender to send a message, e.g., using the devices and / or modules described above, includes calculating and storing 710 message tags 230 for a set of messages 220, e.g., in database 530 having data structure 200. In some embodiments, messages 220 and tags 230 are stored in association with one another as a set 210. Message tags 230 are calculated by combining each message 220 with an authentication key, such as Kj, to generate a corresponding tag 230. Typically, the authentication key is a single key value that is combined with each message 220. In some embodiments, the authentication key includes, e.g., a set of key values, one for each message 220, and combining messages 220 with the authentication key includes combining each message 220 with the key value of each of the authentication keys. The keys and messages 220 can be combined in any suitable manner, e.g., using a cryptographic operation, or more specifically, using a MAC algorithm as described above. In embodiments where the device sending the message cooperates with one or more other devices with which it is communicating, step 710 may be performed in advance, for example, during a device setup or boot routine. In any event, the communicating devices may share an authentication key as a secret and configure corresponding sets 210 of messages 220 and message tags 230 to be stored until such time as communication between the devices is required.
[0033] In step 720, if a message 220 is to be transmitted, the message is selected based on, for example, sensor input associated with a corresponding set of discrete messages, each associated with a sensor output value or set of values, or in other embodiments, based on operator input. The corresponding message tag 230 is retrieved from memory and prepared for transmission. In step 730, the message tag 230 is transmitted to the receiving device. In some embodiments, the message 220 is transmitted with the message tag so that its authenticity can be verified by the receiver; in other embodiments, the message 220 is not transmitted, and the receiver can recover the received message tag 230 from the stored set 210 associating messages 220 with message tags 230.
[0034] Then, in step 740, an authentication message is received confirming that the transmitted message tag 230 has been received and, in some embodiments, verified. The authentication message may, in some embodiments, include information that allows for authenticating the authentication message, such as a digital signature or MAC. Authentication of the authentication (or other response) message can be performed asynchronously without impacting the time-critical transmission / verification and execution steps, so it is not essential that the authentication be particularly fast, allowing for the use of conventional authentication methods. However, in some embodiments, the authentication message is part of the message data structure 200 and is processed by the sender, which uses the disclosed techniques to process the message quickly, effectively acting as a receiver as disclosed above and implementing the receiving method described below, typically omitting the authentication response step of the authentication.
[0035] 8, for example, a method for receiving messages using the devices and / or modules described above includes step 810 of calculating and storing message tags 230 for a set of messages 220, for example, in database 530 having data structure 200. Step 810 is identical to step 710, but is performed by a receiving device in communication with a sender implementing step 710, receiving message tags 230 from the sender. In step 820, the message tags 230 sent in step 730 described above are received, in some embodiments, along with the corresponding messages 220. In step 830, the message tags 230 are verified, for example, by a table lookup as described above. If the message tag is successfully verified, the corresponding message 230, if received, is deemed to be authentic; if not, the message 230 is identified in data structure 220 as described above in step 840. Steps 830 and 840 may be combined, for example, the received message 220 may be used in a table lookup, the tag 230 searched and compared with the received tag 230, or the set 210 of message 220 and tag 230 may be indexed.
[0036] If a message 220 intended for communication by the sender has been identified, or if a received message 220 has been verified, then action is taken based on the message 220 in step 850. In some embodiments, the message 220 includes control instructions for an actuator associated with the recipient, and the control instructions are processed in response to step 840 to cause the actuator to carry out the instructions, for example, by sending an actuator command via the system interface 140. In some embodiments, the message 220 includes a sensor signal indicative of a sensor reading at the sender, and the sensor reading is processed to determine an action instruction to take in response to the sensor reading, and then the actuator is caused to carry out the instruction, for example, as described above.
[0037] In step 860, in some embodiments, after the command is sent to the actuator or after the command is executed, a response message, such as an authentication message, is sent back to the sender of the message tag 230. This has the advantage that the corresponding execution can occur without delay. In some embodiments, the response message is sent directly after the received message tag 230 is verified. Additionally, the authentication key is updated in step 860 as described above, for example, by step 750 shown in FIG. 7. The key update can occur, for example, between the completion of the command execution and the sending of the response message, or after the sending of the response message.
[0038] After both steps 750 and 860 are completed, and thus both the receiver and sender have new shared and private authentication keys, each step returns to updating the set 210 of messages 220 and message tags 230 in data structure 200, for example, in database 530, for a new cycle of sending and receiving messages (steps 710 and 810, respectively). Thus, the steps combine rapid verification and / or identification of the authenticity of exchanged messages based on table lookups, and in some embodiments, slower key update steps, data structure updates, and authentication steps can be used without compromising the rapid verification or identification of messages and execution, or other synchronization steps.
[0039] While a particular hardware implementation of device 100 has been disclosed above, it will be understood that many other implementations are possible, including other specialized computing devices and circuitry, as well as general-purpose computing devices, according to alternative embodiments. FIG. 9 illustrates a block diagram of one implementation of a computing device 900 capable of executing a set of instructions to cause the computing device to perform any one or more of the methodologies described herein. In alternative implementations, the computing device may be connected (e.g., networked) to other devices in a local area network (LAN), an intranet, an extranet, or the Internet. The computing device may operate in the role of a server device or a client device in a client-server network environment, or in the role of a peer device in a peer-to-peer (or distributed) network environment. The computing device may be a personal computer (PC), a tablet computer, a set-top box (STB), a personal digital assistant (PDA), a mobile phone, a web appliance, a server, a network router, a switch, or a bridge, or any device capable of executing a set of instructions (e.g., sequential) that specify an execution to be performed by the device. Furthermore, although only a single computing device is depicted, the term "computing device" should also be taken to include a collection of machines (e.g., a computer) that individually or collectively execute a set of instructions (or a plurality of instructions) to perform any one or more of the methodologies described herein.
[0040] The exemplary computing device 900 includes a processing unit 902, a main memory 904 (such as read-only memory (ROM), flash memory, dynamic random access memory (DRAM) such as synchronous dynamic random access memory (SDRAM) or Rambus dynamic random access memory (RDRAM)), a static memory 906 (such as flash memory, static random access memory (SRAM)), and a secondary memory (e.g., data storage device 918), which communicate with each other via a bus 930.
[0041] Processing unit 902 may be one or more general-purpose processors, such as a microprocessor, a central processing unit (CPU), or the like. More specifically, processing unit 902 may be a Complex Instruction Set Computing (CISC) microprocessor, a Reduced Instruction Set Computing (RISC) microprocessor, a Very Long Instruction Word (VLIW) microprocessor, a processor implementing another instruction set, or a processor implementing a combination of instruction sets. Processing unit 902 may also be one or more special-purpose processing units, such as an application specific integrated circuit (ASIC), a field programmable gate array (FPGA), a digital signal processor (DSP), a network processor, or the like. Processing unit 902 executes processing logic (instructions 922) to perform the operations or steps described herein.
[0042] Computing device 900 may further include a network interface device 908. Computing device 900 may also include a video display device 910 (such as a liquid crystal display (LCD) or a cathode ray tube (CRT)), an alphanumeric input device 912 (e.g., a keyboard or touch screen), a cursor control device 914 (e.g., a mouse or touch screen), and an audio device 916 (e.g., a speaker).
[0043] Data storage device 918 may include one or more machine-readable storage media (more specifically, one or more computer-readable non-transitory storage media) 928 having stored thereon a set of one or more instructions 922 that embody any one or more of the methodologies or functions described herein. Additionally, instructions 922 may reside, completely or at least partially, within primary memory 904 and / or processing unit 902 during execution by computer system 900, with primary memory 904 and processing unit 902 further constituting computer-readable storage media.
[0044] The various methods described above can be implemented by a computer program. The computer program can include computer code configured to instruct a computer to perform one or more functions of the various methods described above. The computer program and / or code for performing the methods can be provided to a device such as a computer on one or more computer-readable media, or more generally, in a computer program product. The computer-readable media can be transitory or non-transitory. The one or more computer-readable media can be, for example, electronic, magnetic, optical, electromagnetic, infrared, or semiconductor systems, or propagation media for data transmission, for example, downloading code via the Internet. Alternatively, the one or more computer-readable media can take the form of one or more physical computer-readable media, such as semiconductor or solid-state memory, magnetic tape, removable computer diskettes, random access memory (RAM), read-only memory (ROM), rigid magnetic disks, and optical discs such as CD-ROMs, CD-R / Ws, DVDs, etc.
[0045] The modules, components, and other functions described herein may be implemented as discrete components or integrated into the functionality of hardware components such as ASICS, FPGAs, DSPs, or other devices.
[0046] A "hardware component" is a tangible (e.g., non-transient) physical component (e.g., a collection of one or more processors) that can perform specific operations and can be configured or arranged in a specific physical way. A hardware component may include dedicated circuitry or logic that permanently performs specific operations. A hardware component may be or include a special-purpose processor, such as a Field Programmable Gate Array (FPGA) or an Application Specific Integrated Circuit (ASIC). Additionally, a hardware component may include programmable logic or circuitry that is temporarily configured by software to perform specific operations.
[0047] Thus, the term "hardware component" should be understood to encompass tangible entities that are physically constructed and permanently configured (e.g., wired) or temporarily configured (e.g., programmed) to operate in a particular manner and perform particular operations as described herein.
[0048] Furthermore, the modules and components may be implemented as firmware or functional circuits within a hardware device. Furthermore, the modules and components may be implemented as any combination of hardware devices and software components, or may be implemented solely in software (e.g., code stored or embodied in a machine-readable medium or transmission medium).
[0049] Unless otherwise indicated, and as will become apparent from the following description, it will be understood that in this specification discussions using terms such as "receiving," "sending," "determining," "comparing," "enabling," "maintaining," "identifying," "combining," "storing," "transmitting," "validating," "updating," "authenticating," "causing," "actioning," "retrieving," and the like refer to computer system or similar electronic operations and processes that manipulate and convert data represented as physical (electronic) quantities within the registers or memory of the computer system into other data similarly represented as physical quantities within the memory or registers of the computer system or other information storage, transmission, or display device.
[0050] It should be understood that the foregoing description is illustrative, and not restrictive. Many other implementations will become apparent to those skilled in the art upon reading and understanding the above description. While the present disclosure has been described in terms of particular implementations, it will be recognized that the disclosure is not limited to the described implementations, but can be practiced with modification and alteration within the spirit and scope of the appended claims. Accordingly, the specification and drawings should be regarded in an illustrative, rather than a restrictive, sense. The scope of the present disclosure should, therefore, be determined by the appended claims, along with the full range of equivalents to which such claims are entitled.
Claims
1. a memory for storing a plurality of messages and a plurality of message tags, in which a message and a message tag corresponding to the message are stored in association with each other as a set; a communication interface for receiving a message tag without a corresponding message from a message sending device; combining each message of the plurality of messages with an authentication key to generate a respective computational message tag for each message of the plurality of messages; storing each of said computational message tags in said memory; verifying the received message tag by comparing the received message tag with the stored computational message tag to identify a matching message tag; identifying the message intended for communication communicated by the message sending device without receiving the message by associating and storing in said memory a set of each computational message tag and a corresponding message, and identifying the corresponding message in response to identifying the matching message tag; updating the authentication key in response to a trigger event; combining each message of the plurality of messages with the updated authentication key to update the computational message tag; storing the updated computational message tag in the memory; Processor and Equipped with The trigger event includes at least one of a timestamp and the passage of a certain period of time since the last update of the authentication key.
2. The trigger event includes verifying the message tag.
10. The apparatus of claim 1.
3. the communication interface transmits a message to the message transmitting device; The processor causes the communication interface to transmit a response message to the message sending device in response to verifying the message tag.
3. The device according to claim 1 or 2.
4. The response message includes information that enables the message sending device to authenticate the response message.
4. The apparatus of claim 3.
5. each message including a corresponding control command for an actuator device associated with the message receiving device; the processor causes the control instructions to be executed by the actuator device; or, each message includes a sensor signal of a sensor associated with said message sending device; The processor processes the sensor signals to determine control commands for the actuator device and causes the control commands to be executed by the actuator device. An apparatus according to any one of claims 1 to 4.
6. The processor performs the combining, the updating, and the transmitting subsequent to causing the actuator device to execute the control command.
10. The device according to claim 5, which relies on claim 3, or claim 5, which relies on claim 4.
7. a memory storing a set of a plurality of message tags, the set of the plurality of message tags including each message of a plurality of messages and each message tag of a plurality of message tags; a communication interface for transmitting message tags; combining each message of the plurality of messages with an authentication key to generate a respective computational message tag for each message of the plurality of messages; Associating each computational message tag with a corresponding message and storing them in said memory as respective message tag pairs; Select a message to be sent to the message receiver, retrieving the message tag corresponding to the message from the memory; causing the retrieved message tag corresponding to the selected message to be transmitted to the communication interface without the selected message; updating the authentication key in response to a trigger event; combining each message with the updated authentication key to update the computational message tag; storing each updated computational message tag in association with a respective message in said memory; Processor and Equipped with The trigger event includes at least one of a timestamp and the passage of a certain period of time since the last update of the authentication key.
8. The processor causes the communication interface to transmit a message tag corresponding to the selected message without transmitting the selected message.
8. The apparatus of claim 7.
9. the communication interface receives a response message from the message receiving device; The trigger event includes receipt by the communication interface of a message acknowledging receipt of the message tag by the message receiving device.
9. Apparatus according to claim 7 or 8.
10. 1. A method for identifying a message, comprising: combining each of a plurality of messages with an authentication key to generate a computational message tag for each of the plurality of messages; storing the plurality of messages and a plurality of the computational message tags; receiving a message tag without a corresponding message from a message sending device; validating the message tag by comparing the received message tag with the stored computational message tags to identify matching message tags; identifying messages intended for communication communicated by said message sending device without receiving said messages by associating and storing in memory a set of each computational message tag and a corresponding message, and identifying said corresponding message in response to identifying said matching message tag; updating the authentication key in response to a trigger event; combining each message with the updated authentication key to update each of the computational message tags; storing the updated computational message tag in the memory; Including, The trigger event includes at least one of a timestamp and the lapse of a certain period of time since the last update of the authentication key. method.
11. The trigger event includes verifying the message tag. The method of claim 10.
Citation Information
Patent Citations
Short message sending method and device and short message verifying method and device
CN108174360A
Electronic signature high-speed forming method and apparatus by pre-calculation
JP2004253950A
Display device, display control method, and program
JP2018055483A
Fast CAN message authentication for vehicular systems
US9705678B1
On-vehicle network system, fraud-detection electronic control unit, and method for tackling fraud
WO2015170453A1