Method and system for providing unique code on packaging for liquid food

By using encryption algorithms to generate and structure code on the packaging, the problem of lack of globally unique code and security in the prior art is solved, and unique identification and efficient search on the packaging are achieved.

CN111886616BActive Publication Date: 2025-04-04TETRA LAVAL HOLDINGS & FINANCE SA
View PDF 2 Cites 0 Cited by

Patent Information

Application Number
CN201980019025.7
Authority / Receiving Office
CN · China
Patent Type
Patents(China)
Current Assignee / Owner
Priority Date
2018-03-14
Filing Date
2019-03-07
Publication Date
2025-04-04
Estimated Expiration
2039-03-07

AI Technical Summary

Technical Problem

The prior art lacks a widely adopted, optimal and robust approach to delivering globally unique code on packaging, and it is difficult to prevent the risk of fraudulent code generation and guessing valid code.

Method used

By obtaining the code definition data and payload data, the predefined encryption algorithm generates the encrypted payload data and includes it in the code, combining the structure of the header part and the payload part to ensure the uniqueness and security of the code.

Benefits of technology

It implements the world's unique code on the packaging, reducing the risk of fraudulent code generation and guessing valid code, while supporting quick rejection of error codes and efficient search of code in databases.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure CN111886616B_ABST
    Figure CN111886616B_ABST
Patent Text Reader

Abstract

A unique code for marking a liquid food package is generated using a header portion (40) containing unencrypted code definition data ([E], [G]) representing a code structure and / or code generation method, and a payload portion (41) containing encrypted payload data ([EP]). The encryption ensures that the code is sufficiently encrypted to make guessing and fraudulent code generation difficult. The payload data before encryption can be defined to be unique in each code, thereby also making the code unique. The payload data before encryption can also be structured to enable efficient search of the code in a database. When read from the package, the code can be processed in the following manner: extracting the code definition data ([E], [G]), identifying the payload portion (41), extracting the encrypted payload data ([EP]), recreating the code by decryption, and searching the code in a database based on the payload data or one or more subsets thereof.
Need to check novelty before this filing date? Find Prior Art

Description

Technical Field

[0001] The present invention relates generally to the manufacture of packaging for liquid food products and in particular to providing a code on such packaging. Background Art

[0002] Billions of litres of water, milk, juice and other liquid foods are consumed every day around the world. Most of these liquid foods are distributed in paper-based packaging, also known as cardboard packaging. These packages are produced to protect the nutritional value and taste of the liquid food inside. Basic technologies have greatly facilitated the packaging and distribution of liquid foods around the world.

[0003] It is known to provide this and other types of packaging for liquid foods with codes, for example to indicate the expiry date or origin of the liquid food in the respective packaging. Such codes are usually applied on the packaging in plain text so that they can be read and understood by the consumer.

[0004] To date, there is no widely adopted, optimal and robust technology for providing a code on a package to uniquely identify each individual package containing a liquid food product. Summary of the invention

[0005] It is an object of the present invention to at least partially overcome one or more limitations of the prior art.

[0006] Another object is to provide a technology that makes it possible to provide packaging with a globally unique code.

[0007] Another object is to provide such a technique that mitigates the risk of fraudulently generating a valid code and / or thwarts efforts to guess a valid code based on another code or by using a random mechanism.

[0008] One or more of these objects, as well as other objects that may appear from the description below, are achieved at least in part by a method of generating a code, a computer-readable medium, a code, a system and a method for processing a code according to the independent claims, and their embodiments as defined by the dependent claims.

[0009] A first aspect of the present invention is a method for generating a code to uniquely identify a package for a liquid food. The method comprises: obtaining code definition data representing at least one of a structure of the code and a method for generating the code; obtaining payload data unique to each package; operating a predefined encryption algorithm on the payload data to generate the encrypted payload data; including the code definition data in a predefined header portion, the predefined header portion being used for unencrypted data of the code of the corresponding package; and including the encrypted payload data in a predefined payload portion of the code of the corresponding package.

[0010] Additionally, in some embodiments, operating the predefined encryption algorithm includes: selecting an encryption key, and the method further includes: including key identification data representing the selected encryption key into the predefined header portion.

[0011] Additionally, in some embodiments, the selecting the encryption key comprises: obtaining a random number, and selecting the encryption key from a predefined set of encryption keys based on the random number, wherein the key identification data represents the selected encryption key.

[0012] Additionally, in some embodiments, the key identification data further indicates a version number of the predefined encryption key set.

[0013] Additionally, in some embodiments, the encryption key selected is a private key.

[0014] Additionally, in some embodiments, the method represented by the code definition data includes the predefined encryption algorithm.

[0015] Additionally, in some embodiments, the method further comprises: operating a hash function on the encrypted payload data to generate hash data, and including the hash data as a readable sub-portion of the header portion.

[0016] Additionally, in some embodiments, the hash data is generated as a digital signature.

[0017] Additionally, in some embodiments, the method further comprises acquiring location data representative of a geographic location and including the location data in the payload data so as to be common to all packages originating from a production unit at the geographic location.

[0018] Additionally, in some embodiments, the location data indicates at least one of a producer, a manufacturer, a production line, and a production facility.

[0019] Additionally, in some embodiments, the method further comprises: acquiring index data, the index data enabling grouping of sequentially generated codes; and including the index data in the payload data.

[0020] Additionally, in some embodiments, obtaining the index data includes obtaining a current value of at least one sequential counter, wherein the at least one sequential counter is configured to output an increasing or decreasing sequential value over time.

[0021] Additionally, in some embodiments, the index data is acquired to include a combination of current values ​​output by a plurality of sequential counters.

[0022] Additionally, in some embodiments, at least a portion of the index data is retrieved to represent a current time.

[0023] Additionally, in some embodiments, the method further comprises obtaining random data for each package and including the random data in the payload data.

[0024] Additionally, in some embodiments, obtaining the random data includes obtaining random values ​​from a random counter that is operated to intermittently arrange values ​​belonging to a predetermined range of mutually unique values ​​in a random order, and then outputting at least a subset of the values ​​one after another in the random order.

[0025] In addition, in some embodiments, the method also includes: obtaining a random value for each package from a random counter, the random counter being configured to generate random values ​​that belong to a predetermined range and are mutually unique within a predefined time period, the predefined time period being the minimum time unit for the current time; and including the random value in the payload data.

