IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ 株式会社デンソーウェーブの特許一覧

特許7488460二次元コードの生成方法、二次元コード及び二次元コード読取装置
<>
  • 特許-二次元コードの生成方法、二次元コード及び二次元コード読取装置 図1
  • 特許-二次元コードの生成方法、二次元コード及び二次元コード読取装置 図2
  • 特許-二次元コードの生成方法、二次元コード及び二次元コード読取装置 図3
  • 特許-二次元コードの生成方法、二次元コード及び二次元コード読取装置 図4
  • 特許-二次元コードの生成方法、二次元コード及び二次元コード読取装置 図5
  • 特許-二次元コードの生成方法、二次元コード及び二次元コード読取装置 図6
  • 特許-二次元コードの生成方法、二次元コード及び二次元コード読取装置 図7
  • 特許-二次元コードの生成方法、二次元コード及び二次元コード読取装置 図8
  • 特許-二次元コードの生成方法、二次元コード及び二次元コード読取装置 図9
  • 特許-二次元コードの生成方法、二次元コード及び二次元コード読取装置 図10
  • 特許-二次元コードの生成方法、二次元コード及び二次元コード読取装置 図11
  • 特許-二次元コードの生成方法、二次元コード及び二次元コード読取装置 図12
  • 特許-二次元コードの生成方法、二次元コード及び二次元コード読取装置 図13
  • 特許-二次元コードの生成方法、二次元コード及び二次元コード読取装置 図14
  • 特許-二次元コードの生成方法、二次元コード及び二次元コード読取装置 図15
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-05-14
(45)【発行日】2024-05-22
(54)【発明の名称】二次元コードの生成方法、二次元コード及び二次元コード読取装置
(51)【国際特許分類】
   G06K 19/06 20060101AFI20240515BHJP
   G06K 7/14 20060101ALI20240515BHJP
   H04L 9/08 20060101ALI20240515BHJP
   H04L 9/14 20060101ALI20240515BHJP
