Abstract: The present disclosure relates to systems and methods for creating globally unique product codes that can be used in anti-counterfeiting systems. The proposed system includes an initial codes receive module configured to receive one or more initial codes, a hash function based initial code processing module to generate respective hashed initial codes, an aggregator module to aggregate the hashed initial codes into an aggregated hash, a rehash module to rehash the aggregated hash to generate a potentially globally unique code, a collision detection module to match the potentially globally unique code with a code database and a globally unique code determination module to identify the potentially globally unique code as the globally unique code when no match is found for the potentially globally unique code in the code database.
SYSTEM AND METHOD FOR CREATING GLOBALLY UNIQUE PRODUCT CODES
TECHNICAL FIELD
[0001] The present disclosure relates to the field of anti-counterfeiting systems. More particularly, the present disclosure relates to systems and methods for creating globally unique product codes.
BACKGROUND
[0002] Background description includes information that may be useful in understanding the present invention. It is not an admission that any of the information provided herein is prior art or relevant to the presently claimed invention, or that any publication specifically or implicitly referenced is prior art.
[0003] During counterfeiting, inferior quality products are made or sold under a brand name without authorization of a brand owner. Thus, counterfeiting defrauds consumers and tarnishes brand names of legitimate manufacturers and providers of trusted products. Further, in an aspect of counterfeiting, a massive danger to public health is caused when adulterated products are sold in the name of trusted products. Currently, enormous volumes of counterfeit products are sold in market resulting in vast economic losses to the producers and negatively impacting consumers as well as producers of trusted products.
[0004] Many anti-counterfeiting technologies have been developed to protect customers and producers of genuine products from ill-effects of counterfeit products. Some of the these technologies include usage of printing or labeling physical characteristics, digital information, serial numbers or machine readable identifiers on the products. Also, a variety of barcode readers and laser scanning devices have been developed to decode or read barcodes in order to determine authenticity of the products.
[0005] However, the techniques do not prevent duplicity of printed labels or copying of printed product codes or barcodes. Thus, it becomes a challenge to identify counterfeit products when the counterfeit products use duplicate labeling, product code, bar code, and the like. For instance many producers face the problem of counterfeit goods within the supply chain as the product codes may be counterfeited, copied, recorded and utilized again for more than one product making it difficult to detect the counterfeit products from the genuine ones.
2
[0006] Thus, there exists a need in the art to provide secure and improved systems and methods for creating globally unique code for each product which can counter the above mentioned problems.
[0007] As used in the description herein and throughout the claims that follow, the meaning of “a,” “an,” and “the” includes plural reference unless the context clearly dictates otherwise. Also, as used in the description herein, the meaning of “in” includes “in” and “on” unless the context clearly dictates otherwise.
[0008] In some embodiments, the numerical parameters set forth in the written description and attached claims are approximations that can vary depending upon the desired properties sought to be obtained by a particular embodiment. In some embodiments, the numerical parameters should be construed in light of the number of reported significant digits and by applying ordinary rounding techniques. Notwithstanding that the numerical ranges and parameters setting forth the broad scope of some embodiments of the invention are approximations, the numerical values set forth in the specific examples are reported as precisely as practicable. The numerical values presented in some embodiments of the invention may contain certain errors necessarily resulting from the standard deviation found in their respective testing measurements.
[0009] The recitation of ranges of values herein is merely intended to serve as a shorthand method of referring individually to each separate value falling within the range. Unless otherwise indicated herein, each individual value is incorporated into the specification as if it were individually recited herein. All methods described herein can be performed in any suitable order unless otherwise indicated herein or otherwise clearly contradicted by context. The use of any and all examples, or exemplary language (e.g. “such as”) provided with respect to certain embodiments herein is intended merely to better illuminate the invention and does not pose a limitation on the scope of the invention otherwise claimed. No language in the specification should be construed as indicating any non-claimed element essential to the practice of the invention.
[0010] Groupings of alternative elements or embodiments of the invention disclosed herein are not to be construed as limitations. Each group member can be referred to and claimed individually or in any combination with other members of the group or other elements found herein. One or more members of a group can be included in, or deleted from, a group for reasons 3
of convenience and/or patentability. When any such inclusion or deletion occurs, the specification is herein deemed to contain the group as modified thus fulfilling the written description of all groups used in the appended claims.
OBJECTS OF THE INVENTION
[0011] Some of the objects of the present disclosure, which at least one embodiment herein satisfies are as listed herein below.
[0012] It is general object of the present disclosure to provide systems and methods for creating globally unique product codes.
[0013] It is another object of the present disclosure to provide systems and methods for creating globally unique product codes that are unique even across multiple sites and multiple products.
[0014] It is yet another object of the present disclosure to provide systems and methods for creating globally unique product codes that can be used for detection and/or prevention of counterfeiting of products.
SUMMARY
[0015] The present disclosure relates to systems and methods for creating globally unique product codes that can be used in anti-counterfeiting systems to prevent counterfeiting of products.
[0016] An aspect of the present disclosure relates to a system to generate a globally unique code to be associated with a product, the stem including : a non-transitory storage device having embodied therein one or more routines operable to generate the globally unique code to be associated with the product; and one or more processors coupled to the non-transitory storage device and operable to execute the one or more routines, wherein the one or more routines can include: an initial codes receive module, which when executed by the one or more processors, can receive one or more initial codes; a hash function based initial code processing module, which when executed by the one or more processors, can apply separate hash functions on respective one or more initial codes to generate respective hashed initial codes; an aggregator module, which when executed by the one or more processors, can aggregate the hashed initial codes into an aggregated hash using one or more random sequences; a rehash module, which 4
when executed by the one or more processors, can rehash the aggregated hash using a final hash function to generate a potentially globally unique code; a collision detection module, which when executed by the one or more processors, can match the potentially globally unique code with a code database; and a globally unique code determination module, which when executed by the one or more processors, can identify the potentially globally unique code as the globally unique code when no match is found for the potentially globally unique code in the code database.
[0017] In an aspect of the proposed system, at least one of the one or more initial codes can be received from a random code generator.
[0018] In an aspect of the proposed system, at least one of the one or more initial codes can pertain to an attribute of the product.
[0019] In an aspect of the proposed system, the attribute can be based on any or a combination of a batch number, a manufacturing date, an expiry date, a manufacturing attribute and a usage and handling attribute of the product.
[0020] In an aspect of the proposed system, the separate hash functions and/or the final hash function can be generated by a hash function generator.
[0021] In an aspect of the proposed system, any or a combination of the separate hash functions, the final hash function and hashed initial codes can be in separate logical and physical locations.
[0022] In an aspect of the proposed system, in case a match is found for the potentially globally unique code in the code database, the rehash module can be re-executed.
[0023] Another aspect of the present disclosure relates to a method for generating a globally unique code to be associated with a product, the method including steps of: receiving, at a computing device, one or more initial codes; processing, at the computing device, the one or more initial codes, wherein the processing is performed by applying separate hash functions on respective one or more initial codes to generate respective hashed initial codes; aggregating, at the computing device, the hashed initial codes into an aggregated hash using one or more random sequences; rehashing, at the computing device, the aggregated hash using a final hash function to generate a potentially globally unique code; matching, at the computing device, the potentially globally unique code with a code database; and identifying, at the computing device, the 5
potentially globally unique code as the globally unique code when no match is found for the potentially globally unique code in the code database.
[0024] In an aspect of the proposed method, at least one of the one or more initial codes can be received from a random code generator.
[0025] In an aspect of the proposed method, at least one of the one or more initial codes can pertain to an attribute of the product.
[0026] In an aspect of the proposed method, the attribute can be based on any or a combination of a batch number, a manufacturing date, an expiry date, a manufacturing attribute and a usage and handling attribute of the product.
[0027] In an aspect of the proposed method, the separate hash functions and/or the final hash function can be generated by a hash function generator.
[0028] In an aspect of the proposed method, any or a combination of the separate hash functions, the final hash function and hashed initial codes can be in separate logical and physical locations.
[0029] In an aspect of the proposed method, in case a match is found for the potentially globally unique code in the code database, the step of rehashing can be re-executed.
[0030] Various objects, features, aspects and advantages of the inventive subject matter will become more apparent from the following detailed description of preferred embodiments, along with the accompanying drawing figures in which like numerals represent like components.
BRIEF DESCRIPTION OF THE DRAWINGS
[0031] The accompanying drawings are included to provide a further understanding of the present disclosure, and are incorporated in and constitute a part of this specification. The drawings illustrate exemplary embodiments of the present disclosure and, together with the description, serve to explain the principles of the present disclosure.
[0032] In the figures, similar components and/or features may have the same reference label. Further, various components of the same type may be distinguished by following the reference label with a second label that distinguishes among the similar components. If only the first reference label is used in the specification, the description is applicable to any one of the similar components having the same first reference label irrespective of the second reference label.
6
[0033] FIG. 1 illustrates an overall architecture of the proposed system in accordance with an exemplary embodiment of the present disclosure.
[0034] FIG. 2 illustrates exemplary functional modules of the proposed system in accordance with an exemplary embodiment of the present disclosure.
[0035] FIG. 3 illustrates an exemplary flow diagram representing method for generating a globally unique code in accordance with an exemplary embodiment of the present disclosure.
[0036] FIG. 4 illustrates exemplary representation of working of the proposed system and method in accordance with an exemplary embodiment of the present disclosure.
[0037] FIG. 5 illustrates a computer system utilized for implementation of the proposed system in accordance with an exemplary embodiment of the present disclosure.
DETAILED DESCRIPTION
[0038] The following is a detailed description of embodiments of the disclosure depicted in the accompanying drawings. The embodiments are in such detail as to clearly communicate the disclosure. However, the amount of detail offered is not intended to limit the anticipated variations of embodiments; on the contrary, the intention is to cover all modifications, equivalents, and alternatives falling within the spirit and scope of the present disclosure as defined by the appended claims.
[0039] In the following description, numerous specific details are set forth in order to provide a thorough understanding of embodiments of the present invention. It will be apparent to one skilled in the art that embodiments of the present invention may be practiced without some of these specific details.
[0040] Embodiments of the present invention include various steps, which will be described below. The steps may be performed by hardware components or may be embodied in machine-executable instructions, which may be used to cause a general-purpose or special-purpose processor programmed with the instructions to perform the steps. Alternatively, steps may be performed by a combination of hardware, software, and firmware and/or by human operators.
[0041] Embodiments of the present invention may be provided as a computer program product, which may include a machine-readable storage medium tangibly embodying thereon instructions, which may be used to program a computer (or other electronic devices) to perform a 7
process. The machine-readable medium may include, but is not limited to, fixed (hard) drives, magnetic tape, floppy diskettes, optical disks, compact disc read-only memories (CD-ROMs), and magneto-optical disks, semiconductor memories, such as ROMs, PROMs, random access memories (RAMs), programmable read-only memories (PROMs), erasable PROMs (EPROMs), electrically erasable PROMs (EEPROMs), flash memory, magnetic or optical cards, or other type of media/machine-readable medium suitable for storing electronic instructions (e.g., computer programming code, such as software or firmware).
[0042] Various methods described herein may be practiced by combining one or more machine-readable storage media containing the code according to the present invention with appropriate standard computer hardware to execute the code contained therein. An apparatus for practicing various embodiments of the present invention may involve one or more computers (or one or more processors within a single computer) and storage systems containing or having network access to computer program(s) coded in accordance with various methods described herein, and the method steps of the invention could be accomplished by modules, routines, subroutines, or subparts of a computer program product.
[0043] If the specification states a component or feature “may”, “can”, “could”, or “might” be included or have a characteristic, that particular component or feature is not required to be included or have the characteristic.
[0044] As used in the description herein and throughout the claims that follow, the meaning of “a,” “an,” and “the” includes plural reference unless the context clearly dictates otherwise. Also, as used in the description herein, the meaning of “in” includes “in” and “on” unless the context clearly dictates otherwise.
[0045] Exemplary embodiments will now be described more fully hereinafter with reference to the accompanying drawings, in which exemplary embodiments are shown. These exemplary embodiments are provided only for illustrative purposes and so that this disclosure will be thorough and complete and will fully convey the scope of the invention to those of ordinary skill in the art. The invention disclosed may, however, be embodied in many different forms and should not be construed as limited to the embodiments set forth herein. Various modifications will be readily apparent to persons skilled in the art. The general principles defined herein may be applied to other embodiments and applications without departing from the spirit and scope of the invention. Moreover, all statements herein reciting embodiments of the 8
invention, as well as specific examples thereof, are intended to encompass both structural and functional equivalents thereof. Additionally, it is intended that such equivalents include both currently known equivalents as well as equivalents developed in the future (i.e., any elements developed that perform the same function, regardless of structure). Also, the terminology and phraseology used is for the purpose of describing exemplary embodiments and should not be considered limiting. Thus, the present invention is to be accorded the widest scope encompassing numerous alternatives, modifications and equivalents consistent with the principles and features disclosed. For purpose of clarity, details relating to technical material that is known in the technical fields related to the invention have not been described in detail so as not to unnecessarily obscure the present invention.
[0046] Thus, for example, it will be appreciated by those of ordinary skill in the art that the diagrams, schematics, illustrations, and the like represent conceptual views or processes illustrating systems and methods embodying this invention. The functions of the various elements shown in the figures may be provided through the use of dedicated hardware as well as hardware capable of executing associated software. Similarly, any switches shown in the figures are conceptual only. Their function may be carried out through the operation of program logic, through dedicated logic, through the interaction of program control and dedicated logic, or even manually, the particular technique being selectable by the entity implementing this invention. Those of ordinary skill in the art further understand that the exemplary hardware, software, processes, methods, and/or operating systems described herein are for illustrative purposes and, thus, are not intended to be limited to any particular named element.
[0047] Each of the appended claims defines a separate invention, which for infringement purposes is recognized as including equivalents to the various elements or limitations specified in the claims. Depending on the context, all references below to the "invention" may in some cases refer to certain specific embodiments only. In other cases it will be recognized that references to the "invention" will refer to subject matter recited in one or more, but not necessarily all, of the claims.
[0048] All methods described herein can be performed in any suitable order unless otherwise indicated herein or otherwise clearly contradicted by context. The use of any and all examples, or exemplary language (e.g., “such as”) provided with respect to certain embodiments herein is intended merely to better illuminate the invention and does not pose a limitation on the 9
scope of the invention otherwise claimed. No language in the specification should be construed as indicating any non-claimed element essential to the practice of the invention.
[0049] Various terms as used herein are shown below. To the extent a term used in a claim is not defined below, it should be given the broadest definition persons in the pertinent art have given that term as reflected in printed publications and issued patents at the time of filing.
[0050] The present disclosure relates to systems and methods for creating globally unique product codes that can be used in anti-counterfeiting systems to prevent counterfeiting of products.
[0051] An aspect of the present disclosure relates to a system to generate a globally unique code to be associated with a product, the system including : a non-transitory storage device having embodied therein one or more routines operable to generate the globally unique code to be associated with the product; and one or more processors coupled to the non-transitory storage device and operable to execute the one or more routines, wherein the one or more routines can include: an initial codes receive module, which when executed by the one or more processors, can receive one or more initial codes; a hash function based initial code processing module, which when executed by the one or more processors, can apply separate hash functions on respective one or more initial codes to generate respective hashed initial codes; an aggregator module, which when executed by the one or more processors, can aggregate the hashed initial codes into an aggregated hash using one or more random sequences; a rehash module, which when executed by the one or more processors, can rehash the aggregated hash using a final hash function to generate a potentially globally unique code; a collision detection module, which when executed by the one or more processors, can match the potentially globally unique code with a code database; and a globally unique code determination module, which when executed by the one or more processors, can identify the potentially globally unique code as the globally unique code when no match is found for the potentially globally unique code in the code database.
[0052] In an aspect of the proposed system, at least one of the one or more initial codes can be received from a random code generator.
[0053] In an aspect of the proposed system, at least one of the one or more initial codes can pertain to an attribute of the product.
10
[0054] In an aspect of the proposed system, the attribute can be based on any or a combination of a batch number, a manufacturing date, an expiry date, a manufacturing attribute and a usage and handling attribute of the product.
[0055] In an aspect of the proposed system, the separate hash functions and/or the final hash function can be generated by a hash function generator.
[0056] In an aspect of the proposed system, any or a combination of the separate hash functions, the final hash function and hashed initial codes can be in separate logical and physical locations.
[0057] In an aspect of the proposed system, in case a match is found for the potentially globally unique code in the code database, the rehash module can be re-executed.
[0058] Another aspect of the present disclosure relates to a method for generating a globally unique code to be associated with a product, the method including steps of: receiving, at a computing device, one or more initial codes; processing, at the computing device, the one or more initial codes, wherein the processing is performed by applying separate hash functions on respective one or more initial codes to generate respective hashed initial codes; aggregating, at the computing device, the hashed initial codes into an aggregated hash using one or more random sequences; rehashing, at the computing device, the aggregated hash using a final hash function to generate a potentially globally unique code; matching, at the computing device, the potentially globally unique code with a code database; and identifying, at the computing device, the potentially globally unique code as the globally unique code when no match is found for the potentially globally unique code in the code database.
[0059] In an aspect of the proposed method, at least one of the one or more initial codes can be received from a random code generator.
[0060] In an aspect of the proposed method, at least one of the one or more initial codes can pertain to an attribute of the product.
[0061] In an aspect of the proposed method, the attribute can be based on any or a combination of a batch number, a manufacturing date, an expiry date, a manufacturing attribute and a usage and handling attribute of the product.
[0062] In an aspect of the proposed method, the separate hash functions and/or the final hash function can be generated by a hash function generator.
11
[0063] In an aspect of the proposed method, any or a combination of the separate hash functions, the final hash function and hashed initial codes can be in separate logical and physical locations.
[0064] In an aspect of the proposed method, in case a match is found for the potentially globally unique code in the code database, the step of rehashing can be re-executed.
[0065] Various objects, features, aspects and advantages of the inventive subject matter will become more apparent from the following detailed description of preferred embodiments, along with the accompanying drawing figures in which like numerals represent like components.
[0066] FIG. 1 illustrates an overall architecture of the proposed system in accordance with an exemplary embodiment of the present disclosure.
[0067] In an aspect, the globally unique code generating system (104), referred to as the system (104) hereinafter, can be configured/operatively connected with a random code generator (106) that can generate random codes that can be used as one or more initial codes as the input to the system (104). In an aspect, the initial codes can pertain to/based upon an attribute of the product that can be based on any or a combination of a batch number, a manufacturing date, an expiry date, a manufacturing attribute and a usage and handling attribute of the product. It would be appreciated that the attribute of the product can also be based on attribute of a company/organization that manufactures the product and the site at which the product is manufactured. In this manner, proposed system can generate globally unique product codes that are unique even across multiple sites and multiple products. Further, this feature aids in creating globally unique product code that can be different for different manufacturing sites as well as different for different companies where uniqueness is maintained even across multiple products from the same company.
[0068] In an aspect, the system (104) can be configured/operatively connected with a hash function generator (108) that can generate separate hash functions. Hash functions can be any function that is used to map data of arbitrary size to data of fixed size. The initial codes, received by the system (104) can be processed by applying separate hash functions generated by the hash function generator (108) to generate respective hashed initial codes. Thus, each of the initial code can be converted to a hashed code of fixed size. In an exemplary aspect, any or both of the separate hash functions and hashed initial codes can be in separate logical and physical locations. Logical address can be a virtual address that can be used as a reference to access 12
physical address that is a location in the memory unit. Thus, each of the hash function can be stored in different locations, say for example, different columns, different tables or even different memory locations.
[0069] In an aspect, the system (104) can aggregate the hashed initial codes by using one or more random sequences to give an aggregated hash. Thus, the aggregated hash does not depend on sequence of the hashed initial codes. Further, the system (104) can rehash the aggregated hash using a final hash function to generate a potentially globally unique code. In an aspect, the final hash function can be generated by the hash generator (108).
[0070] In an aspect, the system (104) can be operatively coupled with a code database (110) that can store product codes that can be used to identify the product (102). The code database can contain pre-determined product codes that can include as well the product codes formed by process as elaborated above. In order to avoid duplication, the system (104) can match the potentially globally unique code with the codes already in the code database (110) to detect collisions (that is, to detect any duplication). In case no match is found for the potentially globally unique code in the code database (110), the potentially globally unique code can be identified as the globally unique code. The obtained globally unique code can then added to the code database (110) so as to be included in collision checks for potentially globally unique codes generated thereon.
[0071] On the contrary, if a match is found, the collision is detected and the above mentioned technique of rehashing can be performed again. Thus, the rehashing of the aggregated hash is performed until a globally unique code is obtained. In an alternate embodiment, the rehashing of the obtained potentially globally unique code can be performed iteratively, until the globally unique code is obtained. It would be appreciated that, above mentioned technique ensures that each product is associated with a unique code such that duplicity of codes is prevented.
[0072] In an embodiment, the any or a combination of the code database (110), the random code generator (106) or the hash function generator (108) can be configured at in any server/cloud/central computing device. It would be appreciated that, in an aspect any or a combination of the code database (110), the random code generator (106) or the hash function generator (108) can be configured inside the system (104).
13
[0073]
In an aspect, the system (104) can be associated with a product (102) to detect and prevent counterfeiting. It would be appreciated that in an embodiment, the globally unique code generated by the system (104) can be associated with the product (102) that can be manufactured at any manufacturing plant or an industrial plant where raw materials or goods are processed. In another exemplary embodiment, the association of the globally unique product code can be done at a warehouse that stores the manufactured product (102). Further, it would be appreciated that, the association at the manufacturing plant or the warehouse is exemplary in nature and such an association can be performed at any stage of the supply chain.
[0074] FIG. 2 illustrates exemplary functional modules of the proposed system in accordance with an exemplary embodiment of the present disclosure. In an exemplary embodiment, the system can include an initial codes receive module (202), a hash function based initial code processing module (204), an aggregator module (206), a rehash module (208), a collision detection module (210), and a globally unique code determination module (212).
[0075] In one embodiment, the proposed system may include at least one processor (not shown), an input/output (I/O) interface (not shown), and a memory (not shown). The processor may be implemented as one or more microprocessors, microcomputers, microcontrollers, digital signal processors, central processing units, state machines, logic circuitries, and/or any devices that manipulate signals based on operational instructions. Among other capabilities, the at least one processor is configured to fetch and execute computer-readable instructions stored in the memory. The I/O interface may include a variety of software and hardware interfaces, for example, a web interface, a graphical user interface, and the like. The I/O interface may allow the interactive kiosk to interact with a user directly. Further, the I/O interface may enable the interactive kiosk to communicate with other computing devices, such as web servers and external data servers (not shown). The I/O interface can facilitate multiple communications within a wide variety of networks and protocol types, including wired networks, for example, LAN, cable, etc., and wireless networks, such as WLAN, cellular, or satellite. The I/O interface may include one or more ports for connecting a number of devices to one another or to another server. The memory may include any computer-readable medium known in the art including, for example, volatile memory, such as static random access memory (SRAM) and dynamic random access memory (DRAM), and/or non-volatile memory, such as read only memory (ROM), erasable 14
programmable ROM, flash memories, hard disks, optical disks, and magnetic tapes. The memory may include modules and data.
[0076] In an aspect, the proposed system can include an initial codes receive module (202) that can be configured to receive one or more initial codes. In an embodiment, the initial codes receive module (202) can be operatively coupled with a random code generator (106) that provides initial codes as input to the initial codes receive module (202). The initial codes can pertain to/based upon an attribute of the product that can be based on any or a combination of a batch number, a manufacturing date, an expiry date, a manufacturing attribute and a usage and handling attribute of the product. In an exemplary aspect, the attribute of the product can be based on attribute of a company/organization/brand that manufactures the product and site at which the product is manufactured. It would be appreciated that the combination of above mentioned attributes can maintain uniqueness of the globally unique code even across multiple products from the same company.
[0077] In an aspect, the system can include a hash function based initial code processing module (204) operatively coupled with a hash function generator (108). The hash function generator (108) can generate separate hash functions to perform hashing of initial codes using hash function based initial code processing module (204). Thus, the initial codes, received by the initial codes receive module (202), can be processed by hash function based initial code processing module (204) by applying separate hash functions generated by the hash function generator (108) to generate respective hashed initial codes. In an exemplary aspect, the separate hash functions and/or hashed initial codes can be in separate logical and physical locations. Logical address can be a virtual address that can be used as a reference to access physical address that is location in the memory unit. Thus, each of the hash function and/or hashed initial codes can be stored in different locations, say for example, different columns, different tables or even different memory locations.
[0078] In an aspect, the proposed system can include an aggregator module (206) that aggregates the hashed initial codes to give an aggregated hash. The aggregated hash does not depend on sequence of the hashed initial codes and can be realized by using one or more random sequences of the hashed initial codes. Further, the proposed system can include a rehash module (208) configured to hash the aggregated hash using a final hash function to generate a potentially globally unique code. In an aspect, the rehash module (208) can be operatively coupled with the 15
hash function generator (108). Thus, the final hash function that is used for hashing of the aggregated hash can be generated by the hash generator (108).
[0079] In an aspect, the proposed system can include a collision detection module (210). In an aspect, the collision detection module (210) can be operatively coupled with code database (110) that can store pre-determined product codes as well the product codes formed by process as elaborated herein. The collision detection module (212) can detect collisions (that is duplication of a product code generated by proposed system with one already in the code database (110)) by matching the potentially globally unique code with product codes already in the code database (110). In case no match is found for the potentially globally unique code in the code database (110), the potentially globally unique code can be identified as the globally unique code. The obtained globally unique code can then be added to the code database (110) so as to be included in collision checks for potentially globally unique codes generated thereon. On the contrary, if a match is found, the collision is detected and the above mentioned technique of rehashing can be performed again. In an aspect, when a match is found rehashing of aggregated hash can be performed, in an alternate aspect, the rehashing of the potentially globally unique code can be performed. It would be appreciated that the rehashing is performed iteratively till the globally unique code is obtained. This above mentioned technique ensures that no two product codes are same and thus can be used to prevent and/or detect counterfeiting.
[0080] It would be appreciated that an appropriate method to decode the globally unique code can also be employed either within the system as elaborated herein or as a separate system that takes the globally unique code as input. In this manner, the attributes associated with the product such as the product number, batch number, manufacturing attribute, company attribute, and the like can be found using the globally unique code.
[0081] FIG. 3 illustrates an exemplary flow diagram representing a method for generating a globally unique code in accordance with an exemplary embodiment of the present disclosure.
[0082] In an aspect, the proposed method can be described in general context of computer executable instructions. Generally, computer executable instructions can include routines, programs, objects, components, data structures, procedures, modules, functions, etc., that perform particular functions or implement particular abstract data types. The method can also be practiced in a distributed computing environment where functions are performed by 16
remote processing devices that are linked through a communications network. In a distributed computing environment, computer executable instructions may be located in both local and remote computer storage media, including memory storage devices.
[0083] The order in which the method as described is not intended to be construed as a limitation, and any number of the described method blocks can be combined in any order to implement the method or alternate methods. Additionally, individual blocks may be deleted from the method without departing from the spirit and scope of the subject matter described herein. Furthermore, the method can be implemented in any suitable hardware, software, firmware, or combination thereof. However, for ease of explanation, in the embodiments described below, the method may be considered to be implemented in the above described system.
[0084] In an aspect, the method can include a step of receiving, at step 302, one or more initial codes. In an embodiment, a random code generator (106) can provide initial codes as input for the step of receiving in the proposed method. The initial codes can pertain to an attribute of the product that can be based on any or a combination of a batch number, a manufacturing date, an expiry date, a manufacturing attribute and a usage and handling attribute of the product. Further, the attribute of the product can also be based on attribute of a company/organization that manufactures the product and the site at which the product is manufactured. Therefore, it would be appreciated that the above mentioned attributes in combination can aid in maintaining uniqueness of the globally unique code even across multiple products from the same company.
[0085] In an aspect, the method can include, at step304, processing the one or more initial codes to generate respective hashed initial codes. Separate hash functions can be obtained from the hash generator (108) and can be applied to the one or more initial codes to generate respective hashed initial codes. In an exemplary aspect, the separate hash functions and/or hashed initial codes can be in separate logical and physical locations. Logical address can be a virtual address that can be used as a reference to access physical address that is location in the memory unit. Thus, each of the hash function and/or hashed initial codes can be stored in different locations, say for example, different columns, different tables or even different memory locations.
[0086] In an aspect, the method can include, at step 306, aggregating the hashed initial codes into an aggregated hash (306). The aggregated hash obtained by using one or more random 17
sequences of the hashed initial codes. Further, in an aspect, the method can include, at step 308, rehashing the aggregated hash to generate a potentially globally unique code. The step 308 can be performed by obtaining a final hash function and applying the final hash function to the aggregated hash. In an aspect, the final hash function for rehashing the aggregated hash can be obtained from the hash function generator (108).
[0087] In an aspect, the method can include, at step 310, matching the potentially globally unique code with codes already in a code database. Step 310 is performed to detect collision of the potentially globally unique code with pre-determined product codes saved in the code database (110) as well product codes formed by process as elaborated herein. At step 312, the condition is checked whether a match is found. In an occasion when no match is found for the potentially globally unique code in the code database (110), the potentially globally unique code can be identified as the globally unique code, as illustrated at step 314. In an aspect, the obtained globally unique code can then be added to the code database (110) so as to be included in collision checks for potentially globally unique codes generated thereon. On the contrary, if a match is found, the collision is detected and the above mentioned step 308 of rehashing the aggregated hash can be executed again. Therefore, it would be appreciated that the rehashing of aggregated hash is performed iteratively till the globally unique code is obtained. In an alternate embodiment, the rehashing of the potentially globally unique code is performed till a globally unique code is obtained. This above mentioned technique ensures that no two product codes are same and thus can be used to prevent and/or detect counterfeiting.
[0088] FIG. 4 illustrates an exemplary representation of working of the proposed system in accordance with an exemplary embodiment of the present disclosure. In an aspect, a random code generator (106) can provide initial code 1 (402-1), initial code 2 (402-2),..., initial code n (402-n), collectively referred to as initial codes (402) hereinafter. Further, hash function generator (108) can provide hash functions 404-1,404-2,.., 404-n, collectively referred to as hash functions (404) hereinafter. The proposed system can enable processing of the initial codes (402) using separate hash functions (404) to generate respective hashed initial codes 406-1,406-2,.., 406-n, collectively referred to as hashed initial codes (406) hereinafter. The hashed initial codes (406) can be aggregated by the proposed system to generate aggregated hash (408). The aggregated hash (408) is obtained by using one or more random sequences of the hashed initial codes (406). The aggregated hash (408) can be rehashed using a final hash function (410) to
18
generate a potentially globally unique code (412). This potentially globally unique code (412) is matched with the code database (110) to detect collision, as illustrated at 414. If no match is found for the potentially globally unique code (412) in the code database (110), the potentially globally unique code can be identified as the globally unique code at step (416). Further, the obtained globally unique code (416) can be stored to the code database (110). Whereas, in case if a match is found that is, the collision is detected, then rehashing can be executed again. Therefore, it would be appreciated that the technique of rehashing is performed iteratively till the globally unique code is received. This above mentioned technique ensures that no two product codes are same and thus, can be used to prevent and/or detect counterfeiting.
[0089] It would be appreciated that various aspects of the present disclosure can be fully or partially implemented with hardware components or can be tangibly embodied on a computer-readable storage medium in the form of machine-executable instructions. For example, embodiments of the present disclosure can be incorporated in a portable hardware device which can be enabled to generate as well as decode the globally unique codes. Alternatively, the embodiments of the present disclosure can be implemented using a combination of hardware, software, and/or firmware.
[0090] FIG. 5 illustrates a computer system utilized for implementation of the proposed system in accordance with an exemplary embodiment of the present disclosure. In an embodiment, computer system (500) can enable various aspects of the present disclosure. Embodiments of the present disclosure include various steps, which have been described above. A variety of these steps may be performed by hardware components or may be tangibly embodied on a computer-readable storage medium in the form of machine-executable instructions, which may be used to cause a general-purpose or special-purpose processor programmed with instructions to perform these steps. Alternatively, the steps may be performed by a combination of hardware, software, and/or firmware. As shown in the figure, computer system (500) includes an external storage device (510), a bus (520), a main memory (530), a read only memory (540), a mass storage device (550), communication port (560), and a processor (570). A person skilled in the art will appreciate that computer system (500) may include more than one processor and communication ports. Examples of processor (570) include, but are not limited to, an Intel® Itanium® or Itanium 2 processor(s), or AMD® Opteron® or Athlon MP® processor(s), Motorola® lines of processors, FortiSOC™ system on a chip processors or other 19
future processors. Processor (570) may include various modules associated with embodiments of the present invention. Communication port (560) can be any of an RS-232 port for use with a modem based dialup connection, a 10/100 Ethernet port, a Gigabit or 10 Gigabit port using copper or fibre, a serial port, a parallel port, or other existing or future ports. Communication port (560) may be chosen depending on a network, such a Local Area Network (LAN), Wide Area Network (WAN), or any network to which computer system (500) connects. Memory (530) can be Random Access Memory (RAM), or any other dynamic storage device commonly known in the art. Read only memory (540) can be any static storage device(s) e.g., but not limited to, a Programmable Read Only Memory (PROM) chips for storing static information e.g., start-up or BIOS instructions for processor (570). Mass storage (550) may be any current or future mass storage solution, which can be used to store information and/or instructions. Exemplary mass storage solutions include, but are not limited to, Parallel Advanced Technology Attachment (PATA) or Serial Advanced Technology Attachment (SATA) hard disk drives or solid-state drives (internal or external, e.g., having Universal Serial Bus (USB) and/or Firewire interfaces), e.g. those available from Seagate (e.g., the Seagate Barracuda 7200 family) or Hitachi (e.g., the Hitachi Deskstar 7K1000), one or more optical discs, Redundant Array of Independent Disks (RAID) storage, e.g. an array of disks (e.g., SATA arrays), available from various vendors including Dot Hill Systems Corp., LaCie, Nexsan Technologies, Inc. and Enhance Technology, Inc. Bus (520) communicatively couples processor(s) (570) with the other memory, storage and communication blocks. Bus (520) can be, e.g. a Peripheral Component Interconnect (PCI) / PCI Extended (PCI-X) bus, Small Computer System Interface (SCSI), USB or the like, for connecting expansion cards, drives and other subsystems as well as other buses, such a front side bus (FSB), which connects processor (570) to software system. Optionally, operator and administrative interfaces, e.g. a display, keyboard, and a cursor control device, may also be coupled to bus (520) to support direct operator interaction with computer system (500). Other operator and administrative interfaces can be provided through network connections connected through communication port (560). External storage device (510) can be any kind of external hard-drives, floppy drives, IOMEGA® Zip Drives, Compact Disc - Read Only Memory (CD-ROM), Compact Disc - Re-Writable (CD-RW), Digital Video Disk - Read Only Memory (DVD-ROM). Components described above are meant only to exemplify various possibilities. In no
20
way should the aforementioned exemplary computer system limit the scope of the present disclosure.
[0091] It should be apparent to those skilled in the art that many more modifications besides those already described are possible without departing from the inventive concepts herein. The inventive subject matter, therefore, is not to be restricted except in the spirit of the appended claims. Moreover, in interpreting both the specification and the claims, all terms should be interpreted in the broadest possible manner consistent with the context. In particular, the terms “comprises” and “comprising” should be interpreted as referring to elements, components, or steps in a non-exclusive manner, indicating that the referenced elements, components, or steps may be present, or utilized, or combined with other elements, components, or steps that are not expressly referenced. Where the specification claims refers to at least one of something selected from the group consisting of A, B, C ….and N, the text should be interpreted as requiring only one element from the group, not A plus N, or B plus N, etc. The foregoing description of the specific embodiments will so fully reveal the general nature of the embodiments herein that others can, by applying current knowledge, readily modify and/or adapt for various applications such specific embodiments without departing from the generic concept, and, therefore, such adaptations and modifications should and are intended to be comprehended within the meaning and range of equivalents of the disclosed embodiments. It is to be understood that the phraseology or terminology employed herein is for the purpose of description and not of limitation. Therefore, while the embodiments herein have been described in terms of preferred embodiments, those skilled in the art will recognize that the embodiments herein can be practiced with modification within the spirit and scope of the appended claims.
[0092] While embodiments of the present disclosure have been illustrated and described, it will be clear that the disclosure is not limited to these embodiments only. Numerous modifications, changes, variations, substitutions, and equivalents will be apparent to those skilled in the art, without departing from the spirit and scope of the disclosure, as described in the claims.
ADVANTAGES OF THE INVENTION
[0093] The present disclosure provides systems and methods for creating globally unique product codes.
21
[0094] The present disclosure provides systems and methods for creating globally unique product codes that are unique even across multiple sites and multiple products.
[0095] The present disclosure provides systems and methods for creating globally unique product codes that can be used for detection and prevention of counterfeiting of products.
We Claim:
1. A system to generate a globally unique code to be associated with a product, said system comprising:
a non-transitory storage device having embodied therein one or more routines operable to generate the globally unique code to be associated with the product; and
one or more processors coupled to the non-transitory storage device and operable to execute the one or more routines, wherein the one or more routines include:
an initial codes receive module, which when executed by the one or more processors, receives one or more initial codes;
a hash function based initial code processing module, which when executed by the one or more processors, applies separate hash functions on respective one or more initial codes to generate respective hashed initial codes;
an aggregator module, which when executed by the one or more processors, aggregates the hashed initial codes into an aggregated hash using one or more random sequences;
a rehash module, which when executed by the one or more processors, rehashes the aggregated hash using a final hash function to generate a potentially globally unique code;
a collision detection module, which when executed by the one or more processors, matches the potentially globally unique code with a code database; and
a globally unique code determination module, which when executed by the one or more processors, identifies the potentially globally unique code as the globally unique code when no match is found for the potentially globally unique code in the code database.
2. The system of claim 1, wherein at least one of the one or more initial codes is received from a random code generator.
3. The system of claim 1, wherein at least one of the one or more initial codes pertains to an attribute of the product.
23
4. The system of claim 3, wherein the attribute is based on any or a combination of a batch number, a manufacturing date, an expiry date, a manufacturing attribute and a usage and handling attribute of the product.
5. The system of claim 1, wherein the separate hash functions and/or the final hash function are generated by a hash function generator.
6. The system of claim 1, wherein any or a combination of the separate hash functions, the final hash function, and the hashed initial codes are in separate logical and physical locations.
7. The system of claim 1, wherein in case a match is found for the potentially globally unique code in the code database, the rehash module is re-executed.
8. A method for generating a globally unique code to be associated with a product, the method comprising steps of:
receiving, at a computing device, one or more initial codes;
processing, at the computing device, the one or more initial codes, wherein the processing is performed by applying separate hash functions on respective one or more initial codes to generate respective hashed initial codes;
aggregating, at the computing device, the hashed initial codes into an aggregated hash using one or more random sequences;
rehashing, at the computing device, the aggregated hash using a final hash function to generate a potentially globally unique code;
matching, at the computing device, the potentially globally unique code with a code database; and
identifying, at the computing device, the potentially globally unique code as the globally unique code when no match is found for the potentially globally unique code in the code database.
9. The method of claim 8, wherein at least one of the one or more initial codes is received from a random code generator.
10. The method of claim 8, wherein at least one of the one or more initial codes pertains to an attribute of the product.
24
11. The method of claim 10, wherein the attribute is based on any or a combination of a batch number, a manufacturing date, an expiry date, a manufacturing attribute and a usage and handling attribute of the product.
12. The method of claim 8, wherein the separate hash functions and/or the final hash function are generated by a hash function generator.
13. The method of claim 8, wherein any or a combination of the separate hash functions, final hash function and hashed initial codes are in separate logical and physical locations.
14. The system of claim 8, wherein in case a match is found for the potentially globally unique code in the code database, the step of rehashing is re-executed.
| # | Name | Date |
|---|---|---|
| 1 | 201711027622-FER.pdf | 2022-02-02 |
| 1 | 201711027622-STATEMENT OF UNDERTAKING (FORM 3) [03-08-2017(online)].pdf | 2017-08-03 |
| 2 | 201711027622-FORM 18 [10-12-2020(online)].pdf | 2020-12-10 |
| 2 | 201711027622-FORM FOR SMALL ENTITY(FORM-28) [03-08-2017(online)].pdf | 2017-08-03 |
| 3 | 201711027622-OTHERS-050218-.pdf | 2018-02-27 |
| 3 | 201711027622-FORM FOR SMALL ENTITY [03-08-2017(online)].pdf | 2017-08-03 |
| 4 | 201711027622-EVIDENCE FOR REGISTRATION UNDER SSI(FORM-28) [03-08-2017(online)].pdf | 2017-08-03 |
| 4 | 201711027622-Correspondence-050218.pdf | 2018-02-09 |
| 5 | 201711027622-OTHERS-050218.pdf | 2018-02-09 |
| 5 | 201711027622-EVIDENCE FOR REGISTRATION UNDER SSI [03-08-2017(online)].pdf | 2017-08-03 |
| 6 | 201711027622-Proof of Right (MANDATORY) [02-02-2018(online)].pdf | 2018-02-02 |
| 6 | 201711027622-DRAWINGS [03-08-2017(online)].pdf | 2017-08-03 |
| 7 | 201711027622-DECLARATION OF INVENTORSHIP (FORM 5) [03-08-2017(online)].pdf | 2017-08-03 |
| 7 | 201711027622-Correspondence-280817.pdf | 2017-08-31 |
| 8 | 201711027622-Power of Attorney-280817.pdf | 2017-08-31 |
| 8 | 201711027622-COMPLETE SPECIFICATION [03-08-2017(online)].pdf | 2017-08-03 |
| 9 | 201711027622-FORM-26 [18-08-2017(online)].pdf | 2017-08-18 |
| 9 | abstract.jpg | 2017-08-10 |
| 10 | 201711027622-FORM-26 [18-08-2017(online)].pdf | 2017-08-18 |
| 10 | abstract.jpg | 2017-08-10 |
| 11 | 201711027622-COMPLETE SPECIFICATION [03-08-2017(online)].pdf | 2017-08-03 |
| 11 | 201711027622-Power of Attorney-280817.pdf | 2017-08-31 |
| 12 | 201711027622-Correspondence-280817.pdf | 2017-08-31 |
| 12 | 201711027622-DECLARATION OF INVENTORSHIP (FORM 5) [03-08-2017(online)].pdf | 2017-08-03 |
| 13 | 201711027622-DRAWINGS [03-08-2017(online)].pdf | 2017-08-03 |
| 13 | 201711027622-Proof of Right (MANDATORY) [02-02-2018(online)].pdf | 2018-02-02 |
| 14 | 201711027622-EVIDENCE FOR REGISTRATION UNDER SSI [03-08-2017(online)].pdf | 2017-08-03 |
| 14 | 201711027622-OTHERS-050218.pdf | 2018-02-09 |
| 15 | 201711027622-Correspondence-050218.pdf | 2018-02-09 |
| 15 | 201711027622-EVIDENCE FOR REGISTRATION UNDER SSI(FORM-28) [03-08-2017(online)].pdf | 2017-08-03 |
| 16 | 201711027622-FORM FOR SMALL ENTITY [03-08-2017(online)].pdf | 2017-08-03 |
| 16 | 201711027622-OTHERS-050218-.pdf | 2018-02-27 |
| 17 | 201711027622-FORM 18 [10-12-2020(online)].pdf | 2020-12-10 |
| 17 | 201711027622-FORM FOR SMALL ENTITY(FORM-28) [03-08-2017(online)].pdf | 2017-08-03 |
| 18 | 201711027622-STATEMENT OF UNDERTAKING (FORM 3) [03-08-2017(online)].pdf | 2017-08-03 |
| 18 | 201711027622-FER.pdf | 2022-02-02 |
| 1 | SearchHistory1E_01-02-2022.pdf |