[0026] Additionally, in some embodiments, the code is generated based on a batch generation request, and the at least one sequential counter includes a batch counter, wherein the method further comprises: incrementing or decrementing the batch counter for each batch generation request, and wherein obtaining the index data further comprises obtaining a current value of the batch counter.

[0027] Additionally, in some embodiments, the at least one sequential counter comprises a package counter, wherein the method further comprises incrementing or decrementing the package counter for each package, and wherein obtaining the index data further comprises obtaining a current value of the package counter.

[0028] In addition, in some embodiments, the method is performed by a first code generator included in the same code generator group, and the method also includes: obtaining redundant data that distinguishes the first code generator from other code generators in the group, and including the redundant data in at least one of the header part and the payload data.

[0029] Additionally, in some embodiments, the encrypted payload data and the code definition data are included in the code as corresponding sequences of binary values.

[0030] Additionally, in some embodiments, the method further comprises: marking the package with the code.

[0031] Additionally, in some embodiments, the marking comprises embedding the code into a data carrier on one of the packages for the liquid food, on a sheet of material to form a container portion of the one of the packages, or on an element to be combined with the container portion.

[0032] Additionally, in some embodiments, the marking further comprises: converting the code into a format suitable for embedding into the data carrier.

[0033] Additionally, in some embodiments, the marking includes controlling a printer or ablation device to mark the surface portion, or storing the code in an electronic tag for wireless identification.

[0034] Additionally, in some embodiments, the method further includes storing the code in a database, wherein the database and / or a partition of the database is selected for storage based on the payload data of the code.

[0035] A second aspect of the present invention is a computer readable medium comprising computer instructions, which, when executed by a processor, cause the processor to perform the method according to the first aspect or any embodiment thereof.

[0036] A third aspect of the present invention is a code generated by the method described in the first aspect or any embodiment thereof.

[0037] A fourth aspect of the present invention is a system comprising at least one device configured to perform the method of the first aspect or any embodiment thereof.

[0038] The fifth aspect of the present invention is a method for processing the code after reading the code generated by the method described in the first aspect or any one of its embodiments from a package, the method comprising: extracting the code definition data from the code, identifying the payload part according to the code definition data, extracting the encrypted payload data from the code, operating a predefined decryption algorithm on the encrypted payload data to generate the payload data, and searching for the code in a database based on the payload data or one or more subsets thereof.

[0039] The sixth aspect of the present invention is a method for processing a code after reading the code from the packaging, which is applicable to all embodiments in which the above-mentioned hash data is included in the header portion. The method comprises: extracting the hash data from the header portion of the code; extracting the encrypted payload data from the payload portion of the code; operating a hash function on the encrypted payload data to generate the current hash data; and rejecting the code if the current hash data is different from the hash data. Other objects, features, aspects and advantages of the embodiments of the present invention will be apparent from the following detailed description, the attached claims and the accompanying drawings. BRIEF DESCRIPTION OF THE DRAWINGS

[0040] Figure 1A is an overview of the manufacturing and distribution chain for packaging of liquid foods, and Figure 1B This is a schematic diagram of such packaging.

[0041] Figure 2 is a block diagram of an exemplary system for marking packaging with a unique code according to an embodiment of the present invention.

[0042] Figure 3 is realized Figure 2 A block diagram of a machine containing one or more components of a system.

[0043] Figure 4A shows an exemplary structure of the code generated according to an embodiment of the present invention, and Figure 4B An exemplary structure of payload data and its use for generating encrypted payload data for code is shown.

[0044] Figure 5 is a block diagram of a structure for generating payload data according to an embodiment of the present invention.

[0045] Figure 6 An illustrative example of code during code generation is shown.

[0046] Figure 7A-7B Exemplary parameters included in payload data according to an embodiment of the present invention are shown.

[0047] Figure 8 is a flow chart of an exemplary process for generating a unique code and marking a package according to an embodiment of the present invention.

[0048] Fig. 9 is a flow chart of an exemplary method of processing code read from a package.

[0049] Figures 10A-10B An exemplary database structure for storing code generated according to an embodiment of the present invention is shown.

[0050] Fig.11 yes Figure 2 Block diagram of a variation of the system in . DETAILED DESCRIPTION

[0051] Embodiments of the present invention will now be described more fully below with reference to the accompanying drawings, in which some but not all of the embodiments of the present invention are shown. In fact, the present invention can be implemented in many different forms and should not be construed as being limited to the embodiments set forth herein. On the contrary, these embodiments are provided so that the present disclosure may satisfy applicable legal requirements. Throughout the text, the same reference numerals represent the same elements.

[0052] Moreover, it should be understood that, where possible, any advantages, features, functions, equipment and / or operational aspects of any embodiment of the present invention described and / or considered herein may be included in any other embodiment of the present invention described and / or considered herein, and / or vice versa. In addition, where possible, unless otherwise expressly stated, any term expressed in the singular herein is also intended to include the plural form and / or vice versa. As used herein, "at least one" should mean "one or more", and these phrases are intended to be interchangeable. Therefore, even if the phrases "one or more" or "at least one" are also used herein, the terms "one (a)" and / or "an" should also mean "at least one" or "one or more". As used herein, unless the context otherwise requires due to the expression language or necessary implication, the word "include" or variants such as "include" or "contain" are used with inclusive meanings, that is, specifying the presence of the described features, but not excluding the presence or increase of other features in various embodiments of the present invention.

[0053] For brevity and / or clarity, well-known functions or constructions may not be described in detail. Unless otherwise defined, all terms (including technical and scientific terms) used herein have the same meaning as commonly understood by one of ordinary skill in the art to which the invention belongs.

[0054] Figure 1A is a schematic diagram of the manufacturing and distribution chain for liquid food packaging. Liquid food refers to any food that is non-solid or pourable at room temperature, including beverages such as juice, wine, beer, soda, as well as dairy products, sauces, oils, creams, tarts, soups, etc., and also solid foods included in liquids, such as beans, fruits, tomatoes, stews, etc. The chain shown includes a manufacturing stage 1 for manufacturing packaging raw materials, a filling stage 2 for manufacturing packages containing liquid food, a distribution stage 3 for distributing packages containing liquid food, a retail stage 4 for providing the packages to consumers, and a consumption stage 5 for handling the packages and consuming the liquid food by consumers.

