Chain message authentication code

By employing the AES-GCM standardized encryption function between peripheral devices and host devices, and combining diverse constants and non-shared subsets of authentication tags to generate IVs, the problems of inconsistency between authentication and encryption and side-channel attacks are solved, achieving secure and efficient authenticated and encrypted communication.

CN121569296APending Publication Date: 2026-02-24HEWLETT PACKARD DEVELOPMENT COMPANY LP
View PDF 0 Cites 0 Cited by

Patent Information

Application Number
CN202380100730.6
Authority / Receiving Office
CN · China
Patent Type
Applications(China)
Current Assignee / Owner
Filing Date
2023-07-31
Publication Date
2026-02-24

AI Technical Summary

Technical Problem

Existing technologies suffer from problems such as inconsistent authentication and encryption, difficulty in meeting IV uniqueness requirements, and vulnerability to side-channel attacks in authentication and encrypted communication between peripheral devices and host devices.

Method used

The AES-GCM standardized encryption function is adopted. The IV is calculated by concatenating or combining pre-configured diverse constant values ​​and deterministic values. A unique IV is generated by combining the non-shared subset of the authentication tag. During the encryption process, the authentication tag is divided into shared and non-shared subsets for transmission, avoiding the sending of the IV and the exposure of the deterministic value.

Benefits of technology

It achieves authenticated encrypted communication compliant with the AES-GCM standard, improving security and resistance to side-channel attacks, simplifying the development process, reducing the need for proprietary cryptographic algorithms, and enhancing interoperability and communication efficiency.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure CN121569296A_ABST
    Figure CN121569296A_ABST
Patent Text Reader

Abstract

Systems and methods for authentication encryption and authentication decryption operations for authentication encrypted communication between a host device and a peripheral device are disclosed herein. A transmitting device performs an authentication encryption operation that applies a symmetric encryption algorithm to a plaintext to encrypt data and generate an authentication tag or message authentication code ("MAC"). The transmitting device transmits the ciphertext and the shared subset of the tag to the receiving device, and stores the non-shared subset of the tag in a cache. The receiving device performs an authentication decryption operation that verifies the tag and decrypts the ciphertext to recover the data by applying an efficient inverse operation of a symmetric encryption algorithm (or decryption algorithm) and using known parameters.
Need to check novelty before this filing date? Find Prior Art

Description

Background Technology

[0001] When peripheral devices connect or communicate with host devices via a communication bus, the peripheral and host devices typically perform various handshake protocols or operations. As an example, two-dimensional (2D) and three-dimensional (3D) printing systems include multiple replaceable printing device components (sometimes referred to as "consumables"), such as inkjet printhead assemblies and printing material containers (e.g., inkjet cartridges, toner cartridges, ink supplies, build material supplies, etc.), where the printer is the host device and the replaceable printing devices are peripheral devices. In this example, the components of the replaceable printing devices include logic circuitry for communicating with the logic circuitry of the printing device. For example, information transmitted by the consumable components may include identity (e.g., serial numbers and / or branding), identifying characteristics (e.g., colors, color mapping, and color mapping reconstruction), and operational information (e.g., printing material levels and operating pressures).

[0002] In many cases, host devices and peripheral devices transmit such information during a preamble handshake or during ongoing inter-device communication for authentication or verification operations performed by these devices. For example, a host device may perform verification functions to verify whether a peripheral device is compatible with, licensed, or otherwise intended to function with the host device. These verification functions may include, for example, applying encryption algorithms and encryption keys to information or input generated by or exchanged between these devices. Typically, one or more devices must successfully perform the authentication or verification operation to initiate or maintain interoperability between the host device and the peripheral device. Attached Figure Description

[0003] This disclosure can be better understood by referring to the following figures. The components in the figures are not necessarily drawn to scale; rather, the focus is on illustrating the principles of this disclosure. Throughout the figures, reference numerals indicate corresponding parts.

[0004] Figure 1 Components of an example system, including a host device coupled to a peripheral device, are shown according to an example embodiment.

[0005] Figure 2 Components of an example system, including a printer device coupled to a replaceable device, are shown according to an example embodiment.

[0006] Figure 3 The operation of a method for performing authenticated encrypted communication between a host device and a peripheral device via a data communication bus, according to an embodiment, is illustrated.

[0007] Figure 4 The operation of a method for performing authenticated encrypted communication between a host device and a peripheral device via a data communication bus, according to an embodiment, is illustrated.

[0008] Figure 5 The operation of a method for a host device to verify or authenticate a peripheral device during a communication session established via a communication bus, according to an embodiment, is illustrated.

[0009] Figure 6 The operation of a method for a peripheral device to verify or authenticate a host device during a communication session established via a communication bus, according to an embodiment, is illustrated. Detailed Implementation

[0010] Reference will now be made to the illustrative embodiments shown in the accompanying drawings, and these embodiments will be described herein using specific language. However, it should be understood that this is not intended to limit the scope of the invention. Changes and further modifications to the inventive features shown herein, as well as additional applications of the principles of the invention shown herein, as would be apparent to those skilled in the art and holding this disclosure, are all to be considered within the scope of the invention.

[0011] Peripheral devices include consumable devices or external (e.g., plug-and-play) devices that are coupled to a host device and perform certain functions according to commands from the host device. Non-limiting examples of peripheral devices include replaceable printer devices that contain consumable resources (e.g., ink, toner, printhead), other high-precision fluid dispensing / propulsion / sensing devices including on-chip labs, and external I / O devices (e.g., mouse, monitor, keyboard, external hard drive). These peripheral devices are coupled to and communicate with a host device, such as a printer or personal computer, in sequence of commands and responses.

[0012] Host devices (e.g., printers) and peripheral devices (e.g., replaceable printer components) should communicate encrypted and authenticate, verify, or otherwise verify each other. Advantageously, peripheral devices should be able to support authenticated and encrypted communication with the host device, whereby the peripheral device provides verifiable proof of its authenticity, and where encrypted data is transmitted confidentially. Furthermore, the encryption and authentication processes should provide cryptographic efficiency, communication efficiency, and ensure the integrity of command-response communication sequences between devices.

[0013] In common examples, to ensure the quality and compatibility of replaceable printing devices (e.g., print cartridges) and thus the correct operation of the printing system, the printing device may perform a verification process to verify that the replaceable printing device originates from an authorized source. For example, a printing device command (a "read" request) may request identification and / or authentication information to verify the replaceable printing device, which may cause the replaceable printing device to load such information into a memory buffer and subsequently transmit it serially via a data bus. In some cases, to perform such verification, the communication between the printing device and the replaceable printing device may be cryptographically authenticated.

[0014] Existing methods for authentication and encrypted communication between peripheral devices and host devices may have one or more problems. The authentication and encryption employed in existing solutions are inconsistent, resulting in variations in deployment or implementation across communication channels, or between commands and responses. For example, sometimes authentication is provided only for a specific channel, or sometimes authentication plus partial (rather than full) encryption is provided for responses from the peripheral device to the host device. In some existing solutions, devices may use different cryptographic primitives to implement authentication (e.g., AES-CMAC) and encryption (e.g., AES-CBC). Some existing methods use different encryption keys to implement cryptographic authentication and encryption algorithms. Another problem is that some companies require devices to apply proprietary cryptographic schemes when implementing authenticated encrypted communication.

[0015] A possible solution would be to configure the host and peripheral devices to apply a standardized encryption function called Advanced Encryption Standard (AES) based on a standardized implementation called Galois-Counter Mode (GCM). The standardized AES-GCM scheme, or primitive, is described in NIST SP800-38D (“Recommendations for Block Cipher Modes of Operation: Galois / Counter Mode (GCM) and GMAC”). The AES-GCM standard should provide authenticated encrypted communication, thus providing confidentiality, authentication, and integrity.

[0016] However, the problem is that the AES-GCM standard requires that when one of these devices calls an encryption function, the device needs to compute a unique initialization vector (IV) for each instance. Ideally, the device should not need to send the IV along with the command or response data. Furthermore, the process used for authenticating encrypted communication should remain resistant to side-channel attacks. A method is needed to implement authenticated encrypted communication that optimally satisfies the IV uniqueness requirement of the AES-GCM standard without sending IVs between devices and without exposing the devices to side-channel attacks.

[0017] The embodiments described herein address this requirement for IV uniqueness without the drawbacks of implementing the AES-GCM standard. Devices compute IVs by cascading or algorithmically combining pre-configured, diverse constant values ​​and deterministic values. The AES-GCM standard invokes two frameworks for IV generation: relying on deterministic elements to construct the IV and relying on a sufficiently long output string from a secure random bit generator to achieve uniqueness. By combining diverse constants, deterministic values ​​(e.g., counters, timers, clocks), and dynamically shared secret values ​​(e.g., a non-shared subset of authentication tags), the embodiments satisfy the requirement of a deterministic construction framework for generating unique IVs. Furthermore, by incorporating a non-shared subset of previous authentication tags into the IV, the embodiments of this paper increase resistance to side-channel analysis. Moreover, although the values ​​used to construct the IV are confidential, both the host device and peripheral devices store or can compute certain values ​​used to construct the IV. In this way, devices do not need to send (and expose) the complete IV in command or response data.

[0018] The embodiments described herein include host devices and peripheral devices that perform authentication encryption and authentication decryption operations. The authentication encryption operations described herein generally provide an improved approach to authentication encryption standards (e.g., AES-GCM). Embodiments of the authentication encryption operations at least partially include authentication encryption and authentication decryption operations. These operations can be logically represented as follows: Authentication encryption: (C, tag) = ALGO [SK](IV, P); Authentication Decryption 1: P = ALGO -1 [SK](IV, C, tag); Authentication Decryption 2: (P, LSB(tag)) = ALGO -1 [SK](IV, C, MSB(tag)) in: -ALGO = Apply a symmetric encryption algorithm, such as for authentication encryption processes; -ALGO -1 = Applying the effective inverse operation of a symmetric encryption algorithm (or a symmetric decryption algorithm), such as for authentication and decryption processes; -IV = Initialization vector (e.g., 12 bytes); -P = the plaintext of the instruction (e.g., arbitrary length; empty / null value); -C = the ciphertext of the instruction (e.g., of arbitrary length, and of length equal to P); -tag (label) = authentication label (e.g., 16 bytes), which can be a command label or a response label; -MSB(tag) = A shared subset of the most significant byte or bit (MSB) of the authentication tag (e.g., the 8 MSBs of the tag). -LSB(tag) = The non-shared subset of the least significant bytes or bits (LSB) of the authentication tag (e.g., the 8 LSBs of the tag); and -SK = The symmetric session key (e.g., 16 bytes) applied to the parameter.

[0019] As an example, the authentication encryption function executes an encryption algorithm that applies a session key to the plaintext and IV of an instruction (e.g., a command instruction or a response instruction). The encryption algorithm computes the ciphertext of the instruction and the authentication tag (e.g., a command tag or a response tag). The sending device can divide the bytes of the authentication tag into two subsets: a shared subset and a non-shared subset. Another potential logical representation for computing the authentication tag includes: (C, MSB(tag) || LSB(tag)) = ALGO [SK](IV, P), where the symmetric encryption algorithm (ALGO) computes the ciphertext (C) and the authentication tag (tag) comprising the shared subset (MSB(tag)) and the non-shared subset (LSB(tag)).

[0020] In some cases, the transmitting device stores a non-shared subset in a cache memory for use in subsequent iterations. In other cases, the transmitting device treats the non-shared subset as a discard subset, which is not saved or otherwise used for subsequent operations. The transmitting device may send packets of encrypted instruction data (e.g., encrypted command data or encrypted response data) to the receiving device, wherein the encrypted instruction data includes a ciphertext of the instruction and a shared subset of the authentication tag.

[0021] As another example, the authentication decryption function performs an effective inverse operation of a symmetric encryption algorithm, applying the session key to the encrypted instruction data and one or more parameters. In this example, the receiving device can apply the encryption algorithm to a shared subset of the IV, the ciphertext of the instruction, and the authentication tag. The symmetric encryption algorithm computes the plaintext of the instruction and the non-shared subset of the authentication tag.

[0022] The following sections further describe additional details regarding the characteristics and functionality of the authentication encryption and authentication decryption operations. Although the encryption algorithms used for encryption and decryption can vary, symmetric encryption implements the same symmetric key for both encryption and decryption functions. As used herein, the decryption function can be described based on the effective inverse of the symmetric encryption algorithm, the symmetric encryption algorithm, or the decryption algorithm.

