(57)【特許請求の範囲】
【請求項１】
被認証装置からの認証要求に応じて認証処理を実行する認証装置であって、
当該認証装置と前記被認証装置間で共有される乱数テーブルであって複数個の乱数と前記乱数ごとに一意のインデックスとを対応付けた前記乱数テーブルを記憶する第１記憶手段と、
前記第１記憶手段に記憶されている前記乱数テーブルにおける所定数の前記インデックスの中の第１の前記インデックスに対応付けられている前記乱数を用いて算出される新たな乱数により、当該所定数の前記インデックスの中の第２の前記インデックスに対応付けられている前記乱数を更新する前記被認証装置から、当該所定数の前記インデックスを含む更新コマンドを受信する第１受信手段と、
前記第１受信手段により受信された前記更新コマンドに含まれる前記所定数の前記インデックスの中の第１の前記インデックスに対応付けられている前記乱数を用いて新たな乱数を算出し、当該算出した乱数により、前記乱数テーブルにおいて当該所定数の前記インデックスの中の第２の前記インデックスに対応付けられている前記乱数を更新する第１更新手段と、
前記被認証装置から認証要求を受信する第２受信手段と、
前記第２受信手段により受信された認証要求に応じて、前記第１記憶手段に記憶されている前記乱数テーブルにおける所定数の第３の前記インデックスを含むチャレンジコマンドを前記被認証装置へ送信する第１送信手段と、
前記第２受信手段により受信された認証要求に応じて、前記第１記憶手段に記憶されている前記乱数テーブルにおける前記第３の前記インデックスに対応付けられている前記乱数を用いて第１の値を算出する第１算出手段と、
前記チャレンジコマンドに含まれる前記第３の前記インデックスに対応付けられている前記乱数が用いられて算出された第２の値を含むレスポンスを当該被認証装置から受信する第３受信手段と、
前記第１算出手段により算出された前記第１の値と、前記第３受信手段により受信された前記レスポンスに含まれる前記第２の値とを用いて、認証処理を実行する認証手段と、
を備えることを特徴とする認証装置。
【請求項２】
前記認証手段は、前記認証処理において、前記第１の値と前記第２の値とが一致するか否かを判定することを特徴とする請求項１に記載の認証装置。
【請求項３】
前記認証装置は、乱数を生成する乱数生成手段を更に備え、
前記第１送信手段は、前記第３の前記インデックスと、前記乱数生成手段により生成された乱数とを含むチャレンジコマンドを前記被認証装置へ送信し、
前記第１算出手段は、前記第３の前記インデックスに対応付けられている前記乱数を用いて算出された値を暗号鍵として、前記乱数生成手段により生成された乱数を暗号化することにより前記第１の値を算出し、
前記第３受信手段は、前記チャレンジコマンドに含まれる前記第３の前記インデックスに対応付けられている前記乱数が用いられて算出された値を暗号鍵として、前記チャレンジコマンドに含まれる前記乱数が暗号化されることにより算出された前記第２の値を含むレスポンスを当該被認証装置から受信し、
前記認証手段は、前記認証処理において、前記第１の値と前記第２の値とが一致するか否かを判定することを特徴とする請求項１に記載の認証装置。
【請求項４】
前記認証装置は、乱数を生成する乱数生成手段を更に備え、
前記第１送信手段は、前記第３の前記インデックスと、前記乱数生成手段により生成された乱数とを含むチャレンジコマンドを前記被認証装置へ送信し、
前記第３受信手段は、前記チャレンジコマンドに含まれる前記第３の前記インデックスに対応付けられている前記乱数が用いられて算出された値を暗号鍵として、前記チャレンジコマンドに含まれる前記乱数が暗号化されることにより算出された前記第２の値を含むレスポンスを当該被認証装置から受信し、
前記認証手段は、前記認証処理において、前記第１の値を復号鍵として前記第２の値が復号された値と、前記乱数生成手段により生成された前記乱数とが一致するか否かを判定することを特徴とする請求項１に記載の認証装置。
【請求項５】
請求項１乃至４の何れか一項に記載の認証装置へ認証要求を送信する被認証装置であって、
当該被認証装置と前記認証装置間で共有される乱数テーブルであって複数個の乱数と前記乱数ごとに一意のインデックスとを対応付けた前記乱数テーブルを記憶する第２記憶手段と、
前記第２記憶手段に記憶されている前記乱数テーブルにおける所定数の前記インデックスを含む更新コマンドであって、当該所定数の前記インデックスの中の第１の前記インデックスに対応付けられている前記乱数を用いて算出される新たな乱数により、当該所定数の前記インデックスの中の第２の前記インデックスに対応付けられている前記乱数を更新させる更新コマンドを前記認証装置へ送信する第２送信手段と、
前記第２記憶手段に記憶されている前記乱数テーブルにおいて前記第１の前記インデックスに対応付けられている前記乱数を用いて新たな乱数を算出し、当該算出した乱数により、前記第２記憶手段に記憶されている前記乱数テーブルにおいて前記第２の前記インデックスに対応付けられている前記乱数を更新する第２更新手段と、
前記認証要求を前記認証装置へ送信する第３送信手段と、
前記認証装置から前記チャレンジコマンドを受信する第４受信手段と、
前記第４受信手段により受信された前記チャレンジコマンドに含まれる前記第３の前記インデックスに対応付けられている前記乱数を用いて前記第２の値を算出する第２算出手段と、
前記第２算出手段により算出された前記第２の値を含むレスポンスを前記認証装置へ送信する第４送信手段と、
を備えることを特徴とする被認証装置。
【請求項６】
前記第２算出手段は、前記チャレンジコマンドに含まれる前記第３の前記インデックスに対応付けられている前記乱数を用いて算出した値を暗号鍵として、前記チャレンジコマンドに含まれる前記乱数を暗号化することにより前記第２の値を算出することを特徴とする請求項５に記載の被認証装置。
【請求項７】
被認証装置からの認証要求に応じて認証処理を実行する認証装置における認証方法であって、
当該認証装置と前記被認証装置間で共有される乱数テーブルであって複数個の乱数と前記乱数ごとに一意のインデックスとを対応付けた前記乱数テーブルを第１記憶手段に記憶するステップと、
前記第１記憶手段に記憶されている前記乱数テーブルにおける所定数の前記インデックスの中の第１の前記インデックスに対応付けられている前記乱数を用いて算出される新たな乱数により、当該所定数の前記インデックスの中の第２の前記インデックスに対応付けられている前記乱数を更新する前記被認証装置から、当該所定数の前記インデックスを含む更新コマンドを受信するステップと、
前記受信された前記更新コマンドに含まれる前記所定数の前記インデックスの中の第１の前記インデックスに対応付けられている前記乱数を用いて新たな乱数を算出し、当該算出した乱数により、前記乱数テーブルにおいて当該所定数の前記インデックスの中の第２の前記インデックスに対応付けられている前記乱数を更新するステップと、
前記被認証装置から認証要求を受信するステップと、
前記受信された認証要求に応じて、前記第１記憶手段に記憶されている前記乱数テーブルにおける所定数の第３の前記インデックスを含むチャレンジコマンドを前記被認証装置へ送信するステップと、
前記受信された認証要求に応じて、前記第１記憶手段に記憶されている前記乱数テーブルにおける前記第３の前記インデックスに対応付けられている前記乱数を用いて第１の値を算出するステップと、
前記チャレンジコマンドに含まれる前記第３の前記インデックスに対応付けられている前記乱数が用いられて算出された第２の値を含むレスポンスを当該被認証装置から受信するステップと、
前記算出された前記第１の値と、前記レスポンスに含まれる前記第２の値とを用いて、認証処理を実行するステップと、
を含むことを特徴とする認証方法。
【請求項８】
請求項７に記載の認証装置へ認証要求を送信する被認証装置における被認証方法であって、
当該被認証装置と前記認証装置間で共有される乱数テーブルであって複数個の乱数と前記乱数ごとに一意のインデックスとを対応付けた前記乱数テーブルを第２記憶手段に記憶するステップと、
前記第２記憶手段に記憶されている前記乱数テーブルにおける所定数の前記インデックスを含む更新コマンドであって、当該所定数の前記インデックスの中の第１の前記インデックスに対応付けられている前記乱数を用いて算出される新たな乱数により、当該所定数の前記インデックスの中の第２の前記インデックスに対応付けられている前記乱数を更新させる更新コマンドを前記認証装置へ送信するステップと、
前記第２記憶手段に記憶されている前記乱数テーブルにおいて前記第１の前記インデックスに対応付けられている前記乱数を用いて新たな乱数を算出し、当該算出した乱数により、前記第２記憶手段に記憶されている前記乱数テーブルにおいて前記第２の前記インデックスに対応付けられている前記乱数を更新するステップと、
前記認証要求を前記認証装置へ送信するステップと、
前記認証装置から前記チャレンジコマンドを受信するステップと、
前記受信された前記チャレンジコマンドに含まれる前記第３の前記インデックスに対応付けられている前記乱数を用いて前記第２の値を算出するステップと、
前記算出された前記第２の値を含むレスポンスを前記認証装置へ送信するステップと、
を含むことを特徴とする被認証方法。
【請求項９】
被認証装置からの認証要求に応じて認証処理を実行するコンピュータに、
当該認証装置と前記被認証装置間で共有される乱数テーブルであって複数個の乱数と前記乱数ごとに一意のインデックスとを対応付けた前記乱数テーブルを第１記憶手段に記憶するステップと、
前記第１記憶手段に記憶されている前記乱数テーブルにおける所定数の前記インデックスの中の第１の前記インデックスに対応付けられている前記乱数を用いて算出される新たな乱数により、当該所定数の前記インデックスの中の第２の前記インデックスに対応付けられている前記乱数を更新する前記被認証装置から、当該所定数の前記インデックスを含む更新コマンドを受信するステップと、
前記受信された前記更新コマンドに含まれる前記所定数の前記インデックスの中の第１の前記インデックスに対応付けられている前記乱数を用いて新たな乱数を算出し、当該算出した乱数により、前記乱数テーブルにおいて当該所定数の前記インデックスの中の第２の前記インデックスに対応付けられている前記乱数を更新するステップと、
前記被認証装置から認証要求を受信するステップと、
前記受信された認証要求に応じて、前記第１記憶手段に記憶されている前記乱数テーブルにおける所定数の第３の前記インデックスを含むチャレンジコマンドを前記被認証装置へ送信するステップと、
前記受信された認証要求に応じて、前記第１記憶手段に記憶されている前記乱数テーブルにおける前記第３の前記インデックスに対応付けられている前記乱数を用いて第１の値を算出するステップと、
前記チャレンジコマンドに含まれる前記第３の前記インデックスに対応付けられている前記乱数が用いられて算出された第２の値を含むレスポンスを当該被認証装置から受信するステップと、
前記算出された前記第１の値と、前記レスポンスに含まれる前記第２の値とを用いて、認証処理を実行するステップと、
を実行させることを特徴とする認証処理プログラム。
【請求項１０】
請求項９に記載の認証装置へ認証要求を送信するコンピュータに、
当該被認証装置と前記認証装置間で共有される乱数テーブルであって複数個の乱数と前記乱数ごとに一意のインデックスとを対応付けた前記乱数テーブルを第２記憶手段に記憶するステップと、
前記第２記憶手段に記憶されている前記乱数テーブルにおける所定数の前記インデックスを含む更新コマンドであって、当該所定数の前記インデックスの中の第１の前記インデックスに対応付けられている前記乱数を用いて算出される新たな乱数により、当該所定数の前記インデックスの中の第２の前記インデックスに対応付けられている前記乱数を更新させる更新コマンドを前記認証装置へ送信するステップと、
前記第２記憶手段に記憶されている前記乱数テーブルにおいて前記第１の前記インデックスに対応付けられている前記乱数を用いて新たな乱数を算出し、当該算出した乱数により、前記第２記憶手段に記憶されている前記乱数テーブルにおいて前記第２の前記インデックスに対応付けられている前記乱数を更新するステップと、
前記認証要求を前記認証装置へ送信するステップと、
前記認証装置から前記チャレンジコマンドを受信するステップと、
前記受信された前記チャレンジコマンドに含まれる前記第３の前記インデックスに対応付けられている前記乱数を用いて前記第２の値を算出するステップと、
前記算出された前記第２の値を含むレスポンスを前記認証装置へ送信するステップと、
を実行させることを特徴とする被認証処理プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、チャレンジ−レスポンス方式による機器間の認証方式等の技術分野に関する。
【背景技術】
【０００２】
一般的なチャレンジ−レスポンス方式による認証では、例えば特許文献１に開示されるように、認証者（例えばサーバ）は、被認証者（例えば端末）からの認証要求に応じて、乱数Ｒを生成し、当該乱数Ｒをチャレンジとして被認証者に送信し、さらに、当該乱数Ｒを、鍵記憶部に記憶している暗号鍵（秘密鍵）Ｋを用いて暗号化して暗号データを算出する。一方、被認証者は、認証者からチャレンジを受信すると、チャレンジに含まれる乱数Ｒを、鍵記憶部に記憶している暗号鍵Ｋにより暗号化して、これをレスポンスとして認証者に送信する。そして、認証者は、算出した暗号データと、端末から受信したレスポンスに含まれる暗号データとを比較して、一致する場合に被認証者が正規の証明者であると認証する。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２００３−３１８８９４号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
しかしながら、認証者と被認証者との間で認証の際にやりとりされるチャレンジとレスポンスの対を、攻撃者が傍受して蓄積しておくことで、チャレンジとして用いる乱数の長さが短い場合には攻撃者が被認証者に成りすますことに成功する可能性があるという問題があった。例えば、攻撃者は、被認証者に成りすまして認証者に認証要求を行う。そして、認証者から送られてきたチャレンジが、上述したように蓄積された中にあれば、攻撃者は、当該チャレンジに対応付けられたレスポンスを特定できるので、認証に成功してしまう。被認証者が認証用の暗号鍵を長期間にわたって使い続けることにより、攻撃者の蓄積量が増加し、成りすましを許してしまう危険性が高まる。また、認証者から送られてきたチャレンジが、上述したように蓄積された中になくても、チャレンジをレスポンスに変換する規則が容易である（例えば、暗号鍵長が短い）場合には、蓄積されたチャレンジを解析することで、認証者から送られてきたチャレンジに対応するレスポンスが推定される可能性もある。
【０００５】
そこで、本発明は、上記点に鑑みてなされたものであり、攻撃者がチャレンジとレスポンスの対を蓄積したとしても、成りすまし等に対する安全性を向上させることが可能な認証装置、被認証装置、認証方法、被認証方法、認証処理プログラム、及び被認証処理プログラムを提供することを目的とする。
【課題を解決するための手段】
【０００６】
上記課題を解決するために、請求項１に記載の発明は、被認証装置からの認証要求に応じて認証処理を実行する認証装置であって、当該認証装置と前記被認証装置間で共有される乱数テーブルであって複数個の乱数と前記乱数ごとに一意のインデックスとを対応付けた前記乱数テーブルを記憶する第１記憶手段と、前記第１記憶手段に記憶されている前記乱数テーブルにおける所定数の前記インデックスの中の第１の前記インデックスに対応付けられている前記乱数を用いて算出される新たな乱数により、当該所定数の前記インデックスの中の第２の前記インデックスに対応付けられている前記乱数を更新する前記被認証装置から、当該所定数の前記インデックスを含む更新コマンドを受信する第１受信手段と、前記第１受信手段により受信された前記更新コマンドに含まれる前記所定数の前記インデックスの中の第１の前記インデックスに対応付けられている前記乱数を用いて新たな乱数を算出し、当該算出した乱数により、前記乱数テーブルにおいて当該所定数の前記インデックスの中の第２の前記インデックスに対応付けられている前記乱数を更新する第１更新手段と、前記被認証装置から認証要求を受信する第２受信手段と、前記第２受信手段により受信された認証要求に応じて、前記第１記憶手段に記憶されている前記乱数テーブルにおける所定数の第３の前記インデックスを含むチャレンジコマンドを前記被認証装置へ送信する第１送信手段と、前記第２受信手段により受信された認証要求に応じて、前記第１記憶手段に記憶されている前記乱数テーブルにおける前記第３の前記インデックスに対応付けられている前記乱数を用いて第１の値を算出する第１算出手段と、前記チャレンジコマンドに含まれる前記第３の前記インデックスに対応付けられている前記乱数が用いられて算出された第２の値を含むレスポンスを当該被認証装置から受信する第３受信手段と、前記第１算出手段により算出された前記第１の値と、前記第３受信手段により受信された前記レスポンスに含まれる前記第２の値とを用いて、認証処理を実行する認証手段と、を備えることを特徴とする。
【０００７】
請求項２に記載の発明は、請求項１に記載の認証装置において、前記認証手段は、前記認証処理において、前記第１の値と前記第２の値とが一致するか否かを判定することを特徴とする。
【０００８】
請求項３に記載の発明は、請求項１に記載の認証装置において、前記認証装置は、乱数を生成する乱数生成手段を更に備え、前記第１送信手段は、前記第３の前記インデックスと、前記乱数生成手段により生成された乱数とを含むチャレンジコマンドを前記被認証装置へ送信し、前記第１算出手段は、前記第３の前記インデックスに対応付けられている前記乱数を用いて算出された値を暗号鍵として、前記乱数生成手段により生成された乱数を暗号化することにより前記第１の値を算出し、前記第３受信手段は、前記チャレンジコマンドに含まれる前記第３の前記インデックスに対応付けられている前記乱数が用いられて算出された値を暗号鍵として、前記チャレンジコマンドに含まれる前記乱数が暗号化されることにより算出された前記第２の値を含むレスポンスを当該被認証装置から受信し、前記認証手段は、前記認証処理において、前記第１の値と前記第２の値とが一致するか否かを判定することを特徴とする。
【０００９】
請求項４に記載の発明は、請求項１に記載の認証装置において、前記認証装置は、乱数を生成する乱数生成手段を更に備え、前記第１送信手段は、前記第３の前記インデックスと、前記乱数生成手段により生成された乱数とを含むチャレンジコマンドを前記被認証装置へ送信し、前記第３受信手段は、前記チャレンジコマンドに含まれる前記第３の前記インデックスに対応付けられている前記乱数が用いられて算出された値を暗号鍵として、前記チャレンジコマンドに含まれる前記乱数が暗号化されることにより算出された前記第２の値を含むレスポンスを当該被認証装置から受信し、前記認証手段は、前記認証処理において、前記第１の値を復号鍵として前記第２の値が復号された値と、前記乱数生成手段により生成された前記乱数とが一致するか否かを判定することを特徴とする。
【００１０】
請求項５に記載の発明は、請求項１乃至４の何れか一項に記載の認証装置へ認証要求を送信する被認証装置であって、当該被認証装置と前記認証装置間で共有される乱数テーブルであって複数個の乱数と前記乱数ごとに一意のインデックスとを対応付けた前記乱数テーブルを記憶する第２記憶手段と、前記第２記憶手段に記憶されている前記乱数テーブルにおける所定数の前記インデックスを含む更新コマンドであって、当該所定数の前記インデックスの中の第１の前記インデックスに対応付けられている前記乱数を用いて算出される新たな乱数により、当該所定数の前記インデックスの中の第２の前記インデックスに対応付けられている前記乱数を更新させる更新コマンドを前記認証装置へ送信する第２送信手段と、前記第２記憶手段に記憶されている前記乱数テーブルにおいて前記第１の前記インデックスに対応付けられている前記乱数を用いて新たな乱数を算出し、当該算出した乱数により、前記第２記憶手段に記憶されている前記乱数テーブルにおいて前記第２の前記インデックスに対応付けられている前記乱数を更新する第２更新手段と、前記認証要求を前記認証装置へ送信する第３送信手段と、前記認証装置から前記チャレンジコマンドを受信する第４受信手段と、前記第４受信手段により受信された前記チャレンジコマンドに含まれる前記第３の前記インデックスに対応付けられている前記乱数を用いて前記第２の値を算出する第２算出手段と、前記第２算出手段により算出された前記第２の値を含むレスポンスを前記認証装置へ送信する第４送信手段と、を備えることを特徴とする。
【００１１】
請求項６に記載の発明は、請求項５に記載の被認証装置において、前記第２算出手段は、前記チャレンジコマンドに含まれる前記第３の前記インデックスに対応付けられている前記乱数を用いて算出した値を暗号鍵として、前記チャレンジコマンドに含まれる前記乱数を暗号化することにより前記第２の値を算出することを特徴とする。
【００１２】
請求項７に記載の発明は、被認証装置からの認証要求に応じて認証処理を実行する認証装置における認証方法であって、当該認証装置と前記被認証装置間で共有される乱数テーブルであって複数個の乱数と前記乱数ごとに一意のインデックスとを対応付けた前記乱数テーブルを第１記憶手段に記憶するステップと、前記第１記憶手段に記憶されている前記乱数テーブルにおける所定数の前記インデックスの中の第１の前記インデックスに対応付けられている前記乱数を用いて算出される新たな乱数により、当該所定数の前記インデックスの中の第２の前記インデックスに対応付けられている前記乱数を更新する前記被認証装置から、当該所定数の前記インデックスを含む更新コマンドを受信するステップと、前記受信された前記更新コマンドに含まれる前記所定数の前記インデックスの中の第１の前記インデックスに対応付けられている前記乱数を用いて新たな乱数を算出し、当該算出した乱数により、前記乱数テーブルにおいて当該所定数の前記インデックスの中の第２の前記インデックスに対応付けられている前記乱数を更新するステップと、前記被認証装置から認証要求を受信するステップと、前記受信された認証要求に応じて、前記第１記憶手段に記憶されている前記乱数テーブルにおける所定数の第３の前記インデックスを含むチャレンジコマンドを前記被認証装置へ送信するステップと、前記受信された認証要求に応じて、前記第１記憶手段に記憶されている前記乱数テーブルにおける前記第３の前記インデックスに対応付けられている前記乱数を用いて第１の値を算出するステップと、前記チャレンジコマンドに含まれる前記第３の前記インデックスに対応付けられている前記乱数が用いられて算出された第２の値を含むレスポンスを当該被認証装置から受信するステップと、前記算出された前記第１の値と、前記レスポンスに含まれる前記第２の値とを用いて、認証処理を実行するステップと、を含むことを特徴とする。
【００１３】
請求項８に記載の発明は、請求項７に記載の認証装置へ認証要求を送信する被認証装置における被認証方法であって、当該被認証装置と前記認証装置間で共有される乱数テーブルであって複数個の乱数と前記乱数ごとに一意のインデックスとを対応付けた前記乱数テーブルを第２記憶手段に記憶するステップと、前記第２記憶手段に記憶されている前記乱数テーブルにおける所定数の前記インデックスを含む更新コマンドであって、当該所定数の前記インデックスの中の第１の前記インデックスに対応付けられている前記乱数を用いて算出される新たな乱数により、当該所定数の前記インデックスの中の第２の前記インデックスに対応付けられている前記乱数を更新させる更新コマンドを前記認証装置へ送信するステップと、前記第２記憶手段に記憶されている前記乱数テーブルにおいて前記第１の前記インデックスに対応付けられている前記乱数を用いて新たな乱数を算出し、当該算出した乱数により、前記第２記憶手段に記憶されている前記乱数テーブルにおいて前記第２の前記インデックスに対応付けられている前記乱数を更新するステップと、前記認証要求を前記認証装置へ送信するステップと、前記認証装置から前記チャレンジコマンドを受信するステップと、前記受信された前記チャレンジコマンドに含まれる前記第３の前記インデックスに対応付けられている前記乱数を用いて前記第２の値を算出するステップと、前記算出された前記第２の値を含むレスポンスを前記認証装置へ送信するステップと、を含むことを特徴とする。
【００１４】
請求項９に記載の発明は、被認証装置からの認証要求に応じて認証処理を実行するコンピュータに、当該認証装置と前記被認証装置間で共有される乱数テーブルであって複数個の乱数と前記乱数ごとに一意のインデックスとを対応付けた前記乱数テーブルを第１記憶手段に記憶するステップと、前記第１記憶手段に記憶されている前記乱数テーブルにおける所定数の前記インデックスの中の第１の前記インデックスに対応付けられている前記乱数を用いて算出される新たな乱数により、当該所定数の前記インデックスの中の第２の前記インデックスに対応付けられている前記乱数を更新する前記被認証装置から、当該所定数の前記インデックスを含む更新コマンドを受信するステップと、前記受信された前記更新コマンドに含まれる前記所定数の前記インデックスの中の第１の前記インデックスに対応付けられている前記乱数を用いて新たな乱数を算出し、当該算出した乱数により、前記乱数テーブルにおいて当該所定数の前記インデックスの中の第２の前記インデックスに対応付けられている前記乱数を更新するステップと、前記被認証装置から認証要求を受信するステップと、前記受信された認証要求に応じて、前記第１記憶手段に記憶されている前記乱数テーブルにおける所定数の第３の前記インデックスを含むチャレンジコマンドを前記被認証装置へ送信するステップと、前記受信された認証要求に応じて、前記第１記憶手段に記憶されている前記乱数テーブルにおける前記第３の前記インデックスに対応付けられている前記乱数を用いて第１の値を算出するステップと、前記チャレンジコマンドに含まれる前記第３の前記インデックスに対応付けられている前記乱数が用いられて算出された第２の値を含むレスポンスを当該被認証装置から受信するステップと、前記算出された前記第１の値と、前記レスポンスに含まれる前記第２の値とを用いて、認証処理を実行するステップと、を実行させることを特徴とする。
【００１５】
請求項１０に記載の発明は、請求項９に記載の認証装置へ認証要求を送信するコンピュータに、当該被認証装置と前記認証装置間で共有される乱数テーブルであって複数個の乱数と前記乱数ごとに一意のインデックスとを対応付けた前記乱数テーブルを第２記憶手段に記憶するステップと、前記第２記憶手段に記憶されている前記乱数テーブルにおける所定数の前記インデックスを含む更新コマンドであって、当該所定数の前記インデックスの中の第１の前記インデックスに対応付けられている前記乱数を用いて算出される新たな乱数により、当該所定数の前記インデックスの中の第２の前記インデックスに対応付けられている前記乱数を更新させる更新コマンドを前記認証装置へ送信するステップと、前記第２記憶手段に記憶されている前記乱数テーブルにおいて前記第１の前記インデックスに対応付けられている前記乱数を用いて新たな乱数を算出し、当該算出した乱数により、前記第２記憶手段に記憶されている前記乱数テーブルにおいて前記第２の前記インデックスに対応付けられている前記乱数を更新するステップと、前記認証要求を前記認証装置へ送信するステップと、前記認証装置から前記チャレンジコマンドを受信するステップと、前記受信された前記チャレンジコマンドに含まれる前記第３の前記インデックスに対応付けられている前記乱数を用いて前記第２の値を算出するステップと、前記算出された前記第２の値を含むレスポンスを前記認証装置へ送信するステップと、を実行させることを特徴とする。
【発明の効果】
【００１６】
本発明によれば、同一のチャレンジに対するレスポンスを異ならせることができ、攻撃者がチャレンジとレスポンスの対を蓄積したとしても、当該蓄積された情報に基づきチャレンジに対応するレスポンスが特定されることを防ぐことができ、成りすまし等に対する安全性を向上させることができる。
【図面の簡単な説明】
【００１７】
【図１】（Ａ）は、データ通信システムＳの概要構成例を示す図であり、（Ｂ）は、通信装置Ｔｎの概要構成例を示す図である。
【図２】乱数テーブルの一例を示す図である。
【図３】通信装置Ｔ１と通信装置Ｔ２とで行われる乱数テーブル更新処理の一例を示すシーケンス図である。
【図４】実施例１において、通信装置Ｔ１と通信装置Ｔ２とで行われるチャレンジ／レスポンス処理の一例を示すシーケンス図である。
【図５】実施例２において、通信装置Ｔ１と通信装置Ｔ２とで行われるチャレンジ／レスポンス処理の一例を示すシーケンス図である。
【図６】実施例３において、通信装置Ｔ１と通信装置Ｔ２とで行われるチャレンジ／レスポンス処理の一例を示すシーケンス図である。
【発明を実施するための形態】
【００１８】
以下、図面を参照して本発明の実施形態について詳細に説明する。なお、以下に説明する実施形態は、データ通信システムに対して本発明を適用した場合の実施形態である。
【００１９】
先ず、図１を参照して、データ通信システムＳの概要構成及び機能について説明する。図１（Ａ）は、データ通信システムＳの概要構成例を示す図であり、図１（Ｂ）は、通信装置Ｔｎの概要構成例を示す図である。
【００２０】
図１（Ａ）に示すように、データ通信システムＳは、複数の通信装置（エンティティ）Ｔｎ（ｎ＝１，２，３・・・ｋ）を備えて構成されている。このようなデータ通信システムＳでは、通信ネットワークＮＷを介して、通信装置Ｔｎ間でＭ２Ｍ（Machine to Machine）の通信が可能になっている。通信装置Ｔｎの例としては、サーバ、パーソナルコンピュータ、携帯電話機、スマートフォン等の携帯端末、ＩＣカード、センサー機器、アクチュエーター機器、ゲーム機等が挙げられる。センサー機器は、例えば、温度、湿度、照度、振動、電力、または歪み等のセンサーを搭載した通信機器である。アクチュエーター機器は、表示板、照明、ブザー、またはリレー等を搭載した通信機器である。通信ネットワークＮＷには、例えば、Bluetooth（登録商標）、UWB（ultra wideband）、PAN（personal area network）、インターネット、IoT（Internet of Things）、センサーネットワーク、移動体通信網等が該当する。通信ネットワークＮＷは、例えば、各場所で複数の通信方式を組み合わせて構成されてもよい。例えば、サーバと携帯電話機とは、インターネット、ゲートウエイ、及び移動体通信網を介して通信を行う。また、例えば、センサー機器とアクチュエーター機器とは、PANを介して近距離無線通信を行う。
【００２１】
図１（Ｂ）に示すように、通信装置Ｔｎは、ＣＰＵ（Central Processing Unit）１０、コプロセッサ１１、記憶部１２、センサー部１３、Ｉ／Ｆ部１４、及び通信部１５等を備えて構成される。なお、全ての通信装置Ｔｎの構成が同一である必要はなく、異なっていてもよい。例えば、通信装置Ｔ１にはセンサー部１３がある構成とし、通信装置Ｔ２にはセンサー部１３がない構成としてもよい。以下の実施形態においては、通信装置Ｔ１を被認証装置（例えば、携帯端末）とし、通信装置Ｔ２を認証装置（例えば、サーバ）として説明する。
【００２２】
ＣＰＵ１０は、本発明におけるコンピュータの一例である。コプロセッサ１１は、暗号鍵（復号鍵）を用いて暗号化処理及び復号処理を実行する。センサー部１３は、例えば、温度、湿度、照度、振動、電力、または歪み等のセンサーを備える。Ｉ／Ｆ部１４は、通信装置Ｔｎの周辺機器と接続するためのインターフェースである。通信部１５は、ＣＰＵ１０の制御の下、通信ネットワークＮＷを介して通信相手と通信を行うためのものである。通信装置Ｔ２の記憶部１２は、第１記憶手段の一例であり、通信装置Ｔ１の記憶部１２は、第２記憶手段の一例である。記憶部１２は、ＲＯＭ（Read Only Memory）、ＲＡＭ（Random Access Memory）、不揮発性メモリ（例えば、フラッシュメモリ）等を備える。なお、記憶部１２は、不揮発性メモリの代わりに、ＨＤＤ（Hard Disk Drive）、またはＳＳＤ（Solid State Drive）を備える場合もある。
【００２３】
記憶部１２には、ＣＰＵ１０、及びコプロセッサ１１に実行させるプログラム、及び各種データが記憶されている。通信装置Ｔ２の記憶部１２に記憶されるプログラムには、ＣＰＵ１０に実行させる認証処理プログラムが含まれる。通信装置Ｔ１の記憶部１２に記憶されるプログラムには、ＣＰＵ１０に実行させる被認証処理プログラムが含まれる。また、通信装置Ｔ１及び通信装置Ｔ２の記憶部１２に記憶されるプログラムには、コプロセッサ１１に実行させる暗号化処理を規定する暗号化処理プログラム、及びコプロセッサ１１に実行させる復号処理を規定する復号処理プログラムが含まれる。また、通信装置Ｔ１及び通信装置Ｔ２の記憶部１２には、セキュアな記憶領域が設けられており、この記憶領域には、乱数テーブルが記憶される。乱数テーブルは、複数個の乱数と乱数ごとに一意のインデックス（例えば、自然数）とを対応付けたテーブルである。乱数テーブルは、通信装置Ｔ１及び通信装置Ｔ２との間で共有されるべきものである。
【００２４】
図２は、乱数テーブルの一例を示す図である。図２の例では、乱数（乱数値）をＲｎ等の文字で表現しているが、実際には、乱数は、例えば、ＣＰＵ１０上の数値表現（０と１）からなる１２８ビットの値である。乱数テーブルは、例えば通信装置Ｔｎの製造時に予め記憶部１２に記憶される。この構成では、乱数自体が、通信ネットワークＮＷを介して通信装置Ｔｎ間でやり取りされないので、セキュリティを向上させることができる。
【００２５】
或いは、乱数テーブルは、例えば通信装置Ｔｎの製造時に記憶部１２に記憶させず、通信装置Ｔｎの出荷後、互いに通信を行う通信装置Ｔ１と通信装置Ｔ２とがそれぞれで生成した乱数及びインデックスを通信相手に送信することで、乱数テーブルを生成するように構成してもよい。例えば、通信装置Ｔ１と通信装置Ｔ２とが通信を行う場合、初めに、通信装置Ｔ１と通信装置Ｔ２とは、それぞれ、空の乱数テーブルを記憶部１２に生成する。そして、先ず、通信装置Ｔ１は、乱数生成器により乱数Ｒ1を生成し、生成した乱数Ｒ1とインデックス1とを対応付けて通信装置Ｔ２へ送信し、且つ、生成した乱数Ｒ1とインデックス1とを対応付けて乱数テーブルに登録する。次に、通信装置Ｔ２は、通信装置Ｔ１から受信した乱数Ｒ1とインデックス1とを対応付けて乱数テーブルに登録する。そして、通信装置Ｔ２は、乱数生成器により乱数Ｒ2を生成し、生成した乱数Ｒ2とインデックス2とを対応付けて通信装置Ｔ１へ送信し、且つ、生成した乱数Ｒ2とインデックス2とを対応付けて乱数テーブルに登録する。次に、通信装置Ｔ１は、通信装置Ｔ２から受信した乱数Ｒ2とインデックス2とを対応付けて乱数テーブルに登録する。このような処理が繰り返し交互に行われる（インデックス3〜nまで）ことで、図２に示すような乱数テーブルが完成する。この構成では、通信装置Ｔ１と通信装置Ｔ２との間で固有の乱数テーブル（つまり、実際に通信を行う認証装置と被認証装置間で固有の乱数テーブル）を生成することができる。
【００２６】
そして、通信装置Ｔ１のＣＰＵ１０は、本発明の被認証処理プログラムに従って、乱数テーブル更新処理、及びチャレンジ／レスポンス処理を実行する。通信装置Ｔ１のＣＰＵ１０は、乱数テーブル更新処理において、第２送信手段、及び第２更新手段等として機能する。一方、通信装置Ｔ２のＣＰＵ１０は、本発明の認証処理プログラムに従って、乱数テーブル更新処理、及びチャレンジ／レスポンス処理を実行する。通信装置Ｔ２のＣＰＵ１０は、乱数テーブル更新処理において、第１受信手段、及び第１更新手段等として機能する。具体的には、例えば、通信装置Ｔ１のＣＰＵ１０は、乱数テーブル更新処理において、記憶部１２に記憶されている乱数テーブルにおける所定数（例えば、２個以上の任意個）のインデックスを含む乱数テーブル更新コマンド（更新コマンドの一例）を通信装置Ｔ２へ送信する。この乱数テーブル更新コマンドは、上記所定数のインデックスの中の第１のインデックスに対応付けられている乱数を用いて算出される新たな乱数により、当該所定数のインデックスの中の第２のインデックスに対応付けられている乱数を更新させるコマンドである。また、通信装置Ｔ１のＣＰＵ１０は、乱数テーブル更新処理において、記憶部１２に記憶されている乱数テーブルにおいて第１のインデックスに対応付けられている乱数を用いて新たな乱数を算出し、当該算出した乱数により、記憶部１２に記憶されている乱数テーブルにおいて第２のインデックスに対応付けられている乱数を更新する。一方、例えば、通信装置Ｔ２のＣＰＵ１０は、乱数テーブル更新処理において、通信装置Ｔ１から受信された乱数テーブル更新コマンドに含まれる上記所定数のインデックスの中の第１のインデックスに対応付けられている乱数を用いて新たな乱数を算出し、当該算出した乱数により、記憶部１２に記憶されている乱数テーブルにおいて当該所定数のインデックスの中の第２のインデックスに対応付けられている乱数を更新する。これにより、通信装置Ｔ１と通信装置Ｔ２との間で、乱数テーブルの共有化が行われる。
【００２７】
また、通信装置Ｔ１のＣＰＵ１０は、チャレンジ／レスポンス処理において、第３送信手段、第４受信手段、第２算出手段、及び第４送信手段等として機能する。一方、通信装置Ｔ２のＣＰＵ１０は、チャレンジ／レスポンス処理において、第１送信手段、第１算出手段、第２受信手段、第３受信手段、認証手段、及び乱数生成手段等として機能する。具体的には、例えば、通信装置Ｔ１のＣＰＵ１０は、チャレンジ／レスポンス処理において、認証要求（例えば、ログインコマンド等）を通信装置Ｔ２へ送信する。一方、例えば、通信装置Ｔ２のＣＰＵ１０は、チャレンジ／レスポンス処理において、通信装置Ｔ１から受信された認証要求に応じて、記憶部１２に記憶されている乱数テーブルにおける所定数（例えば、１個以上の任意個）の第３のインデックスを含むチャレンジコマンドを通信装置Ｔ２へ送信する。また、通信装置Ｔ２のＣＰＵ１０は、通信装置Ｔ１から受信された認証要求に応じて、記憶部１２に記憶されている乱数テーブルにおける上記第３のインデックスに対応付けられている乱数を用いてチャレンジ値（第１の値の一例）を算出する。一方、通信装置Ｔ１のＣＰＵ１０は、通信装置Ｔ２から受信されたチャレンジコマンドに含まれる上記第３のインデックスに対応付けられている乱数を用いてレスポンス値（第２の値の一例）を算出する。そして、通信装置Ｔ１のＣＰＵ１０は、算出したレスポンス値を含むレスポンスを通信装置Ｔ２へ送信する。一方、通信装置Ｔ２のＣＰＵ１０は、通信装置Ｔ２から受信されたレスポンスに含まれるレスポンス値と、上記算出されたチャレンジ値とを用いて、認証処理を実行する。この認証処理において、例えば、レスポンス値とチャレンジ値とが一致するか否かが判定され、一致する場合には認証成功となり、一致しない場合には認証失敗となる。
【００２８】
次に、データ通信システムＳの動作について、実施例１〜実施例３に分けて説明する。なお、以下の動作の前提として、通信装置Ｔ１（被認証装置）と通信装置Ｔ２（認証装置）には、同一の乱数テーブルが記憶されているものとする。
（実施例１）
【００２９】
先ず、図３及び図４を参照して、実施例１について説明する。図３は、通信装置Ｔ１と通信装置Ｔ２とで行われる乱数テーブル更新処理の一例を示すシーケンス図である。図４は、実施例１において、通信装置Ｔ１と通信装置Ｔ２とで行われるチャレンジ／レスポンス処理の一例を示すシーケンス図である。
【００３０】
図３に示す例では、通信装置Ｔ１から乱数テーブル更新処理が開始される。なお、乱数テーブル更新処理は、例えば、定期的（例えば、３日間隔）、または不定期（例えば、通信装置Ｔ１の電源オンのタイミング）に実行される。
【００３１】
乱数テーブル更新処理が開始されると、通信装置Ｔ１のＣＰＵ１０は、乱数テーブル更新コマンドＲUpdate(n,k,l)を生成する（ステップＳ１）。ここで、n,k,lは、通信装置Ｔ２へ渡す引数であり、記憶部１２に記憶されている乱数テーブルにおける所定数のインデックスに相当する。また、この例では、“n”は、上述した第２のインデックスに相当し、“k”及び“l”は、第１のインデックスに相当する。なお、ＲUpdateの引数として決定される第１のインデックスは、３個以上であってもよい。また、n,k,lは、例えば、乱数により任意に決定（例えば、n=1,k=2,l=4、或いは、n=4,k=1,l=2のように決定）される。或いは、n,k,lは、登録順に決定されてもよい。
【００３２】
次いで、通信装置Ｔ１のＣＰＵ１０は、ステップＳ１で生成した乱数テーブル更新コマンドＲUpdate(n,k,l)を、通信部１５及び通信ネットワークＮＷを介して、通信装置Ｔ２へ送信する（ステップＳ２）。次いで、通信装置Ｔ１のＣＰＵ１０は、インデックスkに対応付けられている乱数Ｒkと、インデックスlに対応付けられている乱数Ｒlとを用いて、インデックスnに対応付けるための新たな乱数Ｒnを算出する（ステップＳ３）。新たな乱数Ｒnは、例えば、下記（１）式により算出される。
【００３３】
Ｒn :＝ Ｒk xor Ｒl・・・（１）
【００３４】
ここで、“xor”は、排他的論理和を表す。また、“（左辺）:＝（右辺）”は、右辺の計算結果を左辺に代入することを表す。つまり、上記（１）式では、ＲkとＲlとの排他的論理和がＲnになる。なお、新たな乱数Ｒnを、他の算出方法で算出してもよい。例えば、生成される乱数を固定長（例えば、１２８ビット）としておき、Ｒk とＲlとを乗算した結果の上位１２８ビットを、新たな乱数Ｒnとしてもよい。
【００３５】
次いで、通信装置Ｔ１のＣＰＵ１０は、ステップＳ３で算出した新たな乱数Ｒnにより、通信装置Ｔ１の記憶部１２に記憶されている乱数テーブルにおいてインデックスnに対応付けられている乱数Ｒnを更新（変更）する（ステップＳ４）。
【００３６】
一方、通信装置Ｔ２のＣＰＵ１０は、通信装置Ｔ１から送信された乱数テーブル更新コマンドＲUpdate(n,k,l)を受信すると、乱数テーブル更新コマンドＲUpdate(n,k,l)が示すインデックスkに対応付けられている乱数Ｒkと、インデックスlに対応付けられている乱数Ｒlとを用いて、通信装置Ｔ１と同一の算出方法（例えば、上記（１）式）により、インデックスnに対応付けるための新たな乱数Ｒnを算出する（ステップＳ１１）。
【００３７】
次いで、通信装置Ｔ２のＣＰＵ１０は、ステップＳ１１で算出した新たな乱数Ｒnにより、通信装置Ｔ２の記憶部１２に記憶されている乱数テーブルにおいてインデックスnに対応付けられている乱数Ｒnを更新（変更）する（ステップＳ１２）。
【００３８】
次いで、通信装置Ｔ２のＣＰＵ１０は、更新完了メッセージを、通信部１５及び通信ネットワークＮＷを介して、通信装置Ｔ１へ送信する（ステップＳ１３）。一方、通信装置Ｔ１のＣＰＵ１０は、通信装置Ｔ２から送信された更新完了メッセージを受信すると、確認回答メッセージを通信装置Ｔ２へ返信する（ステップＳ５）。
【００３９】
次に、図４に示す例では、通信装置Ｔ１からチャレンジ／レスポンス処理が開始される。チャレンジ／レスポンス処理は、例えば、通信装置Ｔ１のユーザである被認証者からの例えばログイン指示に応じて開始される。
【００４０】
チャレンジ／レスポンス処理が開始されると、通信装置Ｔ１のＣＰＵ１０は、認証要求（例えば、ログインコマンド等）を、通信部１５及び通信ネットワークＮＷを介して、通信装置Ｔ２へ送信する（ステップＳ２１）。
【００４１】
一方、通信装置Ｔ２のＣＰＵ１０は、通信装置Ｔ１から送信された認証要求を受信すると、記憶部１２に記憶されている乱数テーブルにおける所定数の第３のインデックスを含むチャレンジコマンドChallenge(k,-l,m)を生成する（ステップＳ３１）。ここで、k,-l,mは、通信装置Ｔ１へ渡す引数であり、記憶部１２に記憶されている乱数テーブルにおける第３のインデックスに相当する。また、“-l”における“-”は、暗号鍵の安全性を向上させるために否定演算子を用いることを示す。“-l”に代えて“l”であってもよい。なお、Challengeにおける引数として決定されるインデックスは、３個以上であってもよい。また、k,l,mは、例えば、乱数により任意に決定されるか、或いは登録順に決定される。
【００４２】
次いで、通信装置Ｔ２のＣＰＵ１０は、ステップＳ３１で生成したチャレンジコマンドChallenge(k,-l,m)を、通信部１５及び通信ネットワークＮＷを介して、通信装置Ｔ１へ送信する（ステップＳ３２）。
【００４３】
次いで、通信装置Ｔ２のＣＰＵ１０は、インデックスkに対応付けられている乱数Ｒkと、インデックスlに対応付けられている乱数Ｒl（“l”に“-”が付加されているので、¬Ｒlが用いられる）と、インデックスmに対応付けられている乱数Ｒmとを用いてチャレンジ値Ｖを算出する（ステップＳ３３）。チャレンジ値Ｖは、例えば、下記（２）式により算出される。
【００４４】
Ｖ :＝ Ｒk xor ¬Ｒl xor Ｒm・・・（２）
【００４５】
ここで、“¬”は、否定演算子を表す。すなわち、¬Ｒlは、ＣＰＵ１０上の数値表現では全ビットの反転を意味する。上記（２）式では、Ｒkと¬ＲlとＲmとの排他的論理和がＶになる。なお、チャレンジ値Ｖを、他の算出方法で算出してもよい。例えば、生成される乱数を固定長としておき、Ｒkと¬ＲlとＲmとを乗算した結果の上位固定長ビットを、チャレンジ値Ｖとしてもよい。
【００４６】
一方、通信装置Ｔ１のＣＰＵ１０は、通信装置Ｔ２から送信されたチャレンジコマンドChallenge(k,-l,m)を受信すると、チャレンジコマンドChallenge(k,-l,m)が示すインデックスkに対応付けられている乱数Ｒkと、インデックスlに対応付けられている乱数Ｒlの反転値¬Ｒlと、インデックスmに対応付けられている乱数Ｒmとを用いて、通信装置Ｔ２と同一の算出方法（例えば、上記（２）式）により、レスポンス値Ｒｅｓを算出する（ステップＳ２２）。
【００４７】
次いで、通信装置Ｔ１のＣＰＵ１０は、ステップＳ２２で算出したレスポンス値Ｒｅｓを含むレスポンスを、通信部１５及び通信ネットワークＮＷを介して、通信装置Ｔ２へ送信する（ステップＳ２３）。
【００４８】
一方、通信装置Ｔ２のＣＰＵ１０は、通信装置Ｔ１から送信されたレスポンスを受信すると、当該レスポンスに含まれるレスポンス値Ｒｅｓと、ステップＳ３３で算出されたチャレンジ値Ｖとを用いて、認証処理を実行する。この認証処理において、通信装置Ｔ２のＣＰＵ１０は、チャレンジ値Ｖとレスポンス値Ｒｅｓとが一致するか否かを判定する（ステップＳ３４）。チャレンジ値Ｖとレスポンス値Ｒｅｓとが一致する場合（ステップＳ３４：ＹＥＳ）、通信装置Ｔ２のＣＰＵ１０は、認証成功と判定する（ステップＳ３５）。一方、チャレンジ値Ｖとレスポンス値Ｒｅｓとが一致しない場合（ステップＳ３４：ＮＯ）、通信装置Ｔ２のＣＰＵ１０は、認証失敗と判定する（ステップＳ３６）。そして、通信装置Ｔ２のＣＰＵ１０は、認証成功または認証失敗を示す認証結果メッセージを、通信部１５及び通信ネットワークＮＷを介して、通信装置Ｔ１へ送信する（ステップＳ３７）。
【００４９】
以上説明したように、実施例１によれば、通信装置Ｔ１と通信装置Ｔ２とに同一の乱数テーブルを記憶させておき、当該乱数テーブルをインデックスの送受信だけで適時安全に更新し、しかも、チャレンジ値の受け渡しはインデックスにより行うように構成したので、同一のチャレンジ（つまり、インデックス）に対するレスポンス値を異ならせることができ、攻撃者がチャレンジとレスポンス値の対を蓄積したとしても、当該蓄積された情報に基づきチャレンジに対応するレスポンス値が特定されることを防ぐことができ、成りすまし等に対する安全性を向上させることができる。また、過去の認証処理において利用されたものと同じチャレンジが再利用される場合であっても、成りすまし方法に対する安全性を向上させることが可能となる。
【００５０】
（実施例２）
次に、図５を参照して、実施例２について説明する。図５は、実施例２において、通信装置Ｔ１と通信装置Ｔ２とで行われるチャレンジ／レスポンス処理の一例を示すシーケンス図である。なお、実施例２における乱数テーブル更新処理は、実施例１と同様であり、図３に示すように行われる。
【００５１】
図５に示す例では、実施例１と同様、通信装置Ｔ１からチャレンジ／レスポンス処理が開始される。なお、チャレンジ／レスポンス処理は、実施例１と同様、例えば、通信装置Ｔ１のユーザである被認証者からの例えばログイン指示に応じて開始される。
【００５２】
チャレンジ／レスポンス処理が開始されると、通信装置Ｔ１のＣＰＵ１０は、認証要求（例えば、ログインコマンド等）を、通信部１５及び通信ネットワークＮＷを介して、通信装置Ｔ２へ送信する（ステップＳ４１）。
【００５３】
一方、通信装置Ｔ２のＣＰＵ１０は、通信装置Ｔ１から送信された認証要求を受信すると、乱数Ｒを生成する（ステップＳ５１）。この乱数Ｒは、１回だけ使用されるnonce (number used once）であることが望ましい。なお、通信装置Ｔ２には、ＣＰＵ１０とは別に、乱数を生成する乱数生成器が備えられていてもよい。この場合、乱数生成器により乱数Ｒが生成される。次いで、通信装置Ｔ２のＣＰＵ１０は、記憶部１２に記憶されている乱数テーブルにおける所定数の第３のインデックスと、ステップＳ５１で生成された乱数Ｒとを含むチャレンジコマンドChallenge(Ｒ，k,-l,m)を生成する（ステップＳ５２）。
【００５４】
次いで、通信装置Ｔ２のＣＰＵ１０は、ステップＳ５２で生成したチャレンジコマンドChallenge(Ｒ，k,-l,m)を、通信部１５及び通信ネットワークＮＷを介して、通信装置Ｔ１へ送信する（ステップＳ５３）。
【００５５】
次いで、通信装置Ｔ２のＣＰＵ１０は、インデックスkに対応付けられている乱数Ｒkと、インデックスlに対応付けられている乱数Ｒl（“l”に“-”が付加されているので、¬Ｒlが用いられる）と、インデックスmに対応付けられている乱数Ｒmとを用いて値Ｋ２を算出し、当該算出した値Ｋ２を暗号鍵として、ステップＳ５１で生成された乱数Ｒを暗号化することによりチャレンジ値Ｖを算出する（ステップＳ５４）。値Ｋ２は、例えば、下記（３）式により算出され、チャレンジ値Ｖは、例えば、下記（４）式により算出される。
【００５６】
Ｋ２ :＝ Ｒk xor ¬Ｒl xor Ｒm・・・（３）
【００５７】
Ｖ:＝  Ｅ（Ｒ，Ｋ２）・・・（４）
【００５８】
ここで、“Ｅ（第1引数，第2引数）”は、第2引数を暗号鍵として用いて第1引数の平文を暗号化する暗号化演算子を表す。
【００５９】
一方、通信装置Ｔ１のＣＰＵ１０は、通信装置Ｔ２から送信されたチャレンジコマンドChallenge(Ｒ，k,-l,m)を受信すると、チャレンジコマンドChallenge(Ｒ，k,-l,m)が示すインデックスkに対応付けられている乱数Ｒkと、インデックスlに対応付けられている乱数Ｒlの反転値¬Ｒlと、インデックスmに対応付けられている乱数Ｒmとを用いて値Ｋ１を算出し、当該算出した値Ｋ１を暗号鍵として、チャレンジコマンドChallenge(Ｒ，k,-l,m)に含まれる乱数Ｒを暗号化することによりレスポンス値ＲｅｓとしてＥ（Ｒ，Ｋ１）を算出する（ステップＳ４２）。なお、値Ｋ１及びレスポンス値Ｒｅｓは、通信装置Ｔ２と同一の算出方法（例えば、上記（３）式及び（４）式）により算出される。
【００６０】
次いで、通信装置Ｔ１のＣＰＵ１０は、ステップＳ４２で算出したレスポンス値Ｒｅｓを含むレスポンスを、通信部１５及び通信ネットワークＮＷを介して、通信装置Ｔ２へ送信する（ステップＳ４３）。
【００６１】
一方、通信装置Ｔ２のＣＰＵ１０は、通信装置Ｔ１から送信されたレスポンスを受信すると、当該レスポンスに含まれるレスポンス値Ｒｅｓと、ステップＳ５４で算出されたチャレンジ値Ｖとを用いて、認証処理を実行する。なお、ステップＳ５５以降の処理は、上記ステップＳ３４以降の処理と同様である。
【００６２】
以上説明したように、実施例２によれば、チャレンジコマンドにインデックスと共に乱数Ｒを含ませ、当該インデックスを用いて算出された値で当該乱数Ｒを暗号化してレスポンスを送信するように構成したので、認証処理で比較対象となる値の安全性を向上させることできる。
【００６３】
（実施例３）
次に、図６を参照して、実施例３について説明する。図６は、実施例３において、通信装置Ｔ１と通信装置Ｔ２とで行われるチャレンジ／レスポンス処理の一例を示すシーケンス図である。なお、実施例３における乱数テーブル更新処理は、実施例１と同様であり、図３に示すように行われる。
【００６４】
図６に示す例では、実施例１及び実施例２と同様、通信装置Ｔ１のＣＰＵ１０は、認証要求（例えば、ログインコマンド等）を、通信部１５及び通信ネットワークＮＷを介して、通信装置Ｔ２へ送信する（ステップＳ６１）。
【００６５】
一方、通信装置Ｔ２のＣＰＵ１０は、通信装置Ｔ１から送信された認証要求を受信すると、実施例２と同様、乱数Ｒ（例えば、nonce）を生成し（ステップＳ７１）、チャレンジコマンドChallenge(Ｒ，k,-l,m)を生成し（ステップＳ７２）、生成したチャレンジコマンドChallenge(Ｒ，k,-l,m)を通信装置Ｔ１へ送信する（ステップＳ７３）。
【００６６】
一方、通信装置Ｔ１のＣＰＵ１０は、通信装置Ｔ２から送信されたチャレンジコマンドChallenge(Ｒ，k,-l,m)を受信すると、実施例２と同様、レスポンス値ＲｅｓとしてＥ（Ｒ，Ｋ１）を算出し（ステップＳ６２）、当該レスポンス値Ｒｅｓを含むレスポンスを通信装置Ｔ２へ送信する（ステップＳ６３）。
【００６７】
一方、通信装置Ｔ２のＣＰＵ１０は、通信装置Ｔ１から送信されたレスポンスを受信すると、インデックスkに対応付けられている乱数Ｒkと、インデックスlに対応付けられている乱数Ｒl（“l”に“-”が付加されているので、¬Ｒlが用いられる）と、インデックスmに対応付けられている乱数Ｒmとを用いて値Ｋ２を算出し、当該算出した値Ｋ２を復号鍵（＝暗号鍵）として、当該レスポンスに含まれるレスポンス値Ｒｅｓを復号することによりチャレンジ値Ｖを算出する（ステップＳ７４）。値Ｋ２は、例えば、上記（３）式により算出され、チャレンジ値Ｖは、例えば、下記（５）式により算出される。
【００６８】
Ｖ:＝  Ｄ（Ｒｅｓ，Ｋ２）・・・（５）
【００６９】
ここで、“Ｄ（第1引数，第2引数）”は、第2引数を暗号鍵として用いて第1引数の暗号文を復号する復号演算子を表す。正常な場合、実施例３におけるチャレンジ値Ｖは、通信装置Ｔ１に送信されたチャレンジコマンドChallenge(Ｒ，k,-l,m)に含まれる乱数Ｒである。
【００７０】
次いで、通信装置Ｔ２のＣＰＵ１０は、ステップＳ７４で算出されたチャレンジ値Ｖ（値Ｋ２を復号鍵としてレスポンス値Ｒｅｓが復号された値）と、ステップＳ７１で生成された乱数Ｒとが一致するか否かを判定する（ステップＳ７５）。チャレンジ値Ｖと乱数Ｒとが一致する場合（ステップＳ７５：ＹＥＳ）、通信装置Ｔ２のＣＰＵ１０は、認証成功と判定する（ステップＳ７６）。一方、チャレンジ値Ｖと乱数Ｒとが一致しない場合（ステップＳ７５：ＮＯ）、通信装置Ｔ２のＣＰＵ１０は、認証失敗と判定する（ステップＳ７７）。そして、通信装置Ｔ２のＣＰＵ１０は、認証成功または認証失敗を示す認証結果メッセージを通信装置Ｔ１へ送信する（ステップＳ７８）。
【００７１】
以上説明したように、実施例３によれば、チャレンジコマンドにインデックスと共に乱数Ｒを含ませ、当該インデックスを用いて算出された値で当該乱数Ｒを暗号化してレスポンスを送信するように構成したので、認証処理で比較対象となる値の安全性を向上させることができる。
【符号の説明】
【００７２】
１０  ＣＰＵ
１１  コプロセッサ
１２  記憶部
１３  センサー部
１４  Ｉ／Ｆ部
１５  通信部
Ｔｎ  通信装置
【図１】
0006432417.tif 000002
【図２】
0006432417.tif 000003
【図３】
0006432417.tif 000004
【図４】
0006432417.tif 000005
【図５】
0006432417.tif 000006
【図６】
0006432417.tif 000007