[0055] In manufacturing stage 1, sheet material for packaging is manufactured in a converting manufacturing plant (factory) 10. The sheet material is typically paper-based and is provided to the filling stage 2 in the form of a roll 11. In the example shown, stage 1 further comprises a specialized manufacturing plant (factory) 12, which manufactures a cover 13 for the packaging, which is typically made of a plastic material. If the packaging is formed without a cover, the manufacturing plant 12 is not present in stage 1. It is also conceivable that stage 1 includes an additional manufacturing plant that manufactures specific components for the packaging.

[0056] In the filling stage 2, the filling manufacturing plant (factory) 14 operates on the sheet 11, the lid 13 and the liquid food to provide a package containing the liquid food. For example, the production line at the filling plant 14 can form the sheet 11 into a container, fill the liquid food into the container, and seal the container to form a package. The production line can also attach the lid 13 to the container. Figure 1B An example of a package 16 produced by a filling plant 14 is shown. Phase 2 may further include external processing 15 of the package, such as palletizing, before entering the distribution phase 3.

[0057] It will be appreciated that the manufacturing chain may typically involve a number of different conversion plants 10, capping plants 12 and filling plants 14, which may be distributed globally. Each of the plants 10, 12, 14 may include a plurality of production lines.

[0058] The applicant has determined that it is necessary to mark each package containing a liquid food with a unique code. Therefore, each code is as follows: Figure 1A The code should be unique within the entire ecosystem of the factories 10, 12, 14 in the manufacturing chain shown, at least for a predefined lifetime. Figure 1A 1, 12, 14. For example, the converting plant 10 may apply a code at a predetermined position on the sheet 11 so that the code is on each package 16 produced by the filling plant 14. In another example, the capping plant 12 may apply a code to each cap 13. In yet another example, the filling plant 14 applies the code to the sheet 11, the cap 13, the intermediate container or the package 16. It should be understood that the package 16 may contain more than one such unique code, such as one on the cap 13 and one on the package 16. It is also conceivable that in subsequent processing 15 (e.g., palletizing), a unique code is provided to the package or group of packages.

[0059] like Figure 1BAs shown, the code is applied to the packaging 16, embedded in a data carrier 17, which can be implemented by any known technique for providing a code to an article. In one example, the data carrier 17 is printed onto the packaging 16, for example, as a sequence of human-readable symbols (e.g., characters), or machine-readable graphical symbols, such as one or more barcodes or 2D codes (DataMatrix, QR code, etc.). In another example, the data carrier is an electronic tag, in which the code is stored and can be retrieved by wireless communication with, for example, a tag, for example, according to any conventional standard for this purpose, such as NFC, RFID, BLE, etc.

[0060] Providing a unique code on each package enables many different applications, including tracking and tracing the package throughout the manufacturing and distribution chain ( Figure 1A ), verify the authenticity of the package, link to web content related to the package for consumers or retail personnel to access, associate the code with promotional activities and promotional lotteries, resulting in Phases 1-5 ( Figure 1A ) used in the process (e.g., any facility in a filling plant 14, cooling systems in transport vehicles, warehouse trucks, robots, refrigerators, etc.) automatically acts.

[0061] What all these applications have in common is that each generated code is not only marked on the packaging, but is also stored in a database (optionally associated with other data). During the execution of the application, the database is accessed and a specific code is searched. It is recognized that the search speed is an important aspect of the application implementation. Given the large number of packages containing liquid food products produced each year, this is a challenging task given the large number of codes to be generated. For example, more than 188 billion (10 9 )Tetra )Package.

[0062] The applicant has identified the following desirable features of a unique code for a package:

[0063] 1) Enable a very large number of unique codes, usually more than 10 12

[0064] 2) Enable compact data carriers that fit into the smallest size of packaging produced within the ecosystem

[0065] 3) Minimize the risk of fraudulent code generation

[0066] 4) Minimize the risk of guessing valid code

[0067] 5) Enable fast rejection error codes

[0068] 6) Ability to search for codes in the database efficiently and quickly

[0069] 7) Enable scalable code structure and code length

[0070] 8) Enable the necessary robustness and maintenance features to ensure continuous, efficient global industrial operations at scale.

[0071] One possible technique for generating the codes would be to generate each code as a number in a continuous sequence of numbers. However, such a code would fail to implement at least features 3) and 4).

[0072] Another conceivable technique for generating codes would be to generate each code as a random or pseudo-random number whose length is such that the number of unique codes greatly exceeds the number of packages to be marked. Although such a code can achieve features 3) and 4), it is difficult to use in conjunction with features 5) and 6).

[0073] The embodiments of the present invention to be illustrated below are based on the insight that all features 1)-8) are enabled by generating a code comprising a header portion and a payload portion, wherein the data portion in the payload is encrypted and the data in the header portion is not encrypted. The encryption ensures that the code is sufficiently encrypted to make guessing and fraudulent code generation difficult. In addition, the data in the payload portion can be defined to be unique in each code before encryption, thereby also making the code unique. Further, the data in the payload portion can be constructed before encryption so that the code in the database can be efficiently searched. Further, the header portion can also contain information for achieving scalability of the code structure and code length, information for achieving rapid rejection, information for decrypting the payload portion, etc.

[0074] Furthermore, the payload portion may be generated to represent the properties of the production unit to which the code was added to the package before encryption. For example, the payload portion may indicate at least one of the geographical location of the production unit (factory, production line, production facility, etc.) and the timestamp of each package. This is a reliable and transparent way to ensure that the payload portion is unique in the ecosystem.

[0075] exist Figure 2Schematically illustrated is an exemplary embodiment of a system 20 configured for code generation and package marking. The system 20 includes a control unit 21, a code generator 22, and a marking device 23. The control unit 21 is configured to obtain a code (CODE) from the code generator 22 and generate a control signal (CTRL), which is used to cause the marking device 23 to provide the code to the article, such as the sheet 11, the cover 13 or the package 16. As can be understood from the foregoing, the marking device 23 can be a printer, an ablation device, or a device that embeds the code into an electronic label, which can be attached to the article by the marking device 23 or pre-attached to the article. In the example shown, the control unit 21 has an input interface 24 or is connected to the input interface 24, which can include an MMI (man-machine interface) that enables an operator to manually enter input data and / or control the operation of the system. Alternatively or additionally, the input interface 24 can include a receiver for receiving input data or control data from an external controller via a wired or wireless connection.

