(57)【要約】【課題】記録された情報へのアクセスをユーザ毎に制御可能な光学コードを提供する。【解決手段】規則的に配置された複数のモジュールＵの各々は、Ｎビットの情報を表す。複数のモジュールＵが表す全体の情報は、Ｎ個の階層（Ｌ０，Ｌ１，…）に分かれており、１つのモジュールＵが表すＮビットの情報は、Ｎ個の階層の各々に１ビットずつ含まれている。Ｎ個の階層は、１以上のユーザと一対一に対応する１以上のユーザ層と、暗号化された秘匿情報を含む１以上の暗号化層とを含む。１のユーザに対応する１つのユーザ層は、１のユーザを識別するためのユーザＩＤと、１のユーザが所有する暗号鍵により暗号化された少なくとも１つ階層情報とを含む。１つの階層情報は、１つの暗号化層を識別するための階層ＩＤと、１つの暗号化層に含まれる暗号化された秘匿情報を復号するための復号情報とを含む。【選択図】図４
2020144796.tif 000002
【特許請求の範囲】
【請求項１】
規則的に配置された複数のモジュールによって光学的に読み取り可能な情報を表す光学コードであって、
前記複数のモジュールの各々は、光学的に読み取り可能なＮビット（Ｎは２以上の整数を示す。）の情報を表しており、
前記複数のモジュールが表す全体の情報は、Ｎ個の階層に分かれており、
１つの前記モジュールが表す前記Ｎビットの情報は、前記Ｎ個の階層の各々に１ビットずつ含まれており、
前記Ｎ個の階層は、
１以上のユーザと一対一に対応する１以上のユーザ層と、
暗号化された秘匿情報を含む１以上の暗号化層とを含み、
１の前記ユーザに対応する１つの前記ユーザ層は、
前記１のユーザを識別するためのユーザＩＤと、
前記１のユーザが所有する暗号鍵により暗号化された少なくとも１つ階層情報とを含み、
１つの前記階層情報は、
１つの前記暗号化層を識別するための階層ＩＤと、
前記１つの暗号化層に含まれる前記暗号化された秘匿情報を復号するための復号情報とを含む、
光学コード。
【請求項２】
規則的に配置された複数のモジュールによって光学的に読み取り可能な情報を表す光学コードであって、
前記複数のモジュールの各々は、光学的に読み取り可能なＮビット（Ｎは３以上の整数を示す。）の情報を表しており、
前記複数のモジュールが表す全体の情報は、Ｎ個の階層に分かれており、
１つの前記モジュールが表す前記Ｎビットの情報は、前記Ｎ個の階層の各々に１ビットずつ含まれており、
前記Ｎ個の階層は、
１以上のユーザと一対一に対応する１以上のユーザ情報を含んだ共通層と、
前記１以上のユーザと一対一に対応する１以上のユーザ層と、
暗号化された秘匿情報を含む１以上の暗号化層とを含み、
１の前記ユーザに対応する１つの前記ユーザ情報は、
前記１のユーザを識別するためのユーザＩＤと、
前記１のユーザに対応する１の前記ユーザ層を識別するための階層ＩＤとを含み、
１の前記ユーザに対応する１つの前記ユーザ層は、
前記１のユーザが所有する暗号鍵により暗号化された少なくとも１つの階層情報を含み、
１つの前記階層情報は、
１つの前記暗号化層を識別するための階層ＩＤと、
前記１つの暗号化層に含まれる前記暗号化された秘匿情報を復号するための復号情報とを含む、
光学コード。
【請求項３】
前記暗号鍵は、前記階層情報を構成する複数ビットにおける各ビットの値を反転させるか否か指定する情報である、
請求項１又は２に記載の光学コード。
【請求項４】
前記復号情報は、前記暗号化された前記秘匿情報を構成する複数のビットにおける各ビットの値を反転させるか否か指定する情報である、
請求項１〜３のいずれか一項に記載の光学コード。
【請求項５】
規則的に配置された複数のモジュールによって光学的に読み取り可能な情報を表す光学コードであって、
前記複数のモジュールの各々は、光学的に読み取り可能なＮビット（Ｎは２以上の整数を示す。）の情報を表しており、
前記複数のモジュールが表す全体の情報は、Ｎ個の階層に分かれており、
１つの前記モジュールが表す前記Ｎビットの情報は、前記Ｎ個の階層の各々に１ビットずつ含まれており、
前記Ｎ個の階層は、
１以上のユーザと一対一に対応する１以上のユーザ情報を含んだ共通層と、
前記１以上のユーザと一対一に対応する１以上の暗号化層とを含み、
１つの前記ユーザ情報は、
１の前記ユーザを識別するためのユーザＩＤと、
前記１のユーザに対応する１つの前記暗号化層を識別するための階層ＩＤとを含み、
１つの前記暗号化層は、
１の前記ユーザが所有する暗号鍵により暗号化された秘匿情報を含む、
光学コード。
【請求項６】
前記秘匿情報を構成する複数のビットは、前記複数のモジュールの少なくとも一部と一対一に対応しており、
前記暗号鍵は、前記秘匿情報を構成する複数ビットにおける各ビットの値を反転させるか否か指定する情報である、
請求項５に記載の光学コード。
【請求項７】
前記複数のモジュールの少なくとも一部は、それぞれＭ個のモジュールからなる複数のブロックに区分されており、
前記複数の階層は、第１パリティ層を含み、
前記第１パリティ層は、前記複数のブロックと一対一に対応する複数の第１パリティ情報を含み、
１つの前記ブロックに対応する１つの前記第１パリティ情報は、前記１つのブロックを構成する前記Ｍ個のモジュールと一対一に対応するＭ個の第１パリティビットを含み、
１つの前記第１パリティビットは、前記１つの第１パリティビットに対応する１つの前記モジュールが表す前記Ｎビットの情報のうちのＫビット（Ｋは１より大きくＮより小さい整数を示す。）の情報についてのパリティビットである、
請求項１〜６のいずれか一項に記載の光学コード。
【請求項８】
前記複数の階層の各々は、前記複数のブロックと一対一に対応する複数のコード語を含んでおり、
１つの前記ブロックに対応する１つの前記コード語は、前記１つのブロックを構成する前記Ｍ個のモジュールと一対一に対応するＭビットの情報を含み、
前記複数の階層は、第２パリティ層を含み、
前記第２パリティ層は、前記複数のブロックと一対一に対応する複数の第２パリティ情報を含み、
前記複数の第２パリティ情報の各々は、前記Ｋビットの情報を含むＫ個の階層と一対一に対応するＫ個の第２パリティビットを含んでおり、
１つの前記ブロックに対応する１つの前記第２パリティ情報に含まれる１つの前記第２パリティビットは、前記１つのブロックに対応する１つの前記コード語であって、前記１つの第２パリティビットに対応する１つの前記階層に属した当該１つのコード語に含まれる前記Ｍビットの情報についてのパリティビットである、
請求項７に記載の光学コード。
【請求項９】
１つの前記ブロックに対応する１つの前記第２パリティ情報は、前記１つのブロックに対応する１つの前記第１パリティ情報に含まれる前記Ｍ個の第１パリティビットからなるＭビットの情報についての第３パリティビットを更に含む、
請求項８に記載の光学コード。
【請求項１０】
１つの前記第２パリティ情報は、前記１つの第２パリティ情報に含まれる前記Ｋ個の第２パリティビットと前記第３パリティビットとからなる（Ｋ＋１）ビットの情報についての第４パリティビットを更に含む、
請求項９に記載の光学コード。
【請求項１１】
請求項１に記載の光学コードを生成する光学コード生成方法であって、
前記Ｎ個の階層に記録する情報をそれぞれ取得する情報取得工程と、
前記情報取得工程において取得した情報に基づいて、前記複数のモジュールの各々に与える光学的な構成を判定するモジュール構成判定工程とを有し、
前記情報取得工程は、
前記１以上の暗号化層と一対一に対応する１以上の前記復号情報を生成する工程と、
前記１以上のユーザ層に記録する情報を取得する工程と、
前記１以上の暗号化層に記録する情報を取得する工程とを含み、
１つの前記ユーザ層に記録する情報を取得する工程は、
少なくとも１つの前記暗号化層に対応する少なくとも１つの前記階層情報を、前記少なくとも１つの暗号化層を識別するための少なくとも１つの前記階層ＩＤと、前記少なくとも１つの暗号化層に対応する少なくとも１つの前記復号情報とに基づいて生成する工程と、
生成した前記少なくとも１つの階層情報を、１つの前記ユーザＩＤに関連付けられた前記暗号鍵により暗号化する工程と、
暗号化した前記少なくとも１つの階層情報と、前記１つのユーザＩＤとを、前記１つのユーザ層に記録する情報として取得する工程とを含み、
１つの前記暗号化層に記録する情報を取得する工程は、
１つの前記暗号化層に記録する情報として、前記秘匿情報を取得する工程と、
取得した前記秘匿情報を、前記１つの暗号化層に対応する前記復号情報によって復号し得るように暗号化する工程とを含む、
光学コード生成方法。
【請求項１２】
請求項２に記載の光学コードを生成する光学コード生成方法であって、
前記Ｎ個の階層に記録する情報をそれぞれ取得する情報取得工程と、
前記情報取得工程において取得した情報に基づいて、前記複数のモジュールの各々に与える光学的な構成を判定するモジュール構成判定工程とを有し、
前記情報取得工程は、
前記１以上の暗号化層と一対一に対応する１以上の前記復号情報を生成する工程と、
前記共通層に記録する情報を取得する工程と、
前記１以上のユーザ層に記録する情報を取得する工程と、
前記１以上の暗号化層に記録する情報を取得する工程とを含み、
前記共通層に記録する情報を取得する工程は、
前記１以上のユーザに対応する前記１以上のユーザ情報を生成する工程と、
生成した前記１以上のユーザ情報を、前記共通層に記録する情報として取得する工程とを含み、
１つの前記ユーザ層に記録する情報を取得する工程は、
１つの前記ユーザ情報に含まれる前記階層ＩＤに基づいて、前記１つのユーザ層を特定する工程と、
少なくとも１つの前記暗号化層に対応する少なくとも１つの前記階層情報を、前記少なくとも１つの暗号化層を識別するための少なくとも１つの前記階層ＩＤと、前記少なくとも１つの暗号化層に対応する少なくとも１つの前記復号情報とに基づいて生成する工程と、
生成した前記少なくとも１つの前記階層情報を、特定した前記１つのユーザ層に記録する情報として取得する工程と、
取得した前記少なくとも１つの前記階層情報を、前記１のユーザ情報に含まれる前記ユーザＩＤに関連付けられた前記暗号鍵により暗号化する工程とを含み、
１つの前記暗号化層に記録する情報を取得する工程は、
１つの前記暗号化層に記録する情報として、前記秘匿情報を取得する工程と、
取得した前記秘匿情報を、前記１つの暗号化層に対応する前記復号情報によって復号し得るように暗号化する工程とを含む、
光学コード生成方法。
【請求項１３】
請求項５に記載の光学コードを生成する光学コード生成方法であって、
前記Ｎ個の階層に記録する情報をそれぞれ取得する情報取得工程と、
前記情報取得工程において取得した情報に基づいて、前記複数のモジュールの各々に与える光学的な構成を判定するモジュール構成判定工程とを有し、
前記情報取得工程は、
前記共通層に記録する情報を取得する工程と、
前記１以上の暗号化層に記録する情報を取得する工程とを含み、
前記共通層に記録する情報を取得する工程は、
前記１以上のユーザに対応する前記１以上のユーザ情報を生成する工程と、
生成した前記１以上のユーザ情報を、前記共通層に記録する情報として取得する工程とを含み、
１つの前記暗号化層に記録する情報を取得する工程は、
前記１つの暗号化層に記録する情報として、前記秘匿情報を取得する工程と、
前記１つの暗号化層を識別するための前記階層ＩＤが含まれた前記ユーザ情報に基づいて、１つの前記ユーザＩＤに関連づけられた前記暗号鍵を取得する工程と、
取得した前記秘匿情報を、取得した前記暗号鍵により暗号化する工程とを含む、
光学コード生成方法。
【請求項１４】
前記光学的な構成は、前記モジュールの全体に与える色に関する構成、又は、前記モジュールを区分する複数の領域の各々に与える色に関する構成である、
請求項１１〜１３のいずれか一項に記載の光学コード生成方法。
【請求項１５】
請求項１１〜１４のいずれか一項に記載の光学コード生成方法をコンピュータに実行させるためのプログラム。
【請求項１６】
請求項１に記載の光学コードが表す情報を読み取る光学コード読み取り方法であって、
前記複数のモジュールを含む画像から、前記複数のモジュールの各々が表す前記Ｎビットの情報を読み取る工程と、
前記複数のモジュールの各々が表す前記Ｎビットの情報に基づいて、前記Ｎ個の階層に含まれた情報をそれぞれ取得する工程と、
前記１以上のユーザ層から、１つの前記ユーザＩＤが含まれた１つの前記ユーザ層を特定する工程と、
特定した前記１つのユーザ層に含まれる前記暗号化された少なくとも１つの階層情報を、前記１つのユーザＩＤに関連付けられた前記暗号鍵に基づいて復号する工程と、
復号した前記少なくとも１つの階層情報に基づいて、少なくとも１つの前記暗号化階層に含まれる前記秘匿情報を復号する工程とを有し、
１つの前記暗号化階層に含まれる前記秘匿情報を復号する工程は、
復号した１つの前記階層情報に含まれる前記階層ＩＤに基づいて、１つの前記暗号化層を特定する工程と、
特定した前記１つの暗号化層に含まれる前記秘匿情報を、前記復号した１つの階層情報に含まれる前記復号情報に基づいて復号する工程とを含む、
光学コード読み取り方法。
【請求項１７】
請求項２に記載の光学コードが表す情報を読み取る光学コード読み取り方法であって、
前記複数のモジュールを含む画像から、前記複数のモジュールの各々が表す前記Ｎビットの情報を読み取る工程と、
前記複数のモジュールの各々が表す前記Ｎビットの情報に基づいて、前記Ｎ個の階層に含まれた情報をそれぞれ取得する工程と、
前記共通層に含まれる前記１以上のユーザ情報から、１つの前記ユーザＩＤが含まれた１つの前記ユーザ情報を特定する工程と、
特定した前記１つのユーザ情報に含まれる前記階層ＩＤから、１つの前記ユーザ層を特定する工程と、
特定した前記１つのユーザ層に含まれる前記暗号化された少なくとも１つの階層情報を、前記１つのユーザＩＤに関連付けられた前記暗号鍵に基づいて復号する工程と、
復号した前記少なくとも１つの階層情報に基づいて、少なくとも１つの前記暗号化階層に含まれる前記秘匿情報を復号する工程とを有し、
１つの前記暗号化階層に含まれる前記秘匿情報を復号する工程は、
復号した１つの前記階層情報に含まれる前記階層ＩＤに基づいて、１つの前記暗号化層を特定する工程と、
特定した前記１つの暗号化層に含まれる前記秘匿情報を、前記復号した１つの階層情報に含まれる前記復号情報に基づいて復号する工程とを含む、
光学コード読み取り方法。
【請求項１８】
請求項５に記載の光学コードが表す情報を読み取る光学コード読み取り方法であって、
前記複数のモジュールを含む画像から、前記複数のモジュールの各々が表す前記Ｎビットの情報を読み取る工程と、
前記複数のモジュールの各々が表す前記Ｎビットの情報に基づいて、前記Ｎ個の階層に含まれた情報をそれぞれ取得する工程と、
前記共通層に含まれる前記１以上のユーザ情報から、１つの前記ユーザＩＤが含まれた１つの前記ユーザ情報を特定する工程と、
特定した前記１つのユーザ情報に含まれる前記階層ＩＤに基づいて、１つの前記暗号化層を特定する工程と、
特定した前記１つの暗号化層に含まれる前記秘匿情報を、前記１つのユーザＩＤに関連付けられた前記暗号鍵に基づいて復号する工程と
を有する光学コード読み取り方法。
【請求項１９】
請求項１６〜１８のいずれか一項に記載の光学コード読み取り方法をコンピュータに実行させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、光学的に読み取り可能な情報を表す光学コード、光学コードの生成方法とそのプログラム、並びに、光学コードの読み取り方法とそのプログラムに関するものである。
【背景技術】
【０００２】
光学的に読み取り可能な情報を表す光学コードとして、バーコードなどの一次元コードやＱＲコード（登録商標）などの二次元コードが知られている。また、近年では、白と黒の色のみからなる従来の二次元コードとの互換性を保ちつつ、白と黒の他に複数種類の色を用いることによって記憶容量を大幅に増大させたカラー二次元コードが実用化されている（例えば下記の特許文献１を参照）。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２０１８−８１６５８号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
上述したカラー二次元コードのように記憶容量の大きな光学コードは、商品等の流通履歴を管理するトレーサビリティの分野への応用が期待される。しかしながら、トレーサビリティの分野において光学コードを使用する場合、光学コードに記録される情報へのアクセスを、流通の各段階において任意に制限できることが好ましい。例えば、仲卸業者や小売店において参照される品質管理用の詳細な情報は、多くの場合、末端の消費者に開示する必要がない。また、流通履歴に関する情報の中には、セキュリティ等の観点から、流通の段階に応じてアクセスを制限することが好ましいものもある。
【０００５】
本発明はかかる事情に鑑みてなされたものであり、その目的は、記録される情報へのアクセスをユーザ毎に制御することが可能な光学コード、光学コードの生成方法及びプログラム、並びに、光学コードの読み取り方法及びプログラムを提供することにある。
【課題を解決するための手段】
【０００６】
本発明の第１の観点に係る光学コードは、規則的に配置された複数のモジュールによって光学的に読み取り可能な情報を表す光学コードであって、前記複数のモジュールの各々は、光学的に読み取り可能なＮビット（Ｎは２以上の整数を示す。）の情報を表しており、前記複数のモジュールが表す全体の情報は、Ｎ個の階層に分かれており、１つの前記モジュールが表す前記Ｎビットの情報は、前記Ｎ個の階層の各々に１ビットずつ含まれており、前記Ｎ個の階層は、１以上のユーザと一対一に対応する１以上のユーザ層と、暗号化された秘匿情報を含む１以上の暗号化層とを含み、１の前記ユーザに対応する１つの前記ユーザ層は、前記１のユーザを識別するためのユーザＩＤと、前記１のユーザが所有する暗号鍵により暗号化された少なくとも１つ階層情報とを含み、１つの前記階層情報は、１つの前記暗号化層を識別するための階層ＩＤと、前記１つの暗号化層に含まれる前記暗号化された秘匿情報を復号するための復号情報とを含む。
【０００７】
本発明の第２の観点に係る光学コード生成方法は、上記第１の観点に係る光学コードを生成する光学コード生成方法であって、前記Ｎ個の階層に記録する情報をそれぞれ取得する情報取得工程と、前記情報取得工程において取得した情報に基づいて、前記複数のモジュールの各々に与える光学的な構成を判定するモジュール構成判定工程とを有し、前記情報取得工程は、前記１以上の暗号化層と一対一に対応する１以上の前記復号情報を生成する工程と、前記１以上のユーザ層に記録する情報を取得する工程と、前記１以上の暗号化層に記録する情報を取得する工程とを含み、１つの前記ユーザ層に記録する情報を取得する工程は、少なくとも１つの前記暗号化層に対応する少なくとも１つの前記階層情報を、前記少なくとも１つの暗号化層を識別するための少なくとも１つの前記階層ＩＤと、前記少なくとも１つの暗号化層に対応する少なくとも１つの前記復号情報とに基づいて生成する工程と、生成した前記少なくとも１つの階層情報を、１つの前記ユーザＩＤに関連付けられた前記暗号鍵により暗号化する工程と、暗号化した前記少なくとも１つの階層情報と、前記１つのユーザＩＤとを、前記１つのユーザ層に記録する情報として取得する工程とを含み、１つの前記暗号化層に記録する情報を取得する工程は、１つの前記暗号化層に記録する情報として、前記秘匿情報を取得する工程と、取得した前記秘匿情報を、前記１つの暗号化層に対応する前記復号情報によって復号し得るように暗号化する工程とを含む。
【０００８】
本発明の第３の観点に係るプログラムは、上記第２の観点に係る光学コード生成方法をコンピュータに実行させるためのプログラムである。
【０００９】
本発明の第４の観点に係る光学コード読み取り方法は、上記第１の観点に係る光学コードが表す情報を読み取る光学コード読み取り方法であって、前記複数のモジュールを含む画像から、前記複数のモジュールの各々が表す前記Ｎビットの情報を読み取る工程と、前記複数のモジュールの各々が表す前記Ｎビットの情報に基づいて、前記Ｎ個の階層に含まれた情報をそれぞれ取得する工程と、前記１以上のユーザ層から、１つの前記ユーザＩＤが含まれた１つの前記ユーザ層を特定する工程と、特定した前記１つのユーザ層に含まれる前記暗号化された少なくとも１つの階層情報を、前記１つのユーザＩＤに関連付けられた前記暗号鍵に基づいて復号する工程と、復号した前記少なくとも１つの階層情報に基づいて、少なくとも１つの前記暗号化階層に含まれる前記秘匿情報を復号する工程とを有し、１つの前記暗号化階層に含まれる前記秘匿情報を復号する工程は、復号した１つの前記階層情報に含まれる前記階層ＩＤに基づいて、１つの前記暗号化層を特定する工程と、特定した前記１つの暗号化層に含まれる前記秘匿情報を、前記復号した１つの階層情報に含まれる前記復号情報に基づいて復号する工程とを含む。
【００１０】
本発明の第５の観点に係るプログラムは、上記第４の観点に係る光学コード読み取り方法をコンピュータに実行させるためのプログラムである。
【発明の効果】
【００１１】
本発明によれば、記録される情報へのアクセスをユーザ毎に制御することが可能な光学コード、光学コードの生成方法及びプログラム、並びに、光学コードの読み取り方法及びプログラムを提供できる。
【図面の簡単な説明】
【００１２】
【図１】図１Ａ及び図１Ｂは、光学コードの一例を示す図である。
【図２】図２Ａ〜図２Ｅは、本実施形態に係る光学コードにおけるモジュールの構成例を示す図である。
【図３】図３は、第１の実施形態に係る光学コードにおける情報の階層構造の一例を示す図である。
【図４】図４は、第１の実施形態に係る光学コードにおいて各階層に含まれる情報の例を示す図である。
【図５】図５は、光学コードの生成処理や読み取り処理を実行する情報処理装置の一例を示す図である。
【図６】図６は、第１の実施形態に係る光学コードの生成処理の一例を説明するためのフローチャートである。
【図７】図７は、ユーザ層に記録する情報を取得する処理の一例を説明するためのフローチャートである。
【図８】図８は、暗号化層に記録する情報を取得する処理の一例を説明するためのフローチャートである。
【図９】図９は、暗号化層に含まれる秘匿情報を暗号化する処理の一例を説明するためのフローチャートである。
【図１０】図１０は、第１の実施形態に係る光学コードの読み取り処理の一例を説明するためのフローチャートである。
【図１１】図１１は、暗号化層に含まれる秘匿情報を復号する処理の一例を説明するためのフローチャートである。
【図１２】図１２は、第２の実施形態に係る光学コードにおいて各階層に含まれる情報の例を示す図である。
【図１３】図１３は、第２の実施形態に係る光学コードの生成処理の一例を説明するためのフローチャートである。
【図１４】図１４は、共通層に記録する情報を取得する処理の一例を説明するためのフローチャートである。
【図１５】図１５は、ユーザ層に記録する情報を取得する処理の一例を説明するためのフローチャートである。
【図１６】図１６は、ユーザ層に含まれる情報を暗号化する処理の一例を説明するためのフローチャートである。
【図１７】図１７は、第２の実施形態に係る光学コードの読み取り処理の一例を説明するためのフローチャートである。
【図１８】図１８は、第３の実施形態に係る光学コードにおける情報の階層構造の一例を示す図である。
【図１９】図１９は、第３の実施形態に係る光学コードにおいて各階層に含まれる情報の例を示す図である。
【図２０】図２０は、第３の実施形態に係る光学コードの生成処理の一例を説明するためのフローチャートである。
【図２１】図２１は、共通層に記録する情報を取得する処理の一例を説明するためのフローチャートである。
【図２２】図２２は、暗号化層に含まれる秘匿情報を暗号化する処理の一例を説明するためのフローチャートである。
【図２３】図２３は、第３の実施形態に係る光学コードの読み取り処理の一例を説明するためのフローチャートである。
【図２４】図２４は、第４の実施形態に係る光学コードにおける情報の階層構造の一例を示す図である。
【図２５】図２５は、パリティ層を説明するための図である。
【図２６】図２６は、第４の実施形態に係る光学コードの生成処理の一例を説明するためのフローチャートである。
【図２７】図２７は、第４の実施形態に係る光学コードの読み取り処理の一例を説明するためのフローチャートである。
【発明を実施するための形態】
【００１３】
＜第１の実施形態＞
以下、本発明の実施形態に係る光学コードについて図面を参照しながら説明する。本実施形態に係る光学コードは、規則的に配置された複数のモジュールＵによって光学的に読み取り可能な情報を表しており、図１Ａはその一例を示す。図１Ａに示すモジュールＵの配置パターンは、既存の二次元コードの１つであるＱＲコード（登録商標）と同じである。なお図１Ａの例において、各モジュールＵは黒又は白の四角い領域で表されているが、後述するように、各モジュールＵは黒と白の他に複数の色で着色されている。
【００１４】
図１Ｂは、図１Ａに示す光学コードにおいて各モジュールＵの位置を特定する際に使用される機能パターンを抜き出して示したものである。図１Ｂの例における機能パターンは、３つの位置検出要素Ｐ１からなるファインダーパターンと、アライメントパターンＰ２と、タイミングパターンＰ３を含む。これらの機能パターンは、光学コードに記録される情報に依らない一定の形状と色を持つように構成される。なお、図１Ｂの“Ｆ”で示した領域には、誤り訂正レベルやマスク処理パターンなどに関する形式情報が記録される。
【００１５】
図２Ａ〜図２Ｄは、本実施形態に係る光学コードにおけるモジュールＵの光学的な構成の例を示す図である。１つのモジュールＵは、光学的に読み取り可能な複数ビットの情報を表すように構成される。図２Ａ〜図２Ｄの例において、１つのモジュールＵは複数の領域に区分される。モジュールＵを区分する各領域には、複数種類の色の中から選択された１つの色が着色される。図２Ａに示すモジュールは２つの領域に区分され、図２Ｂに示すモジュールＵは３つの領域に区分され、図２Ｃに示すモジュールＵは５つの領域に区分され、図２Ｄに示すモジュールＵは９つの領域に区分される。
【００１６】
モジュールＵを区分する複数の領域における中央の正方形の領域は、既存のＱＲコード（登録商標）として読み取ることができるように、白又は黒のいずれかに着色される。この中央の領域を囲む周囲の領域は、図２Ｅに示すように、４種類の色の中から選択された１つの色に着色される。中央の領域が「白」の場合、周囲の領域はそれぞれ「白」「緑」「黄」「淡い青」のいずれか１つに着色される。中央の領域が「黒」の場合、周囲の領域はそれぞれ「ピンク」「赤」「藍」「黒」のいずれか１つに着色される。
【００１７】
モジュールＵを区分する各領域に対して選択的に与えられる色の数は、各領域が表す情報の大きさに相当する。すなわち、「白」又は「黒」に着色される中央の領域は１ビットの情報を表し、４種類の色の中から選択された１つの色に着色される周囲の領域は２ビットの情報を表す。従って、図２Ａに示すモジュールＵは３ビットの情報を表し、図２Ｂに示すモジュールＵは５ビットの情報を表し、図２Ｃに示すモジュールＵは９ビットの情報を表し、図２Ｄに示すモジュールＵは１７ビットの情報を表す。
【００１８】
なお、図２Ａ〜図２Ｄの例では、各モジュールＵを複数の領域に区分しているが、本実施形態の他の例では、各モジュールＵを単一の領域としてもよい。この場合、各モジュールＵに与える色の種類を４以上とすることにより、各モジュールＵが表す情報を２ビット以上にすることができる。
【００１９】
本実施形態では、個々のモジュールＵがＮビットの情報を表すものとした場合、複数のモジュールＵが表す全体の情報は、Ｎ個の階層に分かれる。この場合、１つのモジュールＵが表すＮビットの情報は、Ｎ個の階層の各々に１ビットずつ含まれる。すなわち、１つのモジュールＵが表すＮ個のビットデータは、互いに異なる階層に含まれる。
【００２０】
図３は、第１の実施形態に係る光学コードにおける情報の階層構造の一例を示す図である。各モジュールＵが図２Ｄに示すような構成によって１７ビットの情報を表す場合、光学コードに含まれる情報は、図３に示すような１７個の階層（Ｌ０〜Ｌ１６）に分かれる。図３の例において、階層Ｌ０が互換層であり、階層Ｌ１が共通層であり、階層Ｌ２〜L５がユーザ層であり、階層Ｌ６〜L１６が暗号化層である。
【００２１】
互換層（Ｌ０）は、既存のＱＲコード（登録商標）として読み取ることが可能な情報を含む。互換層（Ｌ０）は、例えば図２Ａ〜図２Ｄに示すモジュールＵの中央の領域（白又は黒）が表す１ビットの情報の集合である。
【００２２】
共通層（Ｌ１）は、互換層（Ｌ０）以外の各階層（以下、「追加層」と記す場合がある。）における情報の記録形式に関する情報が格納された共通ヘッダを含む。共通ヘッダには、例えば、情報の記録形式を指定する識別子や、情報へのアクセス権限を持ったユーザの数、暗号方式を指定する情報、圧縮方式を指定する情報などが格納される。
【００２３】
ユーザ層（Ｌ２〜Ｌ５）は、暗号化層（Ｌ６〜L１６）に含まれる秘匿情報へのアクセス権限が与えられたユーザと一対一に対応する階層であり、図３の例では、４名のユーザに対して４つのユーザ層Ｌ２〜Ｌ５が一対一に対応する。すなわち、秘匿情報へのアクセス権限が与えられたユーザ毎に１つのユーザ層が割り当てられる。
【００２４】
図４は、第１の実施形態に係る光学コードにおいて追加層に含まれる情報の例を示す図である。図４に示すように、１名のユーザに対応する１つのユーザ層は、その１名のユーザを識別するためのユーザＩＤと、その１名のユーザが所有する暗号鍵により暗号化された少なくとも１つ階層情報を含む。図４の例では、ユーザＩＤ「Ａｌｉｃｅ」のユーザに対応するユーザ層（Ｌ２）には、当該ユーザが所有する暗号鍵により暗号化された２つの階層情報が含まれている。また、ユーザＩＤ「Ｂｏｂ」のユーザに対応するユーザ層（Ｌ３）には、当該ユーザが所有する暗号鍵により暗号化された１つの階層情報が含まれている。
【００２５】
１つの階層情報は、１つの暗号化層を識別するための階層ＩＤと、その１つの暗号化層に含まれる暗号化された秘匿情報を復号するための復号情報とを含む。例えばユーザＩＤ「Ａｌｉｃｅ」のユーザに対応するユーザ層（Ｌ２）に含まれる一方の階層情報は、暗号化層（Ｌ６）を示す階層ＩＤと、暗号化層（Ｌ６）に含まれる秘匿情報を復号するための復号情報を含む。また、ユーザ情報（Ｌ２）に含まれる他方の階層情報は、暗号化層（Ｌ８）を示す階層ＩＤと、暗号化層（Ｌ８）に含まれる秘匿情報を復号するための復号情報を含む。従って、ユーザＩＤ「Ａｌｉｃｅ」のユーザは、ユーザ層（Ｌ２）に含まれる２つの階層情報をそれぞれ自身の暗号鍵で復号することにより、暗号化層（Ｌ６）に含まれる秘匿情報と暗号化層（Ｌ８）に含まれる秘匿情報とをそれぞれ読み出すことが可能となる。
【００２６】
図５は、本実施形態に係る光学コードの生成処理や読み取り処理を実行する情報処理装置１の構成の一例を示す図である。図５に示す情報処理装置１は、例えばパーソナルコンピュータやスマートホンなどの汎用的に使用される装置であり、通信部１０と、入力部２０と、表示部３０と、撮像部４０と、記憶部５０と、処理部６０を有する。
【００２７】
通信部１０は、ＬＡＮやインターネット等のネットワークを介して他の種々の装置（スマートホン、プリンタなど）と通信を行うための装置であり、所定の通信規格に従って通信を行う通信回路を含む。
【００２８】
入力部２０は、情報処理装置１に操作コマンドやデータを入力するための装置であり、例えばキーボード、マウス、タッチパッド、タッチパネルなどのユーザインタフェースに関わる装置や、記録媒体（光ディスク、ＩＣタグ、ＵＳＢメモリなど）の読み取り装置を含む。
【００２９】
表示部３０は、情報処理装置１のユーザに対して画像や文字などの情報を表示するための装置であり、例えば液晶ディスプレイや有機ＥＬディスプレイなどの表示装置を含む。
【００３０】
撮像部４０は、光学コードの画像を撮像する装置であり、例えばＣＭＯＳセンサなどの撮像素子と光学系を含んで構成される。
【００３１】
処理部６０は、情報処理装置１の全体的な処理を司る装置であり、記憶部５０に格納されたプログラム５１の命令コードに従って処理を実行する１以上のコンピュータや、特定の処理を実行する専用のハードウェア（ＦＰＧＡ、ＡＳＩＣなど）を含む。
【００３２】
記憶部５０は、処理部６０における１以上のコンピュータに読み込まれて実行されるプログラム５１や、処理部６０の処理過程で一時的に保存されるデータを記憶する。記憶部５０は、例えばハードディスク装置や、フラッシュメモリ、光記録媒体、ＤＲＡＭ、ＳＲＡＭなどの記憶装置を含む。なお、プログラム５１は、光ディスクなどの非一時的な記録媒体に記録されたものでもよく、その場合、入力部２０の読み取り装置において読み取られたプログラム５１を記憶部５０に格納してもよい。
【００３３】
次に、第１の実施形態に係る光学コードの生成処理と読み取り処理について、図６〜図１１を参照して説明する。これらの処理の少なくとも一部は、例えば図５に示す情報処理装置１において実行される。ここでは一例として、光学コードにおける情報が図３及び図４に示す階層構造を持つものとする。
【００３４】
図６は、第１の実施形態に係る光学コードの生成処理の一例を説明するためのフローチャートである。
【００３５】
処理部６０は、互換層（Ｌ０）に記録する情報を取得する（ＳＴ１００）。例えば処理部６０は、表示部３０の画面の表示に従って入力部２０のユーザインタフェース装置により入力された情報や、ネットワーク上のサーバ等との通信によって通信部１０から入力された情報を、互換層（Ｌ０）に記録する情報として取得し、記憶部５０に格納する。
【００３６】
また処理部６０は、共通層（Ｌ１）に記録する情報として、共通ヘッダを取得する（ＳＴ１０５）。例えば処理部６０は、入力部２０のユーザインタフェース装置により入力された情報に基づいて共通ヘッダを生成し、共通層（Ｌ１）に記録する情報として記憶部５０に格納する。
【００３７】
次に処理部６０は、１以上の暗号化層（図３の例では階層Ｌ６〜Ｌ１６）と一対一に対応する１以上の復号情報（図３の例では１１個）を生成する（ＳＴ１１０）。例えば処理部６０は、それぞれランダムなデータとして復号情報を生成する。なお、暗号化層の数はユーザ層の数（すなわちユーザの数）に応じて変化するため、処理部６０は、共通ヘッダに含まれるユーザ数の情報に応じてユーザ層の数及び暗号化層の数を把握し、暗号化層の数を復号情報の数とする。
【００３８】
各暗号化層の復号情報が得られると、処理部６０は、１以上のユーザ層（図３の例では階層Ｌ２〜Ｌ５）の各々に記録する情報を取得する（ＳＴ１１５）。例えば処理部６０は、１つのユーザ層に記録する情報を取得する場合、少なくとも１つの階層情報（階層ＩＤ及び復号情報）を生成し、生成した少なくとも１つの階層情報を暗号鍵により暗号化し、暗号化した少なくとも１つの階層情報とユーザＩＤとを、この１つのユーザ層に記録する情報として記憶部５０に格納する。
【００３９】
図７は、ユーザ層に記録する情報を取得する処理（ＳＴ１１５：図６）の一例を説明するためのフローチャートである。
【００４０】
まず処理部６０は、アクセス権限を与える１以上のユーザ（図３の例では４名）に対応した１以上のユーザＩＤの中から、１つのユーザＩＤを選択する（ＳＴ２００）。
【００４１】
次に処理部６０は、少なくとも１つの暗号化層に対応した少なくとも１つの階層情報を生成する（ＳＴ２０５）。この「少なくとも１つの暗号化層」は、選択中のユーザＩＤを持つユーザが秘匿情報へアクセスすることを許容する暗号化層を示す。処理部６０は、「少なくとも１つの暗号化層」を識別するための「少なくとも１つの階層ＩＤ」と、「少なくとも１つの暗号化層」に対応して生成した「少なくとも１つの復号情報」（ＳＴ１１０：図６）とに基づいて、少なくとも１つの階層情報を生成する。個々の階層情報には、図４に示すように、１つの階層ＩＤと１つの復号情報が含まれる。
【００４２】
処理部６０は、ステップＳＴ２０５で生成した少なくとも１つの階層情報を、選択中のユーザＩＤに関連付けた暗号鍵に基づいて暗号化する（ＳＴ２１０）。この暗号鍵は、例えば通信部１０や入力部２０において入力され、ユーザＩＤと関連付けて記憶部５０に格納されている。
【００４３】
処理部６０は、例えば、階層情報を構成する複数のビットの各々に対して排他的論理和の演算を施すことにより、階層情報を暗号化する。この場合、階層情報の暗号化に用いられる暗号鍵は、階層情報を構成する複数ビットにおける各ビットの値を反転させるか否か指定する情報（ビット列）である。
【００４４】
処理部６０は、ステップＳＴ２１０において暗号化した少なくとも１つの階層情報と、選択中のユーザＩＤとを、１つのユーザ層に記録する情報として取得し、記憶部５０に格納する（ＳＴ２１５）。
【００４５】
ステップＳＴ２１５において１つのユーザ層に記録する情報を取得すると、処理部６０は、未だ選択していない他のユーザＩＤがある場合（ＳＴ２２０のＹｅｓ）、他の１つのユーザＩＤを選択して（ＳＴ２２５）、ステップＳＴ２０５以降の処理を繰り返す。処理部６０は、全てのユーザＩＤについてステップＳＴ２０５〜ＳＴ２１５を実行すると（ＳＴ２２０のＮｏ）、図７のフローチャートの処理を終了する。
【００４６】
図６に戻る。
処理部６０は、１以上の暗号化層（図３の例では階層Ｌ６〜Ｌ１６）に記録する情報を取得する（ＳＴ１２０）。例えば処理部６０は、通信部１０や入力部２０において入力された情報を、１以上の暗号化層に記録する情報として取得する。
【００４７】
図８は、暗号化層に記録する情報を取得する処理（ＳＴ１２０：図６）の一例を説明するためのフローチャートである。
【００４８】
まず処理部６０は、１以上の暗号化層（図３の例では階層Ｌ６〜Ｌ１６）の中から、１つの暗号化層を選択する（ＳＴ３００）。
【００４９】
次に処理部６０は、選択中の暗号化層に記録する情報として秘匿情報を取得する（ＳＴ３０５）。例えば処理部６０は、表示部３０の画面の表示に従って入力部２０のユーザインタフェース装置により入力された情報や、ネットワーク上のサーバ等との通信によって通信部１０から入力された情報を、選択中の暗号化層に記録する情報として取得し、記憶部５０に格納する。
【００５０】
ステップＳＴ３０５において１つの暗号化層に記録する秘匿情報を取得すると、処理部６０は、未だ選択していない他の暗号化層がある場合（ＳＴ３１０のＹｅｓ）、他の１つの暗号化層を選択して（ＳＴ３１５）、ステップＳＴ３０５以降の処理を繰り返す。処理部６０は、全ての暗号化層についてステップＳＴ３０５を実行すると（ＳＴ３１０のＮｏ）、図８のフローチャートの処理を終了する。
【００５１】
再び図６に戻る。
処理部６０は、ステップＳＴ１００〜ＳＴ１２０によって各階層（Ｌ０〜Ｌ１６）に記録する情報を取得すると、各階層に含まれる情報を所定の光学コードの生成形式に従って変換する（ＳＴ１２５）。例えば処理部６０は、各階層に含まれる情報をＱＲコード（登録商標）の形式に則った情報に変換し、記憶部５０に格納する。これにより、各階層に含まれる情報は、ＱＲコード（登録商標）と等価な情報になる。
【００５２】
次に処理部６０は、１以上の暗号化層（図３の例では階層Ｌ６〜Ｌ１６）に含まれる情報をそれぞれ暗号化する（ＳＴ１３５）。
【００５３】
図９は、暗号化層に含まれる秘匿情報を暗号化する処理（ＳＴ１３５：図６）の一例を説明するためのフローチャートである。
【００５４】
まず処理部６０は、１以上の暗号化層（図３の例では階層Ｌ６〜Ｌ１６）の中から、１つの暗号化層を選択する（ＳＴ４００）。
【００５５】
次に処理部６０は、選択中の暗号化層に含まれる秘匿情報を、この暗号化層に対応する復号情報（ＳＴ１１０：図６）によって復号し得るように暗号化する（ＳＴ４０５）。例えば処理部６０は、秘匿情報を構成する複数のビットの各々に対して排他的論理和の演算を施すことにより、秘匿情報を暗号化する。この場合、秘匿情報の暗号化に用いられる暗号鍵は、秘匿情報を構成する複数ビットにおける各ビットの値を反転させるか否か指定する情報（ビット列）である。
【００５６】
ステップＳＴ４０５において１つの暗号化層に含まれる秘匿情報を暗号化すると、処理部６０は、未だ選択していない他の暗号化層がある場合（ＳＴ４１０のＹｅｓ）、他の１つの暗号化層を選択して（ＳＴ４１５）、ステップＳＴ４０５以降の処理を繰り返す。処理部６０は、全ての暗号化層についてステップＳＴ４０５を実行すると（ＳＴ４１０のＮｏ）、図９のフローチャートの処理を終了する。
【００５７】
各暗号化層に含まれる秘匿情報を暗号化すると、処理部６０は、ステップＳＴ１００〜ＳＴ１３５の処理によって取得された各階層の情報に基づいて、複数のモジュールＵの各々に与える光学的な構成を判定する（ＳＴ１４５）。例えば処理部６０は、追加層（Ｌ１〜Ｌ１６）に含まれる情報がそれぞれ得られると、追加層（Ｌ１〜Ｌ１６）に含まれる情報をモジュールＵ毎に結合することにより、各モジュールＵが表す１６ビットの情報を取得する。処理部６０は、この１６ビットの情報から、図２Ｅに示すような変換テーブルに従って、モジュールＵを構成する各領域の色を判定する。
【００５８】
例えば、図２Ｄに示すモジュールＵを図２Ｅの表に当てはめた場合、モジュールＵが表す１６ビットの情報の中で階層Ｌ１に含まれるビットが「１」、階層Ｌ２に含まれるビットが「０」であるとすると、処理部６０は、モジュールＵの右上隅の領域に与えられる色を「黄」又は「藍」と判定する。ここで、処理部６０は、階層Ｌ０が「白」の場合（階層Ｌ０に含まれるビットが「０」の場合）、右上隅の領域を「黄」と判定し、階層Ｌ０が「黒」の場合（階層Ｌ０に含まれるビットが「１」の場合）、右上隅の領域を「藍」と判定する。
【００５９】
図１０は、第１の実施形態に係る光学コードの読み取り処理の一例を説明するためのフローチャートである。ここでは、図４における特定のユーザ（ユーザＩＤ「Ａｌｉｃｅ」）が秘匿情報を読み出す場合を例に挙げながら、光学コードの読み取り処理を説明する。
【００６０】
処理部６０は、撮像部４０などにおいて撮像された画像から、各モジュールＵが表す情報を読み取る（ＳＴ５００）。例えば処理部６０は、画像に含まれる機能パターン（位置検出要素Ｐ１、アライメントパターンＰ２、タイミングパターンＰ３）に基づいて、画像中における各モジュールの位置を特定し、各モジュール内の各領域における色を判定する。処理部６０は、各モジュール内の各領域の色を判定した結果から、各モジュールの中央の領域が表す１ビットの情報（階層Ｌ０）を取得するとともに、図２Ｅに示すような変換テーブルに従って、各モジュールＵの中央以外の領域が表す１６ビットの情報（階層Ｌ１〜Ｌ１６）を取得する。
【００６１】
次に処理部６０は、複数のモジュールＵが表す情報（中央の領域が表す１ビットの情報、中央以外の領域が表す１６ビットの情報）に基づいて、階層Ｌ０〜Ｌ１６に含まれる情報をそれぞれ取得する（ＳＴ５０５）。
【００６２】
処理部６０は、階層Ｌ０〜Ｌ１６に含まれる情報がそれぞれ得られると、暗号化層以外の各階層に含まれる情報を、所定の光学コードの読み取り形式に従って変換する（ＳＴ５１５）。例えば処理部６０は、各階層に含まれる情報をＱＲコード（登録商標）の情報として数字や文字などに変換し、記憶部５０に格納する。例えば処理部６０は、共通層の共通ヘッダに格納される情報から暗号化層以外の階層（ユーザ層）を特定し、特定したユーザ層の情報をＱＲコード（登録商標）の情報として文字等に変換する。
【００６３】
処理部６０は、ステップＳＴ５１５において文字等に変換された１以上のユーザ層（階層Ｌ２〜Ｌ５）から、１つのユーザＩＤ（「Ａｌｉｃｅ」）が含まれた１つのユーザ層（図４の例では階層Ｌ２）を特定する（ＳＴ５２０）。
【００６４】
処理部６０は、ステップＳＴ５２０で特定した１つのユーザ層（階層Ｌ２）に含まれる暗号化された少なくとも１つの階層情報（図４の例では２つの階層情報）を、１つのユーザＩＤ（「Ａｌｉｃｅ」）に関連付けられた暗号鍵に基づいて復号する（ＳＴ５２５）。例えば処理部６０は、暗号鍵のビット列と階層情報のビット列との排他的論理和を演算することにより、暗号化された階層情報を復号する。
【００６５】
処理部６０は、ステップＳＴ５２５で少なくとも１つの階層情報（図４の例では２つの階層情報）を復号すると、復号した少なくとも１つの階層情報に基づいて、少なくとも１つの暗号化階層（図４の例では階層Ｌ６及びＬ８）に含まれる秘匿情報を復号する（ＳＴ５３０）。
【００６６】
図１１は、暗号化層に含まれる秘匿情報を復号する処理（ＳＴ５３０：図１０）の一例を説明するためのフローチャートである。
【００６７】
まず処理部６０は、ステップＳＴ５３０で復号した１以上の階層情報（図４の例では２つの階層情報）の中から、１つの階層情報を選択する（ＳＴ６００）。
【００６８】
次に処理部６０は、選択中の階層情報に含まれる階層ＩＤに基づいて、１つの暗号化層を特定する（ＳＴ６０５）。
【００６９】
処理部６０は、ステップＳＴ６０５で特定した１つの暗号化層に含まれる秘匿情報を、選択中の階層情報に含まれる復号情報に基づいて復号する（ＳＴ６１０）。例えば処理部６０は、復号情報に基づいて得られるビット列と秘匿情報のビット列との排他的論理和を演算することにより、暗号化された秘匿情報を復号する。
【００７０】
ステップＳＴ６１０において秘匿情報を復号すると、処理部６０は、未だ選択していない他の階層情報がある場合（ＳＴ６１５のＹｅｓ）、他の１つの階層情報を選択して（ＳＴ６２０）、ステップＳＴ６０５以降の処理を繰り返す。処理部６０は、全ての階層情報についてステップＳＴ６０５〜ＳＴ６１０を実行すると（ＳＴ６１５のＮｏ）、図１１のフローチャートの処理を終了する。
【００７１】
ステップＳＴ５３５において各暗号化層の秘匿情報を復号すると、処理部６０は、秘匿情報を復号した暗号化層に含まれる情報を、ＱＲコード（登録商標）などの所定の光学コードの読み取り形式に従って変換する（ＳＴ５３５）。これにより、処理部６０は、復号された秘匿情報を数字や文字などに変換する。
【００７２】
以上説明したように、本実施形態によれば、ユーザ毎に割り当てられたユーザ層には、ユーザが所有する暗号鍵により暗号化された階層情報が記録されており、その暗号化された階層情報には、暗号化層に記録された秘匿情報を復号するための復号情報が含まれている。これにより、暗号化層に記録される秘匿情報へのアクセス（秘匿情報の復号の許可又は禁止）をユーザ毎に制御することができる。
【００７３】
また、本実施形態によれば、複数のモジュールＵの各々から１ビットずつ集めた情報である階層を単位として、各ユーザのアクセスが許可又は禁止され、階層ごとに情報の暗号化が行われる。そのため、各モジュールＵの各ビットがどの階層に含まれるかが未知である場合、階層（暗号化層）に含まれる秘匿情報を読み出すことが極めて困難となる。従って、モジュールＵや階層の数を大きくするほど、暗号の耐性を高くすることができる。
【００７４】
＜第２の実施形態＞
次に、本発明の第２の実施形態について説明する。第２の実施形態に係る光学コードは、上述した第１の実施形態に係る光学コードにおいて共通層及びユーザ層に含まれる情報を変更したものであり、他の構成は第１の実施形態に係る光学コードと概ね同じである。以下では、第１の実施形態に係る光学コードとの相違点を中心に説明する。
【００７５】
図１２は、第２の実施形態に係る光学コードにおいて追加層（Ｌ１，Ｌ２，…）に含まれる情報の例を示す図である。
【００７６】
共通層（Ｌ１）は、共通ヘッダを含むとともに、１以上のユーザと一対一に対応した１以上のユーザ情報を含む。図１２の例において、共通層（Ｌ１）は、２名のユーザに対応した２つのユーザ情報を含んでいる。
【００７７】
１名のユーザに対応する１つのユーザ情報は、図１２に示すように、その１名のユーザを識別するためのユーザＩＤと、その１名のユーザに対応する１つのユーザ層を識別するための階層ＩＤを含む。図１２の例において、ユーザＩＤ「Ａｌｉｃｅ」のユーザに対応するユーザ情報は、ユーザＩＤ「Ａｌｉｃｅ」と、当該ユーザに対応するユーザ層（Ｌ２）の階層ＩＤを含む。また、ユーザＩＤ「Ｂｏｂ」のユーザに対応するユーザ情報は、ユーザＩＤ「Ｂｏｂ」と、当該ユーザに対応するユーザ層（Ｌ３）の階層ＩＤを含む。
【００７８】
ユーザ層は、秘匿情報へのアクセス権限が与えられたユーザと一対一に対応する階層である。図１２の例では、２名のユーザ（「Ａｌｉｃｅ」、「Ｂｏｂ」）と２つのユーザ層Ｌ２及びＬ３とが一対一に対応する。すなわち、秘匿情報へのアクセス権限が与えられたユーザ毎に１つのユーザ層が割り当てられる。
【００７９】
１名のユーザに対応する１つのユーザ層は、その１名のユーザが所有する暗号鍵により暗号化された少なくとも１つの階層情報を含む。図４の例では、ユーザＩＤ「Ａｌｉｃｅ」のユーザに対応するユーザ層（Ｌ２）には、当該ユーザが所有する暗号鍵により暗号化された２つの階層情報が含まれている。また、ユーザＩＤ「Ｂｏｂ」のユーザに対応するユーザ層（Ｌ３）には、当該ユーザが所有する暗号鍵により暗号化された１つの階層情報が含まれている。階層情報に含まれる情報は、第１の実施形態に係る光学コード（図４）と同様である。
【００８０】
次に、第２の実施形態に係る光学コードの生成処理と読み取り処理について、図１３〜図１７を参照して説明する。これらの処理の少なくとも一部は、例えば図１に示す情報処理装置１において実行される。ここでは一例として、光学コードにおける情報が図１２に示す階層構造を持つものとする。
【００８１】
図１３は、第２の実施形態に係る光学コードの生成処理の一例を説明するためのフローチャートである。図１３に示すフローチャートは、図６に示すフローチャートにおけるステップＳＴ１０５、ＳＴ１１５をそれぞれステップＳＴ１０５Ａ，ＳＴ１１５Ａに変更するとともに、ステップＳＴ１３０を追加したものであり、他のステップは概ね図６に示すフローチャートと同じである。
【００８２】
処理部６０は、図６に示すフローチャートと同様に、互換層（Ｌ０）に記録する情報を取得する（ＳＴ１００）。
【００８３】
また処理部６０は、共通層（Ｌ１）に記録する情報として、共通ヘッダとユーザ情報を取得する（ＳＴ１０５Ａ）。例えば処理部６０は、図１４のフローチャートにおいて示すように、入力部２０のユーザインタフェース装置などによって入力された情報に基づいて、共通ヘッダを生成するとともに（ＳＴ７００）、各ユーザのユーザ情報を生成する（ＳＴ７０５）。処理部６０は、生成した共通ヘッダとユーザ情報を、共通層に記録する情報として取得し、記憶部５０に格納する（ＳＴ７１０）。
【００８４】
次に処理部６０は、図６に示すフローチャートと同様に、１以上の暗号化層（図１２の例では階層Ｌ６〜Ｌ８）と一対一に対応する１以上の復号情報（図１２の例では３個）を生成する（ＳＴ１１０）。
【００８５】
各暗号化層の復号情報が得られると、処理部６０は、１以上のユーザ層（図１２の例では階層Ｌ２及びＬ３）の各々に記録する情報を取得する（ＳＴ１１５Ａ）。例えば処理部６０は、１つのユーザ層に記録する情報を取得する場合、１つのユーザ情報に含まれる階層ＩＤに基づいて１つのユーザ層を特定し、少なくとも１つの階層情報（階層ＩＤ及び復号情報）を生成し、生成した少なくとも１つの階層情報を、特定した１つのユーザ層に記録する情報として取得して、記憶部５０に格納する。
【００８６】
図１５は、ユーザ層に記録する情報を取得する処理（ＳＴ１１５Ａ：図１３）の一例を説明するためのフローチャートである。
【００８７】
まず処理部６０は、アクセス権限を与える１以上のユーザ（図１２の例では２名）に対応した１以上のユーザ情報の中から、１つのユーザ情報を選択する（ＳＴ８００）。
【００８８】
次に処理部６０は、選択中のユーザ情報に含まれる階層ＩＤに基づいて、１つのユーザ層を特定する（ＳＴ８０５）。
【００８９】
また処理部６０は、少なくとも１つの暗号化層に対応した少なくとも１つの階層情報を生成する（ＳＴ８１０）。この「少なくとも１つの暗号化層」は、選択中のユーザ情報に含まれるユーザＩＤを持ったユーザが秘匿情報へアクセスすることを許容する暗号化層を示す。処理部６０は、「少なくとも１つの暗号化層」を識別するための「少なくとも１つの階層ＩＤ」と、「少なくとも１つの暗号化層」に対応して生成した「少なくとも１つの復号情報」（ＳＴ１１０：図１３）とに基づいて、少なくとも１つの階層情報を生成する。個々の階層情報には、図１２に示すように、１つの階層ＩＤと１つの復号情報が含まれる。
【００９０】
処理部６０は、ステップＳＴ８１０において生成した少なくとも１つの階層情報を、ステップＳＴ８０５で特定した１つのユーザ層に記録する情報として取得し、記憶部５０に格納する（ＳＴ８１５）。
【００９１】
ステップＳＴ８１５において１つのユーザ層に記録する情報を取得すると、処理部６０は、未だ選択していない他のユーザ情報がある場合（ＳＴ８２０のＹｅｓ）、他の１つのユーザ情報を選択して（ＳＴ８２５）、ステップＳＴ８０５以降の処理を繰り返す。処理部６０は、全てのユーザ情報についてステップＳＴ８０５〜ＳＴ８１５を実行すると（ＳＴ８２０のＮｏ）、図１５のフローチャートの処理を終了する。
【００９２】
図１３に戻る。
処理部６０は、図６に示すフローチャートと同様に、１以上の暗号化層（図１２の例では階層Ｌ６〜Ｌ８）に記録する情報を取得する（ＳＴ１２０）。
【００９３】
処理部６０は、ステップＳＴ１００〜ＳＴ１２０によって各階層に記録する情報を取得すると、図６に示すフローチャートと同様に、各階層に含まれる情報を所定の光学コードの生成形式に従って変換する（ＳＴ１２５）。
【００９４】
次に処理部６０は、１以上のユーザ層（図１２の例では階層Ｌ２及びＬ３）の各々に含まれる階層情報を暗号化する（ＳＴ１３０）。例えば処理部６０は、１つのユーザ層に含まれる情報を暗号化する場合、１つのユーザ情報に含まれる階層ＩＤに基づいて１つのユーザ層を特定し、特定したユーザ層に含まれる階層情報を、この１つのユーザ情報に含まれるユーザＩＤに関連付けられた暗号鍵によって暗号化する。
【００９５】
図１６は、ユーザ層に含まれる情報を暗号化する処理（ＳＴ１３０：図１３）の一例を説明するためのフローチャートである。
【００９６】
まず処理部６０は、アクセス権限を与える１以上のユーザ（図１２の例では２名）に対応した１以上のユーザ情報の中から、１つのユーザ情報を選択する（ＳＴ９００）。
【００９７】
次に処理部６０は、選択中のユーザ情報に含まれる階層ＩＤに基づいて、１つのユーザ層を特定する（ＳＴ９０５）。
【００９８】
処理部６０は、ステップＳＴ９０５で特定したユーザ層に含まれる階層情報を、選択中のユーザ情報に含まれるユーザＩＤに関連付けられた暗号鍵に基づいて暗号化する（ＳＴ９１０）。この暗号鍵は、例えば通信部１０や入力部２０において入力され、ユーザＩＤと関連付けて記憶部５０に格納されている。処理部６０は、例えば、階層情報を構成する複数のビットの各々に対して排他的論理和の演算を施すことにより、階層情報を暗号化する。この場合、階層情報の暗号化に用いられる暗号鍵は、階層情報を構成する複数ビットにおける各ビットの値を反転させるか否か指定する情報（ビット列）である。
【００９９】
ステップＳＴ９１０において１つのユーザ層に含まれる階層情報を暗号化すると、処理部６０は、未だ選択していない他のユーザ情報がある場合（ＳＴ９１５のＹｅｓ）、他の１つのユーザ情報を選択して（ＳＴ９２０）、ステップＳＴ９０５以降の処理を繰り返す。処理部６０は、全てのユーザ情報についてステップＳＴ９０５〜ＳＴ９１０を実行すると（ＳＴ９１５のＮｏ）、図１６のフローチャートの処理を終了する。
【０１００】
再び図１３に戻る。
処理部６０は、図６に示すフローチャートと同様に、１以上の暗号化層（図１２の例では階層Ｌ６〜Ｌ８）に含まれる情報をそれぞれ暗号化する（ＳＴ１３５）。各暗号化層に含まれる秘匿情報を暗号化すると、処理部６０は、ステップＳＴ１００〜ＳＴ１３５の処理によって取得された各階層の情報に基づいて、複数のモジュールＵの各々に与える光学的な構成を判定する（ＳＴ１４５）。
【０１０１】
図１７は、第２の実施形態に係る光学コードの読み取り処理の一例を説明するためのフローチャートである。ここでは、図１２における特定のユーザ（ユーザＩＤ「Ａｌｉｃｅ」）が秘匿情報を読み出す場合を例に挙げながら、光学コードの読み取り処理を説明する。
【０１０２】
処理部６０は、図１０に示すフローチャートと同様に、撮像部４０などにおいて撮像された画像から各モジュールＵが表す情報を読み取り（ＳＴ５００）、読み取った複数のモジュールＵが表す情報に基づいて、各階層（Ｌ０，Ｌ１，…）に含まれる情報を取得する（ＳＴ５０５）。
【０１０３】
処理部６０は、各階層（Ｌ０，Ｌ１，…）に含まれる情報がそれぞれ得られると、暗号化層及びユーザ層以外の各階層に含まれる情報を、ＱＲコード（登録商標）などの所定の光学コードの読み取り形式に従って文字等に変換し、記憶部５０に格納する（ＳＴ５１５Ａ）。
【０１０４】
処理部６０は、共通層（Ｌ１）に含まれる１以上のユーザ情報（図１２の例では２つのユーザ情報）から、１つのユーザＩＤ（「Ａｌｉｃｅ」）が含まれた１つのユーザ情報を特定する（ＳＴ５４５）。
【０１０５】
処理部６０は、ステップＳＴ５４５で特定した１つのユーザ情報に含まれる階層ＩＤから、１つのユーザ層（図１２の例では階層Ｌ２）を特定する（ＳＴ５５０）。
【０１０６】
処理部６０は、ステップＳＴ５５０で特定した１つのユーザ層（階層Ｌ２）に含まれる暗号化された少なくとも１つの階層情報（図１２の例では２つの階層情報）を、１つのユーザＩＤ（「Ａｌｉｃｅ」）に関連付けられた暗号鍵に基づいて復号する（ＳＴ５５５）。例えば処理部６０は、暗号鍵のビット列と階層情報のビット列との排他的論理和を演算することにより、暗号化された階層情報を復号する。
【０１０７】
処理部６０は、ステップＳＴ５５０で特定され、ステップＳＴ５５５で復号処理が施されたユーザ層の情報を、ＱＲコード（登録商標）などの所定の光学コードの読み取り形式に従って文字等に変換する（ＳＴ５６０）。
【０１０８】
処理部６０は、ステップＳＴ５６０で少なくとも１つの階層情報（図１２の例では２つの階層情報）が文字等に変換されると、変換されたこれらの階層情報に基づいて、少なくとも１つの暗号化階層（図１２の例では階層Ｌ６及びＬ８）に含まれる秘匿情報を復号する（ＳＴ５６５）。階層情報に基づいて暗号化階層の秘匿情報を復号する処理は、既に説明した図１１のフローチャートの処理と同様である。
【０１０９】
ステップＳＴ５６５において各暗号化層の秘匿情報を復号すると、処理部６０は、秘匿情報を復号した暗号化層に含まれる情報を、ＱＲコード（登録商標）などの所定の光学コードの読み取り形式に従って変換する（ＳＴ５７０）。これにより、処理部６０は、復号された秘匿情報を数字や文字などに変換する。
【０１１０】
以上説明したように、本実施形態においても、ユーザ毎に割り当てられたユーザ層には、ユーザが所有する暗号鍵により暗号化された階層情報が記録されており、その暗号化された階層情報には、暗号化層に記録された秘匿情報を復号するための復号情報が含まれている。従って、第１の実施形態と同様に、暗号化層に記録される秘匿情報へのアクセスをユーザ毎に制御することが可能である。
【０１１１】
＜第３の実施形態＞
次に、本発明の第３の実施形態について説明する。第３の実施形態に係る光学コードでは、上述した各実施形態におけるユーザ層が省略されており、暗号化層に含まれる秘匿情報がユーザの所有する暗号鍵によって暗号化される。
【０１１２】
図１８は、第３の実施形態に係る光学コードにおける情報の階層構造の一例を示す図である。図１８に示す階層構造は、図３と同様な１７個の階層（Ｌ０〜Ｌ１６）に分かれている。図１８の例において、階層Ｌ０が互換層であり、階層Ｌ１が共通層であり、階層Ｌ２〜L１６が暗号化層である。
【０１１３】
互換層（Ｌ０）は、図３と同様に、既存のＱＲコード（登録商標）として読み取ることが可能な情報を含む。
【０１１４】
共通層（Ｌ１）は、上述した各実施形態と同様な共通ヘッダを含むとともに、１以上のユーザと一対一に対応する１以上のユーザ情報を含む。ユーザ情報には、暗号化層の階層ＩＤとユーザＩＤが含まれる。
【０１１５】
暗号化層（Ｌ２〜L１６）は、上述したユーザ情報によって、１以上のユーザと一対一に対応づけられている。１のユーザに対応する１つの暗号化層は、この１のユーザが所有する暗号鍵によって暗号化された秘匿情報を含む。
【０１１６】
図１９は、第３の実施形態に係る光学コードにおいて追加層（Ｌ１，Ｌ２，…）に含まれる情報の例を示す図である。
【０１１７】
図１９の例において、共通層（Ｌ１）は２名のユーザに対応した２つのユーザ情報を含んでいる。１名のユーザに対応する１つのユーザ情報は、図１９に示すように、その１名のユーザを識別するためのユーザＩＤと、その１名のユーザに対応する１つの暗号化層を識別するための階層ＩＤを含む。図１９の例において、ユーザＩＤ「Ａｌｉｃｅ」のユーザに対応するユーザ情報は、ユーザＩＤ「Ａｌｉｃｅ」と、当該ユーザに対応する暗号化層（Ｌ６）の階層ＩＤを含む。また、ユーザＩＤ「Ｂｏｂ」のユーザに対応するユーザ情報は、ユーザＩＤ「Ｂｏｂ」と、当該ユーザに対応する暗号化層（Ｌ７）の階層ＩＤを含む。
【０１１８】
１つのユーザ情報に含まれる１つの階層ＩＤと１つユーザＩＤは、この階層ＩＤに対応する１つの暗号化層に含まれた秘匿情報が、このユーザＩＤに対応するユーザの暗号鍵によって暗号化されていることを示す。図１９の例では、ユーザＩＤ「Ａｌｉｃｅ」のユーザが所有する暗号鍵によって階層Ｌ６の暗号化層に含まれた秘匿情報が暗号化され、ユーザＩＤ「Ｂｏｂ」のユーザが所有する暗号鍵によって階層Ｌ７の暗号化層に含まれた秘匿情報が暗号化されている。
【０１１９】
図２０は、第３の実施形態に係る光学コードの生成処理の一例を説明するためのフローチャートである。
【０１２０】
処理部６０は、図６に示すフローチャートと同様に、互換層（Ｌ０）に記録する情報を取得する（ＳＴ１００）。
【０１２１】
また処理部６０は、共通層（Ｌ１）に記録する情報として、共通ヘッダとユーザ情報を取得する（ＳＴ１０５Ｂ）。例えば処理部６０は、図２１のフローチャートにおいて示すように、入力部２０のユーザインタフェース装置などによって入力された情報に基づいて、共通ヘッダを生成するとともに（ＳＴ７００）、各ユーザのユーザ情報を生成する（ＳＴ７０５Ａ）。このユーザ情報には、暗号化層の階層ＩＤとユーザＩＤが含まれる。処理部６０は、生成した共通ヘッダとユーザ情報を、共通層に記録する情報として取得し、処理部６０に格納する（ＳＴ７１０）。
【０１２２】
また処理部６０は、図６に示すフローチャートと同様に、各暗号化層に記録する情報を取得する（ＳＴ１２０）。
【０１２３】
処理部６０は、ステップＳＴ１００〜ＳＴ１２０によって各階層に記録する情報を取得すると、図６に示すフローチャートと同様に、各階層に含まれる情報を所定の光学コードの生成形式に従って変換する（ＳＴ１２５）。
【０１２４】
次に処理部６０は、各暗号化層に含まれる秘匿情報を暗号化する（ＳＴ１３５Ｂ）。例えば処理部６０は、１つの暗号化層に記録された秘匿情報を暗号化する場合、１つの暗号化層を識別するための階層ＩＤが含まれたユーザ情報に基づいて、１つのユーザＩＤに関連付けられた暗号鍵を取得し、当該１つの暗号化層に含まれる秘匿情報を、当該取得した暗号鍵によって暗号化する。
【０１２５】
図２２は、暗号化層に含まれる秘匿情報を暗号化する処理（ＳＴ１３５Ｂ：図２０）の一例を説明するためのフローチャートである。
【０１２６】
まず処理部６０は、秘匿情報が含まれた複数の暗号化層の中から１つの暗号化層を選択する（ＳＴ１０００）。
【０１２７】
次に処理部６０は、選択中の暗号化層に対応する階層ＩＤが含まれたユーザ情報に基づいて、１つのユーザＩＤに関連付けられた暗号鍵を取得する（ＳＴ１００５）。この暗号鍵は、例えば通信部１０や入力部２０において入力され、ユーザＩＤと関連付けて記憶部５０に格納されている。処理部６０は、例えば、階層情報を構成する複数のビットの各々に対して排他的論理和の演算を施すことにより、階層情報を暗号化する。この場合、階層情報の暗号化に用いられる暗号鍵は、階層情報を構成する複数ビットにおける各ビットの値を反転させるか否か指定する情報（ビット列）である。
【０１２８】
処理部６０は、選択中の暗号化層に含まれる秘匿情報を、ステップＳＴ１００５で取得した暗号鍵に基づいて暗号化する（ＳＴ１０１０）。
【０１２９】
ステップＳＴ１０１０において１つの暗号化層に含まれる秘匿情報を暗号化すると、処理部６０は、未だ選択していない他の暗号化層がある場合（ＳＴ１０１５のＹｅｓ）、他の１つの暗号化層を選択して（ＳＴ１０２０）、ステップＳＴ１００５以降の処理を繰り返す。処理部６０は、全ての暗号化層についてステップＳＴ１００５〜ＳＴ１０１０を実行すると（ＳＴ１０１５のＮｏ）、図２２のフローチャートの処理を終了する。
【０１３０】
各暗号化層に含まれる秘匿情報を暗号化すると、処理部６０は、ステップＳＴ１００〜ＳＴ１３５Ｂの処理によって取得された各階層の情報に基づいて、複数のモジュールＵの各々に与える光学的な構成を判定する（ＳＴ１４５）。
【０１３１】
図２３は、第３の実施形態に係る光学コードの読み取り処理の一例を説明するためのフローチャートである。ここでは、図１９における特定のユーザ（ユーザＩＤ「Ａｌｉｃｅ」）が秘匿情報を読み出す場合を例に挙げながら、光学コードの読み取り処理を説明する。
【０１３２】
処理部６０は、図１０のフローチャートと同様に、撮像部４０などにおいて撮像された画像から、各モジュールＵが表す情報を読み取り（ＳＴ５００）、読み取った複数のモジュールＵが表す情報に基づいて、各階層（Ｌ０，Ｌ１，…）に含まれる情報を取得する（ＳＴ５０５）。
【０１３３】
処理部６０は、各階層（Ｌ０，Ｌ１，…）に含まれる情報がそれぞれ得られると、暗号化層以外の各階層に含まれる情報を、ＱＲコード（登録商標）などの所定の光学コードの読み取り形式に従って文字等に変換し、記憶部５０に格納する（ＳＴ５１５）。
【０１３４】
処理部６０は、共通層（Ｌ１）に含まれる１以上のユーザ情報（図１９の例では２つのユーザ情報）から、１つのユーザＩＤ（「Ａｌｉｃｅ」）が含まれた１つのユーザ情報を特定する（ＳＴ５４５Ａ）。
【０１３５】
処理部６０は、ステップＳＴ５４５Ａにおいて特定したユーザ情報に含まれる階層ＩＤに基づいて、１つの暗号化層を特定する（ＳＴ５８０）。
【０１３６】
処理部６０は、ステップＳＴ５８０において特定した暗号化層に含まれる秘匿情報を、１つのユーザＩＤ（「Ａｌｉｃｅ」）に関連付けられた暗号鍵に基づいて復号する（ＳＴ５８５）。
【０１３７】
ステップＳＴ５８５において１つの暗号化層の秘匿情報を復号すると、処理部６０は、この暗号化層に含まれる情報を、ＱＲコード（登録商標）などの所定の光学コードの読み取り形式に従って変換する（ＳＴ５９０）。これにより、処理部６０は、復号された秘匿情報を数字や文字などに変換する。
【０１３８】
以上説明したように、本実施形態によれば、ユーザと暗号化層とを一対一に対応付けるユーザ情報が共通層に含まれており、１つの暗号化層に含まれた秘匿情報は、その１つの暗号化層に対応する１のユーザが所有した暗号鍵によって暗号化されている。従って、本実施形態においても、上述した各実施形態と同様に、暗号化層に記録される秘匿情報へのアクセスをユーザ毎に制御することが可能である。
【０１３９】
＜第４の実施形態＞
次に、本発明の第４の実施形態について説明する。本実施形態は、上述した各実施形態に係る光学コードの階層構造において、各モジュールＵに記録される情報や、階層内の各ブロックに記録される情報のパリティを検査できるようにしたものである。
【０１４０】
図２４は、第４の実施形態に係る光学コードにおける情報の階層構造の一例を示す図である。図２４に示す階層構造は、図３に示す階層構造における階層Ｌ１３〜Ｌ１６をパリティ検査用の階層（以下、個々の階層を区別せずにパリティ層と記す場合がある。）に置き換えたものである。
【０１４１】
本実施形態において、光学コードを構成する複数のモジュールＵは、それぞれＭ個のモジュールＵからなる複数のブロックに区分される。１つの階層（Ｌ０〜Ｌ１６）に含まれる情報は、この複数のブロックと一対一に対応した複数のコード語を含む。１つのブロックに対応する１つのコード語は、１つのブロックを構成するＭ個のモジュールと一対一に対応したＭビットの情報を含む。例えばＱＲコード（登録商標）の場合、コード語は８ビットであり、１つのブロックを構成するモジュールＵの個数は８である。ＱＲコード（登録商標）では、記録する情報が８ビットのコード語（データコード語）に変換されており、このコード語を基本単位として、リードソロモン符号による誤り訂正コード語が生成される。以下では一例として、Ｍ＝８とする。
【０１４２】
図２４の例において、階層Ｌ１３及びＬ１４は第１パリティ層であり、階層Ｌ１５及びＬ１６は第２パリティ層である。
【０１４３】
第１パリティ層は、光学コードの複数のブロックと一対一に対応する複数の第１パリティ情報を含む。１つのブロックに対応する１つの第１パリティ情報は、１つのブロックを構成する８個のモジュールと一対一に対応した８個の第１パリティビットＰＢ１を含む。１つの第１パリティビットＰＢ１は、この１つの第１パリティビットＰＢ１に対応する１つのモジュールＵが表すＮビットの情報（図２４の例では１７ビット）のうちのＫビット（Ｎ＞Ｋ＞１）についてのパリティビットである。
【０１４４】
第２パリティ層は、光学コードの複数のブロックと一対一に対応する複数の第２パリティ情報を含む。複数の第２パリティ情報の各々は、上述したＫビットの情報（第１パリティビットＰＢ１によってパリティの検査が行われる情報）を含んだＫ個の階層と一対一に対応するＫ個の第２パリティビットＰＢ２を含む。１つのブロックに対応する１つの第２パリティ情報に含まれる１つの第２パリティビットは、この１つのブロックに対応する１つのコード語であって、この１つの第２パリティビットに対応する１つの階層に属した当該１つのコード語に含まれる８ビットの情報についてのパリティビットである。
【０１４５】
図２５は、パリティ層を説明するための図である。図２５における「ＢＩＴ１」〜「ＢＩＴ８」は、１つのコード語を構成する８つのビットを示しており、それぞれ１つのブロックに属する８個のモジュールＵに対応する。階層を表す「Ｌ１」，「Ｌ２」…の下に並んだ８つの数字（「１」又は「０」）は、１つの階層に属する１つのコード語における各ビットの値を示す。
【０１４６】
「Ｌ１３」の下に並んだ８つの数字は、それぞれ第１パリティビットＰＢ１の値を示す。この８つの第１パリティビットＰＢ１の集まりが、１つの第１パリティ情報を構成する。
【０１４７】
１つの第１パリティビットＰＢ１は、その左側に並んだ６つの数字（１つのモジュールＵが表す１７ビットの情報中の６ビット）に含まれる「１」の個数が偶数である場合に「０」となり、この個数が奇数である場合に「１」となる。
【０１４８】
６つの階層（Ｌ１，Ｌ３，Ｌ５，Ｌ７，Ｌ９，Ｌ１１）に属する６つのコード語（それぞれ８ビット）の下側に配置された６つの数字（「１」又は「０」）は、それぞれ１つの第２パリティビットＰＢ２を示す。この６つの第２パリティビットＰＢ２は、１つの第２パリティ情報に含まれる。６つの階層（Ｌ１，Ｌ３，Ｌ５，Ｌ７，Ｌ９，Ｌ１１）は、上述した第１パリティビットＰＢ１によってパリティの検査が行われる６ビットの情報を含んだ６つの階層である。６つの第２パリティビットＰＢ２は、この６つの階層（Ｌ１，Ｌ３，Ｌ５，Ｌ７，Ｌ９，Ｌ１１）と一対一に対応する。
【０１４９】
１つの第２パリティビットＰＢ２は、その上側に並んだ８つの数字（１つのコード語に含まれる８ビット）に含まれる「１」の個数が偶数である場合に「０」となり、この個数が奇数である場合に「１」となる。
【０１５０】
「Ｌ１３」の下に並んだ８つの第１パリティビットＰＢ１（第１パリティ情報）の下側に記載される数字（「１」又は「０」）は、第３パリティビットＰＢ３の値を示す。第３パリティビットＰＢ３は、第１パリティ情報についてのパリティビットである。第２パリティ情報は、上述した６つの第２パリティビットＰＢ２に加えて、第３パリティビットＰＢ３を更に含む。すなわち、１つのブロックに対応する１つの第２パリティ情報は、１つのブロックに対応する１つの第１パリティ情報（８個の第１パリティビットＰＢ１からなる８ビットの情報）についての第３パリティビットＰＢ３を含む。
【０１５１】
第３パリティビットＰＢ３は、その上側に並んだ８つの数字（第１パリティ情報の８ビット）に含まれる「１」の個数が偶数である場合に「０」となり、この個数が奇数である場合に「１」となる。
【０１５２】
６つの第２パリティビットＰＢ２と１つの第３パリティビットＰＢ３は、図２５において点線で示すように、階層Ｌ１５の１つのコード語に対応した８ビットの領域に配置される。
【０１５３】
第２パリティ情報は、図２５において示すように、第４パリティビットＰＢ４を更に含む。第４パリティビットＰＢ４は、第２パリティ情報に含まれる６つの第２パリティビットＰＢ２と１つの第３パリティビットＰＢ３とからなる７ビットの情報についてのパリティビットである。第４パリティビットＰＢ４は、この７ビットの情報（「Ｌ１５」の下に並ぶ７つの数字）に含まれる「１」の個数が偶数である場合に「０」となり、この個数が奇数である場合に「１」となる。
【０１５４】
なお、階層Ｌ１４の第１パリティ層と階層Ｌ１６の第２パリティ層は、図２４における階層Ｌ１，Ｌ３，Ｌ５，Ｌ７，Ｌ９，Ｌ１１をそれぞれ階層Ｌ２，Ｌ４，Ｌ６，Ｌ８，Ｌ１０，Ｌ１２に置き換えたものである。
【０１５５】
図２６は、第４の実施形態に係る光学コードの生成処理の一例を説明するためのフローチャートである。図２６に示すフローチャートは、図６に示すフローチャートのステップＳＴ１３５とステップＳＴ１４５の間にステップＳＴ１４０を追加したものである。
【０１５６】
処理部６０は、ステップＳＴ１００〜ＳＴ１３５の処理によって各階層に記録する情報が生成され、各暗号化層の秘匿情報が暗号化された後、階層Ｌ１３，Ｌ１４にそれぞれ第１パリティ層を作成し、階層Ｌ１５及びＬ１６にそれぞれ第２パリティ層を作成する（ＳＴ１４０）。処理部６０は、これらのパリティ層を作成した後、ステップＳＴ１００〜ＳＴ１４０の処理によって取得された各階層の情報に基づいて、複数のモジュールＵの各々に与える光学的な構成を判定する（ＳＴ１４５）。
【０１５７】
図２７は、第４の実施形態に係る光学コードの読み取り処理の一例を説明するためのフローチャートである。図２７に示すフローチャートは、図１０に示すフローチャートのステップＳＴ５０５とステップＳＴ５１５の間にステップＳＴ５１０を追加したものである。
【０１５８】
処理部６０は、ステップＳＴ５０５において各階層に含まれる情報をそれぞれ取得すると、階層Ｌ０〜Ｌ１２の情報に基づいて算出される各パリティビット（ＰＢ１〜ＰＢ３）の値と、パリティ層（Ｌ１３〜Ｌ１６）に記録されている各パリティビット（ＰＢ１〜ＰＢ３）の値とを照合する。照合の結果、不一致のパリティビット（ＰＢ１〜ＰＢ３）が見つかった場合、処理部６０は、そのパリティビットに関してエラーが発生していると判定する。また、１つのみの第１パリティビットＰＢ１に関連して１以上の第２パリティビットＰＢ２に不一致が生じている場合や、１つのみの第２パリティビットＰＢ２に関連して１以上の第１パリティビットＰＢ１に不一致が生じている場合、処理部６０は、該当するエラー箇所のビット値を反転させることにより、エラーを訂正する（ＳＴ５１０）。
【０１５９】
以上説明したように、本実施形態によれば、個々のモジュールＵにおいて発生したエラーを第１パリティビットＰＢ１によって検出可能であり、また、個々のコード語において発生したエラーを第２パリティビットＰＢ２によって検出可能である。また、第１パリティビットＰＢ１と第２パリティビットＰＢ２を両方参照することにより、１つのモジュールＵに関連して発生したエラーや１つの階層に関連して発生したエラーを、ブロック単位（コード語単位）で訂正することが可能である。
【０１６０】
なお、本発明は上述した実施形態にのみ限定されるものではなく、種々のバリエーションを含んでいる。
【０１６１】
例えば、上述した実施形態では、複数のモジュールＵがＱＲコード（登録商標）に準じた形式で配置される例を挙げた、本発明はこの例に限定されない。すなわち、本発明は二次元コードに限定されるものではなく、各モジュールにおいて複数ビットの情報を表すことが可能な他の様々な光学コード（カラーバーコードなど）にも広く適用可能である。
【０１６２】
以下、本開示の技術に関連する付記を記載する。
【０１６３】
［付記１］
規則的に配置された複数のモジュールによって光学的に読み取り可能な情報を表す光学コードであって、
前記複数のモジュールの各々は、光学的に読み取り可能なＮビット（Ｎは２以上の整数を示す。）の情報を表しており、
前記複数のモジュールが表す全体の情報は、Ｎ個の階層に分かれており、
１つの前記モジュールが表す前記Ｎビットの情報は、前記Ｎ個の階層の各々に１ビットずつ含まれており、
前記Ｎ個の階層は、
１以上のユーザと一対一に対応する１以上のユーザ層と、
暗号化された秘匿情報を含む１以上の暗号化層とを含み、
１の前記ユーザに対応する１つの前記ユーザ層は、
前記１のユーザを識別するためのユーザＩＤと、
前記１のユーザが所有する暗号鍵により暗号化された少なくとも１つ階層情報とを含み、
１つの前記階層情報は、
１つの前記暗号化層を識別するための階層ＩＤと、
前記１つの暗号化層に含まれる前記暗号化された秘匿情報を復号するための復号情報とを含む、
光学コード。
【０１６４】
［付記２］
規則的に配置された複数のモジュールによって光学的に読み取り可能な情報を表す光学コードであって、
前記複数のモジュールの各々は、光学的に読み取り可能なＮビット（Ｎは３以上の整数を示す。）の情報を表しており、
前記複数のモジュールが表す全体の情報は、Ｎ個の階層に分かれており、
１つの前記モジュールが表す前記Ｎビットの情報は、前記Ｎ個の階層の各々に１ビットずつ含まれており、
前記Ｎ個の階層は、
１以上のユーザと一対一に対応する１以上のユーザ情報を含んだ共通層と、
前記１以上のユーザと一対一に対応する１以上のユーザ層と、
暗号化された秘匿情報を含む１以上の暗号化層とを含み、
１の前記ユーザに対応する１つの前記ユーザ情報は、
前記１のユーザを識別するためのユーザＩＤと、
前記１のユーザに対応する１の前記ユーザ層を識別するための階層ＩＤとを含み、
１の前記ユーザに対応する１つの前記ユーザ層は、
前記１のユーザが所有する暗号鍵により暗号化された少なくとも１つの階層情報を含み、
１つの前記階層情報は、
１つの前記暗号化層を識別するための階層ＩＤと、
前記１つの暗号化層に含まれる前記暗号化された秘匿情報を復号するための復号情報とを含む、
光学コード。
【０１６５】
［付記３］
前記暗号鍵は、前記階層情報を構成する複数ビットにおける各ビットの値を反転させるか否か指定する情報である、
付記１又は２に記載の光学コード。
【０１６６】
［付記４］
前記復号情報は、前記暗号化された前記秘匿情報を構成する複数のビットにおける各ビットの値を反転させるか否か指定する情報である、
付記１〜３のいずれか一項に記載の光学コード。
【０１６７】
［付記５］
規則的に配置された複数のモジュールによって光学的に読み取り可能な情報を表す光学コードであって、
前記複数のモジュールの各々は、光学的に読み取り可能なＮビット（Ｎは２以上の整数を示す。）の情報を表しており、
前記複数のモジュールが表す全体の情報は、Ｎ個の階層に分かれており、
１つの前記モジュールが表す前記Ｎビットの情報は、前記Ｎ個の階層の各々に１ビットずつ含まれており、
前記Ｎ個の階層は、
１以上のユーザと一対一に対応する１以上のユーザ情報を含んだ共通層と、
前記１以上のユーザと一対一に対応する１以上の暗号化層とを含み、
１つの前記ユーザ情報は、
１の前記ユーザを識別するためのユーザＩＤと、
前記１のユーザに対応する１つの前記暗号化層を識別するための階層ＩＤとを含み、
１つの前記暗号化層は、
１の前記ユーザが所有する暗号鍵により暗号化された秘匿情報を含む、
光学コード。
【０１６８】
［付記６］
前記秘匿情報を構成する複数のビットは、前記複数のモジュールの少なくとも一部と一対一に対応しており、
前記暗号鍵は、前記秘匿情報を構成する複数ビットにおける各ビットの値を反転させるか否か指定する情報である、
付記５に記載の光学コード。
【０１６９】
［付記７］
前記複数のモジュールの少なくとも一部は、それぞれＭ個のモジュールからなる複数のブロックに区分されており、
前記複数の階層は、第１パリティ層を含み、
前記第１パリティ層は、前記複数のブロックと一対一に対応する複数の第１パリティ情報を含み、
１つの前記ブロックに対応する１つの前記第１パリティ情報は、前記１つのブロックを構成する前記Ｍ個のモジュールと一対一に対応するＭ個の第１パリティビットを含み、
１つの前記第１パリティビットは、前記１つの第１パリティビットに対応する１つの前記モジュールが表す前記Ｎビットの情報のうちのＫビット（Ｋは１より大きくＮより小さい整数を示す。）の情報についてのパリティビットである、
付記１〜６のいずれか一項に記載の光学コード。
【０１７０】
［付記８］
前記複数の階層の各々は、前記複数のブロックと一対一に対応する複数のコード語を含んでおり、
１つの前記ブロックに対応する１つの前記コード語は、前記１つのブロックを構成する前記Ｍ個のモジュールと一対一に対応するＭビットの情報を含み、
前記複数の階層は、第２パリティ層を含み、
前記第２パリティ層は、前記複数のブロックと一対一に対応する複数の第２パリティ情報を含み、
前記複数の第２パリティ情報の各々は、前記Ｋビットの情報を含むＫ個の階層と一対一に対応するＫ個の第２パリティビットを含んでおり、
１つの前記ブロックに対応する１つの前記第２パリティ情報に含まれる１つの前記第２パリティビットは、前記１つのブロックに対応する１つの前記コード語であって、前記１つの第２パリティビットに対応する１つの前記階層に属した当該１つのコード語に含まれる前記Ｍビットの情報についてのパリティビットである、
付記７に記載の光学コード。
【０１７１】
［付記９］
１つの前記ブロックに対応する１つの前記第２パリティ情報は、前記１つのブロックに対応する１つの前記第１パリティ情報に含まれる前記Ｍ個の第１パリティビットからなるＭビットの情報についての第３パリティビットを更に含む、
付記８に記載の光学コード。
【０１７２】
［付記１０］
１つの前記第２パリティ情報は、前記１つの第２パリティ情報に含まれる前記Ｋ個の第２パリティビットと前記第３パリティビットとからなる（Ｋ＋１）ビットの情報についての第４パリティビットを更に含む、
付記９に記載の光学コード。
【０１７３】
［付記１１］
付記１に記載の光学コードを生成する光学コード生成方法であって、
前記Ｎ個の階層に記録する情報をそれぞれ取得する情報取得工程と、
前記情報取得工程において取得した情報に基づいて、前記複数のモジュールの各々に与える光学的な構成を判定するモジュール構成判定工程とを有し、
前記情報取得工程は、
前記１以上の暗号化層と一対一に対応する１以上の前記復号情報を生成する工程と、
前記１以上のユーザ層に記録する情報を取得する工程と、
前記１以上の暗号化層に記録する情報を取得する工程とを含み、
１つの前記ユーザ層に記録する情報を取得する工程は、
少なくとも１つの前記暗号化層に対応する少なくとも１つの前記階層情報を、前記少なくとも１つの暗号化層を識別するための少なくとも１つの前記階層ＩＤと、前記少なくとも１つの暗号化層に対応する少なくとも１つの前記復号情報とに基づいて生成する工程と、
生成した前記少なくとも１つの階層情報を、１つの前記ユーザＩＤに関連付けられた前記暗号鍵により暗号化する工程と、
暗号化した前記少なくとも１つの階層情報と、前記１つのユーザＩＤとを、前記１つのユーザ層に記録する情報として取得する工程とを含み、
１つの前記暗号化層に記録する情報を取得する工程は、
１つの前記暗号化層に記録する情報として、前記秘匿情報を取得する工程と、
取得した前記秘匿情報を、前記１つの暗号化層に対応する前記復号情報によって復号し得るように暗号化する工程とを含む、
光学コード生成方法。
【０１７４】
［付記１２］
付記２に記載の光学コードを生成する光学コード生成方法であって、
前記Ｎ個の階層に記録する情報をそれぞれ取得する情報取得工程と、
前記情報取得工程において取得した情報に基づいて、前記複数のモジュールの各々に与える光学的な構成を判定するモジュール構成判定工程とを有し、
前記情報取得工程は、
前記１以上の暗号化層と一対一に対応する１以上の前記復号情報を生成する工程と、
前記共通層に記録する情報を取得する工程と、
前記１以上のユーザ層に記録する情報を取得する工程と、
前記１以上の暗号化層に記録する情報を取得する工程とを含み、
前記共通層に記録する情報を取得する工程は、
前記１以上のユーザに対応する前記１以上のユーザ情報を生成する工程と、
生成した前記１以上のユーザ情報を、前記共通層に記録する情報として取得する工程とを含み、
１つの前記ユーザ層に記録する情報を取得する工程は、
１つの前記ユーザ情報に含まれる前記階層ＩＤに基づいて、前記１つのユーザ層を特定する工程と、
少なくとも１つの前記暗号化層に対応する少なくとも１つの前記階層情報を、前記少なくとも１つの暗号化層を識別するための少なくとも１つの前記階層ＩＤと、前記少なくとも１つの暗号化層に対応する少なくとも１つの前記復号情報とに基づいて生成する工程と、
生成した前記少なくとも１つの前記階層情報を、特定した前記１つのユーザ層に記録する情報として取得する工程と、
取得した前記少なくとも１つの前記階層情報を、前記１のユーザ情報に含まれる前記ユーザＩＤに関連付けられた前記暗号鍵により暗号化する工程とを含み、
１つの前記暗号化層に記録する情報を取得する工程は、
１つの前記暗号化層に記録する情報として、前記秘匿情報を取得する工程と、
取得した前記秘匿情報を、前記１つの暗号化層に対応する前記復号情報によって復号し得るように暗号化する工程とを含む、
光学コード生成方法。
【０１７５】
［付記１３］
付記５に記載の光学コードを生成する光学コード生成方法であって、
前記Ｎ個の階層に記録する情報をそれぞれ取得する情報取得工程と、
前記情報取得工程において取得した情報に基づいて、前記複数のモジュールの各々に与える光学的な構成を判定するモジュール構成判定工程とを有し、
前記情報取得工程は、
前記共通層に記録する情報を取得する工程と、
前記１以上の暗号化層に記録する情報を取得する工程とを含み、
前記共通層に記録する情報を取得する工程は、
前記１以上のユーザに対応する前記１以上のユーザ情報を生成する工程と、
生成した前記１以上のユーザ情報を、前記共通層に記録する情報として取得する工程とを含み、
１つの前記暗号化層に記録する情報を取得する工程は、
前記１つの暗号化層に記録する情報として、前記秘匿情報を取得する工程と、
前記１つの暗号化層を識別するための前記階層ＩＤが含まれた前記ユーザ情報に基づいて、１つの前記ユーザＩＤに関連づけられた前記暗号鍵を取得する工程と、
取得した前記秘匿情報を、取得した前記暗号鍵により暗号化する工程とを含む、
光学コード生成方法。
【０１７６】
［付記１４］
前記光学的な構成は、前記モジュールの全体に与える色に関する構成、又は、前記モジュールを区分する複数の領域の各々に与える色に関する構成である、
付記１１〜１３のいずれか一項に記載の光学コード生成方法。
【０１７７】
［付記１５］
付記１１〜１４のいずれか一項に記載の光学コード生成方法をコンピュータに実行させるためのプログラム。
【０１７８】
［付記１６］
付記１に記載の光学コードが表す情報を読み取る光学コード読み取り方法であって、
前記複数のモジュールを含む画像から、前記複数のモジュールの各々が表す前記Ｎビットの情報を読み取る工程と、
前記複数のモジュールの各々が表す前記Ｎビットの情報に基づいて、前記Ｎ個の階層に含まれた情報をそれぞれ取得する工程と、
前記１以上のユーザ層から、１つの前記ユーザＩＤが含まれた１つの前記ユーザ層を特定する工程と、
特定した前記１つのユーザ層に含まれる前記暗号化された少なくとも１つの階層情報を、前記１つのユーザＩＤに関連付けられた前記暗号鍵に基づいて復号する工程と、
復号した前記少なくとも１つの階層情報に基づいて、少なくとも１つの前記暗号化階層に含まれる前記秘匿情報を復号する工程とを有し、
１つの前記暗号化階層に含まれる前記秘匿情報を復号する工程は、
復号した１つの前記階層情報に含まれる前記階層ＩＤに基づいて、１つの前記暗号化層を特定する工程と、
特定した前記１つの暗号化層に含まれる前記秘匿情報を、前記復号した１つの階層情報に含まれる前記復号情報に基づいて復号する工程とを含む、
光学コード読み取り方法。
【０１７９】
［付記１７］
付記２に記載の光学コードが表す情報を読み取る光学コード読み取り方法であって、
前記複数のモジュールを含む画像から、前記複数のモジュールの各々が表す前記Ｎビットの情報を読み取る工程と、
前記複数のモジュールの各々が表す前記Ｎビットの情報に基づいて、前記Ｎ個の階層に含まれた情報をそれぞれ取得する工程と、
前記共通層に含まれる前記１以上のユーザ情報から、１つの前記ユーザＩＤが含まれた１つの前記ユーザ情報を特定する工程と、
特定した前記１つのユーザ情報に含まれる前記階層ＩＤから、１つの前記ユーザ層を特定する工程と、
特定した前記１つのユーザ層に含まれる前記暗号化された少なくとも１つの階層情報を、前記１つのユーザＩＤに関連付けられた前記暗号鍵に基づいて復号する工程と、
復号した前記少なくとも１つの階層情報に基づいて、少なくとも１つの前記暗号化階層に含まれる前記秘匿情報を復号する工程とを有し、
１つの前記暗号化階層に含まれる前記秘匿情報を復号する工程は、
復号した１つの前記階層情報に含まれる前記階層ＩＤに基づいて、１つの前記暗号化層を特定する工程と、
特定した前記１つの暗号化層に含まれる前記秘匿情報を、前記復号した１つの階層情報に含まれる前記復号情報に基づいて復号する工程とを含む、
光学コード読み取り方法。
【０１８０】
［付記１８］
付記５に記載の光学コードが表す情報を読み取る光学コード読み取り方法であって、
前記複数のモジュールを含む画像から、前記複数のモジュールの各々が表す前記Ｎビットの情報を読み取る工程と、
前記複数のモジュールの各々が表す前記Ｎビットの情報に基づいて、前記Ｎ個の階層に含まれた情報をそれぞれ取得する工程と、
前記共通層に含まれる前記１以上のユーザ情報から、１つの前記ユーザＩＤが含まれた１つの前記ユーザ情報を特定する工程と、
特定した前記１つのユーザ情報に含まれる前記階層ＩＤに基づいて、１つの前記暗号化層を特定する工程と、
特定した前記１つの暗号化層に含まれる前記秘匿情報を、前記１つのユーザＩＤに関連付けられた前記暗号鍵に基づいて復号する工程と
を有する光学コード読み取り方法。
【０１８１】
［付記１９］
付記１６〜１８のいずれか一項に記載の光学コード読み取り方法をコンピュータに実行させるためのプログラム。
【符号の説明】
【０１８２】
１…情報処理装置、１０…通信部、２０…入力部、３０…表示部、４０…撮像部、５０…記憶部、５１…プログラム、６０…処理部、Ｕ…モジュール、Ｌ０〜Ｌ１６…階層、ＰＢ１…第１パリティビット、ＰＢ２…第２パリティビット、ＰＢ３…第３パリティビット、ＰＢ４…第４パリティビット
【図１】
2020144796.tif 000003
【図２】
2020144796.tif 000004
【図３】
2020144796.tif 000005
【図４】
2020144796.tif 000006
【図５】
2020144796.tif 000007
【図６】
2020144796.tif 000008
【図７】
2020144796.tif 000009
【図８】
2020144796.tif 000010
【図９】
2020144796.tif 000011
【図１０】
2020144796.tif 000012
【図１１】
2020144796.tif 000013
【図１２】
2020144796.tif 000014
【図１３】
2020144796.tif 000015
【図１４】
2020144796.tif 000016
【図１５】
2020144796.tif 000017
【図１６】
2020144796.tif 000018
【図１７】
2020144796.tif 000019
【図１８】
2020144796.tif 000020
【図１９】
2020144796.tif 000021
【図２０】
2020144796.tif 000022
【図２１】
2020144796.tif 000023
【図２２】
2020144796.tif 000024
【図２３】
2020144796.tif 000025
【図２４】
2020144796.tif 000026
【図２５】
2020144796.tif 000027
【図２６】
2020144796.tif 000028
【図２７】
2020144796.tif 000029