A consumable is a product that is capable of being consumed or used up. Ink or toner printer cartridges are examples of consumables. An ink or toner printer cartridge can be inserted into a printer, such as an ink jet printer or a laser printer, and enable printing for a period of time, that is, until it is used up. After the ink or toner is used up, the user can discard the cartridge and purchase another one.
The following detailed description refers to the drawings, wherein:
Manufacturers of consumable products are challenged to come up with effective methods of encouraging customers to purchase authentic replacement consumable products. For example, in the field of printers, an Original Equipment Manufacturer (OEM) of printers often also manufactures toner or ink cartridges for its printers (hereinafter referred to as “printer cartridges”). However, some businesses manufacture their own brand of cartridges that may work with the OEM printer (hereinafter referred to as “clone cartridges”). Additionally, sometimes these businesses try to pass their clone cartridges off as authentic cartridges produced by the OEM (hereinafter referred to as “counterfeit cartridges”). It is in the interest of the manufacturer for customers to purchase authentic cartridges made by the manufacturer for many reasons. For example, OEM cartridges generally perform better on the OEM printers than clone cartridges or counterfeit cartridges. Thus, when a customer does not use an OEM cartridge, the printing experience may be less than satisfactory. Often times the customer will blame the OEM for the poor experience, especially if the customer unknowingly purchased a counterfeit cartridge. In addition, purchasing replacement cartridges from the OEM helps to build good will and customer loyalty.
According to an embodiment, identifier circuits can be manufactured for placement on consumable products. The identifier circuits can include a unique identifier that can be used to identify the consumable product as authentic, that is, as produced by the manufacturer. In addition, the unique identifier can be used as part of a rewards system in which the customer receives a reward for having purchased an authentic product. The unique identifiers can be generated such that it is difficult for a competitor to generate counterfeit unique identifiers for use on the competitors consumable products. For example, the unique identifiers can be unique in that the identifier is not used more than once over a given period of time. That way a competitor cannot create a seemingly authentic counterfeit consumable by simply recycling unique identifiers on discarded consumable products produced by the original manufacturer. Additionally, the unique identifier can be generated from a sufficiently large number space in a sufficiently random way such that the likelihood of guessing a valid unique identifier is low.
In one example, the unique identifier can have a random portion generated by a random number generator and a time portion indicating a time period during which the identifier was generated. Additionally, the unique identifier can have an integrity check portion that can be used to verify the integrity of the identifier without having to compare the identifier to a list of valid identifiers. The unique identifier can be stored on a circuit and attached to the consumable product, such as a printer cartridge. The circuit can be configured to be read by another product that uses the consumable product, such as a printer. In this way, the consumable product may be uniquely identifiable as an authentic product and a customer may be rewarded for purchasing an authentic product. Further details of this embodiment and associated advantages, as well as of other embodiments, will be discussed in more detail below with reference to the drawings.
Referring now to the drawings,
Consumable product 100 can have a machine-readable storage medium 110. The machine-readable storage medium may be any electronic, magnetic, optical, or other physical storage device that contains or stores executable instructions. Thus, the machine-readable storage medium may comprise, for example, various Random Access Memory (RAM), Read Only Memory (ROM), flash memory, and combinations thereof. For example, the machine-readable medium may include a Non-Volatile Random Access Memory (NVRAM), an Electrically Erasable Programmable Read-Only Memory (EEPROM), a storage drive, a NAND flash memory, and the like. Further, the machine-readable storage medium can be computer-readable and non-transitory. In one example, if consumable product 100 is a printer cartridge, machine-readable storage medium 110 may be an EEPROM. The EEPROM may constitute memory already provided on the printer cartridge for other purposes, such as for identifying the type of ink (color or black ink), the size of the ink reservoir, or the like.
Machine-readable storage medium 110 may store a unique identifier 120. Unique identifier 120 can identify consumable 100 as an authentic consumable, that is, a consumable produced by a certain manufacturer, such as an OEM. Unique identifier 120 can be any of various lengths. The length of unique identifier 120 should be sufficient to provide a large enough number space such that it is difficult for someone to randomly generate a valid identifier. In one example, the unique identifier is 72 bits long. Of course, other lengths may be used as well. In some cases, additional memory (such as an additional EEPROM for a printer cartridge) beyond that which is normally included may be added to a consumable to accommodate the unique identifier.
Unique identifier 120 may include various components or portions. Unique identifier 120 may include a random portion 122. Random portion 122 may be a random number generated by a random number generator. Standard random number generators may be used, such as those provided by various programming language libraries. Alternatively, a more robust random number generator may be used that makes use of a standard random number generator in combination with one or more hashing functions, one-way functions, or the like. Random portion 122 may be any of various lengths. In one example, random portion 122 may extend for the length of the unique identifier after the other portions have been filled. As discussed below, since the other portions of the unique identifier 120 are generated according to a particular scheme that potentially may be guessed or discovered, it can be helpful for random portion 122 to be sufficiently long to provide an adequate degree of randomness to the unique identifier 120, so that unique identifier 120 is difficult to guess. In an example where the unique identifier 120 is 72 bits long, the random portion 122 may be 60 bits long. However, the random portion 122 may be shorter, such as 15 or 20 bits long, at the expense of the randomness of the unique identifier 120. Additionally, limiting the length of the random portion 122 may limit the number of unique identifiers that can be generated during a given time period. This may occur because the number space available for a unique identifier produced during a given time period can be dependent on the size of the random portion since the rest of the portions of the unique identifier may have identical values.
Unique identifier 120 may include a time frame portion 124. Time frame portion 124 may indicate a time period when the unique identifier was generated. By tracking the time period of generation and including the corresponding time frame portion in the unique identifier 120, the generation process of the unique identifiers can be made more efficient since uniqueness of the identifier can be verified by comparing the newly generated unique identifier with just the other unique identifiers that have been generated during the current time period, rather than having to compare the newly generated unique identifier with all unique identifiers generated to date. As a result, unique identifier 120 can be considered to be unique because it is not used more than once over a given period of time. Time frame portion 124 should be long enough to accommodate enough time periods such that when the time periods cycle through again, all of the consumables having unique identifiers made during the previous iteration of that time period have been used.
Unique identifier 120 may include an integrity check portion 126. Integrity check portion 126 may be used to verify the integrity of the unique identifier. This integrity verification process can be performed without consulting a list of all valid identifiers to determine whether the unique identifier is in the list. Rather, the integrity check portion 126 may be the result of an algorithm, such as a hash function, applied to part or all of the unique identifier 120. In other words, the integrity check portion 126 may be a type of checksum. Accordingly, to verify the integrity of the unique identifier 120, the same algorithm used to generate the integrity check portion 128 can be applied to the unique identifier and the result can be compared to the integrity check portion 126. Integrity checks may be performed during manufacturing to ensure quality. Integrity checks may also be performed as a first level verification of the consumable by the device using the consumable. For example, if consumable 100 is a printer cartridge, the integrity of the printer cartridge can be checked using the integrity check portion 124. In such an example, the firmware of the printer may store the algorithm to apply to the unique identifier and may compare the result to the integrity check portion 124. Thus, integrity—and to an extent, the authenticity—of the printer cartridge can be verified at the printer without consulting a database of valid unique identifiers.
Scheme portion 220 may indicate a scheme by which the unique identifier is configured to be interpreted. In particular, the scheme portion 220 may indicate to a device configured to use the consumable how to interpret the various components or portions of the unique identifier. For instance, the scheme portion may indicate the format of the unique identifier, the number of bits in the integrity check portion, the portion of the unique identifier to apply the integrity check algorithm to, or the like. In some examples, there can be multiple possible schemes for interpreting a unique identifier, where the appropriate scheme is selected and indicated via the scheme portion 220 at the time of generating the unique identifier. The scheme portion may also be used as a technique for changing the format of the unique identifier over time.
Location portion 240 may indicate a location at which the unique identifier was generated. For example, there may be multiple unique identifier generation systems which can be located in one or more locations. It can be useful to keep track of which system generated the identifier because each system may not be aware of the unique identifiers generated by the other system. This may especially be the case for security reasons if the systems are located in different locations. Accordingly, the location portion 240 may be used to differentiate unique identifiers generated at the different locations and thus ensure that the two locations do not inadvertently generate identical unique identifiers.
Although specific examples of portions of unique identifiers have been provided in
Method 400 may begin at 410 where printer 310 may read unique identifier 322. The unique identifier 322 may be read from a memory circuit or machine-readable storage medium of printer cartridge 320. This can be done upon installation of printer cartridge 320 into printer 310, for example. At 420, printer 310 may read a scheme portion of unique identifier 322 to determine the appropriate scheme for interpreting the identifier. At 430, printer 310 may perform a validation of the identifier based on an integrity check portion of the identifier. Validation of the identifier is explained in more detail below with reference to
At 440, the unique identifier 322 can be sent to server 350 for authentication. In one example, server 350 may authenticate unique identifier 322 by verifying that it is in database 352 of valid unique identifiers. The unique identifiers stored in database 352 may be considered to be valid identifiers because they correspond to identifiers generated during a manufacturing process. Server 350 may modify database 352 to indicate that the unique identifier corresponding to unique identifier 322 has been authenticated, thus removing it from the list of valid identifiers. In addition, if the unique identifier is authentic, server 350 may select one or more rewards offers from rewards database 354 to send to printer 310.
At 450, printer 310 can receive from server 350 an indication regarding the authenticity of the unique identifier 322. The indication may further include one or more rewards offers if the unique identifier was determined to be authentic. Accordingly, if the unique identifier 322 is authentic, a message regarding the authenticity of the printer cartridge 320 may be sent to computer 330 to be displayed to the user via user interface 332. Additionally, the rewards offer(s) may also be presented to the user via user interface 332. If the unique identifier is not authentic, a message may be sent to computer 330 and displayed on user interface 332 that the printer cartridge 320 is not authentic. In some examples, the printer cartridge 320 may also be rejected. A message may be sent to computer 330 and displayed on user interface 332 that the printer cartridge can't be used with printer 310 because it is not an authentic product and thus may not work properly. In another example, a message may be sent to server 350 containing location information of printer 310 or computer 330. This information may be used to investigate the source of counterfeit cartridges, for example.
Method 500 may begin at 510 where printer 310 may calculate a validation value based on at least part of unique identifier 322. The validation value may be calculated using an algorithm stored in printer 310, such as in firmware. At 520, printer 310 may read a validation identifier from printer cartridge 320, such as from a memory circuit of printer cartridge 320. The validation identifier may be a part of unique identifier 322. In particular, the validation identifier may correspond to the integrity check portion described in
Blocks 620 through 640 may be performed for all unique identifier circuits to be produced during the current time period. At 620, a unique identifier can be generated. The unique identifier can be generated by one or more systems configured to generate unique identifiers. The systems may include one or more microprocessors and machine-readable storage mediums. The processors can execute instructions stored in the machine-readable storage mediums for generating the unique identifiers. The unique identifiers may include various components, as described in
At 630, it can be determined whether the generated unique identifier is in the database. If the unique identifier includes a time portion, this determination may be performed more efficiently since the newly generated unique identifier may be compared with only the unique identifiers generated during the current time period. Thus, the number of unique identifiers to be searched may be much less than if all unique identifiers ever generated had to be checked. This also can have the benefit of reducing the size of the database.
At 640, if the newly generated unique identifier is not present in the database, the unique identifier may be stored on a unique identifier circuit. Additionally, the database may be updated to include the newly generated unique identifier. If the newly generated unique identifier is present in the database, this indicates that the unique identifier has already been placed on a previous unique identifier circuit, and the newly generated unique identifier may thus be discarded. If there are more unique identifier circuits to be produced during the current time period, method 600 may return to 620 to generate another unique identifier.
In some embodiments, the system(s) that generate unique identifiers may not follow method 600 exactly. For example, a batch of unique identifiers may be generated first before executing block 630 or 640. In some examples, one or more unique identifiers produced in the batch will not ultimately be used and may be discarded without executing block 630 or 640 with respect to the one or more unique identifiers.
It may be possible that one or more unique identifiers are duplicated during the manufacturing process. This can occur as a result of a software error, a manual error with regards to maintaining the database of generated unique identifiers, or the like. Duplicate unique identifiers may be detected in various ways, such as through investigation in the case of a known manual error. In addition, duplicate unique identifiers may also be detected when adding a batch of newly generated unique identifiers to the master database used for storing and authenticating unique identifiers, such as database 352 of
At 720, at least some unique identifiers generated during the previous time period may be deleted from the database. This deletion does not have to occur within any set time period from the incrementing of the time period. That is, the unique identifiers from the previous time period may be kept in the database for some time even after the manufacturing process is well into the subsequent time period. Eventually, however, at least some of the previous unique identifiers may be deleted since they are not required for checking the uniqueness of identifiers generated during the now current (subsequent) time period. After expiration of the current time period, method 700 may proceed to 710 to increment to another subsequent time period. Before deletion of the unique identifiers, however, they may be stored in another database. For example, the unique identifiers may be stored in the unique identifier database 352 of