(57)【要約】親機を制御するプロセッサが子機を認証する方法であって、乱数を生成し；前記乱数を前記親機認証チップおよび前記子機認証チップに送信し；前記親機認証チップに記憶された整数および前記乱数に対して暗号化関数を作用させて生成された出力値に、前記親機認証チップに設定された値で決まる第１の変換関数を作用させて得られる第１のレスポンス値を前記親機認証チップから受信し；前記子機認証チップに記憶された前記整数および前記乱数に対して暗号化関数を作用させて生成された前記出力値に、前記子機認証チップに設定された値で決まる第２の変換関数を作用させて得られる第２のレスポンス値を前記子機認証チップから受信し；前記第１のレスポンス値に、前記親機認証チップに設定された値と前記子機認証チップに設定された値の大きさの差の数で決まる第３の変換関数を作用させて得られる値と前記第２のレスポンス値を比較して前記子機を認証する方法。
2012120671.tif 000002
【特許請求の範囲】
【請求項１】
第１の認証チップを含む第１の装置を制御するプロセッサにより、第２の認証チップを含む第２の装置を認証する認証方法であって、
乱数を生成し、
前記乱数を前記第２の認証チップおよび前記第２の認証チップに送信し、
前記第１の認証チップに秘密鍵として記憶された整数と、前記乱数に対して暗号化をするための暗号化関数を作用させて生成された出力値に、前記第１の認証チップに設定された値で決まる第１の変換関数を作用させて得られる第１のレスポンス値を前記第１の認証チップから受信し、
前記第２の認証チップに秘密鍵として記憶された前記第１の認証チップに秘密鍵として記憶された前記整数と同じ整数と、前記乱数に対して暗号化をするための暗号化関数を作用させて生成された前記出力値に、前記第２の認証チップに設定された値で決まる第２の変換関数を作用させて得られる第２のレスポンス値を前記第２の認証チップから受信し、
前記第１のレスポンス値に、前記第１の認証チップに設定された値と前記第２の認証チップに設定された値の大きさの差の数で決まる第３の変換関数を作用させて得られる値と前記第２のレスポンス値を比較して、または前記第２のレスポンス値に前記第３の変換関数を作用させて得られる値と前記第１のレスポンス値を比較して、前記第２の装置を認証する、
認証方法。
【請求項２】
前記第１の認証チップに設定された値で決まる前記第１の変換関数は所定の関数の冪乗であり、その指数は前記第１の認証チップに設定された値で決まる第１の指数であり、前記第２の認証チップに設定された値で決まる第２の変換関数は前記所定の関数の冪乗であり、その指数は前記第２の認証チップに設定された値で決まり前記第１の指数と異なる第２の指数であり、前記第１の認証チップに設定された値と前記第２の認証チップに設定された値の大きさの差の数で決まる前記第３の変換関数は、前記所定の関数の冪乗であり、その指数は、前記第１の指数と前記第２の指数の差の絶対値に等しい第３の指数である、請求項１の方法。
【請求項３】
前記所定の関数はハッシュ関数である、請求項２の方法。
【請求項４】
前記所定の関数は定数ビットシフトである、請求項２の方法。
【請求項５】
前記所定の関数は左１ビットシフト後、ＧＦ（２ｍ）上の特性多項式の剰余演算処理を定数ビット分の繰り返しである、請求項２の方法。
【請求項６】
前記第１の変換関数は前記第１の認証チップに設定された値と予め前記第２の認証チップと共通に設定された整数である共有値により決定され、前記第２の変換関数は前記第２の認証チップに設定された値と前記共有値により決定される、請求項１乃至５のいずれか一項の方法。
【請求項７】
前記第１のレスポンス値は、前記出力値に、前記第１の変換関数に加えて、前記プロセッサに特有の値である固有値で決まる第４の変換関数を作用させて得られる、請求項１乃至６のいずれか一項の方法。
【請求項８】
前記第２の認証チップに設定された値および前記共有値で決まる前記第２の変換関数は、パラメータ付ＸＯＲ演算である、請求項６又は７の方法。
【請求項９】
前記第２の認証チップに設定された値および前記共有値で決まる前記第２の変換関数は、パラメータつき剰余演算である、請求項６又は７の方法。
【請求項１０】
前記第２の認証チップに設定された値および前記共有値で決まる前記第２の変換関数は、パラメータハッシュ演算の最下位の定数ビット幅のデータ値を取る出す演算である、請求項６又は７の方法。
【請求項１１】
前記第２の認証チップに設定された値および前記共有値で決まる前記第２の変換関数は、パラメータ付定数ビットシフト、ＸＯＲおよび減算の組み合わせの演算である、請求項６又は７の方法。
【請求項１２】
前記プロセッサ、前記第１の認証チップ、および前記第２の認証チップは互いの通信のためにシリアルバス接続されており、前記親機認証チップおよび前記子機認証チップは前記通信のためにそれぞれ第１のアドレスおよび第２のアドレスを有し、前記親機認証チップに設定された値および前記子機認証チップに設定された値は、それぞれ前記第１のアドレスおよび前記第２のアドレスから決まる、請求項１乃至１２のいずれか一項の方法。
【請求項１３】
第１の装置が第２の装置の認証を行う認証システムであって、
前記第１の装置に含まれ、乱数を生成し、前記乱数を前記第１の装置が含む第１の認証チップと前記第２の装置が含む第２の認証チップとに送信し、前記第１の認証チップと前記第２の認証チップから、前記乱数に対する応答として第１のレスポンス値と第２のレスポンス値とをそれぞれ受信し、前記第１のレスポンス値と前記第２のレスポンス値を用いて前記第２の装置を認証する処理を実行するプロセッサと、
前記乱数を受信する第１の乱数受信手段と、秘密鍵としての整数を記憶する第１の記憶手段と、秘密鍵として記憶された整数および前記乱数に対して暗号化をするための暗号化関数を作用させて出力値を生成する第１の暗号演算手段と、生成された前記出力値に、第１の設定された値で決まる第１の変換関数を作用させて前記第１のレスポンス値を生成する第１のレスポンス値生成手段と、を含み、前記プロセッサに接続されている第１の認証チップと、
前記乱数を受信する第２の乱数受信手段と、秘密鍵としての整数を記憶する第２の記憶手段と、秘密鍵として記憶された整数および前記乱数に対して暗号化をするための暗号化関数を作用させて前記出力値を生成する第２の暗号演算手段と、前記出力値に、第２の設定された値で決まる第２の変換関数を作用させて前記第２のレスポンス値を生成する第２のレスポンス値生成手段と、を含み、少なくとも前記プロセッサに接続されている第２の認証チップと、
を含み、
前記プロセッサは、前記第１のレスポンス値に、前記第１の設定された値と前記第２の設定された値の大きさの差の絶対値で決まる第３の変換関数を作用させて得られる数と前記第２のレスポンス値を比較して、または前記第２のレスポンス値に前記第３の変換関数を作用させて得られる数と前記第１のレスポンス値を比較して、前記子機を認証する処理を実行すること、
を特徴とする認証システム。
【請求項１４】
前記プロセッサと前記第１の認証チップおよび前記第２の認証チップをシリアルバス接続で接続するバスを含む、請求項１３の認証システム。
【請求項１５】
前記所定の関数は、ハッシュ関数、定数ビットシフト、左１ビットシフト後、ＧＦ（２ｍ）上の特性多項式の剰余演算処理を定数ビット分の繰り返しからなる群から選択される、請求項１３または１４の認証システム。
【請求項１６】
前記第１の認証チップおよび前記第２の認証チップは前記通信のためにそれぞれ第１のアドレスおよび第２のアドレスを有し、前記第１の認証チップに設定された値および前記第２の認証チップに設定された値は、それぞれ前記第１のアドレスおよび前記第２のアドレスから決まる、請求項１３乃至１５のいずれか一項の認証システム。
【請求項１７】
前記第１の認証チップに設定された値で決まる前記第１の変換関数は所定の関数の冪乗であり、その指数は前記第１の認証チップに設定された値で決まる第１の指数であり、前記第２の認証チップに設定された値で決まる第２の変換関数は前記所定の関数の冪乗であり、その指数は前記第２の認証チップに設定された値で決まり前記第１の指数と異なる第２の指数である、請求項１３乃至１６のいずれか一項の認証システム。
【請求項１８】
前記第１の変換関数は前記第１の認証チップに設定された値および予め前記第２の認証チップと共通に設定された整数である共有値で決まり、前記第２の変換関数は前記第２の認証チップに設定された値および前記共有値で決まる、請求項１３乃至１７のいずれか一項の認証システム。
【請求項１９】
前記第１のレスポンス値は、前記出力値に、前記第１の変換関数に加えて、前記プロセッサに特有の値である固有値で決まる第４の変換関数を作用させて得られる、請求項１３乃至１８のいずれか一項の認証システム。
【請求項２０】
前記第２の変換関数は、パラメータ付ＸＯＲ演算、パラメータつき剰余演算、パラメータハッシュ演算の最下位の定数ビット幅のデータ値を取る出す演算、パラメータ付定数ビットシフト、ＸＯＲおよび減算の組み合わせの演算からなる群から選択される、請求項１３乃至２０のいずれか一項の認証システム。
【請求項２１】
整数である秘密鍵を記憶するメモリと、
整数を受信する受信手段と、
前記整数および前記秘密鍵に暗号化のための暗号化関数を作用させて生成された出力値に、変換関数を作用させて得られるレスポンス値を生成するレスポンス値生成手段と、
前記レスポンス値を送信する送信手段、
を含む認証チップ。
【請求項２２】
前記レスポンス値生成手段は、さらに、前記通信におけるアドレスを記憶するアドレス記憶手段を含み、
前記変換関数は、前記レスポンス値は前記アドレスで決まる、
請求項２１の認証チップ。
【請求項２３】
前記レスポンス値生成手段は、それぞれ関数を記憶するメモリを含む複数の演算部を含み、
前記変換関数は、前記複数の関数から選択される、
請求項２２の認証チップ。
【請求項２４】
前記変換関数は、前記変換関数は、ハッシュ関数、定数ビットシフト、左１ビットシフト後、ＧＦ（２ｍ）上の特性多項式の剰余演算処理を定数ビット分の繰り返しからなる群から選択される、
請求項２１乃至２３のいずれか一項の認証チップ。
【請求項２５】
さらに、
整数である共有値を記憶するメモリを含み、
前記変換関数は前記アドレスおよび前記共有値で決まる、
請求項２１乃至２４のいずれか一項の認証チップ。
【請求項２６】
前記認証チップはプロセッサに接続され、
前記レスポンス値は、前記出力値に前記変換関数を作用させ、さらに前記プロセッサに特有の値である固有値で決まる別の変換関数を作用させて得られる、
請求項２１乃至２５のいずれか一項の認証チップ。
【請求項２７】
前記プロセッサに特有の値である固有値で決まる前記別の変換関数は、パラメータ付ＸＯＲ演算、パラメータつき剰余演算、パラメータハッシュ演算の最下位の定数ビット幅のデータ値を取る出す演算、パラメータ付定数ビットシフト、ＸＯＲおよび減算の組み合わせの演算からなる群から選択される、
請求項２５の認証チップ。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、共通鍵暗号による電子デバイスの認証装置および方法に関し、特に共通鍵暗号機能を備えた組み込み機器の偽造防止を行うための認証システム技術に関するものである。
【背景技術】
【０００２】
プリンタカートリッジや医療機器の分野で、正規品と偽造品を区別するために、認証機能を持つ組み込み機器を用いることで、粗悪な偽造品により発生する被害から顧客を守ることができる。すなわち、認証機能を持つ組み込み機器の偽造品を防ぐことが、製品を利用する顧客の利益を守ることに直結するため、認証機能を持つ組み込み機器の偽造防止は、産業上の非常に重要な課題である。【０００３】
認証においては、暗号方式がコア機能として使用される。暗号方式は、公開鍵暗号方式と共通鍵暗号方式に大別される。公開鍵暗号方式とは、暗号化と復号で異なる鍵を用いる方式であり、暗号化を行うための鍵（公開鍵）を一般に公開する代わりに、暗号文を復号するための鍵（秘密鍵）を受信者のみの秘密情報とすることで安全性を保つ方式である。これに対し、共通鍵暗号方式と呼ばれるものは、暗号化と復号で同一の鍵（秘密鍵）を用いる方式であり、この秘密鍵を送信者と受信者以外の第三者にわからない情報とすることで安全性を保つ方式である。いずれの暗号方式を用いた場合でも、秘密鍵が外部に漏洩しないことがセキュリティ上の大きな前提となる。この前提が守られる限りは、公開鍵暗号、共通鍵暗号のいずれを用いた認証も安全となるが、共通鍵暗号の方が公開鍵暗号より回路規模が小さく、低コスト化には適しているため、特に組み込み機器においては共通鍵暗号を用いた認証が広く普及している。【０００４】
セキュリティ機能を備えた組み込み機器に求められる性質として、耐タンパ性と呼ばれるものがある。耐タンパとは、覗き見防止の意味であり、組み込み機器の内部に格納されている秘密鍵等の重要情報を、外部から不正に漏洩させるのが困難な性質をさす。耐タンパ性を実現するためには、組み込み機器が備える正規の入出力端子からのアクセスによる情報漏洩防止はもちろんのこと、マイクロプローブを用いて内部回路を直接覗き込む非正規アクセスに対する情報漏洩防止も実現しなければならない。通常のＩＣチップのハードウェア構成では、マイクロプローブを用いて内部回路を直接覗き込む攻撃に耐えることはできない。よって、耐タンパ性を実現するには、外部からの物理的・論理的な不正アクセスを防ぐための専用のハードウェア構成をもったＩＣチップとして製造する必要がある。【０００５】
安全な認証を実現するための一般的な方法としては、耐タンパ性をもつ認証機器に対して、機器製造時に認証に用いる秘密鍵を内部に書き込み、製造後は鍵を外部に取り出さない方法が用いられる。こうすることで、不正な第三者が秘密鍵を入手し、認証機器の偽造を防止することができる。耐タンパ性をもつ認証機器に対して、秘密鍵を書き込み、鍵を外部に取り出すことがない状態で、認証機器間で認証プロトコルを実行することで、安全な認証を実現し、粗悪な偽造品により発生する被害から顧客を守ることができると考えられている。
【発明の概要】
【発明が解決しようとする課題】
【０００６】
共通鍵暗号を用いた認証において、秘密鍵が外部に漏洩しない、生産コストを削減する、通信トポロジをなるべく簡素にするという３つの制約下での安全な認証を実現するのは困難であり、これらの制約下でも偽造品をふせぐ安全でコンパクトな認証プロトコルおよびシステムが望まれている。
【課題を解決するための手段】
【０００７】
親機認証チップを含む親機を制御するプロセッサが子機認証チップを含む子機を認証する方法は：乱数を生成することと；前記乱数を前記親機認証チップおよび前記子機認証チップに送信することと；前記親機認証チップに秘密鍵として記憶された整数および前記乱数に対して暗号化をするための暗号化関数を作用させて生成された出力値に、前記親機認証チップに設定された値で決まる第１の変換関数を作用させて得られる第１のレスポンス値を前記親機認証チップから受信することと；前記子機認証チップに秘密鍵として記憶された前記整数および前記乱数に対して暗号化をするための暗号化関数を作用させて生成された前記出力値に、前記子機認証チップに設定された値で決まる第２の変換関数を作用させて得られる第２のレスポンス値を前記子機認証チップから受信することと；前記第１のレスポンス値に、前記親機認証チップに設定された値と前記子機認証チップに設定された値の大きさの差の数で決まる第３の変換関数を作用させて得られる値と前記第２のレスポンス値を比較して、または前記第２のレスポンス値に前記第３の変換関数を作用させて得られる値と前記第１のレスポンス値を比較して、前記子機を認証すること、を含む。【０００８】
また、本発明に従う認証システムは：乱数を生成する乱数生成手段と、前記乱数を前記親機認証チップおよび前記子機認証チップに送信する乱数送信手段と、前記親機認証チップおよび前記子機認証チップから、前記乱数に対する応答として第１のレスポンス値および第２のレスポンス値を受信するレスポンス値受信手段と、前記第１のレスポンス値および前記第２のレスポンス値を用いて、前記子機を認証する子機認証手段を含むプロセッサと；前記乱数を受信する第１の乱数受信手段と、秘密鍵としての整数を記憶する第１の記憶手段と、前記乱数および前記整数に暗号化のための暗号化関数を作用させて出力値を生成する第１の暗号演算手段と、前記出力値に、第１の設定された値で決まる第１の変換関数を作用させて前記第１のレスポンス値を生成する第１のレスポンス値生成手段と、を含み、前記プロセッサに接続されている親機認証チップと；前記乱数を受信する第２の乱数受信手段と、秘密鍵としての整数を記憶する第２の記憶手段と、前記乱数および前記整数に暗号化のための暗号化関数を作用させて出力値を生成する第２の暗号演算手段と、前記出力値に、第２の設定された値で決まる第２の変換関数を作用させて前記第２のレスポンス値を生成する第２のレスポンス値生成手段と、を含み、少なくとも前記プロセッサに接続されている子機認証チップと、を含み、前記プロセッサの前記子機認証手段は、前記第１のレスポンス値に、前記第１の設定された値と前記第２の設定された値の大きさの差の絶対値で決まる第３の変換関数を作用させて得られる数と前記第２のレスポンス値を比較して、または前記第２のレスポンス値に前記第３の変換関数を作用させて得られる数と前記第１のレスポンス値を比較して、前記子機を認証すること、を特徴とする。【０００９】
また、本発明に従う認証チップは：整数である秘密鍵を記憶するメモリと；整数を受信する受信手段と；前記整数および前記秘密鍵に暗号化のための暗号化関数を作用させて生成された出力値に、変換関数を作用させて得られるレスポンス値を生成するレスポンス値生成手段と；前記レスポンス値を送信する送信手段、を含む。
【発明の効果】
【００１０】
親機と子機に同一の値をチャレンジとして送信しても、レスポンスとして返ってくる値が異なるので、安全性が高く、安価に製造可能で、外部装置との通信機能が簡素な認証システムを得ることが出来る。
【図面の簡単な説明】
【００１１】
【図１】チャレンジアンドレスポンス認証プロトコルの概要である。
【図２】共通鍵暗号を用いたチャレンジアンドレスポンス認証のプロトコルである。
【図３】認証システムにおける、親機・子機側の実装形態の種類を示す図である。
【図４】形態３をベースとした、通信トポロジの形態の種類を示す図である。
【図５】形態３とトポロジ３の組み合わせ例（Ｉ２Ｃバス）を示す図である。
【図６】チャレンジアンドレスポンスプロトコルを示す図である。
【図７】盗聴を利用した攻撃法を示す図である。
【図８】改ざんを利用した攻撃法を示す図である。
【図９】本発明の第１の実施形態に従うシステムを示す図である。
【図１０】本発明の第２の実施形態に従うシステムを示す図である。
【図１１】本発明の第２の実施形態に従うシステムのＣＰＵで実行される処理のフローチャートを示す図である。
【図１２】本発明の第２の実施形態に従うシステムの認証チップで実行される処理のフローチャートを示す図である。
【図１３】本発明の第３の実施形態に従うシステムを示す図である。
【図１４】本発明の第３の実施形態に従うシステムのＣＰＵで実行される処理のフローチャートを示す図である。
【図１５】本発明の第３の実施形態に従うシステムの認証チップで実行される処理のフローチャートを示す図である。
【図１６】本発明の第４の実施形態に従うシステムを示す図である。
【図１７】本発明の第４の実施形態に従うシステムで、認証チップ０をＣＰＵに装着する際にＣＰＵで実行される処理のフローチャートを示す図である。
【図１８】本発明の第４の実施形態に従うシステムで、認証チップ０をＣＰＵに装着する際に認証チップ０で実行される処理のフローチャートを示す図である。
【図１９】本発明の第４の実施形態に従うシステムで、認証チップｉを含むｉ番目の子機を認証する際に、ＣＰＵで実行される処理のフローチャートを示す図である。
【図２０】本発明の第４の実施形態に従うシステムで、認証チップｉを含むｉ番目の子機を認証する際に、認証チップｉで実行される処理のフローチャートを示す図である。
【図２１】本発明の第５の実施形態に従うシステムを示す図である。
【図２２】本発明の第５の実施形態に従うシステムのＣＰＵで実行される処理のフローチャートを示す図である。
【図２３】本発明の第５の実施形態に従うシステムの認証チップ０で実行される処理のフローチャートを示す図である。
【図２４】本発明の第６の実施形態に従うシステムを示す図である。
【図２５】本発明の第６の実施形態に従うシステムのＣＰＵで実行される処理のフローチャートを示す図である。
【図２６】本発明の第６の実施形態に従うシステムの認証チップ０で実行される処理のフローチャートを示す図である。
【図２７】本発明の第７の実施形態に従うシステムを示す図である。
【図２８】本発明の第７の実施形態に従うシステムで、認証チップ０をＣＰＵに装着する際にＣＰＵで実行される処理のフローチャートを示す図である。
【図２９】本発明の第７の実施形態に従うシステムで、認証チップ０をＣＰＵに装着する際に認証チップ０で実行される処理のフローチャートを示す図である。
【図３０】本発明の第７の実施形態に従うシステムで、認証チップｉを含むｉ番目の子機を認証する際に、ＣＰＵで実行される処理のフローチャートを示す図である。
【図３１】本発明の第７の実施形態に従うシステムで、認証チップｉを含むｉ番目の子機を認証する際に、認証チップｉで実行される処理のフローチャートを示す図である。
【発明を実施するための形態】
【００１２】
以下で図面を参照しながら、本発明に従う共通鍵を用いた認証システムを説明する。最初に比較例を説明するが、その後、本発明の第１から第７の実施形態を、比較例に対する利点を含めて説明する。尚、以下の説明において、複数の図面にわたり類似の構成要素または類似の機能を有する構成要素には、類似の参照符号を付して初出時以外、詳細な説明を省略する。
【００１３】
（比較例）
共通鍵暗号を用いて第一の装置が第二の装置を認証するシステムについて説明する。実施の形態における説明では、認証を行う側である第一の装置を「親機」、認証される側である第二の装置を「子機」と適宜称して説明する。親機はＣＰＵ１００と親機認証チップ２００を含み、子機は認証チップ３００を含むシステムについて、秘密鍵が外部に漏洩しない、生産コストを削減する、通信トポロジをなるべく簡素にするという３つの制約の下で考えられるシステムについて説明する。
【００１４】
認証チップにおいては、機器の正当性を確認するために、チャレンジアンドレスポンス認証プロトコルと呼ばれる通信プロトコルが利用されている。図１はチャレンジアンドレスポンス認証プロトコルの概要である。チャレンジアンドレスポンス認証とは、デジタル情報を用いた合言葉であり、認証を行う側（親機）から認証される側（子機）に対し、「チャンレジ」と呼ばれる乱数を送信する。これに対し、子機側では「チャンレンジ」に対して「レスポンス」と呼ばれる応答を生成し、親機に返信する。親機は、「チャレンジ」に対する「レスポンス」の値を判断し、もし正しいならば、子機が正当な機器であると判断する。
【００１５】
「チャレンジ」として乱数を用いることで、対応する「レスポンス」が毎回変化する。これにより、再送攻撃に対する防止措置が実現される。再送攻撃とは、過去に外部から観察された応答を繰り返すことで、正当な機器の成りすましを行う攻撃である。つまり、乱数を用いない場合、チャンレジとレスポンスのペアが完全に固定値になるため、攻撃者がこのペアを観察することで、チャレンジに対応する適切なレスポンスを知ることができ、このレスポンスを返すチップを製造することでチップ偽造が容易となるからである。例えるならば、「山」に対する「川」という合言葉しか用いないシステムであることを、悪意のある第三者が知ることができれば、常に「川」と応答することで成りすましが可能となる。
【００１６】
「チャレンジ」に対する「レスポンス」の生成は、暗号関数を用いた方法が一般的である。どの暗号関数を用いるかによってメリットとデメリットがあるが、認証チップの場合、回路規模の小ささを優先できるメリットがある共通鍵暗号を用いる方法が広く用いられている。
【００１７】
図２は、共通鍵暗号を用いたチャレンジアンドレスポンス認証のプロトコルである。
図２に示すプロトコルでは、親機と子機の認証チップ間で、秘密鍵Ｋを事前共有している。これは、チップの製造時に秘密鍵Ｋの値を書き込むことで実現できる。この値が外部に漏洩しないことがセキュリティ上の重要な前提である。Ｓ１００で、認証を行う側の親機は、乱数Cを生成し、認証される側の子機に送信する。この乱数Cは、「チャレンジ」と呼ばれる。Ｓ１１０で、子機は、受け取ったチャレンジCに対し、秘密鍵Ｋによる暗号化処理を実行し出力値Ｒ＝Ｅｎｃ(Ｃ、Ｋ)を得る。そして、出力値Ｒを「レスポンスＲＱ」として、親機に返信する。ただし、ｂ＝Ｅｎｃ(ａ、Ｋ)とは、共通鍵暗号を用いて、平文ａを鍵Ｋにより暗号化した結果が暗号文ｂであることを表す。Ｓ１２０では、子機からのレスポンスＲＱを受け取った親機は、子機と同様に、秘密鍵Ｋによる暗号化処理を実行し出力値Ｒ＝Ｅｎｃ(Ｃ、Ｋ)を得て、レスポンスの正解値ＲＰ＝Ｒを得る。子機からのレスポンスＲＱが正解値ＲＰ＝Ｒと一致するならば、親機は子機を正当な機器と認定する。チャレンジCに対応した正当なレスポンスＲＰを生成できるのは、秘密鍵Ｋを有する場合に限られるので、親機は子機の正当性を確認することができる。
【００１８】
たとえば、図２に示されているような、チャレンジアンドレスポンスプロトコル自体は、理論上は安全な認証プロトコルである。しかし、現実世界の認証には制約があるため、安全にならない可能性が残される。特に、以下の３つの制約下での安全な認証を実現するのは困難であり、これらの制約下でも偽造品をふせぐことができる安全な認証プロトコル（システム）の実現が望まれている。
制約１：秘密鍵が外部に漏洩しないこと
制約２：生産コストの制約
制約３：通信トポロジの制約
【００１９】
制約１の秘密鍵が外部に漏洩しないことは、耐タンパ性を有する認証チップを用いることで実現可能である。制約２の生産コストの制約については、認証チップの親機・子機側を同一のハードウェア構成とすることで、認証チップの生産コストを低く抑えることができる。制約３の通信トポロジの制約は、低コスト向けの機器では、通信形態（トポロジ）をなるべく簡素なものとする必要があることに由来する。本発明に従うシステムでは、制約１、２、３の下でも、認証機器を偽造不可能な認証プロトコル（システム）を実現することができる。特に、制約１は、一般的に知られている耐タンパ技術を用いることで解決可能である。しかし制約２および３の下では、従来技術を用いただけでは安全な認証を実現することはできない。
【００２０】
制約２により認証チップの実装形態が決定し、制約３によって通信トポロジが決定する。これらの決定された組み合わせが、認証の安全性を脅かす要因となることがある。最初に、図３を参照しながら、制約２により決定される認証チップの実装形態について説明する。
【００２１】
認証システムにおける、親機、子機側の実装形態の種類を図３に示す。認証システムの基本要件は以下の通りである。
−親機と子機から構成される。
−親機と子機それぞれに、認証チップまたはＣＰＵが装着される。ただし、親機側には全体の機能管理を行うためのコントローラとしてのＣＰＵが必ず装着される。
−親機と子機に装着された認証チップもしくはＣＰＵが通信を行い、認証プロコトルを実行することで、子機が正規品であるかどうかを親機側が判定する。
−子機が正規品であると親機側が判定した場合、親機側のＣＰＵが子機のリソースを親機のために利用することを許可する。例としては、プリンタカートリッジの場合、親機のプリンタが子機のインク使用を許可すること、医療機器の場合、親機の機器が子機のオプション機器使用を許可することを含む。このように、チャレンジアンドレスポンスプロトコルでは、不正を防ぐためには、鍵の値が外部に漏れないことが前提であり、固定鍵による暗号化、復号処理は、サイドチャンネル攻撃で狙われる可能性がある。
【００２２】
このシステムの実装形態として、図３に示されるように、以下の形態１〜３が考えられる。
形態１：親機側をＣＰＵ１００、子機側を認証チップ３００により実装する。
形態２：親機側を、認証チップ内蔵型のＣＰＵ１００’、子機側を認証チップ３００により実装する。
形態３：親機側をＣＰＵ１００と認証チップ２００の組み合わせ、子機側を認証チップ３００により実装する。
【００２３】
形態１では、親機はＣＰＵ１００を含み、子機は認証チップ３００を含む。子機に含まれる認証チップ３００は、通信制御部３０１、暗号回路３０２および秘密鍵を記憶するメモリ３０３を含む。通信制御部３０１はプロセッサ外部との通信を処理し、プロセッサとして実装されても良い。暗号回路３０２は入力（たとえばチャレンジ）に対して、暗号化関数を作用させて、レスポンス（応答）として出力値を生成するもので、専用の回路であっても、汎用コンピュータとして実装されても良い。秘密鍵は暗号回路３０２から読み出され、メモリ３０３に記憶され得るが、メモリ３０３は不揮発性であることが好ましい。認証プロトコルとして共通鍵暗号を用いた場合、親機のＣＰＵ１００に秘密鍵を書き込む必要がある。この秘密鍵の値は、すべての親機、子機を通じて製品に共通の鍵であるため、耐タンパ性がないＣＰＵ１００から秘密鍵が漏洩する可能性が高く、偽造が容易となる。すなわち、制約１が満たされない。
【００２４】
形態２では、親機は認証チップ２００’を含む認証チップ内蔵型ＣＰＵ１００’を含む。認証チップ２００’は、ＣＰＵに内蔵されている点で、以下で述べる認証チップ２００と異なるが構成は同一である。すなわち、認証チップ２００’は、認証チップ３００の通信制御部３０１、暗号回路３０２および秘密鍵を記憶するメモリ３０３と同一である通信制御部２０１、暗号回路２０２および秘密鍵を記憶するメモリ２０３を含む。子機は形態１と同様である。本形態では、耐タンパ機能を備えた認証チップ２００’をＣＰＵ１００’に内蔵することで、ＣＰＵからの秘密鍵漏洩リスクが消えるため、制約１を満たす。しかし、親機側が認証チップ内蔵型のＣＰＵ１００’、子機側が通常の認証チップ３００であるため、制約２が満たされない。
【００２５】
形態３では、親機はＣＰＵ１００および認証チップ２００を含み、子機は認証チップ３００を含む。本実施形態では、親機、子機ともに耐タンパ機能を備えた認証チップ２００、３００を用いるため、制約１を満たす。さらに、親機、子機共に、同一の認証チップを用いるため、制約２を満たす。
【００２６】
そこで、形態３をベースとした、通信トポロジの形態の種類を図４に示す。
トポロジ１のブリッジ型は、親機側の認証チップから、親機ＣＰＵと子機認証チップそれぞれに対し別々に通信線を結ぶ形式である。親機認証チップに２つの通信ポートが必要とされる（同じハードウェア構成である子機認証チップにも２つの通信ポートが必要）ため、低コストに向かない。すなわち、制約３が満たされない。
【００２７】
トポロジ２のハブ型は、親機に含まれるＣＰＵ１００から、親機の認証チップ２００と子機の認証チップ３００それぞれに対し別々に通信線を結ぶ形式である。ＣＰＵに２つの通信ポートが必要とされるため、低コストに向かない。すなわち、制約３が満たされない。
【００２８】
トポロジ３のシリアルバス型は、親機に含まれるＣＰＵ１００、親機の認証チップ２００および子機の認証チップ３００の全てを、共有する通信線でバス状に接続する形式である。親機のＣＰＵ１００、親機の認証チップ２００、および子機の認証チップ３００の全ての通信ポートが１つで良いため、低コストに向く。すなわち、制約３を満たす。
【００２９】
すなわち、形態３をベースにシリアルバス型の接続を行うのが、上記制約１、２、３を満たすための好適な形態である。
しかし、これらの制約を満たしても、以下のようなセキュリティ上の問題が発生することがある。
【００３０】
図５は、形態３とトポロジ３の組み合わせ例を示す図である。シリアルバスＩ／Ｆとしては、多様な種類が知られているが、図５ではＩ２Ｃバス４００によって、ＣＰＵ１０１、親機の認証チップ２００、および子機の認証チップ３００がバス接続されている。Ｉ２Ｃバス４００は、データ線４２０とクロック線４４０の２線により、全ての機器が接続されている。Ｉ２Ｃバス４００は、２線の通信線１本のみを用いて複数の機器を接続可能、というメリットがある反面、全機器が一本の線でつながっているため、データの盗聴や改ざんが容易という問題があることが知られている。
【００３１】
図６〜８を用いてセキュリティ上の問題について説明する。
Ｉ２Ｃバス上のデータの盗聴や改ざんが容易である、という性質を利用すると、図５に示した通信トポロジ上で、図２に示したチャレンジアンドレスポンスプロトコルをそのまま実行すると、図６に示されるような状態となる。
【００３２】
図６では、ＣＰＵ１００が親機の認証チップ２００および子機の認証チップ３００それぞれにバス４００を介してチャレンジＣを送信し、子機の認証チップ３００からのレスポンスRQと、親機の認証チップ２００からのレスポンスＲＰを比較し、ＲＰとＲＱが一致したならば、ＣＰＵ１００は子機の認証チップ３００を含む子機が正規品であると判断する。ＣＰＵ１００がチャレンジＣを送信する順序を、子機の認証チップ３００を含む子機から開始するか、親機の認証チップ２００を含む親機から開始するかに応じて、２通りの方法が存在する。
【００３３】
親機に先にチャレンジＣを送信する場合、ＣＰＵ１００は、バス４００を介して、親機の認証チップ２００にチャレンジＣを出力する。親機の認証チップ２００は、通信制御部２０１、暗号回路２０２、鍵２０３を含み、ＣＰＵ１００から出力されたチャレンジＣは、通信制御部２０１で受信される。その後、チャレンジＣは、暗号回路２０２に入力され、暗号回路２０２では、鍵２０３を用いて、レスポンスＲＰを得る。このレスポンスＲＰはバス４００を介して、ＣＰＵ１００に送られる。次に、ＣＰＵ１００は、バス４００を介して、子機の認証チップ３００にチャレンジＣを出力する。チャレンジＣは、子機の認証チップ３００の通信制御部３０１で受信され、その後、子機の認証チップ３００の暗号回路３０２に入力される。暗号回路３０２では、チャレンジ及び鍵３０３と暗号化関数を用いて、レスポンスＲＱを得る。このレスポンスＲＱは、バス４００を介して、ＣＰＵ１００に送られる。親機からのレスポンスＲＰと、子機からのレスポンスＲＱを受け取ったＣＰＵ１００は、両者を比較し、一致すれば子機は正規品と判定する。
【００３４】
子機に先にチャレンジＣを送信する場合は、ＣＰＵはまず、子機の認証チップ３００にチャレンジＣを出力し、子機の認証チップ３００からレスポンスＲＱを得たのち、親機の認証チップ２００にチャレンジＣを出力し、親機の認証チップ２００からレスポンスＲＰを得る。その後、両者を比較し、一致すれば子機は正規品と判定する。
【００３５】
子機が正規品である限りは、子機の認証チップ３００を含む子機から認証を開始しても、親機の認証チップ２００を含む親機から認証を開始しても問題はない。
しかし、発明者独自の分析により、図６のプロトコルの安全性評価を行った結果、上の２通りの方法に対して異なる攻撃法１、２で、Ｉ２Ｃバス４００上の通信データの盗聴・改ざんを利用することで、秘密鍵を知らなくとも偽造品の製造が可能であることが判明した。以下に、図７、８を参照しながら、攻撃法１、２を説明する。
【００３６】
（攻撃法１）
図７は、図６のプロトコルに対して、Ｉ２Ｃバス４００上の盗聴を用いた場合の攻撃法である（以下、攻撃法１と呼ぶ）。攻撃対象は、親機の認証チップ２００を含む親機、子機の認証チップ３００を含む子機の順にレスポンスを生成する場合のプロトコルである。子機の認証チップ３００が正規品の場合、ＣＰＵ１００は親機、子機からのレスポンスＲＰ、ＲＱをこの順番で受信し、正規品の判定を行う。これに対し、偽造品である子機の認証チップは、次のように振舞う。偽造認証チップ３００’は、Ｉ２Ｃバス４００を通じて、親機がＣＰＵ１００に返信するレスポンスＲＰを観察し、偽造認証チップ３００’の（図示されていない）内部レジスタに格納する。次に、ＣＰＵから子機へのチャレンジCが送信されるので、これに対して盗聴により観察されたＲＰをそのまま子機のレスポンスＲＱとして返す。こうすることで、ＣＰＵは同一のレスポンスを受け取るため、ＲＰとＲＱが一致し、ＣＰＵ１００は偽造認証チップを正規品と判定してしまう。このように攻撃法１では、偽造認証チップは、Ｉ２Ｃバス上のデータを単純に盗聴すればよいため、秘密鍵の値を知らなくとも攻撃が成功する。
【００３７】
（攻撃法２）
図８は、図６のプロトコルに対して、改ざんを用いた場合の攻撃法である（以下、攻撃法２と呼ぶ）。攻撃対象は、子機、親機の順にレスポンスを生成する場合のプロトコルである。子機の認証チップ３００が正規品の場合、ＣＰＵ１００は子機、親機からのレスポンスＲＱ、ＲＰをこの順番で受信し、正規品の判定を行う。これに対し、偽造品である子機の認証チップ３００’は、次のように振舞う。偽造認証チップ３００’は、適当な値Ｘを生成し、ＣＰＵ１００からのチャレンジＣに対するレスポンスＲＱとして返信する。このＸはどんな値でも良い。次に、認証チップ３００’を含む子機はＩ２Ｃバス４００上のデータを盗聴し、ＣＰＵ１００から親機の認証チップ２００を含む親機へのチャレンジＣが入力されたならば、先ほど生成した値Ｘを親機認証チップ２００の代わりに返信する（成りすまし）。この成りすましは、偽造認証チップ側の通信処理タイミングが非常にシビアであるが、原理的には可能である。このタイミング制御のシビアさを攻撃者が回避する手法としては、ＣＰＵ１００と親機の認証チップ２００の間の通信線４００を切断する方法が挙げられる。親機側の回路の物理改変が必要となるが、この攻撃法２を用いることで、子機によるなり済ましを容易にすることができ、偽造品を正規品と誤認させることができる。
【００３８】
上述のように、比較例では、親機からのレスポンスＲＰと子機からのレスポンスＲＱが同じであるかどうかで認証の成否を判断しており、盗聴をする攻撃法１、成りすましをする攻撃法２等を用いることによって、認証の安全性が脅かされるおそれがある。
以下では、上記制約１、２、３を満たす形態３をベースにシリアルバス型の接続を行ったシステムであって、認証の安全性が改善されたシステムについて説明する。
【００３９】
（第１実施形態）
図９を参照して、本発明の第１実施形態に従う共通鍵暗号を用いた認証システムを説明する。本実施形態は本発明の基本的実施形態でもある。本実施形態では、制約１、２、３を満たす図６のプロトコルは、上記攻撃法１、攻撃法２に脆弱である、という問題に対し、攻撃法１、２に対しても安全な認証を実現するコンパクトなシステムを実現することができる。
【００４０】
本発明の第１実施形態に従うシステムを図９に示す。上記比較例では、親機認証チップ、子機認証チップともに、同一のレスポンスを返信していたため、盗聴や成りすましによる攻撃が容易であった。これに対し、本実施形態では、チャレンジに対してレスポンスを生成するレスポンス生成部を認証チップ内で複数準備し、いずれのレスポンス生成部を用いるかを、親機および子機に含まれる認証チップ内部の不揮発性メモリに格納されている情報に基づいて選択することを特徴とする。この情報は、同一ハードウェア構成を持つ親機および子機の認証チップが、自分自身が親機側か、子機側の認証チップであるかを識別するために用いられる情報であり、一般的にはＩ２Ｃバスのアドレス情報であって良い。すなわち、Ｉ２Ｃアドレスにより、認証チップが親機であるか、子機であるかが決定される。このアドレス情報が子機側であった場合、子機は通常のレスポンス（出力値と呼ぶ）ＲＱ＝Ｅｎｃ（Ｃ、Ｋ）を返信する。これに対し、アドレス情報が親機側であった場合、親機側は通常のレスポンス、すなわち出力値を関数Ｆで変形させたレスポンスＲＰ＝Ｆ（Ｅｎｃ（Ｃ、Ｋ））を生成する。ただし、関数Ｆは外部に対して非公開の関数である。これらのレスポンスＲＰ、ＲＱを受け取ったＣＰＵはＲＱから計算されたＦ（ＲＱ）がＲＰに等しいか判定を行い、もし等しいならば子機が正規品であると判断する。正規品によるレスポンスならば、Ｆ（ＲＱ）＝Ｆ（Ｅｎｃ（Ｃ、Ｋ））＝ＲＰであり等しい値となる。外部非公開の関数Ｆによりレスポンスが変形されているため、攻撃１、攻撃２に示したような方法を用いて、親機および子機のレスポンス値ＲＰおよびＲＱが同一とするような、ＣＰＵに対して偽装する攻撃は通用しないため、安全な認証を実現することができる。
【００４１】
図９に示されているように、本実施形態に従うシステムは、親機によって子機を認証するシステムであって、親機に含まれるＣＰＵ１００および親機の認証チップ２００、子機に含まれる子機の認証チップ３００、ならびにＣＰＵ１００、親機の認証チップ２００および子機の認証チップ３００を接続するバス４００を含んでいる。ＣＰＵ１００、親機の認証チップ２００および子機の認証チップ３００はバス４００を介してシリアルバス接続されている。バスインターフェイス（Ｉ／Ｆ）としては、Ｉ２Ｃバスを例示することができる。
【００４２】
ＣＰＵ１００は、乱数であるチャレンジＣを生成し、親機の認証チップ２００および子機の認証チップ３００に出力する。乱数は整数であることが望ましい。また、ＣＰＵ１００は、親機からのレスポンスＲＰと子機からのレスポンスＲＱを受ける。そして、ＣＰＵ１００は、子機からのレスポンスＲＱに関数Ｆを作用させたＦ（ＲＱ）とレスポンスＲＰを比較して、子機の認証を行う。すなわち、ＣＰＵ１００は、親機からのレスポンスＲＰと子機からのレスポンスＲＱの差を補償する関数Ｆを記憶している。本実施形態では、親機の認証チップ２００でレスポンスＲに作用される関数Ｆと、ＣＰＵで子機からのレスポンスＲＱに作用される関数Ｆは同一の関数である。
乱数はＣＰＵ１００に含まれる乱数生成手段で生成されても良い。乱数は整数であることが好ましい。チャレンジＣの外部への出力（送信）は乱数送信手段によって行われても良い。レスポンスを受けること（受信）は、レスポンス値受信手段によって行われても良い。さらにＣＰＵ１００は、親機からのレスポンスＲＰと子機からのレスポンスＲＱを比較し、子機が正規品かどうか判定する子機認証手段を含む。
【００４３】
親機の認証チップ２００および子機の認証チップ３００は、上記制約２の観点からは同一の構造を有することが好ましい。認証チップ２００、３００はそれぞれ、第１のレスポンス生成部２２０ａ、３２０ａ、第２のレスポンス生成部２２０ｂ、３２０ｂ、レスポンス選択部２３０、アドレス情報保持部２４０、３４０を含む。
【００４４】
第１のレスポンス生成部２２０ａ、３２０ａは、暗号化関数を記憶し、従来のようにＣＰＵ１００からの入力（チャレンジＣ）および鍵に暗号化関数を作用させてレスポンスとして出力値Ｒを生成する。暗号化関数は公知のもので良い。この第１のレスポンス生成部は、暗号演算手段とも呼ばれる。第２のレスポンス生成部２２０ｂ、３２０ｂは、関数Ｆを記憶しており、ＣＰＵ１００からの入力（チャレンジＣ）および鍵に暗号化関数を作用させて得られた出力値Ｒに、さらに関数Ｆを作用させて、出力値Ｒとは異なる数Ｆ（Ｒ）を生成する。この第２のレスポンス生成部は、第１のレスポンス値生成手段とも呼ばれる。アドレス情報保持部２４０、３４０は個々の認証チップに固有のアドレスを記憶する不揮発性メモリであっても良い。親機の認証チップ２００および子機の認証チップ３００は、上記の構成要素のほかに、たとえばＣＰＵ１００などの外部装置からの信号を受信したり、外部装置に信号を送信したりする（図示されていない）通信手段を含む。通信手段の例には、図１０に示されているデータ入出力インターフェイス（Ｉ／Ｆ）２６０、３６０が含まれる。データ入出力インターフェイス（Ｉ／Ｆ）は、プロセッサ１００で生成された乱数を受信する受信手段、またはレスポンス生成部で生成されたレスポンスをプロセッサ１００に送信する送信手段として機能する。
【００４５】
本実施形態では、鍵は共通鍵（秘密鍵とも呼ばれる）である。つまり、第１のレスポンス生成部２２０ａ、３２０ａでは共通鍵暗号のアルゴリズムが実行される。レスポンス選択部２３０、３３０では、アドレス情報保持部２４０、３４０に記憶されたシリアルバスのアドレス値に応じてレスポンス生成部を選択する。第１のレスポンス生成手段と第２のレスポンス生成手段とでレスポンス値生成手段が形成される。
【００４６】
上記では、子機の認証チップ３００は、ＣＰＵ１００から入力されるチャレンジＣに対して、通常のレスポンスＲＱ＝Ｅｎｃ（Ｃ、Ｋ）を返すものとした。しかし、子機の認証チップ３００も、Ｅｎｃ（Ｃ、Ｋ）にある関数Ｈを作用させたＨ（Ｅｎｃ（Ｃ、Ｋ））を返しても良い。この場合でも、ＣＰＵ１００が、親機からのレスポンスＲＰと子機からのレスポンスＲＱの差を補償する関数を記憶していれば、上記の認証方法は機能する。レスポンスＲＰとＲＱの差を補償する関数は、親機の認証チップ２００のメモリ２４０に記憶されているアドレス情報と子機の認証チップ３００のメモリ３４０に記憶されているアドレス情報から一意に決まることが好ましい。メモリ２４０、３４０はアドレス記憶手段を構成する。
【００４７】
親機の認証チップ２００および子機の認証チップ３００は同一の構成であるが、親機の認証チップ２００として用いられるものでは、第２のレスポンス生成部２２０ｂが、子機の認証チップ３００として用いられるものでは、第１のレスポンス生成部３２０ａが機能するように、出荷時に設定されてもよい。このように出荷時に設定されることによって、認証チップとしては同一のものを大量生産することができること、出荷時に設定するので高い安全性を確保できること、などの利点を得ることができる。
【００４８】
このような構成を採用することによって、認証システム１０は、仮にバス４００がＩ２Ｃバスであっても、親機の認証チップ２００からのレスポンスと子機の認証チップ３００からのレスポンスが異なるため、認証の安全性を高めることができる。
【００４９】
また、本実施形態では、親機の認証チップ２００および子機の認証チップ３００は同一の構成を有している。また、ＣＰＵ１００、親機の認証チップ２００および子機の認証チップ３００はＩ２Ｃバス接続されている。このような構成を採用することによって、各認証チップ２００、３００が外部との通信のために備える通信ポートは１つでよく、認証チップは、製造コストを抑えつつも、小型に製造することができる。
また、各認証チップにおいて、変換関数は外部に対して非公開、即ち不揮発性メモリに記憶されている。従って、高い安全性を得ることができる。
【００５０】
（第２実施形態）
図１０から１２を参照しながら、本発明の第２実施形態を説明する。
【００５１】
本実施形態に従うシステム１０では、親機に対して、最大ｎ個の子機が接続されている。親機はＣＰＵ１００と認証チップ(認証チップ０)２００を備え、最大ｎ個の子機はそれぞれ１個ずつの認証チップ(認証チップ１〜ｎ)３００＿１、．．．３００＿ｎを備える。ｎは任意の自然数であり、用途によっては子機側に複数の認証チップが接続される場合がある。例えば、インクカートリッジを４色用いる場合、子機はそれぞれの色に対して１個ずつの認証チップを有し、計４個の認証チップを備えることになる。それぞれの認証チップ３００＿１、．．．３００＿ｎは、同一ハードウェア構成を持ち、各チップ内部の不揮発性メモリ３２６にはシリアルバスのアドレス値が書かれている。このアドレス値は、シリアルバス上の通信エンティティを区別するために用いられる値であり、ＣＰＵ１００、認証チップ３００＿１、．．．３００＿ｎに対してユニークな値が与えられる。このアドレスのユニーク性は、図１３のシリアルバス４００に接続されている通信エンティティ間で保たれればよく、流通している全ての認証チップ固体間で異なる値である必要はない。
【００５２】
親機のＣＰＵ１００は、ｉ番目の子機が正規品であるかの確認を行うために、認証チップ０および認証チップｉそれぞれに対してチャレンジＣを送信し、認証チップｉからのレスポンスＲＱと、認証チップ０からのレスポンスＲＰの比較を行う。それぞれの認証チップは、ｎ＋１個のデータ変換手段を備える。それぞれの認証チップは、受信したチャレンジＣからメモリ２２６に格納されている秘密鍵を用いてレスポンスＲを生成するレスポンス生成回路２２４と、変換０〜ｎの実行を行う演算部２２０ａ〜ｎ、変換関数のパラメータとしてのアドレス情報を記憶するメモリ２４０およびメモリ２４０に記憶されたアドレス情報を元に演算部２２０ａ〜ｎから一つを選択するセレクタ２２３を含む。演算部２２０ａ〜ｎはそれぞれ、変換０〜ｎの変換関数を記憶している。
【００５３】
ｉ番目の認証チップが選択するデータ変換手段への入力をＸ、出力をＹとすると、ＸとＹの関係の例として、関数Ｆを用いてＹ＝Ｆｔｉ（Ｘ）を例示することができる。ただし、Ｙ＝Ｆｚ（Ｘ）は、Ｘを関数Ｆに対してｚ回連続適用した結果である。例えばＦ(Ｘ)＝Ｘ＋１の場合、Ｆ１(１０)＝Ｆ（１０）＝１０＋１＝１１、Ｆ２（１０）＝Ｆ（Ｆ（１０））＝１２、Ｆ４（１０）＝１４、Ｆ０（１０）＝１０、である。ｔｉはメモリ２４０に記憶されているアドレス情報から決まる定数であり、ｉ番目の認証チップが用いる変換手段に対応する関数Ｆの繰り返し適用回数を表す。関数Ｆ（Ｘ）は外部に対して非公開の関数である１入力１出力関数ならばどのような関数でもよいが、ハードウェア実装を考慮すると、なるべく回路規模が小さいものであることが良く、例えば、以下の処理が望ましい。
（１）フィードバックシフトレジスタ（ＬＦＳＲ）によるシフト処理を定数ビット分繰り返す
（２）左１ビットのシフト後、２ｍ個の要素を有する拡大ガロア体上ＧＦ（２ｍ）上の特性多項式の剰余演算処理を定数ビット分繰り返す（ｍｏｄ）
（３）ハッシュ（Ｈａｓｈ）関数
【００５４】
上記（１）の例としては、
Ｆ(Ｘ)＝ＬＦＳＲ(Ｘ、１２８)、
ただしＬＦＳＲ(Ｘ、１)は、ＸをＬＦＳＲ（線形フィードバックシフトレジスタ）処理により１ビットだけシフトした値、が含まれる。
【００５５】
上記（２）の例としては、
Ｆ(Ｘ)＝Ｘ６４  ｍｏｄ  ｑ（Ｘ）、
ただしｑ（Ｘ）は１２８ビット既約多項式、ｍｏｄは剰余、を表す。
【００５６】
上記（３）の例としては、
Ｆ(Ｘ)＝ＳＨＡ１（Ｘ）の最下位１２８ビット、
ただしＳＨＡ１（Ｘ）はＸのＳＨＡ−１ハッシュ関数出力、である。
【００５７】
もちろん、（１）〜（３）の具体例は、上記関数に限定されない。
変換手段の差異は、同一関数を繰り返す回数のみに関する差異であるため、認証チップでは関数Ｆを処理する回路のみ実装すればよく、ｎ＋１個の変換手段それぞれに対して異なる回路を実装する必要は無いため、製造コストを低く抑えることができる。
【００５８】
認証チップ０と認証チップｉからの応答ＲＰとＲＱを受け取った親機ＣＰＵ１００は、これらのレスポンス比較を以下により行う。
ｔｉ＞ｔ０の場合：Ｆｔｉ−ｔ０（ＲＰ）＝ＲＱなら正規品、そうでなければ偽造品と判定され、ｔｉ＜ｔ０の場合：ＲＰ＝Ｆｔ０−ｔｉ（ＲＱ）なら正規品、そうでなければ偽造品と判定される。
【００５９】
上記の比較が正しい理由は、正規品の場合、ＲＰ＝Ｆｔ０（Ｒ）、ＲＱ＝Ｆｔｉ（Ｒ）であり、もしｔｉ＞ｔ０ならば、Ｆｔｉ−ｔ０（ＲＰ）＝Ｆｔｉ−ｔ０（Ｆｔ０（Ｒ））＝Ｆｔｉ（Ｒ）がＲＱと一致するからであり、もしｔｉ＜ｔ０ならば、Ｆｔ０−ｔｉ（ＲＱ）＝Ｆｔ０−ｔｉ（Ｆｔｉ（Ｒ））＝Ｆｔ０（Ｒ）がＲＰと一致するからである。
【００６０】
図１０は本発明の第２の実施形態に従うシステム１０を示す図である。本システム１０は、図９に示されたシステムと同様、親機に含まれるＣＰＵ１００および親機の認証チップ２００、子機に含まれる子機の認証チップ３００＿１、．．．、３００＿ｎ、ならびにＣＰＵ１００、親機の認証チップ２００および子機の認証チップ３００を接続するバス４００を含んでいる。ＣＰＵ１００、親機の認証チップ２００および子機の認証チップ３００はバス４００を介してＩ２Ｃバスシリアルバス接続されている。
【００６１】
親機に含まれる０番目の認証チップ２００（以下、認証チップ０としても参照する）は、バス４００を介してＣＰＵ１００からの信号を受信したり、ＣＰＵ１００に信号を送信したりするデータ入出力インターフェイス（Ｉ／Ｆ）２６０、データ入出力Ｉ／Ｆ２６０で受信したチャレンジＣに暗号化関数を作用させて、レスポンスとしての出力値Ｒを生成するレスポンス生成回路２２４、レスポンス生成回路２２４で生成された出力値Ｒに変換０〜ｎを作用させる演算部２２２ａ〜ｎ、変換関数のパラメータとしてのアドレス情報を記憶するメモリ２４０およびメモリ２４０に記憶されたアドレス情報を元に演算部２２２ａ〜ｎから一つを選択するセレクタ２２３を含む。セレクタ２２３はレスポンス選択部に相当する。レスポンス生成回路２２４には秘密鍵が記憶されているメモリ２２６が含まれている。図９のシステムは、本システムで子機の数が１つの場合であり、図９の第１のレスポンス生成部２２０ａは、レスポンス生成回路２２４、変換０を行う演算部２２２ａ、およびセレクタ２２３に相当する。演算部２２０ａ〜ｎ、セレクタ２２３、レスポンス生成回路２２４、アドレス情報を記憶するメモリ２４０からレスポンス値生成手段が形成される。
【００６２】
子機の認証チップ３００＿１、．．．、３００＿ｎも親機の認証チップ２００と同様の構成をしている。すなわち、バス４００を介してＣＰＵ１００からの信号を受信したり、ＣＰＵ１００に信号を送信したりするデータ入出力インターフェイス（Ｉ／Ｆ）３６０、データ入出力Ｉ／Ｆ３６０で受信したチャレンジＣに暗号化関数を作用させて、レスポンスとしての出力値Ｒを生成するレスポンス生成回路３２４、レスポンスＲを生成するレスポンス生成回路３２４で生成されたレスポンスに変換０〜ｎを作用させる演算部３２２ａ〜ｎ、変換関数のパラメータとしてのアドレス情報を記憶するメモリ３４０およびメモリ３４０に記憶されたアドレス情報を元に演算部３２２ａ〜ｎから一つを選択するセレクタ２２３を含む。レスポンス生成回路３２４には秘密鍵が記憶されているメモリ３２６が含まれている。図９の第２のレスポンス生成部３２０ｂは、レスポンス生成回路３２４、変換１を実行する演算部３２２ｂ、およびセレクタ３２３に相当する。演算部３２０ａ〜ｎはそれぞれ、変換０〜ｎの変換関数Ｆを記憶している。演算部３２０ａ〜ｎ、セレクタ３２３、レスポンス生成回路３２４、アドレス情報を記憶するメモリ３４０からレスポンス値生成手段が形成される。
【００６３】
セレクタ２２３、３２３は、それぞれメモリ２４０、３４０に記憶されたシリアルバスのアドレス値に応じて変換関数を選択するレスポンス選択部としても機能する。
バス４００は本実施形態ではＩ２Ｃバスである。Ｉ２Ｃバスを用いることによって、ＣＰＵと認証チップの接続は簡素なものとすることができ、システム全体のコストを抑えることができる。
【００６４】
図１１は、本発明の第２の実施形態に従うシステム１０のＣＰＵ１００で実行される処理のフローチャートを示す図であり、図１２は本発明の第２の実施形態に従うシステムの認証チップで実行される処理のフローチャートを示す図である。
【００６５】
ＣＰＵ１００は、Ｓ１１０１で認証対象の子機番号ｉを決定し、Ｓ１１０２に進む。Ｓ１１０２では、チャレンジＣとして用いるために乱数を生成する。Ｓ１１０２の次のＳ１１０３では、Ｓ１１０２で生成されたチャレンジＣをＳ１１０１で決定されたｉ番目の子機の認証チップ３００＿ｉに送信する。
【００６６】
ｉ番目の子機の認証チップ３００＿ｉでは、Ｓ１１５１で親機のＣＰＵ１００によって送信されたチャレンジＣを受信する。次に、Ｓ１１５２では、認証チップ３００＿ｉのレスポンス生成回路３２４中の秘密鍵記憶部３２６に記憶されている秘密鍵ＫとチャレンジＣを用いて、レスポンスとしての出力値Ｒ＝Ｅｎｃ（Ｃ、Ｋ）を生成する。次のＳ１１５３では、内部不揮発性メモリ３４０に記憶されたアドレス情報を元に、変換の繰り返し回数ｔｉを決定する。繰り返し回数ｔｉは、たとえば、アドレスに現れる数を順に並べて作られる整数であっても良い。Ｓ１１５３に引き続くＳ１１５４からＳ１１５７では、レスポンスＲにｔｉ回関数Ｆを作用させる。より詳細には、Ｓ１１５４で整数であるダミー変数ｊに０を代入する。Ｓ１１５５でダミー変数の値を１つ増加させ、Ｓ１１５６でｊとｔｉを比較する。Ｓ１１５６でｊがｔｉより小さければＳ１１５７で現在のレスポンス値に関数Ｆを作用させ、レスポンス値を更新して、Ｓ１１５４に戻る。Ｓ１１５６でｊがｔｉより大きければ現在のレスポンスＲの値をＣＰＵ１００に送信して、ｉ番目の子機の認証チップ３００＿ｉの処理を終了する。
【００６７】
ＣＰＵ１００は、Ｓ１１０４でｉ番目の子機の認証チップ３００＿ｉからのレスポンスＲの値をレスポンスＲＱとして受信する。次に、Ｓ１１０５でチャレンジＣを今度は、親機の認証チップ２００に送信する。
【００６８】
親機の認証チップ２００では、先のｉ番目の子機の認証チップ３００＿ｉと同じ処理を行うが、ｉ番目の子機の認証チップ３００＿ｉの場合とは、関数Ｆを作用させる回数がｔ０であり、ｔｉとは異なる。
【００６９】
ＣＰＵ１００は、Ｓ１１０６で親機の認証チップ２００からのレスポンスＲの値をレスポンスＲＰとして受信する。次に、Ｓ１１０７でｔｉとｔ０を比較し、ｔｉがｔ０より大きければＳ１１０８に進み、そうでなければＳ１１０９に進む。Ｓ１１０８では、ＲＰに関数Ｆを、ｔｉ−ｔ０回作用させた値とＲＱが等しいかどうかを判定する。もし等しければｉ番目の子機を正規品と判定してＣＰＵ１００の処理を終了する。そうでなければ、ｉ番目の子機を正規品ではないと判定する。Ｓ１１０９では、ＲＱに関数Ｆを、ｔ０−ｔｉ回作用させた値とＲＰが等しいかどうかを判定してＣＰＵ１００の処理を終了する。もし等しければｉ番目の子機を正規品と判定してＣＰＵ１００の処理を終了する。そうでなければ、ｉ番目の子機を正規品ではないと判定してＣＰＵ１００の処理を終了する。
【００７０】
このような構成を採用することによって、本実施形態のシステム１０では、レスポンスＲＰ、ＲＱが異なるため、攻撃法１、攻撃法２に示したような、盗聴及び改ざんによる攻撃を防ぐことができる。
【００７１】
（第３実施形態）
図１３〜１５を参照して本実施形態に従う認証システム２０を説明する。図１３は、本実施形態のシステム２０を示す図、図１４は、本実施形態に従うシステムのＣＰＵ１１００で実行される処理のフローチャートを示す図であり、図１５は本実施形態に従うシステム２０の認証チップ１２００、１３００＿ｉで実行される処理のフローチャートを示す図である。
【００７２】
実施形態２に従うシステム１０では、関数Ｆは非公開関数であっても、ハードウェア上で効率よい処理ができるＦの種類は非常に限定的であるため、データ盗聴の結果から正しいＦの内容が特定される可能性はなくはない。関数Ｆの内容が攻撃者に特定されたならば、攻撃１、攻撃２と同様の考え方に基づきつつ、関数Ｆにより変形されたレスポンスを返すように変更した攻撃法を用いることで、秘密鍵の値を知らなくとも偽造品を製造することが可能となる。本実施形態では、通信データの盗聴から変換手段を特定することがより困難なシステム２０が提供される。
【００７３】
本実施形態に従う子機認証システム２０は、基本的には、第２実施形態のシステム１０と同じであるが、事前共有された定数Ｓ（共有値Ｓ）が書き込まれている不揮発性メモリ１２８０、１３８０を認証チップ１３００＿１〜１３００＿ｎ（認証チップ１〜認証チップｎ）が含んでいる。この定数Ｓは、ＣＰＵ１１００および認証チップ１２００、１３００＿１〜１３００＿ｎの製造時に書き込まれる値である。ｉ番目の認証チップが選択するデータ変換手段への入力をＸ、出力をＹとすると、ＸとＹの関係は、関数ＦＳ，Ｃを用いてＹ＝ＦＳ，Ｃｔｉ（Ｘ）と表すことができる。ただし、ＦＳ，Ｃ（Ｘ）は定数Ｓ、チャレンジＣをパラメータとした１入力1出力関数を表し、例えば、以下のような演算が挙げられる。
（４）パラメータ付ＸＯＲ加算
（５）パラメータ付剰余演算
（６）パラメータハッシュ演算
（７）パラメータ付ＬＦＳＲ−ＸＯＲ減算 
【００７４】
上記（４）の例としては
【数１】
2012120671.tif 000003
が含まれる。
【００７５】
上記（５）の例としては、||をビット結合、ｑ（Ｘ）を１２８ビット既約多項式、ｍｏｄを剰余として、
ＦＳ，Ｃ（Ｘ）＝（Ｓ||Ｃ ||Ｘ）  ｍｏｄ  ｑ（Ｘ）、
が含まれる。
【００７６】
上記（６）の例としては、
【数２】
2012120671.tif 000004
の最下位１２８ビット、が含まれる。
上記（７）の例としては、
【数３】
2012120671.tif 000005
が含まれる。
【００７７】
（４）〜（７）の具体例は、上記関数に限定されない。
変換手段がチャレンジＣと、外部から観察できない定数Ｓの影響を受けるため、変換のバリエーションが大きく増える。これにより、前述の通信データ盗聴を用いた変換手段の解読が攻撃者にとって困難となる。例えば、Ｓを１２８ビットパラメータとすることで、攻撃者の総当り総数は２１２８となり、現実時間内では解読不可能となる。すなわち、本実施形態のシステム２０を用いることで、通信データ盗聴による変換手段の解読を用いた攻撃を回避することができる。また、本実施形態に従うシステム２０では、攻撃者がＣＰＵ１１００に対して高度なリバースエンジアリングを行い、関数Ｆの処理内容を解読した場合にも安全性を確保することができる。
【００７８】
本実施形態のシステム２０のＣＰＵ１１００は、共有値を記憶するメモリ１１４０を含んでいる点を除けば、前実施形態のＣＰＵ１００と同一である。
親機の認証チップ１２００は、実施形態２の親機の認証チップ２００と類似の構成を有しているが、共有値Ｓを記憶するメモリ１２８０を含む点が異なっている。
【００７９】
子機の認証チップ１３００＿１、．．．、１３００＿ｎは、実施形態２の子機の認証チップ認証チップ３００と類似の構成を有するが、共有値Ｓを記憶するメモリ１３８０を含む点が異なっている。また、子機の認証チップ１３００＿１、．．．、１３００＿ｎは、親機の認証チップ１２００と同じ構成を有する。
【００８０】
図１４は、本発明の第３実施形態に従うシステムのＣＰＵ１１００で実行される処理のフローチャートを示す図であり、図１５は本発明の第３の実施形態に従うシステムの認証チップで実行される処理のフローチャートを示す図である。
【００８１】
ＣＰＵ１１００は、Ｓ１３０１で認証対象の子機番号ｉを決定し、Ｓ１３０２に進む。Ｓ１３０２では、チャレンジＣとして用いるために乱数を生成する。Ｓ１３０２の次のＳ１３０３では、Ｓ１３０２で生成されたチャレンジＣをＳ１３０１で決定されたｉ番目の子機の認証チップ１３００＿ｉに送信する。
【００８２】
ｉ番目の子機の認証チップ１３００＿ｉでは、Ｓ１３５１で親機のＣＰＵ１１００によって送信されたチャレンジＣを受信する。次に、Ｓ１３５２では、認証チップ１３００＿ｉのレスポンス生成回路３２４中の秘密鍵記憶部３２６に記憶されている秘密鍵ＫとチャレンジＣを用いて、レスポンスとしての出力値Ｒ＝Ｅｎｃ（Ｃ、Ｋ）を生成する。次のＳ１３５３では、内部不揮発性メモリ３４０に記憶されたアドレス情報を元に、変換の繰り返し回数ｔｉを決定する。実施形態２と同様、繰り返し回数ｔｉは、たとえば、アドレスに現れる数を順に並べて得られる整数であっても良い。Ｓ１３５３に引き続くＳ１３５４からＳ１３５７では、出力値Ｒにｔｉ回関数ＦＳ、Ｃを作用させる。関数ＦＳ、Ｃは、共有値ＳおよびチャレンジＣによって決まる。より詳細には、Ｓ１３５４で整数であるダミー変数ｊに０を代入する。Ｓ１３５５でダミー変数の値を１つ増加させ、Ｓ１３５６でｊとｔｉを比較する。Ｓ１３５６でｊがｔｉより小さければＳ１３５７で現在のレスポンス値に関数ＦＳ、Ｃを作用させ、レスポンス値を更新して、Ｓ１３５４に戻る。Ｓ１３５６でｊがｔｉより大きければ現在のレスポンスＲの値をＣＰＵ１１００に送信して、ｉ番目の子機の認証チップ１３００＿ｉの処理を終了する。
【００８３】
ＣＰＵ１１００は、Ｓ１３０４でｉ番目の子機の認証チップ１３００＿ｉからのレスポンスＲの値をレスポンスＲＱとして受信する。次に、Ｓ１３０５でチャレンジＣを今度は、親機の認証チップ１２００に送信する。
【００８４】
親機の認証チップ１２００では、先のｉ番目の子機の認証チップ１３００＿ｉと同じ処理を行うが、ｉ番目の子機の認証チップ１３００＿ｉの場合とは、関数ＦＳ、Ｃを作用させる回数がｔ０であり、ｔｉとは異なる。
【００８５】
ＣＰＵ１１００は、Ｓ１３０６で親機の認証チップ１２００からレスポンスＲの値をレスポンスＲＰとして受信する。次に、Ｓ１３０７でｔｉとｔ０を比較し、ｔｉがｔ０より大きければＳ１３０８に進み、そうでなければＳ１３０９に進む。Ｓ１３０８では、ＲＰに関数ＦＳ、Ｃを、ｔｉ−ｔ０回作用させた値とＲＱが等しいかどうかを判定する。もし等しければ認証チップ１３００＿ｉを含むｉ番目の子機を正規品と判定する。そうでなければ、ｉ番目の子機を正規品ではないと判定する。Ｓ１３０９では、ＲＱに関数ＦＳ、Ｃを、ｔ０−ｔｉ回作用させた値とＲＰが等しいかどうかを判定してＣＰＵ１００の処理を終了する。もし等しければ認証チップ１３００＿ｉを含むｉ番目の子機を正規品と判定してＣＰＵ１００の処理を終了する。そうでなければ、ｉ番目の子機を正規品ではないと判定してＣＰＵ１００の処理を終了する。
【００８６】
前述のように、上記第２実施形態に従うシステム１０では、関数Ｆのおよその内容を攻撃者が推定しながら、シリアルバス上のデータ盗聴を用いることで、変換手段０〜変換手段ｎの内容を完全に特定する攻撃に弱い可能性があった。関数Ｆは、ハードウェア実装において効率的な処理である必要があるため、ＬＦＳＲ、加算、ＸＯＲ、剰余演算、ハッシュ関数などその手段は限られる。よって、攻撃者は、Ｆはこれらのいずれであるか、組み合わせであるかを推定しながら、その推定が実際に正しいかを、シリアルバス上のデータ盗聴を用いて判定することができる。例えば認証チップ０、認証チップ１の２つを用いて、かつｔ０＝０、ｔ１＝１にセットした場合、ＲＰ＝Ｒ、ＲＱ＝Ｆ（Ｒ）となる。このＲＰ、ＲＱは、攻撃者にも容易に観察可能な値である。このとき、攻撃者はＦの演算内容の推定を行い、その推定が実際に正しいかを、ＲＱ＝Ｆ（ＲＰ）が成立するかどうか盗聴されたＲＰ、ＲＱから判定することで確認することが出来てしまうおそれがあった。しかし、本実施形態に従うシステム２０では、変換手段がチャレンジＣと、外部から観察できない定数Ｓの影響を受けるため、変換のバリエーションを大きく増やすことができる。これにより、前述の通信データ盗聴を用いた変換手段の解読が攻撃者にとって困難となる。例えば、定数Ｓを１２８ビットパラメータとすることで、攻撃者の総当り総数は２１２８となり、現実時間内では解読不可能となる。すなわち、本実施形態に従うシステム２０を用いることで、第２実施形態に従うシステム１０に対する、通信データ盗聴による変換手段の解読を用いた攻撃に対する耐性をさらに高めることができる。
【００８７】
（第４実施形態）
図１６〜２０を参照して本発明の第４の実施形態に従う認証システム３０を説明する。図１６は本実施形態に従うシステム３０を示す図、図１７は本実施形態に従うシステム３０で、認証チップ２２００（認証チップ０）をＣＰＵに装着する際にＣＰＵで実行される処理のフローチャートを示す図、図１８は本実施形態に従うシステム３０で、認証チップ２２００（認証チップ０）をＣＰＵ２１００に装着する際に認証チップ２２００で実行される処理のフローチャートを示す図、図１９は、本実施形態に従うシステム３０で、認証チップ２３００＿ｉ（認証チップｉ）を含むｉ番目の子機を認証する際に、ＣＰＵ２１００で実行される処理のフローチャートを示す図、図２０は、本実施形態に従うシステム３０で、認証チップ２３００＿ｉ（認証チップｉ）を含むｉ番目の子機を認証する際に、認証チップｉで実行される処理のフローチャートを示す図である。
【００８８】
第３実施形態に従うシステム２０では、ＣＰＵに対する高度なリバースエンジニアリングを行った場合に、前述の共有値Ｓが特定できてしまう可能性がある。攻撃者は、ＣＰＵが実行するプログラムのＲＯＭコードを解析することで、変換手段ＦＳ、Ｃ（）を特定できる可能性がある。しかし、本実施形態では、ＣＰＵに対する高度なリバースエンジニアリングを行った場合でも、変換手段ＦＳ、Ｃ（）を特定することが難しいシステムが提供される。
【００８９】
図１６に示されているシステム３０は、基本的には、図１３に示されている前実施形態のシステム２０と同じであるが、親機に装着されている認証チップ２２００（認証チップ０）とＣＰＵ２１００の間のみで、固有値Ｉが共有されている。この固有値Ｉは、親機全体の製造時に、親機のＣＰＵ２１００に認証チップ２２００（認証チップ０）を最初に装着した時点でＣＰＵ２１００と認証チップ２２００の間で共有され、それぞれの内部の不揮発性メモリ２１６０、２２３２に格納され、以降書き換えられない値である。この値は、ＣＰＵ固体間で異なる値である。子機は、ＣＰＵと認証チップ０が固有値の共有を完了した後に、親機に対して取り付けられるため、認証チップ２３００＿１〜２３００＿ｎ（認証チップ１〜認証チップｎ）は、固有値Ｉを知ることはできない。
【００９０】
認証チップ内で提供される複数の変換手段のうち、親機が用いる変換手段０だけは、Ｓ、Ｃを用いた変換手段ＦＳ，Ｃｔ０（）を実行した後、この出力に対しさらに事前固有値Ｉをパラメータに含めた変換関数ＧＩ（）を実行することで、レスポンスＲＰ＝ＧＩ（ＦＳ，Ｃｔ０（Ｘ））を出力する。変換手段１〜ｎについては、実施形態３と同じ方法を用いる。すなわち、変換手段ｉは、レスポンスＲＱ＝ＦＳ，Ｃｔｉ（Ｘ）を出力する。ただし、実施形態２、３と異なり、本実施形態においては、全てのｉ＝１、２、．．．、ｎに対してｔ０＞ｔｉ、すなわちｔ０が最大の繰り返し回数として設定されなければならないという制約がある。この制約は、ＣＰＵ２１００が正規品の子機からのレスポンスＲＱを識別するための条件である。ＧＩ（X）は、固有値Ｉをパラメータとした１入力1出力関数ならば、どのような関数でも良いが、例えば以下のような関数を用いることで、回路規模を抑えた効率的な実装が可能となる。
（８）パラメータつきＸＯＲ
（９）パラメータつき剰余演算
（１０）パラメータつきハッシュ演算
（１１）パラメータつきＬＦＳＲ減算
【００９１】
上記（８）の例としては、
【数４】
2012120671.tif 000006
ただしＩはパラメータ（固有値）、が含まれる。
【００９２】
上記（９）の例としては、||はビット結合、ｑ（Ｘ）は１２８ビット既約多項式、ｍｏｄを剰余として、
ＧＩ（X）＝（Ｉ||Ｘ）  ｍｏｄ  ｑ（Ｘ）
が含まれる。
上記（１０）の例としては、
【数５】
2012120671.tif 000007
の最下位１２８ビットであり、ただし、ＳＨＡ１（Ｘ）はＸのＳＨＡ−１ハッシュ関数出力、が含まれる。
【００９３】
上記（１１）の例としては、
ＧＩ（Ｘ）＝ＬＦＳＲ（Ｉ、７５）−ＬＦＳＲ（Ｘ、３３）
が含まれる。
【００９４】
本実施形態のシステム３０のＣＰＵ２１００は、共有値Ｓを記憶するメモリ１１４０および固有値Ｉを記憶するメモリ２１６０を含んでいる。
親機の認証チップ２２００は、実施形態３の親機の認証チップ１２００と類似の構成を有しているが、固有値Ｉを記憶する不揮発性メモリ２２３２を含むこと、変換０を行う回路２２２ａとセレクタ２２３の間に関数ＧＩを用いて変換Ｇを行う回路２２３０を含む点が異なっている。変換Ｇを行う回路２２３０は、共有値Ｓを記憶するメモリ２２８０にも接続されている。
【００９５】
子機の認証チップ２３００＿１、．．．、２３００＿ｎは、固有値Ｉを記憶するメモリ２２３２を含まないことを除けば、親機の認証チップ２２００と同一の構成を有している。
【００９６】
親機側の変換手段０による変換では、親機製造時にＣＰＵと認証チップ０の間で共有され、以後変更されない固有値Iに基づいて行われる。この値は、子機側から観察できないため、この値を攻撃者が推定することは困難である。例えば、固有値Iを１２８ビットパラメータとすることで、攻撃者の総当り総数は２１２８となり、現実時間内では解読不可能となる。ただし、固有値IはＣＰＵ内部にも格納されている値であるため、ＣＰＵに対して高度なリバースエンジニアリングを行うことで、攻撃者が解読できる可能性がある。しかし、固有値ＩはＣＰＵ固体ごとに異なる値であるため、例え高度な技法を用いて固有値Iを解読することに攻撃者が成功したとしても、認証チップ偽造上の大きな脅威にはならない。なぜなら、解読された固有値Iは、親機の固体ごとに異なる値であるため、攻撃者は特定固体の親機に対してのみ利用可能な偽造チップを製造することができるが、全ての固体に共通する偽造チップにはならない。本実施形態に従うシステム４０では、ＣＰＵのＲＯＭコードの解析を用いた高度なリバースエンジニアリング技術に成功したとしても、親機に搭載される認証チップ０の変換手段はＣＰＵ固体ごとに異なるため、全ての親機に用いることが可能な子機認証チップの偽造品の量産は不可能となり、攻撃者は偽造品を市場に流通させることを防ぐことが出来る。
【００９７】
図１７および１８を参照して、本実施形態に従うシステム３０で、認証チップ０をＣＰＵに装着する際の処理を説明する。
【００９８】
ＣＰＵ２１００は、Ｓ１５０１で、ＣＰＵ２１００内で発生させた乱数、現在時刻、ＣＰＵＩＤ、シリアル番号などを用いて、個体ごとにユニークな固有値Ｉを生成する。次にＳ１５０２で、固有値Ｉを親機の認証チップ（認証チップ０）２２００に送信する。
【００９９】
Ｓ１５５１で、親機の認証チップ２２００は、バス４００を介してＣＰＵ２１００から固有値Ｉを受信する。次に、Ｓ１５５２で、固有値Ｉを認証チップ２２００の不揮発性メモリ２２３２に書き込み、Ｓ１５５３に進む。Ｓ１５５３では、親機に応答を送信する。この応答は、たとえば、不揮発性メモリ２２３２に書き込まれた値と固有値Ｉを比較した結果など、Ｓ１５５２の処理を確認できる情報である。
【０１００】
ＣＰＵ２１００は、この親機の認証チップ２２００からの応答をＳ１５０３で受信する。次のＳ１５０４でＣＰＵ２１００は、Ｓ１５０３で受信した親機の認証チップ２２００からの応答が、親機の認証チップ２２００での固有値Ｉの書き込み動作が正常に行われたことを示している場合にはＳ１５０５に進み、固有値ＩをＣＰＵ２１００の不揮発性メモリ２１６０に書き込んでＣＰＵ２１００の処理を終了する。Ｓ１５０４での判定が、Ｓ１５０３で受信した親機の認証チップ２２００からの応答が、親機の認証チップ２２００での固有値Ｉの書き込み動作が正常に行われなかったことを示している場合には、ＣＰＵ２１００はエラー終了する。
【０１０１】
図１９は本実施形態に従うシステム３０で、認証チップｉを含むｉ番目の子機を認証する際に、ＣＰＵ２１００で実行される処理のフローチャートを示す図であり、図２０は、本実施形態に従うシステムで、認証チップｉを含むｉ番目の子機を認証する際に、認証チップ２３００＿ｉで実行される処理のフローチャートを示す図である。
【０１０２】
ＣＰＵ２１００は、Ｓ１６０１で認証対象の子機番号ｉを決定し、Ｓ１６０２に進む。Ｓ１６０２では、チャレンジＣとして用いるために乱数を生成する。Ｓ１６０２の次のＳ１６０３では、Ｓ１６０２で生成されたチャレンジＣをＳ１６０１で決定されたｉ番目の子機の認証チップ２３００＿ｉに送信する。
【０１０３】
ｉ番目の子機の認証チップ２３００＿ｉでは、Ｓ１６５１で親機のＣＰＵ２１００によって送信されたチャレンジＣを受信する。次に、Ｓ１６５２では、認証チップ３００＿ｉのレスポンス生成回路３２４中の秘密鍵記憶部３２６に記憶されている秘密鍵ＫとチャレンジＣを用いて、レスポンスとしての出力値Ｒ＝Ｅｎｃ（Ｃ、Ｋ）を生成する。次のＳ１６５３では、内部不揮発性メモリ３４０に記憶されたアドレス情報を元に、変換の繰り返し回数ｔｉを決定する。Ｓ１６５３に引き続くＳ１６５４からＳ１６５７では、レスポンスＲにｔｉ回関数ＦＳ、Ｃを作用させる。関数ＦＳ、Ｃは、共有値ＳおよびチャレンジＣによって決まる。より詳細には、Ｓ１６５４で整数であるダミー変数ｊに０を代入する。Ｓ１６５５でダミー変数の値を１つ増加させ、Ｓ１６５６でｊとｔｉを比較する。Ｓ１６５６でｊがｔｉより小さければ現在のレスポンス値に関数ＦＳ、Ｃを作用させ、レスポンス値を更新して、Ｓ１６５５に戻る。Ｓ１６５６でｊがｔｉより大きければ現在のレスポンスＲの値をＣＰＵ２１００に送信して、ｉ番目の子機の認証チップ２３００＿ｉの処理を終了する。
【０１０４】
ＣＰＵ２１００は、Ｓ１６０４でｉ番目の子機の認証チップ２３００＿ｉからのレスポンスＲの値をレスポンスＲＱとして受信する。次に、Ｓ１６０５でチャレンジＣを今度は、親機の認証チップ２２００に送信する。
【０１０５】
親機の認証チップ２２００では、先のｉ番目の子機の認証チップ２３００＿ｉと同じ処理を行うが、ｉ番目の子機の認証チップ２３００＿ｉの場合とは、関数ＦＳ、Ｃを作用させる回数がｔ０であり、ｔｉとは異なる。
【０１０６】
ＣＰＵ２１００は、Ｓ１６０６で親機の認証チップ２２００からのレスポンスＲの値をレスポンスＲＰとして受信する。次に、Ｓ１６０７でＲＰがＧＩ（ＦＳ、Ｃｔ０−ｔｉ（Ｘ））に等しいかどうかを判定する。もし等しければｉ番目の子機を正規品と判定してＣＰＵ１００の処理を終了する。そうでなければ、ｉ番目の子機を正規品ではないと判定してＣＰＵ２１００の処理を終了する。
【０１０７】
上の説明では、Ｓ１６０３およびＳ１６０４の処理後にＳ１６０５およびＳ１６０６の処理を実行した。しかしながら、Ｓ１６０５およびＳ１６０６の処理の後でＳ１６０３およびＳ１６０４の処理を行っても良い。つまり、親機の認証チップ２２００へのチャレンジＣの送信およびレスポンスＲＰの受信と子機の認証チップ２３００＿ｉへのチャレンジＣの送信およびレスポンスＲＱの受信の順序は任意である。
このような構成を用いることによって、高度なリバースエンジニアリングを用いた攻撃すらも回避した安全な認証を実現することができる。また、通信データの盗聴から変換手段を特定することを困難とすることができる。
【０１０８】
（第５実施形態）
図２１から２３を参照して、本発明の第５の実施形態に従うシステム４０を説明する。本実施形態は、図１０に示されている第２実施形態のシステム１０の特別な場合である。即ち、本実施形態では、変換関数はＦ０（Ｘ）＝ＸとＦ１（Ｘ）＝ＳＨＡ−１出力の最下位１２８ビットの２種である。
親機に認証チップ３２００、子機に認証チップ３３００が接続されている。チャレンジ、レスポンス、秘密鍵全て１２８ビットである。関数Fとして、ＳＨＡ−１出力の最下位１２８ビットを利用する。関数Ｆの繰り返し回数は、ｔ０＝１、ｔ１＝０である。すなわち、ＣＰＵ１００から送信されるチャレンジＣに対して、ＡＥＳ暗号化を用いて出力値Ｒ＝Ｅｎｃ（Ｃ、Ｋ）を生成し、認証チップのアドレスが親機ならばＲＰ＝Ｆ（Ｒ）を、子機ならばＲＱ＝ＲをレスポンスとしてＣＰＵ１００に返信する。ＲＰ、ＲＱを受け取ったＣＰＵ１００は、Ｆ（ＲＱ）を計算し、ＲＰと一致するならば子機を正規品と判定し、不一致ならば非正規品と判定する。
【０１０９】
図２２は、本実施形態に従うシステム４０のＣＰＵ１００で実行される処理のフローチャートを示す図であり、図２３は本実施形態に従うシステム４０の親機の認証チップ３２００および子機の認証チップ３３００で実行される処理のフローチャートを示す図である。
【０１１０】
ＣＰＵ１００は、Ｓ１８０１でチャレンジＣとして用いるために乱数を生成し、Ｓ１８０２に進む。Ｓ１８０２では、Ｓ１８０２で生成されたチャレンジＣを子機の認証チップ３３００に送信する。
【０１１１】
子機の認証チップ３３００では、Ｓ１８５１で親機のＣＰＵ１００によって送信されたチャレンジＣを受信する。次に、Ｓ１８５２では、認証チップ３３００のレスポンス生成回路３２４中の秘密鍵記憶部３２６に記憶されている秘密鍵ＫとチャレンジＣを用いて、レスポンスとしての出力値Ｒ＝Ｅｎｃ（Ｃ、Ｋ）を生成する。次のＳ１８５３では、内部不揮発性メモリ３４０に記憶されたアドレス情報を元に、変換の繰り返し回数ｔｉを決定する。ここでｔ１＝１である。Ｓ１８５３に引き続くＳ１８５４からＳ１８５７では、出力値Ｒにｔ１回関数Ｆ＝ＳＨＡ−１出力の最下位１２８ビット、を作用させる。より詳細には、Ｓ１８５４で整数であるダミー変数ｊに０を代入する。Ｓ１８５５でダミー変数の値を１つ増加させ、Ｓ１８５６でｊとｔ１を比較する。Ｓ１８５６でｊがｔ１より小さければ現在のレスポンス値にＳ１８５７で関数Ｆを作用させ、レスポンス値を更新して、Ｓ１８５５に戻る。Ｓ１８５６でｊがｔｉより大きければ現在のレスポンスＲの値をＣＰＵ１００に送信して、子機の認証チップ３３００の処理を終了する。
【０１１２】
ＣＰＵ１００は、Ｓ１８０３で子機の認証チップ３３００からのレスポンスＲの値をレスポンスＲＱとして受信する。次に、Ｓ１８０５４チャレンジＣを今度は、親機の認証チップ２００に送信する。
【０１１３】
親機の認証チップ２２００では、先の子機の認証チップ３３００と同じ処理を行うが、子機の認証チップ３３００の場合とは、関数Ｆを作用させる回数がｔ０＝１であり、ｔ１＝０とは異なっている。
【０１１４】
ＣＰＵ１００は、Ｓ１８０５で親機の認証チップ２２００からのレスポンスＲの値をレスポンスＲＰとして受信する。次に、Ｓ１８０６で、ＲＰに関数Ｆを作用させた値Ｆ（ＲＰ）とＲＱが等しいかどうかを判定する。もし等しければ子機を正規品と判定してＣＰＵ１００の処理を終了する。そうでなければ、子機を正規品ではないと判定する。
【０１１５】
上の説明では、ＣＰＵ２１００は、Ｓ１８０２およびＳ１８０３の処理後にＳ１８０４およびＳ１８０５の処理を実行した。しかしながら、Ｓ１８０４およびＳ１８０５の処理の後でＳ１８０２およびＳ１８０３の処理を行っても良い。
【０１１６】
（第６実施形態）
図２４から２６を参照して、本発明の第６の実施形態に従うシステム５０を説明する。本実施形態は、図１３に示されている第３実施形態のシステム２０の特別な場合である。即ち、本実施形態では、子機の認証チップは子機１の認証チップ４３００＿１と子機２の認証チップ４３００＿２の２つを含み、レスポンス生成回路３２４で生成されたレスポンスに作用する関数として、
【数６】
2012120671.tif 000008
が用意されている。
【０１１７】
本実施形態の構成を図２４に示す。親機に認証チップ４２００、子機に２個の認証チップ４３００＿１、４３００＿２が接続されている。チャレンジ、レスポンス、秘密鍵全て１２８ビットである。関数ＦＳ、Ｃとして、パラメータ付ＸＯＲ加算
【数７】
2012120671.tif 000009
を利用する。関数ＦＳ、Ｃの繰り返し回数は、ｔ０＝０、ｔ１＝１、ｔ２＝２である。すなわち、ＣＰＵ１１００から送信されるチャレンジＣに対して、レスポンス生成回路２２４、３２４においてＡＥＳ暗号化を用いてＲ＝Ｅｎｃ（Ｃ、Ｋ）を生成し、認証チップのアドレスが親機ならばＲＰ＝Ｒを、子機１ならばＲＱ＝ＦＳ、Ｃ（Ｒ）を、子機２ならＲＱ＝ＦＳ、Ｃ２（Ｒ）を、レスポンスとしてＣＰＵ１００に返信する。ＲＰ、ＲＱを受け取ったＣＰＵ１１００は、Ｆｔｉ-ｔ０（ＲＰ）を計算し、ＲＱと一致するならば子機を正規品と判定し、不一致ならば非正規品と判定する。すなわち、ｉ＝１の場合はＦＳ、Ｃ（ＲＰ）＝ＲＱであるか、ｉ＝２の場合はＦＳ、Ｃ２（ＲＰ）＝ＲＱであるかを判定する。
【０１１８】
本実施形態の認証システム５０の処理を説明する。
図２５は、本実施形態に従うシステム５０のＣＰＵ１１００で実行される処理のフローチャートを示す図であり、図２６は本実施形態に従うシステム５０の親機または子機の認証チップ４２００、４３００＿ｉ（ｉ＝１、２）で実行される処理のフローチャートを示す図である。
【０１１９】
ＣＰＵ１００は、Ｓ２００１で認証対象の子機番号ｉを決定し、Ｓ２００２に進む。ここでｉ＝１または２である。Ｓ２００２では、チャレンジＣとして用いるために乱数を生成する。Ｓ２００２の次のＳ２００３では、Ｓ２００２で生成されたチャレンジＣをＳ２００１で決定されたｉ番目の子機の認証チップ４３００＿ｉに送信する。
【０１２０】
ｉ番目の子機の認証チップ４３００＿ｉでは、Ｓ２０５１で親機のＣＰＵ１１００によって送信されたチャレンジＣを受信する。次に、Ｓ２０５２では、認証チップ４３００＿ｉのレスポンス生成回路３２４中の秘密鍵記憶部３２６に記憶されている秘密鍵ＫとチャレンジＣを用いて、レスポンスとしての出力値Ｒ＝Ｅｎｃ（Ｃ、Ｋ）を生成する。次のＳ２０５３では、内部不揮発性メモリ３４０に記憶されたアドレス情報を元に、変換の繰り返し回数ｔｉを決定する。Ｓ２０５３に引き続くＳ２０５４からＳ２０５７では、レスポンスＲにｔｉ回関数ＦＳ、Ｃを作用させる。関数ＦＳ、Ｃは、共有値ＳおよびチャレンジＣによって決まる。より詳細には、Ｓ２０５４で整数であるダミー変数ｊに０を代入する。Ｓ２０５５でダミー変数の値を１つ増加させ、Ｓ２０５６でｊとｔｉを比較する。Ｓ２０５６でｊがｔｉより小さければ現在のレスポンス値にＳ２０５７で関数ＦＳ、Ｃを作用させ、レスポンス値を更新して、Ｓ２０５５に戻る。Ｓ２０５６でｊがｔｉより大きければ現在のレスポンスＲの値をＣＰＵ１１００に送信して、ｉ番目の子機の認証チップ１３００＿ｉの処理を終了する。
【０１２１】
ＣＰＵ１１００は、Ｓ２００４でｉ番目の子機の認証チップ４３００＿ｉからレスポンスＲの値をレスポンスＲＱとして受信する。次に、Ｓ２００５でチャレンジＣを今度は、親機の認証チップ４２００に送信する。
【０１２２】
親機の認証チップ４２００では、先のｉ番目の子機の認証チップ４３００＿ｉと同じ処理を行うが、ｉ番目の子機の認証チップ４３００＿ｉの場合、関数ＦＳ、Ｃを作用させる回数がｔ０であり、ｔｉとは異なる。今の場合、ｔ０＝０であるので、関数ＦＳ、Ｃは作用させない。
【０１２３】
ＣＰＵ１１００は、Ｓ２００６で親機の認証チップ４２００からのレスポンスＲの値をレスポンスＲＰとして受信する。次にＳ２００７では、ＲＱがＦＳ、Ｃｔ０−ｔｉ（ＲＰ）に等しいかどうかを判定する。もし等しければｉ番目の子機を正規品と判定してＣＰＵ１１００の処理を終了する。そうでなければ、ｉ番目の子機を正規品ではないと判定してＣＰＵ１１００の処理を終了する。
【０１２４】
（第７実施形態）
図２７から３１を参照して、本発明の第７の実施形態に従うシステム６０を説明する。本実施形態は、図１６に示されている第４実施形態のシステム３０の特別な場合である。即ち、本実施形態では、子機の認証チップは子機１の認証チップ５３００＿１と子機２の認証チップ５３００＿２の２つを含み、レスポンス生成回路３２４で生成されたレスポンスに作用する変換関数ＦＳ、Ｃとしてパラメータ付剰余算ＦＳ、Ｃ（Ｘ）＝（Ｓ||Ｃ||Ｘ）  ｍｏｄ  ｑ（Ｘ）、変換関数ＧＩとして、
【数８】
2012120671.tif 000010
の最下位１２８ビットを用いる。
【０１２５】
親機に認証チップ５２００、子機に２個の認証チップ５３００＿１、５３００＿２が接続されている。チャレンジ、レスポンス、秘密鍵全て１２８ビットである。関数ＦＳ、Ｃとしてパラメータ付剰余算ＦＳ、Ｃ（Ｘ）＝（Ｓ||Ｃ||Ｘ）  ｍｏｄ  ｑ（Ｘ）を、関数ＧＩとしてパラメータつきハッシュ演算：
【数９】
2012120671.tif 000011
の最下位１２８ビット、を利用する。ただし、ｑ（Ｘ）は１２８ビット既約多項式である。関数ＦＳ、Ｃの繰り返し回数は、ｔ０＝２、ｔ１＝１，ｔ２＝０である。つまり、ＣＰＵ２１００から送信されるチャレンジＣに対して、ＡＥＳ暗号化を用いてＲ＝Ｅｎｃ（Ｃ、Ｋ）を生成し、認証チップのアドレスが親機ならばＲＰ＝ＧＩ（ＦＳ、Ｃ２（Ｒ））を、子機１ならばＲＱ＝ＦＳ、Ｃ（Ｒ）を、子機２ならＲＱ＝Ｒを、レスポンスとしてＣＰＵ２１００に返信する。ＲＰ、ＲＱを受け取ったＣＰＵ２１００は、ＧＩ（ＦＳ、Ｃ２−ｔｉ（ＲＱ））を計算し、ＲＰと一致するならば子機を正規品と判定し、不一致ならば非正規品と判定する。すなわち、ｉ＝１の場合はＧＩ（ＦＳ、Ｃ（ＲＱ））=ＲＰであるか、ｉ＝２の場合はＧＩ（ＦＳ、Ｃ２（ＲＱ））=ＲＰであるかを判定する。
【０１２６】
図２８および２９を参照して、本実施形態に従うシステム６０で、認証チップ５２００をＣＰＵ２１００に装着する際の処理を説明する。
ＣＰＵ２１００は、Ｓ２２０１で、ＣＰＵ２１００内で発生させた乱数、現在時刻、ＣＰＵＩＤ、シリアル番号などを用いて、ＣＰＵ固体ごとにユニークな固有値Ｉを生成する。次にＳ２２０２で、固有値Ｉを親機の認証チップ（認証チップ０）５２００に送信する。
【０１２７】
Ｓ２２５１で、親機の認証チップ５２００は、バス４００を介してＣＰＵ２１００から固有値Ｉを受信する。次に、Ｓ２２５２で、固有値Ｉを認証チップ５２００の不揮発性メモリ２２３２に書き込み、Ｓ２２５３に進む。Ｓ２２５３では、親機に応答を送信する。この応答は、たとえば、不揮発性メモリ２２３２に書き込まれた値と固有値Ｉを比較した結果など、Ｓ２２５２の処理を確認できる情報である。
【０１２８】
ＣＰＵ２１００は、この親機の認証チップ５２００からの応答をＳ２２０３で受信する。次のＳ２２０４でＣＰＵ２１００は、Ｓ２２０３で受信した親機の認証チップ５２００からの応答が、親機の認証チップ５２００での固有値Ｉの書き込み動作が正常に行われたことを示している場合にはＳ２２０５に進み、固有値ＩをＣＰＵ２１００の不揮発性メモリ２１６０に書き込んでＣＰＵ２１００の処理を終了する。Ｓ２２０４での判定が、Ｓ２２０３で受信した親機の認証チップ５２００からの応答が、親機の認証チップ５２００での固有値Ｉの書き込み動作が正常に行われなかったことを示している場合には、ＣＰＵ２１００はエラー終了する。
【０１２９】
図３０は本実施形態に従うシステム６０で、認証チップ（認証チップ〜２）５２００、５３００＿１、５３００＿２を含む親機およびｉ番目の子機を認証する際に、ＣＰＵ２１００で実行される処理のフローチャートを示す図であり、図３１は、本実施形態に従うシステムで、認証チップｉを含む親機またはｉ番目の子機を認証する際に、認証チップ５２００、５３００＿ｉ（ｉ＝１、２）で実行される処理のフローチャートを示す図である。
【０１３０】
ＣＰＵ２１００は、Ｓ２３０１で認証対象の子機番号ｉを決定し、Ｓ２３０２に進む。Ｓ２３０２では、チャレンジＣとして用いるために乱数を生成する。Ｓ２３０２の次のＳ２３０３では、Ｓ２３０２で生成されたチャレンジＣをＳ２３０１で決定されたｉ番目の子機の認証チップ５３００＿ｉに送信する。
【０１３１】
ｉ番目の子機の認証チップ５３００＿ｉでは、Ｓ２３５１で親機のＣＰＵ２１００によって送信されたチャレンジＣを受信する。次に、Ｓ２３５２では、認証チップ５３００＿ｉのレスポンス生成回路３２４中の秘密鍵記憶部３２６に記憶されている秘密鍵ＫとチャレンジＣを用いて、レスポンスとしての出力値Ｒ＝Ｅｎｃ（Ｃ、Ｋ）を生成する。次のＳ２３５３では、内部不揮発性メモリ３４０に記憶されたアドレス情報を元に、変換の繰り返し回数ｔｉを決定する。Ｓ２３５３に引き続くＳ２３５４からＳ２３５７では、レスポンスＲにｔｉ回関数ＦＳ、Ｃを作用させる。関数ＦＳ、Ｃは、共有値ＳおよびチャレンジＣによって決まる。より詳細には、Ｓ１６５４で整数であるダミー変数ｊに０を代入する。Ｓ２３５５でダミー変数の値を１つ増加させ、Ｓ２３５６でｊとｔｉを比較する。Ｓ２３５６でｊがｔｉより小さければＳ２３５７で現在のレスポンス値に関数ＦＳ、Ｃを作用させ、レスポンス値を更新して、Ｓ２３５５に戻る。Ｓ２３５６でｊがｔｉより小さくなければ、Ｓ２３５８に進む。Ｓ２３５８では、現在認証中のチップが親機であるかを判定する。今の場合、認証チップは親機のものではないので、現在のレスポンスＲの値をＣＰＵ２１００に送信して、ｉ番目の子機の認証チップ５３００＿ｉの処理を終了する。
【０１３２】
ＣＰＵ２１００は、Ｓ２３０４でｉ番目の子機の認証チップ２３００＿ｉからのレスポンスＲの値をレスポンスＲＱとして受信する。次に、Ｓ２３０５でチャレンジＣを今度は、親機の認証チップ５２００に送信する。
【０１３３】
親機の認証チップ５２００では、先のｉ番目の子機の認証チップ５３００＿ｉと同じ処理を行うが、ｉ番目の子機の認証チップ５３００＿ｉの場合とは、関数ＦＳ、Ｃを作用させる回数がｔ０であり、ｔｉとは異なること、Ｓ２３５８での現在認証中のチップが親機であるかの判定で、今の場合、親機であるから、Ｓ２３５９に進むことが異なる。Ｓ２３５９では、固有値ＩとＧＩ計算回路２２３０を用いて、ＧＩ（ＦＳ、Ｃ２−ｔｉ（ＲＱ））を計算する。
【０１３４】
ＣＰＵ２１００は、Ｓ２３０６で親機の認証チップ２２００からのレスポンスＲの値をレスポンスＲＰとして受信する。次に、Ｓ１６０７でＲＰがＧＩ（ＦＳ、Ｃ２−ｔｉ（ＲＱ））に等しいかどうかを判定する。もし等しければｉ番目の子機を正規品と判定してＣＰＵ２１００の処理を終了する。そうでなければ、ｉ番目の子機を正規品ではないと判定してＣＰＵ２１００の処理を終了する。
【図１】
2012120671.tif 000012
【図２】
2012120671.tif 000013
【図３】
2012120671.tif 000014
【図４】
2012120671.tif 000015
【図５】
2012120671.tif 000016
【図６】
2012120671.tif 000017
【図７】
2012120671.tif 000018
【図８】
2012120671.tif 000019
【図９】
2012120671.tif 000020
【図１０】
2012120671.tif 000021
【図１１】
2012120671.tif 000022
【図１２】
2012120671.tif 000023
【図１３】
2012120671.tif 000024
【図１４】
2012120671.tif 000025
【図１５】
2012120671.tif 000026
【図１６】
2012120671.tif 000027
【図１７】
2012120671.tif 000028
【図１８】
2012120671.tif 000029
【図１９】
2012120671.tif 000030
【図２０】
2012120671.tif 000031
【図２１】
2012120671.tif 000032
【図２２】
2012120671.tif 000033
【図２３】
2012120671.tif 000034
【図２４】
2012120671.tif 000035
【図２５】
2012120671.tif 000036
【図２６】
2012120671.tif 000037
【図２７】
2012120671.tif 000038
【図２８】
2012120671.tif 000039
【図２９】
2012120671.tif 000040
【図３０】
2012120671.tif 000041
【図３１】
2012120671.tif 000042
【手続補正書】
【提出日】平成25年9月19日(2013.9.19)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
第１の認証チップを含む第１の装置を制御するプロセッサにより、第２の認証チップを含む第２の装置を認証する認証方法であって、
乱数を生成し、
前記乱数を前記第２の認証チップおよび前記第２の認証チップに送信し、
前記第１の認証チップに秘密鍵として記憶された整数と、前記乱数に対して暗号化をするための暗号化関数を作用させて生成された出力値に、前記第１の認証チップに設定された値で決まる第１の変換関数を作用させて得られる第１のレスポンス値を前記第１の認証チップから受信し、
前記第２の認証チップに秘密鍵として記憶された前記第１の認証チップに秘密鍵として記憶された前記整数と同じ整数と、前記乱数に対して暗号化をするための暗号化関数を作用させて生成された前記出力値に、前記第２の認証チップに設定された値で決まる第２の変換関数を作用させて得られる第２のレスポンス値を前記第２の認証チップから受信し、
前記第１のレスポンス値に、前記第１の認証チップに設定された値と前記第２の認証チップに設定された値の大きさの差の数で決まる第３の変換関数を作用させて得られる値と前記第２のレスポンス値を比較して、または前記第２のレスポンス値に前記第３の変換関数を作用させて得られる値と前記第１のレスポンス値を比較して、前記第２の装置を認証する、
認証方法。
【請求項２】
前記第１の認証チップに設定された値で決まる前記第１の変換関数は所定の関数の冪乗であり、その指数は前記第１の認証チップに設定された値で決まる第１の指数であり、前記第２の認証チップに設定された値で決まる第２の変換関数は前記所定の関数の冪乗であり、その指数は前記第２の認証チップに設定された値で決まり前記第１の指数と異なる第２の指数であり、前記第１の認証チップに設定された値と前記第２の認証チップに設定された値の大きさの差の数で決まる前記第３の変換関数は、前記所定の関数の冪乗であり、その指数は、前記第１の指数と前記第２の指数の差の絶対値に等しい第３の指数である、請求項１の方法。
【請求項３】
前記第１の変換関数は前記第１の認証チップに設定された値と予め前記第２の認証チップと共通に設定された整数である共有値により決定され、前記第２の変換関数は前記第２の認証チップに設定された値と前記共有値により決定される、請求項１又は２に記載の方法。
【請求項４】
前記第１のレスポンス値は、前記出力値に、前記第１の変換関数に加えて、前記プロセッサに特有の値である固有値で決まる第４の変換関数を作用させて得られる、請求項１乃至３のいずれか一項の方法。
【請求項５】
前記プロセッサ、前記第１の認証チップ、および前記第２の認証チップは互いの通信のためにシリアルバス接続されており、前記親機認証チップおよび前記子機認証チップは前記通信のためにそれぞれ第１のアドレスおよび第２のアドレスを有し、前記親機認証チップに設定された値および前記子機認証チップに設定された値は、それぞれ前記第１のアドレスおよび前記第２のアドレスから決まる、請求項１乃至４のいずれか一項の方法。
【請求項６】
第１の装置が第２の装置の認証を行う認証システムであって、
前記第１の装置に含まれ、乱数を生成し、前記乱数を前記第１の装置が含む第１の認証チップと前記第２の装置が含む第２の認証チップとに送信し、前記第１の認証チップと前記第２の認証チップから、前記乱数に対する応答として第１のレスポンス値と第２のレスポンス値とをそれぞれ受信し、前記第１のレスポンス値と前記第２のレスポンス値を用いて前記第２の装置を認証する処理を実行するプロセッサと、
前記乱数を受信する第１の乱数受信手段と、秘密鍵としての整数を記憶する第１の記憶手段と、秘密鍵として記憶された整数および前記乱数に対して暗号化をするための暗号化関数を作用させて出力値を生成する第１の暗号演算手段と、生成された前記出力値に、第１の設定された値で決まる第１の変換関数を作用させて前記第１のレスポンス値を生成する第１のレスポンス値生成手段と、を含み、前記プロセッサに接続されている第１の認証チップと、
前記乱数を受信する第２の乱数受信手段と、秘密鍵としての整数を記憶する第２の記憶手段と、秘密鍵として記憶された整数および前記乱数に対して暗号化をするための暗号化関数を作用させて前記出力値を生成する第２の暗号演算手段と、前記出力値に、第２の設定された値で決まる第２の変換関数を作用させて前記第２のレスポンス値を生成する第２のレスポンス値生成手段と、を含み、少なくとも前記プロセッサに接続されている第２の認証チップと、
を含み、
前記プロセッサは、前記第１のレスポンス値に、前記第１の設定された値と前記第２の設定された値の大きさの差の絶対値で決まる第３の変換関数を作用させて得られる数と前記第２のレスポンス値を比較して、または前記第２のレスポンス値に前記第３の変換関数を作用させて得られる数と前記第１のレスポンス値を比較して、前記子機を認証する処理を実行すること、
を特徴とする認証システム。
【請求項７】
前記プロセッサと前記第１の認証チップおよび前記第２の認証チップをシリアルバス接続で接続するバスを含む、請求項６の認証システム。
【請求項８】
前記第１の認証チップおよび前記第２の認証チップは前記通信のためにそれぞれ第１のアドレスおよび第２のアドレスを有し、前記第１の認証チップに設定された値および前記第２の認証チップに設定された値は、それぞれ前記第１のアドレスおよび前記第２のアドレスから決まる、請求項６又は７に記載の認証システム。
【請求項９】
前記第１の認証チップに設定された値で決まる前記第１の変換関数は所定の関数の冪乗であり、その指数は前記第１の認証チップに設定された値で決まる第１の指数であり、前記第２の認証チップに設定された値で決まる第２の変換関数は前記所定の関数の冪乗であり、その指数は前記第２の認証チップに設定された値で決まり前記第１の指数と異なる第２の指数である、請求項６乃至８のいずれか一項の認証システム。
【請求項１０】
前記第１の変換関数は前記第１の認証チップに設定された値および予め前記第２の認証チップと共通に設定された整数である共有値で決まり、前記第２の変換関数は前記第２の認証チップに設定された値および前記共有値で決まる、請求項６乃至９のいずれか一項の認証システム。
【請求項１１】
前記第１のレスポンス値は、前記出力値に、前記第１の変換関数に加えて、前記プロセッサに特有の値である固有値で決まる第４の変換関数を作用させて得られる、請求項６乃至１０のいずれか一項の認証システム。
【請求項１２】
整数である秘密鍵を記憶するメモリと、
整数を受信する受信手段と、
前記整数および前記秘密鍵に暗号化のための暗号化関数を作用させて生成された出力値に、変換関数を作用させて得られるレスポンス値を生成するレスポンス値生成手段と、
前記レスポンス値を送信する送信手段、
を含む認証チップ。
【請求項１３】
前記レスポンス値生成手段は、さらに、前記通信におけるアドレスを記憶するアドレス記憶手段を含み、
前記変換関数は、前記レスポンス値は前記アドレスで決まる、
請求項１２の認証チップ。
【請求項１４】
さらに、
整数である共有値を記憶するメモリを含み、
前記変換関数は前記アドレスおよび前記共有値で決まる、
請求項１２又は１３に記載の認証チップ。
【請求項１５】
前記認証チップはプロセッサに接続され、
前記レスポンス値は、前記出力値に前記変換関数を作用させ、さらに前記プロセッサに特有の値である固有値で決まる別の変換関数を作用させて得られる、
請求項１２乃至１４のいずれか一項の認証チップ。
【国際調査報告】
2012120671.tif 000043
2012120671.tif 000044
2012120671.tif 000045