[0023] The features and functionality of the embodiments described herein can provide various advantages over existing methods, and can also provide any number of additional or alternative benefits. For example, the embodiments implement a method for authenticated encrypted communication capable of cryptographically chaining command tags of successive iterations in a sequential order. As an example, for a given iteration of a communication session, the authentication tag of a command depends on the authentication tag computed for a previous command. For subsequent iterations of the communication session, the authentication tag of a subsequent command depends on the authentication tag computed across each successive previous command. This chained approach provides additional protection against attacks attempting to modify the command sequence. Another effect of certain embodiments of the peripheral devices disclosed herein is that these peripheral devices can be authenticated by a (novel) host device configured to authenticate according to certain aspects of this disclosure.

[0024] Some implementations can adapt to the AES-GCM industry-standard cryptographic algorithm. This limits the need for or exposure to proprietary cryptographic algorithms. Proprietary encryption algorithms are often a target of interest for competitors, pirates, or malicious attackers who want to create compatible peripheral devices to produce competing peripheral or host devices, circumvent payment requirements, or create counterfeit or fraudulent devices. Furthermore, implementing proprietary cryptographic algorithms in the software and hardware components (e.g., security circuitry) of peripheral or host devices is typically more complex and expensive. Using AES-GCM provides the strength of proprietary encryption while simplifying implementation, enhancing interoperability, reducing development costs, decreasing appeal to malicious actors, and other advantages.

[0025] The embodiments described herein can perform authentication encryption according to an "encrypt-then-MAC" approach, where the plaintext of the instruction is encrypted and then an authenticated tag is generated. The authenticated tag can be verified without decrypting the ciphertext of the instruction. Some existing cryptographic methods (e.g., AES-CCM) follow a "MAC-then-encrypt" approach, where the MAC is generated before encrypting the plaintext instruction, and both the MAC and the plaintext instruction are encrypted together. To use the MAC to authenticate the sending device, the receiving device must decrypt the combined ciphertext of the MAC and the instruction. This existing method can lead to further exposure of session keys and attacks on AES encryption implementations.

[0026] The embodiments described herein allow the same authentication and encryption scheme to be used across multiple channels on a bus (e.g., paired, nominal, and managed). This includes sharing the same symmetric cryptographic primitives and the same command-response protocol. This improved approach simplifies specification, reduces development effort, and results in a smaller code size.

[0027] The implementation can use a single key or algorithm for authenticating encrypted communications. As in some existing methods, this symmetric encryption method is often more efficient than using separate keys and algorithms.

[0028] To address the IV requirements of certain encryption standards, embodiments implement IV construction operations that do not rely on the communicating device sending the IV in a command-response sequence. This is generally more efficient and meets the requirements of the standards. Furthermore, the IV construction algorithm combines deterministic values ​​(e.g., counters) and dynamically shared secret values ​​(e.g., a non-shared subset of authentication tags), which is more secure than existing methods using deterministic values. When using deterministic values ​​to construct an IV, the device does not need to transmit both the deterministic value and the IV, but this can potentially make the device more vulnerable to side-channel analysis. If deterministic values ​​are combined, the device only needs to send the IV. The embodiments described herein combine deterministic values ​​(e.g., counters) and dynamically shared secret values ​​(e.g., a non-shared subset of authentication tags) when constructing IVs in a manner that could advantageously increase the complexity of side-channel analysis by malicious actors.

[0029] Figure 1 Components of an example system 100, including a host device 101 coupled to a peripheral device 110, are shown according to an example embodiment. The host device 101 includes a host bus interface 105 for transmitting or exchanging message data with the peripheral device 110 via a bus 120. Similarly, the peripheral device 110 includes a peripheral interface 114 for transmitting message data with the host device 101 via the bus 120.

[0030] The host device 101 can be any electronic device having security circuitry 103 and processing circuitry 107 and capable of performing the various processes and tasks described herein. Non-limiting examples of the host device 101 include computing devices (e.g., desktop computers, laptop computers, servers, tablets, smartphones), printer devices, and multi-device peripheral docking stations, etc.

[0031] Peripheral device 110 may include any consumable or electronic device having peripheral security circuitry 112 (sometimes referred to as peripheral authentication circuitry) and processing circuitry 116 and capable of performing the various processes and tasks described herein. Non-limiting examples of peripheral device 110 include consumable printing cartridges and computer-connected I / O devices (e.g., mouse, keyboard, monitor, printer) as well as other potential types of peripheral devices 110.

[0032] Bus 120 includes hardware components that form a communication link for carrying signals and digital information (such as message data) between host device 101 and peripheral device 110. Bus 120 includes, for example, an electrical, optical, infrared, or other suitable signal information transmission medium between host device 101 and peripheral device 110 according to a corresponding data communication protocol. As an example, in some embodiments, communication between host device 101 and peripheral device 110 may be implemented via bus 120 according to a serial data bus protocol such as the Serial Peripheral Interface (SPI) protocol or the Inter-Integrated Circuit Bus (I2C) protocol. Further non-limiting examples of hardware and protocols for bus 120 may include Peripheral Component Interconnect (PCI), PCIe, Infiniband, USB, and FireWire, etc.

[0033] Turning now to host device 101, host device 101 includes one or more host bus interfaces 105 for communication via a corresponding data bus 120. Host bus interface 105 is a component of or coupled to a logic circuitry of host processing circuitry 107 or host security circuitry 103. Host bus interface 105 includes various logic circuitry for performing processes that allow host device 101 to communicate signals or digital information with peripheral device 110 via bus 120. In operation, components of host device 101 implement host bus interface 105 to encode or decode data received or transmitted via bus 120. For example, in some cases, host processing circuitry 107 or host security circuitry 103 of host device 101 is configured to encode command message data according to a specific communication protocol or standard of bus 120 for transmission to peripheral device 110 via host bus interface 105. In some embodiments, for example, host bus interface 105 includes an I2C interface, wherein bus 120 includes a communication bus with I2C capability.

[0034] The host processing circuitry 107 performs various operations or functions intended for the host device 101. As an example, the host device 101 is a personal computer, and the processing circuitry 107 includes the CPU of the personal computer. As another example, the host device 101 is a printing device, and the processing circuitry 107 is a controller device that receives printing instructions and controls the operation of a print cartridge to apply ink or toner according to the printing command instructions. The host processing circuitry 107 includes any processor, controller (or microcontroller), or logic device (or combination of logic devices) capable of performing the various processes described herein. The host processing circuitry 107 may be located on a dedicated printed circuit board (PCB) or integrated circuit (IC). Additionally or alternatively, components of the host processing circuitry 107 may be located on the PCB or IC together with components of the host security circuitry 103 or the host memory 109. Non-limiting examples of components of the host processing circuitry 107 include a central processing unit (CPU), a graphics processing unit (GPU), an application-specific integrated circuit (ASIC), a field-programmable gate array (FPGA), electronic logic gates and registers, and other potential logic or memory components.

[0035] In operation, the host processing circuit 107 can generate, send, receive, and process various types of instructions in response to command-response communication sequences with the peripheral device 110. The host processing circuit 107 can generate various command instructions for execution by the peripheral device 110. Command instructions may include operational instructions related to the function of the peripheral device 110 (e.g., reading / writing data, performing a print job by applying ink or toner to a printing medium). Command instructions may also include communication, overhead, or signaling instructions related to inter-device communication management, such as command signals for initiating or starting a communication session.

[0036] The host security circuit 103 performs the various operations described herein for authenticated and encrypted communication with the peripheral device 110, thereby allowing the host security circuit 103 to authenticate or verify the peripheral device 110 as compatible or licensed, and to communicate securely via the bus 120. In some cases, the host security circuit 103 may generate command instructions for the peripheral device 110, such as command signals for initiating or starting a communication session.

[0037] Security circuit 103 includes any processor, controller (or microcontroller), or logic device (or combination of logic devices) capable of performing the various processes described herein. Security circuit 103 may be located on a dedicated printed circuit board (PCB) or integrated circuit (IC). Additionally or alternatively, components of security circuit 103 may be located on the PCB or IC together with components of host processing circuitry 107 or host memory 109. Non-limiting examples of components of security circuit 103 include a central processing unit (CPU), graphics processing unit (GPU), application-specific integrated circuit (ASIC), field-programmable gate array (FPGA), electronic logic gates and registers, and other potential logic or memory components.

[0038] The host memory 109 may include any machine-readable digital storage device or non-transitory electronic signal storage device. The memory 109 is located on or coupled to a PCB having host processing circuitry 107 or security circuitry 103. The memory 109 may store various types of information received or generated by host processing circuitry 107 or security circuitry 103. Non-limiting examples of the host memory 109 include registers, latches, gates, memories (e.g., RAM), and similar storage media capable of storing data generated by host security circuitry 103 or host processing circuitry 107 or received from peripheral device 110.

[0039] In some cases, host memory 109 may be used as a cache for host security circuitry 103, whereby host security circuitry 103 stores and references various types of data used for authentication encryption operations, such as a non-shared subset of authentication tags calculated by host security circuitry 103 (commonly referred to in the art as Message Authentication Codes (MACs)), or initialization vectors calculated for symmetric encryption functions, and other types of information. In some embodiments, host memory 109 may store any number of shared symmetric session keys used by host security circuitry 103 during authentication encryption communication with peripheral device 110. In some implementations, session keys are pre-stored or loaded into host memory 109; additionally or alternatively, in some implementations, host security circuitry 103 (or other devices) cryptographically calculates or provides session keys based on a master encryption key or a parent encryption key for storage in host memory 109 and peripheral memory 118. For example, host security circuit 103 can derive session keys from a master key, which may include using pre-configured parameters or parameters received from peripheral device 110 in a response instruction used to establish a communication session. In this way, host security circuit 103 and peripheral security circuit 112 are configured to obtain one or more session keys to apply to data exchanged in communication between host device 101 and peripheral device 110.

[0040] Turning to peripheral device 110, peripheral device 110 includes one or more peripheral interfaces 114 for communication via a corresponding bus 120. Peripheral interface 114 is a component of or coupled to the logic circuitry of peripheral processing circuitry 116 or peripheral security circuitry 112. Peripheral interface 114 includes various logic circuits for performing processes that allow peripheral device 110 to communicate signals or digital information with host device 101 via bus 120. In operation, components of peripheral device 110 implement peripheral interface 114 to encode or decode message data received or transmitted via bus 120. For example, in some cases, peripheral security circuitry 112 or peripheral processing circuitry 116 of peripheral device 110 is configured to encode response message data to transmit the response message data to host device 101 via peripheral interface 114 according to a specific communication protocol or standard of bus 120. In some embodiments, for example, peripheral interface 114 includes an I2C interface, wherein bus 120 includes a communication bus with I2C capability.

[0041] Peripheral security circuitry 112 performs the various operations described herein for encrypted communication with host device 101 and for verifying whether host device 101 is compatible or licensed. Peripheral security circuitry 112 includes any processor, controller (or microcontroller), or logic device (or combination of logic devices) capable of performing the various processes described herein. Peripheral security circuitry 112 may be located on a dedicated printed circuit board (PCB) or integrated circuit (IC). Additionally or alternatively, components of peripheral security circuitry 112 may be located on the PCB or IC together with components of peripheral processing circuitry 116 or peripheral memory 118. Non-limiting examples of components of peripheral security circuitry 112 include a central processing unit (CPU), graphics processing unit (GPU), application-specific integrated circuit (ASIC), field-programmable gate array (FPGA), electronic logic gates and registers, and other potential logic or memory components.

[0042] Peripheral processing circuitry 116 performs various operations or functions intended for peripheral device 110. As an example, peripheral device 110 is a VoIP device (e.g., a mouse, camera) coupled to a personal computer serving as host device 101, wherein peripheral processing circuitry 116 includes a controller or logic circuit for capturing optical signals and converting them into electrical signals for the personal computer. As another example, host device 101 is a printing device, and peripheral device 110 is a print cartridge with logic circuitry 116 that receives print instructions from host device 101 and controls the operation of the print cartridge to apply ink or toner. Peripheral processing circuitry 116 includes any processor, controller (or microcontroller), or logic device (or combination of logic devices) capable of performing the various processes described herein. Peripheral processing circuitry 116 may be located on a dedicated printed circuit board (PCB) or integrated circuit (IC). Additionally or alternatively, components of peripheral processing circuitry 116 may be located on the PCB or IC along with components of security circuitry 112 or peripheral memory 118. Non-limiting examples of components of peripheral processing circuitry 116 include a central processing unit (CPU), a graphics processing unit (GPU), an application-specific integrated circuit (ASIC), a field-programmable gate array (FPGA), electronic logic gates and registers, and other potential logic or memory components.

