An authentic printer cartridge toner manufacturer may manufacture and distribute products that are certified as originating from the manufacturer. Authentication data can be used as proof of origin and proof of authenticity. An auditor can use the authentication data at any point to determine whether or not an apparatus such as a printer is populated with authentic components since inauthentic components might adversely affect the performance of the apparatus.
Example implementations will now be described, by way of example, with reference to the accompanying drawings in which:
Referring to
The example illustrated shows N components 104 to 108. In a printer, N can be determined by the number of colour processes the printer uses. Therefore, for a 6 colour process, that is, N=6, the printer could be populated with magenta, yellow, cyan, red and two black printer cartridges.
Although example implementations have been, and will be, described with reference to the components 104 to 108 being printer cartridges, example implementations are not are limited to such components. Example implementations can be realised in which other components having associated authentication data can be used in addition to, or instead of, the printer cartridges. The other components can comprise, for example, circuitry such as, for example, a trusted platform module, other secure device or any other device comprising authentication data or other identity data or proof of origin data.
The components 104 to 108 form part of the device to support the proper functioning of the device or to avoid the device 102 being otherwise wholly or partially inoperative or not functioning correctly. Example implementations can be realised in which the components 104 to 108 forming part of the device 102 comprises components that are mechanically coupled to the device. The components 104 to 108 forming part of the device can, additionally or alternatively, comprise the components being housed within respective enclosures (not shown) of the device 102. Therefore, for example, it can be appreciated, in example implementations in which the components 104 to 108 are printer cartridges and the device 102 is a printer, the printer cartridges support the proper functioning or operation of the printer since, without one of the components, the printer operation would be limited or otherwise be partially or wholly inoperative. The components 104 to 108 form integral parts of the device 102 as a whole.
The device 102 comprises a secure device 110. The secure device 110 can comprise a trusted platform module. The secure device 110 is arranged to generate a pair of keys that comprises a private key, SK, 112 and a public key, PK, 114 to be used in communicating with an authentication server 116. A private key is an example implementation of a secret key.
The secure device 110 comprises, or has access to, a share generator 118. The share generator 118 is arranged to create shares 120 in the private key 112 for distribution to the components 104 to 108. The secure device 110 is arranged to send respective shares s1122 to sn 126 to respective components 104 to 108. Each component 104 to 108 comprises a respective communication interface 128 to 132 via which the components 104 to 108 can communicate with other entities of the device 102 such as, for example, the secure device 110 and one another. Therefore, the components 104 to 108 can receive the respective shares s1122 to sn 126 via respective communication interfaces 128 to 132. The each component 104 to 108, therefore, has an associated respective share. The shares can be associated with the components by storing the shares in respective memories of the components, or having the shares being accessible to the components by storage in some other way that is accessible to respective components. Example implementations can be realised in which the shares are generated by the components, and in which the shares 120 can be subsequently stored in memory of, or accessible to, the components. Accordingly, one, or both, of storing a share in a memory of a component or a component generating a respective share is an example implementation, or are example implementations, of the components having associated respective shares.
If a component is replaced with a newly installed component, example implementations can be realised in which the secure device 110 issues a spare share of the previously generated shares 120 in the private key to such a newly installed component or issues the same share of the private key as was issued to the replaced component. Alternatively, when a component is replaced with a new component, example implementations can be realised in which new shares are generated and issued to all components, and/or in which a new secret-public key pair is generated and shares in the newly generated secret-public key pair are issued to all components.
Example implementations can be realised in which the secure device 110 communicates or otherwise interacts with any installed component to authenticate that component to ensure that only authentic components are issued with shares.
The components 104 to 108 comprise respective component processors 134 to 138. The communication interfaces 128 to 132 can form part of the respective component processors 134 to 138. Each processor 134 to 138 stores, or has access to, respective identification data 140 to 144 that identifies or is otherwise uniquely associated with respective components 104 to 108.
Each component 104 to 108 is also arranged to store, or have access to, a common message, m1, 146. Example implementations can be realised in which the common message, m1, 146 is constructed from the respective identification data 140 to 144 associated with the components 104 to 108. The identification data 140 to 144 can be exchanged between the components 104 to 108 by communication with one another via their respective communication interfaces 128 to 132 or by the intermediary of a processor 148. Example implementations can be realised in which the common message, m1, 146 is a combination of the identification data 140 to 144 of each component 104 to 108. The processor 148 can be associated with or form part of the device 102. The identification data is an example implementation of component identification data.
The component processors 134 to 138 also comprise respective distributed signing units 150 to 154. The distributed signing units 150 to 154 are arranged to collaborate to establish a signature 156 in a distributed manner, that is, via a distributed signing protocol. Example implementations can be realised in which the distributed signing protocol is, for example, threshold distributed signing protocol of a (t,n) threshold signature scheme. Example implementations can be realised using a threshold Schnorr protocol such as, for example, a Flexible Round-Optimised Schnorr Threshold Signatures protocol, or a threshold Elliptic Curve Digital Signature Algorithm. The signature 156 is established using the shares s1122 to sn 126 and the message m1146 as part of the distributed signing protocol.
The device 102 also comprises a device identifier (ID) 158 that identifies the device 102.
Authentication data 160 associated with the components 104 to 108 is sent to the authentication server 116. The authentication server 116 comprises a processor 161 for controlling the processing performed by the authentication server 116. The authentication data 160 comprises at least the signature 156. Example implementations can be realised in which the authentication data 160 comprises at least one of the public key 114, the message 146, the device ID 158, the signature 156 or other data associated with, or to be sent to, the authentication server 116 taken jointly and severally in any and all permutations. Example implementations can be realised in which the data associated with the authentication server 116 can, alternatively or additionally, comprise freshness data that can be used to assess or provide an indication of data freshness of the authentication data 160. For example, the freshness data can comprises a Nonce, that is, a number used once, a counter, a time stamp or some other freshness data, that can be generated by the device 102, the authentication server 116, or some other entity, and/or that is issued by the authentication server 116 and returned, by the device 102, as part of the authentication data 160, to provide an indication of the freshness of the authentication data 160. Example implementations can be realised in which the freshness data is generated by the device 102 and is provided as part of the authentication data 160. For example, the device 102 may track the number of times that a given component has been replaced and provide an indication of that number to the authentication server 116. For example, within the context of the components 104 to 108 being printer cartridges, the secure device 110, or processor 148 may track the number of times each cartridge of a given colour process has been replaced and provide that data to the authentication server 116 as part of the authentication data 160. Therefore, the authentication data 160 can comprise at least one of the signature 156, the device ID 158 or freshness data, taken jointly and severally in any and all permutations, without more, if either, or both, of the public key 114 and the message 146 have been previously sent to the authentication server 116.
Generating the authentication data 160 can be responsive to an event. The event can be instigated or generated by the device 102, the authentication server or some other device The event can be detecting a change of one of the components 104 to 108. For example, one of the components 104 to 108 can be replaced with a replacement component. For implementations in which the device 102 is a printer and in which the components 104 to 108 comprise printer cartridges, the event could be installation of a printer cartridge. Additionally, or alternatively, the event can be a message received from the authentication server 116 requesting that the authentication data 160 be established and returned to the authentication server 116 for authenticating.
The authentication server 116 uses the authentication data 160 for either, or both, of registering the authentication data for future authentication actions or assessing the authentication data 160 to establish the status of the components 104 to 108 having previously received authentication data 160 during a registration associated with the device 102.
The authentication server 116 comprises a memory 162 for storing received authentication data 160. The authentication server 116 is arranged to store at least one of device identifiers, associated messages, public keys or signatures 158 taken jointly and severally in any and all permutations. Example implementations store at least one, or both, of the public key or device identifiers. In the illustrated example, the memory 162 is shown as comprising stored authentication data 160, 164, 166 received from a number of devices, including authentication data 160 received from device 102. Each instance of the authentication data 160, 164, 166 comprises at least one, or both, of a respective public key or respective device identifier. In the example implementation shown, each instance of the authentication data can also or alternatively comprise a respective device identifier, a respective public key, a respective message or a respective signature taken jointly and severally in any and all permutations. Therefore, the stored authentication data 160 associated with the device 102 comprises the device ID 158, the message m1146, the public key pk 114 and the signature sig1156. The stored authentication data also comprises further authentication data 164 associated with a further device (not shown). The further authentication data 164 comprises a respective device identifier 168, a respective message m2170, a respective public key pk2172 and a respective signature sig2174. The stored authentication data is also depicted as comprising still further authentication data 166 associated with a still further device (not shown). The still further authentication data 166 comprises a respective device identifier 176, a respective message m2178, a respective public key pk2180 and a respective signature sig2182. Although the example implementation has been shown as comprising authentication data 160, 164, 166 associated with three devices, implementations are not limited to three sets of authentication data. Example implementations can be realised in which one set of authentication data or multiple sets of authentication data, each associated with respective devices, can be stored.
The device 102 and the authentication server 116 are operable in either, or both, of a registration mode and an authentication mode, as well as other modes.
Referring to
At 202, the device 102 generates, or accesses, the private key 112 and the corresponding public key 116. Example implementations use the secure device 108 to generate the private 112 and public 114 keys. At 204, the device 102 generates, or accesses, the shares 120 of the private key 112. The example implementation depicts the secure device 108 as generating, or accessing, the shares 120 of the private key 112. In the example implementation shown in
The common message, m, 146 is constructed, or accessed, at 208. As described above, the common message, m, 146 can comprise a combination of the component identifiers 140 to 144. The common message, m, 146 can be generated centrally or in a distributed manner. For example, the processor 148 can request each of the components 104 to 108 to supply respective component identifiers 140 to 144 to allow the message 146 to be constructed. The common message 146 generated by the processor 148 can be supplied to the components 104 to 108 following the processor 148 generating that message 146. Alternatively, the common message 146 can be generated in a distributed manner via the components 140 to 108 communicating with one another to exchange respective component identifiers 140 to 144, and combining the component identifiers to generate the common message 146.
At 210, the signature 156 is generated using the shares 120 and the common message 146. Example implementations can be realised in which each component 104 to 108 uses the distributed signing units 150 to 154 to generate the signature 156. In such a distributed signing protocol, the signature 156 can be generated by each of the components 104 to 108, and any of the components 104 to 108 can supply the resulting signature 156 to the processor 148.
The distributed signing units 150 to 154 can implement a threshold distributed signing protocol in which no fewer than t shares of the n shares are used to generate the signature. Example implementations can be realised in which all of the n shares are used to generate the signature 156.
Alternatively, or additionally, rather than example implementations being realised in which the shares 120 are centrally generated, example implementations can be realised in which the shares 120 are generated in a distributed manner using distributed key generation, in which case distributing the shares to the components as per 206 described above could be omitted. The shares 120 can be generated in a distributed manner by the components communicating with one another to generate the private key 112 or the public key 114, or both the private 112 and public 114 keys.
At 214, the authentication data 160 comprising the public key 114, the message 146, the signature 156 or the device ID 158, taken jointly and severally in any and all permutations, are sent to the authentication server 116. Example implementations can be realised in which the sent authentication data comprises at least one, or both, of the public key or the device ID.
The authentication server 116 receives the authentication data 160 at 216 and stores the received authentication data 160 in an accessible, indexed, manner. Prior to storing the received authentication data 160, the authentication server 116 can verify, at 217, the received signature 156 using message 146 and the public key 114 and store the authentication data 160 if the signature 156 is valid at 218. As indicated above, example implementations use the device ID 158 as the index to the stored authentication data. However, example implementations are not limited to using the device ID 158 as such an index. Example implementations can be realised in which at least one of the public key 114, the message 146, the signature or the device ID 158, taken jointly and severally in any and all permutations, is used as, or is used to generate, the index to the stored authentication data 160. Determining whether or not a signature is valid or invalid is an example implementation of determining the verification status of a signature. Similarly, determining whether or not authentication data is valid or authentic, or invalid or inauthentic, are examples of determining the authentication or verification status of the authentication data, that is, making a determination of the authenticity or validity of the authentication data.
Referring to
The components 104 to 108 generate or receive the common message 146, and establish the signature 156 using a distributed signing protocol that uses communications 302 between the components 104 to 108. The distributed signing protocol can comprise a signature generation protocol of a (t,n) threshold signature scheme.
Referring to
Additionally, the message 146 can also be generated by the components 104 to 108 in a distributed manner by the components cooperating such as, for example, exchanging component IDs (not shown) 140 to 144 to construct the common message 146.
Referring to
The processor 161 is arranged to output a message 504 indicating the validity or otherwise of the received authentication data 160 in response to the comparator and verifier 502 determining whether or not the received authentication data 160 is valid. Determining whether or not the received authentication data 160 is valid or invalid comprises validating the received signature 156 using the stored public key that corresponds to the index, which can be the device ID, associated with the received authentication data 160. If the signature is valid, the authentication is successful and the authentication message 504 will be a positive authentication message indicating that the components 104 to 108 are authentic. Conversely, if the signature is invalid, the authentication is unsuccessful and the authentication message 504 would be a negative authentication message indicating that the components 104 to 108 are inauthentic or, alternatively, the message 504 could be an invitation to commence a registration process to register the received authentication data 160 with the authentication server 116.
Example implementations can be realised in which the device ID 158 of the received authentication data 160 is used as an index to search the stored authentication data 160, 162, 164 when looking fora match. The device ID 158 is used to access the corresponding public key 114 that is used to verify the received signature 156 using the respective message 146; the latter having been previously received or having received as part of the authentication data 160. If the received signature is valid, the components are deemed to be authentic, and the above described positive authentication message is output. If the received signature is invalid, the components are deemed to be inauthentic and the above described negative authentication message is output.
The authentication message 504 can be output on a display 528 of the authentication server 116, or can be output for transmission to a party that has an interest in whether or not the device components 104 to 108 are authentic or otherwise.
It can be appreciated that the signature, having been cooperatively derived from the shares in the private key 112, can only be valid if the shares in the private key 112 held by the components are valid. Therefore, multiple components can be validated or otherwise authenticated using a single signature as opposed to the authentication server 116 validating or authenticating each of the components 104 to 108 individually.
Referring to
Example implementations can be realised in which the message to the device 102 requesting that the device 102 transmits authentication data 160 to the authentication server 116 comprises authentication request data to be used by the device 102 in authenticating the number of components. Example implementations can be realised in which the authentication request data comprises the above freshness data such as, for example, at least one of a time-stamp, counter or a reference to be associated with authenticating the number of components of the device taken jointly and severally in any and all permutations.
At 604, the authentication server 116 receives the authentication data 160. At 606, an index is extracted, or otherwise derived, from the received authentication data 160. The index is used for searching the stored authentication data 160, 162, 164 to determine whether or not any of the stored authentication data corresponds to the received authentication data 160. Example implementations can be realised in which the index is the device ID 158 and the device ID is used to access the corresponding public key 114.
A determination of whether or not there is a match between the index and any of the stored authentication data 160, 162, 164 is made, at 608. If the determination, at 608, is positive, a further determination is made, at 610, of whether or not the signature 156 of the received authentication data 160 is valid based on any stored matching authentication data 160, 162, 164 such as, for example, the public key 114 of any stored authentication data that matches or corresponds to the index and the message 146. If the received signature 156 is determined, at 610, to be valid, a positive authentication message 504 is output at 612. If the received signature 156 is determined, at 610, to be invalid, a negative authentication message 504 is output at 614.
Returning to 608, if the determination is negative, the authentication server 116 can instigate, at 616, a registration process during which the authentication server 116 registers the authentication data 160 for use in future authentications of components associated with that device. Instigating the registration process can comprise exchanging messages with the device to confirm whether or not the authentication server 116 should register the received authentication data 160. If it is determined that registration should take place, the received authentication data 160 is stored in a manner that is accessible via a respective index such as, for example, the device ID 158 corresponding to the device 102.
It will be appreciated that the above described entities such as the device 102 and the authentication server 116 can be realised as hardware, software or a combination of hardware and software, all of which will be referred to herein as “circuitry”. Therefore, it will be appreciated that circuitry as used herein can comprise any of physical electronic circuitry, software (such as machine-readable instructions, machine-executable or processable instructions, referred to herein as machine-instructions), hardware, application specific integrated circuitry (or machine-implemented instructions), or the like, taken jointly or severally in any and all permutations. Such machine-readable instructions, machine-executable or processable instructions, and machine-implemented instructions will be referred to herein as machine-instructions.
Accordingly, example implementations also provide machine-readable storage storing such machine-instructions. The machine-instructions can be executed, processed or interpreted, by a machine or device. The machine or device can comprise one or more processors, or other circuitry, for executing the instructions, implementing the instructions, interpreting the instructions or otherwise processing or giving effect to the instructions.
Therefore, referring to
The machine-instructions can be arranged to perform any and all activities, operations, or methods described and/or claimed in this application or to realise any of the entities described and/or claimed in this application such as the operations and entities described with reference to any of the accompanying figures.
Referring to
The machine-instructions 702 comprise machine-instructions 708 for generating the above described private key 112 and public key 114 pair. The machine-instructions 708 for generating the key pair 112, 114 are shown in a dashed outline since example implementations can be realised in which the key pair 112, 114 are generated by a central dealer such as, for example, the above described secure device 110. However, example implementations can be realised in which the private key 112 of the key pair 112, 114 is not actually generated since mere shares in that private key 112 are generated as opposed to generating the key per se. It will be appreciated that such mere shares in the private key 112 can be generated in a distributed key or share generation scheme as described herein.
Machine-instructions 710 are provided that generate the shares 120 in the private key 112. In a centralised key generation implementation, machine-instructions 712 are provided to distribute the shares 120, that is, shares 122 to 126, of the private key 112 to respective components 104 to 108.
The common message m1146 is constructed in response to machine-instructions 714, and the signature 156 is generated by respective machine-instructions 716.
Machine-instructions 718 are provided to send the authentication data 160 to the authentication server 116 for registration or for authentication.
Referring to
The machine-instructions 802 can comprise machine-instructions 808 to request the authentication data 160 from the device 102. The machine-instructions 802 can comprise machine-instructions 810 to receive the authentication data 160 from the device 102. Example implementations can additionally comprise machine-instructions 812 for verifying the received authentication data 160 prior to storage. Machine-instructions 814 are provided to store the received authentication data 160 for authenticating the components 104 to 108 at some future point in time using the stored authentication data 160, 162, 164.
Referring to
Machine-instructions 908 can be provided that cause the authentication server 116 to request authentication data from the device 102. Machine-instructions 910 are provided for the authentication server 116 receiving the authentication data 160 from the device 102. An index, such as, for example, the device ID 158, is extracted by respective machine-instructions 912.
Machine-instructions 914 are provided to perform the above described searching for a matching index such as, for example, the matching device ID 158. Machine-instructions 916 are provided to determine whether or not any received authentication data 160, in particular, the received signature 156, is valid or invalid based on the public key 114 associated with the matching index in conjunction with the respective message 146; the message 146 having been received or stored as part of the stored authentication data 160, 164, 166. If the received signature is valid, machine-instructions 918 are provided to output a message 504 to that effect. The message 504 can be a message to the device 102 indicating that the components 104 to 108 are valid or otherwise authentic. If the received signature is invalid, machine-instructions 920 are provided to output a message 504 to that effect. The message 504 can be a message to the device 102 indicating that at least one of the components 104 to 108 is invalid or otherwise inauthentic. If a match between any stored authentication data 160, 162, 164 and the extracted index derived from any received authentication data 160 cannot be identified, machine-instructions 922 are provided to instigate a registration process described above with reference to at least one, or both, of
Although example implementations have been described with reference to the secure device 110 or processor 148 generating the authentication data 104 to 108, example implementations are not limited to such an arrangement. Example implementations can be realised in which the components are pre-populated with authentication data before being installed into the device 102.
Example implementations have been described in which shares 120 of the private key 112 and a corresponding message 146 are associated with a signature 156 that can be used to authenticate the set of installed components 104 to 108. However, example implementations are not limited thereto. Example implementations can be realised in which, rather than the secure device 110 issuing shares 120 in the private key 112, each component 104 to 108 generates a respective BLS private/public key pair; the BLS private key corresponding to a component's “share”. The components use their shares, that is, their BLS private keys, in conjunction with the common message 146, to produce respective BLS signatures. The respective BLS signatures can be combined to produce an aggregated signature that can be sent to the authentication server 116 as part of the authentication data 160, along with a respective aggregated public key that is produced from the BLS public keys. The aggregated BLS signature can be output to the authentication server 116 and used to authenticate the set of components 104 to 108 installed at the device 102.
Example implementations can be realised according to the following clauses:
Filing Document | Filing Date | Country | Kind |
---|---|---|---|
PCT/US2021/013363 | 1/14/2021 | WO |