This invention relates generally to encrypted communication, and in particular to encrypted communication between printing system components.
In printing systems, for example inkjet printing systems, information is transmitted between various printing system components. Typically, this information is stored in the memory of one of the printing system components for later retrieval and use.
According to one aspect of the present invention a system and method of communicating between a first device and a second device are provided. Communication includes transferring information or data in a secure manner without encrypting the information itself. When appropriate, the transferred information or data is used or stored by at least one of the first device and the second device.
According to another aspect of the present invention, a method of communicating between a first device and a second device includes providing unencrypted data to be transmitted in the first device, encrypting at least a portion of the unencrypted data to be transmitted to form encrypted data, using at least a portion of the encrypted data to form a first validation code, appending the first validation code to the unencrypted data to form a packet of data to be transmitted, and transmitting the packet of data from the first device to the second device.
According to another aspect of the present invention, a method of communicating between a first device and a second device also includes extracting the unencrypted data from the received packet of data, extracting the first validation code from the received packet of data, encrypting at least a portion of the extracted unencrypted data, using at least a portion of the extracted encrypted data to form a second validation code that is calculated by the second device, and comparing the second validation code to the first validation code. The portion of extracted unencrypted data encrypted by the second device corresponds to the portion of unencrypted data encrypted by the first device and the portion of the extracted encrypted data that forms the second validation code corresponds to the portion of the encrypted data that forms the first validation code.
According to another aspect of the present invention, an inkjet printing system includes a first device including unencrypted data to be transmitted, a second device, and a communication link between the first and second devices. The first device is configured to encrypt at least a portion of the unencrypted data to be transmitted to form encrypted data, to use at least a portion of the encrypted data to form a first validation code, and to append the first validation code to the unencrypted data to form a packet of data to be transmitted. The communication link is configured to transmit the packet of data from the first device to the second device.
According to another aspect of the present invention, an inkjet printing system also includes the second device being configured to extract the unencrypted data from the received packet of data, extract the first validation code from the received packet of data, encrypt at least a portion of the extracted unencrypted data, use at least a portion of the extracted encrypted data to form a second validation code, and compare the second validation code to the first validation code. The portion of extracted unencrypted data encrypted by the second device corresponds to the portion of unencrypted data encrypted by the first device and the portion of the extracted encrypted data that forms the second validation code corresponds to the portion of the encrypted data that forms the first validation code.
In the detailed description of the example embodiments of the invention presented below, reference is made to the accompanying drawings, in which:
The present description will be directed in particular to elements forming part of, or cooperating more directly with, apparatus in accordance with the present invention. It is to be understood that elements not specifically shown or described may take various forms well known to those skilled in the art. In the following description and drawings, identical reference numerals have been used, where possible, to designate identical elements.
The example embodiments of the present invention are illustrated schematically and not to scale for the sake of clarity. One of the ordinary skills in the art will be able to readily determine the specific size and interconnections of the elements of the example embodiments of the present invention.
As described herein, the example embodiments of the present invention provide a printhead and/or printhead components typically used in inkjet printing systems. However, many other applications are emerging which use inkjet printheads to emit liquids (other than inks) that need to be finely metered and deposited with high spatial precision. As such, as described herein, the terms “liquid” and/or “ink” refer to any material that can be ejected by the printhead and/or printhead components described below.
Typically, inkjet printing is accomplished by one of two technologies, referred to as drop-on-demand inkjet printing and continuous inkjet printing. While the present invention finds application in various types of printing systems, it is particularly well suited for drop-on-demand inkjet printing systems and continuous inkjet printing systems.
In drop on demand ink jet printing, ink drops are generated for impact upon a print medium using a pressurization actuator (thermal, piezoelectric, etc.). Selective activation of the actuator causes the formation and ejection of an ink drop through a nozzle bore that strikes a print medium. The formation of printed images is achieved by controlling the individual formation of ink drops and relative movement of the recording medium and the printhead. A slight negative pressure within each channel keeps the ink from inadvertently escaping through the nozzle bore and also forms a slightly concave meniscus at the nozzle bore.
In continuous inkjet printing, a pressurized ink source is used to eject a filament of fluid through a nozzle bore from which a continuous stream of ink drops are formed using a drop forming device. The ink drops are directed to an appropriate location using one of several methods (electrostatic deflection, heat deflection, gas deflection, etc.). When no print is desired, the ink drops are deflected into an ink capturing mechanism (catcher, interceptor, gutter, etc.) and either recycled or disposed of. When print is desired, the ink drops are not deflected and allowed to strike a print media. Alternatively, deflected ink drops can be allowed to strike the print media, while non-deflected ink drops are collected in the ink capturing mechanism.
Referring to
Recording medium 32 is moved relative to printhead 30 by a recording medium transport system 34, which is electronically controlled by a recording medium transport control system 36, and which in turn is controlled by a micro-controller 38. The recording medium transport system shown in
Ink is contained in an ink reservoir 40 under pressure. In the non-printing state, continuous ink jet drop streams are unable to reach recording medium 32 due to an ink catcher 42 that blocks the stream and which may allow a portion of the ink to be recycled by an ink recycling unit 44. The ink recycling unit reconditions the ink and feeds it back to reservoir 40. Such ink recycling units are well known in the art. The ink pressure suitable for optimal operation will depend on a number of factors, including geometry and thermal properties of the nozzles and thermal properties of the ink. A constant ink pressure can be achieved by applying pressure to ink reservoir 40 under the control of ink pressure regulator 46. As shown in
The ink is distributed to printhead 30 through an ink channel 47. The ink preferably flows through slots and/or holes etched through a silicon substrate of printhead 30 to its front surface, where a plurality of nozzles and drop forming mechanisms, for example, heaters, are situated. When printhead 30 is fabricated from silicon, drop forming mechanism control circuits 26 can be integrated with the printhead. Printhead 30 also includes a deflection mechanism (not shown in
Referring to
Liquid, for example, ink, is emitted under pressure through each nozzle 50 of the array to form filaments of liquid 52. In
Jetting module 48 is operable to form liquid drops having a first size or volume and liquid drops having a second size or volume through each nozzle. To accomplish this, jetting module 48 includes a drop stimulation or drop forming device 28, for example, a heater or a piezoelectric actuator, that, when selectively activated, perturbs each filament of liquid 52, for example, ink, to induce portions of each filament to breakoff from the filament and coalesce to form drops 54, 56.
In
Typically, one drop forming device 28 is associated with each nozzle 50 of the nozzle array. However, a drop forming device 28 can be associated with groups of nozzles 50 or all of nozzles 50 of the nozzle array.
When printhead 30 is in operation, drops 54, 56 are typically created in a plurality of sizes or volumes, for example, in the form of large drops 56, a first size or volume, and small drops 54, a second size or volume. The ratio of the mass of the large drops 56 to the mass of the small drops 54 is typically approximately an integer between 2 and 10. A drop stream 58 including drops 54, 56 follows a drop path or trajectory 57.
Printhead 30 also includes a gas flow deflection mechanism 60 that directs a flow of gas 62, for example, air, past a portion of the drop trajectory 57. This portion of the drop trajectory is called the deflection zone 64. As the flow of gas 62 interacts with drops 54, 56 in deflection zone 64 it alters the drop trajectories. As the drop trajectories pass out of the deflection zone 64 they are traveling at an angle, called a deflection angle, relative to the undeflected drop trajectory 57.
Small drops 54 are more affected by the flow of gas than are large drops 56 so that the small drop trajectory 66 diverges from the large drop trajectory 68. That is, the deflection angle for small drops 54 is larger than for large drops 56. The flow of gas 62 provides sufficient drop deflection and therefore sufficient divergence of the small and large drop trajectories so that catcher 42 (shown in
When catcher 42 is positioned to intercept large drop trajectory 68, small drops 54 are deflected sufficiently to avoid contact with catcher 42 and strike the print media. As the small drops are printed, this is called small drop print mode. When catcher 42 is positioned to intercept small drop trajectory 66, large drops 56 are the drops that print. This is referred to as large drop print mode.
Referring to
Drop stimulation or drop forming device 28 (shown in
Positive pressure gas flow structure 61 of gas flow deflection mechanism 60 is located on a first side of drop trajectory 57. Positive pressure gas flow structure 61 includes first gas flow duct 72 that includes a lower wall 74 and an upper wall 76. Gas flow duct 72 directs gas flow 62 supplied from a positive pressure source 92 at downward angle θ of approximately a 45° relative to liquid filament 52 toward drop deflection zone 64 (also shown in
Upper wall 76 of gas flow duct 72 does not need to extend to drop deflection zone 64 (as shown in
Negative pressure gas flow structure 63 of gas flow deflection mechanism 60 is located on a second side of drop trajectory 57. Negative pressure gas flow structure includes a second gas flow duct 78 located between catcher 42 and an upper wall 82 that exhausts gas flow from deflection zone 64. Second duct 78 is connected to a negative pressure source 94 that is used to help remove gas flowing through second duct 78. An optional seal(s) 84 provides an air seal between jetting module 48 and upper wall 82.
As shown in
Gas supplied by first gas flow duct 72 is directed into the drop deflection zone 64, where it causes large drops 56 to follow large drop trajectory 68 and small drops 54 to follow small drop trajectory 66. As shown in
As shown in
Some or all of printing system components or devices described above communicate with each other. Communication includes transferring or transmitting (sending and/or receiving) information or data in a secure manner without encrypting the information itself. When appropriate, the transferred information or data is used or stored by at least one of the printing system devices.
The information or data that is transmitted and stored can be of various types. For example, the information can be data used by the printing system controller to optimize settings of various control parameters for one or more printheads to ensure print quality and printhead reliability. The information can include printhead operating history information such as ink types and/or other fluid types that have been used in a printhead. Additionally, the information can include business or billing related information such as printhead usage (printhead hours), billing method, speed limitations of the printhead, and/or other sensitive or proprietary information.
The stored information is used for various purposes. For example, the stored history information can be used by the host to block transfer of a fluid to a particular printhead in situations in which it may not be appropriate to mix that fluid with a fluid already present in the printhead. An example of this use of the information includes preventing the transfer of a cyan ink to a printhead being operated with magenta ink.
When the information is based at least in part on customer use data and/or used to bill or change a user of the printing system, it is preferable that this type of information be secure so that the information cannot be modified or copied from one printing system component, for example, from one printhead to another printhead. It is also preferable that the information not be destroyed, erased, forged (spoofed), or emulated. However, except in situations where the information itself is confidential or proprietary, there is typically no reason to keep the information itself from being decipherable by users of the printing system.
Referring to
Communication between the printhead memory 108 and the host 114 passes through the printhead microprocessor 106. The printhead memory 108, the printhead microprocessor 106, and a print data processor 104 form what is commonly referred to as module electronics 116 of the jetting module 48 or printhead 30. A print data source 102, for example, a scanner or computer, provides digital data, for example, raster image data, outline image data in the form of a page description language, or digital image data to the print data processor 104. Print data processor 104 converts the image data into a data form that can be sent to the drop generator 110 of jetting module 48 or printhead 30. To help ensure the integrity of the data stored in the printhead memory 108, host 114 and module electronics 116 should be physically secure and tamper-resistant to reduce the likelihood of these devices being altered, copied, or destroyed.
As described below, the host 114 is a fluid system. However, it should be understood that the host can be included in any printing system component. For example, the host 114 can be a fluid system, another printhead, a user interface, a jetting module, a printer controller, or another inkjet system component. When host 114 is a fluid system, the fluid system CPU typically communicates with the printhead microprocessor 106.
Referring to
After the communication session has been initiated, both the first device 118 and the second device 120 independently generate a random seed value S12, S14. The first device 118 transmits seed value 1 to the second device S16 while the second device 120 transmits seed value 2 to the first device S18. The seed values are received by the appropriate devices S20, S22. Each device reads a stored hidden key S24, S26 that is common to the first device 118 and the second device 120 but not transmitted, therefore remaining independently known only to the first device 118 and the second device 120. Each device now has the seed value it created, the seed value created by the other device, and the stored hidden key.
The seed value provided by first device 118, the seed value provided by the second device 120, and the hidden key known to both the first device 118 and second device 120 are collectively employed to form a communication session specific key S28, S30. For example, in one example embodiment of the invention, the seed value provided by the second device 120 (for example, a jetting module) and the seed value provided by the first device 118 (for example, a fluid system) are combined to form a communication session specific number, which is then put through an encryption algorithm using the hidden key as the encryption key. The resultant number is the communication session specific key. Because both devices use the same hidden key and the same encryption algorithm, the communication session specific key created by first device 118 is identical to the communication session specific key created by second device 120.
While any encryption algorithm known in the art can be used, typically, the particular encryption algorithm employed depends on the security level desired for the specific application being contemplated. Examples of encryption algorithm include TDES (or 3DES), AES, Lucifer, Madryga, REDOC, RC2, IDEA, MMB, GOST, CAST, as well as other conventional block ciphers. In a preferred example embodiment, the encryption algorithm is TDES. First and second devices 118, 120 then communicate or transfer the information or data S32.
Referring to
The data to be transmitted from the first device 118 (for example, the fluid system) to the second device 120 (for example, the printhead), or vice-versa, is identified S40. At least a portion of the data cluster to be transmitted is encrypted using the communication session specific encryption key previously created S42. The encryption algorithm used can be the same as the algorithm used to create the communication session specific key or it can be a different algorithm. The portion of the data cluster to be encrypted depends on the specific application contemplated and can be, for example, the entire data cluster that is to be transmitted or a subset of the entire data cluster.
At least a portion of the encrypted data cluster is then selected to form a validation code S44. Again, the portion of encrypted data selected to form the validation code depends on the specific application contemplated and the system specifics, including how many bytes are available as a validation code, the amount of total encrypted data, and the amount of unencrypted data to be transmitted. For example, if only a small portion of unencrypted data is encrypted, the validation code can be all of the encrypted data. However, when a larger portion of the data is encrypted, the validation code can be only a few bytes of the encrypted data. These bytes can come from the beginning, middle, end, or from multiple locations of the encrypted data string. This validation code is appended to the unencrypted data cluster previously identified S46 to create a packet of data that is transmitted by the sender to the receiver S48. It is preferred that the validation code be at least two bytes or 16 bits long to reduce the risk that one could correctly guess the validation code on any given transfer of a data cluster.
The integrity of the data validation method depends on the secrecy of the hidden key. The process of forming a validation key from only a portion of the encrypted data rather than the entire encrypted data actually makes it harder to discover the value of the hidden key. Similarly, encrypting only a portion of the data cluster rather than encrypting the entire data cluster also makes it harder to discover the value of the hidden key. In both of cases, the process or algorithm used to define the data portion should be kept confidential.
The packet of data is received by the receiver S50. The receiver then extracts, or separates, the received data packet into the original unencrypted data cluster and the validation code S52. The receiver encrypts at least a portion of the extracted unencrypted data using the communication session specific encryption key previously created S54 and selects at least a portion of the encrypted data cluster to form a second validation code S56. The validation code calculated by the receiver is compared to the validation code extracted from the data received from the sender S58. When there is a match between the two validation codes, the receiver uses the unencrypted data S60. For example, the information can be written to the printhead memory or displayed on a user interface.
However, when there is not a match of the validation codes, the information is disregarded S62. In some cases, such as in the described embodiment where the first device 118 (sender) is a fluid system and the second device 120 (receiver) is a jetting module, disregarding the information takes the form of refusing to write the data to the printhead memory. However, when there is no match of the validation codes during several successive tries, communication can be permanently shut down to the jetting module. In such cases, the customer is typically required to contact the manufacturer to correct the problem and replace the jetting module. When the first device 118 (sender) is, for example, the jetting module and the second device (receiver) is, for example, the fluid system, disregarding the information can take the form of inhibiting operation of the system.
In the description above, it was discussed relative to steps S42 and S44 that at least a portion of the data cluster is encrypted and that at least a portion of the encrypted data is selected to form a validation code. The portion of unencrypted data that is encrypted in step S54 and the portion of encrypted data selected to form the second validation code in step S56 should correspond to the portion of the unencrypted data encrypted in step S42 and the portion of encrypted data selected to form the first validation code in step S44. In other words, if all of the data is encrypted in step S42, all of the data should be encrypted in step S54, and if, by way of example, the first four bytes of the encrypted data are selected as the first validation code in step S44, the first four bytes of encrypted data should be selected as the second validation code in step S56. To ensure that matching portions are selected by the sender and the receiver, the portions to be selected are usually fixed and do not vary from one communication session to another. Alternatively, when a communications session is initiated in S10, some information can be communicated between the first device 118 and the second device 120 to declare what portions of the unencrypted data are to be selected for encryption and which portions of the encrypted data are selected to form the validation codes.
Referring back to
The invention has been described in detail with particular reference to certain preferred embodiments thereof, but it will be understood that variations and modifications can be effected within the scope of the invention.