[0043] Peripheral memory 118 may include any machine-readable digital storage device or non-transitory electronic signal storage device. Peripheral memory 118 is located on or coupled to a PCB having peripheral security circuitry 112 or peripheral processing circuitry 116. Peripheral memory 118 may store various types of information received or generated by peripheral security circuitry 112 or peripheral processing circuitry 116. Non-limiting examples of peripheral memory 118 include registers, latches, gates, memories (e.g., RAM), and similar storage media capable of storing data generated by peripheral security circuitry 112 or peripheral processing circuitry 116 or data received from host device 101.

[0044] In some cases, peripheral memory 118 can serve as a cache memory for peripheral security circuitry 112, allowing peripheral security circuitry 112 to store and reference various types of data used for encryption operations or other authentication processes, such as a shared subset of authentication tags received from host device 101, a non-shared subset of authentication tags calculated by peripheral device 110, initialization vectors calculated for encryption functions, and other types of information. In some embodiments, peripheral memory 118 of peripheral device 110 is configured to store any number of shared symmetric session keys used for authenticating encrypted communications. In some implementations, session keys are pre-stored or loaded into peripheral memory 118.

[0045] Regarding authenticated encrypted communication, the host security circuit 103 (of host device 101) and the peripheral security circuit 112 (of peripheral device 110) can perform the various features and functions described herein. Authentication encrypted operations may include, for example, executing functions of a symmetric encryption algorithm applied to parameter inputs; processing a session key for applying an encryption key; calculating an IV; calculating an authentication tag; and verifying the authentication tag.

[0046] To initiate a new authenticated and encrypted communication session with peripheral device 110, host device 101 may transmit an initialization command signal to peripheral device 110. The initialization command signal includes an instruction to peripheral security circuit 112 or peripheral processing circuit 116 instructing host security circuit 103 or host processing circuit 107 to initiate a new communication session. Peripheral device 110 may generate an initial response instruction confirming that peripheral device 110 is ready for the communication session.

[0047] In some embodiments, bus 120 may include several logical channels for transmitting certain types of data. For example, bus 120 may include a management channel, a pairing channel, a nominal channel, or other types of channels. In some embodiments, host device 101 and peripheral device 110 may perform authenticated encrypted communication via the management channel. In some embodiments, host device 101 and peripheral device 110 may use various channels for continuous iterations of authenticated encrypted communication. As an example, host device 101 and peripheral device 110 may exchange initialization commands and initialization responses via the management channel of bus 120, and then exchange command instructions and response instructions via another channel of bus 120 (e.g., the nominal channel, the pairing channel). In some embodiments, the initialization command is channel-specific relative to the channel of bus 120. For example, if host device 101 and peripheral device 110 initiate a management session (i.e., host device 101 issues a STARTSESSION ADMIN command via the management channel), peripheral device 110 and host device 101 may subsequently exchange authenticated encrypted communication commands and responses via the management channel.

[0048] The host security circuit 103 can perform a verification process to determine whether the peripheral device 110 is compatible or otherwise legitimate. This verification process includes calculating an authentication tag based on an encryption algorithm executed by the host security circuit 103. To verify the peripheral device 110, the host security circuit 103 calculates the complete authentication tag and compares the shared portion (sometimes referred to as the "shared portion" or "shared subset") of the authentication tag data received from the peripheral device 110 with the corresponding shared portion of the complete authentication tag calculated by the host security circuit 103. In this example, the host memory 109 can act as a cache memory for the host security circuit 103 to store and reference various types of data used in the encryption process, such as the shared portion of the authentication tag received from the peripheral device 110, the non-shared portion of the authentication tag calculated by the host device 101, or initialization vectors for encryption functions, and other types of information.

[0049] In some implementations, host memory 109 stores one or more encryption keys applied by host security circuitry 103 to a communication session (or "session key"). In some embodiments, components of system 100, including host security circuitry 103 and peripheral security circuitry 112 of peripheral device 110, use shared symmetric encryption keys to implement symmetric encryption algorithms. In such embodiments, the session key includes such symmetric encryption keys. Host memory 109 and peripheral memory 118 of peripheral device 110 are configured to store any number of shared symmetric session keys. In some implementations, the session keys are pre-stored or loaded into host memory 109 or peripheral memory 118.

[0050] Figure 2 Components of an example system 200, according to an example embodiment, are shown, including a printer device 201 coupled to a replaceable device 210 (or other replaceable or consumable components of the printer device 201). The printing system 200 includes a printing device 201 communicating with the replaceable device 210 via a communication bus 220. For ease of understanding, Figure 2 The replaceable printing device assembly 210 is shown external to the printing device 201, but in some examples, the replaceable printing device assembly 210 may be housed within the printer device 201. In some cases, because the replaceable device 210 (or components of the replaceable device 210) typically has a shorter (in some examples, considerably shorter) lifespan or cycle than the printer device 201, the replaceable device 210 is referred to as a "consumable" peripheral device.

[0051] The printing device 201 can be any type of 2D or 3D printing device, including printer operation circuitry 207 for performing printing operations using the replaceable device 210. The printing device 201 facilitates printing graphics and / or textured images on printing media such as paper, cardstock, transparent materials, polyester film, and fabric. The printing device 201 includes, for example, an inkjet printer, a laser printer, or other types of printing equipment. The printing equipment 201 includes printer operation circuitry 207, printer safety circuitry 203, and a printer interface 205 for communicating with the replaceable device 210 via bus 220.

[0052] The replaceable device 210 includes consumable resources (e.g., ink, toner) located in a reservoir 218 or other physical container. The replaceable device 210 includes consumable operation circuitry 216 for performing printing functions based on instructions received from printer operation circuitry 207 of the printing device 201. The printing device assembly 210 can physically store consumable resources (e.g., ink, toner, 3D printing agent, 3D printing build powder) in the reservoir 218, whereby the consumables can be replaced after substantial depletion. In some embodiments, the replaceable device 210 includes a printhead or other dispensing components (not shown). Although Figure 2 A single replaceable printing device component 210 is shown, but embodiments may include multiple replaceable devices 210 in printer device 201. For example, printer device 201 or replaceable device 210 may include any number of ink reservoirs 218 of different colors, multiple printheads, or other variations in the configuration of printer device 201 or replaceable device 210.

[0053] Bus 220 includes hardware components for establishing a communication link carrying signals and digital information (such as message data) between printer device 201 and replaceable device 210. For example, depending on the corresponding data communication protocol, bus 220 includes an electrical, optical, infrared, or other suitable signal information transmission medium between printer device 201 and replaceable device 210. Secure communication between printer device 201 and replaceable device 210 can be implemented via bus 220 according to a serial data bus protocol (such as the Serial Peripheral Interface (SPI) protocol or the Inter-Integrated Circuit Bus (I2C) protocol).

[0054] Turning now to printer device 201, printer device 201 includes one or more printer interfaces 205 for communication via a corresponding data bus 220. Printer interface 205 is a component of or coupled to the logic circuitry of printer operating circuitry 207 or printer safety circuitry 203. Printer interface 205 includes various logic circuits for performing processes that allow printer device 201 to communicate signals or digital information with replaceable device 210 via bus 220. In operation, components of printer device 201 implement printer interface 205 to encode or decode data received or transmitted via bus 220. For example, in some cases, printer operating circuitry 207 or printer safety circuitry 203 of printer device 201 is configured to encode command message data to transmit command message data to replaceable device 210 via printer interface 205 according to a specific communication protocol or standard of bus 220. In some embodiments, for example, printer interface 205 includes an I2C interface, wherein bus 220 includes a communication bus with I2C capability.

[0055] The printer security circuit 203 performs the various operations described herein for authenticating encrypted communication with the replaceable device 210, thereby allowing the security circuit 203 of the printer device 201 to authenticate or verify the replaceable device 210 as compatible or licensed, and to communicate securely via the bus 220. In some cases, the security circuit 203 may generate command instructions for the replaceable device 210, such as command signals for initiating or starting a communication session, or instructions related to performing printing operations.

[0056] Security circuit 203 includes any processor, controller (or microcontroller), or logic device (or combination of logic devices) capable of performing the various processes described herein. Security circuit 203 may be located on a dedicated printed circuit board (PCB) or integrated circuit (IC). Additionally or alternatively, components of security circuit 203 may be located on the PCB or IC together with components of printer operation circuit 207 or the printer memory of printer operation circuit 207. Non-limiting examples of components of security circuit 203 include printer memory, central processing unit (CPU), graphics processing unit (GPU), application-specific integrated circuit (ASIC), field-programmable gate array (FPGA), electronic logic gates and registers, and other potential logic or memory components.

[0057] Printer operation circuitry 207 performs various operations or functions intended for printer device 201. Printer device 201 is a printing apparatus having printer operation circuitry 207. Printer device 201 may include a controller device that receives, generates, or transmits command instructions (e.g., print instructions) and controls the operation of alternative device 210 to, for example, apply ink or toner to a printing medium (e.g., paper) according to print command instructions. Printer operation circuitry 207 includes any processor, controller (or microcontroller), or logic device (or combination of logic devices) capable of performing the various processes described herein. Printer operation circuitry 207 may be located on a dedicated printed circuit board (PCB) or integrated circuit (IC). Additionally or alternatively, components of printer operation circuitry 207 may be located on the PCB or IC together with components of printer safety circuitry 203 or printer memory (not shown) of printer operation circuitry 207. Non-limiting examples of components for printer operating circuitry 207 include printer memory, central processing unit (CPU), graphics processing unit (GPU), application-specific integrated circuit (ASIC), field-programmable gate array (FPGA), electronic logic gates and registers, and other potential logic or storage components.

[0058] In operation, printer operation circuitry 207 can generate, send, receive, and process various types of instructions in response to command-response communication sequences with replaceable device 210. Printer operation circuitry 207 can generate various command instructions for execution by replaceable device 210. These command instructions may include operational instructions related to the functions of replaceable device 210 (e.g., reading / writing data, performing a print job to apply ink or toner to the printing media). These command instructions may also include communication, overhead, or signaling instructions related to inter-device communication management, such as command signals for initiating or starting a communication session.

[0059] Turning now to replaceable device 210, replaceable device 210 includes one or more consumable interfaces 214 for communication via a corresponding bus 220. Consumable interface 214 is a component of or coupled to the logic circuitry of consumable operating circuitry 216 or consumable safety circuitry 212. Consumable interface 214 includes various logic circuits for performing processes that allow replaceable device 210 to communicate signals or digital information with printer device 201 via bus 220. In operation, components of replaceable device 210 implement consumable interface 214 to encode or decode message data received or transmitted via bus 220. For example, in some cases, consumable safety circuitry 212 or consumable operating circuitry 216 of replaceable device 210 is configured to encode response message data for transmission to printer device 201 via consumable interface 214 according to a specific communication protocol or standard of bus 220. In some embodiments, for example, the consumable interface 214 includes an I2C interface, wherein the bus 220 includes a communication bus with I2C capability.

[0060] Consumable security circuitry 212 performs the various operations described herein for encrypted communication with printer device 201 and for verifying host device 101 as compatible or licensed. Consumable security circuitry 212 includes any processor, controller (or microcontroller), or logic device (or combination of logic devices) capable of performing the various processes described herein. Consumable security circuitry 212 may be located on a dedicated printed circuit board (PCB) or integrated circuit (IC). Additionally or alternatively, components of consumable security circuitry 212 may be located on the PCB or IC together with components of consumable operating circuitry 216 or memory 218. Non-limiting examples of components of consumable security circuitry 212 include a central processing unit (CPU), graphics processing unit (GPU), application-specific integrated circuit (ASIC), field-programmable gate array (FPGA), electronic logic gates and registers, and other potential logic or memory components.

[0061] Consumable operating circuitry 216 performs various operations or functions intended for replaceable device 210. Printer device 201 is a printing apparatus, and replaceable device 210 is a print cartridge with logic circuitry 216 that receives various command instructions (such as print command instructions) from printer device 201. Consumable operating circuitry 216 can control the operation of the print cartridge to apply ink or toner according to instructions received from printer device 201 via bus 220. Consumable operating circuitry 216 includes any processor, controller (or microcontroller), or logic device (or combination of logic devices) capable of performing the various processes described herein. Consumable operating circuitry 216 may be located on a dedicated printed circuit board (PCB) or integrated circuit (IC). Additionally or alternatively, components of consumable operating circuitry 216 may be located on the PCB or IC together with components of consumable safety circuitry 212 or memory storage components (not shown). Non-limiting examples of components for the consumable operating circuit 216 include memory, central processing unit (CPU), graphics processing unit (GPU), application-specific integrated circuit (ASIC), field-programmable gate array (FPGA), electronic logic gates and registers, and other potential logic or storage components.

