(57)【要約】【課題】機器認証情報の漏えいを防止し、よりセキュリティ性の高い機器認証を容易に構築可能な情報処理システムを提供する。【解決手段】  上位装置２は、アプリケーション５１と、カードリーダ制御ソフトウェア６０と、認証鍵生成ＤＬＬ５５とを備える。カードリーダ制御ソフトウェア６０は、デバイス・暗号制御ＤＬＬ６１と、通信制御ＤＬＬ６２と、インターフェース部ＤＬＬ６３とを備える。デバイス・暗号制御ＤＬＬ６１は、認証処理部２０（乱数生成部、暗号部、復号部、認証判定部）、制御部２５の機能を実現するＤＬＬである。認証鍵生成ＤＬＬ５５は、カードリーダ３の機種固有情報から所定の認証情報アルゴリズムをもとにＫｍを生成するＤＬＬである。【選択図】図２
2019134288.tif 000002
【特許請求の範囲】
【請求項１】
上位装置と情報処理装置との間で情報の送受信を行う情報処理システムであって、
前記上位装置は、
共通鍵暗号方式を用いて前記情報処理装置が正当な機器であることを認証する上位装置側認証処理部と、
前記上位装置と前記情報処理装置とが共通して保有する機器認証情報を生成する認証情報アルゴリズムを有し、前記情報処理装置が所有する機種固有情報に基づいて前記機器認証情報を生成する認証情報生成部と、
前記情報処理装置と通信を行う通信部と、を備え、
前記情報処理装置は、
前記上位装置と認証処理を行う情報処理装置側認証処理部と、
前記機器認証情報および前記機種固有情報を記憶する不揮発性記憶部と、を備え、
前記認証情報生成部は、前記情報処理装置の機種固有情報からマスターキーを生成する機能を有し、
前記認証情報生成部、前記上位装置側認証処理部、及び前記通信部の機能は、それぞれの機能をモジュールとした制御ソフトウェアとして構成されており、
前記情報処理装置の前記マスターキーを書き換え、及び予め仮の機器認証情報として保持しているテンポラリーキーに書き換え可能なツールを備えることを特徴とする情報処理システム。
【請求項２】
前記制御ソフトウェアの前記認証情報生成部として機能するモジュールはＤＬＬとして構成されていることを特徴とする請求項１に記載の情報処理システム。
【請求項３】
前記認証情報生成部として機能する前記ＤＬＬのファイル名および前記ＤＬＬとの通信インターフェースは変更不可であることを特徴とする請求項２に記載の情報処理システム。
【請求項４】
前記情報処理装置の前記機種固有情報は、前記上位装置側認証処理部のメモリに格納されて、
前記上位装置側認証処理部は、入力毎に前記情報処理装置が入れ替えられたか否かを確認することを特徴とする請求項１から３までのいずれかに記載の情報処理システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、上位装置と情報処理装置との間で情報の送受信を行う情報処理システムに関し、特に、上位装置が共通鍵暗号方式を用いて情報処理装置が正当な機器であることを認証する機能を備えた情報処理システムに関する。
【背景技術】
【０００２】
一般に、上位装置（ホストコンピュータ等）が、通信相手である情報処理装置（カードリーダ等）に価値のある情報を送信する場合には、通信相手の情報処理装置が正当なものであることを確認する機器認証を行っている（例えば、特許文献１参照）。このような機器認証では、暗号化するための鍵および復号するための鍵として同じ鍵を用いる共通鍵暗号方式を用いている。
【０００３】
特許文献１に示す機器認証では、装置運用管理者が暗号の知識や経験が無くても、機体毎にユニークなマスターキーを設定して運用できるアルゴリズムを提案している。共通鍵暗号では、デバイスと装置運用管理者側で共通の鍵を保持しなければならない。デバイス出荷時には機種共通のマスターキーを保持しているが、１台のマスターキーが流出した時点で全ての同機種の鍵情報が流出することになる。それを防ぐためには機体固有のマスターキーを設定することが望ましい。また、セキュリティの観点から、デバイス製造者はマスターキーの生成に関わらない方が望ましい。この方式では、装置運用管理者側で３ＤＥＳの知識と技術が必要となり、適切な鍵の管理と運用をしなければならないため、時間と費用がかかる。装置運用管理者側ではマスターキーの生成アルゴリズムのみを考え、その他の制御は全てデバイス製造者で行うことにより、少ないコストで提案した運用が可能となる。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２０１３−７３２９９号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
特許文献１に開示の技術では、上述の様に、情報処理装置の製造業者（すなわちデバイス製造者）がマスターキーの生成アルゴリズム以外の制御を行うが、デバイス製造業者におけるソフトウェア開発リソースが不十分な場合もあり、一層導入が容易となる技術が求められていた。
【０００６】
本発明は、このような事情に鑑み、機器認証情報の漏えいを防止し、よりセキュリティ性の高い機器認証を容易に構築可能な情報処理システムを提供することを目的とする。
【課題を解決するための手段】
【０００７】
本発明は、上位装置と情報処理装置との間で情報の送受信を行う情報処理システムであって、前記上位装置は、共通鍵暗号方式を用いて前記情報処理装置が正当な機器であることを認証する上位装置側認証処理部と、前記上位装置と前記情報処理装置とが共通して保有する機器認証情報を生成する認証情報アルゴリズムを有し、前記情報処理装置が所有する機種固有情報に基づいて前記機器認証情報を生成する認証情報生成部と、前記情報処理装置と通信を行う通信部と、を備え、前記情報処理装置は、前記上位装置と認証処理を行う情報処理装置側認証処理部と、前記機器認証情報および前記機種固有情報を記憶する不揮発性記憶部と、を備え、前記認証情報生成部は、前記情報処理装置の機種固有情報からマスターキーを生成する機能を有し、前記認証情報生成部、前記上位装置側認証処理部、及び前記通信部の機能は、それぞれの機能をモジュールとした制御ソフトウェアとして構成されており、前記情報処理装置の前記マスターキーを書き換え、及び予め仮の機器認証情報として保持しているテンポラリーキーに書き換え可能なツールを備えることを特徴とする。
【０００８】
本発明によれば、情報処理システムの装置運用管理者は、共通鍵暗号方式のノウハウ（知識や技術）が十分でない場合でも、十分にセキュリティが確保された情報処理システムを構築でき、かつ、情報処理装置の製造業者は、実際の運用時の機器認証情報については、把握することがないため、製造業者からの機器認証情報の漏えいを防止し、よりセキュリティ性の高い機器認証を容易に構築できる。
【０００９】
また、本発明では、認証情報アルゴリズムについては、情報処理装置の製造業者がソースコード（機器認証情報Ｋｍを生成するための認証情報アルゴリズム）をモジュール（部品）として情報処理システムの装置運用管理者に提供することで、情報処理システムの装置運用管理者は、提供されたソースコードに、機器認証情報Ｋｍを生成する独自のアルゴリズムや機能を追加して、認証鍵生成のためのモジュールを作成することができる。
【００１０】
さらに、認証情報生成部、上位装置側認証処理部、及び通信部の機能は、それぞれの機能をモジュールとした制御ソフトウェアとして、情報処理システムの装置運用管理者に提供されるので、装置運用管理者はモジュール単位で機能を変更・調整することができ、開発リソースを抑制でき、現実の導入がより容易になる。すなわち、装置運用管理者は、３ＤＥＳ等の共通鍵暗号方式のノウハウ（知識や技術）が不十分でない場合でも、十分にセキュリティが確保された情報処理システムを構築できる。一方、情報処理装置の製造業者は、機器認証情報に関して、製造時に仮の機器認証情報を設定しているだけで、実際の運用時の機器認証情報Ｋｍについては、把握することがないため、製造業者からの漏洩といったリスクを回避できる。
【００１１】
本発明において、前記制御ソフトウェアの前記認証情報生成部として機能するモジュールはＤＬＬとして構成されていることが好ましい。
本発明では、装置運用管理者は、ＤＬＬとして提供されたソースコードに、機器認証情報Ｋｍを生成する独自のアルゴリズムや機能を追加して、認証鍵生成ＤＬＬを作成することができる。これにより、３ＤＥＳ等の知識と技術が必要となる部分は、情報処理装置の製造業者がソースコードをＤＬＬとして、利用が容易なパッケージ（ソフトウェア）として提供することができるため、装置運用管理者は、独自の、機器認証情報Ｋｍを生成する認証情報アルゴリズム（認証情報を生成するＤＬＬ）を一層容易に導入できる。
【００１２】
前記認証情報生成部として機能する前記ＤＬＬのファイル名および前記ＤＬＬとの通信インターフェースは変更不可であることを特徴とする。
これによって、予め用意されたＤＬＬをベースに動的に処理プログラムが作成されるため、互換性を確保しつつ、アプリケーションやカードリーダ制御ソフトの処理や、動作チェック等を適切に運用できる。
【００１３】
前記情報処理装置の前記機種固有情報は、前記上位装置側認証処理部のメモリに格納されて、前記上位装置側認証処理部は、入力毎に前記情報処理装置が入れ替えられたか否かを確認することを特徴とする。
入力毎に入れ替えの確認がなされるので、認証処理のセキュリティを一層向上させることができる。
【発明の効果】
【００１４】
本発明によれば、情報処理システムの装置運用管理者は、共通鍵暗号方式のノウハウ（知識や技術）が十分でない場合でも、十分にセキュリティが確保された情報処理システムを構築でき、かつ、情報処理装置の製造業者は、実際の運用時の機器認証情報については、把握することがないため、製造業者からの機器認証情報の漏えいを防止し、よりセキュリティ性の高い機器認証を容易に構築できる。
【図面の簡単な説明】
【００１５】
【図１】実施形態１に係る、情報処理システムを示す機能ブロック図である。
【図２】実施形態１に係る、上位装置が有する主なソフトウェアを示す図である。
【図３】実施形態１に係る、情報処理システムにおける機器認証情報を設定する動作を示す流れ図である。
【図４】図３の機器認証情報を設定する動作に対応するフローチャートを示す図である。
【図５】実施形態１に係る、情報処理システムにおける機器認証動作を示す流れ図である。
【図６】実施形態１に係る、情報処理システムにおける機器認証情報の生成動作を示す流れ図である。
【発明を実施するための形態】
【００１６】
以下、本発明の実施の形態について説明する。
［発明の実施の形態１］
【００１７】
（情報処理システムの構成）
図１は、本発明の実施の形態に係る情報処理システム１を示す機能ブロック図である。
情報処理システム１は、図示のように、ホストコンピュータのような上位装置２と、この上位装置２に通信手段を介して接続された情報処理装置としてのカードリーダ３とから構成されている。なお、本実施形態では、通信手段はＲＳ２３２ＣやＵＳＢのような有線のケーブルである。なお、通信手段は、これら有線に限定されることなく、ＬＡＮで接続でもよく、または、無線であってもよい。
【００１８】
図１に示すように、上位装置２は、認証処理部２０、制御部２５、通信部２６、記憶部２７、認証情報生成部２８を備える。
【００１９】
認証処理部２０は、カードリーダ３との間で認証処理を行う。具体的には、認証処理部２０は、乱数発生部２１、暗号部２２、復号部２３、認証判定部２４を備えて構成され、機器認証に必要な各部の制御を行う。また、認証処理部２０は、初期（カードリーダ３の工場出荷時）においてカードリーダ３の製造者が作成し提供する仮の機器認証情報Ｋｔが、安全な方法で保持する。
【００２０】
仮の機器認証情報Ｋｔは、上位装置２とカードリーダ３との間で送受信されるデータを共通鍵暗号方式を用いて暗号通信するのに先立ち、共通鍵としての通信用交換鍵Ｋｅｘを生成するためのものである。なお、通信用交換鍵Ｋｅｘを生成する処理についての説明は後述する。また、上位装置２は、種々のシステム制御のためのプログラムやパラメータを格納するための不揮発性メモリやハードディスク装置を備えていてもよく、そこに仮の機器認証情報Ｋｔを格納するようにしてもよい。
【００２１】
乱数発生部２１は、通信用交換鍵Ｋｅｘ（ｎ）（ｎは整数。以下同じ）および乱数Ｒ（ｎ）（ｎは整数。以下同じ）を生成する。乱数発生部２１は、通信用交換鍵Ｋｅｘ（ｎ）、乱数Ｒ（ｎ）を生成するアルゴリズム（以下、乱数生成アルゴリズムという）を予め記憶している。通信用交換鍵Ｋｅｘ（ｎ）は、上位装置２とカードリーダ３とが互いにデータを暗号化して送信する際に用いられる暗号鍵（本実施形態では、復号鍵も同じ）である。乱数Ｒ（ｎ）は、データを暗号化して送信する際に、機器認証情報等とともに送信されるデータである。
【００２２】
通信用交換鍵Ｋｅｘ（ｎ）、乱数Ｒ（ｎ）は、上位装置２とカードリーダ３との間で実行される機器認証処理や機器認証情報生成処理ごとに異なっている。本実施形態では、通信用交換鍵Ｋｅｘ（ｎ）は機器認証処理ごとに異なるように生成される。また、乱数Ｒ（ｎ）は、機器認証処理および機器認証情報生成処理ごとに異なるように生成される。
【００２３】
このように、たとえ、同一の機器認証情報が送信される場合であっても、乱数発生部２１で生成される度に通信用交換鍵Ｋｅｘ（ｎ）、乱数Ｒ（ｎ）が異なるため、これらを用いて暗号化された送信データも異なったものとなる。したがって、上位装置２とカードリーダ３との信号を傍受しておき、カードリーダ３を使わずに傍受したのと同様の信号を別のカードリーダに送出したとしても、通信用交換鍵Ｋｅｘ（ｎ）、乱数Ｒ（ｎ）が異なるために信号が一致することはなく、不正操作を防止できる。このため、通信の盗聴や第三者による解読をさらに困難なものにし、よりセキュリティ性を高くしている。
【００２４】
暗号部２２は、３ＤＥＳ（トリプルＤＥＳ）により規格されている暗号アルゴリズムＥを予め記憶する。暗号部２２は、乱数発生部２１で生成した乱数Ｒ（ｎ）に暗号アルゴリズムＥに従って暗号化された乱数Ｒ（ｎ）ｅを生成する。このとき、通信用交換鍵Ｋｅｘ（ｎ）を暗号アルゴリズムＥの鍵とする。暗号化された乱数Ｒ（ｎ）ｅは、次の数１に示すように表現できる。
〔数１〕Ｒ（ｎ）ｅ＝Ｅ（Ｋｅｘ（ｎ），Ｒ（ｎ））
【００２５】
（３ＤＥＳについて）
本実施形態で使用する暗号方式は、暗号化のための鍵（暗号鍵）と復号のための鍵（復号鍵）とが同じ鍵であることを特徴とする共通鍵暗号方式が用いられている。さらに、この共通鍵暗号方式の中でも、ＤＥＳ（Data Encryption Standardの略）は、１９７７年に米国情報処理標準規格（FEDERAL INFORMATION PROCESSING STANDARDS PUBLICATION：ＦＩＰＳ−ＰＵＢ）４６−３として規定され、最も広く利用されている暗号方式の１つである。さらに、本実施形態では、ＤＥＳから３ＤＥＳにし、ＤＥＳに比べて解読しにくくしている。３ＤＥＳは、ＤＥＳのアルゴリズムを３回繰り返す暗号方式であり、ＤＥＳのアルゴリズムを流用することができる、さらに、暗号鍵の鍵長を拡張するのと同様の効果を得ることができ、比較的容易に暗号強度を高めることができる。
【００２６】
復号部２３は、ＤＥＳにより規格されている復号アルゴリズムＤを予め記憶する。復号部２３は、暗号化された乱数Ｒ（ｎ）ｅを復号アルゴリズムＤに従って復号した乱数Ｒ（ｎ）を生成する。このとき、通信用交換鍵Ｋｅｘ（ｎ）を復号アルゴリズムＤの鍵とする。生成された乱数Ｒ（ｎ）は、次の数２に示すように表現できる。
〔数２〕Ｒ（ｎ）＝Ｄ（Ｋｅｘ（ｎ），Ｒ（ｎ）ｅ）
【００２７】
認証判定部２４は、カードリーダ３から返され復号部２３で復号された機器認証情報に基づき、カードリーダ３が正当な装置であるか、不正な装置であるかを判定する。具体的には、復号部２３から受け取った乱数Ｒ’と、乱数発生部２１で生成され記憶部２７に格納されていた乱数Ｒとを比較し、乱数Ｒ’と乱数Ｒとが一致すれば、上位装置２が接続されたカードリーダ３を正しい装置であると正当性を認証する。また、乱数Ｒ’と乱数Ｒとが一致していなければ、上位装置２は接続されたカードリーダ３を不正な装置であると判定する。
【００２８】
制御部２５は、上位装置２全体、すなわち、認証処理部２０、通信部２６、記憶部２７、認証情報生成部２８を含めた上位装置２全体を制御する。具体的には、制御部２５には、図示しないが、制御用プログラムなどを用いて様々な演算処理を行い、上位装置２全体を制御するＣＰＵ、上位装置２が処理を実行する際に必要な作業データがコピーされる書換え可能なメモリであって、ＣＰＵが使用するプログラムや演算パラメータなどの制御用データが記録されたＲＯＭ、ＣＰＵの作業領域としても機能するＲＡＭ等により構成されている。
【００２９】
通信部２６は、カードリーダ３の通信部３５との間で通信手段としてのケーブル（通信回線）を介して通信を行う。なお、通信手段は、本実施の形態ではケーブル等の有線であるが、これに限定されるものではなく、無線でもよい。
【００３０】
記憶部２７は、揮発性のメモリであり、乱数発生部２１で生成された通信用交換鍵Ｋｅｘ（ｎ）および乱数Ｒ（ｎ）を格納している。
【００３１】
認証情報生成部２８は、機器認証情報Ｋｍを生成する認証情報アルゴリズムを記憶しており、カードリーダ３のシリアル番号が入力されることで、機器認証を行うための機器認証情報Ｋｍを生成する。ここで、シリアル番号とはカードリーダ３の個々の機体に製造ごとに割り付けられる製造番号であるが、シリアル番号以外のカードリーダ３固有の固有情報（例えば、ＩＤ番号や機器番号等）であってもよい。
【００３２】
また、認証情報生成部２８で生成された機器認証情報Ｋｍは、カードリーダ３側へ機器認証情報Ｋｍを設定する動作が終わり次第に消去している。すなわち、上位装置２は、カードリーダ３が新たに接続され、または改めて接続し直されて機器認証動作を開始するごとに、接続されたカードリーダ３のシリアル番号に基づき機器認証情報Ｋｍを生成し直す。
【００３３】
これにより、上位装置２は、どのカードリーダ３が接続されるか予測できない場合でも、接続される可能性のある全てのカードリーダ３に対応する形で機器認証情報Ｋｍを長期間にわたって保持する必要はない。
【００３４】
また、上位装置２で機器認証情報Ｋｍを保持し続けるために、ファイルやレジストリ等にこれを出力する必要もない。つまり、機器認証情報Ｋｍが流出するリスクを減少させ、セキュリティを確保することができ、さらに、メモリ領域を削減することが可能となる。
【００３５】
（上位装置のソフトウェア構成）
つぎに、図２を参照して、上位装置２をソフトウェアの観点で図１の機能ブロックと対応させつつ説明する。図２は、実施形態１に係る、上位装置２が有する主なソフトウェアを示す図である。上位装置２は、アプリケーション５１と、カードリーダ制御ソフトウェア６０と、を主なソフトウエアとして備えている。
【００３６】
上位装置２は、アプリケーション５１と、カードリーダ制御ソフトウェア６０と、認証鍵生成ＤＬＬ５５とを備える。カードリーダ制御ソフトウェア６０は、デバイス・暗号制御ＤＬＬ６１と、通信制御ＤＬＬ６２と、インターフェース部ＤＬＬ６３とを備える。デバイス・暗号制御ＤＬＬ６１は、認証処理部２０（乱数生成部２１、暗号部２２、復号部２３、認証判定部２４）、制御部２５の機能を実現するＤＬＬである。認証鍵生成ＤＬＬ５５は、カードリーダ３の機種固有情報から所定の認証情報アルゴリズムをもとに機器認証情報Ｋｍを生成するＤＬＬである。
【００３７】
アプリケーション５１は、カードリーダ制御ソフトウェア６０が提供する認証機能を使用するソフトウェアであり、カードリーダ３の使用者によって用意され導入される。
【００３８】
カードリーダ制御ソフトウェア６０は、カードリーダ３との通信を制御し、認証処理を行うソフトウェアであり、カードリーダ３の製造者が提供するものである。本形態では、図１の認証処理部２０、制御部２５及び通信部２６の機能を実現する。なお、カードリーダ制御ソフトウェア６０は、認証処理部２０、制御部２５及び通信部２６の機能のうち、特に、認証処理の機能をソフトウェアとして実装するものであり、それ以外の機能についてはソフトウェアとして実装しなくてもよい。
【００３９】
カードリーダ制御ソフトウェア６０は、ユニットとして構成されている。このユニットは、交換可能であり、パッケージされている。このように、パッケージされていることで、カードリーダ３とは別のカードリーダを使用しても、その別のカードリーダ対応のユニットへ交換することでアプリケーションの変更は不要となり、カードリーダ使用者の負担を軽減することが出来る。
【００４０】
また、本形態では、カードリーダ制御ソフトウェア６０はモジュール化されたカードリーダ制御ソフトウェアＤＬＬ群である。より詳細には、カードリーダ制御ソフトウェアＤＬＬ群は、デバイス・暗号制御ＤＬＬ６１と、通信制御ＤＬＬ６２と、インターフェース部ＤＬＬ６３と、認証鍵生成ＤＬＬ５５とを備えている。すなわち、認証処理部２０、制御部２５及び通信部２６の機能を有するプログラムが、機能毎にモジュール化されている。そして機能追加や動作変更をする場合に該当ＤＬＬを差し替えることで対応できる。カードリーダ制御ソフトウェア６０による処理は、これらＤＬＬファイルによって行われる。これにより、モジュール化されたことで、各モジュールでメンテナンスを行うことができ、メンテナンス性を向上することができる。
【００４１】
デバイス・暗号制御ＤＬＬ６１は、認証処理部２０（乱数生成部２１、暗号部２２、復号部２３、認証判定部２４）、制御部２５認証処理の機能、及び通信部２６の機能を実現するＤＬＬである。
【００４２】
通信制御ＤＬＬ６２は、カードリーダとの通信に用いられるＤＬＬであり、認証処理部２０の通信部２６の機能を実現する。
【００４３】
インターフェース部ＤＬＬ６３は、アプリケーション５１とのインターフェースとなるＤＬＬである。
【００４４】
認証鍵生成ＤＬＬ５５は、カードリーダ３の機種固有情報から所定の認証情報アルゴリズムをもとにＫｍを生成するＤＬＬである。本実施形態では、認証情報アルゴリズムは、上位装置２の製造業者がソースコード（機器認証情報Ｋｍを生成するための認証情報アルゴリズム（原始プログラム））をＤＬＬ（Dynamic Link Library）として作成し、情報処理システム１（カードリーダ３）の使用者（装置運用管理者）に提供する。
【００４５】
情報処理システム１の装置運用管理者は、ＤＬＬとして提供されたソースコードに、機器認証情報Ｋｍを生成する独自のアルゴリズムや機能を追加して、認証鍵生成ＤＬＬ５５を作成する。これにより、３ＤＥＳの知識と技術が必要となる部分は、上位装置２の製造業者がソースコードをＤＬＬとして、利用が容易に提供するため、装置運用管理者は、独自の、機器認証情報Ｋｍを生成する認証情報アルゴリズム（認証情報を生成するＤＬＬ）を容易に導入できる。なお、一般に変更に伴い互換性が無くなり製造業者のシステムから呼び出せなくなるおそれがあり、それを回避するために、ＤＬＬ名称とインターフェース部ＤＬＬ６３は変更不可となっている。
【００４６】
（カードリーダの構成）
カードリーダ３は、図１に示すように、認証処理および３ＤＥＳの暗号化／復号を行う認証処理部３０と、カードリーダ３全体の制御を行う制御部３４と、上位装置２側との通信を行う通信部３５と、揮発性の記憶部３６と、不揮発性記憶部としてのＥＥＰＲＯＭ３７とを有している。さらに、認証処理部３０は、暗号部３１、復号部３２、認証判定部３３から構成されている。
【００４７】
ここで、制御部３４及び通信部３５は、それぞれ上位装置２の制御部２５及び通信部２６と同等の機能を有し、詳細な説明は省略する。同様に、認証処理部３０を構成する暗号部３１、復号部３２は、上位装置２の暗号部２２、復号部２３と同様の暗号アルゴリズムＥおよび復号アルゴリズムＤを備えて同等の機能を有しているので、ここでの詳細な説明は省略する。
【００４８】
認証判定部３３は、上位装置２の乱数生成部２１（デバイス・暗号制御ＤＬＬ６１）で生成された後、暗号化されてカードリーダ３に送信された機器認証情報Ｋｍを復号した復号部３２から送信された通信用交換鍵Ｋｅｘ（ｎ）のデータの有効性（ひいては、上位装置２から受信したデータが有効であるか否か）をチェックする。
【００４９】
具体的には、パリティチェックや脆弱鍵であるかどうかをチェックする。パリティチェックはデータの誤り（エラー）を検出する手法の一つである。また、脆弱鍵とは、共通鍵暗号技術としてのＤＥＳにおいてセキュリティ上で好ましくないとされる鍵（４個の脆弱鍵と１２個の準脆弱鍵）であり、それと一致するかどうかをチェックしている。なお、４個の脆弱鍵と１２個の準脆弱鍵は公表されているので、ここでの説明は省略する。
【００５０】
記憶部３６は揮発性であり、上位装置２の乱数生成部２１（デバイス・暗号制御ＤＬＬ６１）で生成された後、送信された復号部３２で復号された機器認証情報Ｋｍのうち認証判定部３３で有効であると判定された通信用交換鍵Ｋｅｘ（ｎ）を格納する。
【００５１】
ＥＥＰＲＯＭ３７は、不揮発性であり、仮の機器認証情報Ｋｔおよび機器認証情報Ｋｍ、カードリーダ３のシリアル番号を格納している。すなわち、カードリーダ３は、電源立ち上げ時またはリセット時においても、機器認証情報Ｋｍを消去せずに保持している。
【００５２】
（機器認証情報の設定動作）
以下、機器認証情報Ｋｍを設定する動作について説明する。
図３は、実施形態１に係る情報処理システム１における機器認証情報Ｋｍ（共通鍵）を設定する動作を示す流れ図である。図４は、図３の機器認証情報Ｋｍ（共通鍵）を設定する動作に対応するフローチャートを示す図である。
【００５３】
情報処理システム１においては、カードリーダ３が上位装置２にケーブル（通信回線）を介して接続された時点で、このカードリーダ３のシリアル番号に基づく機器認証情報Ｋｍを設定する動作が実行される。以下、この機器認証情報Ｋｍを設定する動作を図３および図４に基づいて詳述する。
【００５４】
初期（工場出荷時）において、カードリーダ３および上位装置２は共通暗号鍵として仮の機器認証情報Ｋｔを保持している。例えば、仮の機器認証情報Ｋｔは、カードリーダ３の機種を示す機種番号である。機種番号は、機体固有のシリアル番号とは異なり、同一の機種に共通の番号または記号である。
【００５５】
まず、上位装置２の制御部２５（デバイス・暗号制御ＤＬＬ６１）が、機器認証情報Ｋｍを設定する処理を開始する。具体的には、上位装置２から機器認証を行うための要求コマンドが通信部２６（通信制御ＤＬＬ６２）、通信部３５を介して、カードリーダ３に送信される。カードリーダ３は、要求コマンドを受信した旨、通信部３５、通信部２６（通信制御ＤＬＬ６２）を介して上位装置２に返信される。
【００５６】
次に、上位装置２の乱数発生部２１（デバイス・暗号制御ＤＬＬ６１）が、通信用交換鍵Ｋｅｘ（ｎ）および乱数Ｒ（ｎ）を生成する（ステップＳ１）。なお、第１回目の生成であるので、ｎは１とする。すなわち、乱数発生部２１（デバイス・暗号制御ＤＬＬ６１）は、乱数生成アルゴリズムに従って通信用交換鍵Ｋｅｘ（１）、乱数Ｒ（１）を生成する。また、生成した通信用交換鍵Ｋｅｘ（１）および乱数Ｒ（１）は、記憶部２７に格納される。
【００５７】
その後、暗号部２２（デバイス・暗号制御ＤＬＬ６１）は、これらの通信用交換鍵Ｋｅｘ（１）および乱数Ｒ（１）を、仮の機器認証情報Ｋtを用いて３ＤＥＳの暗号アルゴリズムＥに従って暗号化し、暗号データＣ１＝Ｅ（Ｋｔ，Ｋｅｘ（１）＋Ｒ（１））を生成する（ステップＳ２）。ここでは、仮の機器認証情報Ｋｔを暗号アルゴリズムＥの鍵として使用している。なお、Ｋｅｘ（１）＋Ｒ（１）は、通信用交換鍵Ｋｅｘ（１）のデータと乱数Ｒ（１）のデータが入れ子のようになっている。
【００５８】
また、上位装置２の認証処理部２０（カードリーダ制御ソフトウェア６０）は、暗号データＣ１を通信部２６（通信制御ＤＬＬ６２）経由でカードリーダ３へ送信する。
【００５９】
次いで、カードリーダ３は、これを通信部３５経由で受信する（ステップＳ３）。認証処理部３０は、受信した暗号データＣ１を、カードリーダ２が予め保持している仮の機器認証情報Ｋｔを用いて３ＤＥＳの復号アルゴリズムＤに従って復号し、（Ｋｅｘ（１）＋Ｒ（１））＝Ｄ（Ｋｔ，Ｃ１）により、通信用交換鍵Ｋｅｘ（１）および乱数Ｒ（１）を復号する。ここでは、カードリーダ２が予め保持している仮の機器認証情報Ｋｔを暗号アルゴリズムＥの鍵として使用している。
【００６０】
さらに、カードリーダ３の認証処理部３０の認証判定部３３は、復号した、上位装置２が保持する通信用交換鍵Ｋｅｘが正しいか否かを確認する（ステップＳ４）。ここでは、通信用交換鍵Ｋｅｘ（１）のデータのパリティチェック（コード）が正しいかどうかを確認する。また、通信用交換鍵Ｋｅｘ（１）のデータが、３ＤＥＳとしてセキュリティ上で好ましくないとされる鍵（４個の脆弱鍵と１２個の準脆弱鍵）と一致するかどうかをチェックする。
【００６１】
その結果、認証判定部３３は、通信用交換鍵Ｋｅｘが正しくないと判定した場合、カードリーダ３は、エラーを上位装置２へ返して機器認証情報Ｋｍを設定する動作を終了させる（ステップＳ２０）。
【００６２】
また、ステップＳ４に戻り、通信用交換鍵Ｋｅｘ（１）が正しいと判定した場合、カードリーダ３の認証処理部３０は、復号した通信用交換鍵Ｋｅｘ（１）および乱数Ｒ（１）を記憶部３６に格納する。引き続き、認証処理部３０の暗号部３１は、復号した乱数Ｒ（１）を、復号した通信用交換鍵Ｋｅｘ（１）を用いて３ＤＥＳの暗号アルゴリズムＥに従って暗号化し、暗号データＣ２＝Ｅ（Ｋｅｘ（１），Ｒ（１））を生成する。生成した暗号データＣ２を、カードリーダ３は、制御部３４の指令により通信部３５経由で上位装置２へ送信する（ステップＳ５）。なお、送信後、漏えい等を含めセキュリティ性を高めるために、乱数Ｒ（１）を消去する。
【００６３】
次に、上位装置２は、暗号データＣ２を通信部２６（通信制御ＤＬＬ６２）経由で受信する。つづいて、復号部２３（デバイス・暗号制御ＤＬＬ６１）が、受信した暗号データＣ２を、記憶部２７に保持している通信用交換鍵Ｋｅｘ（１）を用いて３ＤＥＳの復号アルゴリズムＤに従って復号し、Ｒ（１）＝Ｄ（Ｋｅｘ（１），Ｃ２）により、乱数Ｒ（１）を復号する（ステップＳ６）。
【００６４】
そして、認証判定部２４（デバイス・暗号制御ＤＬＬ６１）は、復号した乱数Ｒ（１）が、元の乱数Ｒ（１）と一致するか否かを確認する（ステップＳ７）。つまり、ステップＳ１で、上位装置２の乱数発生部２１（デバイス・暗号制御ＤＬＬ６１）が生成した乱数Ｒ（１）と、カードリーダ３から送信されてきた乱数Ｒ（１）とを比較し、両者が一致するか否かを確認する。確認後、漏えい等を含めセキュリティ性を高めるために、乱数Ｒ（１）は消去する。
【００６５】
その結果、乱数Ｒ（１）が一致しなければ、上位装置２の認証処理部２０（デバイス・暗号制御ＤＬＬ６１）は、接続されているカードリーダ３の正当性が認証（確認）できずエラー発生として、機器認証情報Ｋｍを設定する動作を終了させる（ステップＳ２０）。
【００６６】
また、ステップＳ７に戻り、乱数Ｒ（１）が一致した場合、認証処理部２０（カードリーダ制御ソフトウェア６０）は、カードリーダ３の正当性が確認（認証）できたと判断し、引き続き、機器認証情報Ｋｍを設定する動作を実行する。具体的には、制御部２５（デバイス・暗号制御ＤＬＬ６１）は、カードリーダ３の機種固有情報としてのシリアル番号を上位装置２に送信するようカードリーダ３に対して要求する（ステップＳ８）。
【００６７】
そして、カードリーダ３の制御部３４は、シリアル番号送信の要求を通信部３５経由で受信すると、カードリーダ３のシリアル番号をＥＥＰＲＯＭ３７から読み出し、通信部３５経由で上位装置２に送信する（ステップＳ９）。
【００６８】
次いで、制御部２５（デバイス・暗号制御ＤＬＬ６１）は、カードリーダ３のシリアル番号を（通信部２６を介して）認証情報生成部２８（認証鍵生成ＤＬＬ５５）に出力し、認証情報生成部２８に対して、このシリアル番号を入力して、新規な（正式な）機器認証情報Ｋｍの生成を指令する（ステップＳ１０）。
【００６９】
その後、認証情報生成部２８（認証鍵生成ＤＬＬ５５）は、機器認証情報Ｋｍを生成する認証情報アルゴリズムに従って、入力したシリアル番号に基づいて機器認証情報Ｋｍを生成し、この機器認証情報Ｋｍを認証処理部２０（デバイス・暗号制御ＤＬＬ６１）に出力する（ステップＳ１１）。なお、機器認証情報Ｋｍの生成処理については、図５のフローチャートにより後述する。
【００７０】
次に、認証処理部２０（カードリーダ制御ソフトウェア６０）は、機器認証情報Ｋｍの取得に成功したか否かを確認する（ステップＳ１２）。
【００７１】
その結果、生成した機器認証情報Ｋｍの取得に失敗すれば、上位装置２の制御部２５（デバイス・暗号制御ＤＬＬ６１）は、機器認証情報Ｋｍを取得できずエラー発生として、機器認証情報Ｋｍを設定する動作を終了させる（ステップＳ２０）。
【００７２】
また、ステップＳ１２に戻り、機器認証情報Ｋｍの取得に成功すれば、上位装置２の制御部２５（デバイス・暗号制御ＤＬＬ６１）は、乱数発生部２１（デバイス・暗号制御ＤＬＬ６１）に、新規な乱数Ｒ（ｎ）の生成を要求する。ここでは、第２回目の乱数なのでｎ＝２とする。乱数発生部２１（デバイス・暗号制御ＤＬＬ６１）は、乱数生成アルゴリズムに基づいて、乱数Ｒ（２）を生成する（ステップＳ１３）。また、生成した乱数Ｒ（２）は、記憶部２７に格納される。
【００７３】
その後、暗号部２１（デバイス・暗号制御ＤＬＬ６１）は、取得した機器認証情報Ｋｍおよび新たに生成した乱数Ｒ（２）を、通信用交換鍵Ｋｅｘ（１）を用いて３ＤＥＳの暗号アルゴリズムＥに従って暗号化し、暗号データＣ３＝Ｅ（Ｋｅｘ（１），Ｋｍ＋Ｒ（２））を生成する。なお、Ｋｍ＋Ｒ（２）は、機器認証情報Ｋｍのデータと乱数Ｒ（２）のデータが入れ子のようになっている。また、制御部２５（デバイス・暗号制御ＤＬＬ６１）は、暗号データＣ３を通信部２６（通信制御ＤＬＬ６２）経由でカードリーダ３へ送信する（ステップＳ１４）。
【００７４】
そして、カードリーダ３の制御部３４は、暗号データＣ３を通信部３５経由で受信する。受信した暗号データＣ３を、カードリーダ３の認証処理部３０は、保持している通信用交換鍵Ｋｅｘ（１）を用いて３ＤＥＳの復号アルゴリズムＤに従って復号し、Ｋｍ＋Ｒ（２）＝Ｄ（Ｋｅｘ（１），Ｃ３）により、機器認証情報Ｋｍおよび乱数Ｒ（２）を復号する（ステップＳ１５）。
【００７５】
さらに、カードリーダ３の認証処理部３０の認証判定部３３は、復号した、上位装置２が保持する機器認証情報Ｋｍが正しいか否かを確認する（ステップＳ１６）。ここでは、機器認証情報Ｋｍのデータのパリティチェック（コード）が正しいかどうかを確認している。また、機器認証情報Ｋｍのデータが、３ＤＥＳとしてセキュリティ上で好ましくないとされる鍵（４個の脆弱鍵と１２個の準脆弱鍵）と一致するかどうかをチェックしている。
【００７６】
その結果、認証判定部３３は、機器認証情報Ｋｍが正しくないと判定した場合、認証処理部３０は、エラーを上位装置２へ返して機器認証情報Ｋｍを設定する動作を終了させる（ステップＳ２０）。
【００７７】
また、ステップＳ１６に戻り、機器認証情報Ｋｍが正しいと判定した場合、カードリーダ３の認証処理部３０は、復号した機器認証情報Ｋｍを取得してＥＥＰＲＯＭ３７に格納されている仮の機器認証情報Ｋｔに上書きする。また、復号した乱数Ｒ（２）は記憶部３６に格納される。引き続き、認証処理部３０の暗号部３１は、復号した乱数Ｒ（２）を、復号した機器認証情報Ｋｍを用いて３ＤＥＳの暗号アルゴリズムＥに従って暗号化し、暗号データＣ４＝Ｅ（Ｋｍ，Ｒ（２））を生成する。生成した暗号データＣ４を、カードリーダ３の制御部３４は、通信部３５経由で上位装置２へ送信する（ステップＳ１７）。なお、送信後、漏えい等を含めセキュリティ性を高めるために、乱数Ｒ（２）を消去する。
【００７８】
その後、上位装置２の認証制御部２０（カードリーダ制御ソフトウェア６０）は、暗号データＣ４を通信部２６（通信制御ＤＬＬ６２）経由で受信する。つづいて、上位装置２の復号部２３（デバイス・暗号制御ＤＬＬ６１）は、受信した暗号データＣ４を、保持している機器認証情報Ｋｍを用いて３ＤＥＳの復号アルゴリズムＤに従って復号し、Ｒ（２）＝Ｄ（Ｋｍ，Ｃ４）により、乱数Ｒ（２）を復号する（ステップＳ１８）。
【００７９】
さらに、認証判定部２４（デバイス・暗号制御ＤＬＬ６１）は、復号した乱数Ｒ（２）が、元の乱数Ｒ（２）と一致するか否かを確認する（ステップＳ１９）。つまり、ステップＳ１３で、上位装置２が生成した乱数Ｒ（２）と、カードリーダ３から送信されてきた乱数Ｒ（２）とを比較し、両者が一致するか否かを確認する。確認後、漏えい等を含めセキュリティ性を高めるために、乱数Ｒ（２）は消去する。
【００８０】
その結果、乱数Ｒ（２）が一致した場合、上位装置２の制御部２５（デバイス・暗号制御ＤＬＬ６１）は、カードリーダ３へ正常に機器認証情報Ｋｍを設定できたと判断し、機器認証情報Ｋｍを設定する動作は無事に終了する。
【００８１】
なお、この作業が終了した時点で、上位装置２が保持している機器認証情報Ｋｍは、セキュリティ性を高めるために、消去される。換言すれば、機器認証情報Ｋｍを設定する動作が終了すると、上位装置２は、仮の機器認証情報Ｋｔを記憶部２７で保持しているとともに、カードリーダ３は、ステップＳ１１で生成された機器認証情報ＫｍをＥＥＰＲＯＭ３７で保持している。
【００８２】
一方、もし、ステップＳ１９で乱数Ｒ（２）が一致しなければ、上位装置２の認証処理部２０の制御部２５（デバイス・暗号制御ＤＬＬ６１）は、接続されているカードリーダ３の正当性が認証（確認）できずエラー発生として、機器認証情報Ｋｍを設定する動作を終了させる（ステップＳ２０）。
【００８３】
（機器認証動作の手順）
機器認証情報Ｋｍを設定する動作が無事に終了したカードリーダ３が組み込まれている情報処理システム１、例えばＡＴＭ装置（現金自動預け入れ払い機）においては、カードを用いた現金の入出金や振込、振替などのトランザクション処理が行われるたびに、ＥＥＰＲＯＭ３７に格納されている機器認証情報Ｋｍを用いてカードリーダ３の機器認証動作が実行される。
【００８４】
以下、この機器認証動作を図５に基づいて詳述する。
まず、上位装置であるアプリケーション５１からの指示により、または上位装置２やカードリーダ３の電源立ち上げ時またはリセット時に、制御部２５（カードリーダ制御ソフトウェア６０）に対して認証開始が通知される（Ｓ３０）。
【００８５】
上位装置２の制御部２５（デバイス・暗号制御ＤＬＬ６１）は、通信部２６（通信制御ＤＬＬ６２）経由でカードリーダ３の制御部３４に、カードリーダ３の機種固有情報（例えばシリアル番号）を上位装置２に送信するようカードリーダ３に対して要求する（ステップＳ３１）。
【００８６】
そして、カードリーダ３の制御部３４は、シリアル番号送信の要求を通信部３５経由で受信すると、上述したステップＳ９と同様に、カードリーダ３の機種固有情報（例えばシリアル番号）をＥＥＰＲＯＭ３７から読み出し、通信部３５経由で上位装置２に送信する（ステップＳ３２）。
【００８７】
次いで、制御部２５（デバイス・暗号制御ＤＬＬ６１）は、上述したステップＳ１０と同様に、カードリーダ３のシリアル番号を通信部２６（通信制御ＤＬＬ６２）を介して認証情報生成部２８（認証鍵生成ＤＬＬ５５）に出力し、認証情報生成部２８（認証鍵生成ＤＬＬ５５）に対して、この機種固有情報を入力して、新規な（正式な）機器認証情報Ｋｍの生成を指令する（ステップＳ３３）。
【００８８】
その後、認証情報生成部２８（認証鍵生成ＤＬＬ５５）は、上述したステップＳ１１と同様に、入手したシリアル番号に基づいて機器認証情報Ｋｍを生成し、この機器認証情報Ｋｍを認証処理部２０（カードリーダ制御ソフトウェア６０）に出力する（ステップＳ３４）。
【００８９】
ここで、機器認証情報Ｋｍの生成に際しては、上述したステップＳ１１と同様に、機器認証情報Ｋｍを生成する認証情報アルゴリズム（プログラム）に従って、入力した機種固有情報（例えばシリアル番号）に基づいて機器認証情報Ｋｍを生成する。機器認証情報Ｋｍの生成処理については、図６のフローチャートにより後述する。
【００９０】
生成した機器認証情報Ｋｍは、同じ機種固有情報により生成しているので、上述したステップＳ１１で生成した機器認証情報Ｋｍと同じ鍵となる。すなわち、機器認証情報Ｋｍが再現されたことになり、上位装置２で保持する機器認証情報Ｋｍは、カードリーダ３が保持する機器認証情報Ｋｍと同じものとなっている。
【００９１】
次に、認証処理部２０（カードリーダ制御ソフトウェア６０）は、上述したステップＳ１２と同様に、機器認証情報Ｋｍの取得に成功したか否かを確認する（ステップＳ３５）。そして、機器認証情報Ｋｍの取得に成功すれば、制御部２５（デバイス・暗号制御ＤＬＬ６１）は、上述したステップＳ１３と同様に、乱数発生部２１（デバイス・暗号制御ＤＬＬ６１）に、新規な通信用交換鍵Ｋｅｘ（ｎ）、乱数Ｒ（ｎ）の生成を要求する。
【００９２】
すると、乱数発生部２１（デバイス・暗号制御ＤＬＬ６１）は、乱数生成アルゴリズムに基づいて、通信用交換鍵Ｋｅｘ（２）、乱数Ｒ（３）を生成する。また、生成した通信用交換鍵Ｋｅｘ（２）、乱数Ｒ（３）は、記憶部２７に格納される。なお、通信用交換鍵Ｋｅｘ（２）は、上述したステップＳ１で生成した通信用交換鍵Ｋｅｘ（１）とは異なるデータである。また、乱数Ｒ（３）は、上述したステップＳ１３で生成した乱数Ｒ（２）とは異なるデータである。
【００９３】
また、ステップＳ３５において、特に図示していないが、認証処理部２０（カードリーダ制御ソフトウェア６０）が確認した結果、生成した機器認証情報Ｋｍの取得に失敗すれば、上位装置２の制御部２５（デバイス・暗号制御ＤＬＬ６１）は、機器認証情報Ｋｍを取得できずエラー発生として、機器認証情報Ｋｍを設定する動作を終了させる。このようにして生成された（再現された）機器認証情報Ｋｍを共通鍵として用いて、上位装置２の認証処理部２０（カードリーダ制御ソフトウェア６０）はカードリーダ３の機器認証を行う。
【００９４】
次に、暗号部２１（デバイス・暗号制御ＤＬＬ６１）は、生成した通信用交換鍵Ｋｅｘ（２）および乱数Ｒ（３）を、機器認証情報Ｋｍを用いて３ＤＥＳの暗号アルゴリズムＥに従って暗号化し、暗号データＣ５＝Ｅ（Ｋｍ，Ｋｅｘ（２）＋Ｒ（３））を生成する（ステップＳ３６）。なお、Ｋｅｘ（２）＋Ｒ（３）は、通信用交換鍵Ｋｅｘ（２）のデータと乱数Ｒ（３）のデータが入れ子のようになっている。ここでは、ステップＳ３４で生成した機器認証情報Ｋｍを暗号アルゴリズムＥの鍵として使用している。また、制御部２５（デバイス・暗号制御ＤＬＬ６１）は、暗号データＣ５を通信部２６（通信制御ＤＬＬ６２）経由でカードリーダ３へ送信する。
【００９５】
その後、カードリーダ３の制御部３４は、暗号データＣ５を通信部３５経由で受信する。受信した暗号データＣ５を、カードリーダ３の認証処理部３０は、保持している機器認証情報Ｋｍを用いて３ＤＥＳの復号アルゴリズムＤに従って復号し、Ｋｅｘ（２）＋Ｒ（３）＝Ｄ（Ｋｍ，Ｃ５）により、通信用交換鍵Ｋｅｘ（２）および乱数Ｒ（３）を復号する（ステップＳ３７）。
【００９６】
このとき、カードリーダ３の認証処理部３０の認証判定部３３は、受信した、上位装置２が保持する通信用交換鍵Ｋｅｘ（２）が正しいか否かを確認する。ここでは、通信用交換鍵Ｋｅｘ（２）のデータのパリティチェック（コード）が正しいかどうかを確認している。また、通信用交換鍵Ｋｅｘ（２）のデータが、３ＤＥＳとしてセキュリティ上で好ましくないとされる鍵（４個の脆弱鍵と１２個の準脆弱鍵）と一致するかどうかをチェックしている。その結果、認証判定部３３は、受信した（上位装置２の）通信用交換鍵Ｋｅｘ（２）が正しくないと判定した場合、認証処理部３０は、エラーを上位装置２へ返して機器認証情報Ｋｍを設定する動作を終了させる。
【００９７】
次いで、認証判定部３３は、受信した上位装置２の通信用交換鍵Ｋｅｘ（２）が正しいと判定した場合、引き続き、認証処理部３０の暗号部３１は、復号した乱数Ｒ（３）を、復号した通信交換用鍵Ｋｅｘ（２）を用いて３ＤＥＳの暗号アルゴリズムＥに従って暗号化し、暗号データＣ６＝Ｅ（Ｋｅｘ（２），Ｒ（３））を生成する（ステップＳ３８）。生成した暗号データＣ６を、カードリーダ３の制御部３４は、通信部３５経由で上位装置２へ送信する。
【００９８】
その後、上位装置２の認証処理部２０（カードリーダ制御ソフトウェア６０）は、暗号データＣ６を通信部２６（通信制御ＤＬＬ６２）経由で受信する。つづいて、復号部２３（デバイス・暗号制御ＤＬＬ６１）は、受信した暗号データＣ６を、保持している通信用交換鍵Ｋｅｘ（２）を用いて３ＤＥＳの復号アルゴリズムＤに従って復号し、Ｒ（３）＝Ｄ（Ｋｅｘ（２），Ｃ６）により、乱数Ｒ（３）を生成する（ステップＳ３９）。
【００９９】
そして、認証判定部２４（デバイス・暗号制御ＤＬＬ６１）は、復号した乱数Ｒ（３）が一致するか否かを確認する。すなわち、上位装置２が生成し、保持している乱数Ｒ（３）と、カードリーダ３から送信され、復号した乱数Ｒ（３）とを比較し、両者が一致するか否かを確認する。確認後、漏えい等を含めセキュリティ性を高めるために、乱数Ｒ（３）は消去する。
【０１００】
その結果、乱数Ｒ（３）が一致した場合、制御部２５（デバイス・暗号制御ＤＬＬ６１）は、カードリーダ３の正当性が認証（確認）できたと判断し、カードリーダ３の正当性が肯定されたことになるので、認証処理部２０は、上位ソフトウェアであるアプリケーション５１にその旨を通知し機器認証動作を無事に終了させる。これにより、上位装置２およびカードリーダ３は、それぞれ通信用交換鍵Ｋｅｘ（２）を保持することになる。
【０１０１】
ここで、機器認証動作が終了する（Ｓ４０）。
【０１０２】
なお、この作業が終了した時点で、上位装置２が保持している機器認証情報Ｋｍは、セキュリティ性を高めるために、消去される。換言すれば、機器認証情報Ｋｍを設定する動作が終了すると、上位装置２は、仮の機器認証情報Ｋｔを記憶部２７で保持しているとともに、カードリーダ３は、ステップＳ１１で生成された機器認証情報ＫｍをＥＥＰＲＯＭ３７で保持している。
【０１０３】
もし、ステップＳ１９で乱数Ｒ（３）が一致しなければ、上位装置２の認証処理部２０は、エラーを制御部２５に出力する。制御部２５は、接続されているカードリーダ３の正当性が認証（確認）できなかったので、通信用交換鍵Ｋｅｘを設定する動作を終了させる。
【０１０４】
（機器認証情報Ｋｍの生成動作）
つぎに図６のフローチャートを参照して、認証情報生成部２８（認証鍵生成ＤＬＬ５５）による機器認証情報Ｋｍ（共通鍵）を設定する動作について具体的に説明する。
【０１０５】
認証情報生成部２８（認証鍵生成ＤＬＬ５５）は、上述のＳ１０、Ｓ３３の処理によって、カードリーダ３からの機種固有情報（シリアル番号等）を入力すると（Ｓ１００）、所定の認証情報アルゴリズムに従って、新規な（正式な）機器認証情報Ｋｍの生成処理を開始し（Ｓ１０２〜Ｓ１１０）、生成した機器認証情報Ｋｍを認証処理部２０（カードリーダ制御ソフトウェア６０）へ返す（Ｓ１１０、図５のＳ２８）。
【０１０６】
すなわち、認証情報生成部２８（認証鍵生成ＤＬＬ５５）は、機種固有情報を鍵長のデータへ拡張し（Ｓ１０２）、拡張データと任意のデータで排他的論理和をとる（Ｓ１０４）。さらに認証情報生成部２８（認証鍵生成ＤＬＬ５５）は、排他的論理和をとって生成されたデータを拡張データで暗号化した暗号データを生成する（Ｓ１０６）。
【０１０７】
ついで、認証情報生成部２８（認証鍵生成ＤＬＬ５５）は、暗号データに対して、カードリーダ３の認証判定部３３においてパリティチェックに用いるパリティを算出・付与し（Ｓ１０８）、認証処理部２０（カードリーダ制御ソフトウェア６０）へ機器認証情報Ｋｍとして返す（Ｓ１１０）。
【０１０８】
（本実施形態の主な効果）
本実施形態の特徴を纏めると次の通りである。
情報処理システム１は、上位装置（上位装置２）と情報処理装置（カードリーダ３）との間で情報の送受信を行うシステムである。
【０１０９】
上位装置（上位装置２）は、共通鍵暗号方式を用いて前記情報処理装置（カードリーダ３）が正当な機器であることを認証する上位装置側認証処理部（認証処理部２０）と、前記上位装置（上位装置２）と前記情報処理装置（カードリーダ３）とが共通して保有する機器認証情報を生成する認証情報アルゴリズムを有し、前記情報処理装置（カードリーダ３）が所有する機種固有情報に基づいて前記機器認証情報を生成する認証情報生成部（認証情報生成部２８）と、前記情報処理装置（カードリーダ３）と通信を行う通信部（通信部２６）と、を備える。
前記情報処理装置（カードリーダ３）は、前記上位装置（上位装置２）と認証処理を行う情報処理装置側認証処理部（認証処理部３０）と、前記機器認証情報および前記機種固有情報を記憶する不揮発性記憶部（ＥＥＰＲＯＭ３７）と、を備える。
前記認証情報生成部（認証情報生成部２８）は、前記情報処理装置（カードリーダ３）の機種固有情報からマスターキー（Ｋｍ）を生成する機能を有し、前記認証情報生成部（認証情報生成部２８）、前記上位装置側認証処理部（認証処理部２０）及び前記通信部（通信部２６）の機能は、それぞれの機能をモジュールとした制御ソフトウェア（カードリーダ制御ソフトウェア６０）として構成されており、前記情報処理装置（カードリーダ３）の前記マスターキーを書き換え、及び予め仮の機器認証情報として保持しているテンポラリーキー（Ｋｔ）に書き換え可能なツール（アプリケーション５１）を備える。
【０１１０】
認証情報アルゴリズムについては、情報処理装置（カードリーダ３）の製造業者がソースコード（機器認証情報Ｋｍを生成するための認証情報アルゴリズム）をモジュール（部品）として作成し、情報処理システム１の装置運用管理者に提供されることで、情報処理システム１の装置運用管理者は、モジュールとして提供されたソースコードに、機器認証情報Ｋｍを生成する独自のアルゴリズムや機能を追加して、認証鍵生成モジュール（認証鍵生成ＤＬＬ５５）を作成することができる。また、認証情報生成部、上位装置側認証処理部、及び通信部の機能は、それぞれの機能をモジュールとした制御ソフトウェアとして、情報処理システムの装置運用管理者に提供されるので、装置運用管理者はモジュール単位で機能を変更・調整することができ、開発リソースを抑制でき、現実の導入がより容易になる。すなわち、装置運用管理者は、３ＤＥＳ等の共通鍵暗号方式のノウハウ（知識や技術）が十分でない場合でも、十分にセキュリティが確保された情報処理システム１を構築できる。一方、上位装置２の製造業者は、機器認証情報に関して、製造時に仮の機器認証情報を設定しているだけで、実際の運用時の機器認証情報Ｋｍについては、把握することがないため、製造業者からの漏洩といったリスクを回避できる。
【０１１１】
前記制御ソフトウェア（リーダ制御ソフトウェア６０）の前記認証情報生成部（認証情報生成部２８）として機能するモジュールはＤＬＬ（認証情報生成ＤＬＬ５５）として構成されていることを特徴とする。
装置運用管理者は、ＤＬＬとして提供されたソースコードに、機器認証情報Ｋｍを生成する独自のアルゴリズムや機能を追加して、認証鍵生成ＤＬＬ（認証情報生成ＤＬＬ５５）を作成することができる。３ＤＥＳ等の知識と技術が必要となる部分は、上位装置２の製造業者がソースコードをＤＬＬとして、利用が容易なパッケージ（ソフトウェア）として提供することができるため、装置運用管理者は、独自の、機器認証情報Ｋｍを生成する認証情報アルゴリズム（認証情報を生成するＤＬＬ）を容易に導入できる。
【０１１２】
前記認証情報生成部（認証情報生成部２８）として機能する前記ＤＬＬ（認証鍵生成ＤＬＬ５５）のファイル名および前記ＤＬＬとの通信インターフェース（通信制御ＤＬＬ６２）は変更不可である。
これによって、予め用意されたＤＬＬをベースに動的に処理プログラムが作成されるため、互換性を確保しつつ、アプリケーション５１やカードリーダ制御ソフトウェア６０の処理や、動作チェック等を適切に運用できる。
【０１１３】
前記情報処理装置（カードリーダ３）の前記機種固有情報は、前記上位装置側認証処理部（認証処理部２０）のメモリに格納されて、前記上位装置側認証処理部（認証処理部２０）は、入力毎に前記情報処理装置（カードリーダ３）が入れ替えられたか否かを確認する。
入力毎に入れ替えの確認がなされるので、認証処理のセキュリティを一層向上させることができる。
【０１１４】
（他の実施形態）
なお、上述した実施形態１では、上位装置２を備えた情報処理システム１について説明したが、上位装置２はホストコンピュータに限定されるものではなく、例えば、コンピュータに内蔵されている制御装置や演算装置といった処理装置であってもよく、または、例えば、ＡＴＭ、ＰＯＳ等であってもよい。
【０１１５】
また、上述した実施形態１では、情報処理装置としてカードリーダ３を備えた情報処理システム１について説明したが、カードリーダ３以外の情報処理装置例えば、ＡＴＭやＰＯＳ端末に付属する入出力機器：タッチパネル、ＰＩＮパッド、プリンター、スキャナ等を備えた情報処理システム１であってもよい。
【０１１６】
また、上述した実施形態１では、機種固有情報としてシリアル番号を用いる場合について説明したが、例えば、鍵を生成する種となるユニークな値を機器へ持たせる（外部から種も見えないようにする）ことも可能である。
【０１１７】
また、上述した実施形態１では、カードリーダ３の機種固有情報をファイルに記憶し、入力毎にカードリーダが入れ替えられたかを確認してもよい。
【０１１８】
また、上述した実施形態１では、不揮発性記憶部としてＥＥＰＲＯＭ３７を用いる場合について説明したが、ＥＥＰＲＯＭ３７以外の不揮発性記憶部を代用してもよい。
【０１１９】
また、上述した実施形態１では、乱数や通信用交換鍵Ｋｅｘを暗号化するのに３ＤＥＳを用いる場合について説明したが、３ＤＥＳ以外の共通鍵暗号方式としての暗号アルゴリズム（例えば、ＤＥＳ、ＦＥＡＬ、ＩＤＥＡ、ＡＥＳ、Ｃａｍｅｌｌｉａ、ＭＩＳＴＹ、ＭＵＬＴＩ、ＲＣ４、ＲＣ５など）を代用してもよい。
【０１２０】
また、上述した実施形態１では、通信用交換鍵Ｋｅｘのデータと乱数Ｒのデータが入れ子のようにしたが、これに限定されるものではなく、２つのデータを連結したもの等のように２つのデータが混合されていればよい。
【０１２１】
さらに、上述した実施形態１では、１台のカードリーダ３が上位装置２に接続された情報処理システム１について説明したが、複数台（２台以上）のカードリーダ３が上位装置２に接続された情報処理システム１に本発明を同様に適用することも可能である。
【符号の説明】
【０１２２】
１……情報処理システム
２……ホストコンピュータ（上位装置）
２０……認証処理部（上位装置側認証処理部）
２１……乱数発生部
２２……暗号部
２３……復号部
２４……認証判定部
２５……制御部
２６……通信部
２７……記憶部
２８……認証情報生成部
３……カードリーダ（情報処理装置）
３０……認証処理部（情報処理装置側認証処理部）
３１……暗号部
３２……復号部
３３……認証判定部
３４……制御部
３５……通信部
３６……記憶部
３７……ＥＥＰＲＯＭ（不揮発性記憶部）
５１  アプリケーション
５５  認証鍵生成ＤＬＬ
６０  カードリーダ制御ソフトウェア
６１  デバイス・暗号制御ＤＬＬ
６２  通信制御ＤＬＬ
６３  インターフェース部ＤＬＬ
Ｋｅｘ……通信用交換鍵
Ｋｔ……仮の機器認証情報
Ｋｍ……機器認証情報
【図１】
2019134288.tif 000003
【図２】
2019134288.tif 000004
【図３】
2019134288.tif 000005
【図４】
2019134288.tif 000006
【図５】
2019134288.tif 000007
【図６】
2019134288.tif 000008