(57)【要約】  液体食品用のパッケージにマーク付けする一意コードを、コード構造及び／又はコード生成方法論を表す非暗号化コード定義データ（［Ｅ］、［Ｇ］）を含むヘッダー部分（４０）、及び暗号化ペイロードデータ（［ＥＰ］）を含むペイロード部分（４１）で生成する。暗号化は、コードを十分にスクランブルして推測及び不正コード生成を困難にすることを保証する。暗号化の前に、ペイロードデータを、各コードで一意であるように定義してもよく、これによって、また、コードを一意にする。暗号化の前に、ペイロードデータを、データベースにおけるコードの効率的な探索を可能にするように構造化してもよい。コードをパッケージから読み取った場合、コード定義データ（［Ｅ］、［Ｇ］）を抽出し、ペイロード部分（４１）を識別し、暗号化ペイロードデータ（［ＥＰ］）を抽出し、暗号解読によってペイロードデータを再生成し、ペイロードデータ又はペイロードデータの１つ又は複数のサブセットに基づいてデータベースの中でコードを探索することによって、コードを処理してもよい。【選択図】  図４Ａ
2021517768.tif 000002
【特許請求の範囲】
【請求項１】
液体食品用のパッケージ（１６）を一意的に識別するコードを生成する方法であって、
前記コードの構造、及び前記コードを生成する方法論のうち少なくとも１つを表すコード定義データ（［Ｅ］、［Ｇ］）を取得するステップと、
各パッケージ（１６）に一意であるペイロードデータ（［Ｐ］）を取得するステップと、
前記ペイロードデータ（［Ｐ］）で事前定義暗号化アルゴリズム（Ｆ）を動作させて、暗号化ペイロードデータ（［ＥＰ］）を生成するステップと、
それぞれのパッケージ（１６）に対する前記コードの非暗号化データに対する事前定義ヘッダー部分（４０）に前記コード定義データ（［Ｅ］、［Ｇ］）を含むステップと、
前記それぞれのパッケージ（１６）に対する前記コードの事前定義ペイロード部分（４１）に前記暗号化ペイロードデータ（［ＥＰ］）を含むステップと、
を含む方法。
【請求項２】
前記事前定義暗号化アルゴリズムを動作させる前記ステップは、暗号化鍵を選択するステップを含み、前記方法は、前記事前定義ヘッダー部分（４０）に前記選択暗号化鍵を表す鍵識別データ（［Ｒ］、［Ｋ］）を含むステップを更に含む、請求項１に記載の方法。
【請求項３】
前記暗号化鍵を選択する前記ステップは、乱数を取得するステップと、前記乱数に基づいて、暗号化鍵の事前定義セットの中で前記暗号化鍵を選択するステップとを含み、前記鍵識別データ（［Ｒ］、［Ｋ］）は、前記選択暗号化鍵を表す、請求項２に記載の方法。
【請求項４】
前記鍵識別データ（［Ｒ］、［Ｋ］）は、暗号化鍵の前記事前定義セットのバージョン番号を更に表す、請求項２又は３に記載の方法。
【請求項５】
前記選択暗号化鍵は、秘密鍵である、請求項２〜４のいずれか一項に記載の方法。
【請求項６】
前記コード定義データ（［Ｅ］、［Ｇ］）によって表される前記方法論は、前記事前定義暗号化アルゴリズム（Ｆ）を含む、請求項２〜５のいずれか一項に記載の方法。
【請求項７】
前記暗号化ペイロードデータ（［ＥＰ］）でハッシュ関数を動作させて、ハッシュデータ（［Ｈ］）を生成するステップと、前記ヘッダー部分（４０）の読み取り可能サブ部分として前記ハッシュデータ（［Ｈ］）を含むステップを更に含む、請求項１〜６のいずれか一項に記載の方法。
【請求項８】
前記ハッシュデータ（［Ｈ］）を、デジタル署名として生成する、請求項７に記載の方法。
【請求項９】
地理的位置を表す位置データ（［Ａ］）を取得するステップと、前記地理的位置における製造ユニットから生じる全パッケージに共通しているように前記ペイロードデータ（［Ｐ］）に前記位置データ（［Ａ］）を含むステップを更に含む、請求項１〜８のいずれか一項に記載の方法。
【請求項１０】
前記位置データ（［Ａ］）は、製造業者、工場、製造ライン、及び製造設備のうち少なくとも１つを示す、請求項９に記載の方法。
【請求項１１】
連続生成コードのグループ化を可能にするインデクセーションデータ（［Ｂ］）を取得するステップと、前記ペイロードデータ（［Ｐ］）に前記インデクセーションデータ（［Ｂ］）を含むステップを更に含む、請求項１〜１０のいずれか一項に記載の方法。
【請求項１２】
前記インデクセーションデータ（［Ｂ］）を取得する前記ステップは、時間と共に増加又は減少される連続値を出力するように構成されている少なくとも１つの連続カウンター（５２〜５５）の現在値を取得するステップを含む、請求項１１に記載の方法。
【請求項１３】
前記インデクセーションデータ（［Ｂ］）を取得して、複数の連続カウンター（５２〜５５）によって出力される現在値の組み合わせを含む、請求項１２に記載の方法。
【請求項１４】
前記インデクセーションデータ（［Ｂ］）の少なくとも一部を取得して、現在時刻を表す、請求項１１〜１３のいずれか一項に記載の方法。
【請求項１５】
各パッケージ（１６）に対するランダムデータ（［Ｃ］）を取得するステップと、前記ペイロードデータ（［Ｐ］）に前記ランダムデータ（［Ｃ］）を含むステップを更に含む、請求項１１〜１４のいずれか一項に記載の方法。
【請求項１６】
前記ランダムデータ（［Ｃ］）を取得する前記ステップは、ランダム順序で相互一意値の事前定義範囲に属する値を断続的に配列し、前記ランダム順序で１つずつ前記値の少なくともサブセットを出力するように動作されているランダム化カウンター（５６）からランダム値を取得するステップを含む、請求項１５に記載の方法。
【請求項１７】
事前定義範囲に属し、前記現在時刻に対する最短時間単位である事前定義時間内で相互に一意であるランダム値を生成するように構成されているランダム化カウンター（５６）から各パッケージ（１６）に対するランダム値（［Ｃ］）を取得するステップと、前記ペイロードデータ（［Ｐ］）に前記ランダム値（［Ｃ］）を含むステップと更に含む、請求項１４に記載の方法。
【請求項１８】
前記コードを、バッチ生成要求に従って生成し、前記少なくとも１つの連続カウンター（５２〜５５）は、バッチカウンターを含み、前記方法は、各バッチ生成要求に対して前記バッチカウンターを増加又は減少させるステップを更に含み、前記インデクセーションデータ（［Ｂ］）を取得する前記ステップは、前記バッチカウンターの現在値を取得するステップを更に含む、請求項１１〜１７のいずれか一項に記載の方法。
【請求項１９】
前記少なくとも１つの連続カウンター（５２〜５５）は、パッケージカウンターを含み、前記方法は、各パッケージ（１６）に対して前記パッケージカウンターを増加又は減少させるステップを更に含み、前記インデクセーションデータ（［Ｂ］）を取得する前記ステップは、前記パッケージカウンターの現在値を取得するステップを更に含む、請求項１１〜１８のいずれか一項に記載の方法。
【請求項２０】
同一コード生成器（２２、２２Ａ）のグループに含まれる第１のコード生成器（２２）によって実行され、前記第１のコード生成器を前記グループにおける他のコード生成器と区別する冗長データ（［Ｄ］）を取得するステップと、前記ヘッダー部分（４０）及び前記ペイロードデータ（［Ｐ］）のうち少なくとも１つに前記冗長データ（［Ｄ］）を含むステップを更に含む、請求項１〜１９のいずれか一項に記載の方法。
【請求項２１】
前記暗号化ペイロードデータ（［ＥＰ］）及び前記コード定義データ（［Ｅ］、［Ｇ］）を、それぞれの一連の２進値として前記コードに含む、請求項１〜２０のいずれか一項に記載の方法。
【請求項２２】
前記パッケージ（１６）に前記コードをマーク付けするステップを更に含む、請求項１〜２１のいずれか一項に記載の方法。
【請求項２３】
マーク付けする前記ステップは、前記パッケージ（１６）のうち１つの容器部分が形成されるべきシート材料（１１）の上で、又は前記容器部分と結合されるべき要素（１３）の上で、前記液体食品用の前記パッケージ（１６）のうち前記１つの上のデータキャリア（１７）に前記コードを埋め込むステップを含む、請求項２２に記載の方法。
【請求項２４】
マーク付けする前記ステップは、前記データキャリア（１７）に埋め込むのに適しているフォーマットに前記コードを変換するステップを更に含む、請求項２３に記載の方法。
【請求項２５】
マーク付けする前記ステップは、プリンター又はアブレーションデバイス（２３）を制御して表面部分にマーク付けするステップ、又は無線識別用の電子タグ（１７）に前記コードを記憶するステップを含む、請求項２２〜２４のいずれか一項に記載の方法。
【請求項２６】
データベース（２６；２６Ａ、２６Ｂ）に前記コードを記憶するステップを更に含み、前記データベース（２６；２６Ａ、２６Ｂ）及び／又は前記データベース（２６；２６Ａ、２６Ｂ）の区分を、前記コードの前記ペイロードデータ（［Ｐ］）に基づいて記憶するために選択する、請求項１〜２５のいずれか一項に記載の方法。
【請求項２７】
プロセッサ（３２）によって実行される場合、請求項１〜２６のいずれか一項に記載の方法を前記プロセッサ（３２）に実行させるコンピュータ命令（３４）を含むコンピュータ可読媒体（３５）。
【請求項２８】
請求項１〜２６のいずれか一項に記載の方法によって生成されるコード。
【請求項２９】
請求項１〜２６のいずれか一項に記載の方法を実行するように構成されている少なくとも１つのデバイス（２１、２２）を含むシステム（２０）。
【請求項３０】
コードをパッケージから読み取った後、請求項１〜２６のいずれか一項に記載の方法によって生成される前記コードを処理する方法であって、
前記コード定義データ（［Ｅ］、［Ｇ］）を前記コードから抽出するステップと、
前記コード定義データ（［Ｅ］、［Ｇ］）に基づいて前記ペイロード部分（４１）を識別するステップと、
前記暗号化ペイロードデータ（［ＥＰ］）を前記コードから抽出するステップと、
前記暗号化ペイロードデータ（［ＥＰ］）で事前定義暗号解読アルゴリズムを動作させて、前記ペイロードデータ（［Ｐ］）を生成するステップと、
前記ペイロードデータ（［Ｐ］）、又は前記ペイロードデータ（［Ｐ］）の１つ又は複数のサブセット（［Ａ］、［Ｂ］）に基づいて、データベース（２６；２６Ａ、２６Ｂ）の中で前記コードを探索するステップと、
を含む方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は一般的に、液体食品用のパッケージの製造、特に、このようなパッケージへのコードの供給に関する。
【背景技術】
【０００２】
世界中で毎日、数十億リットルの水、牛乳、ジュース及び他の液体食品が消費されている。大部分の液体食品は、カートンパッケージとも呼ばれる紙ベースのパッケージで流通されている。栄養価及び液体食品内部の味の両方を保護するために、これらのパッケージを製造する。基礎的な技術により、世界中で液体食品の包装及び流通が非常に容易になる。
【０００３】
例えば、各パッケージで賞味期限又は液体食品の由来を示すコードを、液体食品用のこのタイプ及び他のタイプのパッケージに供給することがよく知られている。このようなコードを消費者によって読み取って理解することができるように、コードをパッケージに平文で付けることが多い。
【０００４】
今まで、液体食品を含む個々の各パッケージを一意的に識別するコードをパッケージに供給するための最適なロバスト技法は、広く採用されていない。
【発明の概要】
【発明が解決しようとする課題】
【０００５】
本発明の目的は、先行技術の１つ又は複数の制約を少なくとも部分的に克服することにある。
【０００６】
別の目的は、大域一意コードをパッケージに供給することができる技法を提供することにある。
【０００７】
更なる目的は、有効コードの不正生成のリスクを軽減する、及び／又は、別のコードに基づいて又はランダム機構の使用によって有効コードを推測する努力を妨げるこのような技法を提供することにある。
【０００８】
下記の説明から現れる更なる目的に加えて、これらの目的のうち１つ又は複数の目的は、コードを生成する方法、コンピュータ可読媒体、コード、システム、及び独立請求項、従属請求項によって規定されている実施形態に従ってコードを処理する方法によって、少なくとも部分的に達成される。
【課題を解決するための手段】
【０００９】
本発明の第１の態様は、液体食品用のパッケージを一意的に識別するコードを生成する方法である。この方法は、コードの構造、及びコードを生成する方法論のうち少なくとも１つを表すコード定義データを取得するステップと、各パッケージに一意であるペイロードデータを取得するステップと、ペイロードデータで事前定義暗号化アルゴリズムを動作させて、暗号化ペイロードデータを生成するステップと、それぞれのパッケージに対するコードの非暗号化データに対する事前定義ヘッダー部分にコード定義データを含むステップと、それぞれのパッケージに対するコードの事前定義ペイロード部分に暗号化ペイロードデータを含むステップとを含む。
【００１０】
更に、幾つかの実施形態において、事前定義暗号化アルゴリズムを動作させるステップは、暗号化鍵を選択するステップを含み、方法は、事前定義ヘッダー部分に選択暗号化鍵を表す鍵識別データを含むステップを更に含む。
【００１１】
更に、幾つかの実施形態において、暗号化鍵を選択するステップは、乱数を取得するステップと、乱数に基づいて、暗号化鍵の事前定義セットの中で暗号化鍵を選択するステップとを含み、鍵識別データは、選択暗号化鍵を表す。
【００１２】
更に、幾つかの実施形態において、鍵識別データは、暗号化鍵の事前定義セットのバージョン番号を更に表す。
【００１３】
更に、幾つかの実施形態において、選択暗号化鍵は、秘密鍵である。
【００１４】
更に、幾つかの実施形態において、コード定義データによって表される方法論は、事前定義暗号化アルゴリズムを含む。
【００１５】
更に、幾つかの実施形態において、方法は、暗号化ペイロードデータでハッシュ関数を動作させて、ハッシュデータを生成するステップと、ヘッダー部分の読み取り可能サブ部分としてハッシュデータを含むステップとを更に含む。
【００１６】
更に、幾つかの実施形態において、ハッシュデータを、デジタル署名として生成する。
【００１７】
更に、幾つかの実施形態において、方法は、地理的位置を表す位置データを取得するステップと、地理的位置における製造ユニットから生じる全パッケージに共通しているようにペイロードデータに位置データを含むステップとを更に含む。
【００１８】
更に、幾つかの実施形態において、位置データは、製造業者、工場、製造ライン、及び製造設備のうち少なくとも１つを示す。
【００１９】
更に、幾つかの実施形態において、方法は、連続生成コードのグループ化を可能にするインデクセーションデータを取得するステップと、ペイロードデータにインデクセーションデータを含むステップとを更に含む。
【００２０】
更に、幾つかの実施形態において、インデクセーションデータを取得するステップは、時間と共に増加又は減少される連続値を出力するように構成されている少なくとも１つの連続カウンターの現在値を取得するステップを含む。
【００２１】
更に、幾つかの実施形態において、インデクセーションデータを取得して、複数の連続カウンターによって出力される現在値の組み合わせを含む。
【００２２】
更に、幾つかの実施形態において、インデクセーションデータの少なくとも一部を取得して、現在時刻を表す。
【００２３】
更に、幾つかの実施形態において、方法は、各パッケージに対するランダムデータを取得するステップと、ペイロードデータにランダムデータを含むステップとを更に含む。
【００２４】
更に、幾つかの実施形態において、ランダムデータを取得するステップは、ランダム順序で相互一意値の事前定義範囲に属する値を断続的に配列し、ランダム順序で１つずつ値の少なくともサブセットを出力するように動作されているランダム化カウンターからランダム値を取得するステップを含む。
【００２５】
更に、幾つかの実施形態において、方法は、事前定義範囲に属し、現在時刻に対する最短時間単位である事前定義時間内で相互に一意であるランダム値を生成するように構成されているランダム化カウンターから各パッケージに対するランダム値を取得するステップと、ペイロードデータにランダム値を含むステップとを更に含む。
【００２６】
更に、幾つかの実施形態において、コードを、バッチ生成要求に従って生成し、少なくとも１つの連続カウンターは、バッチカウンターを含み、方法は、各バッチ生成要求に対してバッチカウンターを増加又は減少させるステップを更に含み、インデクセーションデータを取得するステップは、バッチカウンターの現在値を取得するステップを更に含む。
【００２７】
更に、幾つかの実施形態において、少なくとも１つの連続カウンターは、パッケージカウンターを含み、方法は、各パッケージに対してパッケージカウンターを増加又は減少させるステップを更に含み、インデクセーションデータを取得するステップは、パッケージカウンターの現在値を取得するステップを更に含む。
【００２８】
更に、幾つかの実施形態において、方法は、同一コード生成器のグループに含まれる第１のコード生成器によって実行され、方法は、第１のコード生成器をグループにおける他のコード生成器と区別する冗長データを取得するステップと、ヘッダー部分及びペイロードデータのうち少なくとも１つに冗長データを含むステップとを更に含む。
【００２９】
更に、幾つかの実施形態において、暗号化ペイロードデータ及びコード定義データを、それぞれの一連の２進値としてコードに含む。
【００３０】
更に、幾つかの実施形態において、方法は、パッケージにコードをマーク付けするステップを更に含む。
【００３１】
更に、幾つかの実施形態において、マーク付けするステップは、パッケージのうち１つの容器部分が形成されるべきシート材料の上で、又は容器部分と結合されるべき要素の上で、液体食品用のパッケージのうち１つの上のデータキャリアにコードを埋め込むステップを含む。
【００３２】
更に、幾つかの実施形態において、マーク付けするステップは、データキャリアに埋め込むのに適しているフォーマットにコードを変換するステップを更に含む。
【００３３】
更に、幾つかの実施形態において、マーク付けするステップは、プリンター又はアブレーションデバイスを制御して表面部分にマーク付けするステップ、又は無線識別用の電子タグにコードを記憶するステップを含む。
【００３４】
更に、幾つかの実施形態において、方法は、データベースにコードを記憶するステップを更に含み、データベース及び／又はデータベースの区分を、コードのペイロードデータに基づいて記憶するために選択する。
【００３５】
本発明の第２の態様は、プロセッサによって実行される場合、第１の態様又は第１の態様の実施形態のいずれかの方法をプロセッサに実行させるコンピュータ命令を含むコンピュータ可読媒体である。
【００３６】
本発明の第３の態様は、第１の態様又は第１の態様の実施形態のいずれかの方法によって生成されるコードである。
【００３７】
本発明の第４の態様は、第１の態様又は第１の態様の実施形態のいずれかの方法を実行するように構成されている少なくとも１つのデバイスを含むシステムである。
【００３８】
本発明の第５の態様は、コードをパッケージから読み取った後、第１の態様又は第１の態様の実施形態のいずれかの方法によって生成されるコードを処理する方法である。この方法は、コード定義データをコードから抽出するステップと、コード定義データに基づいてペイロード部分を識別するステップと、暗号化ペイロードデータをコードから抽出するステップと、暗号化ペイロードデータで事前定義暗号解読アルゴリズムを動作させて、ペイロードデータを生成するステップと、ペイロードデータ、又はペイロードデータの１つ又は複数のサブセットに基づいて、データベースの中でコードを探索するステップとを含む。
【００３９】
上述のハッシュデータをヘッダー部分に含む全実施形態に適用できる本発明の第６の態様は、コードをパッケージから読み取った後、コードを処理する方法である。この方法は、ハッシュデータをコードのヘッダー部分から抽出するステップと、暗号化ペイロードデータをコードのペイロード部分から抽出するステップと、暗号化ペイロードデータでハッシュ関数を動作させて、現在ハッシュデータを生成するステップと、現在ハッシュデータがハッシュデータと異なる場合、コードを拒否するステップとを含む。本発明の実施形態の他の目的、特徴、態様及び利点は、下記の詳細な説明、添付の特許請求の範囲及び図面から明白になるであろう。
【図面の簡単な説明】
【００４０】
【図１Ａ−１Ｂ】図１Ａは、液体食品用のパッケージのための製造及び流通網の概略図であり、図１Ｂは、このようなパッケージの略図である。
【図２】本発明の実施形態による一意コードをパッケージにマーク付けするシステムの例のブロック図である。
【図３】図２におけるシステムの１つ又は複数の構成要素を実施する機械のブロック図である。
【図４Ａ−４Ｂ】図４Ａは、本発明の実施形態によって生成されるコードの構造の例を示し、図４Ｂは、ペイロードデータの構造、及びコードに対する暗号化ペイロードデータを生成するための使用の例を示す。
【図５】本発明の実施形態によってペイロードデータを生成する構造のブロック図である。
【図６】コード生成中のコードのインスタンスの例を示す。
【図７Ａ−７Ｂ】本発明の実施形態によってペイロードデータに含まれるパラメータの例を示す。
【図８】本発明の実施形態によって一意コードを生成してパッケージにマーク付けする処理の例のフローチャートである。
【図９】パッケージから読み取られたコードを処理する方法の例のフローチャートである。
【図１０Ａ−１０Ｂ】本発明の実施形態によって生成されるコードを記憶するデータベース構造の例を示す。
【図１１】図２におけるシステムの変型例のブロック図である。
【発明を実施するための形態】
【００４１】
ここで、本発明の実施形態について、本発明の（全部ではない）幾つかの実施形態を示す添付図面を参照してより完全に以下説明する。実際に、本発明は、多くの異なる形で具体化されることができ、ここに記載の実施形態に限定されると解釈されるべきではない。むしろ、この開示が適用法律要件を満たすことができるように、これらの実施形態を提供する。同じ番号は、完全に同じ要素を意味する。
【００４２】
更に、可能な限り、ここで記載される及び／又は考えられる本発明の実施形態のいずれかの利点、特徴、機能、工夫、及び／又は運転態様のいずれかを、ここで記載される及び／又は考えられる本発明の他の実施形態のいずれかに含むことができる、逆もまた同様であることが分かる。その上、可能な限り、単数形で表される任意の用語は、特に明示的に指定がない限り、複数形も含むように意図されており、逆もまた同様である。ここで使用されるように、「少なくとも１つ（ａｔ  ｌｅａｓｔ  ｏｎｅ）」は、「１つ又は複数（ｏｎｅ  ｏｒ  ｍｏｒｅ）」を意味するものとし、これらの語句は、交換可能であるように意図されている。従って、用語「１つ（ａ）」及び／又は「１つ（ａｎ）」は、語句「１つ又は複数（ｏｎｅ  ｏｒ  ｍｏｒｅ）」又は「少なくとも１つ（ａｔ  ｌｅａｓｔ  ｏｎｅ）」がここで使用されていても、「少なくとも１つ（ａｔ  ｌｅａｓｔ  ｏｎｅ）」又は「１つ又は複数（ｏｎｅ  ｏｒ  ｍｏｒｅ）」を意味するものとする。ここで使用されるように、言語又は必要な意味合いを表すために文脈がその他の点で必要とする場合を除いて、語「含む（ｃｏｍｐｒｉｓｅ）」、又は「含む（ｃｏｍｐｒｉｓｅｓ）」又は「含む（ｃｏｍｐｒｉｓｉｎｇ）」などの変型例は、包含的な意味で使用され、即ち、規定の特徴の存在を指定し、本発明の様々な実施形態で更なる特徴の存在又は追加を除外しない。
【００４３】
周知の機能又は構成について、簡潔さ及び／又は明確さのために、詳細に説明しない。特に指定がない限り、ここで使用される全ての用語（技術用語及び科学用語を含む）は、この発明が属する当業者によって一般に理解されるものと同じ意味を有する。
【００４４】
図１Ａは、液体食品用のパッケージのための製造及び流通網の略図である。液体食品は、果汁、ワイン、ビール、ソーダ、乳製品、ソース、油、クリーム、カスタード、スープなどの飲料、及び液体内の固形食品（例えば、豆、果物、トマト、シチューなど）を含む、室温で非固形である又は注ぐことができる任意の食品である。図示の流通網は、パッケージ用の原料を製造する製造段階１、液体食品を含むパッケージを製造する充填段階２、液体食品を含むパッケージを流通させる流通段階３、パッケージを消費者に供給する小売段階４、及びパッケージを消費者によって取り扱い、液体食品を消費する消費者段階５を含む。
【００４５】
製造段階１において、パッケージ用のシート材料を変換工場（プラント）１０で製造する。シート材料は典型的に、紙ベースであり、ロール１１で充填段階２に供給される。図示の例において、段階１は、パッケージ用のキャップ１３（典型的に、プラスチック材料）を製造する専用工場（プラント）１２を更に含む。キャップ無しでパッケージを形成する場合、工場１２は、段階１に存在しない。更に、段階１は、パッケージ用の特定の構成要素を製造する追加工場を含むことが考えられる。
【００４６】
充填段階２において、充填工場（プラント）１４は、シート材料１１、キャップ１３及び液体食品で稼働し、液体食品を含むパッケージを供給する。例えば、充填プラント１４における製造ラインは、シート材料１１で容器を形成し、この容器に液体食品を充填し、容器を密封し、パッケージを形成してもよい。製造ラインは、キャップ１３を容器に装着してもよい。図１Ｂは、充填プラント１４によって製造されたパッケージ１６の例を示す。段階２は、パッケージの外部取り扱い１５、例えば、流通段階３に入る前にパレットに載せることを更に含んでもよい。
【００４７】
製造網は一般的に、全世界的に分布された多くの異なる変換プラント１０、キャッププラント１２及び充填プラント１４を含むことができるものとする。プラント１０、１２、１４の各々は、複数の製造ラインを含んでもよい。
【００４８】
本出願人は、液体食品を含む各パッケージに一意コードをマーク付けする必要性を確認している。従って、各コードは、少なくとも事前定義寿命の間、図１Ａに例示のような製造網内のプラント１０、１２、１４のエコシステム全体内で一意であるべきである。コードを、図１Ａに示すプラント１０、１２、１４のいずれかでパッケージに付けてもよい。例えば、充填プラント１４によって製造された各パッケージ１６に設置されるように、変換プラント１０によってシート材料１１上の事前定義位置にコードを付けてもよい。別の例において、コードを、キャッププラント１２によって各キャップ１３に付けてもよい。更なる例において、コードを、充填プラント１４によって、シート材料１１、キャップ１３、中間容器又はパッケージ１６に付ける。パッケージ１６は、複数のこのような一意コード（例えば、キャップ１３に１つ、及びパッケージ１６に１つ）を含むことができるものとする。更に、一意コードを、その後の取り扱い１５（例えば、パレット載せ）でパッケージ、又はパッケージのグループに供給することが考えられる。
【００４９】
製造品にコードを供給する任意の既知の技法によって実施されることができる、図１Ｂに示すデータキャリア１７に埋め込まれるように、コードをパッケージ１６に付ける。１つの例において、例えば、一連の人間が読めるシンボル（例えば、文字）、又は１つ又は複数のバーコード又は二次元コード（データ行列、クイックレスポンス（ＱＲ）コードなど）などの機械可読図形シンボルとして、データキャリア１７をパッケージ１６に印刷する。別の例において、データキャリアは、電子タグであり、例えば、この目的のための任意の従来の規格に従って、このタグを用いた無線通信（例えば、ＮＦＣ、ＲＦＩＤ、ＢＬＥなど）によって、コードを、記憶し、検索に利用できる。
【００５０】
各パッケージへの一意コードの供給は、製造及び流通網（図１Ａ）にわたってパッケージを探知及び追跡すること、パッケージの認証を検査すること、消費者又は小売要員によるアクセスのためにパッケージに関するウェブ内容にリンクすること、販売促進キャンペーン及びくじ引きにコードを関連付けること、段階１〜５（図１Ａ）で使用される機械（例えば、充填プラント１４における任意の設備、輸送車両における冷却システム、倉庫トラック、ロボット、冷蔵庫など）の自動を引き起こすことを含む、多くの異なるアプリケーションを可能にする。
【００５１】
全てのこのようなアプリケーションに共通しているのは、各生成コードを、パッケージにマーク付けするだけでなく、任意選択的に追加データと関連して、データベースにも記憶することである。アプリケーションの実行中に、データベースにアクセスして、特定のコードを探索する。探索速度は、アプリケーションの実施に重要な側面であることが分かる。これは、毎年製造される液体食品を含む膨大なパッケージを考えると、生成される多くのコードを考慮して困難なタスクである。例えば、１８８０億個を超えるＴｅｔｒａ  Ｐａｋ（登録商標）のパッケージが２０１６年に販売された。
【００５２】
本出願人は、パッケージに対する一意コードの下記の望ましい特徴を確認している。
１）非常に多くの（典型的には、１０１２個を超える）一意コードを可能にする。
２）エコシステム内で製造されるパッケージの最小サイズに適する小型データキャリアを可能にする。
３）不正コード生成のリスクを最小限にする。
４）有効コードを推測するリスクを最小限にする。
５）偽りコードの高速拒否を可能にする。
６）データベースにおけるコードの効率的な高速探索を可能にする。
７）スケーラブルなコード構造及びコード長を可能にする。
８）連続的且つ効率的な世界的大規模生産運転を確保するのに必要なロバスト及び維持特性を可能にする。
【００５３】
コードを生成する１つの考えられる技法は、連番順に番号として各コードを生成することである。しかし、このようなコードは、少なくとも特徴３）及び４）を達成することができない。
【００５４】
コードを生成する別の考えられる技法は、一意コードの数がマーク付けされるべきパッケージの数を大幅に超えることができる長さで、乱数又は擬似乱数として各コードを生成することである。このようなコードは、特徴３）及び４）を達成することができるけれども、特徴５）及び６）と組み合わせることは難しい。
【００５５】
下記に例示されるべき本発明の実施形態は、ヘッダー部分及びペイロード部分（ペイロード部分におけるデータは暗号化され、ヘッダー部分におけるデータは暗号化されない）を含むコードを生成することによって、特徴１）〜８）の全てを可能にするという洞察に基づいている。暗号化は、コードを十分にスクランブルして推測及び不正コード生成を困難にすることを保証する。更に、ペイロード部分におけるデータを、暗号化前に各コードで一意であるように定義してもよく、これによって、コードも一意にする。更に、ペイロード部分におけるデータを、データベースにおけるコードの効率的な探索を可能にするように、暗号化前に構造化してもよい。更に、ヘッダー部分は、コード構造及びコード長におけるスケーラビリティを可能にする情報、高速拒否を可能にする情報、ペイロード部分の暗号解読を可能にする情報などを更に含んでもよい。
【００５６】
更に、コードをパッケージに付ける製造ユニットの特性を暗号化前に表すように、ペイロード部分を生成してもよい。例えば、ペイロード部分は、製造ユニット（プラント、製造ライン、製造設備など）の地理的位置、及び各パッケージのタイムスタンプのうち少なくとも１つを示してもよい。これは、ペイロード部分がエコシステム内で一意であることを保証するユーザから見えない強固な方法である。
【００５７】
コード生成及びパッケージへのマーク付けのために構成されているシステム２０の実施形態の例を、図２に概略的に示す。システム２０は、制御ユニット２１、コード生成器２２及びマーク付けデバイス２３を含む。制御ユニット２１は、コード（ＣＯＤＥ）をコード生成器２２から取得し、製造品（例えば、シート材料１１、キャップ１３又はパッケージ１６）にコードをマーク付けデバイス２３に供給させる制御信号（ＣＴＲＬ）を生成するように構成されている。上述から分かるように、マーク付けデバイス２３は、プリンター、アブレーションデバイス、又は、マーク付けデバイス２３によって製造品に装着されることができる、又は製造品に事前装着されることができる電子タグにコードを埋め込むデバイスであってもよい。図示の例において、制御ユニット２１は、操作者が入力データを手動入力する及び／又はシステムの動作を制御することができるマンマシンインターフェース（ＭＭＩ）を含むことができる入力インターフェース２４を有する、又は入力インターフェース２４に接続されている。代わりに、又は更に、入力インターフェース２４は、有線又は無線接続の上で外部制御器から入力データ又は制御データを受信する受信機を含んでもよい。
【００５８】
制御ユニット２１は、１つ又は複数のコードを要求に応じて生成してコードを制御ユニット２１に供給するコード生成器２２からの１つ又は複数のコードに対する要求（ＲＥＱ）を生成するように動作する。任意選択的に追加データと関連して、データベース２６に各コードを入力するように、制御ユニット２１又はコード生成器２２（図２に示す）を更に構成してもよい。更に、このような追加データをシステム２０から離れてデータベース２６に追加することが考えられる。
【００５９】
図２におけるシステム２０を、コードのインライン生成、又はコードのオフライン（バッチ式）生成に対して実施してもよい。このようなインライン実施形態において、プラント１０、１２、１４における製造中に、コードをリアルタイムで生成し、典型的に、コード生成器２２をプラント１０、１２、１４に設置する。制御ユニット２１からの各入力要求ＲＥＱに対する単一の一意コードを返すように、コード生成器２２を構成してもよい。ここで使用されるように、「要求」は、コードをコード生成器に生成させることができる任意のタイプの信号を示す。オフライン実施形態において、制御ユニット２１は、製造前にコードのバッチに対して要求ＲＥＱをコード生成器に送信する。実装形態によって、要求は、製造ユニット（プラント、製造ライン、製造設備など）の識別子、及び生成されるべきコードの数を含んでもよい。要求に応じて、コード生成器２２は、一意コードのバッチを生成して返す。オフライン実施形態において、コード生成器を、製造ユニットから離れて、例えば、通信ネットワーク上でエコシステムにおける異なるプラントにコードを生成して送信するように構成可能なネットワーク接続サーバシステムに設置してもよい（但し、必ずしも必要でない）。
【００６０】
現在、出願人は、充填プラント１４におけるインライン実施形態、及び変換プラント１０及びキャッププラント１２におけるオフライン実施形態を実施することを考えている。
【００６１】
図３は、コード生成器２２を表すことができる機械３０の線図である。機械３０は、任意の適切なプロトコル又は複数のプロトコルに従うデータ通信用の１つ又は複数のインターフェースを規定する通信モジュール３１を含む。機械３０は、１つ又は複数のプロセッサ３２、例えば、中央処理装置（ＣＰＵ）、図形処理ユニット（ＧＰＵ）、デジタル信号プロセッサ（ＤＳＰ）、１つ又は複数の特定用途向け集積回路（ＡＳＩＣ）、フィールドプログラマブルゲートアレイ（ＦＰＧＡ）、又はこれらの任意の組み合わせを更に含む。機械３０は、読み出し専用メモリ（ＲＯＭ）、ランダムアクセスメモリ（ＲＡＭ）及びフラッシュメモリなどの揮発性及び／又は不揮発性メモリの形でコンピュータメモリを含むことができるシステムメモリ３３を更に含む。メモリ３３は、ここに記載の方法論のいずれか１つを機械３０に実行させるコンピュータ命令３４（例えば、ソフトウェア又はプログラムコード）を記憶してもよい。命令３４を、具体的な（持続性）製品（例えば、磁気媒体、光媒体、読み出し専用メモリ、フラッシュメモリ、デジタルテープなど）又は伝搬信号であることができるコンピュータ可読媒体３５上の機械３０に供給してもよい。命令３４を、既知の方法を用いて、制限及び限定アクセスによって保護してもよい。プロセッサによって実行される場合、命令３４は、ここに記載の方法論のいずれか１つをプロセッサ３２に実行させてもよい。制御ユニット２１も、異なるコンピュータ命令ではあるけれども、対応する機械３０によって実施することができるものとする。更に、制御ユニット２１及びコード生成器２２を機械３０上で一緒に実施することが考えられる。
【００６２】
コード生成器２２の機能を任意の数の協調コンピュータシステム又はサーバ上の資源によって実行するクラウドコンピューティングによってコード生成器２２を実施することが考えられる。このような実装形態において、協調コンピュータシステムは一緒に、図３における機械３０に対応する。
【００６３】
図４Ａは、本発明によって生成されるコードの構造の実施形態を示す。コードは、ヘッダー部分４０及びペイロード部分４１を含む。ペイロード部分４１は、暗号化ペイロードデータ［ＥＰ］を保持する。ヘッダー部分４０は、暗号化されず、従って、暗号化鍵の必要なくヘッダー部分４０の内容にアクセスできるという意味で読み取り可能である。しかし、ヘッダー部分４０又はヘッダー部分４０の一部を難読化することが考えられる。用語「難読化」（「不明瞭化」又は「曇らせること」で示すこともある）は、処理によって適用されるアルゴリズムが未知である場合、データセットにアクセスするのを意図的に困難にするデータセットに適用される処理を意味する。一方、用語「暗号化」は、処理によって適用されるアルゴリズムが既知である場合でも、妥当な時間でデータセットにアクセスできるように秘密（例えば、鍵）に要求するデータセットに適用される処理を意味する。
【００６４】
図４Ａの例において、ヘッダー部分４０は、符号化データ［Ｅ］、生成器データ［Ｇ］、ランダム鍵セレクター［Ｒ］、鍵バージョン［Ｋ］及びハッシュデータ［Ｈ］をそれぞれ保持する５つのサブ部分を含む。符号化データ［Ｅ］は、コード定義データであり、全コードにおける固定及び事前定義位置及び範囲を有する。従って、符号化データ［Ｅ］の値は、コードの構造及び長さを示し、異なる値は、異なる構造及び／又は長さを示す。構造は、ヘッダー及びペイロード部分４０、４１の範囲、及びヘッダー部分４０に含まれるサブ部分の型、位置及び範囲を含んでもよい。符号化データ［Ｅ］の供給は、コードを構造及び長さにおいてスケーラブルにする。スケーラビリティは、コードの構造及び長さが、特定のデータキャリアの符号化能力を一致させるように適合される、又は最終的な将来の予期せぬ使用法及び用途に適合されることができるという点で有利である。現在好ましい実施形態において、符号化データ［Ｅ］は、例えば、変換プラント１０、キャッププラント１２及び充填プラント１４を区別するために、コードをパッケージにマーク付けしているプラント用の製造網における位置を更に示す。更に、生成器データ［Ｇ］は、コード定義データであり、コードが生成された方法、即ち、続かれた手順及びステップを示す。例えば、コードがインライン又はオフライン実施形態によって生じる場合、生成器データ［Ｇ］の値は、使用された暗号化アルゴリズム（暗号）などを示してもよい。生成器データ［Ｇ］の供給により、コード生成処理の汎用性が増加する。ランダム鍵セレクター［Ｒ］は、ペイロードデータを暗号化するために使用された暗号化鍵を指定する。ランダム鍵セレクター［Ｒ］の供給により、コードを生成する場合、暗号化鍵の事前定義セットの中でランダム選択を行うことができる。これは、コード間の異なる暗号化鍵の使用を可能にすることによって安全性を高め、更に、変動性をヘッダー部分４０に導入して、コード及びコード生成処理を解読するのを更に一層困難にする。鍵バージョン［Ｋ］は、コード生成処理で使用される暗号化鍵の事前定義セットのバージョンを指定する。鍵バージョン［Ｋ］の供給により、前方及び後方互換性を有する安全性の向上のために、暗号化鍵の事前定義セットを更新することができる。ハッシュデータ［Ｈ］は、ペイロード部分４１における暗号化ペイロードのハッシュ値であり、又はこのハッシュ値を含む。ハッシュデータ［Ｈ］の供給により、偽りコードの高速拒否を可能にし、これによって、高速拒否が一定量の偽りコードを誤って認可した場合でも、データベースにおけるコードを探索する必要性を減らす。ヘッダー部分４０から直接読み取り可能なハッシュデータ［Ｈ］の使用によって、暗号化ペイロード［ＥＰ］の暗号解読無しで、高速拒否を行う。一実施形態において、ハッシュデータ［Ｈ］は、デジタル署名であり、又はこのデジタル署名を含む。デジタル署名の供給により、コードの認証が可能になり、これによって、高精度で偽りコードの高速拒否が可能になる。
【００６５】
［Ｒ］及び［Ｋ］の両方は、特定のコードを生成するために使用された暗号化鍵を識別することが知られている必要があることに留意すべきである。従って、［Ｒ］及び［Ｋ］は一緒に、「鍵識別データ」を形成する。しかし、代わりに、単一暗号化鍵だけを使用する場合に［Ｒ］なしで、及び／又は、鍵又は複数の鍵の単一バージョンだけを使用する場合に［Ｋ］なしで、コードを生成することができることに留意すべきである。
【００６６】
図４Ａに示されないけれども、ヘッダー部分４０は、追加データ（例えば、ハイパーリンク）を含んでもよい。更に、ヘッダー部分４０もペイロード部分４１も、図示のようにコードで連続部分である必要がないことに留意すべきである。代わりに、ヘッダー部分４０を、ペイロード部分４１と交互されるサブセット、又はペイロード部分４１のサブセットに分ける。しかし、図４Ａにおける構造は、コード生成、及びパッケージから読み取られるコードの処理の両方を最適化することが現在考えられる。
【００６７】
下記の例において、コードを、一連の２進値（ビット）として生成する。本発明に限定されない現在好ましい実施形態において、コードは、８０ビットから構成され、ヘッダー部分４０は、１６ビットを含み、ペイロード部分４１は、６４ビットを含む。この限定されない例において、［Ｅ］は、２ビットであり、［Ｇ］は、１ビットであり、［Ｒ］は、２ビット（即ち、事前定義セットにおける４つの異なる暗号化鍵）であり、［Ｋ］は、２ビット（即ち、事前定義セットの最大４つの異なるバージョン）であり、［Ｈ］は、８ビットである。
【００６８】
図４Ｂは、コードのペイロード部分４１に含むために、ペイロードデータ［Ｐ］で暗号化アルゴリズムＦを動作させて暗号化ペイロードデータ［ＥＰ］を生成するステップを概略的に例示する。秘密暗号化鍵を暗号化及び暗号解読の両方のために使用する任意の対称暗号化アルゴリズム、及び、公開及び秘密暗号化鍵の対を利用する任意の非対称アルゴリズムを含む任意の考えられる暗号化アルゴリズムＦを使用してもよい。限定されない一実施形態において、暗号化アルゴリズムは、Ｂｌｏｗｆｉｓｈ、ＤＥＳ、ＩＤＥＡ、ＲＣ５又はＡＥＳなどのブロック暗号である。暗号化は、ペイロードデータをスクランブルして、ペイロードデータの構造を消し去る。一般的に、暗号化は、ペイロード部分４１に含まれるデータを保護するのに役立ち、別のコードに基づいて有効コードを推測するのを困難にし、不正生成のリスクを最小限にする。
【００６９】
更に、図４Ｂは、ペイロードデータ［Ｐ］に含まれることができる様々なタイプのパラメータを示す。図示の例において、ペイロードデータ［Ｐ］は、地理的位置、典型的にはコードをパッケージに付ける製造ユニットの地理的位置を表す位置データ［Ａ］を含む。位置データ［Ａ］は、例えば、既知の地理的位置を有する特定の製造業者、プラント、製造ライン又は製造設備を示すことによって、間接的に地理的位置表すことができることに留意すべきである。図４Ｂにおいて、ペイロードデータ［Ｐ］は、連続生成コードのグループ化を可能にするインデクセーションデータ［Ｂ］を更に含む。後で更に例示されるように、位置データ［Ａ］及び／又はインデクセーションデータ［Ｂ］は、データベースの中でコードを探索する速度を上げるのに役立つことができる。図４Ｂにおいて、ペイロードデータ［Ｐ］は、予測できない変動性をペイロードデータ［Ｐ］に導入するランダムデータ［Ｃ］を更に含む。この予測できない変動性は、コードを分解解析して模倣するのを更に一層困難にし、従って、不正コード生成のリスクを軽減する。
【００７０】
一般的に、産業環境、特に大量生産において、停止は、犠牲の大きい生産高損失を引き起こし、停止を回避すべきである。従って、製造設備を二重にして、いわゆるホットスワッピングを可能にする、即ち、基本的に製造の停止無しで、主要設備から予備設備に切り換えることができることが望ましい。これは、図２におけるコード生成器にも当てはまる。図１１は、２つのコード生成器２２、２２Ａを有する、図２におけるシステムの変型例を例示する。図１１に示されないけれども、図２のように、制御ユニット２１はマーク付けデバイス２３に接続されている。コード生成器２２、２２Ａは、構造的且つ機能的に同一であり、これらのコード生成器２２、２２Ａが、全く同じ方法論を使用して、同じ構造及び長さを有するコードを生成することを意味する。コード生成器２２は、主要生成器として使用され、コード生成器２２Ａは、予備生成器（破線矢印で示す）である。制御器２８は、コード生成器２２、２２Ａに接続され、スイッチ制御信号（ＳＷＣ）によって一方のコード生成器から他方のコード生成器への切り換えを制御する。同じコードを切り換えに関連して両方のコード生成器２２、２２Ａによって生成することを回避するために、一方のコード生成器から他方のコード生成器に切り換える場合、２つのコード生成器２２、２２Ａを十分な精度で同期化することは困難であることがある。この問題を克服するために、ペイロードデータ［Ｐ］は、図４Ｂに示すように、冗長データ［Ｄ］を更に含む。冗長データ［Ｄ］は、コードを生成している特定のコード生成器を表す。従って、コード生成器２２、２２Ａは、異なる冗長データ［Ｄ］をコードに入力するように構成されている。その結果、コード生成器２２、２２Ａによって生成されるコードは、本質的に異なり、重複コードを生成するリスク無しで、ホットスワッピングを行うことができる。例えば、主要コード生成器２２の誤動作の場合、又は主要コード生成器２２の定期保守のために、ホットスワッピングを行ってもよい。ホットスワッピングを可能にすることに加えて、冗長データ［Ｄ］の供給により、２つ以上のコード生成器を並行して動作させ、コードを制御ユニット２１に供給することができる。
【００７１】
変型例において、代わりに又は更に、冗長データ［Ｄ］をヘッダー部分４０に含む。
【００７２】
図４Ｂへの更なる注釈として、ペイロードデータ［Ｐ］は、ペイロードデータ［Ｐ］が追加データを含むことができることを示す空ボックスを含むことに留意しよう。
【００７３】
図５は、例えばコード生成器（図２における２２）内で、ペイロードデータ［Ｐ］を生成する構造の例を示す。この構造の中心に、ペイロード生成器５０があり、ペイロード生成器５０は、データ供給器（５１〜５７）のセットから現在データ値を受信又は取得し、例えば、図４Ｂに示すように構造化されたペイロードデータ［Ｐ］にこれらのデータ値を結合する。データ供給器５１は、上述の位置データ［Ａ］を供給する。上述のインライン実施形態において、位置データ［Ａ］を、事前定義し、メモリに記憶してもよい。従って、データ供給器５１は、メモリ（図３における３３を参照）であってもよい。上述のオフライン実施形態において、位置データ［Ａ］の少なくとも一部を、コード生成器２３によって受信されるバッチ要求ＲＥＱに含んでもよく、位置データ［Ａ］をバッチ要求から検索するように、データ供給器５１を構成してもよい。図５において、連続カウンター５２〜５５は、インデクセーションデータ［Ｂ］のそれぞれの部分［Ｂ］１〜［Ｂ］４を供給する。ここで使用されるように、「連続カウンター」は、予測可能な順序で値を出力するカウンターを示す。具体的には、図５における各連続カウンター５２〜５５は、開始値から終了値まで、時間と共に増加又は減少される出力値を生成するように動作されている。ここで使用されるように、「増加」は、増加（任意のステップだけ）を意味し、「減少」は、減少（任意のステップだけ）を意味する。限定されない例において、連続カウンター５２〜５５は、１ずつ増加又は減少される値を出力する。各カウンター５２〜５５は、出力値が終了値から開始値に反転するように、事前定義モジュロで動作してもよい。インデクセーションデータ［Ｂ］を形成して、連続カウンター５２〜５５からの出力値（例えば、［Ｂ］＝［Ｂ］１［Ｂ］２［Ｂ］３［Ｂ］４）の結合を含む。少なくとも１つの連続カウンターの出力値のコードにおける供給は、連続コードのグループ化を可能にし、これによって、データベース２６（図２）におけるコードのグループ化記憶を可能にし、これによって、データベースの探索が容易になる。各カウンター５２〜５５は、コードをパッケージに付ける製造ユニットにおける製造工程に関連する物理量を表してもよい。１つの例において、カウンター５２〜５５のうち１つ又は複数のカウンターは、インデクセーションデータ［Ｂ］がそれぞれのパッケージに対するタイムスタンプを含むように、製造用の時間パラメータを表してもよい。このような時間カウンターのグループ化は、異なる時間単位（例えば、年、月、週、日、時、分、秒のうち１つ又は複数）で現在時刻を表すように一緒に動作してもよい。
【００７４】
別の例において、カウンター５２〜５５のうち１つは、製造ユニットでマーク付けされるパッケージの数を出力するパッケージカウンターであってもよい。パッケージカウンターは典型的に、事前定義モジュロを適用することなく、開始値からパッケージカウンターの出力値を増加又は減少させる。インライン実施形態において、パッケージカウンターの出力値を、（例えば、図２におけるコード生成器への各入力ＲＥＱに対して）マーク付けされる各パッケージに対して増加させてもよい。特定の変型例において、時間カウンターの値が変わるときはいつでも、開始値にリセットされるように、パッケージカウンターを、時間カウンターで調整する。好ましくは、時間カウンターは、利用できる時間カウンターの中で最短時間単位を表す。最短時間単位が１秒である場合、パッケージカウンターの出力値は、１秒以下の解像度を与え、１秒毎にリセットされる。オフライン実施形態において、パッケージカウンターの出力値を、コードのバッチで生成される各コードに対して増加又は減少させてもよい。カウンターの更なる例について、図７Ａ及び図７Ｂを参照して後述する。
【００７５】
上述から分かるように、連続カウンター５２〜５５を、コード生成処理と同期して、又はコード生成処理とは無関係に、増加又は減少させてもよい。同期化動作の例は、マーク付けされる各パッケージ、又は生成される各コードに対するパッケージカウンターの上述の変更を含む。一方、上述の時間カウンターを、自動的に始動させて、時間カウンターの出力値を更新して現在時刻を表す。
【００７６】
図５の例において、ランダム化カウンター５６は、ランダムデータ［Ｃ］を供給する。ランダム化カウンター５６は、事前定義範囲内でランダム値を出力するように動作可能であり、好ましくは、コード生成処理と同期して、ランダム化カウンターの出力値を変更するように動作されている。一実施形態において、ランダム化カウンター５６は、事前定義時間内で重複することなくランダム値を供給するように構成されており、即ち、ランダム値は、事前定義時間内で相互に一意である。一実装形態において、ランダム化カウンター５６は、ランダム順序で相互一意値の事前定義範囲に属する全ての値を配列し、ランダム順序で１つずつ値又は値のサブセットを出力してもよい。特定の変型例において、時間カウンターの値が変わるときはいつでも、リセットされるように（即ち、ランダム順序で値を再配列する）、ランダム化カウンター５６を、時間カウンターで調整する。好ましくは、時間カウンターは、利用できる時間カウンターの中で最短時間単位を表す。最短時間単位が１秒である場合、ランダム化カウンター５６の出力値は、これによって、１秒以下の解像度を与える。このようなランダム化カウンター５６は、インライン実施形態で１秒以下の解像度を有する上述のパッケージカウンターを交換することができることが分かる。
【００７７】
図５におけるデータ供給器５７は、事前定義され、メモリに記憶され得る上述の冗長データ［Ｄ］を供給する。従って、データ供給器５７は、メモリ（図３における３３を参照）であってもよい。
【００７８】
上述のカウンター５２〜５６を、専用ハードウェア、専用ソフトウェア、又はこれらの組み合わせによって実施してもよい。コード生成器をコンピュータで実施する場合、時間カウンターを、コンピュータ上の既存の支援機能、例えば、オペレーティングシステムに含まれる支援機能によって実施してもよい。
【００７９】
図７Ａは、例えば、図１における充填プラント１４でコードを生成する場合、インライン実施形態でペイロードデータ［Ｐ］におけるパラメータ／データフィールドの例を示す。図示の例において、位置データ［Ａ］は、製造業者ＩＤ、プラントＩＤ、ラインＩＤ及び設備ＩＤを含む。製造業者ＩＤは、充填プラント１４を動作させる製造業者を識別する。プラントＩＤは、充填プラント１４を識別し、ラインＩＤは、製造ラインを識別し、設備ＩＤは、コードをパッケージに付ける設備（例えば、充填機、段ボール包装機、又はパレタイザ）を識別する。図示の例において、コードは、４０９５個の異なる製造業者、各製造業者に対する２５５個の異なるプラント、各プラント内の６３個のライン、及び８個の異なる設備を処理するように設計されている。図示の例において、インデクセーションデータ［Ｂ］は、現在時刻を表し、年、日、時、分及び秒を含む（但し、年は、現在の年モジュロ８によって与えられる）。それぞれのデータフィールドにおける値を、図５を参照して説明されるように、それぞれの時間カウンターによって生成する。更に、ペイロードデータ［Ｐ］は、図５を参照して説明されるように、１秒以下の解像度を与えるパッケージカウンターを含む。パッケージカウンター値を、連続カウンター（図５におけるカウンター５２〜５５を参照）によって生成される場合、インデクセーションデータ［Ｂ］に含んでもよく、又はランダム化カウンター（図５におけるカウンター５６を参照）によって生成される場合、ランダムデータ［Ｃ］に含んでもよい。
【００８０】
図７Ｂは、例えば、変換プラント１０又はキャッププラント１２によってコードを要求時にバッチで生成する場合、オフライン実施形態でペイロードデータ［Ｐ］におけるパラメータ／データフィールドの例を示す。図示の例において、位置データ［Ａ］は、プラントを識別する製造ユニットＩＤを含む。図示の例において、インデクセーションデータ［Ｂ］の一部は、現在時刻を表し、年及び月を含む。これらのパラメータの値を、図５を参照して説明されるように、それぞれの時間カウンターによって生成してもよい。更に、ペイロードデータ［Ｐ］は、それぞれの連続カウンターによって生成されるインデクセーションデータ［Ｂ］であることもできる要求番号及びパッケージカウンターを含む。例えば、要求番号を、現在年及び現在月で特定のプラント（即ち、製造ユニットＩＤの所与の値）から受信される各バッチ要求に対して増加又は減少させてもよい。要求番号を供給するために、図５における構造は、各プラントに対して１つの連続バッチカウンターを含むように見える。月カウンターが、月カウンターの開始値からの開始計数に反転するときはいつでも、連続バッチカウンターは、連続バッチカウンターの開始値（例えば、０）にリセットされる。同様に、パッケージカウンターを、要求番号のそれぞれの値に対して生成される各コードに対して、即ち、特定のバッチに対して増加又は減少させてもよい。パッケージカウンターを供給するために、図５における構造は、各バッチカウンターに対して連続パッケージカウンターを含むように見える。関連バッチカウンターの値が変わるときはいつでも、連続パッケージカウンターは、連続パッケージカウンターの開始値（例えば、０）にリセットされる。代わりに、図７Ｂに示すように、要求番号及びパッケージカウンターのうち少なくとも１つは、ランダムデータ［Ｃ］であってもよい。要求番号及び／又はパッケージカウンターのランダム値を生成する構造は、各連続カウンターをランダム化カウンターと交換することを除いて、上述のように、要求番号及び／又はパッケージカウンターの連続値を生成する構造と同一であってもよい。月値の各変更でリセットされるように、要求番号用のランダム化カウンターを構成してもよく、要求番号値の各変更でリセットされるように、パッケージカウンター用のランダム化カウンターを構成してもよい。
【００８１】
図７Ｂの例において、コードは、１０００個の異なるプラント、毎月５０００００個を超えるバッチ要求、及び要求毎に１３４００００００個を超えるパッケージを処理するように設計されている。図７Ｂにおいて、更に、ペイロードデータ［Ｐ］は、０又は１に設定されることができるマスタ生成器サーバの形で冗長データ［Ｄ］を含む。
【００８２】
図８は、図２のシステムで実行される処理のフローチャートである。処理は、前ステップ８０１〜８０３、及び生成されるべき各コードに対して繰り返される後ステップ８０４〜８１３に対応する、コードを生成する１つの部分を含む。ステップ８０１〜８１３を、図２のシステムにおけるコード生成器２２によって実行する。更に、処理は、制御ユニット２１及びマーク付けデバイス２３（この例ではプリンター）によって一緒に実行されるステップ８１４〜８１６に対応する、コードをパッケージに付ける別の部分を含む。更に、処理は、コードをデータベースに記憶するステップ８１７を含み、ステップ８１７を、制御ユニット２１又はコード生成器２２によって実行してもよい。
【００８３】
前ステップをより詳細に考察する。ステップ８０１は、生成されるべきコードの構造及び長さに対応する符号化データ［Ｅ］に対する値を取得する。ステップ８０２は、コードを生成する場合に続かれるべき手順及びステップに対応する生成器データ［Ｇ］に対する値を取得する。ステップ８０３は、ペイロードデータ［Ｐ］を暗号化するために使用されるべき暗号化鍵の現在バージョンに対応する鍵バージョン［Ｋ］に対する値を取得する。［Ｅ］、［Ｇ］及び［Ｋ］のこれらの値を、処理の現在実行中に生成される全コードに入力する。ステップ８０４では、［Ｅ］、［Ｇ］及び［Ｋ］の値を、コードのヘッダー部分４０に含む。図６は、図８における処理の実行中のコードのインスタンス６１〜６６を例示し、満杯の部分／サブ部分は、この部分が値を含むことを意味する。ステップ８０４は、図６におけるインスタンス６１、６２及び６３に対応することが分かる。
【００８４】
後ステップ８０５〜８０７を実行して、暗号化鍵を選択する。ステップ８０５は、好ましくは、暗号学的に安全な乱数を生成するように構成されている乱数生成器から乱数を取得する。次に、ステップ８０６は、例えば、乱数と暗号化鍵との間の関連性を与えるルックアップテーブル又は機能の使用によって、暗号化鍵の事前定義セットの中で暗号化鍵を乱数に基づいて選択する。ステップ８０６では、暗号化鍵の事前定義セットを、鍵バージョン［Ｋ］によって与える。ステップ８０７は、選択暗号化鍵を表すランダム鍵セレクター［Ｒ］を設定し、［Ｒ］をヘッダー部分４０に含む（図６におけるインスタンス６４）。例えば、暗号化鍵の事前定義セットの各バージョンにおける暗号化鍵を、それぞれの番号によって指定してもよく、ステップ８０７は、この番号に暗号化鍵セレクター［Ｒ］を設定してもよい。
【００８５】
ステップ８０８は、ペイロードデータ［Ｐ］を取得し、図５におけるペイロード生成器５０によって実行されてもよい。図示の例において、ステップ８０８は、位置データ［Ａ］を取得する第１のサブステップ８０８Ａと、インデクセーションデータ［Ｂ］を取得する第１のサブステップ８０８Ｂと、ランダムデータ［Ｃ］を取得する第３のサブステップ８０８Ｃとを含む。図示のように、サブステップ８０８Ｂは、１つ又は複数の連続カウンター（図５における５２〜５５を参照）の現在値を取得する動作８０８Ｂ１を含んでもよく、サブステップ８０８Ｃは、１つ又は複数のランダム化カウンター（図５における５６を参照）の現在値を取得する動作８０８Ｃ１を含んでもよい。図８に示されないけれども、ステップ８０８は、冗長データ［Ｄ］を取得してもよい。しかし、少なくとも［Ｃ］及び［Ｄ］は、エコシステム内で一意のコードを形成するために任意選択的であることに留意すべきである。ステップ８０８は、［Ａ］〜［Ｄ］が取得されている範囲で、現在のコード構造に従って［Ａ］〜［Ｄ］を配列することによって、ペイロードデータ［Ｐ］を形成するステップを更に含む。次に、処理は、ペイロードデータ［Ｐ］で暗号化関数（図４ＢにおけるＦ）を動作させて暗号化ペイロードデータ［ＥＰ］を生成するステップ８０９に進む。ステップ８１０は、［ＥＰ］をコードのペイロード部分４１に含む（図６におけるインスタンス６５）。ステップ８１１は、［ＥＰ］でハッシュ関数を動作させてハッシュデータ［Ｈ］を生成する。任意の考えられるハッシュ関数、例えば、ピアソンハッシングなどの非暗号ハッシング関数を使用してもよい。ステップ８１２は、［Ｈ］をヘッダー部分４０に含む（図６におけるインスタンス６６）。コードを完成し、ステップ８１３は、コードを出力するとすぐ、処理は、ステップ８０４に戻り、別の一意コードを生成する。
【００８６】
ステップ８１４は、ステップ８１３によって出力された各コードで動作して、コードのトランスコーディングを実行する。上述のように、コードは、一連のビット値から構成される。トランスコーディングは、データキャリアに符号化するのに適しているフォーマットにコードを変換するステップを含む。一連のビット値を二次元コードに符号化する例において、これらのビット値を英数字にトランスコーディングすることが知られている。一例として、図６におけるインスタンス６７は、トランスコーディングによって生じる一連の英数字Ｃ０〜Ｃ１５を概略的に示す。トランスコーディングは、物体にマーク付けする当技術分野でよく知られており、より詳細に説明されない。ステップ８１５は、英数字Ｃ０〜Ｃ１５を表す二次元コードの形でデータキャリアを生成し、ステップ８１６は、このデータキャリアをシート材料、キャップ又はパッケージに印刷する。
【００８７】
図９は、本発明の実施形態による、例えば図８における処理によって、コードをマーク付けされているパッケージから読み取られているコードを処理する方法のフローチャートである。異なるタイプのデータキャリアを読み取るデバイスは、当技術分野でよく知られており、更に説明しない。実装形態によって、読み取りは、元来生成されたような、例えばビット列のような、又はトランスコーディングされたデータ、例えば基礎的な元のコードに戻って後でトランスコーディングされる一連の英数字のようなコードになる。
【００８８】
図９の方法において、ステップ９０１は、パッケージから読み取られているコードを入力する。ステップ９０２は、このコードから符号化データ［Ｅ］を読み取る。上述のように、符号化データ［Ｅ］は、全コードにおける固定及び事前定義位置を有する。［Ｅ］の値に基づいて、コードにおける全ての関連部分及びサブ部分の位置は、方法で知られている。その後、ステップ９０３は、コードの構文及びコードを生成する場合に使用されるあらゆる関数を判定する生成器データ［Ｇ］を読み取ってもよい。次に、方法は、ステップ９０４〜９０７によってコードの高速拒否チェックを実行する。ステップ９０４は、ハッシュデータ［Ｈ］を読み取り、ステップ９０５は、暗号化ペイロードデータ［ＥＰ］を読み取り、ステップ９０６は、全コードに対して固定される、又は［Ｇ］に基づいて識別されることができる事前定義ハッシュ関数の使用によって［ＥＰ］のハッシュを計算し、ステップ９０７は、計算ハッシュを［Ｈ］と比較する。ステップ９０７が不一致を見付けた場合、方法は、方法を終了するステップ９０８に進む。その結果、コードを拒否する。それ以外ならば、方法は、コードからランダム鍵セレクター［Ｒ］及び鍵バージョン［Ｋ］を読み取るステップ９０９に進む。これに基づいて、ステップ９１０は、対応する暗号化鍵を取得するとすぐ、ステップ９１１は、暗号化鍵、及び全コードに対して固定される、又は［Ｇ］に基づいて識別されることができる事前定義暗号化アルゴリズムの使用によって、［ＥＰ］を暗号解読する。その結果、ステップ９１１は、ペイロードデータ［Ｐ］を再生成し、ステップ９１２は、位置データ［Ａ］及びインデクセーションデータ［Ｂ］のうち少なくとも１つ、又は［Ａ］及び／又は［Ｂ］における特定のデータフィールド（図７Ａ及び図７Ｂ参照）を、ペイロードデータ［Ｐ］から読み取る。得られる値又は複数の値により、ステップ９１３は、データベースにアクセスして、データベースの中でコードを探索することができる。次に、ステップ９１４は、探索結果、例えば、コードが見付けられているという確認、コードが見付けられていないというメッセージ、データベースにおけるコードに関連する任意の情報などを出力する。
【００８９】
位置データ［Ａ］及び／又はインデクセーションデータ［Ｂ］にアクセスする方法の少数の限定されない例は、データベース管理を向上させることができ、ここで、図１０Ａ及び図１０Ｂを参照してデータベース探索を与える。図１０Ａは、オフライン実施形態で生成されるコードを記憶する第１の区分（上部）、及びインライン実施形態で生成されるコードを記憶する第２の区分（下部）に区分されている（点線で示す）データベース２６の例を示す。第１の区分は、位置データ［Ａ］（図７Ｂにおける製造ユニットＩＤを参照）によって与えられるようなプラントによってサブ区分されている（点線で示す）。図１０Ａにおいて、このような各サブ区分は、シリンダーのスタックを含み、各シリンダーは、それぞれのバッチ要求に対して生成されたコードのバッチを表す。それぞれのサブ区分内で、バッチは、インデクセーションデータ［Ｂ］によって探索可能である。例えば、図７Ｂにおけるインデクセーションデータ［Ｂ］を考えると、各バッチにおけるコードは、年、月及び要求番号の同じ組み合わせを含む。
【００９０】
第２の区分は、位置データ［Ａ］（図７Ａにおける製造業者ＩＤ及びプラントＩＤを参照）によって与えられるような製造業者及びプラントによってサブ区分されている（点線で示す）。図１０Ａは、位置データ［Ａ］（図７ＡにおけるラインＩＤを参照）によって与えられるような製造ラインによって更に区分されている製造業者２のプラント１に対するサブ区分を例示する。このような各サブ区分は、シリンダーのスタックを含み、各シリンダーは、製造年及び製造日（図７Ａにおける年及び日を参照）の特定の組み合わせに対して生成されたコードのグループを表す。従って、それぞれの更なる区分内で、グループは、インデクセーションデータ［Ｂ］によって探索可能である。
【００９１】
図８に戻る。データベース２６における記憶装置に対してコードを送信する場合、ステップ８１７は、好ましくは、特定のデータベース２６におけるコードの記憶装置に関連する［Ａ］及び／又は［Ｂ］パラメータの値を更に送信することが分かる。
【００９２】
図１０Ａに基づいて、熟練者は、位置データ［Ａ］及び／又はインデクセーションデータ［Ｂ］の供給により、特定のデータベース制約（実装形態及びプロバイダーに左右される）に適している可変レベルの区分精度でデータベースを構成することができることが分かる。
【００９３】
図１０Ｂの例において、図１０Ａにおけるデータベース２６は、欧州で製造されるパッケージに対するコードを記憶する１つのデータベース２６Ａ、及び北米で製造されるパッケージに対するコードを記憶する１つのデータベース２６Ｂに分離されている。欧州及び北米への分離は、それぞれのプラントの地理的位置によって与えられる。
【００９４】
従って、図１０Ｂに示すように、位置データ［Ａ］の供給は、データ送信時間を短縮することによって探索を更に速めることができる分散型記憶装置を可能にする。更に、コスト及び性能の利点を持って、位置毎のデータ記憶ボリュームを減らすことができる。更に、国の規制／法律に従うように、データ記憶装置を地理的にローカライズする必要がある状況で、追加の利点を与える。
【図１Ａ】
2021517768.tif 000003
【図１Ｂ】
2021517768.tif 000004
【図２】
2021517768.tif 000005
【図３】
2021517768.tif 000006
【図４Ａ】
2021517768.tif 000007
【図４Ｂ】
2021517768.tif 000008
【図５】
2021517768.tif 000009
【図６】
2021517768.tif 000010
【図７Ａ】
2021517768.tif 000011
【図７Ｂ】
2021517768.tif 000012
【図８】
2021517768.tif 000013
【図９】
2021517768.tif 000014
【図１０Ａ−Ｂ】
2021517768.tif 000015
【図１１】
2021517768.tif 000016
【国際調査報告】
2021517768.tif 000017
2021517768.tif 000018
2021517768.tif 000019