[0076] The control unit 21 is operable to generate a request (REQ) for one or more codes from the code generator 22, which generates one or more codes in response to the request and provides the codes to the control unit 21. The control unit 21 or the code generator 22 (e.g. Figure 2 20) can be further configured to enter each code into the database 26, optionally associated with additional data. It is also conceivable that such additional data is added to the database 26 separately from the system 20.

[0077] Figure 2 The system 20 in can be implemented for online code generation or for offline (batch by batch) code generation. In such online implementation, the code is generated in real time during production in the factory 10, 12, 14, and the code generator 22 is usually located in the factory 10, 12, 14. The code generator 22 can be configured to return a single unique code for each input request REQ from the control unit 21. As used herein, "request" represents any type of signal that can make the code generator generate a code. In an offline implementation, the control unit 21 sends the request REQ to the code generator to obtain the code of the batch before production. According to the implementation, the request can include the identifier of the production unit (factory, production line, production facility, etc.) and the number of codes to be generated. In response to the request, the code generator 22 generates and returns the unique code of the batch. In an offline implementation, the code generator can but need not be located at a location away from the production unit, such as in a server system connected to a network, which can be configured to generate codes through a communication network and transmit the codes to different factories in the ecosystem.

[0078] Applicants currently contemplate implementing an online embodiment in the filling plant 14 and an offline embodiment in the conversion plant 10 and the capping plant 12 .

[0079] Figure 3 is a schematic diagram of a machine 30 that can represent the code generator 22. The machine 30 includes a communication module 31 that defines one or more interfaces for data communication according to one or more suitable protocols. The machine 30 further includes one or more processors 32, such as a central processing unit (CPU), a graphics processing unit (GPU), a digital signal processor (DSP), one or more program application specific integrated circuits (ASICs), a field programmable gate array (FPGA), or any combination thereof. The machine 30 also includes a system memory 33, which can include computer memory in the form of volatile and / or non-volatile memory, such as read-only memory (ROM), random access memory (RAM), and flash memory. The memory 33 can store computer instructions 34 (e.g., software or program code) that are used to cause the machine 30 to perform any of the methods discussed herein. The instructions 34 can be provided to the machine 30 on a computer-readable medium 35, which can be a tangible (non-transitory) product (e.g., magnetic media, optical media, read-only memory, flash memory, digital tape, etc.) or a propagated signal. The instructions 34 can be protected by limited and constrained access using known methods. When executed by the processor 32, the instructions 34 may cause the processor 32 to perform any of the methods discussed herein. It should be understood that the control unit 21 may also be implemented by the corresponding machine 30, but using different computer instructions. It is also conceivable that the control unit 21 and the code generator 22 are implemented together on the machine 30.

[0080] It is conceivable to implement the code generator 22 via cloud computing, wherein the functions of the code generator 22 are performed by resources on any number of cooperating computer systems or servers. In this implementation, the cooperating computer systems collectively correspond to Figure 3 Machine 30 in.

[0081] Figure 4AAn embodiment of the structure of a code generated according to the present invention is shown. The code includes a header portion 40 and a payload portion 41. The payload portion 41 stores encrypted payload data [EP]. The header portion 40 is unencrypted and is therefore readable in the sense that an encryption key is not required to access its contents. However, it is conceivable that the header portion 40 or a portion thereof is obfuscated. The term "obfuscation" (sometimes expressed as "obfuscation" or "obfuscation") refers to a process that is applied to a data set to intentionally make access to the data set difficult if the algorithm applied by the process is unknown. On the other hand, the term "encryption" refers to a process that is applied to a data set to require a secret (e.g., a key) to enable access to the data set within a reasonable time, even if the algorithm applied by the process is known.

[0082] exist Figure 4AIn the example of , the header part 40 includes five sub-parts, which respectively store the encoding data [E], the generator data [G], the random key selector [R], the key version [K] and the hash data [H]. The encoding data [E] is the code definition data and has a fixed and predefined position and range in all codes. The value of the encoding data [E] therefore indicates the structure and length of the code, where different values ​​indicate different structures and / or lengths. The structure may include the range of the header part 40 and the payload part 41, as well as the type, position and range of the sub-parts included in the header part 40. The provision of the encoding data [E] makes the code scalable in structure and length. Scalability is advantageous because it makes the structure and length of the code suitable for matching the encoding capabilities of a specific data carrier, or for uses and applications that are ultimately unforeseeable in the future. In a currently preferred embodiment, the encoding data [E] also indicates the position of the factory in the production chain that has marked the package with the code, for example in order to distinguish between the conversion factory 10, the capping factory 12 and the filling factory 14. Generator data [G] is also code definition data, and indicates how the code is generated, i.e., the process and steps followed. For example, the value of generator data [G] can indicate whether the code originates from an online or offline implementation scheme, the encryption algorithm (cipher) used, etc. The provision of generator data [G] increases the versatility of the code generation process. Random key selector [R] specifies the encryption key used to encrypt the payload data. Providing a random key selector [R] enables random selection between predefined encryption key sets when generating the code. This improves security by allowing different encryption keys to be used between codes, and also introduces variability into the header part 40, thereby making it more difficult to crack the code and the code generation process. Key version [K] specifies the version of the predefined encryption key set used in the code generation process. The provision of key version [K] makes it possible to update the predefined encryption key set to improve security, and has backward and forward compatibility. Hash data [H] is or contains the hash value of the encrypted payload in the payload part 41. The provision of hash data [H] enables rapid rejection of erroneous codes, thereby reducing the need to search for codes in a database, even though rapid rejection may erroneously approve a certain number of erroneous codes. By using hash data [H] that can be read directly from the header portion 40, rapid rejection can be performed without decrypting the encrypted payload [EP]. In one embodiment, the hash data [H] is or includes a digital signature. The provision of a digital signature enables authentication of the code, thereby enabling rapid rejection of erroneous codes with high accuracy.

[0083] It should be noted that both [R] and [K] must be known to identify the cryptographic key used to generate a particular code. Thus, [R] and [K] together form "key identification data". However, it should be noted that the code may alternatively be generated without [R] if only a single cryptographic key is used, and / or the code may be generated without [K] if only a single version of one or more keys is used.

[0084] Despite Figure 4A If not shown in the figure, the header portion 40 may include additional data, such as a hyperlink. It should also be noted that neither the header portion 40 nor the payload portion 41 need to be continuous portions in the code, as shown. Instead, the header portion 40 may be divided into subsets that alternate with the payload portion 41 or a subset thereof. However, it is currently believed that Figure 4A The structures in optimize code generation and the handling of code read from the package.