[0062] The consumables operation circuit 216 performs data operations associated with the replaceable device 210 and responds to command instructions from the printer operation circuit 207 via the bus 220. For example, the printer operation circuit 207 of the printer device 201 can send commands to the consumables operation circuit 216 via the bus 220 to perform various printing operations. In some cases, for example, the instructions may include a "write" request (e.g., writing data to a memory location) or instructions for performing actions, such as performing measurements (e.g., ink level measurement), performing print jobs, and data processing operations. In some cases, the printer operation circuit 207 may send commands to the consumables operation circuit 216 to perform operations to load data into consumable memory (e.g., a memory buffer and / or a specific register), and the consumables operation circuit 216 may transmit data via the bus 220 in response to subsequent printing device commands.

[0063] Replaceable device 210 includes consumable resource storage units 218. As mentioned, for example, printer device 201 includes any type of two-dimensional imaging device and three-dimensional additive manufacturing device, such as inkjet printers, dry toner printers, liquid toner printers, and 3D powder bed inkjet printers. Replaceable device 210 includes any number of storage units 218 as containers of printing material, such as ink canisters, ink bottles, inkjet printhead cassettes, dry toner storage units, liquid toner storage units, dry toner cartridges, and build material supply units; and other types of replaceable or consumable components that may or may not contain printing material, such as printheads (e.g., thermal inkjet printheads).

[0064] Figure 3 The operation of a method 300 for authenticating encrypted communication between a host device and a peripheral device via a data communication bus, according to an embodiment, is illustrated.

[0065] Each device includes various logic circuits that constitute secure circuitry for performing the various verification or authentication operations described herein. These devices may further include processing circuitry for performing various task-related functions specific to the device. For example, in a scenario where the host device is a printing device and the peripheral device is a replaceable printing component device (e.g., ...), ... Figure 2 In the case of a replaceable printing device 210, the processing circuitry of the printing device may include a processor IC (e.g., CPU, GPU) or a controller for driving the functions of the replaceable printing component. Similarly, the processing circuitry of the replaceable printing component may include a controller that drives consumable resources (e.g., ink, toner) from a storage device according to instructions received from the processing circuitry of the printing device.

[0066] For ease of description and understanding, the operations described in method 300 refer to host devices or peripheral devices, although the operation of a particular device is performed by certain logic devices or other circuits (including security circuits or processing circuits).

[0067] The device performs authentication encryption and decryption operations to achieve the verifiability and confidentiality advantages of the authentication-encrypted communication described herein. When performing authentication encryption or decryption, the device typically uses any number of session keys to execute a symmetric encryption algorithm (these session keys are shared symmetric encryption keys) to encrypt or decrypt instructions (e.g., command instructions, response instructions) exchanged between devices. Each device can compute an authentication tag (e.g., a command tag or response tag) based on a pre-configured number of bytes. The device performs a symmetric encryption algorithm on initialization parameters (including constant values ​​or initialization constants). The symmetric encryption algorithm computes the ciphertext of the command tag and the initialization command instruction with the pre-configured number of bytes. The device parses the initial command tag into two parts: a shared subset; and a non-shared subset or discarded subset (e.g., the shared subset is discarded to determine the initial tag). The device stores the non-shared subset in its cache for later reference.

[0068] For example, the processing or security circuitry of the transmitting device can generate the plaintext of the instruction. In the authentication encryption operation, the security circuitry of the transmitting device can apply an encryption algorithm to the plaintext of the instruction using a session key, thereby calculating the ciphertext of the instruction and the authentication tag. The transmitting device sends encrypted instruction data, which includes the ciphertext of the instruction and a shared subset of the authentication tag. The transmitting device then transmits the encrypted instruction data to the receiving device. The receiving device implements the authentication decryption operation, which uses the session key to apply an effective inverse operation of the symmetric encryption algorithm to the encrypted instruction data (including the ciphertext of the instruction and the shared subset of the authentication tag), thereby decrypting the ciphertext of the instruction to calculate and recover the plaintext of the instruction and the non-shared subset of the authentication tag.

[0069] In operation 301, the host device sends an initiation command signal to the peripheral device to initiate a new communication session with the peripheral device, wherein the initiation command signal instructs the peripheral device to start the communication session. Before or after sending the initiation command signal to the peripheral device, the host device calculates an initial command tag, and then stores a non-shared subset of the initial command tag in a cache memory.

[0070] The host device computes the initial command tag by, for example, executing an authentication encryption function that applies a symmetric encryption algorithm to a pre-configured set of default or initialization parameters using a symmetric session key. These parameters include, for example, the initial IV and optional plaintext of the command instruction, or any other pre-configured, diverse parameter values ​​shared by both the host device and the peripheral device, or otherwise implemented. The initial IV can be constructed by concatenating or algorithmically combining a constant (CONST) or an initialization constant (INIT_CONST) and an initialized command counter (cmd_cnt = 0), but in some implementations, the command counter is not used for the initial tag. The host device applies a symmetric encryption algorithm to the initial IV and the (potentially null) optional plaintext initial command instruction. The host device then outputs the initial command tag (cmd_tag0), which has a pre-configured number of bytes and the ciphertext of the (potentially null) initial command instruction. The host device parses the initial command tag into two parts: a discarded or shared subset of the initial command tag (MSB(cmd_tag0)); and a non-shared subset of the initial command tag (LSB(cmd_tag0)). The host device stores the non-shared subset in its cache for later reference, treating it as the initial command tag. The host device treats the remaining subset of the initial command tag as a discarded subset that it reserves and does not store. In subsequent iterations of the operation, the host device typically uses the remaining subset of the command tag as the shared subset (MSB(cmd_tag)). n )).

[0071] Example operations for calculating the initial command label and initial IV can be represented as follows: (C_NULL,MSB(cmd_tag0)||LSB(cmd_tag0)=ALGO[SK](INIT_CONST||cmd_cnt0, P_NULL).

[0072] In operation 303, the peripheral device receives a command signal from the host device indicating the initiation of a communication session. Before or after receiving the initiation command signal from the host device, the peripheral device calculates an initial command tag. The peripheral device then stores a non-shared subset of the initial command tag in a cache memory. The peripheral device calculates the initial IV and initial command tag in the same manner as the host device, using the same pre-configured parameter values ​​as the host device (as shown in operation 301). As previously described, an example operation for calculating the initial command tag and initial IV can be represented as follows: (C_NULL,MSB(cmd_tag0)||LSB(cmd_tag0)=ALGO[SK](INIT_CONST||cmd_cnt0,P_NULL).

[0073] In operation 305, to initiate a session, the peripheral device generates a Start Session Response as an initial response and sends encrypted initial response data. The peripheral device generates and sends a Start Session Response in response to receiving an initialization command signal from the host device (as in operation 303). The peripheral device generates a Start Session Response (rsp0) as an initial response instruction, indicating, for example, that the peripheral device is ready to conduct the communication session of method 300. In some implementations, the plaintext of the Start Session Response (p_rsp0) includes a response code (rsp_code), indicating, for example, that the peripheral device is in a "ready" state. Optionally, the Start Session Response includes response parameters (rsp_params), indicating, for example, various communication or configuration parameters for controlling or pre-configuring communication protocols.

[0074] An example operation for generating the plaintext response to start a session can be represented as: p_rsp0= rsp_code||rsp_params.

[0075] After generating the plaintext of the session start response command, the peripheral device constructs the initial response IV (rsp_iv0). The peripheral device can compute the initial response IV by cascading or otherwise combining a preconfiguration constant (CONST) or a preconfiguration response constant (RSP_CONST), a non-shared subset of the initial command tag (LSB(cmd_tag0)), and deterministic values ​​such as a command counter (cmd_cnt = 0)). An example operation for generating the initial response IV can be represented as follows: rsp_iv0= RSP_CONST||LSB(cmd_tag0)||cmd_cnt.

[0076] The peripheral device applies an encryption algorithm and session to the plaintext (p_rsp0) of the start session response to compute the ciphertext (c_rsp0) and initial response tag (rsp_tag0) of the start session response. The peripheral device divides the initial response tag into a shared response tag (MSB(rsp_tag0)) and a discard tag (LSB(rsp_tag0)). The peripheral device sends the encrypted start session response data to the host device. The encrypted start session response data includes, for example, the ciphertext of the start session response command and the shared response tag. An example operation for computed to compute the ciphertext and response tag of the start session response command can be represented as follows: (c_rsp0, MSB(rsp_tag0)||LSB(rsp_tag0)) = ALGO[SK](rsp_iv0, p_rsp0).

[0077] In this example, the encrypted start-session response data includes ciphertext (c_rsp0) and an initial shared subset of response tags (MSB(rsp_tag0)). The peripheral device then sends the encrypted start-session response data to the host device.

[0078] In operation 307, the host device verifies the start session response data from the peripheral device and decrypts the encrypted start session response data. To verify the encrypted start session response data, the host device computes the initial response IV (rsp_iv0) by concatenating or otherwise combining, for example, a preconfiguration constant (CONST) or a response constant (RSP_CONST), a non-shared subset of the initial command tag LSB (cmd_tag0), and a command count (cmd_cnt = 0). An example of the initial response IV constructed by the host device for authentication decryption can be represented as follows: rsp_iv0= RSP_CONST||LSB(cmd_tag0)||cmd_cnt.

[0079] After generating the initial response IV, the host device performs an authentication-decryption operation to verify the initial shared response tag and decrypt the encrypted start-session response data. For example, the host device applies the effective inverse of the encryption algorithm and the session key to the initial response IV (rsp_iv0), the ciphertext of the start-session response instruction (c_rsp0), and the shared subset of the initial response tags (MSB(rsp_tag0)). In the authentication-decryption operation, the encryption algorithm computes and outputs the plaintext of the start-session response instruction (p_rsp0). The authentication-decryption operation used to verify and decrypt the encrypted response data (e.g., the encrypted start-session response data) can be represented as: p_rsp cmd_cnt = ALGO -1 [SK](rsp_iv cmd_cnt c_rsp cmd_cnt MSB(rsp_tag) cmd_cnt )).

[0080] The symmetric encryption algorithm used in authentication decryption has the advantage of being applicable to a shared subset of the response IV and response tag, depending on earlier known computations of the authorized host device and the authorized peripheral device. Thus, when the host device executes the authentication decryption function on encrypted response data from a peripheral device, successful decryption of the ciphertext response instruction can indicate to the host device that each device performed the necessary verification or authentication (such as operations 307 and 315) in a given iteration.

[0081] In operation 309, according to the authentication encryption operation, the host device generates plaintext command instructions and sends encrypted command message data to the peripheral device.

[0082] To generate the plaintext of the command instruction, the host device increments a command counter (cmd_cnt += 1, where cmd_cnt = 1), or increments or updates another type of deterministic value (e.g., counter, clock, timer) parameter. The host device determines the command instruction (cmd1) based on various command inputs (such as command code (cmd_code1), command parameters (cmd_params1)) and other optional parameters. The host device can cascade or algorithmically combine these command inputs to construct the plaintext of the command instruction, which can be represented as: p_cmd cmd_cnt = cmd_code cmd_cnt || cmd_params cmd_cnt .

[0083] After generating the plaintext of the command instruction (p_cmd1), the host device then calculates the current or updated command IV (cmd_iv1), the ciphertext of the command instruction, and the next command tag. The host device constructs the command IV (cmd_iv1) by concatenating or combining a constant value (CONST) or a command constant value (CMD_CONST), the non-shared portion (LSB(cmd_tag0)) of the previous or initial command tag, and the currently updated command counter (cmd_cnt = 1). The operation used to construct the command IV can be represented as: cmd_iv cmd_cnt = CMD_CONST||LSB(cmd_tag cmd_cnt-1 )||cmd_cnt.

[0084] After calculating the current command IV, the host device generates encrypted command instruction data, which includes the ciphertext of the current command instruction and the current command tag. For example, the host device can apply an encryption algorithm and a session key to the current command IV (cmd_iv1) and the plaintext of the command instruction (p_cmd1) to calculate the ciphertext of the command instruction (c_cmd1) and the next command tag ((MSB(cmd_tag1)||LSB(cmd_tag1)). The host device stores the non-shared subset of the command tag (LSB(cmd_tag1)) in a cache and sends the shared subset of the current command tag (MSB(cmd_tag1)) to the peripheral device. The authentication encryption operation used to calculate the encrypted command data can be represented as: (c_cmd cmd_cnt MSB(cmd_tag) cmd_cnt )||LSB(cmd_tag cmd_cnt ))=ALGO[SK](cmd_iv cmd_cnt ,p_cmd cmd_cnt ).