【FI】
G06K19/06 037
G06K7/14 017
H04L9/08 C
H04L9/14
【請求項の数】 12
(21)【出願番号】P 2020118951
(22)【出願日】2020-07-10
(65)【公開番号】P2022015837
(43)【公開日】2022-01-21
【審査請求日】2023-03-27
(73)【特許権者】
【識別番号】501428545
【氏名又は名称】株式会社デンソーウェーブ
(74)【代理人】
【識別番号】100095795
【弁理士】
【氏名又は名称】田下 明人
(74)【代理人】
【識別番号】100143454
【弁理士】
【氏名又は名称】立石 克彦
(72)【発明者】
【氏名】原 昌宏
【審査官】後藤 彰
(56)【参考文献】
【文献】特開2019-148930(JP,A)
【文献】特開2009-009547(JP,A)
【文献】特開2020-067883(JP,A)
【文献】特開2009-099091(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06K 19/06
G06K 7/14
H04L 9/08
H04L 9/14
(57)【特許請求の範囲】
【請求項1】
開示する開示データを表すコード語としてコード化された開示データコードの総数が、コード語を配置すべきコード領域に収容可能な容量に満たない場合、前記コード領域に配置された前記開示データコードがなすコード列の終端を示す終端識別コードをこのコード列の最後に配置するとともに、前記コード領域の空き部分にデータを表さない埋め草コードを配置する二次元コードの生成方法であって、
秘匿する2以上の秘匿データのそれぞれを表すコード語を暗号化するようにコード化された複数の秘匿データコードを、前記埋め草コードの一部または全部に代えて、前記終端識別コードの後に配置し、
前記複数の秘匿データコードの少なくとも一部は、それぞれ暗号強度が異なるように暗号化され、
1つの秘匿データを暗号化した暗号データと前記1つの秘匿データとは異なる他の秘匿データとをまとめて暗号化するようにコード化して前記秘匿データコードを生成することを特徴とする二次元コードの生成方法。
【請求項2】
開示する開示データを表すコード語としてコード化された開示データコードの総数が、コード語を配置すべきコード領域に収容可能な容量に満たない場合、前記コード領域に配置された前記開示データコードがなすコード列の終端を示す終端識別コードをこのコード列の最後に配置するとともに、前記コード領域の空き部分にデータを表さない埋め草コードを配置する二次元コードの生成方法であって、
秘匿する2以上の秘匿データのそれぞれを表すコード語を暗号化するようにコード化された複数の秘匿データコードを、前記埋め草コードの一部または全部に代えて、前記終端識別コードの後に配置し、
前記複数の秘匿データコードの少なくとも一部は、それぞれ暗号強度が異なるように暗号化され、
前記秘匿データコードには、前記暗号化されている前記秘匿データコードの復号に利用する暗号鍵を特定可能な鍵特定情報がそれぞれ付加され、
前記暗号鍵は、当該暗号鍵を利用して暗号化される前記秘匿データと異なる他の秘匿データ又は前記開示データに基づいて生成されることを特徴とする二次元コードの生成方法。
【請求項3】
開示する開示データを表すコード語としてコード化された開示データコードの総数が、コード語を配置すべきコード領域に収容可能な容量に満たない場合、前記コード領域に配置された前記開示データコードがなすコード列の終端を示す終端識別コードをこのコード列の最後に配置するとともに、前記コード領域の空き部分にデータを表さない埋め草コードを配置する二次元コードの生成方法であって、
秘匿する2以上の秘匿データのそれぞれを表すコード語を暗号化するようにコード化された複数の秘匿データコードを、前記埋め草コードの一部または全部に代えて、前記終端識別コードの後に配置し、
前記複数の秘匿データコードの少なくとも一部は、それぞれ暗号強度が異なるように暗号化され、
前記秘匿データコードには、前記暗号化されている前記秘匿データコードの復号に利用する暗号鍵を特定可能な鍵特定情報がそれぞれ付加され、
前記鍵特定情報は、前記開示データを変換した値と前記暗号鍵とから第1の生成処理に基づいて生成される値を第1の値とし、暗号化に前記暗号鍵を利用した前記秘匿データコードから第2の生成処理に基づいて生成される値を第2の値とするとき、前記第1の値及び前記第2の値から第3の生成処理に基づいて生成される第3の値に一致するように生成されることを特徴とする二次元コードの生成方法。
【請求項4】
開示する開示データを表すコード語としてコード化された開示データコードの総数が、コード語を配置すべきコード領域に収容可能な容量に満たない場合、前記コード領域に配置された前記開示データコードがなすコード列の終端を示す終端識別コードをこのコード列の最後に配置するとともに、前記コード領域の空き部分にデータを表さない埋め草コードを配置する二次元コードの生成方法であって、
秘匿する2以上の秘匿データのそれぞれを表すコード語を暗号化するようにコード化された複数の秘匿データコードを、前記埋め草コードの一部または全部に代えて、前記終端識別コードの後に配置し、
前記複数の秘匿データコードの少なくとも一部は、それぞれ暗号強度が異なるように暗号化され、
前記秘匿データコードには、前記暗号化されている前記秘匿データコードの復号に利用する暗号鍵を特定可能な鍵特定情報がそれぞれ付加され、
前記鍵特定情報は、当該鍵特定情報が付加される前記秘匿データコードの前記秘匿データとは異なる他の秘匿データを変換した値と前記暗号鍵とから第1の生成処理に基づいて生成される値を第1の値とし、暗号化に前記暗号鍵を利用した前記秘匿データコードから第2の生成処理に基づいて生成される値を第2の値とするとき、前記第1の値及び前記第2の値から第3の生成処理に基づいて生成される第3の値に一致するように生成されることを特徴とする二次元コードの生成方法。
【請求項5】
開示する開示データを表すコード語としてコード化された開示データコードの総数が、コード語を配置すべきコード領域に収容可能な容量に満たない場合、前記コード領域に配置された前記開示データコードがなすコード列の終端を示す終端識別コードをこのコード列の最後に配置するとともに、前記コード領域の空き部分にデータを表さない埋め草コードを配置する二次元コードの生成方法であって、
秘匿する2以上の秘匿データのそれぞれを表すコード語を暗号化するようにコード化された複数の秘匿データコードを、前記埋め草コードの一部または全部に代えて、前記終端識別コードの後に配置し、
前記複数の秘匿データコードの少なくとも一部は、それぞれ暗号強度が異なるように暗号化され、
前記開示データ及び複数の前記秘匿データの少なくとも1つから所定の認証用処理によって生成されたデータ認証情報が、前記埋め草コードの一部に代えて、前記終端識別コードの後に配置され、
前記データ認証情報は、前記終端識別コードの後であって、所定の位置設定処理によって生成元の前記開示データ又は前記秘匿データに基づいて設定される位置に配置されることを特徴とする二次元コードの生成方法。
【請求項6】
前記終端識別コードと先頭の前記秘匿データコードとの間には、後続のデータコードが前記秘匿データコードであることを示す秘匿コード識別子及び前記複数の秘匿データコードの個数を示す秘匿コード個数の少なくとも一方が配置されることを特徴とする請求項1~5のいずれか一項に記載の二次元コードの生成方法。
【請求項7】
前記秘匿データコードには、当該秘匿データコードの暗号化に関する情報を示す暗号識別情報が付加されることを特徴とする請求項1~6のいずれか一項に記載の二次元コードの生成方法。
【請求項8】
前記複数の秘匿データコードの少なくとも一部は、異なる暗号方式を採用することでそれぞれ暗号強度が異なるように暗号化されることを特徴とする請求項1~7のいずれか一項に記載の二次元コードの生成方法。
【請求項9】
開示する開示データを表すコード語としてコード化された開示データコードの総数が、コード語を配置すべきコード領域に収容可能な容量に満たない場合、前記コード領域に配置された前記開示データコードがなすコード列の終端を示す終端識別コードがこのコード列の最後に配置されるとともに、前記コード領域の空き部分にデータを表さない埋め草コードが配置される二次元コードであって、
秘匿する2以上の秘匿データのそれぞれを表すコード語を暗号化するようにコード化された複数の秘匿データコードが、前記埋め草コードの一部または全部に代えて、前記終端識別コードの後に配置され、
前記複数の秘匿データコードの少なくとも一部は、それぞれ暗号強度が異なるように暗号化され、
前記秘匿データコードは、1つの秘匿データを暗号化した暗号データと前記1つの秘匿データとは異なる他の秘匿データとをまとめて暗号化するようにコード化されていることを特徴とする二次元コード。
【請求項10】
開示する開示データを表すコード語としてコード化された開示データコードの総数が、コード語を配置すべきコード領域に収容可能な容量に満たない場合、前記コード領域に配置された前記開示データコードがなすコード列の終端を示す終端識別コードがこのコード列の最後に配置されるとともに、秘匿する2以上の秘匿データのそれぞれを表すコード語を暗号化するようにコード化された複数の秘匿データコードが前記終端識別コードの後であって前記コード領域の空き部分に配置される二次元コードを読取可能な二次元コードの読取装置であって、
前記複数の秘匿データコードの少なくとも一部は、それぞれ暗号強度が異なるように暗号化され、
前記終端識別コードよりも前に配置される前記開示データコードをデコードする第1デコード手段と、
前記終端識別コードの後に前記秘匿データコードが配置されているか否かを判断するデータコード判断手段と、
前記データコード判断手段により前記秘匿データコードが配置されていると判断した場合、複数の前記秘匿データコードのうち取得している暗号鍵を利用して復号可能な秘匿データコードをデコードする第2デコード手段と、
を備え、
前記秘匿データコードには、前記暗号化されている前記秘匿データコードの復号に利用する暗号鍵を特定可能な鍵特定情報がそれぞれ付加され、
前記鍵特定情報が付加された前記秘匿データコードの復号に利用する暗号鍵が、前記取得している暗号鍵であるか否かについて、前記鍵特定情報ごとに判断する鍵適合判断手段を備え、
複数の前記鍵特定情報のうち、前記鍵適合判断手段により、付加された前記秘匿データコードの復号に利用する暗号鍵が前記取得している暗号鍵であると判断されたものでは、当該鍵特定情報が付加された前記秘匿データコードを前記暗号鍵を利用して前記第2デコード手段によりデコードし、付加された前記秘匿データコードの復号に利用する暗号鍵が前記取得している暗号鍵でないと判断されたものでは、当該鍵特定情報が付加された前記秘匿データコードをデコードせず、
付加された前記秘匿データコードの復号に利用する暗号鍵が前記取得している暗号鍵であると前記鍵適合判断手段により複数判断された場合に、デコード可能な複数の前記秘匿データコードのうち前記第2デコード手段によりデコードする秘匿データコードを選択するための選択手段を備えることを特徴とする二次元コードの読取装置。
【請求項11】
前記秘匿データコードには、当該秘匿データコードの暗号化に関する情報を示す暗号識別情報が付加され、
前記第2デコード手段によりデコードされた前記秘匿データコードに付加された前記暗号識別情報に関する情報を出力する出力手段を備えることを特徴とする請求項10に記載の二次元コードの読取装置。
【請求項12】
前記二次元コードは、前記開示データ及び複数の前記秘匿データの少なくとも1つから所定の認証用処理によって生成されたデータ認証情報が前記終端識別コードの後に配置されるように生成され、
前記データコード判断手段により前記秘匿データコードが配置されていると判断した場合、前記終端識別コードの後に配置される前記データ認証情報を取得するデータ認証情報取得手段と、
前記開示データ及び複数の前記秘匿データの少なくとも1つから前記所定の認証用処理によって認証判定用情報を生成する認証判定用情報生成手段と、
前記データ認証情報取得手段により取得された前記データ認証情報と前記認証判定用情報生成手段により生成された前記認証判定用情報とが一致しない場合に、所定の報知を行う報知手段と、
を備えることを特徴とする請求項10又は11に記載の二次元コードの読取装置。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、秘密にして隠しておきたい秘匿データが記録される二次元コードの生成方法およびその読取装置に関するものである。
【背景技術】
【0002】
秘匿データが記録される二次元コードを生成したり読み取る技術として、例えば、下記特許文献1に開示される「情報送信方法及び携帯端末」が知られている。この従来技術では、送信側の携帯端末は、キー入力装置から入力された暗号キーにより送信データを暗号化しそれを記録するようにQRコード(登録商標)を生成して表示装置の画面に表示する。これに対し、受信側の携帯端末では、送信側の携帯端末の画面に表示されたQRコードの画像をカメラ等により読み込んでQRコードが暗号化されているか否かを判断した後、暗号化されている場合には暗号キーを要求する。そして、QRコードを逆変換するとともに入力された暗号キーにより送信データを復号して復元データを画面表示する。このような構成により、送信側の携帯端末から受信側の携帯端末に対して、秘匿すべき送信データを安全に送信することができる。しかしながら、上述のように暗号化されているものをQRコードに逆変換した場合には、通常、暗号化されたデータそのものは文字情報として意味をなさないものであるため、一般仕様の読取装置の画面に読取結果として表示される情報は意味不明なものであったり、画面表示の制御等に影響を与え得る制御コードに相当する情報になってしまうという問題がある。
【0003】
このように、復号できない暗号化されたデータそのものが表示又は出力されてしまうことを防止するため、例えば、下記特許文献2に開示される「二次元コードの生成方法」が知られている。この生成方法は、コード領域に配置された開示データコードがなすコード列の終端を示す終端識別コードをこのコード列の最後に配置するとともに、コード領域の空き部分にデータを表さない埋め草コードを配置するもので、秘匿するデータを表すコード語としてコード化された秘匿データコードを埋め草コードの一部または全部に代えて、終端識別コードの後に配置する。これにより、一般仕様の読取装置では、二次元コードのデコード処理において、コード領域に配置されたデータコードの先頭からコード列の終端を示す終端識別コードまでを読み取ってデコードするアルゴリズム仕様に設定されているため、終端識別コードの後に配置される秘匿データコードの存在を認識させないようにすることができる。すなわち、一般仕様の読取装置では、復号できない暗号化されたデータそのものが表示又は出力されることを防止できる。一方、終端識別コードの後のコード領域をもデコード対象とする読取装置であれば、暗号化された秘匿データコードを復号することで秘匿データを取得することができる。
【先行技術文献】
【特許文献】
【0004】
【文献】特開2004-147006号公報
【文献】特開2009-009547号公報
【発明の概要】
【発明が解決しようとする課題】
【0005】
ところで、秘匿データとしては、例えば、決済用の個人情報や身体情報のような秘匿性の高いデータが採用される場合があり、このような場合には暗号強度の高い暗号方式を利用して暗号化することで、その秘匿データの読み取りに関してセキュリティ性を高めることができる。その一方で、暗号強度が高くなるように暗号化された秘匿データを復号する場合には、復号に要する処理負荷が高くなるため、処理能力が低い読取装置では、円滑な読取作業ができないという問題がある。特に、複数の秘匿データが暗号化されて記録された二次元コードを大量に読み取る場合には、上記問題が顕著になる。
【0006】
本発明は、上述した課題を解決するためになされたものであり、その目的とするところは、複数の秘匿データが暗号化されて記録される二次元コードの読み取りに関して、セキュリティ性の確保と処理速度の低減抑制との両立を図り得る構成を提供し、最適なシステムを実現することにある。
【課題を解決するための手段】
【0007】
上記目的を達成するため、特許請求の範囲の請求項1に記載の発明は、
開示する開示データを表すコード語としてコード化された開示データコードの総数が、コード語を配置すべきコード領域に収容可能な容量に満たない場合、前記コード領域に配置された前記開示データコードがなすコード列の終端を示す終端識別コードをこのコード列の最後に配置するとともに、前記コード領域の空き部分にデータを表さない埋め草コードを配置する二次元コード(30)の生成方法であって、
秘匿する2以上の秘匿データのそれぞれを表すコード語を暗号化するようにコード化された複数の秘匿データコードを、前記埋め草コードの一部または全部に代えて、前記終端識別コードの後に配置し、
前記複数の秘匿データコードの少なくとも一部は、それぞれ暗号強度が異なるように暗号化され
1つの秘匿データを暗号化した暗号データと前記1つの秘匿データとは異なる他の秘匿データとをまとめて暗号化するようにコード化して前記秘匿データコードを生成することを特徴とする。
【0008】
請求項に記載の発明は、
開示する開示データを表すコード語としてコード化された開示データコードの総数が、コード語を配置すべきコード領域に収容可能な容量に満たない場合、前記コード領域に配置された前記開示データコードがなすコード列の終端を示す終端識別コードがこのコード列の最後に配置されるとともに、前記コード領域の空き部分にデータを表さない埋め草コードが配置される二次元コード(30)であって、
秘匿する2以上の秘匿データのそれぞれを表すコード語を暗号化するようにコード化された複数の秘匿データコードが、前記埋め草コードの一部または全部に代えて、前記終端識別コードの後に配置され、
前記複数の秘匿データコードの少なくとも一部は、それぞれ暗号強度が異なるように暗号化され
前記秘匿データコードは、1つの秘匿データを暗号化した暗号データと前記1つの秘匿データとは異なる他の秘匿データとをまとめて暗号化するようにコード化されていることを特徴とする。
【0009】
請求項10に記載の発明は、
開示する開示データを表すコード語としてコード化された開示データコードの総数が、コード語を配置すべきコード領域に収容可能な容量に満たない場合、前記コード領域に配置された前記開示データコードがなすコード列の終端を示す終端識別コードがこのコード列の最後に配置されるとともに、秘匿する2以上の秘匿データのそれぞれを表すコード語を暗号化するようにコード化された複数の秘匿データコードが前記終端識別コードの後であって前記コード領域の空き部分に配置される二次元コードを読取可能な二次元コードの読取装置(20)であって、
前記複数の秘匿データコードの少なくとも一部は、それぞれ暗号強度が異なるように暗号化され、
前記終端識別コードよりも前に配置される前記開示データコードをデコードする第1デコード手段(21)と、
前記終端識別コードの後に前記秘匿データコードが配置されているか否かを判断するデータコード判断手段(21)と、
前記データコード判断手段により前記秘匿データコードが配置されていると判断した場合、複数の前記秘匿データコードのうち取得している暗号鍵を利用して復号可能な秘匿データコードをデコードする第2デコード手段(21)と、
を備え、
前記秘匿データコードには、前記暗号化されている前記秘匿データコードの復号に利用する暗号鍵を特定可能な鍵特定情報がそれぞれ付加され、
前記鍵特定情報が付加された前記秘匿データコードの復号に利用する暗号鍵が、前記取得している暗号鍵であるか否かについて、前記鍵特定情報ごとに判断する鍵適合判断手段を備え、
複数の前記鍵特定情報のうち、前記鍵適合判断手段により、付加された前記秘匿データコードの復号に利用する暗号鍵が前記取得している暗号鍵であると判断されたものでは、当該鍵特定情報が付加された前記秘匿データコードを前記暗号鍵を利用して前記第2デコード手段によりデコードし、付加された前記秘匿データコードの復号に利用する暗号鍵が前記取得している暗号鍵でないと判断されたものでは、当該鍵特定情報が付加された前記秘匿データコードをデコードせず、
付加された前記秘匿データコードの復号に利用する暗号鍵が前記取得している暗号鍵であると前記鍵適合判断手段により複数判断された場合に、デコード可能な複数の前記秘匿データコードのうち前記第2デコード手段によりデコードする秘匿データコードを選択するための選択手段を備えることを特徴とする。
なお、上記各括弧内の符号は、後述する実施形態に記載の具体的手段との対応関係を示すものである。
【発明の効果】
【0010】
請求項1の発明では、秘匿する2以上の秘匿データのそれぞれを表すコード語を暗号化するようにコード化された複数の秘匿データコードを、埋め草コードの一部または全部に代えて、終端識別コードの後に配置する。そして、複数の秘匿データコードの少なくとも一部は、それぞれ暗号強度が異なるように暗号化される。
【0011】
このように、終端識別コードの後に配置される複数の秘匿データコードの少なくとも一部は、それぞれ暗号強度が異なるように暗号化されるため、同じ二次元コードを読み取る場合でも、暗号強度が高い秘匿データコードを復号できる読取装置であれば、開示データに加えて秘匿性の高い秘匿データを取得でき、暗号強度が低い秘匿データコードを復号する読取装置であれば、開示データに加えて秘匿性の低い秘匿データを取得できる。特に、暗号強度が低い秘匿データコードを復号する読取装置では、復号に要する処理負荷が高くなることもないので、処理能力が低い読取装置であっても、円滑な読取作業を行うことができる。すなわち、複数の秘匿データが暗号化されて記録される二次元コードの読み取りに関して、セキュリティ性の確保と処理速度の低減抑制との両立を図ることができる。
【0012】
請求項の発明では、終端識別コードと先頭の秘匿データコードとの間には、後続のデータコードが秘匿データコードであることを示す秘匿コード識別子及び複数の秘匿データコードの個数を示す秘匿コード個数の少なくとも一方が配置される。これにより、読取装置では、秘匿コード識別子又は秘匿コード個数の存在によって、終端識別コードの後に配置されたデータコードは、秘匿データコードであることがわかるので、例えば、読取対象外のデータやデータ化けしたデータ等を秘匿データコードと誤認して読み取ることを防ぎ、またこれに起因する誤動作の発生を防止することもできる。
【0013】
請求項の発明では、秘匿データコードには、当該秘匿データコードの暗号化に関する情報を示す暗号識別情報が付加されているため、読取装置では、暗号識別情報が付加された秘匿データコードの復号方法を容易に識別することができる。
【0014】
請求項の発明では、複数の秘匿データコードの少なくとも一部は、異なる暗号方式を採用することでそれぞれ暗号強度が異なるように暗号化される。これにより、例えば、1つの秘匿データコードを比較的暗号強度が低いDES(Data Encryption Standard)によって暗号化し、他の1つの秘匿データコードを比較的暗号強度が高いAES(Advanced Exception Standard)によって暗号化することで、それぞれの暗号強度を容易に異ならせることができる。
【0015】
請求項の発明では、1つの秘匿データを暗号化した暗号データと当該1つの秘匿データとは異なる他の秘匿データとをまとめて暗号化するようにコード化して秘匿データコードが生成される。これにより、上記1つの秘匿データは二重に暗号化されるので、他の秘匿データとの暗号強度を容易に異ならせることができる。特に、複数の秘匿データをそれぞれの暗号強度を変えるように暗号化する場合でも、同じ暗号方式を採用することができるので、読取装置においてプログラムメモリやワークメモリを削減することができる。
【0016】
請求項2,3,4の発明では、秘匿データコードには、暗号化されている秘匿データコードの復号に利用する暗号鍵を特定可能な鍵特定情報がそれぞれ付加される。これにより、読取装置では、秘匿データコードごとに、その秘匿データコードの復号に利用する暗号鍵をそれぞれ容易に特定でき、デコード処理等の高速化を図ることができる。
【0017】
請求項の発明では、暗号鍵は、当該暗号鍵を利用して暗号化される秘匿データと異なる他の秘匿データ又は開示データに基づいて生成される。これにより、読取装置では、復号すべき秘匿データに対応する暗号鍵を予め取得していない場合でも、上記開示データ等から生成した暗号鍵を利用して上記復号すべき秘匿データを復号することができる。特に、暗号鍵を読取装置に記憶させる必要がないので、面倒な暗号鍵の管理が不要になるだけでなく、読取装置の盗難等に起因する暗号鍵の漏洩なども防止することができる。
【0018】
請求項の発明では、鍵特定情報は、開示データを変換した値と暗号鍵とから第1の生成処理に基づいて生成される値を第1の値とし、暗号化に上記暗号鍵を利用した秘匿データコードから第2の生成処理に基づいて生成される値を第2の値とするとき、これら第1の値及び第2の値から第3の生成処理に基づいて生成される第3の値に一致するように生成される。これにより、開示データが改竄された二次元コードを読み取っていると、この改竄された二次元コードから読み取った鍵特定情報から特定される暗号鍵と開示データとから上述した第1の生成処理、第2の生成処理及び第3の生成処理に基づいて上記第3の値として生成される値が、上記鍵特定情報に一致しないため、開示データの改竄を検出することができる。特に、第3の値は、データ改竄検出のための情報であるだけでなく鍵特定情報でもあるため、二次元コードのデータ記録量に関して、データ改竄検出及び暗号鍵特定に必要となるデータ記録量が削減されるので、データ効率を向上させることができる。
【0019】
請求項の発明では、鍵特定情報は、当該鍵特定情報が付加される秘匿データコードの秘匿データとは異なる他の秘匿データを変換した値と暗号鍵とから第1の生成処理に基づいて生成される値を第1の値とし、暗号化に上記暗号鍵を利用した秘匿データコードから第2の生成処理に基づいて生成される値を第2の値とするとき、これら第1の値及び第2の値から第3の生成処理に基づいて生成される第3の値に一致するように生成される。これにより、上記他の秘匿データが改竄された二次元コードを読み取っていると、この改竄された二次元コードから読み取った鍵特定情報から特定される暗号鍵と上記他の秘匿データとから上述した第1の生成処理、第2の生成処理及び第3の生成処理に基づいて上記第3の値として生成される値が、上記鍵特定情報に一致しないため、上記他の秘匿データの改竄を検出することができる。特に、第3の値は、データ改竄検出のための情報であるだけでなく鍵特定情報でもあるため、二次元コードのデータ記録量に関して、データ改竄検出及び暗号鍵特定に必要となるデータ記録量が削減されるので、データ効率を向上させることができる。
【0020】
請求項の発明では、開示データ及び複数の秘匿データの少なくとも1つから所定の認証用処理によって生成されたデータ認証情報が、埋め草コードの一部に代えて、終端識別コードの後に配置される。これにより、読取装置では、終端識別コードの後に配置されるデータ認証情報と、開示データ等から上記所定の認証用処理によって生成された情報との比較結果によって、開示データ等が改竄されているか検出することができる。
【0022】
請求項の発明では、データ認証情報は、終端識別コードの後であって、所定の位置設定処理によって生成元の開示データ又は秘匿データに基づいて設定される位置に配置される。これにより、データ認証情報が配置される位置を固定とすることなく開示データ等に合わせて変化させることができるので、データ認証情報自体の改竄をより困難にすることができる。
【0027】
請求項9の発明によれば、請求項1と同様の効果を奏する二次元コードを実現できる
【0028】
請求項10の発明では、複数の秘匿データコードの少なくとも一部は、それぞれ暗号強度が異なるように暗号化される。そして、データコード判断手段により、終端識別コードの後に秘匿データコードが配置されているか否かを判断し、秘匿データコードが配置されていると判断した場合には、第1デコード手段により開示データコードをデコードするとともに、第2デコード手段により複数の秘匿データコードのうち取得している暗号鍵を利用して復号可能な秘匿データコードをデコードする。
【0029】
これにより、同じ二次元コードを読み取る場合でも、暗号強度が高い秘匿データコードを復号できる読取装置であれば、開示データに加えて秘匿性の高い秘匿データを取得でき、暗号強度が低い秘匿データコードを復号する読取装置であれば、開示データに加えて秘匿性の低い秘匿データを取得できる。特に、暗号強度が低い秘匿データコードを復号する読取装置では、復号に要する処理負荷が高くなることもないので、処理能力が低い読取装置であっても、円滑な読取作業を行うことができる。
【0030】
請求項10の発明では、秘匿データコードには、暗号化されている秘匿データコードの復号に利用する暗号鍵を特定可能な鍵特定情報がそれぞれ付加される。そして、複数の鍵特定情報のうち、鍵適合判断手段により、付加された秘匿データコードの復号に利用する暗号鍵が取得している暗号鍵であると判断されたものでは、当該鍵特定情報が付加された秘匿データコードを暗号鍵を利用して第2デコード手段によりデコードし、付加された秘匿データコードの復号に利用する暗号鍵が取得している暗号鍵でないと判断されたものでは、当該鍵特定情報が付加された秘匿データコードをデコードしない。
【0031】
これにより、付加された秘匿データコードの復号に利用する暗号鍵が取得している暗号鍵でないと判断された鍵特定情報では、その鍵特定情報を付加した秘匿データコードがデコードされないので、取得している暗号鍵を利用して復号可能な秘匿データコードに関して第2デコード手段によるデコード処理等の高速化を図ることができる。
【0032】
請求項11の発明では、秘匿データコードには、当該秘匿データコードの暗号化に関する情報を示す暗号識別情報が付加される。そして、第2デコード手段によりデコードされた秘匿データコードに付加された暗号識別情報に関する情報を出力する出力手段が設けられる。これにより、第2デコード手段によりデコードされた秘匿データコードであれば、その秘匿データコードに付加された暗号識別情報に関する情報が出力手段により出力されるので、読み取られた秘匿データの暗号化に関する情報を容易に取得することができる。
【0033】
請求項10の発明では、付加された秘匿データコードの復号に利用する暗号鍵が取得している暗号鍵であると鍵適合判断手段により複数判断された場合に、デコード可能な複数の秘匿データコードのうち第2デコード手段によりデコードする秘匿データコードを選択するための選択手段が設けられる。これにより、複数の暗号鍵を取得していることから複数の秘匿データコードを復号できる場合でも、選択手段により選択された秘匿データコードのみがデコードされるので、選択されない秘匿データコードのデコード処理、すなわち、不要なデコード処理等をなくすことができる。
【0034】
請求項12の発明では、二次元コードは、開示データ及び複数の秘匿データの少なくとも1つから所定の認証用処理によって生成されたデータ認証情報が終端識別コードの後に配置されるように生成される。そして、データコード判断手段により秘匿データコードが配置されていると判断した場合、終端識別コードの後に配置されるデータ認証情報を取得するデータ認証情報取得手段と、開示データ及び複数の秘匿データの少なくとも1つから上記所定の認証用処理によって認証判定用情報を生成する認証判定用情報生成手段と、データ認証情報取得手段により取得されたデータ認証情報と認証判定用情報生成手段により生成された認証判定用情報とが一致しない場合に、所定の報知を行う報知手段と、が設けられる。
【0035】
これにより、開示データ等が改竄された二次元コードを読み取っている場合には、データ認証情報取得手段により取得されたデータ認証情報と認証判定用情報生成手段により生成された認証判定用情報とが一致しないことで、報知手段により所定の報知が行われる。このため、上記所定の報知を受けた読取装置のユーザ等は、読み取った二次元コードの開示データ等が改竄されていることを容易に把握することができる。
【図面の簡単な説明】
【0036】
図1】第1実施形態に係る読取装置及び生成装置を備える読取システムを概略的に例示する説明図である。
図2】第1実施形態において生成装置により生成される二次元コードの開示データ及び各秘匿データコード等の配置状態を説明する説明図である。
図3】生成装置の制御部にてなされる二次元コード生成処理の流れを例示するフローチャートである。
図4図3の格納データ符号化処理のサブルーチンの流れを例示するフローチャートである。
図5】読取装置の制御部にてなされる二次元コード読取処理の流れを例示するフローチャートである。
図6図5のデータコード復号処理のサブルーチンの流れを例示するフローチャートである。
図7図5のデータ出力処理のサブルーチンの流れを例示するフローチャートである。
図8】第2実施形態において生成装置により生成される二次元コードの開示データコード及び秘匿データコード等の配置状態を説明する説明図であり、図8(A)は、図8(B)の秘匿データコードCの生成過程を示し、図8(B)は、図8(C)の秘匿データコードBの生成過程を示し、図8(C)は、図8(D)の秘匿データコードAの生成過程を示し、図8(D)は、図8(C)の秘匿データコードAが配置された二次元コードの配置状態を示す。
図9】第3実施形態における二次元コードの特徴的構成を説明する説明図であり、図9(A)は、秘匿データコードAの生成過程を示し、図9(B)は、秘匿データコードBの生成過程を示し、図9(C)は、秘匿データコードCの生成過程を示す。
図10】第4実施形態における二次元コードの生成方法を説明する説明図であり、図10(A)は、鍵特定情報Aの生成過程の一部を示し、図10(B)は、鍵特定情報Bの生成過程の一部を示し、図10(C)は、鍵特定情報Cの生成過程の一部を示す。
図11】第4実施形態における二次元コードの特徴的構成を説明する説明図である。
図12】第5実施形態における二次元コードの特徴的構成を説明する説明図である。
図13】第5実施形態の二次元コード読取処理でのデータ出力処理のサブルーチンの流れを例示するフローチャートである。
図14】第7実施形態における二次元コードの特徴的構成を説明する説明図である。
図15】第7実施形態の変形例における二次元コードの特徴的構成を説明する説明図である。
【発明を実施するための形態】
【0037】
[第1実施形態]
以下、本第1実施形態に係る二次元コードの生成方法およびその読取装置について、図面を参照して説明する。
図1に示す二次元コード読取システム1は、開示データ及び複数の秘匿データ等が記録された二次元コード30を生成する二次元コード生成装置(以下、生成装置10ともいう)と、生成装置10によって生成された二次元コード30を光学的に読み取る二次元コード読取装置(以下、読取装置20ともいう)とを備えた構成をなしている。
【0038】
生成装置10は、例えばパーソナルコンピュータ等の情報処理装置として構成されており、CPU等からなる制御部11、ROM、RAM、HDD、不揮発性メモリ等の記憶装置からなる記憶部12、公知の表示装置(液晶ディスプレイやその他の表示デバイス)などからなる表示部13、キーボード、マウス、その他の入力装置からなる操作部14、外部装置と有線通信或いは無線通信を行うための通信インタフェースとして機能する通信部15、公知のプリンタ等と同様のハードウェア構成をなし且つ制御部11からの印刷データに基づいて二次元コード30等を印刷可能な印刷部16(印刷装置)等を備えている。このように構成される生成装置10は、制御部11にてなされる二次元コード生成処理によって、後述する二次元コード30を生成して印刷するように機能する。
【0039】
読取装置20は、二次元コード30を読み取るユーザが携帯するタブレット端末やスマートフォンなどの携帯型の情報端末であって、二次元コード30から読み取った情報を画面表示等するための所定のアプリケーションプログラム(以下、読取アプリともいう)がインストールされて構成されるものである。
【0040】
この読取装置20は、図1に示すように、CPU等からなる制御部21、ROM,RAM、不揮発性メモリなどからなる記憶部22、受光センサ(例えば、C-MOSエリアセンサ、CCDエリアセンサ等)を備えたカメラとして構成される撮像部23、液晶表示器などからなる表示部24、各種操作キーやタッチパネル等(図示略)によって構成される操作部25、外部装置と有線通信或いは無線通信を行うための通信インタフェースとして機能する通信部26等を備えている。このように構成される読取装置20は、読取アプリが起動されることで制御部21にてなされる二次元コード読取処理によって、生成装置10にて生成された二次元コード30を光学的に読み取るように機能する。また、読取装置20の記憶部22には、二次元コード30から読み取るべき秘匿データの復号に利用する暗号鍵が1又は2以上予め記憶されている。
【0041】
次に、生成装置10にて生成される二次元コード30について、図面を参照して説明する。
二次元コード30は、3つの位置検出パターン(ファインダパターン)及びタイミングパターン等が配置されて、見た目はQRコードと区別がつかない情報コードとして構成される。特に、二次元コード30は、開示する開示データと秘匿する2以上の秘匿データとが記録されるように生成され、読取装置20と異なる一般の読取装置では、開示データのみが読取結果として出力されるように構成される。
【0042】
より具体的に説明すると、二次元コード30は、開示する開示データを表すコード語としてコード化された開示データコードの総数が、コード語を配置すべきコード領域に収容可能な容量に満たないことを前提に、コード領域に配置された開示データコードがなすコード列の終端を示す終端識別コードをこのコード列の最後に配置するように生成される。また、二次元コード30は、図2に示すように、終端識別コードの後に、秘匿する2以上の秘匿データのそれぞれを表すコード語を暗号化するようにコード化された複数の秘匿データコード(図2の例では、秘匿データコードA、秘匿データコードB、・・・、秘匿データコードn)や、データを表さない埋め草コード、開示データ及び秘匿データなどの各データ対する誤り訂正符号をコード化した誤り訂正コード等を配置するように生成される。また、二次元コード30は、各秘匿データコードの前に後述する秘匿コード識別子及び秘匿コード個数が配置され、各秘匿データコードに対してそれぞれ後述する暗号識別情報及び鍵特定情報が付加されるように生成される。
【0043】
本実施形態では、読取装置20は、暗号化された複数の秘匿データコードの復号にそれぞれ利用する暗号鍵を少なくとも1つ予め取得しており、この暗号鍵が読取装置20ごとに異なることで、同じ二次元コード30を読み取る場合でも、読み取られる秘匿データを読取装置20ごとに変えている。例えば、同じ二次元コード30を読み取る場合でも、A社用の暗号鍵が記録された読取装置20では、開示データとA社用の秘匿データとが読み取られ、B社用の暗号鍵が記録された読取装置20では、開示データとB社用の秘匿データとが読み取られる。
【0044】
特に、本実施形態における二次元コード30では、各秘匿データコードは、それぞれ暗号強度が異なるように暗号化される。暗号強度が高い秘匿データコードは、復号に要する処理負荷が増大するものの、復号が困難になるためにセキュリティ性を高めることができ、暗号強度が低い秘匿データコードは、ある程度のセキュリティ性を確保しつつ、読取装置20において復号に要する処理負荷を軽減することができる。このため、同じ二次元コード30であっても、例えば、A社用の秘匿データの秘匿データコードの暗号強度をB社用の秘匿データの秘匿データコードの暗号強度よりも高くすることで、A社用の秘匿データのセキュリティ性を高めつつ、B社用の暗号鍵が記録された読取装置20に要求される処理能力を軽減することができる。
【0045】
以下、上述のように構成される二次元コード30を生成装置10にて生成する際に、制御部11にてなされる二次元コード生成処理について、図3及び図4に示すフローチャートを参照して説明する。
生成装置10では、通信部15を介して外部装置から開示データ及び複数の秘匿データと、各秘匿データのそれぞれの暗号強度のレベル及び暗号鍵等とが受信されると、制御部11により二次元コード生成処理が開始され、図3のステップS101に示す格納データ符号化処理がなされる。
【0046】
この格納データ符号化処理のサブルーチンでは、まず、図4のステップS201に示す開示データ符号化処理がなされて、QRコードの符号方法で、上記開示データを表すコード語としてコード化された開示データコードが生成される。続いて、ステップS203に示す終端識別コード付加処理にて、QRコードの符号方法で、開示データコードの直後に終端識別コードが付加される。
【0047】
そして、秘匿データがある場合には(S205でYes)、秘匿データの番号を示すkが「1」に設定された後(S207)、ステップS209に示す秘匿データ情報付加処理がなされる。この処理では、後続のデータコードが秘匿データコードであることを示す(秘匿データコードの有無を示す)コードである秘匿コード識別子と、秘匿データコードの個数nをコード化した秘匿コード個数とが、秘匿データ情報として終端識別コードの直後に付加される。
【0048】
次に、ステップS211に示す暗号識別情報付加処理がなされ、k番目の秘匿データの暗号強度のレベルに応じた暗号識別情報が付加される。本実施形態では、暗号強度のレベルごとに暗号方式が異なるように設定されており、この暗号識別情報によって、暗号強度のレベルだけでなく、直後に配置される秘匿データコードの暗号方式を識別することができる。
【0049】
続いて、ステップS213に示す秘匿データ符号化処理にて、k番目の秘匿データが符号化されると、ステップS215に示す暗号化処理にて、上記暗号識別情報によって識別される暗号方式によってk番目の秘匿データのコード語を上記暗号鍵にて復号可能に暗号化した秘匿データコードが、上記暗号識別情報の直後に付加される。そして、ステップS217に示す鍵特定情報付加処理にて、上記秘匿データコードの復号に利用する上記暗号鍵を特定可能な鍵特定情報が、当該秘匿データコードの直後に付加される。なお、本実施形態では、異なる暗号方式を採用することで暗号強度のレベルを変えており、例えば、暗号強度のレベルが比較的高い場合にはAESによって暗号化し、これに対して暗号強度のレベルが比較的低い場合にはDESによって暗号化することができる。
【0050】
上述のように、k番目の暗号識別情報、秘匿データコード及び鍵特定情報が付加された後、kが秘匿データコードの個数nに一致しない場合には(S219でNo)、kがインクリメント(k=k+1)された後(S221)、上記ステップS211以降の処理がなされる。
【0051】
そして、全ての秘匿データについて、暗号識別情報、秘匿データコード及び鍵特定情報が付加されたことから、kが秘匿データコードの個数nに一致すると(S219でYes)、本サブルーチンが終了し、必要な埋め草コードが付加される(S103)。また、秘匿データがないことからステップS205の判定処理にてNoと判定される場合にも、本サブルーチンが終了し、必要な埋め草コードが付加される(S103)。
【0052】
次に、ステップS105に示す誤り訂正コード付加処理がなされ、開示データ及び各秘匿データに対する誤り訂正符号を生成してコード化した誤り訂正コードが付加される。これにより、図2に例示するようなフォーマットのデータコード等が生成される。
【0053】
このようにデータコード等が生成されると、ステップS107に示す機能セル配置処理がなされ、上記データコード等のデータ量に対応するQRコードのサイズにおいて、位置検出パターン及びタイミングパターン等が所定の位置に配置される。次に、ステップS109に示す型式情報、型番情報配置処理がなされ、上記データコード等に対応する型式情報及び型番情報が選択されて所定の位置に配置される。続いて、ステップS111に示すデータコード等配置処理がなされ、上述のように生成されたデータコード等が所定の位置に配置される。そして、ステップS113に示すマスク処理にて、明色系セルと暗色系セルとのバランスが最適化されることで、二次元コード30の生成が完了する。
【0054】
次に、生成装置10にて上述のように生成されて印刷された二次元コード30を読取装置20にて光学的に読み取る場合に、制御部21にてなされる二次元コード読取処理について、図5図7に示すフローチャートを参照して説明する。
操作部25に対する所定の操作によって読取アプリが起動されることで制御部21にて二次元コード読取処理が開始され、撮像部23にて二次元コード30が撮像されると、撮像画像において各位置検出パターンを三隅とするコード領域内での明色系セル及び暗色系セルが認識される(図5のS301)。次に、型式情報が復号されるとともに(S303)、復号された型番情報から型番が決定されると(S305)、上記型式情報から特定されるマスクパターンに関してマスク処理が解除される(S307)。このマスク処理解除後の明色系セル及び暗色系セルの配置に基づいて、上述したデータコード及び誤り訂正コードが復元される(S309)。
【0055】
上述のように復元されたデータコードが誤り訂正不要であれば(S311でNo)、誤り訂正することなく、ステップS317に示すデータコード復号処理がなされる。一方、上述のように復元されたデータコードが誤り訂正必要であり(S311でYes)、その誤り訂正が可能であれば(S313でYes)、誤り訂正コードから復号される誤り訂正符号を利用して誤り訂正した後(S315)、ステップS317に示すデータコード復号処理がなされる。なお、誤り訂正が不能であれば(S313でNo)、データコード等が復号されることなく、本二次元コード読取処理が終了する。
【0056】
上記データコード復号処理のサブルーチンでは、まず、図6のステップS401に示す開示データ復号処理がなされて、上記データコードのうち終端識別コードよりも前に配置される開示データコードから開示データが復号される。続いて、ステップS403の判定処理にて、終端識別コードの直後に秘匿コード識別子及び秘匿コード個数が秘匿データ情報として配置されているか否かについて判定される。ここで、終端識別コードの直後に秘匿コード識別子及び秘匿コード個数が秘匿データ情報として配置されている場合には(S403でYes)、その秘匿コード個数(秘匿データコードの個数n)が取得されて(S405)、秘匿データの番号を示すkが「1」に設定される(S407)。なお、上記ステップS401の開示データ復号処理を行う制御部21は、開示データコードをデコードする「第1デコード手段」の一例に相当し得る。また、上記ステップS403の判定処理を行う制御部21は、「データコード判断手段」の一例に相当し得る。
【0057】
続いて、ステップS409の処理にて、k番目の秘匿データが出力対象データであるか否かを識別するためのフラグflag_kが、出力対象データでないことを示す「0」に仮設定される。上述のように、秘匿データの番号kが「1」に設定されている場合には、フラグflag_1=0に仮設定される。
【0058】
そして、k番目の秘匿データコードに直後に配置される鍵特定情報を取得した後(S411)、ステップS413の判定処理にて、取得した鍵特定情報から特定される暗号鍵が予め記憶部22に記憶される暗号鍵に一致するか否かについて判定される。ここで、両者が一致しない場合には(S413でNo)、k番目の秘匿データコードを復号するための暗号解読を行うことなく、ステップS421の判定処理にて、kが秘匿データコードの個数nに一致するか否かについて判定される。
【0059】
一方、取得した鍵特定情報から特定される暗号鍵が予め記憶部22に記憶される暗号鍵に一致すると(S413でYes)、k番目の暗号識別情報及び秘匿データコードが取得されて後(S415)、ステップS417に示す暗号解読処理がなされる。この処理では、暗号識別情報から識別される暗号方式にて上記暗号鍵を利用して秘匿データコードが解読されて、秘匿データが復号される。このように、k番目の秘匿データが復号された場合には、そのk番目の秘匿データに対応するフラグflag_kが、出力対象データであることを示す「1」に設定されて(S419)、上記ステップS421の判定処理がなされる。なお、上記ステップS413の判定処理を行う制御部21は、鍵特定情報が付加された秘匿データコードの復号に利用する暗号鍵が、取得している暗号鍵であるか否かについて、鍵特定情報ごとに判断する「鍵適合判断手段」の一例に相当し、上記ステップS417に示す暗号解読処理を行う制御部21は、秘匿データコードをデコードする「第2デコード手段」の一例に相当し得る。
【0060】
そして、kが秘匿データコードの個数nに一致しない場合には(S421でNo)、kがインクリメント(k=k+1)された後(S423)、上記ステップS409からの処理がなされる。その後、n個の秘匿データコードのそれぞれについて、復号された秘匿データコードに対応するフラグflag_kが「1」に設定され、復号されない秘匿データコードに対応するフラグflag_kが「0」に設定されることで、kが秘匿データコードの個数nに一致すると(S421でYes)、本サブルーチンが終了する。また、終端識別コードの直後に秘匿データ情報が配置されていない場合には(S403でNo)、上記暗号解読処理等がなされることなく、本サブルーチンが終了する。
【0061】
上述のようにデータコード復号処理のサブルーチンが終了すると、ステップS319に示すデータ出力処理がなされる。このデータ出力処理のサブルーチンでは、まず、開示データが出力された後(S501)、秘匿データの番号を示すkが「1」に設定される(S503)。そして、ステップS505の判定処理にて、k番目のフラグflag_kが「1」に設定されているか否かについて判定される。
【0062】
ここで、k番目のフラグflag_kが「0」に設定されていると(S505でNo)、k番目の暗号識別情報及び秘匿データが出力されることなく、ステップS511の判定処理にて、kが秘匿データコードの個数nに一致するか否かについて判定される。
【0063】
一方、k番目のフラグflag_kが「1」に設定されていると(S505でYes)、k番目の暗号識別情報が出力されるとともに(S507)、k番目の秘匿データが出力されて(S509)、上記ステップS511の判定処理がなされる。なお、ステップS507の暗号識別情報を出力する処理を行う制御部21は、「出力手段」の一例に相当し得る。
【0064】
そして、kが秘匿データコードの個数nに一致しない場合には(S511でNo)、kがインクリメント(k=k+1)された後(S513)、上記ステップS505からの処理がなされる。その後、n個の暗号識別情報及び秘匿データのそれぞれについて、フラグflag_kが「0」に設定された暗号識別情報及び秘匿データが出力対象とならず、フラグflag_kが「1」に設定された暗号識別情報及び秘匿データが出力されることで、kが秘匿データコードの個数nに一致すると(S511でYes)、本二次元コード読取処理及びデータ出力処理のサブルーチンが終了する。
【0065】
このような読取処理では、例えば、A社用の暗号鍵が記憶部22に予め記憶されていると、A社用の暗号鍵を利用して復号されるA社用の秘匿データが開示データとともに出力され、B社用の暗号鍵が記憶部22に予め記憶されていると、B社用の暗号鍵を利用して復号されるB社用の秘匿データが開示データとともに出力される。また、例えば、A社用の暗号鍵とB社用の暗号鍵とが記憶部22に予め記憶されていると、A社用の暗号鍵を利用して復号されるA社用の秘匿データとB社用の暗号鍵を利用して復号されるB社用の秘匿データとが開示データとともに出力される。
【0066】
以上説明したように、本実施形態に係る二次元コード30の生成方法では、秘匿する2以上の秘匿データのそれぞれを表すコード語を暗号化するようにコード化された複数の秘匿データコードを、埋め草コードの一部または全部に代えて、終端識別コードの後に配置する。そして、複数の秘匿データコードの少なくとも一部は、それぞれ暗号強度が異なるように暗号化される。
【0067】
そして、本実施形態に係る読取装置20では、終端識別コードの後に秘匿データコードが配置されていると判断した場合には(S403でYes)、開示データコードをデコードするとともに(S401)、複数の秘匿データコードのうち取得している暗号鍵を利用して復号可能な秘匿データコードをデコードする(S417)。
【0068】
このように、終端識別コードの後に配置される複数の秘匿データコードの少なくとも一部は、それぞれ暗号強度が異なるように暗号化されるため、同じ二次元コード30を読み取る場合でも、暗号強度が高い秘匿データコードを復号できる読取装置20であれば、開示データに加えて秘匿性の高い秘匿データを取得でき、暗号強度が低い秘匿データコードを復号する読取装置20であれば、開示データに加えて秘匿性の低い秘匿データを取得できる。特に、暗号強度が低い秘匿データコードを復号する読取装置20では、復号に要する処理負荷が高くなることもないので、処理能力が低い読取装置20であっても、円滑な読取作業を行うことができる。すなわち、複数の秘匿データが暗号化されて記録される二次元コード30の読み取りに関して、セキュリティ性の確保と処理速度の低減抑制との両立を図ることができる。
【0069】
さらに、終端識別コードと先頭の秘匿データコードとの間には、後続のデータコードが秘匿データコードであることを示す秘匿コード識別子と、複数の秘匿データコードの個数を示す秘匿コード個数とが、秘匿データ情報として配置される。これにより、読取装置20では、秘匿データ情報(秘匿コード識別子及び秘匿コード個数)の存在によって、終端識別コードの後に配置されたデータコードは、秘匿データコードであることがわかるので、例えば、読取対象外のデータやデータ化けしたデータ等を秘匿データコードと誤認して読み取ることを防ぎ、またこれに起因する誤動作の発生を防止することもできる。なお、終端識別コードと先頭の秘匿データコードとの間には、秘匿コード識別子及び秘匿コード個数の一方が配置されても、その後続のデータコードが秘匿データコードであることを容易に認識することができる。
【0070】
また、秘匿データコードには、当該秘匿データコードの暗号化に関する情報を示す暗号識別情報が付加されているため、読取装置20では、暗号識別情報が付加された秘匿データコードの復号方法を容易に識別することができる。
【0071】
そして、読取装置20では、付加された秘匿データコードの復号に利用する暗号鍵が予め取得している暗号鍵であると判断されると(S413でYes)、当該鍵特定情報が付加された秘匿データコードを暗号鍵を利用してデコードし、付加された秘匿データコードの復号に利用する暗号鍵が予め取得している暗号鍵でないと判断されると(S413でNo)、当該鍵特定情報が付加された秘匿データコードをデコードしない。
【0072】
これにより、付加された秘匿データコードの復号に利用する暗号鍵が取得している暗号鍵でないと判断された鍵特定情報では、その鍵特定情報を付加した秘匿データコードがデコードされないので、取得している暗号鍵を利用して復号可能な秘匿データコードに関してデコード処理等の高速化を図ることができる。
【0073】
特に、複数の秘匿データコードは、異なる暗号方式を採用することでそれぞれ暗号強度が異なるように暗号化される。これにより、例えば、1つの秘匿データコードを比較的暗号強度が低いDESによって暗号化し、他の1つの秘匿データコードを比較的暗号強度が高いAESによって暗号化することで、それぞれの暗号強度を容易に異ならせることができる。なお、複数の秘匿データコードの全てが、異なる暗号方式を採用することでそれぞれ暗号強度が異なるように暗号化されることに限らず、複数の秘匿データコードの一部が、異なる暗号方式を採用することでそれぞれ暗号強度が異なるように暗号化されてもよい。
【0074】
また、秘匿データコードには、暗号化されている秘匿データコードの復号に利用する暗号鍵を特定可能な鍵特定情報がそれぞれ付加される。これにより、読取装置20では、秘匿データコードごとに、その秘匿データコードの復号に利用する暗号鍵をそれぞれ容易に特定でき、デコード処理等の高速化を図ることができる。
【0075】
特に、読取装置20では、デコードされた秘匿データコードに付加された暗号識別情報がそれぞれ出力される(S507)。これにより、デコードされた秘匿データコードであれば、その秘匿データコードに付加された暗号識別情報が出力されるので、読み取られた秘匿データの暗号化に関する情報を容易に取得することができる。なお、上記ステップS507の処理では、デコードされた秘匿データコードに付加された暗号識別情報が出力されることに限らず、その暗号識別情報に関する情報が出力されてもよい。
【0076】
なお、複数種類の暗号鍵が記憶部22に予め記憶されている場合には、復号可能な全ての秘匿データが出力されることに限らず、選択された1又は2以上の秘匿データが出力されてもよい。例えば、A社用の暗号鍵とB社用の暗号鍵とが記憶部22に予め記憶されていても、B社用の秘匿データの出力が選択されない場合には、B社用の暗号鍵を利用した復号が行われない。この構成では、例えば、読取アプリの起動時に、表示部24に選択可能な秘匿データの種別等を表示して、操作部25による所定の操作に応じて出力される秘匿データを選択することができる。これにより、上記ステップS413の判定処理では、上述のように選択された秘匿データ用の暗号鍵に一致するか否かを判定することで、複数の暗号鍵を取得していることから複数の秘匿データコードを復号できる場合でも、選択された秘匿データコードのみがデコードされるので、選択されない秘匿データコードのデコード処理、すなわち、不要なデコード処理等をなくすことができる。なお、操作部25及び制御部21は、デコード可能な複数の秘匿データコードのうち「第2デコード手段」によりデコードする秘匿データコードを選択するための「選択手段」の一例に相当し得る。
【0077】
[第2実施形態]
次に、本第2実施形態に係る二次元コードの生成方法およびその読取装置について、図面を参照して説明する。
本第2実施形態では、秘匿データコードの暗号方法が、上記第1実施形態と主に異なる。したがって、第1実施形態と実質的に同一の構成部分には、同一符号を付し、その説明を省略する。
【0078】
本実施形態では、1種類の暗号方式を採用する一方で、暗号強度のレベルを高くする秘匿データコードに対する暗号化処理の回数を増やすことで、各秘匿データコードがそれぞれ暗号強度が異なるように暗号化される。例えば、秘匿データA、秘匿データB、秘匿データCのうち、秘匿データCの暗号強度を最も高くし、秘匿データBの暗号強度を次に高くする場合には、所定の暗号方式にて、秘匿データCを3回暗号化し、秘匿データBを2回暗号化し、秘匿データAを1回暗号化する。
【0079】
具体的には、図8(A)に示すように、暗号鍵Cを利用して、秘匿データCを暗号化して秘匿データコードCを生成した後、図8(B)に示すように、暗号鍵Bを利用して、秘匿データコードCと暗号鍵Cの暗号鍵情報Cと秘匿データBを暗号化して秘匿データコードBを生成する。そして、図8(C)に示すように、暗号鍵Aを利用して、秘匿データコードBと暗号鍵Bの暗号鍵情報Bと秘匿データAを暗号化して秘匿データコードAを生成した後、図8(D)に示すように、秘匿データ情報(秘匿コード識別子,秘匿コード個数)の後に、秘匿データコードA等の暗号識別情報、秘匿データコードA、暗号鍵情報Aを付加する。
【0080】
すなわち、1つの秘匿データを暗号化した秘匿データコード(暗号データ)と、その1つの秘匿データとは異なる他の秘匿データとを、まとめて暗号化するようにコード化して秘匿データコードを生成する。
【0081】
これにより、例えば、上記1つの秘匿データは二重に暗号化されるので、他の秘匿データとの暗号強度を容易に異ならせることができる。特に、複数の秘匿データをそれぞれの暗号強度を変えるように暗号化する場合でも、同じ暗号方式を採用することができるので、読取装置においてプログラムメモリやワークメモリを削減することができる。
【0082】
上述のような秘匿データコードAが配置されて生成される二次元コード30を読み取る際に読取装置20にてなされる二次元コード読取処理では、秘匿データ個数に関して、まとめて暗号化された秘匿データコードが1つとして計数される。そして、上記ステップS417の暗号解読処理にて、暗号鍵Aを利用した秘匿データAと秘匿データコードBの復号、暗号鍵Bを利用した秘匿データBと秘匿データコードCの復号、暗号鍵Cを利用した秘匿データCの復号が順になされることで、秘匿データA、秘匿データB、秘匿データCが取得される。
【0083】
なお、本実施形態の秘匿データコードの暗号方法に関する特徴的構成は、他の実施形態等にも適用することができる。
【0084】
[第3実施形態]
次に、本第3実施形態に係る二次元コードの生成方法およびその読取装置について、図面を参照して説明する。
本第3実施形態では、読取装置20が暗号鍵を予め取得していない点が、上記第1実施形態と主に異なる。したがって、第1実施形態と実質的に同一の構成部分には、同一符号を付し、その説明を省略する。
【0085】
本実施形態では、読取装置20は、読み取るべき秘匿データに対応する暗号鍵の少なくとも一部を、開示データに基づいて生成する。具体的には、例えば、図9(A)に示すように、開示データの所定のハッシュ関数に基づくハッシュ値を暗号鍵Aとして利用して復号できるように、秘匿データAを暗号化して秘匿データコードAを生成する。
【0086】
これにより、読取装置20では、復号すべき秘匿データに対応する暗号鍵を予め取得していない場合でも、上記開示データから生成した暗号鍵を利用して上記復号すべき秘匿データを復号することができる。特に、暗号鍵を読取装置20に記憶させる必要がないので、面倒な暗号鍵の管理が不要になるだけでなく、読取装置20の盗難等に起因する暗号鍵の漏洩なども防止することができる。
【0087】
さらに、本実施形態では、読み取るべき秘匿データに対応する暗号鍵を、他の秘匿データに基づいて生成する。具体的には、例えば、図9(B)に示すように、秘匿データAのハッシュ値を暗号鍵Bとして利用して復号できるように、秘匿データBを暗号化して秘匿データコードBを生成する。さらに、図9(C)に示すように、秘匿データBのハッシュ値を暗号鍵Cとして利用して復号できるように、秘匿データCを暗号化して秘匿データコードCを生成する。
【0088】
これにより、読取装置20に予め暗号鍵を取得させることなく、各秘匿データのそれぞれの暗号強度を異ならせることができる。特に、秘匿データAのハッシュ値が暗号鍵Bとなり、秘匿データBのハッシュ値を暗号鍵Cとなることから、秘匿データA及び秘匿データBが復号されなければ暗号鍵Cを取得できないので、秘匿データコードCの暗号強度が最も高くなる。このため、本実施形態においても、複数の秘匿データコードをそれぞれ暗号強度が異なるように暗号化することができる。
【0089】
なお、暗号鍵を、当該暗号鍵を利用して暗号化される秘匿データと異なる他の秘匿データ又は開示データに基づいて生成する本実施形態の特徴的構成は、他の実施形態等にも適用することができる。
【0090】
[第4実施形態]
次に、本第4実施形態に係る二次元コードの生成方法およびその読取装置について、図面を参照して説明する。
本第4実施形態では、鍵特定情報にデータ改竄検出機能を持たせる点が、上記第1実施形態と主に異なる。したがって、第1実施形態と実質的に同一の構成部分には、同一符号を付し、その説明を省略する。
【0091】
本実施形態では、鍵特定情報は、開示データを変換した値と暗号鍵とから第1の生成処理に基づいて生成される値を第1の値とし、暗号化に上記暗号鍵を利用した秘匿データコードから第2の生成処理に基づいて生成される値を第2の値とするとき、これら第1の値及び第2の値から第3の生成処理に基づいて生成される第3の値に一致するように生成される。
【0092】
具体的には、例えば、図10(A)に示すように、秘匿データAに関して、開示データを所定のハッシュ関数によって変換したハッシュ値h0を得ると、このハッシュ値h0と秘匿データAの暗号化に利用する暗号鍵Aとに関して、第1の生成処理により生成される第1の値として、排他的論理和によって排他的論理和値Aを生成する。また、第2の生成処理により生成される第2の値として、暗号鍵Aを利用した秘匿データAの暗号化によって秘匿データコードAを生成する。そして、第3の生成処理として、秘匿データコードAを多項式化したfa(x)に排他的論理和値Aを多項式化したga(x)の最高次数nを掛けることで得た数式fa(x)・xをga(x)で割った余りra(x)から第3の値を求めて、この第3の値が暗号鍵Aの鍵特定情報Aに一致するように暗号鍵Aと鍵特定情報Aとを関連付ける。
【0093】
例えば、開示データのハッシュ値h0が「1111」、暗号鍵Aが「0101」であるとすると、排他的論理和値A(第1の値)が「1010」として生成され、暗号鍵Aを利用した秘匿データAの暗号化によって秘匿データコードA(第2の値)が「11000」として生成されると、多項式化したga(x)及びfa(x)は、以下の式(1)(2)のように表現される。
ga(x)=x+x ・・・(1)
fa(x)=x+x ・・・(2)
そうすると、排他的論理和の下で数式fa(x)・xをga(x)で割った余りra(x)は、以下の式(3)のように表現される。
ra(x)=x+x ・・・(3)
この式(3)から第3の値として「110」を求めて、この「110」が暗号鍵Aの鍵特定情報Aに一致するように暗号鍵Aと鍵特定情報Aとを関連付ける。
【0094】
そして、暗号鍵Bを特定する鍵特定情報Bについては、図10(B)に示すように、秘匿データBに関して、秘匿データAを所定のハッシュ関数によって変換したハッシュ値haを得ると、このハッシュ値haと秘匿データBの暗号化に利用する暗号鍵Bとに関して、排他的論理和によって排他的論理和値Bを、第1の生成処理により生成される第1の値として生成する。また、暗号鍵Bを利用した秘匿データBの暗号化によって秘匿データコードBを、第2の生成処理により生成される第2の値として生成する。そして、第3の生成処理として、秘匿データコードBを多項式化したfb(x)に排他的論理和値Bを多項式化したgb(x)の最高次数mを掛けることで得た数式fb(x)・xをgb(x)で割った余りrb(x)から第3の値を求めて、この第3の値が暗号鍵Bの鍵特定情報Bに一致するように暗号鍵Bと鍵特定情報Bとを関連付ける。
【0095】
そして、暗号鍵Cを特定する鍵特定情報Cについては、図10(C)に示すように、秘匿データBに関して、秘匿データBを所定のハッシュ関数によって変換したハッシュ値hbを得ると、このハッシュ値hbと秘匿データCの暗号化に利用する暗号鍵Cとに関して、排他的論理和によって排他的論理和値Cを、第1の生成処理により生成される第1の値として生成する。また、暗号鍵Cを利用した秘匿データCの暗号化によって秘匿データコードCを、第2の生成処理により生成される第2の値として生成する。そして、第3の生成処理として、秘匿データコードCを多項式化したfc(x)に排他的論理和値Cを多項式化したgc(x)の最高次数pを掛けることで得た数式fc(x)・xをgc(x)で割った余りrc(x)から第3の値を求めて、この第3の値が暗号鍵Cの鍵特定情報Cに一致するように暗号鍵Cと鍵特定情報Cとを関連付ける。
【0096】
これにより、本実施形態に係る二次元コード30は、図11に例示するように、秘匿データコードAに対して余りra(x)から求められる値(第3の値)が付加され、秘匿データコードBに対して余りrb(x)から求められる値(第3の値)が付加され、秘匿データコードCに対して余りrc(x)から求められる値(第3の値)が付加されるように生成される。
【0097】
このように二次元コード30が生成されることで、以下のような効果を奏する。
開示データが改竄された二次元コード30を読み取っていると、この改竄された二次元コード30から読み取った鍵特定情報Aから特定される暗号鍵Aと開示データとから上述した第1の生成処理、第2の生成処理及び第3の生成処理に基づいて上記第3の値として生成される値が、上記鍵特定情報Aに一致しないため、開示データの改竄を検出することができる。
【0098】
例えば、上述したように、開示データのハッシュ値h0が「1111」、暗号鍵Aが「0101」、秘匿データコードAが「11000」として生成された二次元コード30を、その開示データの改竄によってハッシュ値h0が「1110」になると、上記第3の値として生成される値が、上記「110」と異なる値となり、開示データの改竄を検出することができる。
【0099】
同様に、例えば、秘匿データAが改竄された二次元コード30を読み取っていると、この改竄された二次元コード30から読み取った鍵特定情報Bから特定される暗号鍵Bと秘匿データAとから上述した第1の生成処理、第2の生成処理及び第3の生成処理に基づいて上記第3の値として生成される値が、上記鍵特定情報Bに一致しないため、秘匿データAの改竄を検出することができる。
【0100】
特に、第3の値は、データ改竄検出のための情報であるだけでなく鍵特定情報でもあるため、二次元コード30のデータ記録量に関して、データ改竄検出及び暗号鍵特定に必要となるデータ記録量が削減されるので、データ効率を向上させることができる。
【0101】
なお、本実施形態の第1変形例として、上述のように算出される第3の値が鍵特定情報に一致するように暗号鍵と鍵特定情報とが関連付けられることに限らず、改竄検出による処理負荷を軽減するため、例えば、上述のように算出される第1の値(排他的論理和値)が鍵特定情報に一致するように暗号鍵と鍵特定情報とが関連付けられてもよい。すなわち、鍵特定情報は、開示データ又は他の秘匿データを変換した値と暗号鍵とから所定の生成処理(上記第1の生成処理)に基づいて生成される所定の値(上記第1の値)に一致するように生成されてもよい。
【0102】
また、本実施形態の第2変形例として、鍵特定情報は、開示データ又は秘匿データを変換した値と暗号鍵とから巡回冗長検査(CRC)に基づいて生成される値に一致するように生成されてもよい。具体的には、例えば、CRC-16を使用した場合、開示データ又は秘匿データのデータの後に、そのデータのハッシュ値と暗号鍵を追加したコードを多項式化してx16を掛け、この多項式をCRC-16の生成多項式(上記例では、例えば、x16+x12+x+1)で割った余りに鍵特定情報が一致するように生成されてもよい。
【0103】
なお、鍵特定情報にデータ改竄検出機能を持たせる本実施形態の特徴的構成は、他の実施形態等にも適用することができる。
【0104】
[第5実施形態]
次に、本第5実施形態に係る二次元コードの生成方法およびその読取装置について、図面を参照して説明する。
本第5実施形態では、データ改竄検出用のデータ認証情報を終端識別コードの後に配置する点が、上記第1実施形態と主に異なる。したがって、第1実施形態と実質的に同一の構成部分には、同一符号を付し、その説明を省略する。
【0105】
本実施形態に係る二次元コード30は、開示データ及び複数の秘匿データの少なくとも1つから所定の認証用処理によって生成されたデータ認証情報が、埋め草コードの一部に代えて、終端識別コードの後に配置されるように生成される。
【0106】
具体的には、開示データ及び各秘匿データのそれぞれから所定の認証用処理によって生成された値をコード化して、データ認証情報として鍵特定情報nの後に配置する。例えば、図12に例示するように、開示データ及び各秘匿データA~nのそれぞれから上記所定の認証用処理(例えば、ハッシュ関数によってハッシュ値を得る処理)によって生成された値をコード化した開示データ認証情報、秘匿データ認証情報A、秘匿データ認証情報B、・・・秘匿データ認証情報nを、鍵特定情報nの後であって誤り訂正コードの前に配置する。
【0107】
このように生成される二次元コード30のデータ認証情報を利用することで、読取装置20の制御部21にてデータ改竄検出可能に行われる二次元コード読取処理について、図13に示すフローチャート等を参照して説明する。
制御部21にて二次元コード読取処理が開始されることで、上記第1実施形態と同様に、図5のステップS301以降の処理がなされて、ステップS317にて開示データ及び各秘匿データが復号されると、ステップS319に示すデータ出力処理がなされる。
【0108】
本実施形態では、上記データ出力処理のサブルーチンとして、まず、開示データ認証情報が取得されて(図13のS601)、ステップS603の判定処理にて、開示データの認証が成功するか否かについて判定される。ここで、開示データから上記所定の認証用処理によって生成されてコード化された値(認証判定用情報)が開示データ認証情報に一致する場合には、開示データが改竄されておらず、開示データの認証成功と判断される(S603でYes)。
【0109】
そして、秘匿データの番号を示すkが「1」に設定された後(S605)、ステップS607の判定処理にて、k番目のフラグflag_kが「1」に設定されているか否かについて判定される。ここで、k番目のフラグflag_kが「0」に設定されていると(S607でNo)、k番目の秘匿データ認証情報が取得されることなく、ステップS613の判定処理にて、kが秘匿データコードの個数nに一致するか否かについて判定される。
【0110】
一方、k番目のフラグflag_kが「1」に設定されていると(S607でYes)、k番目の秘匿データ認証情報が取得されて(S609)、ステップS611の判定処理にて、そのk番目の秘匿データ認証情報の認証が成功するか否かについて判定される。ここで、k番目の秘匿データから上記所定の認証用処理によって生成されてコード化された値(認証判定用情報)がk番目の秘匿データ認証情報に一致する場合には、k番目の秘匿データが改竄されておらず、k番目の秘匿データの認証が成功していると判断される(S611でYes)。
【0111】
そして、kが秘匿データコードの個数nに一致しない場合には(S613でNo)、kがインクリメント(k=k+1)された後(S615)、上記ステップS607からの処理がなされる。その後、各秘匿データの認証が全て成功したことから、kが秘匿データコードの個数nに一致すると(S613でYes)、上記ステップS501以降の処理がなされる。
【0112】
なお、開示データ認証情報を取得する処理(S601)、k番目の秘匿データ認証情報を取得する処理(S609)を行う制御部21は、終端識別コードの後に配置されるデータ認証情報を取得する「データ認証情報取得手段」の一例に相当し得る。また、開示データや各秘匿データから上記所定の認証用処理によって認証判定用情報を生成する処理を行う制御部21は、「認証判定用情報生成手段」の一例に相当し得る。
【0113】
一方、開示データから上記所定の認証用処理によって生成されてコード化された値(認証判定用情報)が開示データ認証情報に一致しない場合には、開示データが改竄されており、開示データの認証失敗と判定される(S603でNo)。また、例えば、k番目の秘匿データから上記所定の認証用処理によって生成されてコード化された値(認証判定用情報)がk番目の秘匿データ認証情報に一致しない場合には、k番目の秘匿データが改竄されており、k番目の秘匿データの認証失敗と判定される(S611でNo)。
【0114】
上述のように、開示データの認証失敗か秘匿データの認証失敗と判定されると、ステップS617に示す警告処理がなされる。この処理では、二次元コード30が改竄されている可能性を示す警告情報が、所定の報知として表示部24に画面表示されて報知される。なお、上記警告情報が画面表示される表示部24は、所定の報知を行う「報知手段」の一例に相当し得る。
【0115】
以上説明したように、本実施形態に係る二次元コード30の生成方法では、開示データ及び複数の秘匿データの少なくとも1つから所定の認証用処理によって生成されたデータ認証情報が、埋め草コードの一部に代えて、終端識別コードの後に配置される。
【0116】
そして、本実施形態に係る読取装置20では、取得されたデータ認証情報(開示データ認証情報及び各秘匿データ認証情報)と上記所定の認証用処理によって生成された認証判定用情報とが一致しない場合に、表示部24による画面表示によって所定の報知が行われる。
【0117】
これにより、読取装置20では、終端識別コードの後に配置されるデータ認証情報と、開示データ等から上記所定の認証用処理によって生成された情報との比較結果によって、開示データ等が改竄されているか検出することができる。
【0118】
特に、開示データ等が改竄された二次元コードを読み取っている場合には、取得されたデータ認証情報と生成された認証判定用情報とが一致しないことで、表示部24による画面表示によって所定の報知が行われる。このため、上記所定の報知を受けた読取装置20のユーザ等は、読み取った二次元コード30の開示データ等が改竄されていることを容易に把握することができる。
【0119】
なお、データ認証情報は、暗号化されて終端識別コードの後に配置されてもよい。これにより、データ認証情報自体の改竄を困難にすることができる。また、データ改竄検出用のデータ認証情報を終端識別コードの後に配置する本実施形態の特徴的構成は、他の実施形態等にも適用することができる。
【0120】
[第6実施形態]
次に、本第6実施形態に係る二次元コードの生成方法およびその読取装置について説明する。
本第6実施形態では、終端識別コードの後に配置される複数の秘匿データコードの暗号強度が全て同じ又は終端識別コードの後に1つの秘匿データコードが配置される点が、上記第5実施形態と主に異なる。
【0121】
このように構成される二次元コード30であっても、読取装置20では、終端識別コードの後に配置されるデータ認証情報(開示データ認証情報及び秘匿データ認証情報)と、開示データや秘匿データ等から上記所定の認証用処理によって生成された情報(認証判定用情報)との比較結果によって、開示データや秘匿データ等が改竄されているか検出することができる。
【0122】
[第7実施形態]
次に、本第7実施形態に係る二次元コードの生成方法およびその読取装置について、図面を参照して説明する。
本第7実施形態では、二次元コード30は、開示する開示データを表すコード語としてコード化された開示データコードの総数が、コード語を配置すべきコード領域に収容可能な容量に満たないことを前提に、コード領域に配置された開示データコードがなすコード列の終端を示す終端識別コードをこのコード列の最後に配置するとともに、コード領域の空き部分にデータを表さない埋め草コードを配置するように生成される。特に、本実施形態に係る二次元コード30は、上述のように生成された開示データ認証情報を、埋め草コードの一部または全部に代えて、終端識別コードの後に配置するように生成される。
【0123】
すなわち、本実施形態に係る二次元コード30は、図14に示すように、上述した第5実施形態に係る二次元コード30や第6実施形態に係る二次元コード30に対して、秘匿データ情報(秘匿コード識別子、秘匿コード個数)や暗号識別情報、秘匿データコード及び鍵特定情報を廃止し、終端識別コードの直後に開示データ認証情報が配置されるように生成される。
【0124】
このように構成される二次元コード30であっても、読取装置20では、終端識別コードの直後に配置される開示データ認証情報と、開示データから上記所定の認証用処理によって生成された情報(認証判定用情報)との比較結果によって、開示データが改竄されているか検出することができる。
【0125】
なお、本実施形態の変形例として、データ認証情報は、終端識別コードの直後に配置されることに限らず、埋め草コードに囲まれる位置、すなわち、終端識別コードの後であって、所定の位置設定処理によって生成元の開示データに基づいて設定される位置に配置されてもよい。
【0126】
具体的には、例えば、開示データを特定の処理(ハッシュ関数等)によって数値化した値をa、開示データ認証情報のビット数をxa、コード領域の空エリア(データ認証情報を配置しない場合に埋め草コードが占めるエリア)のビット数をxnとしたとき、図15に例示するように、以下の式(4)から算出されるxビット目から開示データ認証情報を配置する。
x=a・mod(xn-xa) ・・・(4)
【0127】
これにより、読取装置20では、開示データから開示データ認証情報の位置を把握できることから、開示データ認証情報が配置される位置を固定とすることなく開示データに合わせて変化させることができるので、開示データ認証情報自体の改竄をより困難にすることができる。
【0128】
このように、データ認証情報が配置される位置を変化させる二次元コード30の生成方法は、秘匿データコード等が配置される第5実施形態での二次元コード30や第6実施形態での二次元コード30にも適用することができる。すなわち、秘匿データ認証情報は、終端識別コードの後であって、所定の位置設定処理によって生成元の秘匿データに基づいて設定される位置に配置することができる。これにより、秘匿開示データ認証情報が配置される位置を固定とすることなく秘匿データに合わせて変化させることができるので、秘匿データ認証情報自体の改竄をより困難にすることができる。また、本実施形態等においても、上述のように配置される位置を変化させたデータ認証情報自体の改竄を困難にするため、データ認証情報を暗号化してもよい。
【0129】
[他の実施形態]
なお、本発明は上記各実施形態及び変形例等に限定されるものではなく、例えば、以下のように具体化してもよい。
(1)生成された二次元コード30は、印刷部16を利用して印刷されることで表示されることに限らず、生成装置10又は生成装置10から二次元コード30を受信した表示装置などの二次元コード表示媒体にて画面表示されることで読み取り可能な状態になってもよい。
【0130】
(2)二次元コード30を生成する生成装置10は、例えば、タブレット端末やスマートフォンなどの携帯型の情報端末に所定のアプリケーションプログラムがインストールされて構成されてもよい。また、二次元コード30を光学的に読み取る読取装置20は、二次元コード30を含めた多種多様な情報コードを光学的に読み取る据え置き型の情報コード読取端末として構成されてもよい。
【符号の説明】
【0131】
1…二次元コード読取システム
10…生成装置
11…制御部
20…読取装置(二次元コード読取装置)
21…制御部(第1デコード手段,データコード判断手段,第2デコード手段,鍵適合判断手段,出力手段,選択手段,データ認証情報取得手段,認証判定用情報生成手段)
24…表示部(報知手段)
25…操作部(選択手段)
30…二次元コード
図1
図2
図3
図4
図5
図6
図7
図8
図9
図10
図11
図12
図13
図14
図15