[0085] In the following example, the code is generated as a sequence of binary values ​​(bits). In a currently preferred embodiment, which does not limit the invention, the code consists of 80 bits, of which the header portion 40 contains 16 bits and the payload portion 41 contains 64 bits. In this non-limiting example, [E] is 2 bits, [G] is 1 bit, [R] is 2 bits (i.e., four different encryption keys in a predefined set), [K] is 2 bits (i.e., up to 4 different versions of the predefined set), and [H] is 8 bits.

[0086] Figure 4B The following steps are schematically shown: an encryption algorithm F is run on the payload data [P] to generate encrypted payload data [EP] for inclusion in the payload portion 41 of the code. Any conceivable encryption algorithm F may be used, including any symmetric encryption algorithm in which a private encryption key is used for encryption and decryption, and any asymmetric algorithm utilizing paired public and private encryption keys. In a non-limiting embodiment, the encryption algorithm is a block cipher such as Blowfish, DES, IDEA, RC5, or AES. Encryption scrambles the payload data and eliminates its structure. Typically, encryption is used to protect the data contained in the payload portion 41 to make it difficult to guess a valid code based on another code and to minimize the risk of fraudulent code generation.

[0087] Figure 4BAlso indicated are various types of parameters that may be included in the payload data [P]. In the example shown, the payload data [P] includes location data [A] indicating a geographical location, typically the geographical location of the production unit where the code is added to the packaging. It should be noted that the location data [A] may indicate a geographical location indirectly, for example by indicating a manufacturer, factory, production line or production facility with a known geographical location. Figure 4B In the example, the payload data [P] also includes index data [B], which enables the sequentially generated codes to be grouped. As will be further illustrated below, the position data [A] and / or the index data [B] can be used to increase the speed of searching for codes in the database. Figure 4B As shown, the payload data [P] also includes random data [C], which introduces unpredictable variability into the payload data [P]. This unpredictable variability makes it more difficult to reverse engineer the code, thereby reducing the risk of generating fraudulent code.

[0088] Often in industrial environments, especially with large production runs, downtimes result in costly production losses and should be avoided. Therefore, it may be necessary to replicate production facilities and implement so-called hot swapping, i.e. the ability to switch from a primary device to a backup device with virtually no production downtime. This also applies to Figure 2 The code generator in . Fig.11 Shows Figure 2 A variation of the system in which two code generators 22, 22A are provided. Fig.11 2, but the control unit 21 is connected to Figure 2 The marking device 23 shown. The code generators 22, 22A are identical in structure and function, which means that they use exactly the same method to generate codes with the same structure and length. Code generator 22 is used as a main generator, while code generator 22A is a backup generator (as shown by the dotted arrow). The controller 28 is connected to the code generators 22, 22A to control the switching from one to the other via a switch control signal (SWC). When switching from one code generator to another, it may be difficult to synchronize the two code generators 22, 22A with sufficient accuracy to avoid that the two code generators 22, 22A generate the same code in conjunction with the switching. To overcome this problem, the payload data [P] also includes redundant data [D], such as Figure 4BAs shown. The redundant data [D] represents the specific code generator that has generated the code. Therefore, the code generator 22, 22A is configured to input different redundant data [D] into the code. Therefore, the code generated by the code generator 22, 22A will be inherently different, and hot plugging is made possible without the risk of generating duplicate code. Hot plugging can be performed, for example, in the event of a failure of the main code generator 22 or regular maintenance of the main code generator 22. In addition to enabling hot plugging, providing redundant data [D] can also enable two or more code generators to run in parallel to provide code to the control unit 21.

[0089] In a variant, redundant data [D] is included in the header portion 40 alternatively or additionally.

[0090] As a pair Figure 4B As a further comment, it may be noted that the payload data [P] includes an empty box to indicate that the payload data [P] may contain additional data.