[0085] In operation 311, according to the authentication and decryption operation, the peripheral device verifies the encrypted command and instruction data and decrypts the encrypted command and instruction data. The peripheral device can construct a command IV, verify the command tag, and calculate and recover the plaintext of the command and instruction.

[0086] To construct the command IV, the peripheral device increments the command counter (cmd_cnt += 1, where cmd_cnt = 1) or updates a deterministic value. The peripheral device constructs the command IV (cmd_iv1) by cascading or combining a constant value (CONST) or a command constant value (CMD_CONST), the non-shared portion of the previous command tag or the initial command tag (LSB(cmd_tag0)), and the incremented command counter (cmd_cnt = 1). The operation for constructing the command IV by the peripheral device can be represented as: cmd_iv cmd_cnt = CMD_CONST||LSB(cmd_tag cmd_cnt-1 )||cmd_cnt.

[0087] The authentication / decryption operation performed by the peripheral device can apply an effective inverse operation of a symmetric encryption function to the current command IV (cmd_iv1) and the encrypted command instruction data (which contains the ciphertext of the command instruction (c_cmd1) and the shared portion of the current command tag (MSB(cmd_tag1))) using the session key. The peripheral device then computes the plaintext of the command instruction (p_cmd1) and the non-shared portion of the current command tag (LSB(cmd_tag1)). The authentication / decryption operation used to decrypt and verify the encrypted command data can be represented as: (p_cmd cmd_cnt LSB(cmd_tag) cmd_cnt )) = ALGO -1 [SK](cmd_iv cmd_cnt c_cmd cmd_cnt MSB(cmd_tag) cmd_cnt )).

[0088] It is worth noting that the authentication and decryption functions executed by peripheral devices use a shared subset of command tags (MSB(cmd_tag)). cmd_cnt Furthermore, the corresponding non-shared portion (LSB(cmd_tag)) of the command tag should be calculated. cmd_cntThe peripheral device calculates the complete command tag and compares a shared subset of the calculated command tag with a shared subset received from the host device. If the peripheral device determines that the shared subset calculated by the peripheral device matches the shared subset received from the host device, the authentication decryption operation returns the non-shared portion of the calculated command tag. This verification function advantageously utilizes an inherent mechanism to compare and verify that the host device and the peripheral device generated the same command tag and are therefore both verified or authenticated devices. For example, if the host and peripheral devices are configured to generate a 16-byte authentication tag and an 8-byte subset, the host device calculates the 16-byte command tag and provides only the 8-byte shared subset of the command tag in the encrypted command instruction data (as in previous operation 309). The host device uses the same value or corresponding value used by a set of peripheral devices (e.g., the ciphertext of the command instruction corresponding to the plaintext of the command instruction) to calculate the 16-byte command tag. When a peripheral device applies an authentication decryption function to a shared subset of the ciphertext of a command and the command tag, the encryption algorithm operates in reverse to recover the plaintext of the command instruction and the non-shared portion of the command tag, thereby allowing the peripheral device to obtain two subsets of the command tag previously calculated by the host device (in operation 309). Therefore, in some cases, the peripheral device can compare the shared subset of command tags calculated by each of the devices. Additionally or alternatively, when the peripheral device performs the authentication decryption function on encrypted command data from the host device, successful decryption of the ciphertext command instruction can indicate to the peripheral device that each device has been necessaryly verified or authenticated in a given iteration (such as operations 309-311).

[0089] In operation 313, the peripheral device generates a response command and sends encrypted response command data to the host device. Specifically, the peripheral device generates a plaintext response command and executes an authentication encryption function to generate encrypted response data containing ciphertext of the response command (as in operation 305).

[0090] The peripheral device generates a response instruction based on various response inputs, such as the response code (rsp_code1) and response parameters (rsp_params1), as well as other optional inputs. As an example, the peripheral device can cascade or algorithmically combine response inputs to construct the plaintext of the response instruction (p_rsp1), which can be represented as: p_rsp cmd_cnt = rsp_code cmd_cnt ||rsp_params cmd_cnt .

[0091] After generating the plaintext of the response command, the peripheral device then calculates the current or updated response IV. The peripheral device constructs the response IV (rsp_iv1) by concatenating or combining a constant value (CONST) or a response constant value (RSP_CONST), the non-shared portion of the current command tag (LSB(cmd_tag1)), and the current command counter (cmd_cnt = 1). As mentioned, constructing the response IV can be represented as: rsp_iv cmd_cnt =RSP_CONST||LSB(cmd_tag cmd_cnt )||cmd_cnt.

[0092] After computing the current response IV (rsp_iv1), the peripheral device generates encrypted response data, which includes the ciphertext of the current response instruction (c_rsp1) and a shared subset of the current response tag (MSB(rsp_tag1)). The peripheral device can apply an encryption algorithm and a session key to the plaintext of the current response IV (rsp_iv1) and the response instruction (p_rsp1). The peripheral device computes the ciphertext of the response instruction (c_rsp1) and the command tag (MSB(rsp_tag1)||LSB(rsp_tag1)). The peripheral device discards the non-shared subset of the response tag and sends the shared subset of the current response tag (MSB(rsp_tag1)) to the host device. As mentioned, the authentication encryption operation used to compute the encrypted response data can be represented as: (c_rsp cmd_cnt MSB(rsp_tag) cmd_cnt )||LSB(rsp_tag cmd_cnt ))=ALGO[SK](rsp_iv cmd_cnt ,p_rsp cmd_cnt ).

[0093] The host device and peripheral devices can continue to iteratively execute operations 307-313 of method 300 until the communication session ends.

[0094] Figure 4 The operation of a method 400 for authenticated encrypted communication between a host device and a peripheral device via a data communication bus, according to an embodiment, is illustrated.

[0095] Figure 4 Method 400 is roughly similar to Figure 3 Method 300. The difference lies in when the host device calculates the initial command label, when the peripheral device calculates the initial command label, and... Figure 4In method 400, the session start response is sent as plaintext (instead of as encrypted instruction data) to establish a communication session (as in operation 305). Figure 3 In this process, the peripheral device and the host device synchronously calculate the initial command tag approximately at the start of the communication session and method 300. The peripheral device provides a start session response command (in operation 305) to partially acknowledge the secure communication session. However, in Figure 4 In this process, the host device and peripheral device exchange plaintext signals (in operations 401 and 403) to effectively establish a communication session. The host device then proceeds to calculate an initial command tag (in operation 405) and prepares and sends encrypted command instruction data (as in operation 407). After receiving the first encrypted command instruction from the host device, the peripheral device subsequently calculates an initial command tag (as in operation 409). Furthermore, in... Figure 4 In this process, the host device must wait to calculate the initial command label based on the parameters of the start session response; this is not... Figure 3 The situation within the method.

[0096] Each device includes various logic circuits that constitute secure circuitry for performing the various verification or authentication operations described herein. The device may further include processing circuitry for performing various task-related functions specific to the device. For example, in a scenario where the host device is a printing device and the peripheral device is a replaceable printing component device (e.g., ...), Figure 2 In the case of a replaceable device 210, the processing circuitry of the printing device may include a processor IC (e.g., CPU, GPU) or a controller for driving the functions of the replaceable printing component. Similarly, the processing circuitry of the replaceable printing component may include a controller that drives consumable resources (e.g., ink, toner) from storage according to instructions received from the processing circuitry of the printing device.

[0097] For ease of description and understanding, the operations described in method 400 refer to host devices or peripheral devices; however, the operation of a particular device is performed by certain logic devices or other circuits, including security circuits or processing circuits.

[0098] The device performs authentication encryption and decryption operations to achieve the verifiability and confidentiality advantages of the authentication-encrypted communication described herein. When performing authentication encryption or decryption, the device typically uses any number of session keys (which are shared, symmetric encryption keys) to execute a symmetric encryption algorithm to encrypt or decrypt instructions (e.g., command instructions, response instructions) exchanged between the devices. Each device can compute an authentication tag (e.g., a command tag or response tag) based on a pre-configured number of bytes. The device executes a symmetric encryption algorithm on initialization parameters, which include constant values ​​or initialization constants. The symmetric encryption algorithm computes the ciphertext of the command tag and the initialization command instruction with the pre-configured number of bytes. The device resolves the initial command tag into two parts: a shared subset; and a non-shared subset or discarded subset (i.e., the shared subset is discarded as a discarded subset when the initial command tag is computed). The device stores the non-shared subset in the device's cache for later reference.

[0099] For example, the processing or security circuitry of the transmitting device can generate the plaintext of the instruction. In the authentication encryption operation, the security circuitry of the transmitting device can apply an encryption algorithm to the plaintext of the instruction using a session key, thereby calculating the ciphertext of the instruction and the authentication tag. The transmitting device sends encrypted instruction data, which includes the ciphertext of the instruction and a shared subset of the authentication tag. The transmitting device then transmits the encrypted instruction data to the receiving device. The receiving device implements the authentication decryption operation, which uses the session key to apply an effective inverse operation of a symmetric encryption algorithm to the encrypted instruction data (including the ciphertext of the instruction and the shared subset of the authentication tag), thereby decrypting the ciphertext of the instruction to calculate and recover the plaintext of the instruction and the non-shared subset of the authentication tag.

[0100] In operation 401, the host device sends an initiation command signal to the peripheral device to initiate a new communication session with the peripheral device, wherein the initiation command signal instructs the peripheral device to start the communication session.

[0101] In operation 403, the peripheral device receives an initiation command signal and returns a plaintext initiation response instruction to the host device. The initiation response instruction may, for example, acknowledge receipt of the initiation command signal and indicate the peripheral device's ready state. In some embodiments, the peripheral device returns parameters used by the host device to derive and provide a session key, which may prevent the host device from calculating an initial tag prior to operation 403.

[0102] In operation 405, the host device computes an initial command tag. The host device then stores a non-shared subset of the initial command tag in a cache memory. The host device computes the initial command tag by, for example, applying a symmetric encryption algorithm to a pre-configured set of default or initialization parameters using a symmetric session key. These parameters include, for example, pre-configured constant values, deterministic values ​​(e.g., counters, timers, clocks), initialization or null command instructions, or any other pre-configured, diverse initial parameter values ​​shared by both the host device and the peripheral device or otherwise implemented.

