(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2024046181
(43)【公開日】2024-04-03
(54)【発明の名称】検証装置、検証方法、プログラム、および、検証システム
(51)【国際特許分類】
H04L 9/18 20060101AFI20240327BHJP
H04L 9/12 20060101ALI20240327BHJP
【FI】
H04L9/18
H04L9/12
【審査請求】未請求
【請求項の数】9
【出願形態】OL
(21)【出願番号】P 2022151419
(22)【出願日】2022-09-22
(71)【出願人】
【識別番号】000002897
【氏名又は名称】大日本印刷株式会社
(74)【代理人】
【識別番号】110000958
【氏名又は名称】弁理士法人インテクト国際特許事務所
(74)【代理人】
【識別番号】100120189
【弁理士】
【氏名又は名称】奥 和幸
(72)【発明者】
【氏名】渡辺 龍平
(57)【要約】
【課題】リソースが限られた機器からの暗号文のエラーを検証できる検証装置、検証方法、プログラム、検証システムを提供する。
【解決手段】検証装置10が、平文70と鍵データ52との所定の演算で暗号化された暗号文71と、鍵データの誤り検出符号62と平文の誤り検出符号65との演算で変換された変換誤り検出符号66とを、取得し(S14)、取得した暗号文71と予め取得した鍵データ53との演算の逆演算により復号文72を生成し(S15)、復号文の誤り検出符号67を計算し(S16)、取得した変換誤り検出符号66と復号文の誤り検出符号67との逆演算により、鍵データの誤り検出符号68を逆算し(S17)、逆算した鍵データの誤り検出符号68と、予め取得した鍵データの誤り検出符号63と、を比較することにより、取得した暗号文71を検証する(S18)。
【選択図】
図7
【特許請求の範囲】
【請求項1】
平文と鍵データとの所定の演算で暗号化された暗号文と、前記鍵データの誤り検出符号と前記平文の誤り検出符号との前記演算で変換された変換誤り検出符号とを、取得する暗号文取得手段と、
前記取得した暗号文と予め取得した前記鍵データとの前記演算の逆演算により復号文を生成する復号手段と、
前記復号文の誤り検出符号を計算する復号文誤り検出符号計算手段と、
前記取得した変換誤り検出符号と前記復号文の誤り検出符号との前記逆演算により、前記鍵データの誤り検出符号を逆算する逆算手段と、
前記逆算した鍵データの誤り検出符号と、予め取得した前記鍵データの誤り検出符号とを比較することにより、前記取得した暗号文を検証する検証手段と、
を備えることを特徴とする検証装置。
【請求項2】
請求項1に記載の検証装置において、
前記鍵データが、乱数列から順に取り出された、使い捨て鍵ブロックであることを特徴とする検証装置。
【請求項3】
請求項2に記載の検証装置において、
前記乱数列を記憶する乱数列記憶手段と、
前記使い捨て鍵ブロックの前記乱数列における使用開始位置およびブロックサイズの情報を取得する使い捨て鍵ブロック情報取得手段と、
を更に備え、
前記予め取得した鍵データが、前記使用開始位置および前記ブロックサイズの情報に応じて前記乱数列記憶手段から取得されることを特徴とする検証装置。
【請求項4】
請求項1から3いずれか1項に記載の検証装置において、
前記演算が、XOR演算であることを特徴とする検証装置。
【請求項5】
請求項1から3いずれか1項に記載の検証装置において、
前記誤り検出符号が、巡回冗長符号であることを特徴とする検証装置。
【請求項6】
請求項1から3いずれか1項に記載の検証装置において、
前記予め取得した鍵データおよび前記予め取得した鍵データの誤り検出符号を、セキュア通信路を通して予め取得することを特徴とする検証装置。
【請求項7】
暗号文取得手段が、平文と鍵データとの所定の演算で暗号化された暗号文と、前記鍵データの誤り検出符号と前記平文の誤り検出符号との前記演算で変換された変換誤り検出符号とを、取得する暗号文取得ステップと、
復号手段が、前記取得した暗号文と予め取得した前記鍵データとの前記演算の逆演算により復号文を生成する復号ステップと、
復号文誤り検出符号計算手段が、前記復号文の誤り検出符号を計算する復号文誤り検出符号計算ステップと、
逆算手段が、前記取得した変換誤り検出符号と前記復号文の誤り検出符号との前記逆演算により、前記鍵データの誤り検出符号を逆算する逆算ステップと、
検証手段が、前記逆算した鍵データの誤り検出符号と、予め取得した前記鍵データの誤り検出符号とを比較することにより、前記取得した暗号文を検証する検証ステップと、
を含むことを特徴とする検証方法。
【請求項8】
コンピュータを、
平文と鍵データとの所定の演算で暗号化された暗号文と、前記鍵データの誤り検出符号と前記平文の誤り検出符号との前記演算で変換された変換誤り検出符号とを、取得する暗号文取得手段、
前記取得した暗号文と予め取得した前記鍵データとの前記演算の逆演算により復号文を生成する復号手段、
前記復号文の誤り検出符号を計算する復号文誤り検出符号計算手段、
前記取得した変換誤り検出符号と前記復号文の誤り検出符号との前記逆演算により、前記鍵データの誤り検出符号を逆算する逆算手段、および、
前記逆算した鍵データの誤り検出符号と、予め取得した前記鍵データの誤り検出符号とを比較することにより、前記取得した暗号文を検証する検証手段として機能させることを特徴とするプログラム。
【請求項9】
鍵データを発行する発行装置と、前記発行装置から取得した前記鍵データと平文との所定の演算で暗号化された暗号文を生成する端末装置と、前記端末装置からの前記暗号文を検証する検証装置と、を備えた検証システムにおいて、
前記検証装置が、
前記暗号文と、前記鍵データの誤り検出符号と前記平文の誤り検出符号との前記演算で変換された変換誤り検出符号とを、前記端末装置から取得する鍵取得手段と、
前記取得した暗号文と、前記発行装置から予め取得した前記鍵データとの前記演算の逆演算により復号文を生成する復号手段と、
前記復号文の誤り検出符号を計算する復号文誤り検出符号計算手段と、
前記取得した変換誤り検出符号と前記復号文の誤り検出符号との前記逆演算により、前記鍵データの誤り検出符号を逆算する逆算手段と、
前記逆算した鍵データの誤り検出符号と、前記発行装置から予め取得した前記鍵データの誤り検出符号とを比較することにより、前記取得した暗号文を検証する検証手段と、
を備えることを特徴とする検証システム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、検証装置、検証方法、プログラム、および、検証システムに関する。
【背景技術】
【0002】
量子計算機の実用化が進むにつれて、従来の共有鍵方式や公開鍵方式を利用した暗号通信の安全性が問題になると言われている。絶対安全な暗号通信を提供するために、量子暗号鍵配布技術等により、乱数列を共有したワンタイムパッド暗号が利用されている。例えば、特許文献1には、センタノードと複数のリモートノードの各々との間で乱数列を共有し、第1リモートノードと第2リモートノードとの間で通信を行う場合、第2リモートノードの第2乱数列の一部をセンタノードから第1リモートノードへ配送し、第1リモートノードおよび第2リモートノードは第2乱数列の一部を共有する共有乱数管理方法が開示されている。
【先行技術文献】
【特許文献】
【0003】
【発明の概要】
【発明が解決しようとする課題】
【0004】
しかし、ワンタイムパッド暗号の場合、使い捨て暗号鍵のサイズが大きくなるにつれて、使い捨て暗号鍵の転送、および保存時に外乱によって確率的に発生するビットエラーも増加するという問題があった。特に、ICカードなどのリソースが限られた機器において、暗号化して暗号文を送付す際に、大きなサイズの暗号鍵のビットエラー等のエラーを検出・訂正する処理は負荷の大きな作業であり、機器の応答速度を低下させる要因となっていた。
【0005】
そこで、本発明は上記の問題点等に鑑みて為されたもので、その課題の一例は、リソースが限られた機器からの暗号文のエラーを検証できる検証装置、検証方法、プログラム、検証システムを提供することを目的とする。
【課題を解決するための手段】
【0006】
上記の課題を解決するために、請求項1に記載の発明は、平文と鍵データとの所定の演算で暗号化された暗号文と、前記鍵データの誤り検出符号と前記平文の誤り検出符号との前記演算で変換された変換誤り検出符号とを、取得する暗号文取得手段と、前記取得した暗号文と予め取得した前記鍵データとの前記演算の逆演算により復号文を生成する復号手段と、前記復号文の誤り検出符号を計算する復号文誤り検出符号計算手段と、前記取得した変換誤り検出符号と前記復号文の誤り検出符号との前記逆演算により、前記鍵データの誤り検出符号を逆算する逆算手段と、前記逆算した鍵データの誤り検出符号と、予め取得した前記鍵データの誤り検出符号とを比較することにより、前記取得した暗号文を検証する検証手段と、を備えることを特徴とする。
【0007】
また、請求項2に記載の発明は、請求項1に記載の検証装置において、前記鍵データが、乱数列から順に取り出された、使い捨て鍵ブロックであることを特徴とする。
【0008】
また、請求項3に記載の発明は、請求項2に記載の検証装置において、前記乱数列を記憶する乱数列記憶手段と、前記使い捨て鍵ブロックの前記乱数列における使用開始位置およびブロックサイズの情報を取得する使い捨て鍵ブロック情報取得手段と、を更に備え、前記予め取得した鍵データが、前記使用開始位置および前記ブロックサイズの情報に応じて前記乱数列記憶手段から取得されることを特徴とする。
【0009】
また、請求項4に記載の発明は、請求項1から3いずれか1項に記載の検証装置において、前記演算が、XOR演算であることを特徴とする。
【0010】
また、請求項5に記載の発明は、請求項1から3いずれか1項に記載の検証装置において、前記誤り検出符号が、巡回冗長符号であることを特徴とする。
【0011】
また、請求項6に記載の発明は、請求項1から3いずれか1項に記載の検証装置において、前記予め取得した鍵データおよび前記予め取得した鍵データの誤り検出符号を、セキュア通信路を通して予め取得することを特徴とする。
【0012】
また、請求項7に記載の発明は、暗号文取得手段が、平文と鍵データとの所定の演算で暗号化された暗号文と、前記鍵データの誤り検出符号と前記平文の誤り検出符号との前記演算で変換された変換誤り検出符号とを、取得する暗号文取得ステップと、復号手段が、前記取得した暗号文と予め取得した前記鍵データとの前記演算の逆演算により復号文を生成する復号ステップと、復号文誤り検出符号計算手段が、前記復号文の誤り検出符号を計算する復号文誤り検出符号計算ステップと、逆算手段が、前記取得した変換誤り検出符号と前記復号文の誤り検出符号との前記逆演算により、前記鍵データの誤り検出符号を逆算する逆算ステップと、検証手段が、前記逆算した鍵データの誤り検出符号と、予め取得した前記鍵データの誤り検出符号とを比較することにより、前記取得した暗号文を検証する検証ステップと、を含むことを特徴とする。
【0013】
また、請求項8に記載の発明は、コンピュータを、平文と鍵データとの所定の演算で暗号化された暗号文と、前記鍵データの誤り検出符号と前記平文の誤り検出符号との前記演算で変換された変換誤り検出符号とを、取得する暗号文取得手段、前記取得した暗号文と予め取得した前記鍵データとの前記演算の逆演算により復号文を生成する復号手段、前記復号文の誤り検出符号を計算する復号文誤り検出符号計算手段、前記取得した変換誤り検出符号と前記復号文の誤り検出符号との前記逆演算により、前記鍵データの誤り検出符号を逆算する逆算手段、および、前記逆算した鍵データの誤り検出符号と、予め取得した前記鍵データの誤り検出符号とを比較することにより、前記取得した暗号文を検証する検証手段として機能させることを特徴とする。
【0014】
また、請求項9に記載の発明は、鍵データを発行する発行装置と、前記発行装置から取得した前記鍵データと平文との所定の演算で暗号化された暗号文を生成する端末装置と、前記端末装置からの前記暗号文を検証する検証装置と、を備えた検証システムにおいて、前記検証装置が、前記暗号文と、前記鍵データの誤り検出符号と前記平文の誤り検出符号との前記演算で変換された変換誤り検出符号とを、前記端末装置から取得する鍵取得手段と、前記取得した暗号文と、前記発行装置から予め取得した前記鍵データとの前記演算の逆演算により復号文を生成する復号手段と、前記復号文の誤り検出符号を計算する復号文誤り検出符号計算手段と、前記取得した変換誤り検出符号と前記復号文の誤り検出符号との前記逆演算により、前記鍵データの誤り検出符号を逆算する逆算手段と、前記逆算した鍵データの誤り検出符号と、前記発行装置から予め取得した前記鍵データの誤り検出符号とを比較することにより、前記取得した暗号文を検証する検証手段と、を備えることを特徴とする。
【発明の効果】
【0015】
本発明によれば、暗号文を受け取る側の検証装置が、暗号文と共に、鍵データの誤り検出符号と平文の誤り検出符号との演算で変換された変換誤り検出符号を取得し、暗号文の復号文の誤り検出符号を計算し、取得した変換誤り検出符号と復号文の誤り検出符号との逆演算により、鍵データの誤り検出符号を逆算し、逆算した鍵データの誤り検出符号と、予め取得した鍵データの誤り検出符号とを比較することにより、取得した暗号文を検証するので、暗号文を送付する側の機器の処理の負荷を掛けず、リソースが限られたこの機器からの暗号文のエラーを検証できる。
【図面の簡単な説明】
【0016】
【
図1】本発明の実施形態に係る検証システムの概要構成例を示す図である。
【
図2】
図1の検証装置の概要構成例を示す図である。
【
図3】
図1のICカードの概要構成例を示す図である。
【
図4】
図1の発行装置の概要構成例を示す図である。
【
図5】検証システムのICカードの発行の動作例を示すシーケンス図である。
【
図6】検証システムにおけるデータの流れの一例を示す模式図である。
【
図7】検証システムにおける検証の動作例を示すシーケンス図である。
【発明を実施するための形態】
【0017】
以下、図面を参照して本発明の実施形態について説明する。なお、以下に説明する実施の形態は、検証システムに対して本発明を適用した場合の実施形態である。
【0018】
[1.検証システムSの構成および機能概要]
まず、本発明の一実施形態に係る検証システムの構成および概要機能について、
図1を用いて説明する。
【0019】
図1は、本実施形態に係る検証システムSの概要構成例を示す模式図である。
【0020】
図1に示すように、検証システムSは、暗号文の検証を行う検証装置10と、検証装置10へ暗号文を送信するICカード20と、ICカード20を発行する発行装置30と、を備えている。
【0021】
検証装置10は、サーバ装置であり、ネットワークNWを介して、複数のICカード20と接続する。また、検証装置10は、セキュア通信路SCを介して、発行装置30と接続する。検証装置10は、発行装置30が発行した各ICカード20との使い捨ての暗号鍵、ICカード20のチップID等の固有ID等を、発行装置30から予め取得する。なお、固有IDは、他のICカード20と区別できるIDでよく、ICカード20に固有であればよい。
【0022】
ここで、セキュア通信路SCは、量子鍵配送等のプロトコルを用いて安全性が確保された通信路である。また、セキュア通信路SCは、検証装置10と発行装置30との専用回線でよい。検証装置10と発行装置30との間でセキュア通信路を予め確保できるならば、セキュア通信路SCの代わりに、検証装置10と発行装置30と通信は、ネットワークNWを介した通信路でもよい。
【0023】
ICカード20は、サーバ装置の一例である検証装置10に接続する端末装置の一例である。ICカード20は、電子情報記憶媒体の一例であるICチップを含んでいる。ICチップは、例えば、耐タンパー性を有するICチップである。ICチップの形態には、eSE(embedded Secure Element)の形態や、SIMカード(Subscriber Identity Module Card)の形態等がある。
【0024】
ICカード20は、例えば、クレジットカード、キャッシュカード、ETCカード、デジタルルームキー、車両のデジタルキー、身分証明用のカード、パスポート等である。ICカード20は、SIMカード(Subscriber Identity Module Card)、ICタグでもよい。ICカード20は、SIMカードが差し込まれたスマートフォンなどのモバイルデバイスでもよい。ICカード20は、ICチップが組み込まれたモバイルデバイスでもよい。また、電子情報記憶媒体の一例であるICチップは、ECU(Electronic Control Unit)等の制御装置に搭載されるケースでもよい。
【0025】
ICカード20は、リードライタ装置40、41等に挿入されたり、リードライタ装置40、41等と無線通信したりすることで、リードライタ装置40、41等と接続する。端末装置の一例であるリードライタ装置40、41は、ネットワークNWを介して、検証装置10と接続する。
【0026】
なお、リードライタ装置40、41は、平文の入力を受け付けるパーソナルコンピュータ等に接続していてもよい。リードライタ装置40、41は、ICカード20の機能が組み込まれたモバイルデバイスでもよい。この場合、モバイルデバイスが平文の入力を受け付ける。
【0027】
発行装置30は、必要な情報を書き込んだICカード20を排出する。発行装置30は、乱数を発生して、乱数を鍵ブロックに分割して、鍵データの一例の鍵ブロック、鍵ブロックの誤り検出符号の一例である巡回冗長符号(CRC:Cyclic Redundancy Check)等を生成する。発行装置30は、ICカード20の発行時に、鍵ブロック、鍵ブロックの誤り検出符号等、を書き込んでICカード20を排出する。発行装置30は、ICカード20と同じ鍵ブロックを検証装置10に送信する。このように、発行装置30は、検証装置10およびICカード20に鍵データを送信することにより、検証装置10およびICカード20に対して鍵データを発行する。
【0028】
発行装置30は、鍵ブロックを書き込む際、ICカード20のチップID等の固有IDと関連付けて、鍵ブロック、鍵ブロックの誤り検出符号等を、データベースに記憶する。
【0029】
ここで、誤り検出符号の一例として、CRC等の固定長のチェックビット、CMAC(Cipher-based MAC)等によるメッセージ認証符号、ハッシュ値等が挙げられる。誤り検出符号の算出アルゴリズムは、誤り検出符号の計算に用いられるアルゴリズムならばよく、例えば、CRCアルゴリズム、MD5(Message Digest5)、SHA(Secure Hash Algorithm)等のハッシュ関数、チェックサムに用いる関数、パリティチェックの関数等が挙げられる。
【0030】
なお、検証装置10は、端末装置からの暗号文を検証する検証装置の一例である。ICカード20、または、ICカード20と接続したリードライタ装置40、41は、発行装置から取得した鍵データと平文との所定の演算で暗号化された暗号文を生成する端末装置の一例である。発行装置30は、鍵データを発行する発行装置の一例である。
【0031】
次に、検証装置10の概要構成例を、図を用いて説明する。
図2は、の検証装置10の概要構成例を示す図である。
【0032】
図2に示すように、コンピュータとして機能する検証装置10は、通信部11と、記憶部12と、表示部13と、操作部14と、入出力インターフェース部15、制御部16とを備えている。そして、制御部16と入出力インターフェース部15とは、システムバス17を介して接続されている。
【0033】
通信部11は、ICカード20と発行装置30との通信を制御する。通信部11は、ネットワークNWに接続可能なリードライタ装置40、41を介して、ICカード20との通信を制御する。通信部11は、セキュア通信路SCを介して、発行装置30との通信を制御する。なお、通信部11は、ネットワークNWを介して、発行装置30と通信を行ってもよい。
【0034】
記憶部12は、例えば、ハードディスクドライブ、ソリッドステートドライブ等により構成されている。記憶部12には、オペレーティングシステムおよびアプリケーションが記憶される。
【0035】
また、記憶部12には、鍵ブロックと、鍵ブロックの誤り検出符号と、ICカード20の固有IDと、が関連付けられたデータベースが構築される。なお、記憶部12は、乱数列記憶手段の一例として、発行装置30と共通の乱数列を記憶しておいてもよい。この場合、乱数列のID、鍵ブロックのサイズ、鍵ブロックの番号、鍵ブロックの誤り検出符号と、ICカード20の固有IDと、が関連付けられたデータベースが構築される。
【0036】
表示部13は、例えば、液晶表示素子または有機EL(Electro Luminescence)素子等によって構成されている。操作部14は、例えば、キーボードおよびマウス等によって構成されている。
【0037】
入出力インターフェース部15は、通信部21および記憶部22等とシステム制御部25とのインターフェースである。
【0038】
制御部16は、例えば、CPU(Central Processing Unit)、RAM(Random Access Memory)、およびROM(Read Only Memory)と、を有する。制御部16は、CPUが、ROMや、RAMや、記憶部12に記憶された各種プログラムを読み出して実行する。
【0039】
次に、ICカード20の概要構成例を、図を用いて説明する。
【0040】
図3は、ICカード20の概要構成例を示す図である。
図3に示すように、ICカード20は、通信部21、記憶部22、および制御部23等を備えて構成される。
【0041】
通信部21は、接点端子および/またはコイル型のアンテナを有する。発行装置30において、ICカード20が発行される際に、ICカード20が、通信部21の接点端子またはコイル型のアンテナを介して発行装置30と通信を行う。ICカード20がリードライタ装置40、41に挿入された際、ICカード20が、通信部21の接点端子またはコイル型のアンテナを介してリードライタ装置40、41と通信を行う。
【0042】
記憶部22は、例えば、フラッシュメモリ等の不揮発性メモリ(NVM(Nonvolatile Memory))である。記憶部22には、オペレーティングシステム(OS)およびアプリケーションが記憶される。アプリケーションには、相互認証処理プログラム等が含まれる。記憶部22は、ICカード20を特定するためのチップID等の固有IDを記憶している。
【0043】
記憶部22は、発行装置30から送信された鍵データの一例である鍵ブロックと、鍵データの誤り検出符号の一例である巡回冗長符号等と、を記憶する。
【0044】
制御部23は、CPU、RAM、およびROM等を備えて構成される。制御部23は、平文と鍵ブロックとの演算を行ったり、平文の誤り検出符号を計算したりする。平文を暗号文にするための、平文と鍵データとの所定の演算の一例として、排他的論理和(XOR)が挙げられる。所定の演算は、暗号文を平文に復号するための逆演算が、容易に行える演算ならばよい。
【0045】
次に、発行装置30の概要構成例について、
図4を用いて説明する。
図4は、発行装置30の概要構成例を示す図である。
【0046】
図4に示すように、発行装置30は、制御部31と、記憶部32と、通信部33と、表示部34と、発行部35と、を有する。
【0047】
制御部31は、CPU、RAM、およびROM等を備えて構成される。制御部31は、記憶部32および通信部33等を制御する。制御部31は、乱数生成機能等を有する。乱数生成機能は、ソフトウェアで実現されてもよいし、ハードウェアで実現されてよい。また、制御部31は、誤り検出符号を計算する。
【0048】
記憶部32は、例えば、ハードディスクドライブ、ソリッドステートドライブ等により構成されている。記憶部12には、オペレーティングシステムおよびアプリケーションが記憶される。
【0049】
また、記憶部32には、生成した鍵ブロックと、鍵ブロックの誤り検出符号と、発行したICカード20の固有IDと、が関連付けられたデータベースが構築される。
【0050】
通信部33は、ICカード20に対するリードライタ機能を有する。通信部33は、ICカード20の接点端子および/またはコイル型のアンテナを介して、ICカード20と接続して、発行装置30とICカード20との通信を制御する。制御部31は、通信部33を介して、生成した鍵ブロック等をICカード20に書き込む。通信部33は、セキュア通信路SCを介して、検証装置10との通信を制御する。なお、通信部33は、ネットワークNWを介して、検証装置10と通信を行ってもよい。
【0051】
表示部34は、例えば、液晶表示素子または有機EL素子等によって構成されている。
【0052】
発行部35は、ICカード20のフィーダ機構を有し、鍵ブロック等の鍵データが書き込まれたICカード20を排出する。
【0053】
[2.検証システムの動作]
次に、本発明の1実施形態に係る検証システムの動作について図を用いて説明する。
【0054】
(2.1 ICカード20の発行の動作例)
まず、発行装置30によるICカード20の発行の動作例について、
図5および
図6を用いて説明する。
図5は、検証システムのICカードの発行の動作例を示すシーケンス図である。
図6は、検証システムにおけるデータの流れの一例を示す模式図である。
【0055】
図5に示すように、検証システムSは、使い捨て暗号鍵を生成する(ステップS1)。具体的には、発行装置30の制御部31が、
図6に示すように、使い捨て暗号鍵50として、所定の長さの乱数を発生させる。乱数のサイズは、ICカード20の記憶部22の容量に依存する。
【0056】
次に、検証システムSは、鍵ブロックに分割する(ステップS2)。具体的には、発行装置30の制御部31が、暗号鍵50を、所定のサイズの鍵ブロック51に分割する。なお、制御部31が、鍵ブロックのサイズを端末装置のICカード20が備えるメモリのアーキテクチャ(例えば、ラッシュメモリの書き込みページサイズ)と適合するように、鍵ブロック51に分割したり、端末装置と発行装置30間の通信路の通信パケットサイズに合わせるように、鍵ブロック51に分割したりする。制御部31が、乱数を分割せずに、ブロック毎に鍵ブロック長の乱数を発生させてもよい。
【0057】
次に、検証システムSは、各鍵ブロックの鍵CRCを計算する(ステップS3)。具体的には、発行装置30の制御部31が、鍵ブロックの乱数の値を、所定の値で割り算を行い余りの値(鍵CRC61)を計算する。なお、鍵CRC61は、鍵データの誤り検出符号の一例である。CRCを計算するための除数等は、誤り検出符号を計算するためのパラメータの一例である。
【0058】
次に、検証システムSは、ICカード20の発行用に、各鍵ブロック、各CRCを送信する(ステップS4)。具体的には、発行装置30の制御部31が、発行装置30に接続したICカード20に、各鍵ブロック51と鍵CRC61とをペアにして、ブロック順に送信する。制御部31が、各鍵ブロック51、各鍵CRC61を、接続しているICカード20の固有IDに関連付けて、記憶部32にブロック順に記憶する。なお、発行装置30は、誤り検出符号を計算するためのパラメータの一例のCRCを計算するための除数を、接続したICカード20に送信する。また、ブロック順は、例えば、先頭から分割して行った暗号鍵50の先頭からの順番である。
【0059】
次に、検証システムSは、各鍵ブロックと各CRCとを記憶する(ステップS5)。具体的には、ICカード20の制御部23が、受信した各鍵ブロック52と各鍵CRC62とをペアにして、記憶部22にブロック順に記憶する。制御部23が、受信した誤り検出符号を計算するためのパラメータを記憶部22に記憶する。
【0060】
次に、発行装置30は、各鍵ブロックと各鍵CRC等を記憶したICカード20を、発行部35から排出する。
【0061】
次に、検証システムSは、各鍵ブロック、各鍵CRC、固有IDを検証装置10に送信する(ステップS6)。まず、発行装置30と検証装置10とは、セキュア通信路SCを介して接続する。制御部31が、ICカード20の固有IDと共に、各鍵ブロック51の各鍵CRC61のペアを、検証装置10にブロック順にセキュア通信路SCを介して送信する。発行装置30は、誤り検出符号を計算するためのパラメータの一例のCRCを計算するための除数を、検証装置10に送信する。
【0062】
次に、検証システムSは、各鍵ブロックと各鍵CRCとを固有IDに関連付け記憶する(ステップS7)。具体的には、検証装置10の制御部16が、受信した各鍵ブロック53と各鍵CRC63とをペアにして、記憶部12にブロック順に、受信した固有IDに関連付けて記憶する。制御部16が、受信した誤り検出符号を計算するためのパラメータを、受信した固有IDに関連付けて、記憶部12に記憶する。
【0063】
なお、量子鍵配送等のプロトコルを用いて検証装置10と発行装置30とが、使い捨て暗号鍵の乱数列を事前に共有する場合、鍵ブロック51の代わりに鍵ブロックの生成情報(使い捨て暗号鍵の使用開始位置とブロックサイズ)のシーケンスを、鍵ブロックの鍵CRC61と合わせて送付してもよい。この場合、鍵ブロック53は、検証装置10において、発行装置30と同様の方法で生成される。
【0064】
(2.2 検証の動作例)
次に、検証システムSにおける検証の動作例について、図を用いて説明する。
図7は、検証システムSにおける検証の動作例を示すシーケンス図である。
【0065】
まず、ICカード20の制御部23が、検証装置10に送信する平文を、格納している鍵ブロック52のサイズに分割し、平文ブロック70を生成する。なお、平文ブロック70のサイズが、鍵ブロック52のサイズを満たさないときは、制御部23が、パディングを行い、データ長を揃えてもよい。
【0066】
図7に示すように、検証システムSは、鍵ブロックと平文ブロックとを演算して暗号文を生成する(ステップS10)。具体的には、ICカード20の制御部23が、鍵ブロック52と平文ブロック70とのXORを計算して、平文ブロック70の暗号文71を生成する。
【0067】
次に、検証システムSは、平文ブロックの平文CRCを計算する(ステップS11)。具体的には、ICカード20の制御部23が、発行装置30から取得した誤り検出符号を計算するためのパラメータを用いて、平文ブロック70に対し、平文の誤り検出符号の一例である平文ブロック70の平文CRC65を計算する。平文CRC65は、平文の誤り検出符号の一例である。
【0068】
次に、検証システムSは、鍵ブロックの鍵CRCと平文ブロックの平文CRCとを演算して変換CRCを生成する(ステップS12)。具体的には、ICカード20の制御部23が、鍵ブロックの鍵CRC62と平文ブロックの平文CRC65とのXOR演算を計算して変換CRC66を生成する。鍵CRC62が、平文CRC65とのXOR演算により、変換CRC66に変換される。変換CRC66が、変換誤り検出符号の一例である。鍵データの誤り検出符号と平文の誤り検出符号との演算で、鍵データの誤り検出符号が変換誤り検出符号に変換される。
【0069】
次に、検証システムSは、固有ID、暗号文、および変換CRCを送信する(ステップS13)。具体的には、ICカード20の制御部23が、ICカード20自体の固有ID、生成した暗号文71、および変換CRC66を連結して、リードライタ装置40、41等を介して、検証装置10に送信する。
【0070】
次に、検証システムSは、固有ID、暗号文、変換CRCを取得する(ステップS14)。具体的には、検証装置10の制御部16が、ICカード20の固有ID、暗号文71、および変換CRC66を、ICカード20から取得する。このように、検証装置10が、平文と鍵データとの所定の演算で暗号化された暗号文と、鍵データの誤り検出符号と平文の誤り検出符号との演算で変換された変換誤り検出符号とを、取得する暗号文取得手段の一例として機能する。
【0071】
次に、検証システムSは、暗号文から復号文を生成する(ステップS15)。具体的には、検証装置10の制御部16が、受信した暗号文71と、予め発行装置30から取得した鍵ブロック53とのXORを計算して、復号文ブロック72を生成する。なお、制御部16は、ICカード20の固有IDに基づき記憶部12を参照して、鍵ブロック53を取得する。このように、検証装置10が、取得した暗号文と予め取得した鍵データとの演算の逆演算により復号文を生成する復号手段の一例として機能する。
【0072】
次に、検証システムSは、復号文から復号文CRCを計算する(ステップS16)。具体的には、検証装置10の制御部16が、発行装置30から取得した誤り検出符号を計算するためのパラメータを用いて、復号文ブロック72から、復号文CRC67を計算する。なお、制御部16は、ICカード20の固有IDに基づき記憶部12を参照して、誤り検出符号を計算するためのパラメータを取得する。復号文CRC67は、復号文の誤り検出符号の一例である。このように、検証装置10が、復号文の誤り検出符号を計算する復号文誤り検出符号計算手段の一例として機能する。
【0073】
次に、検証システムSは、変換CRCと復号文CRCとから、鍵CRCを逆演算する(ステップS17)。具体的には、検証装置10の制御部16が、ICカード20から取得した変換CRC66と、生成した復号文CRC67とのXORを計算して、鍵ブロックの鍵CRC68を逆演算する。ここで、XOR演算が、演算の逆演算の一例である。変換CRC66が、復号文CRC67とのXOR演算による逆演算により、鍵CRC68に逆変換される。鍵CRC68が、逆算された鍵データの誤り検出符号の一例である。このように、検証装置10が、取得した変換誤り検出符号と復号文の誤り検出符号との逆演算により、鍵データの誤り検出符号を逆算する逆算手段の一例として機能する。
【0074】
次に、検証システムSは、逆演算した鍵ブロックのCRCが一致する否かを判定する(ステップS18)。具体的には、検証装置10の制御部16が、逆演算した鍵ブロックの鍵CRC68が、発行装置30から予め取得した鍵CRC63と、を比較して、これらが一致する否かを判定する。なお、制御部16は、ICカード20の固有IDに基づき記憶部12を参照して、鍵CRC63を取得する。このように、検証装置10が、逆算した鍵データの誤り検出符号と、予め取得した鍵データの誤り検出符号とを比較することにより、取得した暗号文を検証する検証手段の一例として機能する。
【0075】
CRCが一致しない場合(ステップS18:NO)、検証装置10の制御部16が、復号文ブロック72を破棄する。検証装置10の制御部16が、CRC不一致をICカード20に通知する。ICカード20の制御部23が、同じ平文ブロック70に対して、次の鍵ブロック52と次の鍵CRC62により、ステップS10からS13の処理を行う。このとき、制御部23は、記憶部22を参照して、鍵ブロック52の順を示すカウンタにより、次の鍵ブロック52とこれに対応する次の鍵CRC62を取得する。検証装置10の制御部16が、ICカード20から、再度、暗号文71と変換CRC66を取得した際、次の鍵ブロック53と、これに対応する次の鍵CRC63とを用いて、ステップS14からS18の処理を行う。このとき、制御部16は、記憶部12を参照して、鍵ブロック53の順を示すカウンタにより、次の鍵ブロック53とこれに対応する次の鍵CRC63を取得する。
【0076】
CRCが一致した場合(ステップS18:YES)、検証装置10の制御部16が、次の暗号文71を要求する。ICカード20の制御部23が、次の平文ブロック70に対して、次の鍵ブロック52と次の鍵CRC62により、ステップS10からS13の処理を行う。検証装置10の制御部16が、ICカード20から、次の暗号文71と変換CRC66を取得した際、次の鍵ブロック53と、これに対応する次の鍵CRC63とを用いて、ステップS14からS18の処理を行う。
【0077】
以上、本実施形態によれば、暗号文71を受け取る側の検証装置10が、平文の一例である平文ブロック70と鍵ブロック52との所定の演算XORで暗号化された暗号文71と、鍵データの誤り検出符号の鍵CRC62と平文の誤り検出符号の平文CRC65との演算XORで変換された変換誤り検出符号の変換CRC66とを、取得し、取得した暗号文71と予め取得した鍵ブロック53との演算の逆演算XORにより復号文ブロック72を生成し、復号文の誤り検出符号の復号文CRC67を計算し、取得した変換誤り検出符号の変換CRC66と復号文の誤り検出符号67との逆演算により、鍵データの誤り検出符号の鍵CRC68を逆算し、逆算した鍵データの誤り検出符号の鍵CRC68と、予め取得した鍵ブロックの誤り検出符号の鍵CRC63と、を比較することにより、取得した暗号文71を検証するので、暗号文71を送付する側の機器、ICカード20の処理の負荷を掛けず、リソースが限られたICカード20からの暗号文71のエラーを検証できる。
【0078】
鍵データが、乱数列から順に取り出された、使い捨て鍵ブロック52である場合、鍵データが、使い捨てであるので、セキュリティがより向上する。
【0079】
乱数列を記憶し、使い捨て鍵ブロックの乱数列における使用開始位置およびブロックサイズの情報を取得し、予め取得した鍵データが、使用開始位置およびブロックサイズの情報に応じて乱数列記憶手段の一例の記憶部12から取得される場合、使用時に、鍵データを直接送付しないため、傍受に強くなり、セキュリティがより向上する。
【0080】
演算が、XOR演算である場合、逆演算もXOR演算となり、簡易に逆演算ができる。
【0081】
誤り検出符号が、巡回冗長符号(CRC)である場合、バースト誤りを検出しやすくなる。
【0082】
予め取得した鍵データおよび予め取得した鍵データの誤り検出符号を、セキュア通信路を通して予め取得する場合、量子鍵配送等によるセキュア通信路で、鍵データおよび鍵データの誤り検出符号を、事前に取得しておくことにより、セキュリティがより向上する。
【符号の説明】
【0083】
10 検証装置
20 ICカード(端末装置)
30 発行装置
52、53 鍵ブロック(鍵データ)
62、63、68 鍵CRC(鍵データの誤り検出符号)
65 平文CRC(平文の誤り検出符号)
66 変換CRC(変換誤り検出符号)
67 復号文CRC(復号文の誤り検出符号)
70 平文ブロック(平文)
71 暗号文
72 復号文ブロック(復号文)