[0091] Figure 5 An example of a structure for generating payload data [P] is shown, for example in a code generator ( Figure 2 The core of the structure is the payload generator 50, which receives or obtains current data values ​​from a set of data providers 51-57 and merges these data values ​​into the payload data [P], for example, Figure 4B The structure shown. The data provider 51 provides the above-mentioned position data [A]. In the above-mentioned online embodiment, the position data [A] can be predefined and stored in the memory. The data provider 51 can therefore be a memory (see Figure 3 33). In the above offline implementation, at least a portion of the location data [A] may be included in the batch request REQ received by the code generator 23, and the data provider 51 may be configured to retrieve the location data [A] according to the batch request. Figure 5 In the example, the sequential counters 52-55 provide the respective parts [B] of the index data [B]. 1 -[B] 4 As used herein, a "sequential counter" means a counter that outputs values ​​in a predictable sequence. Specifically, Figure 5Each sequential counter 52-55 in the embodiment is operable to generate an output value that increases or decreases over time from a starting value to an ending value. As used herein, "incrementing" means increasing (in any step size), and "decrementing" means decreasing (in any step size). In a non-limiting example, the sequential counters 52-55 output values ​​that increase or decrease in steps of 1. Each counter 52-55 can also be operated with a predetermined modulus so that the output value rolls over from the final value to the starting value. The index data [B] is formed to include a combination of the output values ​​from the sequential counters 52-55, such as [B]=[B] 1 [B] 2 [B] 3 [B] 4 Providing the output value of at least one sequential counter in the code enables the grouping of consecutive codes, thereby enabling the code groups to be stored in the database 26 ( Figure 2 ), thereby facilitating the search of the database. Each counter 52-55 may represent a physical quantity related to the manufacturing process at the production unit where the code is added to the package. In one example, one or more of the counters 52-55 may represent a time parameter for manufacturing, so that the index data [B] contains a timestamp for the corresponding package. Such a group of time counters may operate together to represent the current time in different time units (e.g., one or more of years, months, weeks, days, hours, minutes, seconds).

[0092] In another example, one of the counters 52-55 may be a package counter that outputs a count of the packages marked in the production unit. The package counter typically increments or decrements its output value from a starting value without applying a predefined modulus. In an online embodiment, for each marked package (e.g., for a given Figure 2 For each input REQ of the code generator 22 in the batch code, the output value of the pack counter can be incremented. In a specific variant, the pack counter cooperates with the time counter so that the time counter is reset to its initial value each time the value changes. Preferably, the time counter represents the smallest time unit in the available time counters. If the smallest time unit is seconds, the output value of the pack counter will therefore provide sub-second resolution and will be reset once per second. In an offline embodiment, for each code generated in the batch code, the output value of the pack counter can be incremented or decremented. Figure 7A-7B Give other examples of counters.

[0093] As can be appreciated from the foregoing, the sequential counters 52-55 can be incremented / decremented synchronously with or independently of the code generation process. Examples of synchronous operations include the above-mentioned change of the package counter for each package marked or each code generated. On the other hand, the above-mentioned time counter is automatically triggered to update its output value, thereby indicating the current time.

[0094] exist Figure 5 In the example of , the random counter 56 provides random data [C]. The random counter 56 is operable to output a random value within a predetermined range, and is preferably operable to change its output value synchronously with the code generation process. In one embodiment, the random counter 56 is configured to provide a non-repetitive random value within a predetermined time period, that is, the random values ​​are mutually unique within a predetermined time period. In one implementation, the random counter 56 can arrange all values ​​belonging to a predetermined range of mutually unique values ​​in a random order, and output these values ​​or a subset thereof one by one in a random order. In a specific variant, whenever the value of the time counter changes, the random counter 56 coordinates with the time counter to be reset (that is, the values ​​are rearranged in a random order). Preferably, the time counter represents the minimum time unit in the available time counter. If the minimum time unit is seconds, the output value of the random counter 56 thereby provides sub-second resolution. It can be recognized that in an online implementation, such a random counter 56 can replace the above-mentioned packaging counter with sub-second resolution.

[0095] Figure 5 The data provider 57 in provides the above redundant data [D], which may be predefined and stored in a memory. The data provider 57 may thus be a memory (see Figure 3 33).

[0096] The counters 52-56 can be implemented by dedicated hardware, dedicated software or a combination thereof. If the code generator is implemented on a computer, the time counter can be implemented by existing support functions on the computer (eg, support functions included in the operating system).

[0097] Fig. 7AExamples of parameters / data fields in payload data [P] in an online implementation (e.g. when the code is generated in the filling plant 14 of Figure 1) are shown. In the example shown, the location data [A] includes a producer ID, a plant ID, a production line ID, and a facility ID. The producer ID identifies the producer operating the filling plant 14. The plant ID identifies the filling plant 14, the production line ID identifies the production line, and the facility ID identifies the facility that adds the code to the package, e.g. a filling machine, a cartoner, or a palletizer. In the example shown, the code is designed to handle 4095 different producers, 255 different plants for each producer, 63 production lines within each plant, and 8 different facilities. In the example shown, the index data [B] represents the current time and includes the year, day, hour, minute, and second, where the year is given by the current year modulo 8. The values ​​in the corresponding data fields are represented by the corresponding reference data. Figure 5 The time counter generates the payload data [P] also includes the reference Figure 5 The sub-second resolution of the pack counter. If the pack counter value is replaced by the sequence counter (see Figure 5 52-55 in ), it may be included in the index data [B], or if generated by a random counter (see Figure 5 If generated by the counter 56 in , it can be included in the random data [C].

[0098] Figure 7B An example of parameters / data fields in the payload data [P] in an off-line implementation (e.g. when the conversion plant 10 or the capping plant 12 generates codes on demand in batches) is shown. In the example shown, the location data [A] contains a production unit ID that identifies the plant. In the example shown, a portion of the index data [B] represents the current time and includes the year and month. The values ​​of these parameters can be generated by corresponding time counters, as shown in reference Figure 5 The payload data [P] also includes a request number and a package counter, which may also be index data [B] generated by a corresponding sequential counter. For example, for each batch request received from a certain factory (i.e. a given value of the production unit ID) in the current year and current month, the request number may be incremented or decremented. In order to provide the request number, Figure 5 It can be seen that for each factory, Figure 5 The structure in includes a sequential batch counter, wherein the sequential batch counter is reset to its initial value (e.g., 0) whenever the month counter rolls over to count from its initial value. Similarly, for each code generated relative to the corresponding value of the request number (i.e., for a certain batch), the package counter can be incremented or decremented. To provide the package counter, it can be seen that for each batch counter, Figure 5The structure includes a sequential packaging counter, wherein the sequential packaging counter is reset to its initial value (e.g., 0) whenever the value of the associated batch counter changes. Figure 7B As shown, at least one of the request number and the package counter may be random data [C]. The structure for generating the random values ​​of the request number and / or the package counter may be the same as the structure for generating the sequential values ​​of the request number and / or the package counter, as described above, except that each sequential counter is replaced with a random counter. The random counter of the request number may be configured to reset at each change in the monthly value, and the random counter of the package counter may be configured to reset at each change in the request number value.

[0099] exist Figure 7B In the example, the code is designed to handle more than 500,000 batch requests per month from 1,000 different factories, with each request exceeding 134 million packages. Figure 7B In the example, the payload data [P] also includes redundant data [D] in the form of a primary generator server, which can be set to 0 or 1.

[0100] Figure 8 is Figure 2 Flowchart of a process performed in a system of FIG. The process involves a portion for generating a code, which corresponds to preparatory steps 801-803 and subsequent steps 804-813, which are repeated for each code to be generated. Steps 801-813 are composed of Figure 2 The process also involves another part for adding the code to the package, which corresponds to steps 814-816, which are jointly performed by the control unit 21 and the marking device 23, which in this example is a printer. The process also involves a step 817 of storing the code in a database, where step 817 can be performed by the control unit 21 or the code generator 22.

[0101] Looking at the preparation steps in more detail, step 801 obtains the value of the encoded data [E] corresponding to the structure and length of the code to be generated, step 802 obtains the value of the generator data [G] corresponding to the procedure and steps to be followed when generating the code, and step 803 obtains the value of the key version [K] corresponding to the current version of the encryption key used to encrypt the payload data [P]. These values ​​of [E], [G] and [K] will be input into all codes generated during the current execution of this process. In step 804, the values ​​of [E], [G] and [K] are included in the header portion 40 of the code. Figure 6 Shows that in the implementation Figure 861-66 of the process code in which the filled portion / sub-portion indicates that it contains a value. It will be appreciated that step 804 corresponds to Figure 6 Examples 61, 62 and 63 in.

[0102] Subsequent steps 805-807 are performed to select an encryption key. Step 805 obtains a random number from a random number generator, which is preferably configured to generate cryptographically secure random numbers. Then, step 806 selects an encryption key from a set of predefined encryption keys (e.g., encryption keys) based on the random number, such as by using a lookup table or function that provides an association between random numbers and encryption keys. In step 806, the set of predefined encryption keys is given by a key version [K]. Step 807 sets a random key selector [R] to represent the selected encryption key and includes [R] in the header portion 40 ( Figure 6 64). For example, the encryption key in each version of the predefined encryption key set may be specified by a corresponding number, and step 807 may set the encryption key selector [R] to that number.

[0103] Step 808 obtains the payload data [P] and can be Figure 5 In the example shown, step 808 includes a first sub-step 808A of obtaining position data [A], a second sub-step 808B of obtaining index data [B], and a third sub-step 808C of obtaining random data [C]. As shown, sub-step 808B may include an action 808B1 of obtaining a current value of one of a plurality of sequential counters (see Figure 5 52-55 in ), and sub-step 808C may include obtaining one of a plurality of random counters (see Figure 5 56) of the current value of action 808C1. Although Figure 8 Not shown, step 808 may also acquire redundant data [D]. However, it should be noted that at least [C] and [D] are optional for the purpose of making the code unique within the ecosystem. Step 808 also involves forming payload data [P] by arranging [A]-[D] (to the extent that [A]-[D] have been acquired) according to the current code structure. The process then proceeds to step 809, which performs an encryption function ( Figure 4B F) operation in order to generate the encrypted payload data [EP]. Step 810 includes [EP] in the payload portion 41 of the code ( Figure 6 65 in the example). Step 811 operates a hash function on [EP] to generate hash data [H]. Any possible hash function may be used, such as a non-cryptographic hash function, such as a Pearson hash. Step 812 includes [H] ( Figure 6 66 in Example 6). The code is completed and step 813 outputs the code, and the process then returns to step 804 to generate another unique code.

[0104] Step 814 operates on each code output by step 813 to transcode it. As described above, the code consists of a series of bit values. Transcoding involves converting the code into a format suitable for encoding into a data carrier. In the example of encoding a series of bit values ​​into a 2D code, it is known to transcode the bit values ​​into alphanumeric characters. For example, Figure 6 Example 67 in schematically represents a series of alphanumeric characters C0-C15 resulting from code conversion. Code conversion is well known in the field of marking objects and will not be described in detail. Step 815 generates a data carrier in the form of a 2D code representing the characters C0-C15, and step 816 prints the data carrier onto a sheet of material, a cover or a package.

[0105] Fig. 9 According to an embodiment of the present invention, for example, Figure 8 Flowchart of a method for processing a code which has been read from a package which has been marked with a code in a process described in detail in the accompanying drawings. Apparatus for reading different types of data carriers are well known in the art and will not be described further. Depending on the implementation, this reading may result in the original generated code, e.g. as a bit sequence or transcoded data, e.g. an alphanumeric character sequence, which is then transcoded back to the underlying original code.

[0106] exist Fig. 9In the method, step 901 inputs a code that has been read from a package. Step 902 reads the encoded data [E] from the code. As described above, the encoded data [E] has a fixed and predetermined position in all codes. Based on the value of [E], the positions of all relevant parts and sub-parts in the code are known for the method. Subsequently, step 903 can then read the generator data [G] to determine the syntax of the code and any functions used in generating the code. The method then performs a fast rejection check on the code through steps 904-907, wherein step 904 reads the hash data [H], step 905 reads the encrypted payload data [EP], step 906 calculates the hash of [EP] by using a predefined hash function, which can be fixed for all codes or can be identified based on [G], and step 907 compares the calculated hash with [H]. If step 907 finds a mismatch, the method proceeds to step 908, which terminates the method. The code is therefore rejected. Otherwise, the method proceeds to step 909, which reads a random key selector [R] and a key version [K] from the code. Based on this, step 910 obtains the corresponding encryption key, and then step 911 decrypts [EP] by using the encryption key and a predefined encryption algorithm, which can be fixed for all codes or can be identified based on [G]. Thereby, step 911 recreates the payload data [P], and step 912 reads at least one of the position data [A] and the index data [B] from the payload data [P], or a specific data field in [A] and / or [B] [see Figure 7A-7B ]. One or more result values ​​allow step 913 to access and search for the code in the database. Then, step 914 outputs the search results, such as a confirmation that the code has been found, a message that the code has not been found, any information associated with the code in the database, etc.

[0107] Now refer to Figures 10A-10B Some non-limiting examples are given of how access to location data [A] and / or index data [B] may improve database management and database searching. Fig. 10A An example of a database 26 is shown which has been partitioned (indicated by dashed lines) into a first partition (top) for storing codes generated in an offline embodiment and a second partition (bottom) for storing codes generated in an online embodiment. Figure 7B The first partition is sub-partitioned (indicated by the dashed line) by the factory given by the production unit ID in . Fig. 10A Each such subpartition includes a stack of cylinders, where each cylinder represents a batch code generated for a corresponding batch request. Within each subpartition, batches can be searched by indexing data [B]. For example, given Figure 7B The index data in [B], the codes in each batch contain the same combination of year, month and request number.

[0108] By means of position data [A] (see Fig. 7A The second partition is subpartitioned (indicated by the dotted line) by the producer and factory given by the producer ID and factory ID in . Fig. 10A The sub-divisions of plant 1 of producer 2 are shown, as indicated by the location data [A] (see Fig. 7A Each such further partition consists of a stack of cylinders, where each cylinder represents a production line for a production year and production date (see Fig. 7A Thus, in each additional partition, the group can be searched by index data [B].

[0109] Back to Figure 8 , recognizing that step 817 , when sending the code for storage in a database 26 , preferably also sends the values ​​of the [A] and / or [B] parameters associated with storing the code in a particular database 26 .

[0110] based on Fig. 10A , the skilled person recognizes that the provision of location data [A] and / or index data [B] allows the database to be configured with variable levels of partitioning granularity adapted to the specific database constraints (depending on the implementation and provider).

[0111] exist Fig. 10B In the example, Fig. 10A The database 26 in has been divided into a database 26A storing the codes of packaging produced in Europe and a database 26B storing the codes of packaging produced in North America. The separation between Europe and North America is given by the geographical location of the respective factories.

[0112] Therefore, if Fig. 10B As shown, the provision of location data [A] enables distributed storage, which can further speed up searches by reducing data transfer time. In addition, it can also reduce the amount of data stored at each location and has cost and performance advantages. It also provides another advantage in situations where data storage needs to be geographically localized to comply with national regulations / laws.

Claims

1. A method for generating a code to uniquely identify a package (16) for a liquid food, the method comprising: acquiring code definition data ([E], [G]) representing at least one of a structure of the code and a method of generating the code, obtain payload data ([P]) unique to each package (16), operating a predefined encryption algorithm (F) on the payload data ([P]) to generate the encrypted payload data ([EP]), wherein operating the predefined encryption algorithm (F) comprises selecting an encryption key, the encryption key being used to encrypt the payload data ([P]), wherein selecting the encryption key comprises: obtaining a random number and selecting the encryption key from a predefined set of encryption keys based on the random number, including the code definition data ([E], [G]) and key identification data ([R], [K]) representing the selected encryption key in a predefined header portion (40) for unencrypted data of the code of the corresponding wrapper (16), And including said encrypted payload data ([EP]) in a predefined payload portion (41) of said code of said corresponding package (16).

2. The method according to claim 1, wherein: The key identification data ([R], [K]) of the encryption key also indicates the version number of the predefined encryption key set.

3. The method according to claim 1 or 2, wherein: The encryption key selected is a private key.

4. The method according to claim 1 or 2, wherein: The method represented by the code definition data ([E], [G]) includes the predefined encryption algorithm (F).

5. The method according to claim 1 or 2, further comprising: A hash function is operated on the encrypted payload data (EP) to generate hash data (H), and the hash data (H) is included as a readable sub-portion of the header portion (40).

6. The method according to claim 5, wherein: The hash data ([H]) is generated as a digital signature.

7. The method according to claim 1 or 2, further comprising: Position data (A) representing a geographical location is acquired and included in said payload data (P) so as to be common to all packages originating from a production unit at said geographical location.

8. The method according to claim 7, wherein: The location data (A) indicates at least one of a producer, a manufacturing plant, a production line, and a production facility.

9. The method according to claim 1 or 2, further comprising: acquiring index data (B) that enables grouping of the sequentially generated codes; And the index data (B) is included in the payload data (P).

10. The method according to claim 9, wherein: The obtaining of the index data (B) comprises obtaining a current value of at least one sequential counter (52-55), wherein the at least one sequential counter is configured to output an increasing or decreasing sequential value over time.

11. The method according to claim 10, wherein: The index data ([B]) is acquired to include a combination of current values ​​output by a plurality of sequential counters (52-55).

12. The method according to claim 9, wherein: At least a portion of the index data ([B]) is obtained to represent a current time.

13. The method according to claim 9, further comprising: Random data (C) is obtained for each package (16) and included in the payload data (P).

14. The method according to claim 13, wherein: The obtaining of the random data (C) comprises obtaining random values ​​from a random counter (56) which is operated to intermittently arrange values ​​belonging to a predetermined range of mutually unique values ​​in a random order and then output at least a subset of the values ​​one after another in the random order.

15. The method according to claim 12, further comprising: Obtaining a random value ([C]) for each package (16) from a random counter (56), the random counter (56) being configured to generate random values ​​that belong to a predetermined range and are mutually unique within a predefined time period, the predefined time period being a minimum time unit for the current time; and including the random value ([C]) in the payload data ([P]).

16. The method according to claim 10, wherein: The code is generated based on a batch generation request, and wherein the at least one sequential counter (52-55) includes a batch counter, wherein the method further comprises: incrementing or decrementing the batch counter for each batch generation request, and wherein obtaining the index data ([B]) further comprises obtaining a current value of the batch counter.

17. The method according to claim 10, wherein: The at least one sequential counter (52-55) comprises a package counter, wherein the method further comprises incrementing or decrementing the package counter for each package (16), and wherein obtaining the index data (B) further comprises obtaining a current value of the package counter.

18. The method according to claim 1 or 2, performed by a first code generator (22) included in the same group of code generators (22, 22A), further comprising: Redundant data ([D]) distinguishing the first code generator from other code generators in a group is obtained, and the redundant data ([D]) is included in at least one of the header portion (40) and the payload data ([P]).

19. The method according to claim 1 or 2, wherein: The encrypted payload data ([EP]) and the code definition data ([E], [G]) are included in the code as corresponding sequences of binary values.

20. The method according to claim 1 or 2, further comprising: The package (16) is marked with the code.

21. The method according to claim 20, wherein: The marking comprises: embedding the code into a data carrier (17), the data carrier being on one of the packages (16) for the liquid food, on a sheet of material (11) to form a container part of the one of the packages (16), or on an element (13) to be combined with the container part.

22. The method according to claim 21, wherein: The marking further comprises converting the code into a format suitable for embedding in the data carrier (17).

23. The method according to claim 20, wherein: The marking includes controlling a printer or ablation device (23) to mark the surface portion, or storing the code in an electronic tag (17) for wireless identification.

24. The method according to claim 1 or 2, further comprising storing the code in a database (26; 26A, 26B), wherein the database (26; 26A, 26B) and / or a partition of the database (26; 26A, 26B) is selected for storage based on the payload data ([P]) of the code.

25. A computer readable medium (35) comprising computer instructions (34) which, when executed by a processor (32), cause the processor (32) to perform a method according to any one of the preceding claims.

26. A code generated by the method according to any one of claims 1-24.

27. A computer system (20) comprising at least one device (21, 22) configured to perform the method of any one of claims 1-24.

28. A method for processing a code after reading the code from a package, the code being generated by the method according to any one of claims 1 to 24, the method for processing the code after reading the code from the package comprising: extracting the code definition data ([E], [G]) from the code, identifying the payload portion (41) according to the code definition data ([E], [G]), extracting said encrypted payload data ([EP]) from said code, extracting the key identification data ([R], [K]) from the code, Based on the key identification data ([R], [K]), obtaining an encryption key, Using the encryption key, operating a predefined decryption algorithm on the encrypted payload data ([EP]) to generate payload data ([P]), and The code is searched in a database (26; 26A, 26B) based on the generated payload data ([P]) or one or more subsets thereof ([A], [B]).

Citation Information

Patent Citations

  • System and Method of Detecting Product Code Duplication and Product Diversion

    US20080011841A1

  • Security encapsulation of ethernet frames

    US20080075073A1