[0103] The host device constructs the initial IV by concatenating or algorithmically combining constants (CONST) or initialization constants (INIT_CONST) and an initialization command counter (cmd_cnt = 0). The host device applies a symmetric encryption algorithm to the initial IV and an optional plaintext initial command instruction (which may be null). The host device then outputs the initial command tag (cmd_tag0), which has a pre-configured number of bytes and ciphertext of the initial command instruction (which may be null). The host device parses the initial command tag into two parts: a discarded or shared subset (MSB(cmd_tag0)) of the initial command tag; and a non-shared subset (LSB(cmd_tag0)). The host device stores the non-shared subset in its cache for later reference, treating it as the initial command tag. The host device treats the remaining subset of the initial command tag as a discarded subset that it reserves and does not store. In subsequent iterations of the operation, the host device typically uses the remaining subset of the command tag as the shared subset (MSB(cmd_tag0)). n Example operations for calculating the initial command label and initial IV can be represented as follows: (C_NULL,MSB(cmd_tag0)||LSB(cmd_tag0)=ALGO[SK](INIT_CONST||cmd_cnt0,P_NULL).

[0104] In Operation 407, based on the authentication encryption operation, the host device generates plaintext command instructions and sends encrypted command message data to the peripheral device.

[0105] To generate the plaintext of the command instruction, the host device increments the command counter (cmd_cnt += 1, where cmd_cnt = 1), or increments or updates another type of deterministic value parameter. The host device determines the command instruction (cmd1) based on various command inputs (such as command codes (cmd_code1) and command parameters (cmd_params1)) and other optional parameters. The host device can cascade or algorithmically combine these command inputs to construct the plaintext of the command instruction, which can be represented as: p_cmd cmd_cnt = cmd_code cmd_cnt ||cmd_params cmd_cnt .

[0106] After generating the plaintext of the command instruction (p_cmd1), the host device then calculates the current or updated command IV (cmd_iv1), the ciphertext of the command instruction, and the next command tag. The host device constructs the command IV (cmd_iv1) by concatenating or combining a constant value (CONST) or a command constant value (CMD_CONST), the non-shared portion (LSB(cmd_tag0)) of the previous or initial command tag, and the currently updated command counter (cmd_cnt = 1). The operation used to construct the command IV can be represented as: cmd_iv cmd_cnt = CMD_CONST||LSB(cmd_tag cmd_cnt-1 )||cmd_cnt.

[0107] After calculating the current command IV, the host device generates encrypted command instruction data, which includes the ciphertext of the current command instruction and the current command tag. For example, the host device can apply an encryption algorithm and a session key to the current command IV (cmd_iv1) and the plaintext of the command instruction (p_cmd1) to calculate the ciphertext of the command instruction (c_cmd1) and the next command tag ((MSB(cmd_tag1)||LSB(cmd_tag1)). The host device stores the non-shared subset of the command tag (LSB(cmd_tag1)) in a cache and sends the shared subset of the current command tag (MSB(cmd_tag1)) to the peripheral device. The authentication encryption operation used to calculate the encrypted command data can be represented as: (c_cmd cmd_cnt MSB(cmd_tag) cmd_cnt )||LSB(cmd_tag cmd_cnt ))=ALGO[SK](cmd_iv cmd_cnt ,p_cmd cmd_cnt ).

[0108] In operation 409, the peripheral device calculates the initial command tag. Then, the peripheral device stores a non-shared subset of the initial command tag in a cache memory. The peripheral device calculates the initial IV and initial command tag in the same manner as the host device, using the same pre-configured parameter values ​​as the host device (as shown in operation 405). As previously described, the operations for calculating the initial command tag and initial IV can be represented as follows: (C_NULL,MSB(cmd_tag0)||LSB(cmd_tag0)=ALGO[SK](INIT_CONST||cmd_cnt0, P_NULL).

[0109] In operation 411, according to the authentication and decryption operation, the peripheral device verifies the encrypted command and instruction data and decrypts the encrypted command and instruction data. The peripheral device can construct a command IV, verify the command tag, and calculate the plaintext of the command and instruction.

[0110] To construct the command IV, the peripheral device increments the command counter (cmd_cnt += 1, where cmd_cnt = 1) or updates a deterministic value. The peripheral device constructs the command IV (cmd_iv1) by cascading or combining a constant value (CONST) or a command constant value (CMD_CONST), the non-shared portion of the previous command tag or the initial command tag (LSB(cmd_tag0)), and the incremented command counter (cmd_cnt = 1). The operation for constructing the command IV by the peripheral device can be represented as: cmd_iv cmd_cnt =CMD_CONST||LSB(cmd_tag cmd_cnt-1 )||cmd_cnt.

[0111] The authentication / decryption operation performed by the peripheral device can apply an effective inverse operation of a symmetric encryption function to the current command IV (cmd_iv1) and the encrypted command instruction data (which contains the ciphertext of the command instruction (c_cmd1) and the shared portion of the current command tag (MSB(cmd_tag1))) using the session key. The peripheral device then computes the plaintext of the command instruction (p_cmd1) and the non-shared portion of the current command tag (LSB(cmd_tag1)). The authentication / decryption operation used to decrypt and verify the encrypted command data can be represented as: (p_cmd cmd_cnt LSB(cmd_tag) cmd_cnt )) = ALGO -1 [SK](cmd_iv cmd_cnt c_cmd cmd_cnt MSB(cmd_tag)cmd_cnt )).

[0112] It is worth noting that the authentication and decryption functions executed by peripheral devices use a shared subset of command tags (MSB(cmd_tag)). cmd_cnt Furthermore, the corresponding non-shared portion (LSB(cmd_tag)) of the command tag should be calculated. cmd_cnt The peripheral device calculates the complete command tag and compares a shared subset of the calculated command tag with a shared subset received from the host device. If the peripheral device determines that the shared subset calculated by the peripheral device matches the shared subset received from the host device, the authentication / decryption operation returns the non-shared portion of the calculated command tag. This authentication function advantageously utilizes an inherent mechanism to compare and verify that the host device and the peripheral device generated the same command tag and are therefore both authenticated or certified devices. For example, if the host and peripheral devices are configured to generate a 16-byte authentication tag and an 8-byte subset, the host device calculates the 16-byte command tag and provides only the 8-byte shared subset of the command tag in the encrypted command instruction data. The host device uses the same or corresponding values ​​used by a set of peripheral devices to calculate the 16-byte command tag (e.g., the ciphertext of the command instruction corresponding to the plaintext of the command instruction). When a peripheral device applies an authentication decryption function to a shared subset of the ciphertext of a command and its command tags, the encryption algorithm operates in reverse to recover the plaintext of the command instructions and the non-shared portions of the command tags, thereby allowing the peripheral device to obtain two subsets of the command tags previously calculated by the host device. Therefore, in some cases, the peripheral device can compare the shared subset of command tags calculated by each of the devices. Additionally or alternatively, when a peripheral device performs an authentication decryption function on encrypted command data from the host device, successful decryption of the ciphertext command instructions can indicate to the peripheral device that each device has been necessaryly verified or authenticated in a given iteration.

[0113] In operation 413, the peripheral device generates a response command and sends encrypted response command data to the host device. Specifically, the peripheral device generates a plaintext response command and executes an authentication encryption function to generate encrypted response data containing ciphertext of the response command.

[0114] Peripheral devices generate request commands (rsp) based on various response inputs, such as response codes (rsp_code), response parameters (rsp_params), and other optional inputs. Host devices can concatenate command inputs to construct plaintext command commands (p_rsp), which can be represented as: p_rsp cmd_cnt = rsp_code || rsp_params.

[0115] After generating the plaintext of the response command, the peripheral device then calculates the response IV, the ciphertext of the response command, and the next response tag. The peripheral device constructs the response IV (rsp_iv1) by concatenating or combining a constant value (CONST) or a response constant value (RSP_CONST), the non-shared portion of the current command tag (LSB(cmd_tag1)), and the command counter (cmd_cnt = 1). As mentioned, constructing the response IV can be represented as: rsp_iv cmd_cnt =RSP_CONST||LSB(cmd_tag cmd_cnt )||cmd_cnt.

[0116] After calculating the current response IV (rsp_iv1), the peripheral device generates encrypted response data, which includes the ciphertext of the current response instruction (c_rsp1) and a shared subset of the current response tag (MSB(rsp_tag1)). The peripheral device can apply an encryption algorithm and a session key to the current response IV (rsp_iv1) and the plaintext of the response instruction (p_rsp1). The peripheral device calculates the ciphertext of the response instruction (c_rsp1) and the command tag (MSB(rsp_tag1)||LSB(rsp_tag1)). The peripheral device discards the non-shared subset of the response tag and sends the shared subset of the current response tag (MSB(rsp_tag1)) to the host device. As mentioned, the authentication encryption operation used to calculate the encrypted response data can be represented as: (c_rsp cmd_cnt MSB(rsp_tag) cmd_cnt )||LSB(rsp_tag cmd_cnt ))=ALGO[SK](rsp_iv cmd_cnt , p_rsp cmd_cnt ).

[0117] The host device and peripheral devices can continue to iteratively execute the authentication encryption and authentication decryption operations of method 400 until the communication session ends.

[0118] refer to Figures 5 to 6 The flowchart illustrates the operation of authentication and encrypted communication methods 500 to 600 according to embodiments. The features and functions provide additional descriptions and examples of operations performed by a host device or peripheral device. Furthermore, Figures 5 to 6 It describes the operations following the establishment of a communication session and the initial command label, and can represent situations where there is an ongoing command-response communication sequence between the host device and the peripheral device, such as... Figure 3 or Figure 4 Communication sessions initiated in the middle.

[0119] Each device includes various logic circuits that constitute secure circuitry for performing the various verification or authentication operations described herein. The device may further include processing circuitry for performing various task-related functions specific to the device. For example, where the host device is a printing device and the peripheral device is a replaceable printing component device (e.g., ... Figure 2 In the case of a replaceable printing device 210, the processing circuitry of the printing device may include a processor IC (e.g., CPU, GPU) or controller for driving the functions of the replaceable printing component. Similarly, the processing circuitry of the replaceable printing component may include a controller for driving consumable resources (e.g., ink, toner) from storage according to instructions received from the processing circuitry of the printing device.

[0120] For ease of description and understanding, the operations described in methods 500 to 600 refer to host devices or peripheral devices; however, the operation of a particular device is performed by certain logic devices or other circuits, including security circuits or processing circuits.

[0121] Devices typically use any number of shared symmetric encryption keys (called "session keys") to execute symmetric encryption algorithms to encrypt or decrypt instructions (e.g., command instructions, response instructions) exchanged between devices. For example, the processing or security circuitry of a sending device can generate the plaintext of the instructions. The sending device's security circuitry can use the session key to apply an encryption algorithm to the plaintext of the instructions, thereby computing the ciphertext of the instructions as part of the encrypted instruction data. The sending device then sends the encrypted instruction data to a receiving device, which applies an effective inverse operation (i.e., decryption) of the symmetric encryption algorithm and the symmetric session key to the encrypted instruction data, thereby decrypting the ciphertext of the instructions to compute and recover the plaintext of the instructions.

[0122] Each device can compute an authentication tag (e.g., a command tag or a response tag) based on a pre-configured number of bytes. The device performs a symmetric encryption algorithm on initialization parameters, which include constant values ​​or initialization constants. The symmetric encryption algorithm computes ciphertext of an initial command tag with a pre-configured number of bytes and an initialization command instruction (which may be null). The device parses the initial command tag into two parts: a discarded subset or a shared subset; and a non-shared subset. The device stores the non-shared subset in its cache for later reference. In subsequent iterations of the operation, the device typically uses the remaining subset of the command tag as the shared subset, but treats the remaining subset of the initial command tag as a discarded subset that the device reserves and does not store. In some embodiments, the device initializes a command counter value that increments in certain operations, such as generating or verifying commands. This command counter is then referenced when, for example, calculating an IV, a command tag, or a response tag, and for other purposes.

[0123] Each device (e.g., a host device, a peripheral device) computes an initial command tag by applying a symmetric encryption algorithm to a pre-configured set of default or initialization parameters, for example, using a symmetric session key. These parameters include, for example, pre-configured constant values, deterministic values ​​(e.g., counters, timers, clocks), initialization or null command instructions, or any other pre-configured, diverse initial parameter values ​​shared by both the host device and the peripheral device or otherwise implemented. An example of the authentication encryption operation used to compute the initial command tag and initial IV can be represented as follows: (C_NULL, MSB(cmd_tag0)||LSB(cmd_tag0) = ALGO[SK](INIT_CONST||cmd_cnt0,P_NULL).

[0124] Figure 5 The operation of a method 500 for a host device to verify or authenticate a peripheral device during a communication session established via a communication bus, according to an embodiment, is illustrated. Each device includes various logic circuits that constitute secure circuitry for performing the various verification or authentication operations described herein. The device may further include processing circuitry for performing various task-related functions specific to the device.

[0125] In Operation 501, the host device generates a plaintext command instruction. The host device increments the command counter (cmd_cnt += 1, where cmd_cnt = 1). The host device determines the command instruction (cmd1) based on various command inputs (such as command codes (cmd_code1) and command parameters (cmd_params1), as well as other optional inputs). To construct the plaintext command instruction (p_cmd1), the host device cascades the command inputs, which can be represented as: p_cmd cmd_cnt = cmd_code cmt_cnt || cmd_params cmt_cnt .

[0126] In operation 503, the host device computes the first command IV. The host device computes the first command IV using a non-shared subset of the previous or initial command tag (such as the command tag from the previous iteration or the initial command tag) and a constant value or command constant value. For example, the host device constructs the first command IV (cmd_iv1) using the cascaded command constant value (CMD_CONST), the non-shared portion of the initial command tag (LSB(cmd_tag0)), and the current command counter (cmd_cnt = 1). The operation used to construct the command IV can be represented as: cmd_iv cmd_cnt = CMD_CONST ||LSB(cmd_tagcmd_cnt-1 )||cmd_cnt.

[0127] In Operation 505, the host device encrypts the plaintext of the command instruction and computes a first command tag. The host device applies an encryption algorithm to the first command IV and the plaintext of the command instruction using the session key. As output, the host device computes the ciphertext of the command instruction (c_cmd1) and the updated command tag (MSB(cmd_tag1)||LSB(cmd_tag1)). The host device generates encrypted command instruction data containing the ciphertext of the command instruction (c_cmd1) and the complete command tag. The host device stores a non-shared subset of the command tag (LSB(cmd_tag1)) in the host device's cache. An example authentication encryption operation for computed encrypted command data can be represented as: (c_cmd cmd_cnt ,(MSB(cmd_tag cmd_cnt )||LSB(cmd_tag cmd_cnt ))=ALGO[SK](cmd_iv cmd_cnt p_cmd cmd_cnt ).

[0128] In Operation 507, the host device transmits encrypted command data to the peripheral device via the data bus. The encrypted command data includes the ciphertext of the command and a shared subset of command tags.

[0129] In operation 509, the host device receives encrypted response instruction data from a peripheral device. The encrypted response instruction data includes, for example, the ciphertext of the response instruction (c_rsp) and a shared portion of the response tag (MSB(rsp_tag)).

[0130] In operation 511, the host device computes the first response IV. The host device computes the first response IV using a non-shared subset of the current command tag, a constant value or a response constant value, and a command counter. For example, the host device constructs the first response IV (rsp_iv1) using the cascaded response constant value (RSP_CONST), the non-shared portion of the current command tag (LSB(cmd_tag1)), and the current command counter (cmd_cnt = 1). The operation used to construct the response IV can be represented as: rsp_iv cmd_cnt = RSP_CONST||LSB(cmd_tag cmd_cnt )||cmd_cnt.

[0131] In operation 513, the host device verifies the response tag based on the shared portion of the response tag and decrypts the encrypted response instruction data to recover the plaintext of the response instruction. The host device performs an authentication decryption operation to verify the response tag and decrypt the encrypted response instruction data. The host device applies an effective inverse operation of the encryption algorithm to the first response IV (rsp_iv1), the ciphertext of the response instruction (c_rsp1), and the shared subset of the initial response tag (MSB(rsp_tag1)) using the session key. In the authentication decryption operation, the encryption algorithm computes and outputs the plaintext of the response instruction (p_rsp1). The authentication decryption operation used to verify and decrypt encrypted response data (e.g., encrypted start-of-session response data; encrypted response instruction data) can be represented as: p_rsp cmd_cnt =ALGO -1 [SK](rsp_iv cmd_cnt c_rsp cmd_cnt MSB(rsp_tag) cmd_cnt )).

[0132] The symmetric encryption algorithm used in authentication decryption has the advantage of being applicable to a shared subset of response IVs and response tags, depending on prior computations known to both the authorized host device and the authorized peripheral device. Thus, when the host device executes the authentication decryption function on encrypted response data from a peripheral device, successful decryption of the ciphertext response instruction indicates to the host device that each device has been necessaryly verified or authenticated in a given iteration.

[0133] The host device can continue to iteratively execute the authentication encryption and authentication decryption operations of method 500 until the communication session ends.

[0134] Figure 6 The operation of a method 600 for a peripheral device to verify or authenticate a host device during a communication session established via a communication bus, according to an embodiment, is illustrated. Each device includes various logic circuits that constitute secure circuitry for performing the various verification or authentication operations described herein. The device may also include processing circuitry for performing various task-related functions specific to the device.

[0135] In operation 601, the peripheral device receives encrypted command instruction data from the host device via a channel of the data communication bus. The encrypted command instruction data includes the ciphertext of the command instruction and a shared subset of the current command tag.

[0136] In operation 603, the peripheral device uses a non-shared subset of the previously assigned command tags to compute the command IV. The peripheral device can use the command tags to construct a command IV for authentication decryption operations, to verify the encrypted command instruction data, and to compute and recover the plaintext of the command instructions.

[0137] To construct the command IV, the peripheral device increments the command counter (cmd_cnt += 1, where cmd_cnt = 1) or updates a deterministic value. The peripheral device constructs the command IV (cmd_iv1) by cascading or combining a constant value (CONST) or a command constant value (CMD_CONST), the non-shared portion of the previous command tag or the initial command tag (LSB(cmd_tag0)), and the incremented command counter (cmd_cnt = 1). The operation of constructing the command IV by the peripheral device can be represented as: cmd_iv cmd_cnt = CMD_CONST ||LSB(cmd_tag cmd_cnt-1 )||cmd_cnt.

[0138] In operation 605, the peripheral device verifies the command instruction and decrypts the command instruction data. For example, the authentication / decryption operation performed by the peripheral device can apply an effective inverse operation of a symmetric encryption function to the current command IV (cmd_iv1) and the encrypted command instruction data, which contains the ciphertext of the command instruction (c_cmd1) and the shared portion (MSB(cmd_tag1)) of the current command tag, using the session key. The peripheral device then computes the plaintext of the command instruction (p_cmd1) and the non-shared portion (LSB(cmd_tag1)) of the current command tag. The authentication / decryption operation used to decrypt and verify the encrypted command data can be represented as: (p_cmd cmd_cnt LSB(cmd_tag) cmd_cnt )) = ALGO -1 [SK](cmd_iv cmd_cnt c_cmd cmd_cnt MSB (cmd_tag) cmd_cnt )).

