(57)【特許請求の範囲】
【請求項１】
製品またはそのパッケージに付された無線ＩＣタグとの間で情報を送受信する送受信部と署名を作成する署名作成部とを有するリーダライタを前記製品の流通経路上の各拠点に備え、最初の拠点に備わるリーダライタは、自拠点に流通してきた製品またはそのパッケージに付された無線ＩＣタグと交信して、初期値またはそれから導出した値に対して自拠点の秘密鍵で署名した署名文を流通経緯情報として無線ＩＣタグの読み書き可能なメモリに書き込むものであり、最初の拠点以外の拠点に備わるリーダライタは、自拠点に流通してきた製品またはそのパッケージに付された無線ＩＣタグと交信して、その無線ＩＣタグの読み書き可能なメモリに書き込まれている流通経緯情報に対して、自拠点より上流の各拠点の公開鍵を自拠点に近い拠点の公開鍵から順番に使用して検証を繰り返していき、最終的に前記初期値が得られるところまで遡って検証できることにより、前記製品が自拠点まで正しく経緯してきたものと判断する署名検証部を有し、前記署名検証部にて前記製品が自拠点まで正しく経緯してきたものと判断された場合に、無線ＩＣタグの読み書き可能なメモリに書き込まれている流通経緯情報またはそれから導出した情報に対して自拠点の秘密鍵で署名した署名文を新たな流通経緯情報として導出し、無線ＩＣタグの読み書き可能なメモリに書き込まれていた元の流通経緯情報と置き換えるものであることを特徴とする流通経緯認証システム。
【請求項２】
前記初期値として、無線ＩＣタグの読み出し専用メモリに記憶されている当該無線ＩＣタグ固有の識別番号を使用するものであることを特徴とする請求項１記載の流通経緯認証システム。
【請求項３】
製品またはそのパッケージに付された無線ＩＣタグとの間で情報を送受信する送受信部と署名を作成する署名作成部とを有するリーダライタを前記製品の流通経路上の各拠点に備え、最初の拠点に備わるリーダライタは、自拠点に流通してきた製品またはそのパッケージに付された無線ＩＣタグと交信して、初期値またはそれから導出した値に対して自拠点の秘密鍵で署名した署名文を流通経緯情報、前記初期値またはそれから導出した値を補助情報として無線ＩＣタグの読み書き可能なメモリに書き込むものであり、最初の拠点以外の拠点に備わるリーダライタは、自拠点に流通してきた製品またはそのパッケージに付された無線ＩＣタグと交信して、その無線ＩＣタグの読み書き可能なメモリに書き込まれている流通経緯情報に対して、自拠点より１つ上流の拠点の公開鍵を使用して検証し、その検証結果において前記無線ＩＣタグの読み書き可能なメモリに書き込まれている補助情報と同じ情報が導出できることにより、前記製品が1つ前の拠点から正しく経緯してきたものと判断する署名検証部を有し、前記署名検証部にて前記製品が正しく経緯してきたものと判断された場合に、無線ＩＣタグの読み書き可能なメモリに書き込まれている流通経緯情報またはそれから導出した情報に対して自拠点の秘密鍵で署名した署名文を新たな流通経緯情報、書き込まれていた元の流通経緯情報またはそれから導出した情報を補助情報として導出し、無線ＩＣタグの読み書き可能なメモリに書き込まれていた元の流通経緯情報と補助情報と置き換えるものであることを特徴とする流通経緯認証システム。
【請求項４】
経緯順がｉ番目の拠点に備わるリーダライタの署名作成部は、自拠点の秘密鍵をｄｉ、ＲＳＡモジュラスをｎｉ、初期値ｕ０若しくはそれから導出した値または自拠点に流通してきた製品またはそのパッケージに付された無線ＩＣタグの読み書き可能なメモリに書き込まれている流通経緯情報ｕｉ−１若しくはそれから導出した情報をＳＴ、（ｕ＜ｎｉ）？ｆｉ（ｕ）＝ｕ＾｛ｄｉ｝ｍｏｄ ｎｉ：ｆｉ（ｕ）＝ｕと定義される関数をｆｉ（ｕ）、セキュリティパラメタｋビット（ただしｎｉ＜２ｋ）長自然数空間での写像としてφ（ｕ）＝（ｕ＋ｎｉ）ｍｏｄ２ｋと定義される関数をφ（ｕ）、その逆関数をφ−１とするとき、φ−１（ｆｉ（φ（ｆｉ（ＳＴ）））））を新たな流通経緯情報として導出するものであることを特徴とする請求項１記載の流通経緯認証システム。
【請求項５】
前記ＳＴは、自拠点および自拠点より上流の全ての拠点の公開鍵を連結したビット列Ｔｉのハッシュ値Ｈ（Ｔｉ）と、初期値または無線ＩＣタグの読み書き可能なメモリに書き込まれている流通経緯情報のビット列ｕとの排他的論理和により求められる値Ｈ（Ｔｉ）○ｕであることを特徴とする請求項４記載の流通経緯認証システム。
【請求項６】
前記ＳＴは、自拠点および自拠点より上流の全ての拠点の公開鍵およびメッセージを連結したビット列Ｔｉのハッシュ値Ｈ（Ｔｉ）と、初期値または無線ＩＣタグの読み書き可能なメモリに書き込まれている流通経緯情報のビット列ｕとの排他的論理和により求められる値Ｈ（Ｔｉ）○ｕであることを特徴とする請求項４記載の流通経緯認証システム。
【請求項７】
経緯順がｉ番目の拠点に備わるリーダライタは、（ｕ＜ｎｉ）？ｇｉ（ｕ）＝ｕ＾｛ｅｉ｝ ｍｏｄ ｎｉ：ｇｉ（ｕ）＝ｕと定義される関数をｇｉ（ｕ）とするとき、φ−１（ｇ１（φ（ｇ１（Ｈ（Ｔ１○φ−１（ｇ２（φ（（ｇ２（Ｈ（Ｔ２○…Ｔｉ−１○φ−１（ｇｉ−１（φ（ｇｉ−１（ｕｉ−１）））））…）））））））））＝ｕ０が成立することにより、前記製品が自拠点まで正しく経緯してきたものと判断する署名検証部を有することを特徴とする請求項５または６記載の流通経緯認証システム。
【請求項８】
経緯順がｉ番目の拠点に備わるリーダライタの署名作成部は、自拠点の秘密鍵をｄｉ、ＲＳＡモジュラスｎｉ、初期値ｕ０若しくはそれから導出した値または自拠点に流通してきた製品またはそのパッケージに付された無線ＩＣタグの読み書き可能なメモリに書き込まれている流通経緯情報ｕｉ−１若しくはそれから導出した情報をＳＴ、（ｕ＜ｎｉ）？ｆｉ（ｕ）＝ｕ＾｛ｄｉ｝ｍｏｄ ｎｉ：ｆｉ（ｕ）＝ｕと定義される関数をｆｉ（ｕ）、セキュリティパラメタｋビット（ただしｎｉ＜２ｋ）長自然数空間での写像としてφ（ｕ）＝（ｕ＋ｎｉ）ｍｏｄ２ｋと定義される関数をφ（ｕ）、その逆関数をφ−１とするとき、φ−１（ｆｉ（φ（ｆｉ（ＳＴ）））））を新たな流通経緯情報、流通経緯情報ｕｉ−１またはそのハッシュ値ｈ（ｕｉ−１）を新たな補助情報ｖｉとしてそれぞれ導出するものであることを特徴とする請求項３記載の流通経緯認証システム。
【請求項９】
前記ＳＴは、自拠点および自拠点より上流の全ての拠点の公開鍵を連結したビット列Ｔｉのハッシュ値Ｈ（Ｔｉ）と、初期値または無線ＩＣタグの読み書き可能なメモリに書き込まれている流通経緯情報のビット列ｕとの排他的論理和により求められる値Ｈ（Ｔｉ）○ｕであることを特徴とする請求項８記載の流通経緯認証システム。
【請求項１０】
前記ＳＴは、自拠点および自拠点より上流の全ての拠点の公開鍵およびメッセージを連結したビット列Ｔｉのハッシュ値Ｈ（Ｔｉ）と、初期値または無線ＩＣタグの読み書き可能なメモリに書き込まれている流通経緯情報のビット列ｕとの排他的論理和により求められる値Ｈ（Ｔｉ）○ｕであることを特徴とする請求項８記載の流通経緯認証システム。
【請求項１１】
経緯順がｉ番目の拠点に備わるリーダライタは、（ｕ＜ｎｉ）？ｇｉ（ｕ）＝ｕ＾｛ｅｉ｝ ｍｏｄ ｎｉ：ｇｉ（ｕ）＝ｕと定義される関数をｇｉ（ｕ）とするとき、ｈ（Ｈ（Ｔｉ−１○φ−１（ｇｉ−１（φ（ｇｉ−１（ｕｉ−１）））））…）））））））））＝ｖｉ−１が成立することにより、前記製品が１つ前の拠点から正しく経緯してきたものと判断する署名検証部を有することを特徴とする請求項９記載の流通経緯認証システム。
【請求項１２】
製品またはそのパッケージに付された無線ＩＣタグとの間で情報を送受信する送受信部と署名を作成する署名作成部とを有するリーダライタを前記製品の流通経路上の各拠点に設け、最初の拠点に備わるリーダライタが、自拠点に流通してきた製品またはそのパッケージに付された無線ＩＣタグと交信して、初期値またはそれから導出した値に対して自拠点の秘密鍵で署名した署名文を流通経緯情報として無線ＩＣタグの読み書き可能なメモリに書き込み、最初の拠点以外の拠点に備わるリーダライタが、自拠点に流通してきた製品またはそのパッケージに付された無線ＩＣタグと交信して、その無線ＩＣタグの読み書き可能なメモリに書き込まれている流通経緯情報に対して、自拠点より上流の各拠点の公開鍵を自拠点に近い拠点の公開鍵から順番に使用して検証を繰り返していき、最終的に前記初期値が得られるところまで遡って検証できることにより、前記製品が自拠点まで正しく経緯してきたものと判断する署名検証部を有し、前記署名検証部にて前記製品が自拠点まで正しく経緯してきたものと判断された場合に、無線ＩＣタグの読み書き可能なメモリに書き込まれている流通経緯情報またはそれから導出した情報に対して自拠点の秘密鍵で署名した署名文を新たな流通経緯情報として導出し、無線ＩＣタグの読み書き可能なメモリに書き込まれていた元の流通経緯情報と置き換えることを特徴とする流通経緯認証方法。
【請求項１３】
前記初期値として、無線ＩＣタグの読み出し専用メモリに記憶されている当該無線ＩＣタグ固有の識別番号を使用することを特徴とする請求項１２記載の流通経緯認証方法。
【請求項１４】
製品またはそのパッケージに付された無線ＩＣタグとの間で情報を送受信する送受信部と署名を作成する署名作成部とを有するリーダライタを前記製品の流通経路上の各拠点に設け、最初の拠点に備わるリーダライタが、自拠点に流通してきた製品またはそのパッケージに付された無線ＩＣタグと交信して、初期値またはそれから導出した値に対して自拠点の秘密鍵で署名した署名文を流通経緯情報、前記初期値またはそれから導出した値を補助情報として無線ＩＣタグの読み書き可能なメモリに書き込み、最初の拠点以外の拠点に備わるリーダライタが、自拠点に流通してきた製品またはそのパッケージに付された無線ＩＣタグと交信して、その無線ＩＣタグの読み書き可能なメモリに書き込まれている流通経緯情報に対して、自拠点より１つ上流の拠点の公開鍵を使用して検証し、その検証結果において前記無線ＩＣタグの読み書き可能なメモリに書き込まれている補助情報と同じ情報が導出できることにより、前記製品が1つ前の拠点から正しく経緯してきたものと判断する署名検証部を有し、前記署名検証部にて前記製品が正しく経緯してきたものと判断された場合に、無線ＩＣタグの読み書き可能なメモリに書き込まれている流通経緯情報またはそれから導出した情報に対して自拠点の秘密鍵で署名した署名文を新たな流通経緯情報、書き込まれていた元の流通経緯情報またはそれから導出した情報を補助情報として導出し、無線ＩＣタグの読み書き可能なメモリに書き込まれていた元の流通経緯情報と補助情報と置き換えることを特徴とする流通経緯認証方法。
【請求項１５】
経緯順がｉ番目の拠点に備わるリーダライタの署名作成部が、自拠点の秘密鍵をｄｉ、ＲＳＡモジュラスｎｉ、初期値ｕ０若しくはそれから導出した値または自拠点に流通してきた製品またはそのパッケージに付された無線ＩＣタグの読み書き可能なメモリに書き込まれている流通経緯情報ｕｉ−１若しくはそれから導出した情報をＳＴ、（ｕ＜ｎｉ）？ｆｉ（ｕ）＝ｕ＾｛ｄｉ｝ｍｏｄ ｎｉ：ｆｉ（ｕ）＝ｕと定義される関数をｆｉ（ｕ）、セキュリティパラメタｋビット（ただしｎｉ＜２ｋ）長自然数空間での写像としてφ（ｕ）＝（ｕ＋ｎｉ）ｍｏｄ２ｋと定義される関数をφ（ｕ）、その逆関数をφ−１とするとき、φ−１（ｆｉ（φ（ｆｉ（ＳＴ）））））を新たな流通経緯情報として導出することを特徴とする請求項１２記載の流通経緯認証方法。
【請求項１６】
前記ＳＴは、自拠点および自拠点より上流の全ての拠点の公開鍵を連結したビット列Ｔｉのハッシュ値Ｈ（Ｔｉ）と、初期値または無線ＩＣタグの読み書き可能なメモリに書き込まれている流通経緯情報のビット列ｕとの排他的論理和により求められる値Ｈ（Ｔｉ）○ｕであることを特徴とする請求項１５記載の流通経緯認証方法。
【請求項１７】
前記ＳＴは、自拠点および自拠点より上流の全ての拠点の公開鍵およびメッセージを連結したビット列Ｔｉのハッシュ値Ｈ（Ｔｉ）と、初期値または無線ＩＣタグの読み書き可能なメモリに書き込まれている流通経緯情報のビット列ｕとの排他的論理和により求められる値Ｈ（Ｔｉ）○ｕであることを特徴とする請求項１５記載の流通経緯認証方法。
【請求項１８】
経緯順がｉ番目の拠点に備わるリーダライタの署名検証部が、（ｕ＜ｎｉ）？ｇｉ（ｕ）＝ｕ＾｛ｅｉ｝ ｍｏｄ ｎｉ：ｇｉ（ｕ）＝ｕと定義される関数をｇｉ（ｕ）とするとき、φ−１（ｇ１（φ（ｇ１（Ｈ（Ｔ１○φ−１（ｇ２（φ（（ｇ２（Ｈ（Ｔ２○…Ｔｉ−１○φ−１（ｇｉ−１（φ（ｇｉ−１（ｕｉ−１）））））…）））））））））＝ｕ０が成立することにより、前記製品が自拠点まで正しく経緯してきたものと判断する段階を有することを特徴とする請求項１６記載の流通経緯認証方法。
【請求項１９】
経緯順がｉ番目の拠点に備わるリーダライタの署名作成部が、自拠点の秘密鍵をｄｉ、ＲＳＡモジュラスをｎｉ、初期値ｕ０若しくはそれから導出した値または自拠点に流通してきた製品またはそのパッケージに付された無線ＩＣタグの読み書き可能なメモリに書き込まれている流通経緯情報ｕｉ−１若しくはそれから導出した情報をＳＴ、（ｕ＜ｎｉ）？ｆｉ（ｕ）＝ｕ＾｛ｄｉ｝ｍｏｄ ｎｉ：ｆｉ（ｕ）＝ｕと定義される関数をｆｉ（ｕ）、セキュリティパラメタｋビット（ただしｎｉ＜２ｋ）長自然数空間での写像としてφ（ｕ）＝（ｕ＋ｎｉ）ｍｏｄ２ｋと定義される関数をφ（ｕ）、その逆関数をφ−１とするとき、φ−１（ｆｉ（φ（ｆｉ（ＳＴ）））））を新たな流通経緯情報、流通経緯情ｕｉ−１またはそのハッシュ値ｈ（ｕｉ−１）を新たな補助情報ｖｉとしてそれぞれ導出することを特徴とする請求項１４記載の流通経緯認証方法。
【請求項２０】
前記ＳＴは、自拠点および自拠点より上流の全ての拠点の公開鍵を連結したビット列Ｔｉのハッシュ値Ｈ（Ｔｉ）と、初期値または無線ＩＣタグの読み書き可能なメモリに書き込まれている流通経緯情報のビット列ｕとの排他的論理和により求められる値Ｈ（Ｔｉ）○ｕであることを特徴とする請求項１９記載の流通経緯認証方法。
【請求項２１】
前記ＳＴは、自拠点および自拠点より上流の全ての拠点の公開鍵およびメッセージを連結したビット列Ｔｉのハッシュ値Ｈ（Ｔｉ）と、初期値または無線ＩＣタグの読み書き可能なメモリに書き込まれている流通経緯情報のビット列ｕとの排他的論理和により求められる値Ｈ（Ｔｉ）○ｕであることを特徴とする請求項１９記載の流通経緯認証方法。
【請求項２２】
経緯順がｉ番目の拠点に備わるリーダライタの署名検証部が、（ｕ＜ｎｉ）？ｇｉ（ｕ）＝ｕ＾｛ｅｉ｝ ｍａｄ ｎｉ：ｇｉ（ｕ）＝ｕと定義される関数をｇｉ（ｕ）とするとき、ｈ（Ｈ（Ｔｉ−１○φ−１（ｇｉ−１（φ（ｇｉ−１（ｕｉ−１）））））…）））））））））＝ｖｉ−１が成立することにより、前記製品が１つ前の拠点から正しく経緯してきたものと判断する署名検証部を有することを特徴とする請求項２０記載の流通経緯認証方法。
【請求項２３】
製品またはそのパッケージに付された無線ＩＣタグとの間で情報を送受信する送受信部と署名を作成する署名作成部とを有し、前記製品の流通経路上の拠点に設けられるリーダライタであって、自拠点に流通してきた製品またはそのパッケージに付された無線ＩＣタグと交信して、その無線ＩＣタグの読み書き可能なメモリに書き込まれている流通経緯情報に対して、自拠点より上流の各拠点の公開鍵を自拠点に近い拠点の公開鍵から順番に使用して検証を繰り返していき、最終的に初期値または前記無線ＩＣタグの読み出し専用メモリに記憶されている当該無線ＩＣタグ固有の識別番号が得られるところまで遡って検証できることにより、前記製品が自拠点まで正しく経緯してきたものと判断する署名検証部を有し、前記署名検証部にて前記製品が自拠点まで正しく経緯してきたものと判断された場合に、無線ＩＣタグの読み書き可能なメモリに書き込まれている流通経緯情報またはそれから導出した情報に対して自拠点の秘密鍵で署名した署名文を新たな流通経緯情報として導出し、無線ＩＣタグの読み書き可能なメモリに書き込まれていた元の流通経緯情報と置き換えるものであることを特徴とするリーダライタ。
【請求項２４】
製品またはそのパッケージに付された無線ＩＣタグとの間で情報を送受信する送受信部と署名を作成する署名作成部とを有し、前記製品の流通経路上の拠点に設けられるリーダライタであって、自拠点に流通してきた製品またはそのパッケージに付された無線ＩＣタグと交信して、その無線ＩＣタグの読み書き可能なメモリに書き込まれている流通経緯情報に対して、自拠点より１つ上流の拠点の公開鍵を使用して検証し、その検証結果において前記無線ＩＣタグの読み書き可能なメモリに書き込まれている補助情報と同じ補助情報が導出できることにより、前記製品が１つ前の拠点から正しく経緯してきたものと判断する署名検証部を有し、前記署名検証部にて前記製品が自拠点まで正しく経緯してきたものと判断された場合に、無線ＩＣタグの読み書き可能なメモリに書き込まれている流通経緯情報またはそれから導出した情報に対して自拠点の秘密鍵で署名した署名文を新たな流通経緯情報、書き込まれていた元の流通経緯情報またはそれから導出した情報を補助情報として導出し、無線ＩＣタグの読み書き可能なメモリに書き込まれていた元の流通経緯情報と補助情報と置き換えるものであることを特徴とするリーダライタ。
【請求項２５】
前記署名作成部は、自拠点の秘密鍵をｄｉ、ＲＳＡモジュラスをｎｉ、初期値ｕ０若しくはそれから導出した値または自拠点に流通してきた製品またはそのパッケージに付された無線ＩＣタグの読み書き可能なメモリに書き込まれている流通経緯情報ｕｉ−１若しくはそれから導出した情報をＳＴ、（ｕ＜ｎｉ）？ｆｉ（ｕ）＝ｕ＾｛ｄｉ｝ｍｏｄ ｎｉ：ｆｉ（ｕ）＝ｕと定義される関数をｆｉ（ｕ）、セキュリティパラメタｋビット（ただしｎｉ＜２ｋ）長自然数空間での写像としてφ（ｕ）＝（ｕ＋ｎｉ）ｍｏｄ２ｋと定義される関数をφ（ｕ）、その逆関数をφ−１とするとき、φ−１（ｆｉ（φ（ｆｉ（ＳＴ）））））を新たな流通経緯情報として導出するものであることを特徴とする請求項２３記載のリーダライタ。
【請求項２６】
前記ＳＴは、自拠点および自拠点より上流の全ての拠点の公開鍵を連結したビット列Ｔｉのハッシュ値Ｈ（Ｔｉ）と、初期値または無線ＩＣタグの読み書き可能なメモリに書き込まれている流通経緯情報のビット列ｕとの排他的論理和により求められる値Ｈ（Ｔｉ）○ｕであることを特徴とする請求項２５記載のリーダライタ。
【請求項２７】
前記ＳＴは、自拠点および自拠点より上流の全ての拠点の公開鍵およびメッセージを連結したビット列Ｔｉのハッシュ値Ｈ（Ｔｉ）と、初期値または無線ＩＣタグの読み書き可能なメモリに書き込まれている流通経緯情報のビット列ｕとの排他的論理和により求められる値Ｈ（Ｔｉ）○ｕであることを特徴とする請求項２５記載のリーダライタ。
【請求項２８】
（ｕ＜ｎｉ）？ｇｉ（ｕ）＝ｕ＾｛ｅｉ｝ ｍｏｄ ｎｉ：ｇｉ（ｕ）＝ｕと定義される関数をｇｉ（ｕ）とするとき、φ−１（ｇ１（φ（ｇ１（Ｈ（Ｔ１○φ−１（ｇ２（φ（（ｇ２（Ｈ（Ｔ２○…Ｔｉ−１○φ−１（ｇｉ−１（φ（ｇｉ−１（ｕｉ−１）））））…）））））））））＝ｕ０が成立することにより、前記製品が自拠点まで正しく経緯してきたものと判断する署名検証部を有することを特徴とする請求項２６記載のリーダライタ。
【請求項２９】
前記署名作成部は、自拠点の秘密鍵をｄｉ、ＲＳＡモジュラスをｎｉ、初期値ｕ０若しくはそれから導出した値または自拠点に流通してきた製品またはそのパッケージに付された無線ＩＣタグの読み書き可能なメモリに書き込まれている流通経緯情報ｕｉ−１若しくはそれから導出した情報をＳＴ、（ｕ＜ｎｉ）？ｆｉ（ｕ）＝ｕ＾｛ｄｉ｝ｍｏｄ ｎｉ：ｆｉ（ｕ）＝ｕと定義される関数をｆｉ（ｕ）、セキュリティパラメタビット（ただしｎｉ＜２ｋ）長自然数空間での写像としてφ（ｕ）＝（ｕ＋ｎｉ）ｍｏｄ２ｋ定義される関数をφ（ｕ）、その逆関数をφ−１とするとき、φ−１（ｆｉ（φ（ｆｉ（ＳＴ）））））を新たな流通経緯情報、流通経緯情報ｕｉ−１またはそのハッシュ値ｈ（ｕｉ−１）を新たな補助情報ｖｉとしてそれぞれ導出するものであることを特徴とする請求項２４記載のリーダライタ。
【請求項３０】
前記ＳＴは、自拠点および自拠点より上流の全ての拠点の公開鍵を連結したビット列Ｔｉのハッシュ値Ｈ（Ｔｉ）と、初期値または無線ＩＣタグの読み書き可能なメモリに書き込まれている流通経緯情報のビット列ｕとの排他的論理和により求められる値Ｈ（Ｔｉ）○ｕであることを特徴とする請求項２９記載のリーダライタ。
【請求項３１】
前記ＳＴは、自拠点および自拠点より上流の全ての拠点の公開鍵およびメッセージを連結したビット列Ｔｉのハッシュ値Ｈ（Ｔｉ）と、初期値または無線ＩＣタグの読み書き可能なメモリに書き込まれている流通経緯情報のビット列ｕとの排他的論理和により求められる値Ｈ（Ｔｉ）○ｕであることを特徴とする請求項２９記載のリーダライタ。
【請求項３２】
（ｕ＜ｎｉ）？ｇｉ（ｕ）＝ｕ＾｛ｅｉ｝ ｍｏｄ ｎｉ：ｇｉ（ｕ）＝ｕと定義される関数をｇｉ（ｕ）とするとき、ｈ（Ｈ（Ｔｉ−１○φ−１（ｇｉ−１（φ（ｇｉ−１（ｕｉ−１）））））…）））））））））＝ｖｉ−１が成立することにより、前記製品が１つ前の拠点から正しく経緯してきたものと判断する署名検証部を有することを特徴とする請求項３０記載のリーダライタ。
【請求項３３】
製品の流通経路上の拠点に設けられるリーダライタを構成するコンピュータを、前記製品またはそのパッケージに付された無線ＩＣタグとの間で情報を送受信する送受信手段、自拠点に流通してきた製品またはそのパッケージに付された無線ＩＣタグと前記送受信手段を通じて交信し、前記無線ＩＣタグの読み書き可能なメモリに書き込まれている流通経緯情報に対して、記憶手段に記憶されている自拠点より上流の各拠点の公開鍵を自拠点に近い拠点の公開鍵から順番に使用して検証を繰り返していき、最終的に予め定められた初期値または前記無線ＩＣタグの読み出し専用メモリに記憶されている当該無線ＩＣタグ固有の識別番号が得られるところまで遡って検証できることにより、前記製品が自拠点まで正しく経緯してきたものと判断する署名検証手段、前記署名検証手段にて前記製品が自拠点まで正しく経緯してきたと判断された場合に、無線ＩＣタグの読み書き可能なメモリに書き込まれている流通経緯情報またはそれから導出した情報に対して記憶手段に記憶されている自拠点の秘密鍵で署名した署名文を新たな流通経緯情報として導出し、前記無線ＩＣタグの読み書き可能なメモリに書き込まれていた元の流通経緯情報と置き換える署名作成手段、として機能させるためのプログラム。
【請求項３４】
製品の流通経路上の拠点に設けられるリーダライタを構成するコンピュータを、前記製品またはそのパッケージに付された無線ＩＣタグとの間で情報を送受信する送受信手段、自拠点に流通してきた製品またはそのパッケージに付された無線ＩＣタグと前記送受信手段を通じて交信し、前記無線ＩＣタグの読み書き可能なメモリに書き込まれている流通経緯情報に対して、記憶手段に記憶されている自拠点より１つ上流の拠点の公開鍵を使用して検証し、その検証結果において前記無線ＩＣタグの読み書き可能なメモリに書き込まれている補助情報と同じ補助情報が導出できることにより、前記製品が１つ前の拠点から正しく経緯してきたものと判断する署名検証手段、前記署名検証手段にて前記製品が１つ前の拠点から正しく経緯してきたものと判断された場合に、無線ＩＣタグの読み書き可能なメモリに書き込まれている流通経緯情報またはそれから導出した情報に対して記憶手段に記憶されている自拠点の秘密鍵で署名した署名文を新たな流通経緯情報、書き込まれていた元の流通経緯情報またはそれから導出した情報を補助情報として導出し、前記無線ＩＣタグの読み書き可能なメモリに書き込まれていた元の流通経緯情報および補助情報と置き換える署名作成手段、として機能させるためのプログラム。
【請求項３５】
前記署名作成手段は、自拠点の秘密鍵をｄｉ、ＲＳＡモジュラスをｎｉ、初期値ｕ０若しくはそれから導出した値または自拠点に流通してきた製品またはそのパッケージに付された無線ＩＣタグの読み書き可能なメモリに書き込まれている流通経緯情報ｕｉ−１若しくはそれから導出した情報をＳＴ、（ｕ＜ｎｉ）？ｆｉ（ｕ）＝ｕ＾｛ｄｉ｝ｍｏｄ ｎｉ：ｆｉ（ｕ）＝ｕと定義される関数をｆｉ（ｕ）、セキュリティパラメタｋビット（ただしｎｉ＜２ｋ）長自然数空間での写像としてφ（ｕ）＝（ｕ＋ｎｉ）ｍｏｄ２ｋ定義される関数をφ（ｕ）、その逆関数をφ−１とするとき、φ−１（ｆｉ（φ（ｆｉ（ＳＴ）））））を新たな流通経緯情報として導出するものであることを特徴とする請求項３３記載のプログラム。
【請求項３６】
前記ＳＴは、自拠点および自拠点より上流の全ての拠点の公開鍵を連結したビット列Ｔｉのハッシュ値Ｈ（Ｔｉ）と、初期値または無線ＩＣタグの読み書き可能なメモリに書き込まれている流通経緯情報のビット列ｕとの排他的論理和により求められる値Ｈ（Ｔｉ）○ｕであることを特徴とする請求項３５記載のプログラム。
【請求項３７】
前記ＳＴは、自拠点および自拠点より上流の全ての拠点の公開鍵およびメッセージを連結したビット列Ｔｉのハッシュ値Ｈ（Ｔｉ）と、初期値または無線ＩＣタグの読み書き可能なメモリに書き込まれている流通経緯情報のビット列ｕとの排他的論理和により求められる値Ｈ（Ｔｉ）○ｕであることを特徴とする請求項３５記載のプログラム。
【請求項３８】
前記コンピュータをさらに、（ｕ＜ｎｉ）？ｇｉ（ｕ）＝ｕ＾｛ｅｉ｝ ｍｏｄ ｎｉ：ｇｉ（ｕ）＝ｕと定義される関数をｇｉ（ｕ）とするとき、φ−１（ｇ１（φ（ｇ１（Ｈ（Ｔ１○φ−１（ｇ２（φ（（ｇ２（Ｈ（Ｔ２○…Ｔｉ−１○φ−１（ｇｉ−１（φ（ｇｉ−１（ｕｉ−１）））））…）））））））））＝ｕ０が成立することにより、前記製品が自拠点まで正しく経緯してきたものと判断する署名検証手段、として機能させることを特徴とする請求項３６記載のプログラム。
【請求項３９】
前記署名作成手段は、自拠点の秘密鍵をｄｉ、ＲＳＡモジュラスをｎｉ、初期値ｕ０若しくはそれから導出した値または自拠点に流通してきた製品またはそのパッケージに付された無線ＩＣタグの読み書き可能なメモリに書き込まれている流通経緯情報ｕｉ−１若しくはそれから導出した情報をＳＴ、（ｕ＜ｎｉ）？ｆｉ（ｕ）＝ｕ＾｛ｄｉ｝ｍｏｄ ｎｉ：ｆｉ（ｕ）＝ｕと定義される関数をｆｉ（ｕ）、セキュリティパラメタｋビット（ただしｎｉ＜２ｋ）長自然数空間での写像としてφ（ｕ）＝（ｕ＋ｎｉ）ｍｏｄ２ｋと定義される関数をφ（ｕ）、その逆関数をφ−１とするとき、φ−１（ｆｉ（φ（ｆｉ（ＳＴ）））））を新たな流通経緯情報、流通経緯情報ｕｉ−１またはそのハッシュ値ｈ（ｕｉ−１）を新たな補助情報ｖｉとしてそれぞれ導出するものであることを特徴とする請求項３４記載のプログラム。
【請求項４０】
前記ＳＴは、自拠点および自拠点より上流の全ての拠点の公開鍵を連結したビット列Ｔｉのハッシュ値Ｈ（Ｔｉ）と、初期値または無線ＩＣタグの読み書き可能なメモリに書き込まれている流通経緯情報のビット列ｕとの排他的論理和により求められる値Ｈ（Ｔｉ）○ｕであることを特徴とする請求項３９記載のプログラム。
【請求項４１】
前記ＳＴは、自拠点および自拠点より上流の全ての拠点の公開鍵およびメッセージを連結したビット列Ｔｉのハッシュ値Ｈ（Ｔｉ）と、初期値または無線ＩＣタグの読み書き可能なメモリに書き込まれている流通経緯情報のビット列ｕとの排他的論理和により求められる値Ｈ（Ｔｉ）○ｕであることを特徴とする請求項３９記載のプログラム。
【請求項４２】
前記コンピュータをさらに、（ｕ＜ｎｉ）？ｇｉ（ｕ）＝ｕ＾｛ｅｉ｝ｍｏｄ ｎｉ：ｇｉ（ｕ）＝ｕと定義される関数をｇｉ（ｕ）とするとき、ｈ（Ｈ（Ｔｉ−１○φ−１（ｇｉ−１（φ（ｇｉ−１（ｕｉ−１）））））…）））））））））＝ｖｉ−１が成立することにより、前記製品が１つ前の拠点から正しく経緯してきたものと判断する署名検証手段、として機能させることを特徴とする請求項４０記載のプログラム。
【請求項４３】
製品の流通経緯を管理するために製品またはそのパッケージに付加される無線ＩＣタグにおいて、製品の流通経路上の各拠点に備わるリーダライタとの間で情報を送受信する送受信部と、自無線ＩＣタグ固有の識別番号を記憶する読み出し専用メモリと、流通経緯情報を記憶する読み書き可能なメモリとを備え、最初の拠点に流通した際にはその拠点に備わるリーダライタによって、前記識別番号またはそれから導出した値に対してその拠点の秘密鍵で署名された署名文が前記流通経緯情報として前記読み書き可能なメモリに書き込まれ、最初の拠点以外の拠点に流通した際にはその拠点に備えるリーダライタによって、前記読み書き可能なメモリに書き込まれている流通経緯情報に対して、自拠点より上流の各拠点の公開鍵を自拠点に近い拠点の公開鍵から順番に使用して検証を繰り返していき、最終的に前記初期値が得られるところまで遡って検証できることにより、前記製品が自拠点まで正しく経緯してきたものと判断された場合に、無線ＩＣタグの読み書き可能なメモリに書き込まれている流通経緯情報またはそれから導出した情報に対してその拠点の秘密鍵で署名された署名文が新たな流通経緯情報として導出されて、前記読み書き可能なメモリに書き込まれていた元の流通経緯情報が置き換えられるものであることを特徴とする無線ＩＣタグ。
【請求項４４】
経緯順がｉ番目の拠点に備わるリーダライタの署名作成部は、署名文の大きさが前記無線ＩＣタグの読み書き可能なメモリの容量以下となる署名方式を用いて署名した署名文を新たな流通経緯情報として導出するものであることを特徴とする請求項１記載の流通経緯認証システム。
【請求項４５】
経緯順がｉ番目の拠点に備わるリーダライタの署名作成部は、自拠点の秘密鍵をｄｉ、ＲＳＡモジュラスをｎｉ、初期値ｕ０若しくはそれから導出した値または自拠点に流通してきた製品またはそのパッケージに付された無線ＩＣタグの読み書き可能なメモリに書き込まれている流通経緯情報ｕｉ−１若しくはそれから導出した情報をＳＴ、ｕ＝ａ｜｜ｓ（ａはｋビット長）としたときに（ａ＜ｎｉ）？Ｅｉ（ｕ）＝（（ａ＾｛ｄｉ｝ｍｏｄ ｎｉ，ｓ｜｜０）：（（ａ−ｎｉ）＾｛ｄｉ｝ｍｏｄ ｎｉ，ｓ｜｜１）と定義される関数をＥｉ（ｕ）とするとき、Ｅｉ（ＳＴ）を新たな流通経緯情報として導出するものであることを特徴とする請求項１記載の流通経緯認証システム。
【請求項４６】
前記ＳＴは、自拠点および自拠点より上流の全ての拠点の公開鍵を連結したビット列Ｔｉのハッシュ値Ｈ（Ｔｉ）と、初期値または無線ＩＣタグの読み書き可能なメモリに書き込まれている流通経緯情報のビット列ｕとの排他的論理和により求められる値Ｈ（Ｔｉ）○ｕであることを特徴とする請求項４５記載の流通経緯認証システム。
【請求項４７】
前記ＳＴは、自拠点および自拠点より上流の全ての拠点の公開鍵およびメッセージを連結したビット列Ｔｉのハッシュ値Ｈ（Ｔｉ）と、初期値または無線ＩＣタグの読み書き可能なメモリに書き込まれている流通経緯情報のビット列ｕとの排他的論理和により求められる値Ｈ（Ｔｉ）○ｕであることを特徴とする請求項４５記載の流通経緯認証システム。
【請求項４８】
経緯順がｉ番目の拠点に備わるリーダライタは、（ｂ＝０）？Ｄｉ（ｕ）＝（（ａ＾｛ｅｉ｝ｍｏｄ ｎｉ，ｓ）：（（ａ＾｛ｅｉ｝ｍｏｄ ｎｉ）＋ｎｉ，ｓ）と定義される関数をＤｉ（ｕ）とするとき、Ｄ１（Ｈ（Ｔ１）○（Ｄ２（Ｈ（Ｔ２）○…Ｄｉ−１（ｕｉ−１））…））＝ｕ０が成立することにより、前記製品が自拠点まで正しく経緯してきたものと判断する署名検証部を有することを特徴とする請求項４６又は４７記載の流通経緯認証システム。
【請求項４９】
経緯順がｉ番目の拠点に備わるリーダライタの署名作成部は、署名文の大きさが前記無線ＩＣタグの読み書き可能なメモリの容量以下となる署名方式を用いて署名した署名文を新たな流通経緯情報とし、流通経緯情報ｕｉ−１またはそのハッシュ値ｈ（ｕｉ−１）を新たな補助情報ｖｉとしてそれぞれ導出するものであることを特徴とする請求項３記載の流通経緯認証システム。
【請求項５０】
経緯順がｉ番目の拠点に備わるリーダライタの署名作成部は、自拠点の秘密鍵をｄｉ、ＲＳＡモジュラスをｎｉ、初期値ｕ０若しくはそれから導出した値または自拠点に流通してきた製品またはそのパッケージに付された無線ＩＣタグの読み書き可能なメモリに書き込まれている流通経緯情報ｕｉ−１若しくはそれから導出した情報をＳＴ、ｕ＝ａ｜｜ｓ（ａはｋビット長）としたときに（ａ＜ｎｉ）？Ｅｉ（ｕ）＝（（ａ＾｛ｄｉ｝ｍｏｄ ｎｉ，ｓ｜｜０）：（（ａ−ｎｉ）＾｛ｄｉ｝ｍｏｄ ｎｉ，ｓ｜｜１）と定義される関数をＥｉ（ｕ）とするとき、Ｅｉ（ＳＴ）を新たな流通経緯情報とし、流通経緯情報ｕｉ−１またはそのハッシュ値ｈ（ｕｉ−１）を新たな補助情報ｖｉとしてそれぞれ導出するものであることを特徴とする請求項３記載の流通経緯認証システム。
【請求項５１】
前記ＳＴは、自拠点および自拠点より上流の全ての拠点の公開鍵を連結したビット列Ｔｉのハッシュ値Ｈ（Ｔｉ）と、初期値または無線ＩＣタグの読み書き可能なメモリに書き込まれている流通経緯情報のビット列ｕとの排他的論理和により求められる値Ｈ（Ｔｉ）○ｕであることを特徴とする請求項５０記載の流通経緯認証システム。
【請求項５２】
前記ＳＴは、自拠点および自拠点より上流の全ての拠点の公開鍵およびメッセージを連結したビット列Ｔｉのハッシュ値Ｈ（Ｔｉ）と、初期値または無線ＩＣタグの読み書き可能なメモリに書き込まれている流通経緯情報のビット列ｕとの排他的論理和により求められる値Ｈ（Ｔｉ）○ｕであることを特徴とする請求項５０記載の流通経緯認証システム。
【請求項５３】
経緯順がｉ番目の拠点に備わるリーダライタは、（ｂ＝０）？Ｄｉ（ｕ）＝（（ａ＾｛ｅｉ｝ｍｏｄ ｎｉ，ｓ）：（（ａ＾｛ｅｉ｝ｍｏｄ ｎｉ）＋ｎｉ，ｓ）と定義される関数をＤｉ（ｕ）とするとき、ｈ（Ｈ（Ｔｉ−１）○Ｄｉ−１（ｕｉ−１））＝ｖｉ−１が成立することにより、前記製品が自拠点まで正しく経緯してきたものと判断する署名検証部を有することを特徴とする請求項５１又は５２記載の流通経緯認証システム。
【請求項５４】
経緯順がｉ番目の拠点に備わるリーダライタの署名作成部が、署名文の大きさが前記無線ＩＣタグの読み書き可能なメモリの容量以下となる署名方式を用いて署名した署名文を新たな流通経緯情報として導出することを特徴とする請求項１２記載の流通経緯認証方法。
【請求項５５】
経緯順がｉ番目の拠点に備わるリーダライタの署名作成部が、自拠点の秘密鍵をｄｉ、ＲＳＡモジュラスをｎｉ、初期値ｕ０若しくはそれから導出した値または自拠点に流通してきた製品またはそのパッケージに付された無線ＩＣタグの読み書き可能なメモリに書き込まれている流通経緯情報ｕｉ−１若しくはそれから導出した情報をＳＴ、ｕ＝ａ｜｜ｓ（ａはｋビット長）としたときに（ａ＜ｎｉ）？Ｅｉ（ｕ）＝（（ａ＾｛ｄｉ｝ｍｏｄ ｎｉ，ｓ｜｜０）：（（ａ−ｎｉ）＾｛ｄｉ｝ｍｏｄ ｎｉ，ｓ｜｜１）と定義される関数をＥｉ（ｕ）とするとき、Ｅｉ（ＳＴ）を新たな流通経緯情報として導出することを特徴とする請求項１２記載の流通経緯認証方法。
【請求項５６】
前記ＳＴは、自拠点および自拠点より上流の全ての拠点の公開鍵を連結したビット列Ｔｉのハッシュ値Ｈ（Ｔｉ）と、初期値または無線ＩＣタグの読み書き可能なメモリに書き込まれている流通経緯情報のビット列ｕとの排他的論理和により求められる値Ｈ（Ｔｉ）○ｕであることを特徴とする請求項５５記載の流通経緯認証方法。
【請求項５７】
前記ＳＴは、自拠点および自拠点より上流の全ての拠点の公開鍵およびメッセージを連結したビット列Ｔｉのハッシュ値Ｈ（Ｔｉ）と、初期値または無線ＩＣタグの読み書き可能なメモリに書き込まれている流通経緯情報のビット列ｕとの排他的論理和により求められる値Ｈ（Ｔｉ）○ｕであることを特徴とする請求項５５記載の流通経緯認証方法。
【請求項５８】
経緯順がｉ番目の拠点に備わるリーダライタが、（ｂ＝０）？Ｄｉ（ｕ）＝（（ａ＾｛ｅｉ｝ｍｏｄ ｎｉ，ｓ）：（（ａ＾｛ｅｉ｝ｍｏｄ ｎｉ）＋ｎｉ，ｓ）と定義される関数をＤｉ（ｕ）とするとき、Ｄ１（Ｈ（Ｔ１）○（Ｄ２（Ｈ（Ｔ２）○…Ｄｉ−１（ｕｉ−１））…））＝ｕ０が成立することにより、前記製品が自拠点まで正しく経緯してきたものと判断する段階を有することを特徴とする請求項５６又は５７記載の流通経緯認証方法。
【請求項５９】
経緯順がｉ番目の拠点に備わるリーダライタの署名作成部が、署名文の大きさが前記無線ＩＣタグの読み書き可能なメモリの容量以下となる署名方式を用いて署名した署名文を新たな流通経緯情報とし、流通経緯情報ｕｉ−１またはそのハッシュ値ｈ（ｕｉ−１）を新たな補助情報ｖｉとしてそれぞれ導出することを特徴とする請求項１４記載の流通経緯認証方法。
【請求項６０】
経緯順がｉ番目の拠点に備わるリーダライタの署名作成部が、自拠点の秘密鍵をｄｉ、ＲＳＡモジュラスをｎｉ、初期値ｕ０若しくはそれから導出した値または自拠点に流通してきた製品またはそのパッケージに付された無線ＩＣタグの読み書き可能なメモリに書き込まれている流通経緯情報ｕｉ−１若しくはそれから導出した情報をＳＴ、ｕ＝ａ｜｜ｓ（ａはｋビット長）としたときに（ａ＜ｎｉ）？Ｅｉ（ｕ）＝（（ａ＾｛ｄｉ｝ｍｏｄ ｎｉ，ｓ｜｜０）：（（ａ−ｎｉ）＾｛ｄｉ｝ｍｏｄ ｎｉ，ｓ｜｜１）と定義される関数を（ｕ）とするとき、Ｅｉ（ＳＴ）を新たな流通経緯情報とし、流通経緯情報ｕｉ−１またはそのハッシュ値ｈ（ｕｉ−１）を新たな補助情報ｖｉとしてそれぞれ導出することを特徴とする請求項１４記載の流通経緯認証方法。
【請求項６１】
前記ＳＴは、自拠点および自拠点より上流の全ての拠点の公開鍵を連結したビット列Ｔｉのハッシュ値Ｈ（Ｔｉ）と、初期値または無線ＩＣタグの読み書き可能なメモリに書き込まれている流通経緯情報のビット列ｕとの排他的論理和により求められる値Ｈ（Ｔｉ）○ｕであることを特徴とする請求項６０記載の流通経緯認証方法。
【請求項６２】
前記ＳＴは、自拠点および自拠点より上流の全ての拠点の公開鍵およびメッセージを連結したビット列Ｔｉのハッシュ値Ｈ（Ｔｉ）と、初期値または無線ＩＣタグの読み書き可能なメモリに書き込まれている流通経緯情報のビット列ｕとの排他的論理和により求められる値Ｈ（Ｔｉ）○ｕであることを特徴とする請求項６０記載の流通経緯認証方法。
【請求項６３】
経緯順がｉ番目の拠点に備わるリーダライタが、（ｂ＝０）？Ｄｉ（ｕ）＝（（ａ＾｛ｅｉ｝ｍｏｄ ｎｉ，ｓ）：（（ａ＾｛ｅｉ｝ｍｏｄ ｎｉ）＋ｎｉ，ｓ）と定義される関数をＤｉ（ｕ）とするとき、ｈ（Ｈ（Ｔｉ−１）○Ｄｉ−１（ｕｉ−１））＝ｖｉ−１が成立することにより、前記製品が自拠点まで正しく経緯してきたものと判断する段階を有することを特徴とする請求項６１又は６２記載の流通経緯認証方法。
【請求項６４】
前記署名作成部は、署名文の大きさが前記無線ＩＣタグの読み書き可能なメモリの容量以下となる署名方式を用いて署名した署名文を新たな流通経緯情報として導出するものであることを特徴とする請求項２３記載のリーダライタ。
【請求項６５】
前記リーダライタの署名作成部は、自拠点の秘密鍵をｄｉ、ＲＳＡモジュラスをｎｉ、初期値ｕ０若しくはそれから導出した値または自拠点に流通してきた製品またはそのパッケージに付された無線ＩＣタグの読み書き可能なメモリに書き込まれている流通経緯情報ｕｉ−１若しくはそれから導出した情報をＳＴ、ｕ＝ａ｜｜ｓ（ａはｋビット長）としたときに（ａ＜ｎｉ）？Ｅｉ（ｕ）＝（（ａ＾｛ｄｉ｝ｍｏｄ ｎｉ，ｓ｜｜０）：（（ａ−ｎｉ）＾｛ｄｉ｝ｍｏｄ ｎｉ，ｓ｜｜１）と定義される関数をＥｉ（ｕ）とするとき、Ｅｉ（ＳＴ）を新たな流通経緯情報として導出するものであることを特徴とする請求項２３記載のリーダライタ。
【請求項６６】
前記ＳＴは、自拠点および自拠点より上流の全ての拠点の公開鍵を連結したビット列Ｔｉのハッシュ値Ｈ（Ｔｉ）と、初期値または無線ＩＣタグの読み書き可能なメモリに書き込まれている流通経緯情報のビット列ｕとの排他的論理和により求められる値Ｈ（Ｔｉ）○ｕであることを特徴とする請求項６５記載のリーダライタ。
【請求項６７】
前記ＳＴは、自拠点および自拠点より上流の全ての拠点の公開鍵およびメッセージを連結したビット列Ｔｉのハッシュ値Ｈ（Ｔｉ）と、初期値または無線ＩＣタグの読み書き可能なメモリに書き込まれている流通経緯情報のビット列ｕとの排他的論理和により求められる値Ｈ（Ｔｉ）○ｕであることを特徴とする請求項６５記載のリーダライタ。
【請求項６８】
（ｂ＝０）？Ｄｉ（ｕ）＝（（ａ＾｛ｅｉ｝ｍｏｄ ｎｉ，ｓ）：（（ａ＾｛ｅｉ｝ｍｏｄ ｎｉ）＋ｎｉ，ｓ）と定義される関数をＤｉ（ｕ）とするとき、Ｄ１（Ｈ（Ｔ１）○（Ｄ２（Ｈ（Ｔ２）○…Ｄｉ−１（ｕｉ−１））…））＝ｕ０が成立することにより、前記製品が自拠点まで正しく経緯してきたものと判断する署名検証部を有することを特徴とする請求項６６又は６７記載のリーダライタ。
【請求項６９】
前記署名作成部は、署名文の大きさが前記無線ＩＣタグの読み書き可能なメモリの容量以下となる署名方式を用いて署名した署名文を新たな流通経緯情報とし、流通経緯情報ｕｉ−１またはそのハッシュ値ｈ（ｕｉ−１）を新たな補助情報ｖｉとしてそれぞれ導出するものであることを特徴とする請求項２４記載のリーダライタ。
【請求項７０】
前記署名作成部は、自拠点の秘密鍵をｄｉ、ＲＳＡモジュラスをｎｉ、初期値ｕ０若しくはそれから導出した値または自拠点に流通してきた製品またはそのパッケージに付された無線ＩＣタグの読み書き可能なメモリに書き込まれている流通経緯情報ｕｉ−１若しくはそれから導出した情報をＳＴ、ｕ＝ａ｜｜ｓ（ａはｋビット長）としたときに（ａ＜ｎｉ）？Ｅｉ（ｕ）＝（（ａ＾｛ｄｉ｝ｍｏｄ ｎｉ，ｓ｜｜０）：（（ａ−ｎｉ）＾｛ｄｉ｝ｍｏｄ ｎｉ，ｓ｜｜１）と定義される関数をＥｉ（ｕ）とするとき、Ｅｉ（ＳＴ）を新たな流通経緯情報とし、流通経緯情報ｕｉ−１またはそのハッシュ値ｈ（ｕｉ−１）を新たな補助情報ｖｉとしてそれぞれ導出するものであることを特徴とする請求項２４記載のリーダライタ。
【請求項７１】
前記ＳＴは、自拠点および自拠点より上流の全ての拠点の公開鍵を連結したビット列Ｔｉのハッシュ値Ｈ（Ｔｉ）と、初期値または無線ＩＣタグの読み書き可能なメモリに書き込まれている流通経緯情報のビット列ｕとの排他的論理和により求められる値Ｈ（Ｔｉ）○ｕであることを特徴とする請求項７０記載のリーダライタ。
【請求項７２】
前記ＳＴは、自拠点および自拠点より上流の全ての拠点の公開鍵およびメッセージを連結したビット列Ｔｉのハッシュ値Ｈ（Ｔｉ）と、初期値または無線ＩＣタグの読み書き可能なメモリに書き込まれている流通経緯情報のビット列ｕとの排他的論理和により求められる値Ｈ（Ｔｉ）○ｕであることを特徴とする請求項７０記載のリーダライタ。
【請求項７３】
（ｂ＝０）？Ｄｉ（ｕ）＝（（ａ＾｛ｅｉ｝ｍｏｄ ｎｉ，ａ）：（（ａ＾｛ｅｉ｝ｍｏｄ ｎｉ）＋ｎｉ，ａ）と定義される関数をＤｉ（ｕ）とするとき、ｈ（Ｈ（Ｔｉ−１）○Ｄｉ−１（ｕｉ−１））＝ｖｉ−１が成立することにより、前記製品が自拠点まで正しく経緯してきたものと判断する署名検証部を有することを特徴とする請求項７１又は７２記載のリーダライタ。
【請求項７４】
前記署名作成手段は、署名文の大きさが前記無線ＩＣタグの読み書き可能なメモリの容量以下となる署名方式を用いて署名した署名文を新たな流通経緯情報として導出するものであることを特徴とする請求項３３記載のプログラム。
【請求項７５】
前記署名作成手段は、自拠点の秘密鍵をｄｉ、ＲＳＡモジュラスをｎｉ、初期値ｕ０若しくはそれから導出した値または自拠点に流通してきた製品またはそのパッケージに付された無線ＩＣタグの読み書き可能なメモリに書き込まれている流通経緯情報ｕｉ−１若しくはそれから導出した情報をＳＴ、ｕ＝ａ｜｜ｓ（ａはｋビット長）としたときに（ａ＜ｎｉ）？Ｅｉ（ｕ）＝（（ａ＾｛ｄｉ｝ｍｏｄ ｎｉ，ｓ｜｜０）：（（ａ−ｎｉ）＾｛ｄｉ｝ｍｏｄ ｎｉ，ｓ｜｜１）と定義される関数をＥｉ（ｕ）とするとき、Ｅｉ（ＳＴ）を新たな流通経緯情報として導出するものであることを特徴とする請求項３３記載のプログラム。
【請求項７６】
前記ＳＴは、自拠点および自拠点より上流の全ての拠点の公開鍵を連結したビット列Ｔｉのハッシュ値Ｈ（Ｔｉ）と、初期値または無線ＩＣタグの読み書き可能なメモリに書き込まれている流通経緯情報のビット列ｕとの排他的論理和により求められる値Ｈ（Ｔｉ）○ｕであることを特徴とする請求項７５記載のプログラム。
【請求項７７】
前記ＳＴは、自拠点および自拠点より上流の全ての拠点の公開鍵およびメッセージを連結したビット列Ｔｉのハッシュ値Ｈ（Ｔｉ）と、初期値または無線ＩＣタグの読み書き可能なメモリに書き込まれている流通経緯情報のビット列ｕとの排他的論理和により求められる値Ｈ（Ｔｉ）○ｕであることを特徴とする請求項７５記載のプログラム。
【請求項７８】
前記コンピュータを、（ｂ＝０）？Ｄｉ（ｕ）＝（（ａ＾｛ｅｉ｝ｍｏｄ ｎｉ，ｓ）：（（ａ＾｛ｅｉ｝ｍｏｄ ｎｉ）＋ｎｉ，ｓ）と定義される関数をＤｉ（ｕ）とするとき、Ｄ１（Ｈ（Ｔ１）○（Ｄ２（Ｈ（Ｔ２）○…Ｄｉ−１（ｕｉ−１））…））＝ｕ０が成立することにより、前記製品が自拠点まで正しく経緯してきたものと判断する署名検証手段として機能させることを特徴とする請求項７６又は７７記載のプログラム。
【請求項７９】
前記の署名作成手段は、署名文の大きさが前記無線ＩＣタグの読み書き可能なメモリの容量以下となる署名方式を用いて署名した署名文を新たな流通経緯情報とし、流通経緯情報ｕｉ−１またはそのハッシュ値ｈ（ｕｉ−１）を新たな補助情報ｖｉとしてそれぞれ導出するものであることを特徴とする請求項３４記載のプログラム。
【請求項８０】
前記署名作成手段は、自拠点の秘密鍵をｄｉ、ＲＳＡモジュラスをｎｉ、初期値ｕ０若しくはそれから導出した値または自拠点に流通してきた製品またはそのパッケージに付された無線ＩＣタグの読み書き可能なメモリに書き込まれている流通経緯情報ｕｉ−１若しくはそれから導出した情報をＳＴ、ｕ＝ａ｜｜ｓ（ａはｋビット長）としたときに（ａ＜ｎｉ）？Ｅｉ（ｕ）＝（（ａ＾｛ｄｉ｝ｍｏｄ ｎｉ，ｓ｜｜０）：（（ａ−ｎｉ）＾｛ｄｉ｝ｍｏｄ ｎｉ，ｓ｜｜１）と定義される関数をＥｉ（ｕ）とするとき、Ｅｉ（ＳＴ）を新たな流通経緯情報とし、流通経緯情報ｕｉ−１またはそのハッシュ値ｈ（ｕｉ−１）を新たな補助情報ｖｉとしてそれぞれ導出するものであることを特徴とする請求項３４記載のプログラム。
【請求項８１】
前記ＳＴは、自拠点および自拠点より上流の全ての拠点の公開鍵を連結したビット列Ｔｉのハッシュ値Ｈ（Ｔｉ）と、初期値または無線ＩＣタグの読み書き可能なメモリに書き込まれている流通経緯情報のビット列ｕとの排他的論理和により求められる値Ｈ（Ｔｉ）○ｕであることを特徴とする請求項８０記載のプログラム。
【請求項８２】
前記ＳＴは、自拠点および自拠点より上流の全ての拠点の公開鍵およびメッセージを連結したビット列Ｔｉのハッシュ値Ｈ（Ｔｉ）と、初期値または無線ＩＣタグの読み書き可能なメモリに書き込まれている流通経緯情報のビット列ｕとの排他的論理和により求められる値Ｈ（Ｔｉ）○ｕであることを特徴とする請求項８０記載のプログラム。
【請求項８３】
前記コンピュータを、（ｂ＝０）？Ｄｉ（ｕ）＝（（ａ＾｛ｅｉ｝ｍｏｄ ｎｉ，ｓ）：（（ａ＾｛ｅｉ｝ｍｏｄ ｎｉ）＋ｎｉ，ｓ）と定義される関数をＤｉ（ｕ）とするとき、ｈ（Ｈ（Ｔｉ−１）○Ｄｉ−１（ｕｉ−１））＝ｖｉ−１が成立することにより、前記製品が自拠点まで正しく経緯してきたものと判断する署名検証手段として機能させることを特徴とする請求項８１又は８２記載のプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、工場生産品や食品などの一般消費者向けの製品または製品パッケージの流通経緯を認証するシステムであって、特に、RF-ID(Radio Frequency-IDentification)タグに代表される無線ICタグを付して行う製品の製造、加工、小売り、消費/利用、再利用、廃棄等の各拠点の流通経緯認証システム及び流通経緯認証方法に関する。
【背景技術】
【０００２】
製品流通システムにおいて、製品の流通がどのように行われたか、すなわち流通経緯を知ることが望まれる場合がある。流通中に製品が破損した場合に、責任の所在を明確化することや、生産地を明確にすることで、特に食品などの製品に関する安全性や信頼性を高める目的などにおいて、これらの流通経緯を知る必要が生じる。このような流通経緯を知る従来の方法の一例に、特許文献1に示す無線ICタグを利用した宅配便システムがある。この従来の宅配便システムは、無線ICタグ内の記憶領域に、無線ICタグ固有のIDが記憶される。この無線ICタグを製品に付し、集荷店及び配送店に設置されたリーダライタでそのIDが読み出され、読み出されたIDがその都度、ホストコンピュータに送信され、これにより、ホストコンピュータ側で配送物品の流通経緯を管理することができる（以下、第1の従来技術）。【０００３】
また、書き込み可能なメモリ領域を有する無線ICタグを製品に付して流通経緯を管理する従来の方法の一例に、特許文献2に示す製品情報管理方法がある。この従来の製品情報管理方法は、製品に付する無線ICタグに、流通経緯を証明する情報(本明細書ではこのような情報を、流通経緯情報と呼ぶ)を書き込むリーダライタを製品の製造、流通、小売り、消費/利用、再利用、廃棄の各拠点に備え、拠点を経由する際に無線ICタグに対して流通経緯情報を書き込み、この流通経緯情報を必要に応じて参照することで製品の流通経緯を知る方法である（以下、第2の従来技術）。【０００４】
書き込み可能なメモリ領域を有する無線ICタグを製品に付して流通経緯を管理する従来の他の方法の一例に、特許文献3に示す食肉流通用非接触型ICタグ管理方法がある。この従来技術は、流通させる食肉に関連する情報を秘密鍵によって暗号化した情報とこれを解読するための公開鍵とをICタグに書き込んでおき、流通先において、ICタグに記録された公開鍵によってそのICタグに記録された情報を解読するようにする方法である。【０００５】
なお、無線ICタグに関する文献としては非特許文献1が公知である。【０００６】
他方、計算機やインターネット環境の普及に伴い、電子的にメッセージを送受信する機会が増えている。このような場合に、メッセージを送信する途中でメッセージが改竄されることを防ぐため、メッセージに電子署名を添付することが行われている。電子署名の方式は各種存在し、複数の署名装置が署名をかさねて行ういわゆる多重署名も公知である。RSAやDSAといった署名方式はよく知られた署名方式であるが、これを用いて多重署名を作成した場合、全員が署名したことを表すには、全署名装置が個々に署名文を作成し、それらの署名文を全て保存する必要がある。この為、署名文のデータ長の合計値が署名装置の台数に比例する。このような問題を改善し、署名文のデータ長の合計値が署名装置の台数に比例しない署名方式が、非特許文献2および非特許文献3により公知である。非特許文献2の方式はRSA問題の困難性に安全性の基礎をおく方式であり、非特許文献3の方式はsupersingularな楕円曲線上のGap Diffie Hellman問題という問題の困難性に頼って安全性を示している。【０００７】
【特許文献１】特開2001−206514号公報
【特許文献２】特開2002−49905号公報
【特許文献３】特開2004−43143号公報
【非特許文献１】無線ICタグのすべて、日経BP社、pp.197、2004
【非特許文献２】AnnaLysyanskaya, Silvio Micali, Leonid Reyzin, Hovav Shacham. Sequential Aggregate  Signatures from Trapdoor Permutations. InAdvances in Cryptology-EUROCRYPT  2004, vol. 3027 of LNCS, pp. 74-90. Springer-Verlag, 2004.
【非特許文献３】D. Boneh, C.Gentry, B. Lynn, and H. Shacham. Aggregate and Verifiably Encrypted Signaturesfrom Bilinear Maps. In Advances in Cryptolog y -- EUROCRYPT 2003, vol. 2656 ofLNCS, pp. 416-432. Springer-Verlag, 2003.
【発明の開示】
【発明が解決しようとする課題】
【０００８】
しかしながら、第1の従来技術では、ホストコンピュータとの間で情報通信が不可能な拠点では、製品が通過した際にホストコンピュータに情報を送信することができず、流通経緯情報を記録することができない。また、製品の流通経緯を知ろうとしてもホストコンピュータから通過情報を受信できないので、不可能である。またホストコンピュータでデータを集中管理する場合、各拠点が共通に情報通信できるようなホストコンピュータを運用しなければならないが、製品流通経路中に異業種の店舗等も存在するような運用環境を想定する場合には、このような運用環境を整えることは困難であった。すなわち今までは、ある特定業種で閉じた環境での運用しか実現できていなかった。【０００９】
一方、第2の従来技術においても、主要な書き込み型無線ICタグの有する書き込み可能メモリ領域は、非特許文献1を参照すると、高々1Kバイトの有限領域であり、流通経緯中の各拠点を経由するたびに次々に発生する流通経緯情報を記録することができないという問題がある。記憶領域が足りず記録できない場合は、流通経緯情報を正しく記録することができないため、流通経緯を知ることができなくなる。また、有限の書き込み可能メモリ領域内に、記録すべき流通経緯情報が収まる場合でも、当該書き込みメモリ領域は、流通経緯を知るために必要な情報だけを記憶するために使われるわけではなく、システムに応じて様々な情報を記憶することが考えられ、流通経緯情報はできるだけ小容量で管理できることが望ましい。【００１０】
また、ローカルの書き込み領域に流通経緯情報を記録する第2の従来技術のような方法の場合、流通経緯情報の書き換え（改竄）や、虚偽のため、流通経緯の真正性を保障できないという問題が潜在する。特許文献3を参照すると、このような流通経緯を記録する際に、公開鍵暗号系の性質、つまり、秘密鍵で暗号化（署名付与）したデータは、対応する公開鍵でしか正しく復号(署名検証)できないという性質を使用して、流通過程における第3者による偽造、改竄を防止することが可能となる。しかし、本方式は流通経緯中の各拠点のリーダライタ(端末)は、不正を働かないという前提でのみ機能する。流通経緯中の各拠点のリーダライタが故意に流通経緯情報を偽造、および改竄をして不当な利益を得ようとする場合、対応できない。何故なら、秘密鍵で暗号化する情報がすりかえられると、その情報は正当な秘密鍵で暗号化されているため、対応する公開鍵での検証はパスしてしまうからである。【００１１】
他方、いわゆる多重署名方式が公知であるが、製品の流通経緯を認証するシステムに多重署名方式を適用した事例は皆無であり、特にRF-IDに代表される無線ICタグを付して行う製品の流通経緯認証システムに多重署名方式を適用した事例は見当たらない。【００１２】
『発明の目的』
本発明は、上記の問題点に鑑みてなされたものであり、その目的は、工場生産品や食品などの一般消費者向けの製品または製品パッケージの流通過程において、ホストコンピュータと通信できないオフライン環境でも、流通経緯を確認することができ、かつ流通経緯中の各拠点のリーダライタや悪意のある第3者における流通経緯情報の偽造および改竄も検知可能な流通経緯認証方法および流通経緯認証システムを提供することにある。【００１３】
本発明の別の目的は、製品の流通経緯が正しいかどうかの検証を簡易に行うことのできる流通経緯認証方法および流通経緯認証システムを提供することにある。【００１４】
本発明のさらに別の目的は、流通経緯中にたどる拠点数にスケーラビリティを有する流通経緯認証方法および流通経緯認証システムを提供することにある。
【課題を解決するための手段】
【００１５】
本発明の第1の流通経緯認証システムは、製品またはそのパッケージに付された無線ＩＣタグとの間で情報を送受信する送受信部と署名を作成する署名作成部とを有するリーダライタを前記製品の流通経路上の各拠点に備え、最初の拠点に備わるリーダライタは、自拠点に流通してきた製品またはそのパッケージに付された無線ＩＣタグと交信して、初期値またはそれから導出した値に対して自拠点の秘密鍵で署名した署名文を流通経緯情報として無線ＩＣタグの読み書き可能なメモリに書き込むものであり、最初の拠点以外の拠点に備わるリーダライタは、自拠点に流通してきた製品またはそのパッケージに付された無線ＩＣタグと交信して、その無線ＩＣタグの読み書き可能なメモリに書き込まれている流通経緯情報に対して、自拠点より上流の各拠点の公開鍵を自拠点に近い拠点の公開鍵から順番に使用して検証を繰り返していき、最終的に前記初期値が得られるところまで遡って検証できることにより、前記製品が自拠点まで正しく経緯してきたものと判断する署名検証部を有し、前記署名検証部にて前記製品が自拠点まで正しく経緯してきたものと判断された場合に、無線ＩＣタグの読み書き可能なメモリに書き込まれている流通経緯情報またはそれから導出した情報に対して自拠点の秘密鍵で署名した署名文を新たな流通経緯情報として導出し、無線ＩＣタグの読み書き可能なメモリに書き込まれていた元の流通経緯情報と置き換えるものであることを特徴とする。
【００１６】
本発明の第2の流通経緯認証システムは、第1の流通経緯認証システムにおいて、前記初期値として、無線ICタグの読み出し専用メモリに記憶されている当該無線ICタグ固有の識別番号を使用するものであることを特徴とする。【００１７】
本発明の第3の流通経緯認証システムは、製品またはそのパッケージに付された無線ＩＣタグとの間で情報を送受信する送受信部と署名を作成する署名作成部とを有するリーダライタを前記製品の流通経路上の各拠点に備え、最初の拠点に備わるリーダライタは、自拠点に流通してきた製品またはそのパッケージに付された無線ＩＣタグと交信して、初期値またはそれから導出した値に対して自拠点の秘密鍵で署名した署名文を流通経緯情報、前記初期値またはそれから導出した値を補助情報として無線ＩＣタグの読み書き可能なメモリに書き込むものであり、最初の拠点以外の拠点に備わるリーダライタは、自拠点に流通してきた製品またはそのパッケージに付された無線ＩＣタグと交信して、その無線ＩＣタグの読み書き可能なメモリに書き込まれている流通経緯情報に対して、自拠点より１つ上流の拠点の公開鍵を使用して検証し、その検証結果において前記無線ＩＣタグの読み書き可能なメモリに書き込まれている補助情報と同じ情報が導出できることにより、前記製品が1つ前の拠点から正しく経緯してきたものと判断する署名検証部を有し、前記署名検証部にて前記製品が正しく経緯してきたものと判断された場合に、無線ＩＣタグの読み書き可能なメモリに書き込まれている流通経緯情報またはそれから導出した情報に対して自拠点の秘密鍵で署名した署名文を新たな流通経緯情報、書き込まれていた元の流通経緯情報またはそれから導出した情報を補助情報として導出し、無線ＩＣタグの読み書き可能なメモリに書き込まれていた元の流通経緯情報と補助情報と置き換えるものであることを特徴とする。
【００１８】
本発明の第4の流通経緯認証システムは、第１の流通経緯認証システムにおいて、経緯順がｉ番目の拠点に備わるリーダライタの署名作成部は、自拠点の秘密鍵をｄｉ、ＲＳＡモジュラスをｎｉ、初期値ｕ０若しくはそれから導出した値または自拠点に流通してきた製品またはそのパッケージに付された無線ＩＣタグの読み書き可能なメモリに書き込まれている流通経緯情報ｕｉ−１若しくはそれから導出した情報をＳＴ、（ｕ＜ｎｉ）？ｆｉ（ｕ）＝ｕ＾｛ｄｉ｝ｍｏｄ ｎｉ：ｆｉ（ｕ）＝ｕと定義される関数をｆｉ（ｕ）、セキュリティパラメタｋビット（ただしｎｉ＜２ｋ）長自然数空間での写像としてφ（ｕ）＝（ｕ＋ｎｉ）ｍｏｄ２ｋと定義される関数をφ（ｕ）、その逆関数をφ−１とするとき、φ−１（ｆｉ（φ（ｆｉ（ＳＴ）））））を新たな流通経緯情報として導出するものであることを特徴とする。
【００１９】
本発明の第5の流通経緯認証システムは、第4の流通経緯認証システムにおいて、前記ＳＴは、自拠点および自拠点より上流の全ての拠点の公開鍵を連結したビット列Ｔｉのハッシュ値Ｈ（Ｔｉ）と、初期値または無線ＩＣタグの読み書き可能なメモリに書き込まれている流通経緯情報のビット列ｕとの排他的論理和により求められる値Ｈ（Ｔｉ）○ｕであることを特徴とする。
【００２０】
本発明の第6の流通経緯認証システムは、第４の流通経緯認証システムにおいて、前記ＳＴは、自拠点および自拠点より上流の全ての拠点の公開鍵およびメッセージを連結したビット列Ｔｉのハッシュ値Ｈ（Ｔｉ）と、初期値または無線ＩＣタグの読み書き可能なメモリに書き込まれている流通経緯情報のビット列ｕとの排他的論理和により求められる値Ｈ（Ｔｉ）○ｕであることを特徴とする。
【００２１】
本発明の第7の流通経緯認証システムは、第５または６の流通経緯認証システムにおいて、経緯順がｉ番目の拠点に備わるリーダライタは、（ｕ＜ｎｉ）？ｇｉ（ｕ）＝ｕ＾｛ｅｉ｝ ｍｏｄ ｎｉ：ｇｉ（ｕ）＝ｕと定義される関数をｇｉ（ｕ）とするとき、φ−１（ｇ１（φ（ｇ１（Ｈ（Ｔ１○φ−１（ｇ２（φ（（ｇ２（Ｈ（Ｔ２○…Ｔｉ−１○φ−１（ｇｉ−１（φ（ｇｉ−１（ｕｉ−１）））））…）））））））））＝ｕ０が成立することにより、前記製品が自拠点まで正しく経緯してきたものと判断する署名検証部を有することを特徴とする。
【００２２】
本発明の第8の流通経緯認証システムは、第３の流通経緯認証システムにおいて、経緯順がｉ番目の拠点に備わるリーダライタの署名作成部は、自拠点の秘密鍵をｄｉ、ＲＳＡモジュラスｎｉ、初期値ｕ０若しくはそれから導出した値または自拠点に流通してきた製品またはそのパッケージに付された無線ＩＣタグの読み書き可能なメモリに書き込まれている流通経緯情報ｕｉ−１若しくはそれから導出した情報をＳＴ、（ｕ＜ｎｉ）？ｆｉ（ｕ）＝ｕ＾｛ｄｉ｝ｍｏｄ ｎｉ：ｆｉ（ｕ）＝ｕと定義される関数をｆｉ（ｕ）、セキュリティパラメタｋビット（ただしｎｉ＜２ｋ）長自然数空間での写像としてφ（ｕ）＝（ｕ＋ｎｉ）ｍｏｄ２ｋと定義される関数をφ（ｕ）、その逆関数をφ−１とするとき、φ−１（ｆｉ（φ（ｆｉ（ＳＴ）））））を新たな流通経緯情報、流通経緯情報ｕｉ−１またはそのハッシュ値ｈ（ｕｉ−１）を新たな補助情報ｖｉとしてそれぞれ導出するものであることを特徴とする。
【００２３】
本発明の第9の流通経緯認証システムは、第8の流通経緯認証システムにおいて、前記ＳＴは、自拠点および自拠点より上流の全ての拠点の公開鍵を連結したビット列Ｔｉのハッシュ値Ｈ（Ｔｉ）と、初期値または無線ＩＣタグの読み書き可能なメモリに書き込まれている流通経緯情報のビット列ｕとの排他的論理和により求められる値Ｈ（Ｔｉ）○ｕであることを特徴とする。
【００２４】
本発明の第10の流通経緯認証システムは、第８の流通経緯認証システムにおいて、前記ＳＴは、自拠点および自拠点より上流の全ての拠点の公開鍵およびメッセージを連結したビット列Ｔｉのハッシュ値Ｈ（Ｔｉ）と、初期値または無線ＩＣタグの読み書き可能なメモリに書き込まれている流通経緯情報のビット列ｕとの排他的論理和により求められる値Ｈ（Ｔｉ）○ｕであることを特徴とする。
【００２５】
本発明の第11の流通経緯認証システムは、第９の流通経緯認証システムにおいて、経緯順がｉ番目の拠点に備わるリーダライタは、（ｕ＜ｎｉ）？ｇｉ（ｕ）＝ｕ＾｛ｅｉ｝ ｍｏｄ ｎｉ：ｇｉ（ｕ）＝ｕと定義される関数をｇｉ（ｕ）とするとき、ｈ（Ｈ（Ｔｉ−１○φ−１（ｇｉ−１（φ（ｇｉ−１（ｕｉ−１）））））…）））））））））＝ｖｉ−１が成立することにより、前記製品が１つ前の拠点から正しく経緯してきたものと判断する署名検証部を有することを特徴とする。
【００２６】
本発明の第12の流通経緯認証システムは、第1の流通経緯認証システムにおいて、経緯順がｉ番目の拠点に備わるリーダライタの署名作成部は、署名文の大きさが前記無線ＩＣタグの読み書き可能なメモリの容量以下となる署名方式を用いて署名した署名文を新たな流通経緯情報として導出するものであることを特徴とする。
本発明の第13の流通経緯認証システムは、第1の流通経緯認証システムにおいて、経緯順がｉ番目の拠点に備わるリーダライタの署名作成部は、自拠点の秘密鍵をｄｉ、ＲＳＡモジュラスをｎｉ、初期値ｕ０若しくはそれから導出した値または自拠点に流通してきた製品またはそのパッケージに付された無線ＩＣタグの読み書き可能なメモリに書き込まれている流通経緯情報ｕｉ−１若しくはそれから導出した情報をＳＴ、ｕ＝ａ｜｜ｓ（ａはｋビット長）としたときに（ａ＜ｎｉ）？Ｅｉ（ｕ）＝（（ａ＾｛ｄｉ｝ｍｏｄ ｎｉ，ｓ｜｜０）：（（ａ−ｎｉ）＾｛ｄｉ｝ｍｏｄ ｎｉ，ｓ｜｜１）と定義される関数をＥｉ（ｕ）とするとき、Ｅｉ（ＳＴ）を新たな流通経緯情報として導出するものであることを特徴とする。
本発明の第1４の流通経緯認証システムは、第13の流通経緯認証システムにおいて、前記ＳＴは、自拠点および自拠点より上流の全ての拠点の公開鍵を連結したビット列Ｔｉのハッシュ値Ｈ（Ｔｉ）と、初期値または無線ＩＣタグの読み書き可能なメモリに書き込まれている流通経緯情報のビット列ｕとの排他的論理和により求められる値Ｈ（Ｔｉ）○ｕであることを特徴とする。
本発明の第1５の流通経緯認証システムは、第13の流通経緯認証システムにおいて、前記ＳＴは、自拠点および自拠点より上流の全ての拠点の公開鍵およびメッセージを連結したビット列Ｔｉのハッシュ値Ｈ（Ｔｉ）と、初期値または無線ＩＣタグの読み書き可能なメモリに書き込まれている流通経緯情報のビット列ｕとの排他的論理和により求められる値Ｈ（Ｔｉ）○ｕであることを特徴とする。
本発明の第1６の流通経緯認証システムは、第1４又は１５の流通経緯認証システムにおいて、経緯順がｉ番目の拠点に備わるリーダライタは、（ｂ＝０）？Ｄｉ（ｕ）＝（（ａ＾｛ｅｉ｝ｍｏｄ ｎｉ，ｓ）：（（ａ＾｛ｅｉ｝ｍｏｄ ｎｉ）＋ｎｉ，ｓ）と定義される関数をＤｉ（ｕ）とするとき、Ｄ１（Ｈ（Ｔ１）○（Ｄ２（Ｈ（Ｔ２）○…Ｄｉ−１（ｕｉ−１））…））＝ｕ０が成立することにより、前記製品が自拠点まで正しく経緯してきたものと判断する署名検証部を有することを特徴とする。
【００２７】
本発明の第17の流通経緯認証システムは、第３の流通経緯認証システムにおいて、経緯順がｉ番目の拠点に備わるリーダライタの署名作成部は、署名文の大きさが前記無線ＩＣタグの読み書き可能なメモリの容量以下となる署名方式を用いて署名した署名文を新たな流通経緯情報とし、流通経緯情報ｕｉ−１またはそのハッシュ値ｈ（ｕｉ−１）を新たな補助情報ｖｉとしてそれぞれ導出するものであることを特徴とする。
本発明の第18の流通経緯認証システムは、第３の流通経緯認証システムにおいて、経緯順がｉ番目の拠点に備わるリーダライタの署名作成部は、自拠点の秘密鍵をｄｉ、ＲＳＡモジュラスをｎｉ、初期値ｕ０若しくはそれから導出した値または自拠点に流通してきた製品またはそのパッケージに付された無線ＩＣタグの読み書き可能なメモリに書き込まれている流通経緯情報ｕｉ−１若しくはそれから導出した情報をＳＴ、ｕ＝ａ｜｜ｓ（ａはｋビット長）としたときに（ａ＜ｎｉ）？Ｅｉ（ｕ）＝（（ａ＾｛ｄｉ｝ｍｏｄ ｎｉ，ｓ｜｜０）：（（ａ−ｎｉ）＾｛ｄｉ｝ｍｏｄ ｎｉ，ｓ｜｜１）と定義される関数をＥｉ（ｕ）とするとき、Ｅｉ（ＳＴ）を新たな流通経緯情報とし、流通経緯情報ｕｉ−１またはそのハッシュ値ｈ（ｕｉ−１）を新たな補助情報ｖｉとしてそれぞれ導出するものであることを特徴とする。
本発明の第19の流通経緯認証システムは、第18の流通経緯認証システムにおいて、前記ＳＴは、自拠点および自拠点より上流の全ての拠点の公開鍵を連結したビット列Ｔｉのハッシュ値Ｈ（Ｔｉ）と、初期値または無線ＩＣタグの読み書き可能なメモリに書き込まれている流通経緯情報のビット列ｕとの排他的論理和により求められる値Ｈ（Ｔｉ）○ｕであることを特徴とする。
本発明の第20の流通経緯認証システムは、第18の流通経緯認証システムにおいて、前記ＳＴは、自拠点および自拠点より上流の全ての拠点の公開鍵およびメッセージを連結したビット列Ｔｉのハッシュ値Ｈ（Ｔｉ）と、初期値または無線ＩＣタグの読み書き可能なメモリに書き込まれている流通経緯情報のビット列ｕとの排他的論理和により求められる値Ｈ（Ｔｉ）○ｕであることを特徴とする。
本発明の第20の流通経緯認証システムは、第18又は19の流通経緯認証システムにおいて、経緯順がｉ番目の拠点に備わるリーダライタは、（ｂ＝０）？Ｄｉ（ｕ）＝（（ａ＾｛ｅｉ｝ｍｏｄ ｎｉ，ｓ）：（（ａ＾｛ｅｉ｝ｍｏｄ ｎｉ）＋ｎｉ，ｓ）と定義される関数をＤｉ（ｕ）とするとき、ｈ（Ｈ（Ｔｉ−１）○Ｄｉ−１（ｕｉ−１））＝ｖｉ−１が成立することにより、前記製品が自拠点まで正しく経緯してきたものと判断する署名検証部を有することを特徴とする。
【００２８】
本発明の第1の流通経緯認証方法は、製品またはそのパッケージに付された無線ICタグとの間で情報を送受信する送受信部と署名を作成する署名作成部とを有するリーダライタを前記製品の流通経路上の各拠点に設け、最初の拠点に備わるリーダライタが、自拠点に流通してきた製品またはそのパッケージに付された無線ICタグと交信して、初期値またはそれから導出した値に対して自拠点の秘密鍵で署名した署名文を流通経緯情報として無線ICタグの読み書き可能なメモリに書き込み、最初の拠点以外の拠点に備わるリーダライタが、自拠点に流通してきた製品またはそのパッケージに付された無線ICタグと交信して、その無線ICタグの読み書き可能なメモリに書き込まれている流通経緯情報に対して、自拠点より上流の各拠点の公開鍵を自拠点に近い拠点の公開鍵から順番に使用して検証を繰り返していき、最終的に前記初期値が得られるところまで遡って検証できることにより、前記製品が自拠点まで正しく経緯してきたものと判断する署名検証部を有し、前記署名検証部にて前記製品が自拠点まで正しく経緯してきたものと判断された場合に、無線ＩＣタグの読み書き可能なメモリに書き込まれている流通経緯情報またはそれから導出した情報に対して自拠点の秘密鍵で署名した署名文を新たな流通経緯情報として導出し、無線ICタグの読み書き可能なメモリに書き込まれていた元の流通経緯情報と置き換えることを特徴とする。
【００２９】
本発明の第2の流通経緯認証方法は、第1の流通経緯認証方法において、前記初期値として、無線ICタグの読み出し専用メモリに記憶されている当該無線ICタグ固有の識別番号を使用することを特徴とする。【００３０】
本発明の第3の流通経緯認証方法は、製品またはそのパッケージに付された無線ＩＣタグとの間で情報を送受信する送受信部と署名を作成する署名作成部とを有するリーダライタを前記製品の流通経路上の各拠点に設け、最初の拠点に備わるリーダライタが、自拠点に流通してきた製品またはそのパッケージに付された無線ＩＣタグと交信して、初期値またはそれから導出した値に対して自拠点の秘密鍵で署名した署名文を流通経緯情報、前記初期値またはそれから導出した値を補助情報として無線ＩＣタグの読み書き可能なメモリに書き込み、最初の拠点以外の拠点に備わるリーダライタが、自拠点に流通してきた製品またはそのパッケージに付された無線ＩＣタグと交信して、その無線ＩＣタグの読み書き可能なメモリに書き込まれている流通経緯情報に対して、自拠点より１つ上流の拠点の公開鍵を使用して検証し、その検証結果において前記無線ＩＣタグの読み書き可能なメモリに書き込まれている補助情報と同じ情報が導出できることにより、前記製品が1つ前の拠点から正しく経緯してきたものと判断する署名検証部を有し、前記署名検証部にて前記製品が正しく経緯してきたものと判断された場合に、無線ＩＣタグの読み書き可能なメモリに書き込まれている流通経緯情報またはそれから導出した情報に対して自拠点の秘密鍵で署名した署名文を新たな流通経緯情報、書き込まれていた元の流通経緯情報またはそれから導出した情報を補助情報として導出し、無線ＩＣタグの読み書き可能なメモリに書き込まれていた元の流通経緯情報と補助情報と置き換えることを特徴とする。
【００３１】
本発明の第4の流通経緯認証方法は、第1の流通経緯認証方法において、経緯順がｉ番目の拠点に備わるリーダライタの署名作成部が、自拠点の秘密鍵をｄｉ、ＲＳＡモジュラスｎｉ、初期値ｕ０若しくはそれから導出した値または自拠点に流通してきた製品またはそのパッケージに付された無線ＩＣタグの読み書き可能なメモリに書き込まれている流通経緯情報ｕｉ−１若しくはそれから導出した情報をＳＴ、（ｕ＜ｎｉ）？ｆｉ（ｕ）＝ｕ＾｛ｄｉ｝ｍｏｄ ｎｉ：ｆｉ（ｕ）＝ｕと定義される関数をｆｉ（ｕ）、セキュリティパラメタｋビット（ただしｎｉ＜２ｋ）長自然数空間での写像としてφ（ｕ）＝（ｕ＋ｎｉ）ｍｏｄ２ｋと定義される関数をφ（ｕ）、その逆関数をφ−１とするとき、φ−１（ｆｉ（φ（ｆｉ（ＳＴ）））））を新たな流通経緯情報として導出することを特徴とする。
【００３２】
本発明の第5の流通経緯認証方法は、第4の流通経緯認証方法において、前記ＳＴは、自拠点および自拠点より上流の全ての拠点の公開鍵を連結したビット列Ｔｉのハッシュ値Ｈ（Ｔｉ）と、初期値または無線ＩＣタグの読み書き可能なメモリに書き込まれている流通経緯情報のビット列ｕとの排他的論理和により求められる値Ｈ（Ｔｉ）○ｕであることを特徴とする。
【００３３】
本発明の第6の流通経緯認証方法は、第4の流通経緯認証方法において、前記ＳＴは、自拠点および自拠点より上流の全ての拠点の公開鍵およびメッセージを連結したビット列Ｔｉのハッシュ値Ｈ（Ｔｉ）と、初期値または無線ＩＣタグの読み書き可能なメモリに書き込まれている流通経緯情報のビット列ｕとの排他的論理和により求められる値Ｈ（Ｔｉ）○ｕであることを特徴とする。
【００３４】
本発明の第7の流通経緯認証方法は、第5の流通経緯認証方法において、経緯順がｉ番目の拠点に備わるリーダライタの署名検証部が、（ｕ＜ｎｉ）？ｇｉ（ｕ）＝ｕ＾｛ｅｉ｝ ｍｏｄ ｎｉ：ｇｉ（ｕ）＝ｕと定義される関数をｇｉ（ｕ）とするとき、φ−１（ｇ１（φ（ｇ１（Ｈ（Ｔ１○φ−１（ｇ２（φ（（ｇ２（Ｈ（Ｔ２○…Ｔｉ−１○φ−１（ｇｉ−１（φ（ｇｉ−１（ｕｉ−１）））））…）））））））））＝ｕ０が成立することにより、前記製品が自拠点まで正しく経緯してきたものと判断する段階を有することを特徴とする。
【００３５】
本発明の第8の流通経緯認証方法は、第3の流通経緯認証方法において、経緯順がｉ番目の拠点に備わるリーダライタの署名作成部が、自拠点の秘密鍵をｄｉ、ＲＳＡモジュラスをｎｉ、初期値ｕ０若しくはそれから導出した値または自拠点に流通してきた製品またはそのパッケージに付された無線ＩＣタグの読み書き可能なメモリに書き込まれている流通経緯情報ｕｉ−１若しくはそれから導出した情報をＳＴ、（ｕ＜ｎｉ）？ｆｉ（ｕ）＝ｕ＾｛ｄｉ｝ｍｏｄ ｎｉ：ｆｉ（ｕ）＝ｕと定義される関数をｆｉ（ｕ）、セキュリティパラメタｋビット（ただしｎｉ＜２ｋ）長自然数空間での写像としてφ（ｕ）＝（ｕ＋ｎｉ）ｍｏｄ２ｋと定義される関数をφ（ｕ）、その逆関数をφ−１とするとき、φ−１（ｆｉ（φ（ｆｉ（ＳＴ）））））を新たな流通経緯情報、流通経緯情ｕｉ−１またはそのハッシュ値ｈ（ｕｉ−１）を新たな補助情報ｖｉとしてそれぞれ導出することを特徴とする。
【００３６】
本発明の第9の流通経緯認証方法は、第8の流通経緯認証方法において、前記ＳＴは、自拠点および自拠点より上流の全ての拠点の公開鍵を連結したビット列Ｔｉのハッシュ値Ｈ（Ｔｉ）と、初期値または無線ＩＣタグの読み書き可能なメモリに書き込まれている流通経緯情報のビット列ｕとの排他的論理和により求められる値Ｈ（Ｔｉ）○ｕであることを特徴とする。
【００３７】
本発明の第10の流通経緯認証方法は、第8の流通経緯認証方法において、前記ＳＴは、自拠点および自拠点より上流の全ての拠点の公開鍵およびメッセージを連結したビット列Ｔｉのハッシュ値Ｈ（Ｔｉ）と、初期値または無線ＩＣタグの読み書き可能なメモリに書き込まれている流通経緯情報のビット列ｕとの排他的論理和により求められる値Ｈ（Ｔｉ）○ｕであることを特徴とする。
【００３８】
本発明の第11の流通経緯認証方法は、第9の流通経緯認証方法において、経緯順がｉ番目の拠点に備わるリーダライタの署名検証部が、（ｕ＜ｎｉ）？ｇｉ（ｕ）＝ｕ＾｛ｅｉ｝ ｍａｄ ｎｉ：ｇｉ（ｕ）＝ｕと定義される関数をｇｉ（ｕ）とするとき、ｈ（Ｈ（Ｔｉ−１○φ−１（ｇｉ−１（φ（ｇｉ−１（ｕｉ−１）））））…）））））））））＝ｖｉ−１が成立することにより、前記製品が１つ前の拠点から正しく経緯してきたものと判断する署名検証部を有することを特徴とする。
【００３９】
本発明の第12の流通経緯認証方法は、第1の流通経緯認証方法において、経緯順がｉ番目の拠点に備わるリーダライタの署名作成部が、署名文の大きさが前記無線ＩＣタグの読み書き可能なメモリの容量以下となる署名方式を用いて署名した署名文を新たな流通経緯情報として導出することを特徴とする。
【００４０】
本発明の第13の流通経緯認証方法は、第1の流通経緯認証方法において、経緯順がｉ番目の拠点に備わるリーダライタの署名作成部が、自拠点の秘密鍵をｄｉ、ＲＳＡモジュラスをｎｉ、初期値ｕ０若しくはそれから導出した値または自拠点に流通してきた製品またはそのパッケージに付された無線ＩＣタグの読み書き可能なメモリに書き込まれている流通経緯情報ｕｉ−１若しくはそれから導出した情報をＳＴ、ｕ＝ａ｜｜ｓ（ａはｋビット長）としたときに（ａ＜ｎｉ）？Ｅｉ（ｕ）＝（（ａ＾｛ｄｉ｝ｍｏｄ ｎｉ，ｓ｜｜０）：（（ａ−ｎｉ）＾｛ｄｉ｝ｍｏｄ ｎｉ，ｓ｜｜１）と定義される関数をＥｉ（ｕ）とするとき、Ｅｉ（ＳＴ）を新たな流通経緯情報として導出することを特徴とする。
本発明の第14の流通経緯認証方法は、第13の流通経緯認証方法において、前記ＳＴは、自拠点および自拠点より上流の全ての拠点の公開鍵を連結したビット列Ｔｉのハッシュ値Ｈ（Ｔｉ）と、初期値または無線ＩＣタグの読み書き可能なメモリに書き込まれている流通経緯情報のビット列ｕとの排他的論理和により求められる値Ｈ（Ｔｉ）○ｕであることを特徴とする。
本発明の第15の流通経緯認証方法は、第13の流通経緯認証方法において、前記ＳＴは、自拠点および自拠点より上流の全ての拠点の公開鍵およびメッセージを連結したビット列Ｔｉのハッシュ値Ｈ（Ｔｉ）と、初期値または無線ＩＣタグの読み書き可能なメモリに書き込まれている流通経緯情報のビット列ｕとの排他的論理和により求められる値Ｈ（Ｔｉ）○ｕであることを特徴とする。
本発明の第16の流通経緯認証方法は、第14又は15の流通経緯認証方法において、経緯順がｉ番目の拠点に備わるリーダライタが、（ｂ＝０）？Ｄｉ（ｕ）＝（（ａ＾｛ｅｉ｝ｍｏｄ ｎｉ，ｓ）：（（ａ＾｛ｅｉ｝ｍｏｄ ｎｉ）＋ｎｉ，ｓ）と定義される関数をＤｉ（ｕ）とするとき、Ｄ１（Ｈ（Ｔ１）○（Ｄ２（Ｈ（Ｔ２）○…Ｄｉ−１（ｕｉ−１））…））＝ｕ０が成立することにより、前記製品が自拠点まで正しく経緯してきたものと判断する段階を有することを特徴とする。
本発明の第17の流通経緯認証方法は、第3の流通経緯認証方法において、経緯順がｉ番目の拠点に備わるリーダライタの署名作成部が、署名文の大きさが前記無線ＩＣタグの読み書き可能なメモリの容量以下となる署名方式を用いて署名した署名文を新たな流通経緯情報とし、流通経緯情報ｕｉ−１またはそのハッシュ値ｈ（ｕｉ−１）を新たな補助情報ｖｉとしてそれぞれ導出することを特徴とする。
本発明の第18の流通経緯認証方法は、第3の流通経緯認証方法において、経緯順がｉ番目の拠点に備わるリーダライタの署名作成部が、自拠点の秘密鍵をｄｉ、ＲＳＡモジュラスをｎｉ、初期値ｕ０若しくはそれから導出した値または自拠点に流通してきた製品またはそのパッケージに付された無線ＩＣタグの読み書き可能なメモリに書き込まれている流通経緯情報ｕｉ−１若しくはそれから導出した情報をＳＴ、ｕ＝ａ｜｜ｓ（ａはｋビット長）としたときに（ａ＜ｎｉ）？Ｅｉ（ｕ）＝（（ａ＾｛ｄｉ｝ｍｏｄ ｎｉ，ｓ｜｜０）：（（ａ−ｎｉ）＾｛ｄｉ｝ｍｏｄ ｎｉ，ｓ｜｜１）と定義される関数を（ｕ）とするとき、Ｅｉ（ＳＴ）を新たな流通経緯情報とし、流通経緯情報ｕｉ−１またはそのハッシュ値ｈ（ｕｉ−１）を新たな補助情報ｖｉとしてそれぞれ導出することを特徴とする。
本発明の第19の流通経緯認証方法は、第18の流通経緯認証方法において、前記ＳＴは、自拠点および自拠点より上流の全ての拠点の公開鍵を連結したビット列Ｔｉのハッシュ値Ｈ（Ｔｉ）と、初期値または無線ＩＣタグの読み書き可能なメモリに書き込まれている流通経緯情報のビット列ｕとの排他的論理和により求められる値Ｈ（Ｔｉ）○ｕであることを特徴とする。
本発明の第20の流通経緯認証方法は、第18の流通経緯認証方法において、前記ＳＴは、自拠点および自拠点より上流の全ての拠点の公開鍵およびメッセージを連結したビット列Ｔｉのハッシュ値Ｈ（Ｔｉ）と、初期値または無線ＩＣタグの読み書き可能なメモリに書き込まれている流通経緯情報のビット列ｕとの排他的論理和により求められる値Ｈ（Ｔｉ）○ｕであることを特徴とする。
本発明の第21の流通経緯認証方法は、第19又は20の流通経緯認証方法において、経緯順がｉ番目の拠点に備わるリーダライタが、（ｂ＝０）？Ｄｉ（ｕ）＝（（ａ＾｛ｅｉ｝ｍｏｄ ｎｉ，ｓ）：（（ａ＾｛ｅｉ｝ｍｏｄ ｎｉ）＋ｎｉ，ｓ）と定義される関数をＤｉ（ｕ）とするとき、ｈ（Ｈ（Ｔｉ−１）○Ｄｉ−１（ｕｉ−１））＝ｖｉ−１が成立することにより、前記製品が自拠点まで正しく経緯してきたものと判断する段階を有することを特徴とする。
【００４１】
本発明の第1のリーダライタは、製品またはそのパッケージに付された無線ICタグとの間で情報を送受信する送受信部と署名を作成する署名作成部とを有し、前記製品の流通経路上の拠点に設けられるリーダライタであって、自拠点に流通してきた製品またはそのパッケージに付された無線ICタグと交信して、その無線ICタグの読み書き可能なメモリに書き込まれている流通経緯情報に対して、自拠点より上流の各拠点の公開鍵を自拠点に近い拠点の公開鍵から順番に使用して検証を繰り返していき、最終的に初期値または前記無線ＩＣタグの読み出し専用メモリに記憶されている当該無線ＩＣタグ固有の識別番号が得られるところまで遡って検証できることにより、前記製品が自拠点まで正しく経緯してきたものと判断する署名検証部を有し、前記署名検証部にて前記製品が自拠点まで正しく経緯してきたものと判断された場合に、無線ＩＣタグの読み書き可能なメモリに書き込まれている流通経緯情報またはそれから導出した情報に対して自拠点の秘密鍵で署名した署名文を新たな流通経緯情報として導出し、無線ICタグの読み書き可能なメモリに書き込まれていた元の流通経緯情報と置き換えるものであることを特徴とする。
【００４２】
本発明の第2のリーダライタは、第1のリーダライタにおいて、品またはそのパッケージに付された無線ＩＣタグとの間で情報を送受信する送受信部と署名を作成する署名作成部とを有し、前記製品の流通経路上の拠点に設けられるリーダライタであって、自拠点に流通してきた製品またはそのパッケージに付された無線ＩＣタグと交信して、その無線ＩＣタグの読み書き可能なメモリに書き込まれている流通経緯情報に対して、自拠点より１つ上流の拠点の公開鍵を使用して検証し、その検証結果において前記無線ＩＣタグの読み書き可能なメモリに書き込まれている補助情報と同じ補助情報が導出できることにより、前記製品が１つ前の拠点から正しく経緯してきたものと判断する署名検証部を有し、前記署名検証部にて前記製品が自拠点まで正しく経緯してきたものと判断された場合に、無線ＩＣタグの読み書き可能なメモリに書き込まれている流通経緯情報またはそれから導出した情報に対して自拠点の秘密鍵で署名した署名文を新たな流通経緯情報、書き込まれていた元の流通経緯情報またはそれから導出した情報を補助情報として導出し、無線ＩＣタグの読み書き可能なメモリに書き込まれていた元の流通経緯情報と補助情報と置き換えるものであることを特徴とする。
【００４３】
本発明の第3のリーダライタは、第1のリーダライタにおいて、前記署名作成部は、自拠点の秘密鍵をｄｉ、ＲＳＡモジュラスをｎｉ、初期値ｕ０若しくはそれから導出した値または自拠点に流通してきた製品またはそのパッケージに付された無線ＩＣタグの読み書き可能なメモリに書き込まれている流通経緯情報ｕｉ−１若しくはそれから導出した情報をＳＴ、（ｕ＜ｎｉ）？ｆｉ（ｕ）＝ｕ＾｛ｄｉ｝ｍｏｄ ｎｉ：ｆｉ（ｕ）＝ｕと定義される関数をｆｉ（ｕ）、セキュリティパラメタｋビット（ただしｎｉ＜２ｋ）長自然数空間での写像としてφ（ｕ）＝（ｕ＋ｎｉ）ｍｏｄ２ｋと定義される関数をφ（ｕ）、その逆関数をφ−１とするとき、φ−１（ｆｉ（φ（ｆｉ（ＳＴ）））））を新たな流通経緯情報として導出するものであることを特徴とする。
【００４４】
本発明の第4のリーダライタは、第3のリーダライタにおいて、自前記ＳＴは、自拠点および自拠点より上流の全ての拠点の公開鍵を連結したビット列Ｔｉのハッシュ値Ｈ（Ｔｉ）と、初期値または無線ＩＣタグの読み書き可能なメモリに書き込まれている流通経緯情報のビット列ｕとの排他的論理和により求められる値Ｈ（Ｔｉ）○ｕであることを特徴とする。
【００４５】
本発明の第5のリーダライタは、第3のリーダライタにおいて、前記ＳＴは、自拠点および自拠点より上流の全ての拠点の公開鍵およびメッセージを連結したビット列Ｔｉのハッシュ値Ｈ（Ｔｉ）と、初期値または無線ＩＣタグの読み書き可能なメモリに書き込まれている流通経緯情報のビット列ｕとの排他的論理和により求められる値Ｈ（Ｔｉ）○ｕであることを特徴とする。
【００４６】
本発明の第6のリーダライタは、第4のリーダライタにおいて、（ｕ＜ｎｉ）？ｇｉ（ｕ）＝ｕ＾｛ｅｉ｝ ｍｏｄ ｎｉ：ｇｉ（ｕ）＝ｕと定義される関数をｇｉ（ｕ）とするとき、φ−１（ｇ１（φ（ｇ１（Ｈ（Ｔ１○φ−１（ｇ２（φ（（ｇ２（Ｈ（Ｔ２○…Ｔｉ−１○φ−１（ｇｉ−１（φ（ｇｉ−１（ｕｉ−１）））））…）））））））））＝ｕ０が成立することにより、前記製品が自拠点まで正しく経緯してきたものと判断する署名検証部を有することを特徴とする。
【００４７】
本発明の第7のリーダライタは、第2のリーダライタにおいて、前記署名作成部は、自拠点の秘密鍵をｄｉ、ＲＳＡモジュラスをｎｉ、初期値ｕ０若しくはそれから導出した値または自拠点に流通してきた製品またはそのパッケージに付された無線ＩＣタグの読み書き可能なメモリに書き込まれている流通経緯情報ｕｉ−１若しくはそれから導出した情報をＳＴ、（ｕ＜ｎｉ）？ｆｉ（ｕ）＝ｕ＾｛ｄｉ｝ｍｏｄ ｎｉ：ｆｉ（ｕ）＝ｕと定義される関数をｆｉ（ｕ）、セキュリティパラメタビット（ただしｎｉ＜２ｋ）長自然数空間での写像としてφ（ｕ）＝（ｕ＋ｎｉ）ｍｏｄ２ｋ定義される関数をφ（ｕ）、その逆関数をφ−１とするとき、φ−１（ｆｉ（φ（ｆｉ（ＳＴ）））））を新たな流通経緯情報、流通経緯情報ｕｉ−１またはそのハッシュ値ｈ（ｕｉ−１）を新たな補助情報ｖｉとしてそれぞれ導出するものであることを特徴とする。
【００４８】
本発明の第8のリーダライタは、第7のリーダライタにおいて、前記ＳＴは、自拠点および自拠点より上流の全ての拠点の公開鍵を連結したビット列Ｔｉのハッシュ値Ｈ（Ｔｉ）と、初期値または無線ＩＣタグの読み書き可能なメモリに書き込まれている流通経緯情報のビット列ｕとの排他的論理和により求められる値Ｈ（Ｔｉ）○ｕであることを特徴とする。
【００４９】
本発明の第9のリーダライタは、第7のリーダライタにおいて、前記ＳＴは、自拠点および自拠点より上流の全ての拠点の公開鍵およびメッセージを連結したビット列Ｔｉのハッシュ値Ｈ（Ｔｉ）と、初期値または無線ＩＣタグの読み書き可能なメモリに書き込まれている流通経緯情報のビット列ｕとの排他的論理和により求められる値Ｈ（Ｔｉ）○ｕであることを特徴とする。
【００５０】
本発明の第10のリーダライタは、第8のリーダライタにおいて、（ｕ＜ｎｉ）？ｇｉ（ｕ）＝ｕ＾｛ｅｉ｝ ｍｏｄ ｎｉ：ｇｉ（ｕ）＝ｕと定義される関数をｇｉ（ｕ）とするとき、ｈ（Ｈ（Ｔｉ−１○φ−１（ｇｉ−１（φ（ｇｉ−１（ｕｉ−１）））））…）））））））））＝ｖｉ−１が成立することにより、前記製品が１つ前の拠点から正しく経緯してきたものと判断する署名検証部を有することを特徴とする。
【００５１】
本発明の第11のリーダライタは、第1のリーダライタにおいて、前記署名作成部は、署名文の大きさが前記無線ＩＣタグの読み書き可能なメモリの容量以下となる署名方式を用いて署名した署名文を新たな流通経緯情報として導出するものであることを特徴とする。
【００５２】
本発明の第12のリーダライタは、第1のリーダライタにおいて、前記リーダライタの署名作成部は、自拠点の秘密鍵をｄｉ、ＲＳＡモジュラスをｎｉ、初期値ｕ０若しくはそれから導出した値または自拠点に流通してきた製品またはそのパッケージに付された無線ＩＣタグの読み書き可能なメモリに書き込まれている流通経緯情報ｕｉ−１若しくはそれから導出した情報をＳＴ、ｕ＝ａ｜｜ｓ（ａはｋビット長）としたときに（ａ＜ｎｉ）？Ｅｉ（ｕ）＝（（ａ＾｛ｄｉ｝ｍｏｄ ｎｉ，ｓ｜｜０）：（（ａ−ｎｉ）＾｛ｄｉ｝ｍｏｄ ｎｉ，ｓ｜｜１）と定義される関数をＥｉ（ｕ）とするとき、Ｅｉ（ＳＴ）を新たな流通経緯情報として導出するものであることを特徴とする。
【００５３】
本発明の第13のリーダライタは、第12のリーダライタにおいて、前記ＳＴは、自拠点および自拠点より上流の全ての拠点の公開鍵を連結したビット列Ｔｉのハッシュ値Ｈ（Ｔｉ）と、初期値または無線ＩＣタグの読み書き可能なメモリに書き込まれている流通経緯情報のビット列ｕとの排他的論理和により求められる値Ｈ（Ｔｉ）○ｕであることを特徴とする。
【００５４】
本発明の第14のリーダライタは、第12のリーダライタにおいて、前記ＳＴは、自拠点および自拠点より上流の全ての拠点の公開鍵およびメッセージを連結したビット列Ｔｉのハッシュ値Ｈ（Ｔｉ）と、初期値または無線ＩＣタグの読み書き可能なメモリに書き込まれている流通経緯情報のビット列ｕとの排他的論理和により求められる値Ｈ（Ｔｉ）○ｕである。
【００５５】
本発明の第15のリーダライタは、第13のリーダライタにおいて、（ｂ＝０）？Ｄｉ（ｕ）＝（（ａ＾｛ｅｉ｝ｍｏｄ ｎｉ，ｓ）：（（ａ＾｛ｅｉ｝ｍｏｄ ｎｉ）＋ｎｉ，ｓ）と定義される関数をＤｉ（ｕ）とするとき、Ｄ１（Ｈ（Ｔ１）○（Ｄ２（Ｈ（Ｔ２）○…Ｄｉ−１（ｕｉ−１））…））＝ｕ０が成立することにより、前記製品が自拠点まで正しく経緯してきたものと判断する署名検証部を有することを特徴とする。
【００５６】
本発明の第16のリーダライタは、第2のリーダライタにおいて、前記署名作成部は、署名文の大きさが前記無線ＩＣタグの読み書き可能なメモリの容量以下となる署名方式を用いて署名した署名文を新たな流通経緯情報とし、流通経緯情報ｕｉ−１またはそのハッシュ値ｈ（ｕｉ−１）を新たな補助情報ｖｉとしてそれぞれ導出するものであることを特徴とする。
【００５７】
本発明の第17のリーダライタは、第2のリーダライタにおいて、前記署名作成部は、自拠点の秘密鍵をｄｉ、ＲＳＡモジュラスをｎｉ、初期値ｕ０若しくはそれから導出した値または自拠点に流通してきた製品またはそのパッケージに付された無線ＩＣタグの読み書き可能なメモリに書き込まれている流通経緯情報ｕｉ−１若しくはそれから導出した情報をＳＴ、ｕ＝ａ｜｜ｓ（ａはｋビット長）としたときに（ａ＜ｎｉ）？Ｅｉ（ｕ）＝（（ａ＾｛ｄｉ｝ｍｏｄ ｎｉ，ｓ｜｜０）：（（ａ−ｎｉ）＾｛ｄｉ｝ｍｏｄ ｎｉ，ｓ｜｜１）と定義される関数をＥｉ（ｕ）とするとき、Ｅｉ（ＳＴ）を新たな流通経緯情報とし、流通経緯情報ｕｉ−１またはそのハッシュ値ｈ（ｕｉ−１）を新たな補助情報ｖｉとしてそれぞれ導出するものであることを特徴とする。
【００５８】
本発明の第18のリーダライタは、第17のリーダライタにおいて、前記ＳＴは、自拠点および自拠点より上流の全ての拠点の公開鍵を連結したビット列Ｔｉのハッシュ値Ｈ（Ｔｉ）と、初期値または無線ＩＣタグの読み書き可能なメモリに書き込まれている流通経緯情報のビット列ｕとの排他的論理和により求められる値Ｈ（Ｔｉ）○ｕであることを特徴とする。
本発明の第19のリーダライタは、第17のリーダライタにおいて、前記ＳＴは、自拠点および自拠点より上流の全ての拠点の公開鍵およびメッセージを連結したビット列Ｔｉのハッシュ値Ｈ（Ｔｉ）と、初期値または無線ＩＣタグの読み書き可能なメモリに書き込まれている流通経緯情報のビット列ｕとの排他的論理和により求められる値Ｈ（Ｔｉ）○ｕであることを特徴とする。
本発明の第20のリーダライタは、第18又は19のリーダライタにおいて、（ｂ＝０）？Ｄｉ（ｕ）＝（（ａ＾｛ｅｉ｝ｍｏｄ ｎｉ，ａ）：（（ａ＾｛ｅｉ｝ｍｏｄ ｎｉ）＋ｎｉ，ａ）と定義される関数をＤｉ（ｕ）とするとき、ｈ（Ｈ（Ｔｉ−１）○Ｄｉ−１（ｕｉ−１））＝ｖｉ−１が成立することにより、前記製品が自拠点まで正しく経緯してきたものと判断する署名検証部を有することを特徴とする。
【００５９】
本発明の無線ICタグは、製品の流通経緯を管理するために製品またはそのパッケージに付加される無線ICタグにおいて、製品の流通経路上の各拠点に備わるリーダライタとの間で情報を送受信する送受信部と、自無線ICタグ固有の識別番号を記憶する読み出し専用メモリと、流通経緯情報を記憶する読み書き可能なメモリとを備え、最初の拠点に流通した際にはその拠点に備わるリーダライタによって、前記識別番号またはそれから導出した値に対してその拠点の秘密鍵で署名された署名文が前記流通経緯情報として前記読み書き可能なメモリに書き込まれ、最初の拠点以外の拠点に流通した際にはその拠点に備えるリーダライタによって、前記読み書き可能なメモリに書き込まれている流通経緯情報に対して、自拠点より上流の各拠点の公開鍵を自拠点に近い拠点の公開鍵から順番に使用して検証を繰り返していき、最終的に前記初期値が得られるところまで遡って検証できることにより、前記製品が自拠点まで正しく経緯してきたものと判断された場合に、無線ＩＣタグの読み書き可能なメモリに書き込まれている流通経緯情報またはそれから導出した情報に対してその拠点の秘密鍵で署名された署名文が新たな流通経緯情報として導出されて、前記読み書き可能なメモリに書き込まれていた元の流通経緯情報が置き換えられるものであることを特徴とする。
【００６０】
『作用』
本発明にあっては、製品またはそのパッケージに付加された無線ICタグがその製品に付随して流通し、流通経緯上の各拠点に設けられたリーダライタによって、無線ICタグの読み書き可能なメモリ中の流通経緯情報が書き換えられていく。【００６１】
具体的には、最初の拠点に備わるリーダライタにより、初期値u0またはそれからハッシュ関数などにより一意に導出した値に対してその拠点の秘密鍵で署名された署名文が流通経緯情報u1として無線ICタグの読み書き可能なメモリに書き込まれ、2番目の拠点に備わるリーダライタにより、読み書き可能なメモリに書き込まれている流通経緯情報u1またはそれからハッシュ関数などにより一意に導出した情報に対してその拠点の秘密鍵で署名された署名文が新たな流通経緯情報u2として導出されて元の流通経緯情報u1と置き換えられ、3番目の拠点に備わるリーダライタにより、読み書き可能なメモリに書き込まれている流通経緯情報u2またはそれからハッシュ関数などにより一意に導出した情報に対してその拠点の秘密鍵で署名された署名文が新たな流通経緯情報u3として導出されて元の流通経緯情報u2と置き換えられる。【００６２】
或る拠点に流通してきた製品が正しく経緯してきたかどうかは、その製品またはそのパッケージに付された無線ICタグの読み書き可能なメモリに書き込まれている流通経緯情報に対して、その拠点より上流の各拠点の公開鍵を自拠点に近い拠点の公開鍵から順番に使用して検証を繰り返していき、最終的に初期値u0が得られるところまで遡って検証できるかどうかによって判断できる。【００６３】
例えば、3番目の拠点に流通してきた製品は、1番目の拠点、2番目の拠点をその順に経緯してきたはずである。従って、3番目の拠点に届いた製品に付加された無線ICタグの読み書き可能なメモリに記憶されている流通経緯情報u2を、2番目の拠点の公開鍵で検証し、その検証結果を1番目の拠点の公開鍵で検証すると、その検証結果は初期値に一致する。例えば、若し2番目の拠点において、1番目の拠点以外から流通した製品に付加された無線ICタグの読み書き可能なメモリに記憶されている流通経緯情報u'1(≠u1)に対して、2番目の拠点の秘密鍵で署名した署名文を新たな流通経緯情報u2として導出し、元の流通経緯情報u'1と置き換えて、3番目の拠点に流通させたとすると、流通経緯情報u2を2番目の拠点の公開鍵で検証し、その検証結果を1番目の拠点の公開鍵で検証すると、その検証結果は初期値u0に一致しない。【００６４】
こうして、工場生産品や食品などの一般消費者向けの製品または製品パッケージの流通過程において、ホストコンピュータと通信できないオフライン環境でも、流通経緯を確認することができ、かつ流通経緯中の各拠点のリーダライタや悪意のある第3者における流通経緯情報の偽造および改竄も検知可能となる。また、初期値u0として、0などの数値を使用すると、正規に流通する製品Aに付加された無線ICタグの読み書き可能なメモリに記憶されている流通経緯情報を読み出して、別の製品Bに付加された無線ICタグの読み書き可能なメモリにコピーするといった不正を防止できないが、初期値u0として、無線ICタグの読み出し専用メモリに記憶された当該無線ICタグ固有の識別子を用いることにより、そのような不正な行為を阻止でき、流通経緯情報の偽造および改竄をより一層困難にすることが可能となる。【００６５】
また、或る拠点に流通してきた製品が正しく経緯してきたかどうかを検証するために、その製品に付された無線ICタグの読み書き可能なメモリに書き込まれている流通経緯情報に対して、その拠点より上流の各拠点の公開鍵を全て使って検証を繰り返す方法は信頼性は高いが、計算量が多い。これに対して、最初の拠点に備わるリーダライタが、初期値またはそれから導出した値に対して自拠点の秘密鍵で署名した署名文を流通経緯情報、前記初期値またはそれから導出した値を補助情報として無線ICタグの読み書き可能なメモリに書き込み、最初の拠点以外の拠点に備わるリーダライタが、無線ICタグの読み書き可能なメモリに書き込まれている流通経緯情報またはそれから導出した情報に対して自拠点の秘密鍵で署名した署名文を新たな流通経緯情報、書き込まれていた元の流通経緯情報またはそれから導出した情報を補助情報として導出し、無線ICタグの読み書き可能なメモリに書き込まれていた元の流通経緯情報と補助情報と置き換えるようにする方法によれば、或る拠点に流通してきた製品が正しく経緯してきたかどうかの検証を簡易化できる。つまり、その拠点に流通してきた製品に付された無線ICタグの読み書き可能なメモリに書き込まれている流通経緯情報に対して、その拠点より1つ上流の拠点の公開鍵を使用して検証し、その検証結果において無線ICタグの読み書き可能なメモリに書き込まれている補助情報と同じ補助情報が導出できるかどうかによって、当該製品が1つ前の拠点から正しく経緯してきたかどうかを判断できる。ただし、この場合は、1つ前の拠点が信頼のおける拠点であることが必要である。【００６６】
本発明における流通経緯情報を生成するための署名方式には、非特許文献2に記載される署名方式など、公知の署名方式を利用可能である。ただし、非特許文献2に記載される署名方式は、署名を重ねるたびに1ビットずつ署名データ長が大きくなる。これに対して、後述する第2の実施の形態において提案する新規な署名方式によれば、流通経緯情報のサイズを一定にすることができる。
【発明の効果】
【００６７】
本発明によれば、工場生産品や食品などの一般消費者向けの製品または製品パッケージの流通過程において、ホストコンピュータと通信できないオフライン環境でも、流通経緯を確認することができる。これによって、運用コストを軽減できる。その理由は、製品に付する書き込み型無線ICタグのローカルな記憶領域に流通の経緯を管理する情報を持ち、それを必要に応じて参照することで流通経緯を確認することができるからである。【００６８】
また本発明によれば、流通経緯中の各段階のリーダライタや悪意のある第3者における流通経緯情報の偽造および改竄を検知できる。その理由は、流通経緯を証明する署名が、流通経緯中の拠点全ての公開鍵を用いて検証することが可能だからである。
【図面の簡単な説明】
【００６９】
【図１】本発明の第1の実施の形態の構成を示すブロック図である。
【図２】本発明の第1の実施の形態における流通経緯情報の説明図である。
【図３】本発明の第1の実施の形態において無線ICタグが付された製品がリーダライタを経由する際の動作を示すシーケンス図である。
【図４】本発明の第1の実施の形態における流通経緯情報に対する署名の作成と検証に使用する関数を示す図である。
【図５】本発明の第1の実施の形態にかかるリーダライタの署名作成部の処理例を示すフローチャートである。
【図６】本発明の第1の実施の形態にかかるリーダライタの署名検証部の処理例を示すフローチャートである。
【図７】本発明の第1の実施の形態にかかるリーダライタの署名作成部の別の処理例を示すフローチャートである。
【図８】本発明の第1の実施の形態にかかるリーダライタの署名検証部の別の処理例を示すフローチャートである。
【図９】本発明の第2の実施の形態の構成を示すブロック図である。
【図１０】本発明の第2の実施の形態における流通経緯情報に対する署名の作成と検証に使用する関数を示す図である。
【図１１】本発明の第2の実施の形態にかかるリーダライタの署名作成部の処理例を示すフローチャートである。
【図１２】本発明の第2の実施の形態にかかるリーダライタの署名検証部の処理例を示すフローチャートである。
【図１３】本発明の第2の実施の形態にかかるリーダライタの署名作成部の別の処理例を示すフローチャートである。
【図１４】本発明の第2の実施の形態にかかるリーダライタの署名検証部の別の処理例を示すフローチャートである。
【図１５】本発明の第3の実施の形態の構成を示すブロック図である。
【図１６】本発明の第3の実施の形態において無線ICタグが付された製品がリーダライタを経由する際の動作を示すシーケンス図である。
【図１７】本発明の第3の実施の形態にかかるリーダライタの署名作成部の処理例を示すフローチャートである。
【図１８】本発明の第3の実施の形態にかかるリーダライタの署名検証部の処理例を示すフローチャートである。
【図１９】本発明の第3の実施の形態にかかるリーダライタの署名作成部の別の処理例を示すフローチャートである。
【図２０】本発明の第3の実施の形態にかかるリーダライタの署名検証部の別の処理例を示すフローチャートである。
【図２１】本発明の第4の実施の形態の構成を示すブロック図である。
【図２２】本発明の第4の実施の形態にかかるリーダライタの署名作成部の処理例を示すフローチャートである。
【図２３】本発明の第4の実施の形態にかかるリーダライタの署名検証部の処理例を示すフローチャートである。
【図２４】本発明の第4の実施の形態にかかるリーダライタの署名作成部の別の処理例を示すフローチャートである。
【図２５】本発明の第4の実施の形態にかかるリーダライタの署名検証部の別の処理例を示すフローチャートである。
【符号の説明】
【００７０】
1…無線ICタグ
2−1〜2−ｎ…リーダライタ
3…公開鍵発行者
11…ROM部
12…RAM部
13…送受信部
21…鍵管理部
22…署名作成部
23…署名検証部
24…送受信部
25…外部情報入力部
【発明を実施するための最良の形態】
【００７１】
『第1の実施の形態』
次に本発明の第1の実施の形態について、図面を参照して詳細に説明する。【００７２】
図1を参照すると、本発明の第1の実施の形態にかかる流通経緯認証システムは、流通する製品に付され、製品とともに流通経路(配送経路)をたどる無線ICタグ（RFIDタグ）1と、流通経路中の各拠点に配置されるリーダライタ2−1〜2−ｎとから構成される。ここで、無線ICタグ1が付された製品は、リーダライタ2−1の配置された1番目の拠点、リーダライタ2−2の配置された2番目の拠点、…、リーダライタ2−ｎの配置されたn番目の拠点の順で経緯（流通）していくものとする。【００７３】
無線ICタグ1は、ROM部11、RAM部12および送受信部13を備えている。【００７４】
ROM部11は、読み取り専用のメモリ領域であり、当該無線ICタグ1を他の無線ICタグと区別するための固有のIDを記憶する。【００７５】
RAM部12は、読み取りと書き込みが可能であるメモリ領域であり、書き込み可能なメモリサイズは有限である。本書き込み可能なメモリ領域には、当該メモリサイズに収まるサイズsで表現可能な流通経緯情報uiが記憶される。添え字がiである流通経緯情報uiは、1番目からi番目までの拠点を経緯したことを表す。流通経緯情報の初期値は、どこも経緯していないことを表すu0である。u0には、所定値たとえば0、または、無線ICタグ1のROM部11に記憶された当該無線ICタグ固有のID値が設定される。【００７６】
図2を参照すると、流通経緯情報uiは、リーダライタ2−1、…、2−ｉの秘密鍵sk1、…、skiを用いて順次計算された署名から構成される。つまり、最初のリーダライタ2−1が初期値u0に対して秘密鍵sk1を用いて計算した署名に、次の拠点のリーダライタ2−2が秘密鍵sk2を用いて署名し、更にその署名に対して次の拠点のリーダライタが署名するという手順をi番目の拠点まで繰り返されたものが流通経緯情報uiである。【００７７】
送受信部13は、各拠点においてその拠点に配置されたリーダライタ2−1〜2−ｎとの間で無線伝送により情報の授受を行うべく増幅、フィルタリング、変調等の処理を行う。具体的には、リーダライタからROM部11のIDまたはRAM部12の流通経緯情報への読み取り要求時に、当該情報を読み取ってリーダライタへ送信し、また、リーダライタからRAM部12への書き込み要求時に、書き込む情報を受信してRAM部11へ書き込む。【００７８】
リーダライタ2−1〜2−ｎは全て同じ構成であり、図1にはリーダライタ2−1のブロックにのみ内部構造を図示してある。【００７９】
図1を参照すると、各リーダライタは、RSA公開鍵暗号アルゴリズムにおける公開鍵と秘密鍵のペアを管理する鍵管理部21と、鍵管理部21に格納された自リーダライタの秘密鍵に基づいて署名を作成する署名作成部22と、鍵管理部21に格納された各拠点のリーダライタの公開鍵に基づいて署名を検証する署名検証部23と、無線ICタグ1との間で情報を送受信する送受信部24から構成される。また、リーダライタに製品に付加する情報（時間、温度などの属性情報など）を入力し、またリーダライタ上の情報（経由時においての経緯認証の成否などを通知するための情報など）を出力する外部情報入力部25を備えていてもよい。【００８０】
鍵管理部21は、リーダライタ2−1〜2−ｎの公開鍵及び自リーダライタの秘密鍵を保持する。このリーダライタ2−1〜2−ｎの公開鍵及び自リーダライタの秘密鍵は、システム外の信頼のおける公開鍵発行者3から発行されたものでもよい。ここでは、鍵管理部21が自ら公開鍵と秘密鍵の鍵ペアを生成する手続きに関して説明する。公開鍵発行者3で鍵ペアを生成するときも同様の手続きを踏むものとする。本手続きは、個々のリーダライタ2−iごとに、RSA公開鍵暗号アルゴリズムを基本とする方法で、セキュリティを最大化するように鍵生成を行う。素数pi、qiを、積ni=piqi(RSAモジュラス)のビット長がセキュリティパラメタkに等しく、かつpi、qiのビット長が同程度になるように選ぶ。さらに自然数eiでniよりも大きく、かつ((pi-1)(qi-1))と互いに素であるものをランダムに選ぶ。このように決定するパラメタを用い、リーダライタ2−iの公開鍵pki、秘密鍵skiをそれぞれ(ni, ei)、di=ei-1 mod
((pi-1)(qi-1))とする。このように生成される各リーダライタの公開鍵は、システム外の手段で公開され、各リーダライタは公開されている公開鍵をシステム外の手段から入手可能とする。【００８１】
署名作成部22は、無線ICタグ1とリーダライタの送受信部13、24を介して得られた、無線ICタグ1のRAM部12に保持されている流通経緯情報ui-1に対して、鍵管理部21で管理している自リーダライタの秘密鍵diとRSAモジュラスniとを用いて、署名作成処理を行い、作成した署名を新たな流通経緯情報uiとして、無線ICタグ1とリーダライタの送受信部13、24を介して無線ICタグ1のRAM部12に保持されている流通経緯情報ui-1と置き換える。【００８２】
署名検証部23は、無線ICタグ1とリーダライタの送受信部13、24を介して得られた、無線ICタグ1のRAM部12に保持している流通経緯情報ui-1に対して、各リーダライタの公開鍵pki-1,…, pk1を用いて、自リーダライタの拠点に到る経緯を逆順に検証していき、最終的にu0が得られるところまでさかのぼって検証できれば、自リーダライタの拠点に到るまでの全てのリーダライタを正しく経緯してきたものと判断する。【００８３】
送受信部24は、無線ICタグ1間で無線伝送により情報の授受を行うべく増幅、フィルタリング、変調等の処理を行う。具体的には、リーダライタからROM部11のIDまたはRAM部12の流通経緯情報への読み取り要求時に、リーダライタへ送信されてくる当該情報を受信する。また、リーダライタからRAM部12への書き込み要求時にRAM部12書き込む情報を送信する。【００８４】
次に、無線ICタグ1が付された製品がリーダライタ2−iを経由する際の動作を図3のシーケンス図を参照して説明する。【００８５】
まず、リーダライタ2−iは、無線ICタグ1が付された製品が経由されてきた時、送受信部24により無線ICタグ1に対して、無線ICタグ1のRAM部12に格納された流通経緯情報ui-1および流通経緯情報の初期値u0として無線ICタグ固有のIDが使用される場合はROM部11のIDを要求する（S101）。【００８６】
無線ICタグ1は、この要求に応じて、RAM部12に格納されている流通経緯情報ui-1および要求された場合にはROM部11に格納されているIDを、送受信部13を介してリーダライタ2−iに送信する（S201）。【００８７】
流通経緯情報ui-1を受信した(S102)リーダライタ2−iは、署名検証部23により、鍵管理部21に保持されているリーダライタ2−1〜2−(ｉ−1)までの公開鍵pk1〜pki-1を用いて、流通経緯情報ui-1に対して順に署名を検証していき、流通経緯情報の初期値u0が得られるかどうかを検証する（S103）。【００８８】
ここで、u0が得られれば、リーダライタ2−1〜2−(ｉ−1)まで正しく経緯してきたものと判断され、u0が得られない場合、流通経緯中で何か不正があったものと検出される（S106）。【００８９】
検証に成功した場合、リーダライタ2−ｉは、自リーダライタが配置された拠点を正しく経緯したことを証明するために、正しく経緯してきたことが署名検証部23により認証できた流通経緯情報ui-1に対して、署名作成部22により、鍵管理部21に保持されている自リーダライタの秘密鍵skiを用いて署名を生成し（S104）、生成された署名値uiを新しい流通経緯情報として過去のui-1に上書きするために、無線ICタグ1に送受信部24により送信する（S105）。無線ICタグ1は、送受信部13によりuiを受信したら（S202）、受信したuiでRAM部12に格納されているui-1を上書きする（S203）。【００９０】
以上と同様な動作は、無線ICタグ1が付加された製品が次の拠点に配送された場合にも実施される。リーダライタ2−ｎが配置された拠点まで正しく経緯した製品の無線ICタグ1の流通経緯情報unに対して、リーダライタ2−1〜2−ｎの公開鍵pk1〜pknを用いて、順に署名を検証していけば、流通経緯情報の初期値u0が得られることになる。これにより、全ての拠点のリーダライタを正しく経緯してきたことを知ることができる。【００９１】
次に署名作成部22をより詳細に説明する。【００９２】
署名作成部22によるステップS104における署名作成処理は、リーダライタ2−1〜2−(i-1)の公開鍵pk1,…, pki-1が全て異なること、かつeiが、niよりも大きくかつ((pi-1)(qi-1))と互いに素であることを確認し、Ti = pk1||…||pkiを計算した後、u=a||s(aはkビット長)としたときに(a<ni)?Ei(u)=
((a^{di} mod ni, s||0) : ((a-ni)^{di}
mod ni, s||1)と定義される図4の関数Ei(u)を用いて、無線ICタグ1の有する流通経緯情報ui-1に対して、Ei (H(Ti)○ui-1) を署名として導出する。ここで、関数Ei(u)の定義に使用する「式1?式2：式3」なる表記は、式1の条件が真のとき式2を評価し、式1の条件が偽のとき式3を評価することを意味し、また、「||」はビット列同士の連結、「H」はniのビット数と同じビット数のビット列を出力するハッシュ関数、「○」はビット毎の排他的論理和、「^」は右の被演算子を指数として左の被演算子をべき乗した値を算出する算術演算子を表し、以下においても同様の意味で用いる。この署名作成処理の詳しい手順を図5のステップS314〜S319に示す。以下、前後の処理と共に署名作成処理を図5を参照して詳しく説明する。【００９３】
図5を参照すると、リーダライタ2−iは、RFIDのRAM部12に格納されている流通経路情報ui-1を読み取ると(S311)、所有している鍵の正当性を検証した後(S312)、ui-1が正当であるかを署名検証部23で検証する(S313)。その後、署名作成部22により、現拠点の公開鍵及び上流に位置する拠点の公開鍵からTi = pk1||…||pkiを計算した後(S314)、Ei (H(Ti)○ui-1) をリーダライタ2−iでの流通経緯情報uiとして導出する(S315〜S319)。具体的には、まずv=H(Ti)○ui-1を計算し(S315)、vのはじめのセキュリティパラメタkビットをa、残りをsとし(S316)、aがRSAモジュラスniよりも小さいときは、aに対して秘密鍵diでRSA方式に準じて署名値を計算する(S317,S318)。このときsに制御情報として1ビットの情報0を付け加え、署名値とともにuiとする。また、aがRSAモジュラスniよりも大きいときは、モジュラスより大きい数に対してはRSA署名を計算できないので、aをniだけ減算したものに対して署名値を計算する(S319)。このときsに制御情報として1ビットの情報1を付け加え、署名値とともにuiとする。このように計算したuiをRFIDのRAM部に格納されていたui-1と置換する(S319)。【００９４】
このように、リーダライタ2−iは、基本的には、無線IDタグ1に既に書き込まれている流通経路情報ui-1に対して、自リーダライタの秘密鍵diで署名を付けるが、RSAの場合、自リーダライタのRSAモジュラスniより大きい数に対しては署名を計算できないので、若しui-1がniより大きい場合はモジュラスniだけ減算してから署名を付ける。このとき、後の検証を可能にするために、後ろに1bitの制御情報(モジュラスを超えていた場合は1、そうでない場合は0)を付けておく。また署名を計算する際には、セキュリティ強度を考慮し、経緯上の各拠点の公開鍵を署名対象として入力することによって、公開鍵のすり替えを防止する。つまり、通常の方法で署名を作成するにはまず自分の公開鍵ペアを作成してから署名するが、まず署名を偽造して偽造した署名とつじつまが合うように公開鍵ペアを作成する不正行為が考えられるため、それを防ぐためにハッシュに公開鍵を入れる。ハッシュに公開鍵が入っていることにより、署名する前に公開鍵を作ったことが保証される。【００９５】
次に署名検証部23をより詳細に説明する。【００９６】
署名検証部23によるステップS103における署名検証処理は、リーダライタ2−iにおいて、Ti = pk1||…||pki、u=a||s||b(aはkビット長、bは1ビット長)としたときに、(b=0)?Di(u)=
((a^{ei} mod ni, s)：((a^{ei} mod ni) + ni, s)と定義される図4に示す関数Di(u)を用いて、D1(H(T1)○(D2(H(T2)○…Di-1(ui-1))…)) = u0が成立すれば署名の検証に成功したと判断する。この署名検証処理の詳しい手順を図6に示す。【００９７】
図6を参照すると、まずリーダライタ2−iは、流通経路情報ui-1を変数viに記憶する(S331)。【００９８】
経緯中の拠点のリーダライタ2-iから最上流拠点のリーダライタ2-1までを遡って、順に検証処理を行う(S332〜S342)。【００９９】
まず、どの拠点における署名を検証しているかを管理するループ変数jにi-1を記憶する(S332)。【０１００】
jが1以上であるかどうかの判定を行い(S333)、1以上であれば次のように処理を行う。リーダライタ2-jの備えられた拠点の公開鍵及びその上流に位置する拠点の公開鍵からTj = pk1||…||pkjを計算した後(S334)、vjのはじめのkビットをaに、最後の1ビットをbに、残りのビットをsに記憶し(S335)、bが0ならば、aを公開鍵ejで検証し、検証結果の末尾にsを加えたものとH(Tj)の排他的論理和を計算し、それをvj-1として記憶する(S336,S337)。【０１０１】
bが1ならば、aを公開鍵ejで検証し、検証結果にモジュラスnjを加算した後、末尾にsを加えたものとH(Tj)の排他的論理和を計算し、それをvj-1として記憶する(S338)。最後にループ変数jをデクリメントし(S339)、再度jが1以上であるかどうかの判定から上記の処理を繰り返す。jが0のときは、v0が流通経緯情報の初期値u0と等しいかどうかを確かめる(S340)。【０１０２】
等しいならば正しい経緯を辿り、かつ途中経緯で不正がなかったことの検証に成功したとし、本処理を完了する(S341)。等しくない場合は検証に失敗したとし、本処理を完了する(S342)。【０１０３】
このように、リーダライタ2-iにおける署名検証は、経緯をさかのぼって処理し、最終的に初期値u0が得られたら正しい経緯をたどってきたと判断する。また署名を検証する際に経緯上の各拠点の公開鍵を検証対象として入力しているため、公開鍵のすり替えを検出できる。【０１０４】
次に、本実施の形態の変形例として、各リーダライタにおいて無線ICタグ1に書き込むメッセージが外部情報入力部25から入力された場合の署名作成部22の署名作成処理を図7を参照して説明する。【０１０５】
図7を参照すると、リーダライタ2-iに無線ICタグ1に書き込むメッセージMiが存在する場合、署名作成部22により、T’i = M1||…||Mi||pk1||…||pkiを計算し(S314')、以下、T’iを図5のTiと同様に扱うことにより、Ei
(H(T’i)○u) を署名として導出する。このように署名を計算する際に、経緯上の各拠点の公開鍵とともに、付与するメッセージも署名対象として入力することで、公開鍵のすり替えだけでなく、各リーダライタで付与するメッセージに対する改竄も検知可能となる。【０１０６】
図8は各リーダライタにおいて無線ICタグ1に書き込むメッセージが存在する場合の署名検証部23の署名検証処理の手順を示す。T’j = M1||…||Mj||pk1||…||pkjを計算し(S334')、以下、T’jを図6のTjと同様に扱うことにより、D1(H(T’1)○(D2(H(T’2)○…Di-1(ui-1))…)) = u0が成立すれば署名の検証に成功したとする。このように署名を検証する際に、経緯上の各拠点の公開鍵とともに、付与するメッセージも検証対象として入力することによって、公開鍵のすり替え、メッセージの改竄を検出できる。【０１０７】
次に本実施の形態の効果を説明する。【０１０８】
第1の効果は、工場生産品や食品などの一般消費者向けの製品または製品パッケージの流通過程において、ホストコンピュータと通信できないオフライン環境でも、流通経緯を確認することができることである。その理由は、製品に付する書き込み型無線ICタグ1のローカルな記憶領域(RAM部12)に流通の経緯を管理する情報を持ち、それを必要に応じて参照することで流通経緯を確認することができるからである。これによって、運用コストを軽減できる。【０１０９】
第2の効果は、流通経緯中にたどる拠点数にスケーラビリティを有することである。その理由は、(署名サイズ＋(拠点数)×1ビット)で、流通経緯情報を表現できるからである。【０１１０】
第3の効果は、無線ICタグ1の価格を低く抑えられることである。その理由は、第2の効果の理由と同等であり、書き込みメモリ領域を多量に実装する必要がないからである。これによって、流通用途に大量に使用することが容易になる。【０１１１】
第4の効果は、流通経緯中の各段階のリーダライタや悪意のある第3者における流通経緯情報の偽造および改竄を検知できることにある。その理由は、流通経緯を証明する署名が、流通経緯中の拠点全ての公開鍵を用いて検証することが可能だからである。特に、初期値u0に無線IDタグ1のROM部11に記憶してある当該無線IDタグ固有のIDを用いる場合、ROM部11のデータが不正に改ざんできないことを前提にできるのであれば、RAM部12の流通経緯情報を不正に他の無線IDタグのRAM部12にコピーした場合も検知できる。【０１１２】
『第2の実施の形態』
次に本発明の第2の実施の形態について、図面を参照して詳細に説明する。【０１１３】
図9を参照すると、本発明の第2の実施の形態にかかる流通経緯認証システムは、各リーダライタ2−1〜2−nが署名作成部22および署名検証部23の代わりに署名作成部22Aおよび署名検証部23Aを備えている点で図1の第1の実施の形態にかかる流通経緯認証システムと相違し、その他の点は第1の実施の形態と同じである。【０１１４】
署名作成部22Aは、無線ICタグ1とリーダライタの送受信部13、24を介して得られた、無線ICタグ1のRAM部12に保持されている流通経緯情報ui-1に対して、鍵管理部21で管理している自リーダライタの秘密鍵diとRSAモジュラスniとを用いて、署名作成処理を行い、作成した署名を新たな流通経緯情報uiとして、無線ICタグ1とリーダライタの送受信部13、24を介して無線ICタグ1のRAM部12に保持されている流通経緯情報ui-1と置き換える。ただし、本実施の形態の場合、置き換え前後の流通経緯情報ui、ui-1のサイズは変わらない。【０１１５】
署名検証部23Aは、無線ICタグ1とリーダライタの送受信部13、24を介して得られた、無線ICタグ1のRAM部12に保持している流通経緯情報ui-1に対して、各リーダライタの公開鍵pki-1,…, pk1を用いて、自リーダライタの拠点に到る経緯を逆順に検証していき、最終的にu0が得られるところまでさかのぼって検証できれば、自リーダライタの拠点に到るまでの全てのリーダライタを正しく経緯してきたものと判断する。【０１１６】
無線ICタグ1が付された製品がリーダライタ2−iを経由する際の動作は、基本的には第1の実施の形態と同様に、図3のシーケンスに沿って行われる。ただし、ステップS103における署名検証処理とステップS104における署名作成処理の中身が第1の実施の形態と相違する。【０１１７】
次に署名作成部22Aの詳細を説明する。【０１１８】
署名作成部22AによるステップS104における署名作成処理は、リーダライタ2−1〜2−(i-1)の公開鍵pk1,…, pki-1が全て異なること、かつeiが、niよりも大きくかつ((pi-1)(qi-1))と互いに素であることを確認し、Ti = pk1||…||pkiを計算した後、(u<ni）？fi(u)=u^{di}mod ni
： fi(u)=uと定義される図10の関数fi(u)、および、セキュリティパラメタkビット(ただしni<2k)長自然数空間での写像としてφ(u)= (u+ni)mod2kと定義される図10の関数φ(u)を用いて、無線ICタグ1の有する流通経緯情報ui-1に対して、φ-1(fi(φ(fi((H(Ti)○ui-1)))))を署名として導出する。ここで、φ-1は、写像φの逆写像である。その後、導出した署名は新たな流通経緯情報uiとして、無線ICタグ1とリーダライタの送受信部13、24を介して無線ICタグ1のRAM部12に保持されている流通経緯情報ui-1と置き換えられる。この署名作成処理の詳しい手順を図11のステップS364〜S371に示す。以下、前後の処理と共に署名作成部22Aによる署名作成処理を図11を参照して詳しく説明する。【０１１９】
図11を参照すると、リーダライタ2−iは、RFIDのRAM部12に格納されている流通経路情報ui-1を読み取ると(S361)、所有している鍵の正当性を検証した後(S362)、ui-1が正当であるかを署名検証部23Aで検証する(S363)。その後、署名作成部22Aにより、現拠点の公開鍵及び上流に位置する拠点の公開鍵からTi = pk1||…||pkiを計算した後(S364)、署名対象としてv:=H(Ti)○ui-1を計算し(S365)、vがRSAモジュラスniよりも小さいときは(S366でYES)、そのまま秘密鍵diでvの署名を計算した値に、2kをモジュラスとするniの加算を行い、結果をv’とする(S367)。大きいときは(S366でNO)、モジュラスより大きい数に対してはRSA署名を計算できないので、vに対して署名計算を行わず、その値に対して直接2kをモジュラスとするniの加算を行い、結果をv’とする(S368)。【０１２０】
次にv'がRSAモジュラスniよりも小さいときは(S369でYES)、秘密鍵diでv’の署名を計算した値から、2kをモジュラスとするniの減算を行い、その値をリーダライタ2−iでの流通経緯情報uiとする(S370)。【０１２１】
大きいときは(S369でNO)、モジュラスより大きい数に対してはRSA署名を計算できないので、v’に対して署名計算を行わず、その値から直接2kをモジュラスとするniの減算を行い、その値をリーダライタiでの流通経緯情報uiとする(S371)。このように計算したuiをRFIDのRAM部12に格納されていたui-1と置換する(S372)。【０１２２】
このように、リーダライタ2−iは、基本的には、無線IDタグ1に既に書き込まれている流通経路情報ui-1に対して、自リーダライタの秘密鍵diで署名を付けるが、第1の実施の形態と異なり、制御ビットをつける代わりに、モジュラスniを超える数の署名を計算する際は、モジュラスniだけ大きいほうに写像させる関数をかけた後、署名計算をし、その後、その逆写像をかけて同じくモジュラスniだけ小さいほうに写像する。また、第1の実施の形態と同様に、署名を計算する際に、経緯上の各拠点の公開鍵を署名対象として入力することによって、公開鍵のすり替えを防止する。【０１２３】
次に署名検証部23Aをより詳細に説明する。【０１２４】
署名検証部23AによるステップS103における署名検証処理は、リーダライタ2−iにおいて、Ti= pk1||…||pki-1を計算し、(u<ni)?gi(u)=u^{ei}
mod ni： gi(u)=uと定義される図10の関数gi(u)と上記写像φ(u)とを用いて、φ-1(g1(φ(g1(H(T1 ○φ-1(g2(φ((g2(H(T2○…φ-1(gi-1(φ(gi-1(ui-1)))))… ))))))))) = u0が成立すれば署名の検証に成功したと判断する。この署名検証処理の詳しい手順を図12に示す。【０１２５】
図12を参照すると、まずリーダライタ2−iは、1つ前の拠点のリーダライタ2−(i-1)から最初の拠点のリーダライタ2−1までを遡って、順に検証処理を行うために、まず、どの拠点における署名を検証しているかを管理するループ変数jにiを記憶する(S381)。jが1以上であれば(S382でYES)、次のように処理を行う。【０１２６】
リーダライタjの備えられた拠点の公開鍵及びその上流に位置する拠点の公開鍵からTj =
pk1||…||pkjを計算した後(S383)、検証対象としてRFIDのRAM部12から読み込んだujを用いてv:=H(Tj)○ujを計算し(S384)、vがRSAモジュラスnjよりも小さいときは(S385でYES)、そのまま公開鍵ejでvの署名を検証した値に、2kをモジュラスとするnjの加算を行い、結果をv’とする(S386)。大きいときは(S385でNO)、モジュラスより大きい数に対してはRSA署名を検証できないので、vに対して検証処理を行わず、その値に対して直接2kをモジュラスとするnjの加算を行い、結果をv’とする(S387)。【０１２７】
次にv'がRSAモジュラスnjよりも小さいときは(S388でYES)、公開鍵ejでv’の署名を検証した値から、2kをモジュラスとするnjの減算を行い、その値をvjとする(S389)。大きいときは(S388でNO)、モジュラスより大きい数に対してはRSA署名を検証できないので、v’に対して検証処理を行わず、その値に対して直接2kをモジュラスとするnjの減算を行い、結果をvjとする(S390)。【０１２８】
最後にループ変数jをデクリメントし(S391)、再度jが1以上であるかどうかの判定から上記の処理を繰り返す。jが0の時は、v0が流通経緯情報の初期値u0と等しいかどうかを確かめる(S392)。等しいならば正しい経緯を辿り、かつ途中経緯で不正がなかったことの検証に成功したとし、本処理を完了する(S393)。等しくない場合は検証に失敗したとし、本処理を完了する(S394)。【０１２９】
このように、署名検証時も、写像関数でモジュラスだけ大きいほうにずらして検証処理し、再び逆写像してという処理を、経緯中の拠点をさかのぼって検証し、最終的に最初の拠点の公開鍵による検証で初期値u0が得られたら正しい経緯をたどってきたと判断する。また署名を検証する際に、経緯上の各拠点の公開鍵を検証対象として入力することによって、公開鍵のすり替えを検出できる。【０１３０】
次に、本実施の形態の変形例として、各リーダライタにおいて無線ICタグ1に書き込むメッセージが外部情報入力部25から入力された場合の署名作成部22Aの署名作成処理を図13を参照して説明する。【０１３１】
図13を参照すると、リーダライタ2−iに無線ICタグ1に書き込むメッセージMiが存在する場合、署名作成部22Aにより、T’i = M1||…||Mi||pk1||…||pkiを計算し(S314')、以下、T’iを図11のTiと同様に扱うことにより、u’i=φ-1(fi(φ(fi((H(T’i)○ui-1)))))を署名として導出する。このように署名を計算する際に、経緯上の各拠点の公開鍵とともに、付与するメッセージも署名対象として入力することで、公開鍵のすり替えだけでなく、各リーダライタで付与するメッセージに対する改竄も検知可能となる。【０１３２】
図14は各リーダライタにおいて無線ICタグ1に書き込むメッセージが存在する場合の署名検証部23Aの署名検証処理の手順を示す。T’j = M1||…||Mj||pk1||…||pkjを計算し(S334')、以下、T’jを図12のTjと同様に扱うことにより、φ-1(g1(φ(g1(H(T'1 ○φ-1(g2(φ((g2(H(T'2○…φ-1(gi(φ(gi(u’i)))))… ))))))))) = u0が成立すれば署名の検証に成功したとする。このように署名を検証する際に、経緯上の各拠点の公開鍵とともに、付与するメッセージも検証対象として入力することによって、公開鍵のすり替え、メッセージの改竄を検出できる。【０１３３】
次に本実施の形態の効果を説明する。【０１３４】
第1の効果は、工場生産品や食品などの一般消費者向けの製品または製品パッケージの流通過程において、ホストコンピュータと通信できないオフライン環境でも、流通経緯を確認することができることである。その理由は、製品に付する書き込み型無線ICタグ1のローカルな記憶領域(RAM部12)に流通の経緯を管理する情報を持ち、それを必要に応じて参照することで流通経緯を確認することができるからである。これによって、運用コストを軽減できる。【０１３５】
第2の効果は、流通経緯中にたどる拠点数にスケーラビリティを有することである。その理由は、流通経緯中にたどる拠点数に無関係な定数(署名サイズ)で、流通経緯情報を表現できるからである。【０１３６】
第3の効果は、無線ICタグ1の価格を低く抑えられることである。その理由は、第2の効果の理由と同等であり、書き込みメモリ領域を多量に実装する必要がないからである。これによって、流通用途に大量に使用することが容易になる。【０１３７】
第4の効果は、流通経緯中の各段階のリーダライタや悪意のある第3者における流通経緯情報の偽造および改竄を検知できることにある。その理由は、流通経緯を証明する署名が、流通経緯中の拠点全ての公開鍵を用いて検証することが可能だからである。特に、初期値u0に無線IDタグ1のROM部11に記憶してある当該無線IDタグ固有のIDを用いる場合、ROM部11のデータが不正に改ざんできないことを前提にできるのであれば、RAM部12の流通経緯情報を不正に他の無線IDタグのRAM部12にコピーした場合も検知できる。【０１３８】
『第3の実施の形態』
次に本発明の第3の実施の形態について、図面を参照して詳細に説明する。【０１３９】
図15を参照すると、本発明の第3の実施の形態にかかる流通経緯認証システムは、無線ICタグ1がRAM部12の代わりにRAM部12Aを備え、各リーダライタ2−1〜2−nが署名作成部22および署名検証部23の代わりに署名作成部22Bおよび署名検証部23Bを備えている点で図1の第1の実施の形態にかかる流通経緯認証システムと装置し、その他の点は第1の実施の形態と同じである。【０１４０】
無線ICタグ1におけるRAM部12Ｂは、書き込み可能なメモリサイズが有限であり、当該メモリサイズに収まる容量s’で表現可能な流通経緯情報uiと補助情報viの組(ui,vi)を保持する。【０１４１】
流通経緯情報uiは、第1の実施の形態における流通経緯情報uiと同じであり、1番目からi番目までの拠点を経緯したことを表す。流通経緯情報uiの初期値は、どこも経緯していないことを表すu0であり、u0には、所定値たとえば0、または、無線ICタグ1のROM部11に記憶された当該無線ICタグ固有のID値が設定される。【０１４２】
補助情報viは、1番目からi-1番目までの拠点を経緯したことを表す流通経緯情報ui-1に所定のハッシュ関数を適用して生成された情報である。補助情報viの初期値は流通経緯情報uiの初期値と同じであり、所定値たとえば0、または、無線ICタグ1のROM部11に記憶された当該無線ICタグ固有のID値である。このような補助情報viを流通経緯情報uiに添えることで、後述するように流通経緯情報uiの簡易な検証が可能になる。【０１４３】
署名作成部22Bは、無線ICタグ1とリーダライタの送受信部13、24を介して得られた、無線ICタグ1のRAM部12に保持されている流通経緯情報ui-1と補助情報vi-1の組のうちの流通経緯情報ui-1に対して、鍵管理部21で管理している自リーダライタの秘密鍵diとRSAモジュラスniとを用いて、署名作成処理を行って新たな流通経緯情報uiを作成すると同時に、流通経緯情報ui-1から新たな補助情報viを作成し、作成したuiとviの組を新たな流通経緯情報uiと補助情報viの組として、無線ICタグ1とリーダライタの送受信部13、24を介して無線ICタグ1のRAM部12Ｂに保持されている流通経緯情報ui-1と補助情報vi-1の組を置き換える。【０１４４】
署名検証部23Ｂは、無線ICタグ1とリーダライタの送受信部13、24を介して得られた、無線ICタグ1のRAM部12に保持されている流通経緯情報ui-1を検証する手段である。第1の実施の形態における署名検証部23は、流通経緯情報ui-1に対して、各リーダライタの公開鍵pki-1,…, pk1を用いて、自リーダライタの拠点に到る経緯を逆順に検証していき、最終的にu0が得られるところまでさかのぼって検証できれば、自リーダライタの拠点に到るまでの全てのリーダライタを正しく経緯してきたものと判断したが、本実施の形態の署名検証部23Ｂは、補助情報vi-1を使って簡易な検証を行う。つまり、流通経緯情報ui-1に対して、自リーダライタの一つ前に署名したリーダライタが正しく署名したかどうかを、公開鍵pki-1を用いて検証し、検証結果のハッシュ値が補助情報vi-1と等しければ、1つ前のリーダライタから正しく経緯してものと判断する。【０１４５】
次に、無線ICタグ1が付された製品がリーダライタ2−iを経由する際の本実施の形態の動作を図16のシーケンス図を参照して説明する。【０１４６】
まず、リーダライタ2−iは、無線ICタグ1が付された製品が経由されてきた時、送受信部24により無線ICタグ1に対して、無線ICタグ1のRAM部12に格納された流通経緯情報ui-1と補助情報vi-1の組および流通経緯情報ui-1と補助情報vi-1の組の初期値u0,v0として無線ICタグ固有のIDが使用される場合はROM部11のIDを要求する（S111）。無線ICタグ1は、この要求に応じて、RAM部12に格納されている流通経緯情報ui-1と補助情報vi-1の組および要求された場合にはROM部11に格納されているIDを、送受信部13を介してリーダライタ2−iに送信する（S211）。【０１４７】
流通経緯情報ui-1と補助情報vi-1の組を受信した(S112)リーダライタ2−iは、署名検証部23Ｂにより、自リーダライタの1つ前に署名したリーダライタが正しく署名したかどうかを、鍵管理部21に保持されているリーダライタ2−(ｉ−1)の公開鍵pki-1を用いて検証する。（S113）。つまり、公開鍵pki-1を用いて流通経緯情報ui-1を検証した結果のハッシュ値が補助情報vi-1と等しいかどうかを検査する。ここで、v0が得られれば、1つ前のリーダライタ2−(ｉ−1)から正しく経緯してきたものと判断され、v0が得られない場合、不正があったものと検出される（S116）。【０１４８】
検証に成功した場合、リーダライタ2−ｉは、自リーダライタが配置された拠点を正しく経緯したことを証明するために、正しく経緯してきたことが署名検証部23により認証できた流通経緯情報ui-1に対して、署名作成部22Ｂにより、鍵管理部21に保持されている自リーダライタの秘密鍵skiを用いて署名uiを生成すると共に、流通経緯情報ui-1から補助情報viを生成し（S114）、生成された署名値uiと補助情報viの組を新しい流通経緯情報と補助情報の組として過去のui-1とvi-1に上書きするために、無線ICタグ1に送受信部24により送信する（S115）。無線ICタグ1は、送受信部13によりuiとviの組を受信したら（S212）、受信したuiとviの組でRAM部12に格納されているui-1とvi-1の組を上書きする（S213）。【０１４９】
以上と同様な動作は、無線ICタグ1が付加された製品が次の拠点に配送された場合にも実施される。リーダライタ2−ｎが配置された拠点まで正しく経緯した製品の無線ICタグ1の流通経緯情報unに対して、リーダライタ2−ｎの公開鍵pknを用いて署名を検証すれば、補助情報v0が得られることになる。これにより、1つ前の拠点のリーダライタを正しく経緯してきたことを知ることができる。【０１５０】
次に署名作成部22Ｂの詳細を説明する。【０１５１】
署名作成部22ＢによるステップS114における署名作成処理は、リーダライタ2−1〜2−(i-1)の公開鍵pk1,…, pki-1が全て異なること、かつeiが、niよりも大きくかつ((pi-1)(qi-1))と互いに素であることを確認し、Ti = pk1||…||pkiを計算した後、u=a||s(aはkビット長)としたときに(a<ni)?Ei(u)=
((a^{di} mod ni, s||0) : ((a-ni)^{di}
mod ni, s||1)と定義される図4の関数Ei(u)を用いて、無線ICタグ1の有する流通経緯情報ui-1に対して、Ei (H(Ti)○ui-1) を新たな署名uiとして導出すると同時に、新たな補助情報vi=h(ui-1)を計算する。ここで、hは予め定められたハッシュ関数である。第1の実施の形態の署名作成部22との相違点は、新たな補助情報vi=h(ui-1)を計算するとろこである。この署名作成処理の詳しい手順を図17のステップS444〜S449に示す。以下、前後の処理と共に本実施の形態における署名作成処理を図17を参照して詳しく説明する。【０１５２】
図17を参照すると、リーダライタ2−iは、RFIDのRAM部12に格納されている流通経路情報ui-1と補助情報vi-1の組を読み取ると(S441)、所有している鍵の正当性を検証した後(S442)、ui-1が正当であるかを署名検証部23Bで検証する(S443)。【０１５３】
その後、署名作成部22Bにより、現拠点の公開鍵及び上流に位置する拠点の公開鍵からTi = pk1||…||pkiを計算した後(S444)、Ei (H(Ti)○ui-1)、h(ui-1)をリーダライタ2−iでの流通経緯情報ui、補助情報viとして導出する(S445〜S449)。具体的には、まずw=H(Ti)○ui-1を計算し(S445)、wのはじめのセキュリティパラメタkビットをa、残りをsとし(S446)、aがRSAモジュラスniよりも小さいときは(S447でYES)、aに対して秘密鍵diで署名値を計算する(S448)。このときsに制御情報として1ビットの情報0を付け加え、署名値とともに流通経緯情報uiとする。またこのときui-1のハッシュを計算し、補助情報viとする。また、aがRSAモジュラスniよりも大きいときは(S447でNO)、モジュラスniより大きい数に対してはRSA署名を計算できないので、aをniだけ減算したものに対して署名値を計算する(S449)。このときsに制御情報として1ビットの情報1を付け加え、署名値とともに流通経緯情報uiとする。またこのときui-1のハッシュを計算し、補助情報viとする。このように計算したui,viのペアをRFIDのRAM部12に格納されていたui-1,vi-1と置換する(S450)。【０１５４】
このように本実施の形態における署名作成処理は、第1の実施の形態と同様にして署名値uiの導出を行うが、その際に署名対象の署名値ui-1のハッシュ値viを余分に計算しておき、補助情報viとして署名値uiと組にしてRAM部12に書き戻す点が異なる。本実施の形態の方が第1の実施の形態に比べて、書き戻すサイズがハッシュ関数の出力値vi分だけ大きくなる。【０１５５】
次に署名検証部23Ｂの詳細を説明する。【０１５６】
署名検証部23ＢによるステップS113における署名検証処理は、リーダライタ2−iにおいて、Ti = pk1||…||pki、u=a||s||b(aはkビット長、bは1ビット長)としたときに、(b=0)?Di(u)=
((a^{ei} mod ni, s)：((a^{ei} mod ni) + ni, s)と定義される図4に示す関数Di(u)を用いて、h(H(Ti-1)○Di-1(ui-1)) = vi-1が成立すれば署名の検証に成功したと判断する。この署名検証処理の詳しい手順を図18に示す。【０１５７】
図18を参照すると、まずリーダライタ2−iは、RFIDのRAM部12に格納されている流通経路情報ui-1と補助情報vi-1の組を読み取る(S461)。リーダライタ2−iの備えられた拠点の上流に位置する拠点の公開鍵からTi = pk1||…||pki-1を計算した後(S462)、ui-1のはじめのkビットをaに、最後の1ビットをbに、残りのビットをsに記憶し(S463)、bが0ならば(S464でYES)、aをリーダライタ2-(i-1)の公開鍵で検証し、検証結果の末尾にsを加えたものとH(Ti-1)の排他的論理和を計算し、それをwi-1として記憶する(S465)。bが1ならば(S464でNO)、aをリーダライタ2-(i-1)の公開鍵で検証し、検証結果にモジュラスniを加算した後、末尾にsを加えたものとH(Ti-1)の排他的論理和を計算し、それをwi-1として記憶する(S466)。【０１５８】
その後、wi-1のハッシュ関数hによるハッシュ値が補助情報vi-1と等しいかどうかを確かめる(S467)。等しいならば正しい経緯を辿ったことの検証に成功したとし、本処理を完了する(S468)。等しくない場合は検証に失敗したとし、本処理を完了する(S469)。【０１５９】
このように流通経緯中の一つ前の署名装置が信用のおけることを仮定できるのであれば、検証処理を高速化できる。その理由は、第1の実施の形態と異なり、署名検証時の公開鍵による演算処理を高々1度だけで済ますことができるためである。【０１６０】
次に、本実施の形態の変形例として、各リーダライタにおいて無線ICタグ1に書き込むメッセージが外部情報入力部25から入力された場合の署名作成部22Ｂの署名作成処理を図19を参照して説明する。【０１６１】
図19を参照すると、リーダライタ2-iに無線ICタグ1に書き込むメッセージMiが存在する場合、署名作成部22により、T’i = M1||…||Mi||pk1||…||pkiを計算し(S444')、以下、T’iを図17のTiと同様に扱うことにより、Ei
(H(T’i)○ui-1) を新たな流通経緯情報ui、h(ui-1)を補助情報viとして導出する。このように署名を計算する際に、経緯上の各拠点の公開鍵とともに、付与するメッセージも署名対象として入力することで、公開鍵のすり替えだけでなく、各リーダライタで付与するメッセージに対する改竄も検知可能となる。【０１６２】
図20は各リーダライタにおいて無線ICタグ1に書き込むメッセージが存在する場合の署名検証部23Ｂの署名検証処理の手順を示す。T’i = M1||…||Mi-1||pk1||…||pki-1を計算し(S462')、以下、T’iを図18のTiと同様に扱うことにより、Ei
(H(T’i)○ui-1) を新たな流通経緯情報ui、h(ui-1)を補助情報viとして導出する。このように署名を検証する際に、経緯上の各拠点の公開鍵とともに、付与するメッセージも検証対象として入力することによって、公開鍵のすり替え、メッセージの改竄を検出できる。【０１６３】
次に本実施の形態の効果を説明する。【０１６４】
第1の効果は、工場生産品や食品などの一般消費者向けの製品または製品パッケージの流通過程において、ホストコンピュータと通信できないオフライン環境でも、流通経緯を確認することができることである。その理由は、製品に付する書き込み型無線ICタグ1のローカルな記憶領域(RAM部12B)に流通の経緯を管理する情報を持ち、それを必要に応じて参照することで流通経緯を確認することができるからである。これによって、運用コストを軽減できる。【０１６５】
第2の効果は、流通経緯中にたどる拠点数にスケーラビリティを有することである。その理由は、(署名サイズ＋(拠点数)×1ビット+(補助情報サイズ)で、流通経緯の認証に利用する情報を表現できるからである。【０１６６】
第3の効果は、無線ICタグ1の価格を低く抑えられることである。その理由は、第2の効果の理由と同等であり、書き込みメモリ領域を多量に実装する必要がないからである。これによって、流通用途に大量に使用することが容易になる。【０１６７】
第4の効果は、一つ前の拠点が信用のおける拠点であることを仮定できるのであれば、流通経緯中の各段階のリーダライタや悪意のある第3者における流通経緯情報の偽造および改竄の検知に要する署名検証処理を高速化できることである。その理由は、署名検証処理を補助情報を利用して高々1度だけで済ますことが可能だからである。【０１６８】
『第4の実施の形態』
次に本発明の第4の実施の形態について、図面を参照して詳細に説明する。【０１６９】
図21を参照すると、本発明の第4の実施の形態にかかる流通経緯認証システムは、各リーダライタ2−1〜2−nが署名作成部22Bおよび署名検証部23Bの代わりに署名作成部22Cおよび署名検証部23Cを備えている点で図15の第3の実施の形態にかかる流通経緯認証システムと相違し、その他の点は第3の実施の形態と同じである。【０１７０】
署名作成部22Cは、無線ICタグ1とリーダライタの送受信部13、24を介して得られた、無線ICタグ1のRAM部12に保持されている流通経緯情報ui-1と補助情報vi-1の組のうちの流通経緯情報ui-1に対して、鍵管理部21で管理している自リーダライタの秘密鍵diとRSAモジュラスniとを用いて、署名作成処理を行って新たな流通経緯情報uiを作成すると同時に、流通経緯情報ui-1から新たな補助情報viを作成し、作成したuiとviの組を新たな流通経緯情報uiと補助情報viの組として、無線ICタグ1とリーダライタの送受信部13、24を介して無線ICタグ1のRAM部12Ｂに保持されている流通経緯情報ui-1と補助情報vi-1の組を置き換える。ただし、本実施の形態の場合、置き換え前後の流通経緯情報ui、ui-1のサイズは変わらない。【０１７１】
署名検証部23Cは、流通経緯情報ui-1に対して、自リーダライタの一つ前に署名したリーダライタが正しく署名したかどうかを、公開鍵pki-1を用いて検証する。その検証結果のハッシュ値が補助情報vi-1と等しければ、1つ前のリーダライタから正しく経緯してものと判断する。【０１７２】
無線ICタグ1が付された製品がリーダライタ2−iを経由する際の動作は、基本的には第3の実施の形態と同様に、図16のシーケンスに沿って行われる。ただし、ステップS113における署名検証処理とステップS114における署名作成処理の中身が第3の実施の形態と相違する。【０１７３】
次に署名作成部22Cの詳細を説明する。【０１７４】
署名作成部22CによるステップS114における署名作成処理は、リーダライタ2−1〜2−(i-1)の公開鍵pk1,…, pki-1が全て異なること、かつeiが、niよりも大きくかつ((pi-1)(qi-1))と互いに素であることを確認し、Ti = pk1||…||pkiを計算した後、(u<ni）？fi(u)=u^{di}mod ni
： fi(u)=uと定義される図10の関数fi(u)、および、セキュリティパラメタkビット(ただしni<2k)長自然数空間での写像としてφ(u)= (u+ni)mod2kと定義される図10の関数φ(u)を用いて、無線ICタグ1の有する流通経緯情報ui-1に対して、φ-1(fi(φ(fi((H(Ti)○ui-1)))))を新たな流通経緯情報uiとして導出し、また無線ICタグ1の有する流通経緯情報ui-1に対して、h(ui-1)を新たな補助情報viとして導出する。その後、導出した新たな流通経緯情報uiと補助情報viの組は、無線ICタグ1とリーダライタの送受信部13、24を介して無線ICタグ1のRAM部12に保持されている流通経緯情報ui-1と補助情報vi-1の組と置き換えられる。この署名作成処理の詳しい手順を図22のステップS494〜S501に示す。【０１７５】
以下、前後の処理と共に署名作成部22Cによる署名作成処理を図22を参照して詳しく説明する。【０１７６】
図22を参照すると、リーダライタ2−iは、RFIDのRAM部12に格納されている流通経路情報ui-1と補助情報vi-1の組を読み取ると(S491)、所有している鍵の正当性を検証した後(S492)、ui-1が正当であるかを署名検証部23Cで検証する(S492)。【０１７７】
その後、署名作成部22Cにより、現拠点の公開鍵及び上流に位置する拠点の公開鍵からTi = pk1||…||pkiを計算した後(S494)、署名対象としてw:=H(Ti)○ui-1を計算し(S495)、wがRSAモジュラスniよりも小さいときは(S496でYES)、そのまま秘密鍵diでwの署名を計算した値に、2kをモジュラスとするniの加算を行い、結果をw’とする(S497)。大きいときは(S496でNO)、モジュラスより大きい数に対してはRSA署名を計算できないので、wに対して署名計算を行わず、その値に対して直接2kをモジュラスとするniの加算を行い、結果をw’とする(S498)。【０１７８】
次にw'がRSAモジュラスniよりも小さいときは(S499でYES)、秘密鍵diでw’の署名を計算した値から、2kをモジュラスとするniの減算を行い、その値をリーダライタ2−iでの流通経緯情報uiとする(S500)。この際、流通経路情報ui-1にハッシュ関数hを適用し、h(ui-1)をリーダライタ2−iでの補助情報viとする。大きいときは(S499でNO)、モジュラスより大きい数に対してはRSA署名を計算できないので、w’に対して署名計算を行わず、その値から直接2kをモジュラスとするniの減算を行い、その値をリーダライタiでの流通経緯情報uiとする(S501)。この際、ステップS500と同様にh(ui-1)をリーダライタ2−iでの補助情報viとする。このように計算したuiとviをRFIDのRAM部12に格納されていたui-1とvi-1と置換する(S502)。【０１７９】
このように、リーダライタ2−iは、基本的には、無線IDタグ1に既に書き込まれている流通経路情報ui-1に対して、自リーダライタの秘密鍵diで署名を付けるが、第3の実施の形態と異なり、制御ビットをつける代わりに、モジュラスniを超える数の署名を計算する際は、モジュラスniだけ大きいほうに写像させる関数をかけた後、署名計算をし、その後、その逆写像をかけて同じくモジュラスniだけ小さいほうに写像する。また、第3の実施の形態と同様に、署名を計算する際に、経緯上の各拠点の公開鍵を署名対象として入力することによって、公開鍵のすり替えを防止し、更に流通経緯情報uiの導出を行う際に署名対象の流通経緯情報ui-1のハッシュ値viを余分に計算しておき、補助情報viとして流通経緯情報uiと組にしてRAM部12に書き戻す。【０１８０】
次に署名検証部23Cを詳細に説明する。【０１８１】
署名検証部23CによるステップS113における署名検証処理は、リーダライタ2−iにおいて、Ti-1 = pk1||…||pki-1を計算し、(u<ni)?gi(u)=u^{ei}
mod ni： gi(u)=uと定義される図10の関数gi(u)と上記写像φ(u)とを用いて、h(H(Ti-1○φ-1(gi-1(φ(gi-1(ui-1)))))) = vi-1が成立すれば署名の検証に成功したとする。この署名検証処理の詳しい手順を図23に示す。【０１８２】
図23を参照すると、まずリーダライタiは、RFIDのRAM部12に格納されている流通経路情報uiと補助情報viの組を読み取る(S511)。次に、リーダライタ2−iの備えられた拠点の上流に位置する各拠点の公開鍵からTi-1 = pk1||…||pki-1を計算した後(S512)、検証対象としてw:=H(Ti-1)○ui-1を計算し(S513)、wがRSAモジュラスni-1よりも小さいときは(S514でYES)、そのまま公開鍵ei-1でwの署名を検証した値に、2kをモジュラスとするni-1の加算を行い、結果をw’とする(S515)。【０１８３】
一方、大きいときは(S514でNO)、モジュラスより大きい数に対してはRSA署名を検証できないので、wに対して検証処理を行わず、その値に対して直接2kをモジュラスとするni-1の加算を行い、結果をw’とする(S516)。次にw'がRSAモジュラスniよりも小さいときは(S517でYES)、公開鍵ei-1でw’の署名を検証した値から、2kをモジュラスとするni-1の減算を行い、その値をw”とする(S518)。大きいときは(S517でNO)、モジュラスより大きい数に対してはRSA署名を検証できないので、w’に対して検証処理を行わず、その値に対して直接2kをモジュラスとするni-1の減算を行い、結果をw”とする(S519)。【０１８４】
そして、W”のハッシュ値が流通経緯情報vi-1と等しいかどうかを確かめる(S520)。等しいならば正しい経緯を辿ったことの検証に成功したとし、本処理を完了する(S521)。等しくない場合は検証に失敗したとし、本処理を完了する(S522)。【０１８５】
このように、署名検証時は、写像関数でモジュラスだけ大きいほうにずらして検証処理し、再び逆写像する処理を行って経緯中の1つ前の拠点の公開鍵による検証で補助情報vi-1が得られたら正しい経緯をたどってきたと判断するものであり、署名検証時の公開鍵による演算処理を高々1度だけで済ますことが可能なため、検証処理を高速化できる。また署名を検証する際に、経緯上の各拠点の公開鍵を検証対象として入力することによって、公開鍵のすり替えを検出できる。【０１８６】
次に、本実施の形態の変形例として、各リーダライタにおいて無線ICタグ1に書き込むメッセージが外部情報入力部25から入力された場合の署名作成部22Cの署名作成処理を図24を参照して説明する。【０１８７】
図24を参照すると、リーダライタ2−iに無線ICタグ1に書き込むメッセージMiが存在する場合、署名作成部22Cにより、T'i = M1||…||Mi||pk1||…||pkiを計算し(S494')、以下、T’iを図22のTiと同様に扱うことにより、φ-1(fi(φ(fi((H(T'i)○ui-1)))))を新たな流通経緯情報uiとして導出し、また無線ICタグ1の有する流通経緯情報ui-1に対して、h(ui-1)を新たな補助情報viとして導出する。このように署名を計算する際に、経緯上の各拠点の公開鍵とともに、付与するメッセージも署名対象として入力することで、公開鍵のすり替えだけでなく、各リーダライタで付与するメッセージに対する改竄も検知可能となる。【０１８８】
図25は各リーダライタにおいて無線ICタグ1に書き込むメッセージが存在する場合の署名検証部23Cの署名検証処理の手順を示す。T'i-1 = M1||…||Mi-1||pk1||…||pki-1を計算し(S512')、以下、T'i-1を図23のTi-1と同様に扱うことにより、h(H(T'i-1○φ-1(gi-1(φ(gi-1(ui-1)))))) = vi-1が成立すれば署名の検証に成功したとする。このように署名を検証する際に、経緯上の各拠点の公開鍵とともに、付与するメッセージも検証対象として入力することによって、公開鍵のすり替え、メッセージの改竄を検出できる。【０１８９】
次に本実施の形態の効果を説明する。【０１９０】
第1の効果は、工場生産品や食品などの一般消費者向けの製品または製品パッケージの流通過程において、ホストコンピュータと通信できないオフライン環境でも、流通経緯を確認することができることである。その理由は、製品に付する書き込み型無線ICタグ1のローカルな記憶領域(RAM部12B)に流通の経緯を管理する情報を持ち、それを必要に応じて参照することで流通経緯を確認することができるからである。これによって、運用コストを軽減できる。【０１９１】
第2の効果は、流通経緯中にたどる拠点数にスケーラビリティを有することである。その理由は、流通経緯中にたどる拠点数に無関係な定数(署名サイズ)+補助情報サイズで、流通経緯の認証に利用する情報を表現できるからである。【０１９２】
第3の効果は、無線ICタグ1の価格を低く抑えられることである。その理由は、第2の効果の理由と同等であり、書き込みメモリ領域を多量に実装する必要がないからである。これによって、流通用途に大量に使用することが容易になる。【０１９３】
第4の効果は、一つ前の拠点が信用のおける拠点であることを仮定できるのであれば、流通経緯中の各段階のリーダライタや悪意のある第3者における流通経緯情報の偽造および改竄の検知に要する署名検証処理を高速化できることである。その理由は、署名検証処理を補助情報を利用して高々1度だけで済ますことが可能だからである。【０１９４】
『その他の実施の形態』
以上、本発明を幾つかの実施の形態を挙げて説明したが、本発明は以上の実施の形態にのみ限定されず、その他各種の付加変更が可能である。例えば、前述の各実施の形態におけるリーダライタは、署名する前に署名対象の検証を行ったが、その検証を省略するようにしても良く、その場合には署名検証部を省略することができる。また、無線ICタグが付された製品が正しい経路を経由したものであるかを検証するだけで、新たな署名を行わないリーダライタも考えられる。その場合には署名作成部を省略できる。さらに、リーダライタは、その有する機能をハードウェア的に実現することは勿論、コンピュータとプログラムとで実現することができる。プログラムは、磁気ディスクや半導体メモリ等のコンピュータ可読記録媒体に記録されて提供され、コンピュータの立ち上げ時などにコンピュータに読み取られ、そのコンピュータの動作を制御することにより、そのコンピュータを前述した各実施の形態におけるリーダライタの署名作成部、署名検証部および送受信部として機能させる。
【産業上の利用可能性】
【０１９５】
次に本発明の利用分野について説明する。【０１９６】
経済活動における流通業者を考える。すなわち、農林水産物あるいは工業製品の生産者と、製品を購入して消費/利用する消費者との間に存在する、製品の仕分け、加工、輸送、保管、販売などに関係する業者である。ここで、流通製品として冷凍マグロなどの冷凍食品を、流通業者として冷凍コンテナ業者、トラック業者、冷凍庫を備える倉庫業者、加工者、販売者を考える。これらの流通製品は商品が生産者から消費者に届けられるまで、契約にのっとり、流通業者を順に経ていく。このとき、本発明によって、生産者や個々の流通業者が、彼等と契約関係にある流通業者を正しく経てきたかどうかを確認することができる。このとき、流通業者間で共通のホストコンピュータを必要とせず、各流通業者はホストコンピュータに通信するインフラも必要としない。また、書き込み型無線ICタグに実装する書き込み可能なメモリ容量も、既存の書き込み型無線ICタグが保持する数百バイト〜1Ｋバイト程度の、高々1つの署名を記録するのに十分なメモリ容量さえあれば、流通経緯情報を格納するのに十分であり、特別に書き込み容量を多く実装した高コストな無線ICタグを利用せずとも、経緯情報の管理が可能である。また、実運用時には、情報の改竄や偽造に対応しなければならないが、本方式では、書き込んだデータの改竄や、偽造も検知可能であり、改竄防止のために耐タンパ性を無線ICタグのメモリに備えさせることも必要としない。また、署名付与、検証の演算は、全てリーダライタ側で行われるため、無線ICタグ側に特別な演算装置を必要としない。以上によって、低コストで流通経緯の認証が実現できる。【０１９７】
また、流通時に、配送中の衝撃や温度などの情報が何らかの手段で取れれば、それらをメッセージとして無線ICタグに書き込んで配送管理をすることも考えられる。流通経緯情報を付す際に、これらのメッセージ情報を加味して署名を計算しておくことで、これらの情報の改ざん検知も同時に実現でき、なおかつ経緯が把握できるので、不良品発見などのトラブルの際に、不具合の内容と無線ICタグの記録情報から原因を推定することがたやすくなり、トラブルの早期解決につながる。【０１９８】
また、パーソナルコンピュータや車などの工業製品のパーツ修理や、書籍やCＤなどのリサイクルを考える。例えば、前者の工業製品のパーツ修理の場合、修理業者として、本製品の修理を専門に行う店舗や、工場が考えられる。このとき、同じ店舗で常に修理するのであれば、修理状況を店舗のホストコンピュータで逐次記録しておくことで、修理履歴を管理することができ、状況が明確になる。しかし、一般に修理する箇所・内容や、製品の利用者の都合などで、常に同じ店舗に持ち込まれるとは限らないことがある。別の店舗同士で、ホストサーバを共通に運用している状況は一般に考えにくく、この場合、ユーザが自ら修理状況を管理することが必要になる。従来、車などは整備手帳の存在が考えられ、これがあれば修理時履歴の管理は可能であったが、整備手帳自体を管理する手間があった。また整備手帳のような書類が存在しない細かい部品などの場合は、ユーザがそれに変わるものを用意して管理する必要があった。これを各製品に付する無線ICタグで管理することで、ユーザが意識的に行わずとも、製品、さらにはそれらを構成するパーツごとの修理状況の管理が行えるようになる。同様に、書籍やCＤのリサイクル時に、中古売買店舗などで売買の履歴を管理することで、どの程度二次流通が行われたかを知ることができ、商品の販売に活かすことができる。このとき、利用者側でデータを管理するために考えられうる情報の改竄や偽造にも本発明では検知可能である。また製品に付する無線ICタグに高コストなメモリを搭載する必要もないので運用コストを抑えられる。このとき、各店舗や工場の公開鍵はお互いに事前に共有されていない可能性が高いが、これは必要に応じて公開鍵管理局（CA）から得ることができる。一般に公開鍵管理局はＰＫＩのフレームワークの中で共通運用されている。【０１９９】
また、どの経緯で製品が流通してきたかが分からないことがある。このときは、所持する公開鍵で考えられうる流通経緯に関して全て検証を行い、検証をパスした経緯があれば、その経緯をたどってきたとみなしてよい。もちろん、予め経緯を知るための情報を無線ICタグに書き込んでおいて、その順に検証してもよい。このとき経緯を知るための情報としては各リーダライタの製造番号(ID)などを利用できる。これらのIDに対応する公開鍵を導出する機構を持つことで、経緯情報の検証を効率化してもよい。
【図１】
0004993076.tif 000002
【図２】
0004993076.tif 000003
【図３】
0004993076.tif 000004
【図４】
0004993076.tif 000005
【図５】
0004993076.tif 000006
【図６】
0004993076.tif 000007
【図７】
0004993076.tif 000008
【図８】
0004993076.tif 000009
【図９】
0004993076.tif 000010
【図１０】
0004993076.tif 000011
【図１１】
0004993076.tif 000012
【図１２】
0004993076.tif 000013
【図１３】
0004993076.tif 000014
【図１４】
0004993076.tif 000015
【図１５】
0004993076.tif 000016
【図１６】
0004993076.tif 000017
【図１７】
0004993076.tif 000018
【図１８】
0004993076.tif 000019
【図１９】
0004993076.tif 000020
【図２０】
0004993076.tif 000021
【図２１】
0004993076.tif 000022
【図２２】
0004993076.tif 000023
【図２３】
0004993076.tif 000024
【図２４】
0004993076.tif 000025
【図２５】
0004993076.tif 000026