(57)【特許請求の範囲】
【請求項１】
伝送路を介して接続された複数のデバイスとホストとの間でデータの送受信を行い、前記複数のデバイスを前記ホストが順次認証する相互認証システムにおいて、
前記ホストにおいて、前記伝送路を介して接続された前記複数のデバイスのうち、相互認証させる第１のデバイスと第２のデバイスとを決定するデバイス決定手段と、
前記ホストにおいて、前記デバイス決定手段により決定された、第１及び第２のデバイスを指定して、相互認証を行うように命令する第１、第２のコマンドと、前記第１のデバイスから相互認証結果を読み出すように命令する第３のコマンドを生成するコマンド生成手段と、
前記ホストにおいて、前記コマンド生成手段により生成された、前記第１のコマンドを前記伝送路を介して前記第１、第２のデバイスに送信するホスト側送信手段と、
前記第１のデバイスにおいて、前記ホストが送信する、前記第１のコマンドを受信する第１のデバイス側受信手段と、
前記第２のデバイスにおいて、前記ホストが送信する、前記第１のコマンドを受信する第２のデバイス側受信手段と
前記第１のデバイスにおいて、第１の乱数データを生成する第１のデバイス側乱数データ生成手段と、
前記第２のデバイスにおいて、第２の乱数データを生成する第２のデバイス側乱数データ生成手段と、
前記第１のデバイスにおいて、前記第１のデバイス側受信手段により受信された前記第１のコマンドに応じて、前記第１の乱数データを、前記第１、第２のデバイスが共通に保持する第１の鍵データを用いて暗号化して、第１の暗号データを生成する第１のデバイス側暗号化手段と、
前記第２のデバイスにおいて、前記第２のデバイス側受信手段により受信された前記第１のコマンドに応じて、前記第２の乱数データを、前記第１の鍵データを用いて第２の暗号データを生成する第２のデバイス側暗号化手段と、
前記第１のデバイスにおいて、前記第１の暗号データを、前記伝送路を介して前記ホストに送信する第１のデバイス側送信手段と、
前記第２のデバイスにおいて、前記第１のデバイスが送信する、前記第１の暗号データを受信する第２のデバイス側受信手段と、
前記第２のデバイスにおいて、前記第２のデバイス側受信手段により受信した、前記第１の暗号データを、前記第１の鍵データを用いて、第１の復号結果を得る第２のデバイス側復号化手段と、
前記第２のデバイスにおいて、前記第２のデバイス側復号化手段により得た前記第１の復号結果と、前記第２の乱数データとの間で演算を行い、第２の演算結果を得る第２のデバイス側演算手段と、
前記第２のデバイスにおいて、前記第２のデバイス側暗号化手段により生成された、前記第２の暗号データを、前記伝送路を介して前記ホストに送信する第２のデバイス側送信手段と、
前記第１のデバイスにおいて、前記第２のデバイスが送信する、前記第２の暗号データを受信する第１のデバイス側受信手段と、
前記第１のデバイスにおいて、前記第１のデバイス側受信手段により受信した、前記第２の暗号データを、前記第１の鍵データを用いて復号し、第２の復号結果を得る第１のデバイス側復号化手段と、
前記第１のデバイスにおいて、前記第１のデバイス側復号化手段により得た、前記第２の復号結果と、前記第１の乱数データとの間で演算を行い、第１の演算結果を得る第１のデバイス側演算手段と、
前記ホストにおいて、前記コマンド生成手段により生成された、前記第２のコマンドを、前記伝送路を介して前記第１、第２のデバイスに送信するホスト側送信手段と、
前記第１のデバイスにおいて、前記ホストが送信する、前記第２のコマンドを受信する第１のデバイス側受信手段と、
前記第２のデバイスにおいて、前記ホストが送信する、前記第２のコマンドを受信する第２のデバイス側受信手段と、
前記第１のデバイスにおいて、前記第１のデバイス側受信手段により受信した、前記第２のコマンドに応じて前記第１の演算結果を、前記第１、第２のデバイスが共通に保持する第２の鍵データを用いて暗号化して、第３の暗号データを生成する第１のデバイス側暗号化手段と、
前記第２のデバイスにおいて、前記第２のデバイス側受信手段により受信した、前記第２のコマンドに応じて、前記第２の演算結果を、前記第２の鍵データにより暗号化して、第４の暗号データを生成する第２のデバイス側暗号化手段と、
前記第１のデバイスにおいて、前記第１のデバイス側受信手段により受信した、前記第２のコマンドに応じて、前記第３の暗号データを、前記伝送路を介して前記ホストに送信する第１のデバイス側送信手段と、
前記第２のデバイスにおいて、前記第１のデバイスが送信する、前記第３の暗号データを受信する第２のデバイス側受信手段と、
前記第２のデバイスにおいて、前記第２のデバイス側受信手段で受信した、前記第３の暗号データを、前記第２の鍵データを用いて復号して第３の復号結果を得る第２のデバイス側復号化手段と、
前記第２のデバイスにおいて、前記第３の復号結果と、前記第２の演算結果との一致/不一致を判定して、前記第１のデバイスを認証する第２のデバイス側認証手段と、
前記第２のデバイスにおいて、前記第２のデバイス側認証手段による判定結果が一致の場合は、前記第１のデバイスが認証されたと判断して、前記第４の暗号データを前記伝送路を介して前記ホストに送信し、
不一致の場合は、前記第１のデバイスは認証されなかったと判断して、前記第２の演算結果とは異なる第３の乱数データを、前記第２のデバイス側乱数データ生成手段で生成し、前記第３の乱数データを、前記第２の鍵データを用いて、前記第２のデバイス側受信手段で受信した前記第２のコマンドに応じて、前記第２のデバイス側暗号化手段で暗号化して第５の暗号データを生成し、前記伝送路を介して前記ホストに送信する第２のデバイス側認証結果送信手段と、
前記第１のデバイスにおいて、前記第２のデバイスが送信する、前記第４の暗号データあるいは、前記第５の暗号データを受信する第１のデバイス側受信手段と、
前記第１のデバイスにおいて、前記第１のデバイス側受信手段で受信した、前記第４の暗号データあるいは、前記第５の暗号データを、前記第２の鍵データを用いて復号して第４の復号結果を得る第１のデバイス側復号化手段と、
前記第１のデバイスにおいて、前記第４の復号結果と、前記第１の演算結果との一致/不一致を判定する第１のデバイス側一致判定手段と、
前記ホストにおいて、前記コマンド生成手段により生成された、前記第３のコマンドを前記伝送路を介して前記第１のデバイスに送信するホスト側送信手段と、
前記第１のデバイスにおいて、前記ホストが送信する前記第３のコマンドを受信する第１のデバイス側受信手段と、
前記第１のデバイスにおいて、前記第１のデバイス側受信手段で受信した、前記第３のコマンドに応じて、前記第１のデバイス側一致判定手段で判定した結果を、前記伝送路を介して前記ホストに送信する第１のデバイス側一致判定結果送信手段と、
前記ホストにおいて、前記第１のデバイスから送信された、前記第１のデバイス側一致判定手段での判定結果を受信するホスト側受信手段と、
第１のデバイスにおいて、前記第１のデバイス側一致判定手段で判定した結果により、前記第２のデバイスとの相互認証結果を判定する第１のデバイス側相互認証手段と、
前記ホストにおいて、前記ホスト側受信手段により受信された、前記第１のデバイス側一致判定手段での判定結果に基づいて、前記第１及び第２のデバイスの相互認証結果を判定する認証結果判定手段とを有することを特徴とする相互認証システム。
【請求項２】
前記第１のデバイスは予め認証されたデバイスであることを特徴とする請求項１に記載の相互認証システム。
【請求項３】
前記伝送路はＩ２Ｃ（Inter-Integrated Circuit）伝送線であることを特徴とする請求項１または２に記載の相互認証システム。
【請求項４】
伝送路を介して接続された複数のデバイスとホストとの間でデータの送受信を行い、前記複数のデバイスを前記ホストが順次認証する相互認証方法であって、
前記伝送路を介して接続された前記複数のデバイスのうち、相互認証させる第１のデバイスと第２のデバイスとを、デバイス決定手段により決定するデバイス決定工程と、
前記ホストにおいて、前記デバイス決定工程で決定した、前記第１、第２のデバイスを指定して、相互認証を行うように命令する、第１、第２のコマンドと、前記第１のデバイスから相互認証結果を読み出すように命令する、第３のコマンドを、コマンド生成手段で生成するコマンド生成工程と、
前記ホストにおいて、前記コマンド生成工程で生成した、前記第１のコマンドを、ホスト側送信手段で、前記伝送路を介して前記第１、第２のデバイスとに送信するホスト側送信工程と、
前記第１のデバイスにおいて、前記ホスト側送信工程にて、前記ホストが送信する、前記第１のコマンドを、第１のデバイス側受信手段で受信する第１のデバイス側受信工程と、
前記第２のデバイスにおいて、前記ホスト側送信工程にて、前記ホストが送信する、前記第１のコマンドを、第２のデバイス側受信手段で受信する第２のデバイス側受信工程と、
前記第１のデバイスにおいて、第１の乱数データを、第１のデバイス側乱数データ生成手段で生成する第１のデバイス側乱数データ生成工程と、
前記第２のデバイスにおいて、第２の乱数データを、第２のデバイス側乱数データ生成手段で生成する第２のデバイス側乱数データ生成工程と、
前記第１のデバイスにおいて、前記第１のデバイス側受信工程にて受信した、前記第１のコマンドに応じて、前記第１の乱数データを、前記第１、第２のデバイスが共通に保持する、第１の鍵データを用いて、第１のデバイス側暗号化手段で、第１の暗号データを生成する第１のデバイス側暗号化工程と、
前記第２のデバイスにおいて、前記第２のデバイス側受信工程にて受信した、前記第１のコマンドに応じて、前記第２の乱数データを、前記第１の鍵データを用いて、第２のデバイス側暗号化手段で、第２の暗号データを生成する第２のデバイス側暗号化工程と、
前記第１のデバイスにおいて、前記第１の暗号データを、第１のデバイス側送信手段で、前記伝送路を介して前記ホストに送信する第１のデバイス側送信工程と、
前記第２のデバイスにおいて、前記第１のデバイス側送信工程にて前記第１のデバイスが送信する、前記第１の暗号データを、前記第２のデバイス側受信手段で受信する第２のデバイス側受信工程と、
前記第２のデバイスにおいて、前記第２のデバイス側受信工程にて受信した、前記第１の暗号データを、前記第１の鍵データを用いて、第２のデバイス側復号化手段で第１の復号結果を得る第２のデバイス側復号化工程と、
前記第２のデバイスにおいて、前記第２のデバイス側復号化工程で得た、前記第１の復号結果と、前記第２の乱数データとの間で、第２のデバイス側演算手段で演算を行い、前記第２の演算結果を得る第２のデバイス側演算工程と、
前記第２のデバイスにおいて、前記第２の暗号データを、第２のデバイス側送信手段で、前記伝送路を介して前記ホストに送信する第２のデバイス側送信工程と、
前記第１のデバイスにおいて、前記第２のデバイス側送信工程にて、前記第２のデバイスが送信する、前記第２の暗号データを、前記第１のデバイス側受信手段で受信する第１のデバイス側受信工程と、
前記第１のデバイスにおいて、前記第１のデバイス側受信工程にて受信した、前記第２の暗号データを、前記第１の鍵データを用いて、第１のデバイス側復号化手段で復号し、第２の復号結果を得る第１のデバイス側復号化工程と、
前記第１のデバイスにおいて、前記第１のデバイス側復号化工程にて得た、前記第２の復号結果と、前記第１の乱数データとの間で、第１のデバイス側演算手段で演算を行い、第１の演算結果を得る第１のデバイス側演算工程と、
ホストにおいて、前記コマンド生成工程で生成した、前記第２のコマンドを、前記ホスト側送信手段で、前記伝送路を介して前記第１、第２のデバイスに送信するホスト側送信工程と、
前記第１のデバイスにおいて、前記ホスト側送信工程にて、前記ホストが送信する、前記第２のコマンドを、前記第１のデバイス側受信手段で受信する第１のデバイス側受信工程と、
前記第２のデバイスにおいて、前記ホスト側送信工程にて、前記ホストが送信する、前記第２のコマンドを、前記第２のデバイス側受信手段で受信する第２のデバイス側受信工程と、
前記第１のデバイスにおいて、前記第１のデバイス側受信工程にて受信した、前記第２のコマンドに応じて、前記第１の演算結果を、前記第１、第２のデバイスが共通に保持する、第２の鍵データを用いて、前記第１のデバイス側暗号化手段にて、第３の暗号データを生成する第１のデバイス側暗号化工程と、
前記第２のデバイスにおいて、前記第２のデバイス側受信工程にて受信した、前記第２のコマンドに応じて、前記第２の演算結果を、前記第２の鍵データにより、前記第２のデバイス側暗号化手段で暗号化して、第４の暗号データを生成する第２のデバイス側暗号化工程と、
前記第１のデバイスにおいて、前記第１のデバイス側暗号化工程にて生成された、前記第３の暗号データを、前記第１のデバイス側送信手段で、前記伝送路を介して前記ホストに送信する第１のデバイス側送信工程と、
前記第２のデバイスにおいて、前記第１のデバイス側送信工程にて、前記第１のデバイスが送信する、前記第３の暗号データを、前記第２のデバイス側受信手段で受信する第２のデバイス側受信工程と、
前記第２のデバイスにおいて、前記第２のデバイス側受信工程にて受信した第３の暗号データを、前記第２の鍵データを用いて、前記第２のデバイス側復号化手段にて復号して前記第３の復号結果を得る第２のデバイス側復号化工程と、
前記第２のデバイスにおいて、前記第２のデバイス側復号化工程で得た、前記第３の復号結果と、前記第２の演算結果の一致/不一致を、第２のデバイス側認証手段で判定して、前記第１のデバイスを認証する第２のデバイス側認証工程と、
前記第２のデバイスにおいて、前記第２のデバイス側認証工程での、前記第２のデバイス側認証手段による判定結果が一致の場合は、前記第１のデバイスが認証されたと判断して、前記第４の暗号データを前記伝送路を介して前記ホストに送信し、
不一致の場合は、前記第１のデバイスは認証されなかったと判断して、前記第２の演算結果とは異なる第３の乱数データを、前記第２のデバイス側乱数データ生成手段で生成し、前記第３の乱数データを、前記第２の鍵データを用いて、前記第２のデバイス側受信工程にて受信した前記第２のコマンドに応じて、前記第２のデバイス側暗号化手段で、第５の暗号データを生成して、第２のデバイス側認証結果送信手段により、前記伝送路を介して前記ホストに送信する第２のデバイス側認証結果送信工程と、
前記第１のデバイスにおいて、前記第２のデバイス側認証結果送信工程にて、前記第２のデバイスが生成して、前記伝送路を介して前記ホストに送信する、前記第４の暗号データあるいは、前記第５の暗号データを、前記第１のデバイス側受信手段で受信する第１のデバイス側受信工程と、
前記第１のデバイスにおいて、前記第１のデバイス側受信工程で受信した、前記第４の暗号データあるいは前記第５の暗号データを、前記第２の鍵データを用いて、前記第１のデバイス側復号化手段で復号して、第４の復号結果を得る第１のデバイス側復号化工程と、
前記第１のデバイスにおいて、前記第１のデバイス側復号化工程にて得た、前記第４の復号結果と、前記第１の演算結果との一致/不一致を、第１のデバイス側一致判定手段で判定する第１のデバイス側一致判定工程と、
前記ホストにおいて、前記コマンド生成工程で生成した、前記第３のコマンドを、前記ホスト側送信手段で、前記伝送路を介して前記第１のデバイスに送信するホスト側送信工程と、
前記第１のデバイスにおいて、前記ホスト側送信工程にて前記ホストが送信する、前記第３のコマンドを、前記第１のデバイス側受信手段で受信する第１のデバイス側受信工程と、
前記第１のデバイスにおいて、前記第１のデバイス側受信工程にて受信した、前記第３のコマンドに応じて、前記第１のデバイス側一致判定手段での判定結果を、第１のデバイス側一致結果送信手段で、前記伝送路を介して前記ホストに送信する第１のデバイス側一致判定結果送信工程と、
前記ホストにおいて、前記第１のデバイス側一致判定結果送信工程にて、前記第１のデバイスから送信される、前記第１のデバイス側一致判定手段での判定結果を、ホスト側受信手段で受信するホスト側受信工程と、
前記第１のデバイスにおいて、前記第１のデバイス側一致判定手段での判定結果により、前記第２のデバイスとの相互認証結果を判定する第１のデバイス側相互認証結果工程と、
前記ホストにおいて、前記ホスト側受信工程にて受信された前記第１のデバイス側一致判定手段での判定結果に基づいて、前記第１、第２のデバイスの相互認証結果を認証結果判定手段で判定する認証結果判定工程とを有し、
前記ホストから送信された第１、第２のコマンドにより第１、第２のデバイスに指定されなかったデバイスは、相互認証動作に参加せず待機していることを特徴とする相互認証方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は相互認証システム及び相互認証方法に関し、特に、Ｉ２Ｃバスを介して接続された複数のデバイスをホストが認証するために用いて好適な技術に関する。
【背景技術】
【０００２】
情報処理技術の発展に伴い、大量の情報が所定の伝送路を介して通信されている。情報が通信される伝送路には、第三者（送信者および受信者以外の者）が、通信されているデータを盗聴することが可能なものが多い。
【０００３】
このような伝送路を利用して、情報を第三者に漏洩させずに、通信を行う場合、しばしば、暗号が利用される。暗号を利用し、暗号化されたデータを通信することにより、暗号化されたデータを盗聴することができても、第三者が、そのデータから通信した情報の内容を読み出すことは困難である。
【０００４】
このような暗号を生成する暗号化方法には、所定の鍵を利用して、平文（送信する情報）から、暗号（実際に送信されるデータ）を生成するものが利用されることが多い。
【０００５】
このような、鍵を利用した暗号には、共通鍵暗号と公開鍵暗号の２種類がある。共通鍵暗号においては、暗号化するときの鍵（暗号化鍵データ）と、復号化するときの鍵（復号化鍵データ）が同一である。例えば、共通鍵暗号としては、Feistel暗号の１つであるＤＥＳ（Data Encryption Standard）方式などがよく利用されている。一方、公開鍵暗号においては、暗号化鍵データと復号化鍵データが異なる。そして、受信者は、送信者のために、それらの鍵のうち、暗号化鍵データを公開するが、復号化鍵データは公開せずに隠しておく（即ち、復号化鍵データは、受信者のみが知っている）。
【０００６】
しかしながら、前述の認証方法においては、所定の送受信者が、他の送受信者を認証するだけであるので、例えば、リーダ／ライタ装置（親機）とＩＣカードで構成されるカードシステムに、前述の認証方法を適用した場合、リーダ／ライタ装置は、通信相手が正規のＩＣカードであるか否かを判断する（通信相手を認証する）ことができるが、ＩＣカードは、通信相手が正規のリーダ／ライタ装置であるか否かを判断することが困難であるという問題を有している。
【０００７】
前述のような問題点を解消するために、例えば、特許文献１においては、複数の情報処理装置において、相互に平文を送信するとともに、送信されてきた平文を受信し、受信した平文を暗号に暗号化し、平文を送信した装置に、その暗号を送信するとともに、送信されてきた暗号を受信し、その暗号を復号化した平文と最初に送信した平文を比較することで、相互に認証を行うようにした認証方法が提案されている。
【先行技術文献】
【特許文献】
【０００８】
【特許文献１】特開平１０−０２０７８０号公報
【発明の概要】
【発明が解決しようとする課題】
【０００９】
特許文献１に記載の認証方法においては、リーダ／ライタ装置とＩＣカードとで相互に認証を行うようにしている。このため、リーダ／ライタ装置に専用認証エンジンを具備する必要があった。
【００１０】
また、ＩＣカードを使用する各ユーザー向けにユーザー指定の制御用ＣＰＵのソフト向けのコードの開発する負担、及び開発した同コードを開示するために発生するセキュリティ上の管理のわずらわしさ（秘密保持の負担）も大きな負担であった。
本発明は前述の問題点に鑑み、親機が認証エンジンを具備することなく、伝送路に接続されたデバイスの真偽を確認できるようにすることを目的とする。
【課題を解決するための手段】
【００１１】
本発明の相互認証システムは、伝送路を介して接続された複数のデバイスとホストとの間でデータの送受信を行い、前記複数のデバイスを前記ホストが順次認証する相互認証システムにおいて、
前記ホストにおいて、前記伝送路を介して接続された前記複数のデバイスのうち、相互認証させる第１のデバイスと第２のデバイスとを決定するデバイス決定手段と、
前記ホストにおいて、前記デバイス決定手段により決定された、第１及び第２のデバイスを指定して、相互認証を行うように命令する第１、第２のコマンドと、前記第１のデバイスから相互認証結果を読み出すように命令する第３のコマンドを生成するコマンド生成手段と、
前記ホストにおいて、前記コマンド生成手段により生成された、前記第１のコマンドを前記伝送路を介して前記第１、第２のデバイスに送信するホスト側送信手段と、
前記第１のデバイスにおいて、前記ホストが送信する、前記第１のコマンドを受信する第１のデバイス側受信手段と、
前記第２のデバイスにおいて、前記ホストが送信する、前記第１のコマンドを受信する第２のデバイス側受信手段と
前記第１のデバイスにおいて、第１の乱数データを生成する第１のデバイス側乱数データ生成手段と、
前記第２のデバイスにおいて、第２の乱数データを生成する第２のデバイス側乱数データ生成手段と、
前記第１のデバイスにおいて、前記第１のデバイス側受信手段により受信された前記第１のコマンドに応じて、前記第１の乱数データを、前記第１、第２のデバイスが共通に保持する第１の鍵データを用いて暗号化して、第１の暗号データを生成する第１のデバイス側暗号化手段と、
前記第２のデバイスにおいて、前記第２のデバイス側受信手段により受信された前記第１のコマンドに応じて、前記第２の乱数データを、前記第１の鍵データを用いて第２の暗号データを生成する第２のデバイス側暗号化手段と、
前記第１のデバイスにおいて、前記第１の暗号データを、前記伝送路を介して前記ホストに送信する第１のデバイス側送信手段と、
前記第２のデバイスにおいて、前記第１のデバイスが送信する、前記第１の暗号データを受信する第２のデバイス側受信手段と、
前記第２のデバイスにおいて、前記第２のデバイス側受信手段により受信した、前記第１の暗号データを、前記第１の鍵データを用いて、第１の復号結果を得る第２のデバイス側復号化手段と、
前記第２のデバイスにおいて、前記第２のデバイス側復号化手段により得た前記第１の復号結果と、前記第２の乱数データとの間で演算を行い、第２の演算結果を得る第２のデバイス側演算手段と、
前記第２のデバイスにおいて、前記第２のデバイス側暗号化手段により生成された、前記第２の暗号データを、前記伝送路を介して前記ホストに送信する第２のデバイス側送信手段と、
前記第１のデバイスにおいて、前記第２のデバイスが送信する、前記第２の暗号データを受信する第１のデバイス側受信手段と、
前記第１のデバイスにおいて、前記第１のデバイス側受信手段により受信した、前記第２の暗号データを、前記第１の鍵データを用いて復号し、第２の復号結果を得る第１のデバイス側復号化手段と、
前記第１のデバイスにおいて、前記第１のデバイス側復号化手段により得た、前記第２の復号結果と、前記第１の乱数データとの間で演算を行い、第１の演算結果を得る第１のデバイス側演算手段と、
前記ホストにおいて、前記コマンド生成手段により生成された、前記第２のコマンドを、前記伝送路を介して前記第１、第２のデバイスに送信するホスト側送信手段と、
前記第１のデバイスにおいて、前記ホストが送信する、前記第２のコマンドを受信する第１のデバイス側受信手段と、
前記第２のデバイスにおいて、前記ホストが送信する、前記第２のコマンドを受信する第２のデバイス側受信手段と、
前記第１のデバイスにおいて、前記第１のデバイス側受信手段により受信した、前記第２のコマンドに応じて前記第１の演算結果を、前記第１、第２のデバイスが共通に保持する第２の鍵データを用いて暗号化して、第３の暗号データを生成する第１のデバイス側暗号化手段と、
前記第２のデバイスにおいて、前記第２のデバイス側受信手段により受信した、前記第２のコマンドに応じて、前記第２の演算結果を、前記第２の鍵データにより暗号化して、第４の暗号データを生成する第２のデバイス側暗号化手段と、
前記第１のデバイスにおいて、前記第１のデバイス側受信手段により受信した、前記第２のコマンドに応じて、前記第３の暗号データを、前記伝送路を介して前記ホストに送信する第１のデバイス側送信手段と、
前記第２のデバイスにおいて、前記第１のデバイスが送信する、前記第３の暗号データを受信する第２のデバイス側受信手段と、
前記第２のデバイスにおいて、前記第２のデバイス側受信手段で受信した、前記第３の暗号データを、前記第２の鍵データを用いて復号して第３の復号結果を得る第２のデバイス側復号化手段と、
前記第２のデバイスにおいて、前記第３の復号結果と、前記第２の演算結果との一致/不一致を判定して、前記第１のデバイスを認証する第２のデバイス側認証手段と、
前記第２のデバイスにおいて、前記第２のデバイス側認証手段による判定結果が一致の場合は、前記第１のデバイスが認証されたと判断して、前記第４の暗号データを前記伝送路を介して前記ホストに送信し、
不一致の場合は、前記第１のデバイスは認証されなかったと判断して、前記第２の演算結果とは異なる第３の乱数データを、前記第２のデバイス側乱数データ生成手段で生成し、前記第３の乱数データを、前記第２の鍵データを用いて、前記第２のデバイス側受信手段で受信した前記第２のコマンドに応じて、前記第２のデバイス側暗号化手段で暗号化して第５の暗号データを生成し、前記伝送路を介して前記ホストに送信する第２のデバイス側認証結果送信手段と、
前記第１のデバイスにおいて、前記第２のデバイスが送信する、前記第４の暗号データあるいは、前記第５の暗号データを受信する第１のデバイス側受信手段と、
前記第１のデバイスにおいて、前記第１のデバイス側受信手段で受信した、前記第４の暗号データあるいは、前記第５の暗号データを、前記第２の鍵データを用いて復号して第４の復号結果を得る第１のデバイス側復号化手段と、
前記第１のデバイスにおいて、前記第４の復号結果と、前記第１の演算結果との一致/不一致を判定する第１のデバイス側一致判定手段と、
前記ホストにおいて、前記コマンド生成手段により生成された、前記第３のコマンドを前記伝送路を介して前記第１のデバイスに送信するホスト側送信手段と、
前記第１のデバイスにおいて、前記ホストが送信する前記第３のコマンドを受信する第１のデバイス側受信手段と、
前記第１のデバイスにおいて、前記第１のデバイス側受信手段で受信した、前記第３のコマンドに応じて、前記第１のデバイス側一致判定手段で判定した結果を、前記伝送路を介して前記ホストに送信する第１のデバイス側一致判定結果送信手段と、
前記ホストにおいて、前記第１のデバイスから送信された、前記第１のデバイス側一致判定手段での判定結果を受信するホスト側受信手段と、
第１のデバイスにおいて、前記第１のデバイス側一致判定手段で判定した結果により、前記第２のデバイスとの相互認証結果を判定する第１のデバイス側相互認証手段と、
前記ホストにおいて、前記ホスト側受信手段により受信された、前記第１のデバイス側一致判定手段での判定結果に基づいて、前記第１及び第２のデバイスの相互認証結果を判定する認証結果判定手段とを有することを特徴とする。
【００１２】
本発明の相互認証方法は、伝送路を介して接続された複数のデバイスとホストとの間でデータの送受信を行い、前記複数のデバイスを前記ホストが順次認証する相互認証方法であって、
前記伝送路を介して接続された前記複数のデバイスのうち、相互認証させる第１のデバイスと第２のデバイスとを、デバイス決定手段により決定するデバイス決定工程と、
前記ホストにおいて、前記デバイス決定工程で決定した、前記第１、第２のデバイスを指定して、相互認証を行うように命令する、第１、第２のコマンドと、前記第１のデバイスから相互認証結果を読み出すように命令する、第３のコマンドを、コマンド生成手段で生成するコマンド生成工程と、
前記ホストにおいて、前記コマンド生成工程で生成した、前記第１のコマンドを、ホスト側送信手段で、前記伝送路を介して前記第１、第２のデバイスとに送信するホスト側送信工程と、
前記第１のデバイスにおいて、前記ホスト側送信工程にて、前記ホストが送信する、前記第１のコマンドを、第１のデバイス側受信手段で受信する第１のデバイス側受信工程と、
前記第２のデバイスにおいて、前記ホスト側送信工程にて、前記ホストが送信する、前記第１のコマンドを、第２のデバイス側受信手段で受信する第２のデバイス側受信工程と、
前記第１のデバイスにおいて、第１の乱数データを、第１のデバイス側乱数データ生成手段で生成する第１のデバイス側乱数データ生成工程と、
前記第２のデバイスにおいて、第２の乱数データを、第２のデバイス側乱数データ生成手段で生成する第２のデバイス側乱数データ生成工程と、
前記第１のデバイスにおいて、前記第１のデバイス側受信工程にて受信した、前記第１のコマンドに応じて、前記第１の乱数データを、前記第１、第２のデバイスが共通に保持する、第１の鍵データを用いて、第１のデバイス側暗号化手段で、第１の暗号データを生成する第１のデバイス側暗号化工程と、
前記第２のデバイスにおいて、前記第２のデバイス側受信工程にて受信した、前記第１のコマンドに応じて、前記第２の乱数データを、前記第１の鍵データを用いて、第２のデバイス側暗号化手段で、第２の暗号データを生成する第２のデバイス側暗号化工程と、
前記第１のデバイスにおいて、前記第１の暗号データを、第１のデバイス側送信手段で、前記伝送路を介して前記ホストに送信する第１のデバイス側送信工程と、
前記第２のデバイスにおいて、前記第１のデバイス側送信工程にて前記第１のデバイスが送信する、前記第１の暗号データを、前記第２のデバイス側受信手段で受信する第２のデバイス側受信工程と、
前記第２のデバイスにおいて、前記第２のデバイス側受信工程にて受信した、前記第１の暗号データを、前記第１の鍵データを用いて、第２のデバイス側復号化手段で第１の復号結果を得る第２のデバイス側復号化工程と、
前記第２のデバイスにおいて、前記第２のデバイス側復号化工程で得た、前記第１の復号結果と、前記第２の乱数データとの間で、第２のデバイス側演算手段で演算を行い、前記第２の演算結果を得る第２のデバイス側演算工程と、
前記第２のデバイスにおいて、前記第２の暗号データを、第２のデバイス側送信手段で、前記伝送路を介して前記ホストに送信する第２のデバイス側送信工程と、
前記第１のデバイスにおいて、前記第２のデバイス側送信工程にて、前記第２のデバイスが送信する、前記第２の暗号データを、前記第１のデバイス側受信手段で受信する第１のデバイス側受信工程と、
前記第１のデバイスにおいて、前記第１のデバイス側受信工程にて受信した、前記第２の暗号データを、前記第１の鍵データを用いて、第１のデバイス側復号化手段で復号し、第２の復号結果を得る第１のデバイス側復号化工程と、
前記第１のデバイスにおいて、前記第１のデバイス側復号化工程にて得た、前記第２の復号結果と、前記第１の乱数データとの間で、第１のデバイス側演算手段で演算を行い、第１の演算結果を得る第１のデバイス側演算工程と、
ホストにおいて、前記コマンド生成工程で生成した、前記第２のコマンドを、前記ホスト側送信手段で、前記伝送路を介して前記第１、第２のデバイスに送信するホスト側送信工程と、
前記第１のデバイスにおいて、前記ホスト側送信工程にて、前記ホストが送信する、前記第２のコマンドを、前記第１のデバイス側受信手段で受信する第１のデバイス側受信工程と、
前記第２のデバイスにおいて、前記ホスト側送信工程にて、前記ホストが送信する、前記第２のコマンドを、前記第２のデバイス側受信手段で受信する第２のデバイス側受信工程と、
前記第１のデバイスにおいて、前記第１のデバイス側受信工程にて受信した、前記第２のコマンドに応じて、前記第１の演算結果を、前記第１、第２のデバイスが共通に保持する、第２の鍵データを用いて、前記第１のデバイス側暗号化手段にて、第３の暗号データを生成する第１のデバイス側暗号化工程と、
前記第２のデバイスにおいて、前記第２のデバイス側受信工程にて受信した、前記第２のコマンドに応じて、前記第２の演算結果を、前記第２の鍵データにより、前記第２のデバイス側暗号化手段で暗号化して、第４の暗号データを生成する第２のデバイス側暗号化工程と、
前記第１のデバイスにおいて、前記第１のデバイス側暗号化工程にて生成された、前記第３の暗号データを、前記第１のデバイス側送信手段で、前記伝送路を介して前記ホストに送信する第１のデバイス側送信工程と、
前記第２のデバイスにおいて、前記第１のデバイス側送信工程にて、前記第１のデバイスが送信する、前記第３の暗号データを、前記第２のデバイス側受信手段で受信する第２のデバイス側受信工程と、
前記第２のデバイスにおいて、前記第２のデバイス側受信工程にて受信した第３の暗号データを、前記第２の鍵データを用いて、前記第２のデバイス側復号化手段にて復号して前記第３の復号結果を得る第２のデバイス側復号化工程と、
前記第２のデバイスにおいて、前記第２のデバイス側復号化工程で得た、前記第３の復号結果と、前記第２の演算結果の一致/不一致を、第２のデバイス側認証手段で判定して、前記第１のデバイスを認証する第２のデバイス側認証工程と、
前記第２のデバイスにおいて、前記第２のデバイス側認証工程での、前記第２のデバイス側認証手段による判定結果が一致の場合は、前記第１のデバイスが認証されたと判断して、前記第４の暗号データを前記伝送路を介して前記ホストに送信し、
不一致の場合は、前記第１のデバイスは認証されなかったと判断して、前記第２の演算結果とは異なる第３の乱数データを、前記第２のデバイス側乱数データ生成手段で生成し、前記第３の乱数データを、前記第２の鍵データを用いて、前記第２のデバイス側受信工程にて受信した前記第２のコマンドに応じて、前記第２のデバイス側暗号化手段で、第５の暗号データを生成して、第２のデバイス側認証結果送信手段により、前記伝送路を介して前記ホストに送信する第２のデバイス側認証結果送信工程と、
前記第１のデバイスにおいて、前記第２のデバイス側認証結果送信工程にて、前記第２のデバイスが生成して、前記伝送路を介して前記ホストに送信する、前記第４の暗号データあるいは、前記第５の暗号データを、前記第１のデバイス側受信手段で受信する第１のデバイス側受信工程と、
前記第１のデバイスにおいて、前記第１のデバイス側受信工程で受信した、前記第４の暗号データあるいは前記第５の暗号データを、前記第２の鍵データを用いて、前記第１のデバイス側復号化手段で復号して、第４の復号結果を得る第１のデバイス側復号化工程と、
前記第１のデバイスにおいて、前記第１のデバイス側復号化工程にて得た、前記第４の復号結果と、前記第１の演算結果との一致/不一致を、第１のデバイス側一致判定手段で判定する第１のデバイス側一致判定工程と、
前記ホストにおいて、前記コマンド生成工程で生成した、前記第３のコマンドを、前記ホスト側送信手段で、前記伝送路を介して前記第１のデバイスに送信するホスト側送信工程と、
前記第１のデバイスにおいて、前記ホスト側送信工程にて前記ホストが送信する、前記第３のコマンドを、前記第１のデバイス側受信手段で受信する第１のデバイス側受信工程と、
前記第１のデバイスにおいて、前記第１のデバイス側受信工程にて受信した、前記第３のコマンドに応じて、前記第１のデバイス側一致判定手段での判定結果を、第１のデバイス側一致結果送信手段で、前記伝送路を介して前記ホストに送信する第１のデバイス側一致判定結果送信工程と、
前記ホストにおいて、前記第１のデバイス側一致判定結果送信工程にて、前記第１のデバイスから送信される、前記第１のデバイス側一致判定手段での判定結果を、ホスト側受信手段で受信するホスト側受信工程と、
前記第１のデバイスにおいて、前記第１のデバイス側一致判定手段での判定結果により、前記第２のデバイスとの相互認証結果を判定する第１のデバイス側相互認証結果工程と、
前記ホストにおいて、前記ホスト側受信工程にて受信された前記第１のデバイス側一致判定手段での判定結果に基づいて、前記第１、第２のデバイスの相互認証結果を認証結果判定手段で判定する認証結果判定工程とを有し、
前記ホストから送信された第１、第２のコマンドにより第１、第２のデバイスに指定されなかったデバイスは、相互認証動作に参加せず待機していることを特徴とする。
【発明の効果】
【００１３】
本発明によれば、親機が認証エンジンを具備することなく、伝送路に接続されたデバイスの真偽を確認することが可能となる。
【図面の簡単な説明】
【００１４】
【図１】本発明の実施形態を示し、相互認証システムの全体構成例を示す図である。
【図２】本発明の実施形態を示し、親機の構成例を示す図である。
【図３】本発明の実施形態を示し、第１のデバイスの構成例を示す図である。
【図４】本発明の実施形態を示し、第２のデバイスの構成例を示す図である。
【図５】本発明の実施形態を示し、相互認証を行う手順を説明するタイミングチャートである。
【発明を実施するための形態】
【００１５】
次に、図面を参照しながら本発明の実施形態を説明する。
（第１の実施形態）
図１は、本発明の実施形態を示し、相互認証システムの概略構成を示す図である。
図１に示したように、本実施形態の相互認証システムにおいては、ホスト（親機）１０に対して複数のデバイスＡ１１、デバイスＢ１２、デバイスＣ１３・・・がＩ２Ｃ（Inter-Integrated Circuit）伝送路１４を介して接続されている。
【００１６】
ホスト１０は、伝送路１４に接続されたデバイス１１〜１３の真偽を判断し、真のデバイスに対してのみアクセス制限を開放する。伝送路１４に接続されたデバイスが真のデバイスであるか否かを判断するためには、一般には、ホスト１０が認証用の専用認証エンジンを備え、ホスト１０と認証対象のデバイスとの間で相互認証アルゴリズムを実行する必要がある。本実施形態においては、ホスト１０に認証用の専用認証エンジンを具備することなく、伝送路１４に接続されたデバイスの真偽を判断できるようにしている。
【００１７】
図１に示したように、本実施形態の第１のデバイスＡ１１にはメモリ１１ａが配設されており、メモリ１１ａに「第１、第２の鍵データＫＡ、ＫＢ」が記憶されている。また、第２のデバイスＢ１２にはメモリ１２ａが配設されており、メモリ１２ａに「第１、第２の鍵データＫＡ、ＫＢ」が記憶されている。また、第３のデバイスＣ１３にはメモリ１３ａが配設されており、メモリ１３ａに「第１、第２の鍵データＫＡ、ＫＢ」が記憶されている。
【００１８】
しかしながら、本実施形態のホスト１０は伝送路１４に接続されたデバイスとの間で相互認証を行わないので、メモリ１０ａには「第１、第２の鍵データＫＡ、ＫＢ」が記憶されていない。図２にホスト１０の概略構成例を示す。
【００１９】
図２に示すように、ホスト１０において、制御部２１は、内蔵するプログラムに応じて、各種処理を行う。例えば、制御部２１は、相互認証を行うデバイスに送信するコマンドを、コマンド生成部２３にて生成するように制御し、生成したコマンドを送信部２４に出力するよう制御する。
【００２０】
メモリ２２は、制御部２１における処理に使用されるデータなどを記憶している。送信部２４は、コマンド生成部２３より供給されたコマンドを、Ｉ／Ｆ部２５と伝送路１４を介して相互認証を行うデバイスに送信する。
【００２１】
受信部２６は、Ｉ／Ｆ部２５を介して、相互認証を行うデバイスにより送信されたデータを認証結果判定部２７に出力する。
【００２２】
制御部２１からの制御により、認証結果判定部２７は、受信部２６より供給されたデータに基づいて、伝送路１４に接続されたデバイスから送信された認証結果の真偽を判定し、判定結果を制御部２１に出力するか、あるいは、受信部２６より供給されたデータをそのまま制御部２１に出力する。
【００２３】
図３は、本発明の実施形態である第１のデバイスの構成例を示すブロック図である。
第１のデバイスにおいて、制御部３１は、ホスト１０より供給されるコマンドに応じて、各種処理を行う。具体的には、ホスト１０からのコマンドを受信部３６から受け取り、そのコマンドに対応した処理を行い、その処理の結果に対応して生成した乱数データや演算結果や応答データやメモリ３２からの読み出しデータ等を暗号部３３に出力する。
【００２４】
メモリ３２は、ＲＡＭ（Random Access Memory）部（とＲＯＭ（Read Only Memory）部を有している。そのうちのＲＡＭ部は、制御部３１における処理に使用されるデータなどを一時的に記憶する。一方、ＲＯＭ部には、デバイス固有のデバイスアドレスと暗号化または復号化において利用される「第１、第２の鍵データＫＡ、ＫＢ」等が予め記憶されている。
【００２５】
暗号部３３は、制御部３１より供給された暗号化するべきデータを、所定の鍵で暗号化し、暗号化したデータを送信部３４に出力し、制御部３１より供給されたデータを暗号化しない場合はそのまま送信部３４に出力する。
送信部３４は、暗号部３３より供給されたデータを、Ｉ／Ｆ部３５を介して伝送路１４に出力し、ホスト１０に送信する。
【００２６】
受信部３６は、伝送路１４を介して送られてきたデータをＩ／Ｆ部３５を介して、受信し、復号部３７に出力する。
復号部３７は、受信部３６より供給されたデータを、制御部２１の制御に応じて所定の鍵で復号化し、復号化したデータを制御部３１に出力するか、そのまま制御部３１に出力する。
【００２７】
図４は、本発明の実施形態である第２のデバイスの構成例を示すブロック図である。第２のデバイスの構成は、図３に示した第１のデバイスの構成と全く同一であるが、動作説明を判り易くするため図３、４に分けて説明する。
【００２８】
次に、図１を参照しながら本実施形態の相互認証システムの処理の概略を説明する。なお、図５に処理ステップを示す、各ステップで行われるデータ伝送は伝送路１４を介して行われる。
【００２９】
（ステップＳ１）
ホスト１０が、相互認証させる第１、第２のデバイスアドレスを指定し、さらに乱数データとして生成した第１のスクランブルデータＸ、を附加して、第１の相互認証コマンド１を送信部２４からＩ／Ｆ部２５を介して伝送路１４に送信する。例えば、第１のデバイスＡ１１と第２のデバイスＢ１２とを指定して第１の相互認証コマンド１の送信を行う。
【００３０】
本実施形態においては、第１のデバイスＡ１１が真のデバイスであることが予め確認されている。したがって、第１〜第３の相互認証コマンド１〜３に従って第１のデバイスＡ１１と第２のデバイスＢ１２との間で相互認証を行い、第１のデバイスＡ１１のメモリ１１ａに記憶されている「第１、第２の鍵データＫＡ、ＫＢ」と、第２のデバイスＢ１２のメモリ１２ａに記憶されている「第１、第２の鍵データＫＡ、ＫＢ」とが一致し、相互認証アルゴリズム計算が同じで、動作制御に正しく応答した場合には、第２のデバイスＢ１２は真のデバイスであるとホスト１０により認証される。デバイスアドレスを指定されなかったデバイスは相互認証動作に参加せず待機する。
【００３１】
第１のデバイスＡ１１は、ホスト１０が伝送路１４に送信する第１の相互認証コマンド１をＩ／Ｆ部３５を介して受信部３６により受信する。
第２のデバイスＢ１２は、ホスト１０が伝送路１４に送信する第１の相互認証コマンド１をＩ／Ｆ部４５を介して受信部４６により受信する。
【００３２】
ホスト１０から送信された第１の相互認証コマンド１で第１のデバイスとしてデバイスアドレスを指定された第１のデバイスＡ１１は、制御部３１が第１の乱数Ｒａを生成する。
ホスト１０から送信された第１の相互認証コマンド１で第２のデバイスとしてデバイスアドレスを指定された第２のデバイスＢ１２は、制御部４１が第２の乱数Ｒｂを生成する。
第１のデバイスＡ１１は、メモリ１１ａに記憶している「第１の鍵データＫＡ」とホスト１０から送られてきた第１の相互認証コマンド１に附加されて来た第１のスクランブルデータＸ用いて、第１の乱数Ｒａを暗号部３３により暗号化して第１の暗号データを得る。
第２のデバイスＢ１２は、メモリ１２ａに記憶している「第１の鍵データＫＡ」とホスト１０から送られてきた第１の相互認証コマンド１に附加されて来た第１のスクランブルデータＸを用いて、第２の乱数Ｒｂを暗号部４３により暗号化して第２の暗号データを得る。
【００３３】
（ステップ２）
第１のデバイスＡ１１は、第１の暗号データを送信部３４、Ｉ／Ｆ部３５、伝送路１４を介してホスト１０に送信する。
第２のデバイスＢ１２は、第１のデバイスＡ１１が伝送路１４を介してホスト１０に送信している第１の暗号データをＩ／Ｆ部４５を介して受信部４６により受信する。
第２のデバイスＢ１２は、受信した第１の暗号データを自身のメモリ１２ａに記憶している「第１の鍵データＫＡ」と第１のスクランブルデータＸを用いて複号部４７で逆演算を行って復号して第１の復号データＲａ'を得る。
第２のデバイスＢ１２は、制御部４１で、第２の乱数Ｒｂと、複号部４７で逆演算を行って復号した第１の復号データＲa'との間で所定の論理演算を行って第２の演算結果[Ｒb◆Ｒa']を得る。
さらに、説明を補足すると論理演算であるので交換の法則が成り立つので、[Ｒｂ◆Ｒa']＝[Ｒa'◆Ｒb]の関係がある。
論理演算は、排他的ＯＲ演算、ビットシフト、ビット順の並び変え、特定ビットのデータ反転等を組み合わせて行うのが望ましい。
【００３４】
（ステップＳ３）
第２のデバイスＢ１２は、第２の暗号データを送信部４４、Ｉ／Ｆ部４５、伝送路１４を介してホスト１０に送信する。
第２のデバイスＢ１２から伝送路１４を介してホスト１０に送信する第２の暗号データを第１のデバイスＡ１１がＩ／Ｆ部３５を介して受信部３６により受信する。
【００３５】
第１のデバイスＡ１１は、受信した第２の暗号データをメモリ１１ａに記憶している「第１の鍵データＫＡ」と第１のスクランブルデータＸを用いて復号部３７により逆演算を行って復号した第２の復号データＲｂ'を得る。
第１のデバイスＡ１１は、制御部３１が、第１の乱数Ｒａと、複号部３７で逆演算を行って復号した第２の復号データＲｂ'との間で所定の論理演算を行って第１の演算結果[Ｒa◆Ｒｂ']を得る。
【００３６】
(ステップＳ４)
ホスト１０が、相互認証させる第１、第２のデバイスアドレスを再度指定し、さらに、乱数データとして生成した第２のスクランブルデータＹを附加して、第２の相互認証コマンド２をＩ／Ｆ部２５を介して伝送路１４に送信する。アドレスを指定されなかったデバイスは相互認証動作に参加せず待機する。
【００３７】
第１のデバイスＡ１１はホスト１０が伝送路１４に送信する第２の相互認証コマンド２をＩ／Ｆ部３５を介して受信部３６により受信する。
第２のデバイスＢ１２はホスト１０が伝送路１４に送信する第２の相互認証コマンド２をＩ／Ｆ部４５を介して受信部４６により受信する。
第１のデバイスＡ１１は、論理演算を行って得た第１の演算結果[Ｒa◆Ｒｂ']を、メモリ１１ａに記憶している「第２の鍵データＫＢ」とホスト１０から送られてきた第１、第２の相互認証コマンド１、２に附加されて来た第１、第２のスクランブルデータＸ、Ｙを用いて、暗号部３３により暗号化して第３の暗号データを得る。
第２のデバイスＢ１２は、論理演算を行って得た第２の演算結果[Ｒｂ◆Ｒa']を、メモリ１２ａに記憶している「第２の鍵データＫＢ」とホスト１０から送られてきた第１、第２の相互認証コマンド１、２に附加されて来た第１、第２のスクランブルデータＸ、Ｙを用いて、暗号部４３により暗号化して第４の暗号データを得る。
【００３８】
（ステップＳ５）
第１のデバイスＡ１１は、第３の暗号データを送信部３４、Ｉ／Ｆ部３５、伝送路１４を介してホスト１０に送信する。
第２のデバイスＢ１２は、第１のデバイスＡ１１が伝送路１４を介してホスト１０に送信する第３の暗号データをＩ／Ｆ部４５を介して受信部４６により受信する。
第２のデバイスＢ１２は、受信した第３の暗号データを自身のメモリ１２ａに記憶している「第２の鍵データＫＢ」と第１、第２のスクランブルデータＸ、Ｙを用いて復号部３７で逆演算を行って復号して第３の復号データ[Ｒa◆Ｒｂ']'を得る。
第２のデバイスＢ１２は、第２の演算結果[Ｒb◆Ｒa']と第３の復号データ [Ｒa◆Ｒｂ']'との一致/不一致を検出する。
【００３９】
（ステップＳ６）
第２のデバイスＢ１２は、第２の演算結果[Ｒb◆Ｒa']と第３の復号データ [Ｒa◆Ｒｂ']'が一致している場合は、第４の暗号データを送信部３４、Ｉ／Ｆ部３５、伝送路１４を介してホスト１０に送信する。
さらに第２のデバイスＢ１２は相互認証が成立したと判断し、第２のデバイスＢ１２に対するアクセスに対する所定のアクセス制限を開放する。
第２のデバイスＢ１２は、第２の演算結果[Ｒb◆Ｒa']と第３の復号データ [Ｒa◆Ｒｂ']'が一致していない場合は第３の乱数Ｒｃを生成する。
また、第３の乱数Ｒｃ＝第２の演算結果[Ｒｂ◆Ｒa']になった場合、あるいは、第３の乱数Ｒｃ＝第３の復号データ[Ｒa◆Ｒb']'になった場合は、第３の乱数Ｒｃを再度生成する。
第２のデバイスＢ１２は、メモリ１２ａに記憶している「第２の鍵データＫＢ」とホスト１０から送られてきた第１、第２の相互認証コマンド１、２に附加されて送られて来た第１、第２のスクランブルデータＸ、Ｙ用いて、第３の乱数Ｒｃを暗号部４３により暗号化して第５の暗号データを得る、そして、第５の暗号データを送信部４４、Ｉ／Ｆ部４５、伝送路１４を介してホスト１０に送信する。
この場合は、第２のデバイスＢ１２は相互認証が成立しなかったと判断し、第２のデバイスＢ１２に対するアクセスに対する所定のアクセス制限を開放しない。
【００４０】
第１のデバイスＡ１１は、第２のデバイスＢ１２から送信部４４、Ｉ／Ｆ部４５伝送路１４を介してホスト１０に送信する、第４の暗号データ、あるいは第５の暗号データを、Ｉ／Ｆ部３５を介して受信部３６により受信している。
第１のデバイスＡ１１は、受信した第４の暗号データ、あるいは第５の暗号データをメモリ１１ａに記憶している「第２の鍵データＫＢ」と第１、第２のスクランブルデータＸ、Ｙを用いて復号部３７で逆演算して復号して第４の復号データ [Ｒb◆Ｒa']'、あるいは、Ｒｃ'を得る。
第１のデバイスＡ１１は、第４の復号データ[Ｒb'◆Ｒa]'、あるいはＲｃ'と第１の演算結果[Ｒa◆Ｒｂ']との一致/不一致を判定し第１のデバイス側一致判定データＴを得る。
【００４１】
(ステップＳ７)
ホスト１０が、第１のデバイスアドレスを指定しさらに、乱数データとして生成した第３のスクランブルデータＺを附加して、相互認証の結果を問い合わせる第３の相互認証コマンド３をＩ／Ｆ部２５を介して伝送路１４に送信する。デバイスアドレスを指定されなかったデバイスは相互認証動作に参加せず待機する。
第１のデバイスＡ１１は、ホスト１０が伝送路１４に送信する第３の相互認証コマンド３をＩ／Ｆ部３５を介して受信部３６により受信する。
【００４２】
(ステップＳ８)
第１のデバイスＡ１１は、ホスト１０から送られてきた第１、第２、第３相互認証コマンド１，２，３に附加されて来た第１〜第３のスクランブルデータＸ、Ｙ、Ｚを用いて第１のデバイス側一致判定データＴをスクランブルして送信部３４、Ｉ／Ｆ部３５、伝送路１４を介してホスト１０に送信する。
ホスト１０は、第１のデバイスＡ１１がスクランブルして送信する第１のデバイス側一致判定データＴを、Ｉ／Ｆ部２５、受信部２６を介して受信する。
【００４３】
第１のデバイスＡ１１は、第１のデバイス側一致判定データＴが一致を示している場合は、相互認証が成立したと判断し、第１のデバイスＡ１１へのアクセスに対し所定のアクセス制限を開放する。
また、第１のデバイスＡ１１は、第１のデバイス側一致判定データＴが一致を示していない場合は相互認証が成立しなかったと判断し、第１のデバイスＡ１１へのアクセスに対する所定のアクセス制限を開放しない。
【００４４】
ホスト１０は、受信部２６で受信したスクランブルされた第１のデバイス側一致判定データＴを、認証結果判定部２７に送る。
ホスト１０は、認証結果判定部２７でホスト１０が送った第１〜第３スクランブルデータＸ、Ｙ、Ｚを用いて第１のデバイス側一致判定データＴを検出して制御部２７に送る。この判定結果に応じて、第のデバイスＡ１１と第２のデバイスＢ１２の相互認証結果を判定し、ホスト１０が第１のデバイスＡ１１及び第２のデバイスＢ１２の制限されたエリアにアクセスすることが可能になったか不可のままかを判断する。
【００４５】
前述のようにして、第１のデバイスＡ１１と第２のデバイスＢ１２との間で相互認証することにより、ホスト１０が第２のデバイスＢ１２の真偽を認証するための演算処理を行うことなく、第２のデバイスＢ１２が真のデバイスであることを確実に判定することができる。
【００４６】
これにより、専用認証エンジンを具備する場合と比較してホスト１０の開発コストの負担を軽減することができる。また、ホスト１０の制御用ＣＰＵは既に開発済とか、過去の資産を引き継いでホスト１０を使いたいユーザーの要求に応えることができる。さらに、ホスト１０が「鍵データ」を持たないので、セキュリティ上の管理の煩わしさを不要にできる。さらに、第１のデバイスＡ１１をバージョンアップすれば、ホスト１０の制御ＣＰＵには負担をかけることなく、新しいセキュリティシステムに更新することができる等、種々の利点が得られる。
【符号の説明】
【００４７】
１０  ホスト
１０ａ  メモリ
１１  第１のデバイスＡ
１１ａ  メモリ
１２  第２のデバイスＢ
１２ａ  メモリ
１３  第３のデバイスＣ
１３ａメモリ
１４  伝送路
２１  ホスト側の制御部
２２  ホスト側のメモリ
２３  ホスト側のコマンド生成部
２４  ホスト側の送信部
２５  ホスト側のＩ／Ｆ部
２６  ホスト側の受信部
２７  ホスト側の認証結果判定部
３１，４１  デバイス側の制御部
３２、４２  デバイス側のメモリ
３３、４３  デバイス側の暗号部
３４、４４  デバイス側の送信部
３５、４５  デバイス側のＩ／Ｆ部
３６、４６  デバイス側の受信部
３７、４７  デバイス側の復号部
Ｓ１〜Ｓ８  処理手順
【図１】
0005792573.tif 000002
【図２】
0005792573.tif 000003
【図３】
0005792573.tif 000004
【図４】
0005792573.tif 000005
【図５】
0005792573.tif 000006