[0139] As previously mentioned, the authentication and decryption functions executed by the peripheral device employ a shared subset of command tags (MSB(cmd_tag)). cmd_cnt And the corresponding non-shared portion (LSB(cmd_tag)) of the command tag should be calculated. cmd_cntThe peripheral device calculates the complete command tag and compares a shared subset of the calculated command tag with a shared subset received from the host device. If the peripheral device determines that the shared subset calculated by the peripheral device matches the shared subset received from the host device, the authentication decryption operation returns the non-shared portion of the calculated command tag. This authentication function advantageously utilizes an inherent mechanism to compare and verify that the host device and the peripheral device generate the same command tag and are therefore both verified or authenticated devices. For example, if the host and peripheral device are configured to generate a 16-byte authentication tag and an 8-byte subset, the host device calculates the 16-byte command tag and provides only the 8-byte shared subset of the command tag in the encrypted command instruction data. The host device uses the same value or corresponding value used by a set of peripheral devices (e.g., the ciphertext of the command instruction corresponding to the plaintext of the command instruction) to calculate the 16-byte command tag. When a peripheral device applies an authentication decryption function to a shared subset of the ciphertext of a command and its command tags, the encryption algorithm operates in reverse to recover the plaintext of the command instructions and the non-shared portions of the command tags. This allows the peripheral device to obtain two subsets of the command tags previously calculated by the host device. Therefore, in some cases, the peripheral device can compare the shared subset of command tags calculated by each of the devices. Additionally or alternatively, when a peripheral device performs an authentication decryption function on encrypted command data from the host device, successful decryption of the ciphertext command instructions can indicate to the peripheral device that each device has been necessaryly verified or authenticated in a given iteration.

[0140] In Operation 607, the peripheral device generates a plaintext response instruction. The peripheral device generates the response instruction based on various response inputs, such as the response code (rsp_code1) and response parameters (rsp_params1), as well as other optional inputs. As an example, the peripheral device can cascade or algorithmically combine response inputs to construct the plaintext response instruction (p_rsp1), which can be represented as: p_rsp cmd_cnt = rsp_code cmd_cnt || rsp_params cmd_cnt .

[0141] In operation 609, the peripheral device calculates the response IV. The peripheral device constructs the response IV (rsp_iv1) by cascading or combining a constant value (CONST) or a response constant value (RSP_CONST), the non-shared portion of the current command tag (LSB(cmd_tag1)), and the current command counter (cmd_cnt=1). As mentioned, constructing the response IV can be represented as: rsp_iv cmd_cnt = RSP_CONST||LSB(cmd_tag cmd_cnt )||cmd_cnt.

[0142] In operation 611, the peripheral device encrypts the plaintext of the response command and calculates a response tag. For example, the peripheral device generates encrypted response data, which includes the ciphertext of the current response command (c_rsp) and a shared subset of the current response tag (MSB(rsp_tag1)). The peripheral device may apply an encryption algorithm and a session key to the current response IV (rsp_iv1) and the plaintext of the response command (p_rsp1). The peripheral device calculates the ciphertext of the response command (c_rsp1) and the command tag (MSB(rsp_tag1) || LSB(rsp_tag1)). The peripheral device discards the non-shared subset of the response tag and sends the shared subset of the current response tag (MSB(rsp_tag1)) to the host device (as in subsequent step 613). As described above, the authentication encryption operation for calculating the encrypted response data can be represented as: (c_rsp cmd_cnt MSB(rsp_tag) cmd_cnt )||LSB(rsp_tag cmd_cnt = ALGO[SK](rsp_iv cmd_cnt , p_rsp cmd_cnt ).

[0143] In operation 613, the peripheral device sends encrypted response command data to the host device via the channel of the data communication bus. The encrypted response command data includes the ciphertext of the response command and a shared subset of the response tags.

[0144] The peripheral device can continue to iteratively execute the authentication encryption and authentication decryption operations of method 600 until the communication session ends.

[0145] The various illustrative logic blocks, modules, circuits, and algorithm steps described in conjunction with the embodiments disclosed herein can be implemented as electronic hardware, computer software, or a combination of both. To clearly illustrate the interchangeability of hardware and software, various illustrative components, blocks, modules, circuits, and steps have been described above generally according to their functionality. Whether such functionality is implemented as hardware or software depends on the specific application and the design constraints imposed on the system as a whole. Those skilled in the art can implement the described functionality in different ways for each specific application, but such implementation decisions should not be construed as departing from the scope of the invention.

[0146] Implementations in computer software can be implemented as software, firmware, middleware, microcode, hardware description languages, or any combination thereof. Code segments or machine-executable instructions can represent procedures, functions, subroutines, programs, routines, subroutines, modules, software packages, classes, or any combination of instructions, data structures, or program statements. Code segments can be coupled to other code segments or hardware circuitry by passing and / or receiving information, data, arguments, attributes, or memory contents. Information, arguments, attributes, data, etc., can be passed, forwarded, or transmitted via any suitable means, including memory sharing, message passing, token passing, network transmission, etc.

[0147] The actual software code or dedicated control hardware used to implement these systems and methods is not a limitation of the invention. Therefore, since the operation and behavior of the systems and methods have been described without reference to specific software code, it should be understood that the software and control hardware can be designed to implement the systems and methods based on the description herein.

[0148] When implemented in software, functionality can be stored as one or more instructions or code on a non-transitory computer-readable or processor-readable storage medium. The steps of the methods or algorithms disclosed herein can be embodied in a processor-executable software module that can reside on a computer-readable or processor-readable storage medium. Non-transitory computer-readable or processor-readable media include both computer storage media and tangible storage media that facilitate the transfer of computer programs from one place to another. A non-transitory processor-readable storage medium can be any available medium accessible to a computer. By way of example and not limitation, such a non-transitory processor-readable medium can include RAM, ROM, EEPROM, CD-ROM or other optical disc storage, disk storage or other magnetic storage devices, or any other tangible storage medium that can be used to store desired program code in the form of instructions or data structures and is accessible to a computer or processor. As used herein, disks and optical discs include compact optical discs (CDs), laser optical discs, optical discs, digital versatile optical discs (DVDs), floppy disks, and Blu-ray discs, wherein disks typically magnetically reproduce data, while optical discs optically reproduce data using lasers. Combinations of the above should also be included within the scope of computer-readable media. Furthermore, the operation of a method or algorithm may reside as one or any combination or set of code and / or instructions on a non-transitory processor-readable medium and / or a computer-readable medium that may be incorporated into a computer program product.

[0149] The foregoing description of the disclosed embodiments is intended to enable any person skilled in the art to make or use the invention. Various modifications to these embodiments will be apparent to those skilled in the art, and the general principles defined herein may be applied to other embodiments without departing from the spirit or scope of the invention. Therefore, the invention is not intended to be limited to the embodiments shown herein, but is to be given the widest scope consistent with the appended claims and the principles and novel features disclosed herein.

[0150] While various aspects and embodiments have been disclosed, other aspects and embodiments are contemplated. The disclosed aspects and embodiments are for illustrative purposes and are not intended to be limiting; the true scope and spirit are indicated by the appended claims.

[0151] In some embodiments, a logic device for peripheral authentication includes: a bus interface configured to communicate data with a host device during operation; and authentication circuitry configured to: calculate a first initialization vector for decrypting encrypted command data from the host device, the encrypted command data including ciphertext of command instructions and a shared subset of current command tags, the first initialization vector being calculated based on a non-shared subset of previous command tags; decrypt the encrypted command data using the first initialization vector to obtain plaintext of command instructions and a non-shared subset of current command tags; and generate encrypted response data including ciphertext of response instructions and a current response tag.

[0152] In some implementations, the plaintext of the response command can be obtained by the host device using an initialization vector based on a non-shared subset of the current command label.

[0153] In some implementations, response directives indicate response codes. Response directives are constructed based on response codes.

[0154] In some implementations, the authentication circuit is configured to compute the first initialization vector based on a non-shared subset of the previously commanded labels and a pre-configured constant value.

[0155] In some implementations, the authentication circuit is configured to compute the first initialization vector based on a non-shared subset of the previously commanded labels and deterministic values.

[0156] In some implementations, when generating encrypted response data, the authentication circuit is configured to compute a second initialization vector based on a non-shared subset of the current command label and pre-configured constants; and to use the second initialization vector to encrypt the plaintext of the response instruction to generate the ciphertext of the response instruction.

[0157] In some implementations, when generating encrypted response data, the authentication circuit is configured to: compute a second initialization vector based on a non-shared subset and a deterministic value of the current command tag; and use the second initialization vector to encrypt the plaintext of the response instruction to generate the ciphertext of the response instruction.

[0158] In some implementations, the authentication circuit is further configured to verify the encrypted command data received from the host device by comparing a current command tag associated with the encrypted command data with a current command tag obtained by the authentication circuit, wherein the current command tag associated with the encrypted command data includes the shared subset of the current command tags received from the host device, and the current command tag obtained by the authentication circuit includes the non-shared subset of the current command tags calculated by the authentication circuit.

[0159] In some implementations, the encrypted command data is encrypted using a symmetric encryption algorithm. The authentication circuit then uses the symmetric encryption algorithm to decrypt the encrypted command data.

[0160] In some implementations, the encrypted command data is encrypted using a session key. The authentication circuit then uses the session key to decrypt the encrypted command data.

[0161] In some implementations, the authentication device is further configured to obtain multiple session keys for use in multiple communications exchanged with the host device.

[0162] In some implementations, the logic device further includes a non-transitory memory configured to store multiple command tags. Each command tag and each response tag has a pre-configured length with a defined number of bytes.

[0163] In some implementations, when generating encrypted response data, the authentication circuitry is configured to: calculate the current response tag of a shared subset of the current response tag and a discarded subset of the current response tag; and transmit the encrypted response data to the host device, the encrypted response data including the ciphertext of the response instruction and the shared subset of the response tag. The authentication circuitry discards the discarded subset of the current response tag.

[0164] In some implementations, the bus interface is configured for at least one of Serial Peripheral Interface (SPI), Inter-Integrated Circuit Bus (I2C), Peripheral Component Interconnect (PCI), PCI High Speed ​​(PCIe), Infiniband, or USB.

[0165] In some embodiments, a print cartridge includes: a printing material supply chamber; a bus interface coupled to a host device; and authentication circuitry. The authentication circuitry is configured to: calculate a first initialization vector for decrypting encrypted command data from the host device, wherein the encrypted command data includes ciphertext of command instructions and a shared subset of current command tags, wherein the first initialization vector is calculated based on a non-shared subset of previous command tags; decrypt the encrypted command data using the first initialization vector to obtain plaintext of command instructions and a non-shared subset of current command tags; generate encrypted response data including ciphertext of response instructions and a current response tag; and transmit the encrypted response data to the host device via the bus interface to authenticate the print cartridge.

[0166] In some implementations, the plaintext of the response command can be obtained by the host device using an initialization vector based on a non-shared subset of the current command label.

[0167] In some implementations, response directives indicate response codes. Response directives are constructed based on response codes.

[0168] In some implementations, the authentication circuit is configured to compute the first initialization vector based on a non-shared subset of the previously commanded labels and a pre-configured constant value.

[0169] In some implementations, the authentication circuit is configured to compute the first initialization vector based on a non-shared subset of the previously commanded labels and deterministic values.

[0170] In some implementations, when generating encrypted response data, the authentication circuit is configured to: compute a second initialization vector based on a non-shared subset of the current command tag and pre-configured constants; and encrypt the plaintext of the response instruction using the second initialization vector to generate the ciphertext of the response instruction.

[0171] In some implementations, when generating encrypted response data, the authentication circuit is configured to: compute a second initialization vector based on a non-shared subset and a deterministic value of the current command tag; and encrypt the plaintext of the response instruction using the second initialization vector to generate the ciphertext of the response instruction.

[0172] In some implementations, the authentication circuit is further configured to verify the encrypted command data received from the host device based on comparing a current command tag associated with the encrypted command data with a current command tag obtained by the authentication circuit, wherein the current command tag associated with the encrypted command data includes the shared subset of the current command tags received from the host device, and the current command tag obtained by the authentication circuit includes the non-shared subset of the current command tags calculated by the authentication circuit.

[0173] In some implementations, the encrypted command data is encrypted using a symmetric encryption algorithm. The authentication circuit then uses the symmetric encryption algorithm to decrypt the encrypted command data.

[0174] In some implementations, the encrypted command data is encrypted using a session key. The authentication circuit then uses the session key to decrypt the encrypted command data.

[0175] In some implementations, the authentication circuitry is further configured to obtain multiple session keys for use in multiple communications exchanged with the host device.

[0176] In some implementations, the print cartridge further includes or is coupled to a non-transitory memory configured to store multiple command tags. Each command tag and each response tag has a pre-configured length with a defined byte size.

[0177] In some implementations, when generating encrypted response data, the authentication circuitry is configured to: calculate the current response tag of a shared subset of the current response tag and a discarded subset of the current response tag; and transmit the encrypted response data to the host device, the encrypted response data including the ciphertext of the response command and the shared subset of the response tag. The authentication circuitry discards the discarded subset of the current response tag.

[0178] In some implementations, the bus interface is configured for at least one of Serial Peripheral Interface (SPI), Inter-Integrated Circuit Bus (I2C), Peripheral Component Interconnect (PCI), PCI High Speed ​​(PCIe), Infiniband, or USB.

Claims

1. A logic device for peripheral authentication, comprising: A bus interface configured to communicate data with a host device during operation; Authentication circuit, the authentication circuit being configured to: A first initialization vector is calculated for decrypting encrypted command data from the host device, the encrypted command data including ciphertext of command instructions and a shared subset of the current command tag, the first initialization vector being calculated based on a non-shared subset of the previous command tag; The encrypted command data is decrypted using the first initialization vector to obtain the plaintext of the command instruction and the non-shared subset of the current command tag; as well as Generate encrypted response data, which includes the ciphertext of the response command and the current response tag.

2. The logic device according to claim 1, wherein, The plaintext of the response instruction can be obtained by the host device using an initialization vector based on the non-shared subset of the current command label.

3. The logic device according to any one of claims 1 to 2, wherein, The response instruction indicates a response code, and the response instruction is constructed based on the response code.

4. The logic device according to claims 1 to 3, wherein, The authentication circuit is configured to calculate the first initialization vector based on the non-shared subset of the previous command label and a pre-configured constant value.

5. The logic device according to any one of claims 1 to 4, wherein, The authentication circuit is configured to compute the first initialization vector based on the non-shared subset and deterministic value of the previous command tag.

6. The logic device according to any one of claims 1 to 5, wherein, When the encrypted response data is generated, the authentication circuit is configured as follows: The second initialization vector is calculated based on the non-shared subset of the current command label and pre-configured constants; as well as The plaintext of the response instruction is encrypted using the second initialization vector to generate the ciphertext of the response instruction.

7. The logic device according to any one of claims 1 to 6, wherein, When the encrypted response data is generated, the authentication circuit is configured as follows: The second initialization vector is calculated based on the non-shared subset and deterministic value of the current command label; as well as The plaintext of the response instruction is encrypted using the second initialization vector to generate the ciphertext of the response instruction.

8. The logic device according to any one of claims 1 to 7, wherein, The authentication circuit is further configured to verify the encrypted command data received from the host device by comparing the current command tag associated with the encrypted command data with the current command tag obtained by the authentication circuit, wherein the current command tag associated with the encrypted command data includes the shared subset of the current command tags received from the host device, and the current command tag obtained by the authentication circuit includes the non-shared subset of the current command tags calculated by the authentication circuit.

9. The logic device according to any one of claims 1 to 8, wherein, The encrypted command data is encrypted using a symmetric encryption algorithm, and the authentication circuit uses the symmetric encryption algorithm to decrypt the encrypted command data.

10. The logic device according to any one of claims 1 to 9, wherein, The encrypted command data is encrypted based on a session key, and the authentication circuit uses the session key to decrypt the encrypted command data.

11. The logic device according to claim 10, wherein, The authentication device is further configured to obtain multiple session keys for use in multiple communications exchanged with the host device.

12. The logic device according to any one of claims 1 to 11, further comprising a non-transitory memory configured to store a plurality of command tags, wherein, Each command tag and each response tag has a pre-configured length with a limited number of bytes.

13. The logic device according to any one of claims 1 to 12, wherein, When the encrypted response data is generated, the authentication circuit is configured as follows: Calculate the current response label of the shared subset having the current response label and the discarded subset having the current response label; as well as The encrypted response data is transmitted to the host device, the encrypted response data including the ciphertext of the response instruction and the shared subset of the response tag, wherein the authentication circuit discards the discarded subset of the current response tag.

14. The logic device according to any one of claims 1 to 13, wherein, The bus interface is configured for at least one of Serial Peripheral Interface (SPI), Inter-Integrated Circuit Bus (I2C), Peripheral Component Interconnect (PCI), PCI High Speed ​​(PCIe), Infiniband, or USB.

15. A printing box, comprising: Printing materials supply room; The bus interface coupled to the host device; Authentication circuit, the authentication circuit being configured to: A first initialization vector is calculated for decrypting encrypted command data from the host device, the encrypted command data including ciphertext of command instructions and a shared subset of the current command tag, the first initialization vector being calculated based on a non-shared subset of the previous command tag; The encrypted command data is decrypted using the first initialization vector to obtain the plaintext of the command instruction and the non-shared subset of the current command tag; Generate encrypted response data, the encrypted response data including the ciphertext of the response command and the current response tag; as well as The encrypted response data is transmitted to the host device via the bus interface to authenticate the print box.

16. The printing box according to claim 15, wherein, The plaintext of the response command can be obtained by the host device using an initialization vector based on the non-shared subset of the current command label.

17. The printing box according to any one of claims 15 to 16, wherein, The response instruction indicates a response code, and the response instruction is constructed based on the response code.

18. The printing box according to any one of claims 15 to 17, wherein, The authentication circuit is configured to calculate the first initialization vector based on the non-shared subset of the previous command label and a pre-configured constant value.

19. The printing box according to any one of claims 15 to 18, wherein, The authentication circuit is configured to compute the first initialization vector based on the non-shared subset and deterministic value of the previous command tag.

20. The printing box according to any one of claims 15 to 19, wherein, When the encrypted response data is generated, the authentication circuit is configured as follows: The second initialization vector is calculated based on the non-shared subset of the current command label and pre-configured constants; as well as The plaintext of the response instruction is encrypted using the second initialization vector to generate the ciphertext of the response instruction.

21. The printing box according to any one of claims 15 to 20, wherein, When the encrypted response data is generated, the authentication circuit is configured as follows: The second initialization vector is calculated based on the non-shared subset and deterministic value of the current command label; as well as The plaintext of the response instruction is encrypted using the second initialization vector to generate the ciphertext of the response instruction.

22. The printing box according to any one of claims 15 to 21, wherein, The authentication circuit is further configured to verify the encrypted command data received from the host device by comparing the current command tag associated with the encrypted command data with the current command tag obtained by the authentication circuit, wherein the current command tag associated with the encrypted command data includes the shared subset of the current command tags received from the host device, and the current command tag obtained by the authentication circuit includes the non-shared subset of the current command tags calculated by the authentication circuit.

23. The printing box according to any one of claims 15 to 22, wherein, The encrypted command data is encrypted using a symmetric encryption algorithm, and the authentication circuit uses the symmetric encryption algorithm to decrypt the encrypted command data.

24. The printing box according to any one of claims 15 to 23, wherein, The encrypted command data is encrypted based on a session key, and the authentication circuit uses the session key to decrypt the encrypted command data.

25. The printing box according to any one of claims 15 to 24, wherein, The authentication circuit is further configured to obtain multiple session keys for use in the data exchanged in multiple communications with the host device.

26. The print cartridge according to any one of claims 15 to 25, further comprising a non-transitory memory configured to store a plurality of command tags, wherein, Each command tag and each response tag has a pre-configured length with a limited number of bytes.

27. The printing box according to any one of claims 15 to 26, wherein, When the encrypted response data is generated, the authentication circuit is configured as follows: Calculate the current response label of the shared subset having the current response label and the discarded subset having the current response label; as well as The encrypted response data is transmitted to the host device, the encrypted response data including the ciphertext of the response instruction and the shared subset of the response tag, wherein the authentication circuit discards the discarded subset of the current response tag.

28. The printing box according to any one of claims 15 to 27, wherein, The bus interface is configured for at least one of Serial Peripheral Interface (SPI), Inter-Integrated Circuit Bus (I2C), Peripheral Component Interconnect (PCI), PCI High Speed ​​(PCIe), Infiniband, or USB.