(57)【要約】  暗号化処理装置は、共有鍵を記憶するメモリと、整数である乱数を発生する乱数発生器と、前記共有鍵に対して、少なくとも前記乱数によって定まるビット転置を施し、第１のランダム化鍵を生成するビット転置器と、前記乱数を、別の暗号化処理装置に送信し、前記別の暗号化処理装置に記憶されている共有鍵と、前記乱数によって定まるビット転置を施して生成される第２のランダム化鍵を用いた暗号化によって得られるレスポンスを前記別の暗号化処理装置から受信する通信器と、前記レスポンスを前記共有鍵を用いて復号して前記乱数と比較する、または前記乱数を前記共有鍵を用いて暗号化して前記レスポンスと比較することによって前記別の暗号化処理装置を認証する認証器と、を含むことを特徴とする。
2013014778.tif 000002
【特許請求の範囲】
【請求項１】
暗号化処理装置であって、
共有鍵を記憶するメモリと、
整数である乱数を発生する乱数発生器と、
前記共有鍵に対して、少なくとも前記乱数によって定まるビット転置を施し、第１のランダム化鍵を生成するビット転置器と、
前記乱数を、別の暗号化処理装置に送信し、前記別の暗号化処理装置に記憶されている共有鍵と、前記乱数によって定まるビット転置を施して生成される第２のランダム化鍵を用いた暗号化によって得られるレスポンスを前記別の暗号化処理装置から受信する通信器と、
前記レスポンスを前記共有鍵を用いて復号して前記乱数と比較する、または前記乱数を前記共有鍵を用いて暗号化して前記レスポンスと比較することによって前記別の暗号化処理装置を認証する認証器と、
を含む暗号化処理装置。
【請求項２】
前記ビット転置器は、セレクタ回路、線形帰還シフトレジスタ回路、および結線回路の少なくとも一つを含む、請求項１の暗号化処理装置。
【請求項３】
前記ビット転置器は、前記共有鍵を分割して得られる部分鍵に対して、少なくとも前記乱数によって定まるビット転置を施し、ランダム化部分鍵を生成し、前記ランダム化部分鍵を一つに圧縮して、前記第１のランダム化鍵を生成する、請求項１の暗号化処理装置。
【請求項４】
前記別の暗号化処理装置の前記ビット転置器は、前記共有鍵を分割して得られる部分鍵に対して、前記ビット転置の入力値として前記乱数によって定まるビット転置を施し、ランダム化部分鍵を生成し、前記ランダム化部分鍵を一つに圧縮して、前記第１のランダム化鍵を生成する、請求項１または２の暗号化処理装置。
【請求項５】
前記ランダム化部分鍵の圧縮は、ＸＯＲ回路、セレクタ回路、および加算または減算回路の少なくとも一つを用いて行われる、請求項４の暗号化処理装置。
【請求項６】
共有鍵を有する第１の暗号化処理装置を含む第１のデバイスによる、前記共有鍵と同一の鍵を有する第２の暗号化処理装置を含む第２のデバイスの認証方法であって、
乱数を発生することと、
前記共有鍵に対して、少なくとも前記乱数によって定まるビット転置を施し、第１のランダム化鍵を生成することと、
前記乱数を、前記第２の暗号化処理装置に送信することと、
前記第２の暗号化処理装置から、前記第２の暗号化処理装置に記憶されている前記鍵と前記乱数によって定まるビット転置を施して生成される第２のランダム化鍵を用いた暗号化によって得られるレスポンスを受信することと、
前記レスポンスを前記共有鍵を用いて復号して前記乱数と比較する、または前記乱数を前記共有鍵を用いて暗号化して前記レスポンスと比較すること、
を含む認証方法。
【請求項７】
前記第１の暗号化処理装置では、前記共有鍵を分割して得られる部分鍵に対して、少なくとも前記乱数によって定まるビット転置を施し、ランダム化部分鍵を生成し、前記ランダム化部分鍵を一つに圧縮して、前記第１のランダム化鍵を生成する、請求項６の認証方法。
【請求項８】
前記前記第２の暗号化処理装置では、前記整数の入力値を分割して得られる部分鍵に対して、前記ビット転置の入力値として前記乱数によって定まるビット転置を施し、ランダム化部分鍵を生成し、前記ランダム化部分鍵を一つに圧縮して、前記第１のランダム化鍵を生成する、請求項７または８の認証方法。
【請求項９】
共有鍵を記憶するメモリと、
整数である乱数を発生する乱数発生器と、
前記共有鍵に対して、少なくとも前記乱数によって定まるビット転置を施し、前記メモリに記憶された共有鍵の代わりに用いられる第１のランダム化鍵を生成するビット転置器と、
を含む共有鍵暗号方式で用いられる鍵生成装置。
【請求項１０】
前記ビット転置器は、セレクタ回路、線形帰還シフトレジスタ回路、および結線回路の少なくとも一つを含む、請求項９の鍵生成装置。
【請求項１１】
前記ビット転置器は、前記共有鍵を分割して得られる部分鍵に対して、少なくとも前記乱数によって定まるビット転置を施し、ランダム化部分鍵を生成し、前記ランダム化部分鍵を一つに圧縮して、前記第１のランダム化鍵を生成する、請求項１０または１１の鍵生成装置。
【請求項１２】
前記ランダム化部分鍵の圧縮は、ＸＯＲ回路、セレクタ回路、および加算または減算回路の少なくとも一つを用いて行われる、請求項１１の鍵生成装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、共通鍵暗号方式を用いる暗号化処理装置および認証方法に関する。
【背景技術】
【０００２】
近年、様々なものに認証機能を有する暗号デバイスが組み込まれるようになった。たとえば、プリンタではカートリッジの認証を行うため、医療器具では使い捨てパーツの認証を行うために、そのような暗号デバイスが用いられる。暗号デバイスを用いることによって、正規品と偽造品を区別することができ、粗悪な偽造品により発生する被害から顧客を守ることができる。【０００３】
認証機能で用いられる暗号方式の代表例としては、公開鍵暗号方式と共通鍵暗号方式が知られている。公開鍵暗号方式とは、暗号化と復号で異なる鍵を用いる方式であり、暗号化を行うための鍵（公開鍵）を一般に公開する代わりに、暗号文を復号するための鍵（秘密鍵）を受信者のみの秘密情報とすることで安全性を保つ方式である。これに対し、共通鍵暗号方式と呼ばれるものは、暗号化と復号で同一の鍵（秘密鍵）を用いる方式であり、この秘密鍵を送信者と受信者以外の第三者にわからない情報とすることで安全性を保つ方式である。いずれの暗号方式を用いた場合でも、秘密鍵が外部に漏洩しないことがセキュリティ上、最も重要な前提である。この前提が守られる限りは、公開鍵暗号、共通鍵暗号のいずれを用いた認証も安全となる。しかし、共通鍵暗号の方が公開鍵暗号より回路規模が小さく、低コスト化には適しているため、特に組み込み機器においては共通鍵暗号を用いた認証が広く普及している。【０００４】
セキュリティ機能を備えた組み込み機器に求められる性質として、耐タンパ性と呼ばれるものがある。耐タンパとは、覗き見防止の意味であり、組み込み機器の外部から観察された情報により、組み込み機器内部に格納された重要情報が漏洩しない性質を指す。耐タンパ性を実現するためには、組み込み機器が備える正規の入出力端子からのアクセスによる情報漏洩防止はもちろんのこと、マイクロプローブを用いて内部回路を直接覗き込む非正規アクセスに対する情報漏洩防止も実現しなければならない。通常のＩＣチップのハードウェア構成では、マイクロプローブを用いて内部回路を直接覗き込む攻撃に耐えることはできない。よって、耐タンパ性を実現するには、外部からの物理的・論理的な不正アクセスを防ぐための専用のハードウェア構成をもったＩＣチップとして製造する必要がある。【０００５】
安全な認証を実現するための一般的な方法としては、耐タンパ性をもつ認証機器に対して、機器製造時に認証に用いる秘密鍵を内部に書き込み、製造後は鍵を外部に取り出さない方法が用いられる。こうすることで、不正な第三者が秘密鍵を入手し、認証機器の偽造を防止することができると考えられていた。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特表２００８−５２６０７８
【特許文献２】特開２０１０−２２６７０７
【特許文献３】特開平４−１１７０３８
【非特許文献】
【０００７】
【非特許文献１】Paul C. Kocher, "Timing Attacks on Implementations of Diffie-Hellman, RSA, DSS, and Other Systems," Advances in cryptology-CRYPTO 1996, Springer-Verlag, pp. 104-113
【非特許文献２】Thomas S. Messerges, Ezzy A. Dabbish and Robert H. Sloan, "Power Analysis Attacks of Modular Exponentitiation in Smartcards," Cryptographic Hardware and Embedded Systems (CHES’99), Springer-Verlag, pp. 144-157
【非特許文献３】Paul Kocher, Joshua Jaffe, and Benjamin Jun, "Differential Power Analysis," in proceedings of Advances in Cryptology-CRYPTO’99, Springer-Verlag, 1999, pp. 388-397
【非特許文献４】S. Chari, C. Jutla, J.R. Rao, P. Rohatgi, "An Cautionary Note Regarding Evaluation of AES Candidates on Smart-Cards," Second Advanced Encryption Standard Candidate Conference, March 1999
【非特許文献５】T. S. Messerge, Ezzy A. Dabbish and Robert H. Sloan, "Investigations of Power Attacks on Smartcards," Proceedings of USENIX Workshop on Smartcard Technology, March 1999
【非特許文献６】P. Kocher, J. Jaffe and B. Jun, "Differential power analysis", CRYPOT’99, LNCS 1666, pp. 388-397, 1999
【非特許文献７】Thomas S. Messerges, "Securing the AES Finalists Against Power Analysis Attacks," in proceedings of Fast Software Encryption Workshop 2000, Springer-Verlag, April 2000
【非特許文献８】岡田 壮一、鳥居直哉、長谷部高行, "スマートカード向け AES ハードウェアの試作 岡田 壮一", Technical report of IEICE. ISEC 101(214), pp.111-118, 2001-07-18
【発明の概要】
【発明が解決しようとする課題】
【０００８】
しかし、製造後は鍵を外部に取り出さない認証機器を含めた組み込み装置であっても、サイドチャネル攻撃と呼ばれる組み込み機器に対する物理破壊を伴わずに、外部から観察可能な情報を用いて秘密鍵を解読する攻撃に対して脆弱性を有することが知られている。つまり、製造後は鍵を外部に取り出さない機器であっても、秘密鍵が漏洩することが判明している。よって、回路規模を抑えつつ、サイドチャネル攻撃対策を施すことが耐タンパ上の課題の一つとなっている。
【課題を解決するための手段】
【０００９】
暗号化処理装置は、共有鍵を記憶するメモリと、整数である乱数を発生する乱数発生器と、前記共有鍵に対して、少なくとも前記乱数によって定まるビット転置を施し、第１のランダム化鍵を生成するビット転置器と、前記乱数を、別の暗号化処理装置に送信し、前記別の暗号化処理装置に記憶されている共有鍵と、前記乱数によって定まるビット転置を施して生成される第２のランダム化鍵を用いた暗号化によって得られるレスポンスを前記別の暗号化処理装置から受信する通信器と、前記レスポンスを前記共有鍵を用いて復号して前記乱数と比較する、または前記乱数を前記共有鍵を用いて暗号化して前記レスポンスと比較することによって前記別の暗号化処理装置を認証する認証器と、を含む暗号化処理装置、を含むことを特徴とする。【００１０】
また、共有鍵を有する第１の暗号化処理装置を含む第１のデバイスによる、前記共有鍵と同一の鍵を有する第２の暗号化処理装置を含む第２のデバイスの認証方法は：乱数を発生すること；前記共有鍵に対して、少なくとも前記乱数によって定まるビット転置を施し、第１のランダム化鍵を生成すること；前記乱数を、前記第２の暗号化処理装置に送信すること；前記第２の暗号化処理装置から、前記第２の暗号化処理装置に記憶されている前記鍵と前記乱数によって定まるビット転置を施して生成される第２のランダム化鍵を用いた暗号化によって得られるレスポンスを受信すること；前記レスポンスを前記共有鍵を用いて復号して前記乱数と比較する、または前記乱数を前記共有鍵を用いて暗号化して前記レスポンスと比較すること、を含むことを特徴とする。
【発明の効果】
【００１１】
秘密鍵をビット転置条件が乱数によって変化する回路を用いてビット転置を行いランダム化鍵を生成し、ランダム化されたランダム化鍵を、秘密鍵の代わりに使用することによって、サイドチャネル攻撃に対する安全性と、小規模・高速な暗号処理を両立する暗号化処理装置を得ることができる。
【図面の簡単な説明】
【００１２】
【図１】チャレンジアンドレスポンス認証プロトコルの概要を示す図である。
【図２】共通鍵暗号を用いた一般的なチャレンジアンドレスポンス認証プロトコル（片側認証、暗号化・復号）の処理を示す図である。
【図３】共通鍵暗号を用いた別の一般的なチャレンジアンドレスポンス認証プロトコル（両側認証、暗号化・復号）の処理を示す図である。
【図４】共通鍵暗号の一般的な処理（鍵ＸＯＲ処理とテーブル変換の組み合わせ)を示す図である。
【図５】電力消費曲線の例を示す図である。
【図６】スパイクのある電力差分曲線の例を示す図である。
【図７】スパイクのない電力差分曲線の例を示す図である。
【図８】ＡＥＳにおいてサイドチャンネル攻撃が成功する要因を説明する図である。
【図９】単純な鍵のランダム化による認証プロトコルの例（片側認証、暗号化・復号）の処理を示す図である。
【図１０】本発明の各実施形態に適用されるランダム化鍵の生成の処理（手法１）を説明する図である。
【図１１】本発明の各実施形態に適用されるシステムの概略図である。
【図１２】本発明の各実施形態に適用されるシステムを実現可能なハードウェアシステムの一例の構成図である。
【図１３】各実施形態に適用されるランダム化鍵の生成の別の処理（手法２）を説明する図である。
【図１４】本発明の第１の実施形態にしたがうチャレンジアンドレスポンス認証プロトコル（片側認証、暗号化・復号）の処理を示す図である。
【図１５】本発明の第２の実施形態したがうチャレンジアンドレスポンス認証プロトコル（両側認証、暗号化・復号）の処理を示す図である。
【図１６】本発明の第３の実施形態したがうチャレンジアンドレスポンス認証プロトコル（両側認証、暗号化のみ）の処理を示す図である。
【図１７】本発明の第４の実施形態したがうチャレンジアンドレスポンス認証プロトコル（片側認証、暗号化のみ）の処理を示す図である。
【図１８】本発明の第５の実施形態したがうチャレンジアンドレスポンス認証プロトコル（両側認証、親機は暗号化のみ、子機は暗号化・復号）の処理を示す図である。
【図１９】本発明の第６の実施形態したがうチャレンジアンドレスポンス認証プロトコル（両側認証、親機は暗号化・復号、子機は暗号化のみ）の処理を示す図である。
【図２０】ランダム化鍵生成の処理の第１の実施例を示す図である。
【図２１】回路規模の見積もり基準の表を示す図である。
【図２２】２−１ＮＡＮＤゲートの回路の例を示す図である。
【図２３】２−１ＮＯＲゲートの回路の例を示す図である。
【図２４】ＮＯＴゲートの回路の例を示す図である。
【図２５】レジスタの回路の例を示す図である。
【図２６】２−１ＸＯＲ（排他論理和）ゲートの回路の例を示す図である。
【図２７Ａ】２−１セレクタ（ＭＵＸ)の回路の例を示す図である。
【図２７Ｂ】２−１セレクタ（ＤＥＭＵＸ)の回路の例を示す図である。
【図２８】シフト／巡回レジスタの回路の例である。
【図２９】ＬＳＦＲ／剰余演算回路の例を示す図である。
【図３０】第１の実施例の回路規模の見積もりの表を示す図である。
【図３１】ランダム化鍵の生成の処理の第２の実施例を示す図である。
【図３２】ランダム化鍵の生成の処理の第３の実施例を示す図である。
【図３３】ランダム化鍵の生成の処理の第４の実施例を示す図である。
【図３４】ランダム化鍵の生成の処理の第５の実施例を示す図である。
【図３５】ランダム化鍵の生成の処理の第６の実施例を示す図である。
【図３６Ａ】ランダム化鍵の生成の処理の第７の実施例を示す図である。
【図３６Ｂ】図３６Ａ中のビット転置回路を示す図である。
【図３７】比較例と各実施形態に従うサイドチャンネル攻撃への対策のための回路規模の増分の比較を示す表を示すである。
【発明を実施するための形態】
【００１３】
以下、図面を参照しながら、共通鍵暗号方式を用いる暗号化処理装置および認証方法を説明する。最初に比較例を説明するが、その後、本発明の第１から第６の実施形態を、比較例に対する利点を含めて説明する。尚、以下の説明において、複数の図面にわたり類似の構成要素または類似の機能を有する構成要素には、類似の参照符号を付して初出時以外、詳細な説明を省略する。
【００１４】
認証チップは、複数の電子機器間で通信を行い、通信相手が正規の機器であることを確認するためのシステムにおいて利用される。例えば、プリンタとインクカートリッジ間でカートリッジがメーカの純正品であることを確認するようなシステムにおいては必須となる。
【００１５】
認証機能で用いられる暗号方式の代表例としては、公開鍵暗号方式と共通鍵暗号方式が知られている。公開鍵暗号方式とは、暗号化と復号で異なる鍵を用いる方式であり、暗号化を行うための鍵（公開鍵）を一般に公開する代わりに、暗号文を復号するための鍵（秘密鍵）を受信者のみの秘密情報とすることで安全性を保つ方式である。これに対し、共通鍵暗号方式と呼ばれるものは、暗号化と復号で同一の鍵（秘密鍵）を用いる方式であり、この秘密鍵を送信者と受信者以外の第三者にわからない情報とすることで安全性を保つ方式である。いずれの暗号方式を用いた場合でも、秘密鍵が外部に漏洩しないことがセキュリティ上、最も重要な前提である。この前提が守られる限りは、公開鍵暗号、共通鍵暗号のいずれを用いた認証も安全となる。しかし、共通鍵暗号の方が公開鍵暗号より回路規模が小さく、低コスト化には適しているため、特に組み込み機器においては共通鍵暗号を用いた認証が広く普及している。
【００１６】
セキュリティ機能を備えた組み込み機器に求められる性質として、耐タンパ性と呼ばれるものがある。耐タンパとは、覗き見防止の意味であり、組み込み機器の外部から観察された情報により、組み込み機器内部に格納された重要情報が漏洩しない性質を指す。耐タンパ性を実現するためには、組み込み機器が備える正規の入出力端子からのアクセスによる情報漏洩防止はもちろんのこと、マイクロプローブを用いて内部回路を直接覗き込む非正規アクセスに対する情報漏洩防止も実現しなければならない。通常のＩＣチップのハードウェア構成では、マイクロプローブを用いて内部回路を直接覗き込む攻撃に耐えることはできない。よって、耐タンパ性を実現するには、外部からの物理的・論理的な不正アクセスを防ぐための専用のハードウェア構成をもったＩＣチップとして製造する必要がある。
【００１７】
安全な認証を実現するための一般的な方法としては、耐タンパ性をもつ認証機器に対して、機器製造時に認証に用いる秘密鍵を内部に書き込み、製造後は鍵を外部に取り出さない方法が用いられる。こうすることで、不正な第三者が秘密鍵を入手し、認証機器の偽造を防止することができると考えられていた。
【００１８】
しかし、製造後は鍵を外部に取り出さない認証機器を含めた組み込み装置であっても、サイドチャネル攻撃と呼ばれる組み込み機器に対する物理破壊を伴わずに、外部から観察可能な情報を用いて秘密鍵を解読する攻撃に対して脆弱性を有することが知られている。つまり、製造後は鍵を外部に取り出さない機器であっても、秘密鍵が漏洩することが判明している。よって、コスト上昇を抑えつつ、サイドチャネル攻撃対策を施すことが耐タンパ上の課題の一つとなった。
【００１９】
サイドチャネル攻撃とは、組み込み機器に対する物理破壊を伴わずに、外部から観察可能な情報を用いて秘密鍵を解読する攻撃である。１９９６年には、処理時間を観察するタイミング攻撃が提案されたが、対策も容易であったため大きな脅威とならなかった。しかし1998年に、１９９８年に消費電力を観察する電力解析攻撃（Ｐｏｗｅｒ  Ａｎａｌｙｓｉｓ）と呼ばれる手法が提案され、大きな脅威として現在でも注目されている。電力解析攻撃とは、組み込み機器に様々な入力データを与えた時の電力消費データを収集・解析することで、内部の鍵情報を推定する手法である。特に、組み込み機器がスマートカードチップや認証チップなどの単体のＬＳＩチップである場合、消費電力の測定が容易であるため、PA対策は耐タンパ上の大きな課題である。電力解析攻撃を用いることで、公開鍵暗号、秘密鍵暗号共に暗号プロセッサから秘密鍵を推定できることが知られている。
【００２０】
電力解析攻撃には、単純電力解析（Ｓｉｎｇｌｅ  Ｐｏｗｅｒ  Ａｎａｌｙｓｉｓ）と差分電力解析（Ｄｉｆｆｅｒｅｎｔｉａｌ  Ｐｏｗｅｒ  Ａｎａｌｙｓｉｓ)の２種類が存在する。単純電力解析は暗号プロセッサにおける単一の電力消費データの特徴から秘密鍵の推定を行う方式、差分電力解析は多数の電力消費データの差分を解析することで秘密鍵の推定を行う方式である。共通鍵暗号方式に限定した場合、単純電力解析は対策が容易であるためほとんど有効ではないが、差分電力解析が有効な攻撃法として知られている。たとえば、ＲＳＡなどの公開鍵暗号に対する差分電力解析を用いた解読法については、非特許文献２などの文献にて述べられている。また、共通鍵暗号方式において、旧来の標準として利用されているＤＥＳ（Ｄａｔａ  Ｅｎｃｒｙｐｔｉｏｎ  Ｓｔａｎｄａｒｄｓ）に対する差分電力解析を用いた解読法については、非特許文献３などで述べられている。ＤＥＳの他に、現在標準的に利用されているＡＥＳ（Ａｄｖａｎｃｅｄ  Ｅｎｃｒｙｐｔｉｏｎ  Ｓｔａｎｄａｒｄ）については、非特許文献４などの文献で差分電力解析を用いた解読の可能性が指摘されている。
【００２１】
電力解析攻撃を用いた解読技術は特に有効な方法として注目されており、様々な解読法が研究されている。また、解読技術のみならずPAによる解読を防ぐための対策技術も発展しており、解読技術と同様に重要な技術として注目されている。ただし、これらの対策技術を用いた場合、暗号処理を行う回路の回路規模が大きくなるという欠点が知られており、共通鍵暗号方式に対する専用の対策回路は、未対策の回路のおよそ２倍の回路規模が必要となる問題がある。認証チップやスマートカードなどの小型チップにおいては、暗号回路の占める回路規模の割合が非常に大きく、専用の対策回路を組み込むことはコスト増に直結するため、好ましくない。
【００２２】
以下の実施形態では、専用の対策回路を用いる代わりに、暗号を利用する上位レイヤの認証プロトコルの改良を行うことで、専用の対策回路によるコスト増を招くことなく、未対策の回路と同程度の回路規模による対策つき認証チップを実現するものである。
＜チャレンジアンドレスポンス認証プロトコル＞
認証に際しては、機器の正当性を確認するためにチャレンジアンドレスポンス認証プロトコルと呼ばれる通信プロトコルが利用される。
【００２３】
図１は、チャレンジアンドレスポンス認証プロトコルの概要を示す図である。チャレンジアンドレスポンス認証とは、デジタル情報を用いた合言葉であり、認証を行う側（親機１０１）から認証される側（子機１０２）に対し、「チャンレジ」と呼ばれる乱数を送信する。これに対し、子機１０２側では「チャンレンジ」に対して「レスポンス」と呼ばれる応答を生成し、親機１０１に返信する。親機１０１は、「チャレンジ」に対する「レスポンス」の値を判断し、もし正しいならば、子機１０２が正当な機器であると判断する。
【００２４】
「チャレンジ」として乱数を用いることで、対応する「レスポンス」が毎回変化する。これにより、再送攻撃（Ｒｅｐｌａｙ  ａｔｔａｃｋ）に対する防止措置である。再送攻撃とは、過去に外部から観察された応答を繰り返すことで、正当な機器の成りすましを行う攻撃である。つまり、乱数を用いない場合、チャンレジとレスポンスのペアが完全に固定値になるため、攻撃者がこのペアを観察することで、チャレンジに対応する適切なレスポンスを知ることができ、このレスポンスを返すチップを製造することでチップ偽造が容易となるからである。
【００２５】
図２は、共通鍵暗号方式を用いたチャレンジアンドレスポンス認証方法（プロトコル）を示す図である。「チャレンジ」に対する「レスポンス」の生成は、暗号関数を用いた方法が一般的である。どの暗号関数を用いるかによってメリットとデメリットがあるが、認証チップの場合には、公開鍵暗号よりも小規模な回路で実現可能な共通鍵暗号を用いる方法が広く用いられている。
【００２６】
図２に示すプロトコルは、親機１０１と子機１０２の認証チップ間で、秘密鍵Ｋを事前共有している。これは、親機１０１および子機１０２に搭載されるチップの製造時に秘密鍵（共有鍵）Ｋの値を書き込むことで実現できる。この秘密鍵Ｋの値が外部に漏洩しないことがセキュリティ上の最も重要な前提である。
【００２７】
Ｓ３０１で、認証を行う側の親機１０１は、乱数rを生成し、認証される側の子機１０２に送信する。Ｓ３０２では、まず、子機１０２は親機１０１から乱数ｒを受け取る。さらに、子機１０２は、親機１０１から受け取った乱数rに対し、秘密鍵Ｋを用いて暗号処理Ｅｎｃ（ｒ，Ｋ）を実行し、暗号処理によって得られた値を応答ａ＝Ｅｎｃ（ｒ、Ｋ）として親機１０１に返信する。ただし、Ｃ＝Ｅｎｃ（Ｐ，Ｋ）とは、共有鍵Ｋを用いて、平文Ｐを鍵Ｋにより暗号化した結果が暗号文Ｃであることを表す。Ｓ３０３で、応答ａを受け取った親機１０１は、秘密鍵Ｋを用いて復号処理Ｄｅｃ（ａ，Ｋ）を実行し、復号処理によって得られる値を復号結果ｒ’＝Ｄｅｃ（ａ，Ｋ）とする。そして、復号結果ｒ’と、Ｓ３０１で生成した乱数ｒを比較する。復号結果ｒ’と乱数ｒが一致するならば、親機１０１は子機１０２を正当な機器と認定する。子機１０２が、乱数ｒに対応した正当な応答ａを生成できるのは、親機１０１が有している秘密鍵Ｋと同じ鍵Ｋを有する場合に限られるからである。
【００２８】
図２に示されているプロトコルは、暗号化と復号の両方を利用したものであるが、暗号化のみを利用する方法もある。その場合は、親機１０１と子機１０２の双方で乱数ｒに対し秘密鍵Ｋによる暗号処理Ｅｎｃ（ｒ，Ｋ）を実行し、親機１０１側で双方の暗号文が一致することを確認することでチャレンジアンドレスポンス認証を実現することも可能である。
【００２９】
図３は、共通鍵暗号方式を用いた別の一般的なチャレンジアンドレスポンス認証プロトコル（両側認証、暗号化・復号）の処理を示す図である。図２で示した方式は片側認証と呼ばれ、親機１０１が子機１０２の正当性を確認するための認証プロトコルである。これでは、子機１０２は親機１０１の正当性を確認することができないため、子機１０２は親機１０１の不正を防止できない。これを防ぐために、子機１０２も親機１０１の正当性を確認する手段が必要である。これを実現するのが両側認証と呼ばれる認証プロトコルである。両側認証プロトコルでは、子機１０２が親機１０１にチャレンジを送信し、親機１０１からの応答を確認する処理が行われる。図２の認証プロトコルを両側認証に拡張した認証プロトコルを図３に示す。
【００３０】
Ｓ４０１では、図２のＳ３０１と同様、親機１０１が乱数rを生成し、子機１０２に送信する。乱数ｒを受け取った子機１０２は、Ｓ４０３で秘密鍵Ｋを用いた暗号処理Ｅｎｃ（ｒ，Ｋ）を実行する。また子機１０２は、Ｓ４０２で乱数ｓを生成する。Ｓ４０２とＳ４０３を処理する順番はどちらが先でも良いし、またはパラレルに処理がされても良い。そして、暗号処理によって得られた値を応答ａ＝Ｅｎｃ（ｒ、Ｋ）として、乱数ｓと共に親機１０１に返信する。Ｓ４０４で、応答ａを受け取った親機１０１は、秘密鍵Ｋを用いた復号処理Ｄｅｃ（ａ，Ｋ）を実行し、復号処理によって得られる値を復号結果ｒ’＝Ｄｅｃ（ａ，Ｋ）とする。そして、復号結果ｒ’と、Ｓ４０１で生成した乱数ｒを比較する。復号結果ｒ’と乱数ｒが一致するならば、親機１０１は子機１０２を正当な機器と認定する。Ｓ４０４では、さらに、秘密鍵Ｋを用いた暗号処理Ｅｎｃ（ｓ，Ｋ）を実行する、暗号処理によって得られた値ｂ＝Ｅｎｃ（ｓ，Ｋ）は子機１０２に送信される。Ｓ４０５で、親機１０１から値ｂを受け取った子機１０２は、秘密鍵Ｋを用いて復号処理Ｄｅｃ（ｂ，Ｋ）を実行し、復号処理によって得られる値を復号結果ｓ’＝Ｄｅｃ（ｂ，Ｋ）とする。そして、復号結果ｓ’と、Ｓ４０２で生成した乱数ｓを比較する。復号結果ｓ’と乱数ｓが一致するならば、子機１０２は親機１０１を正当な機器と認定する。またこの場合も、片側認証の場合と同様に、暗号化のみを利用して認証を実行することが可能である。
【００３１】
＜共通鍵暗号回路に対する差分電力解析による秘密鍵解読手法＞
図４は、共通鍵暗号方式の一般的な処理（鍵XOR処理とテーブル変換の組み合わせ)を示す図である。Ｍは平文（もしくは暗号文）などの入力データ、Ｋは拡大鍵である。図４のＫは、秘密鍵をもとに特定の処理を行うことでビット長を拡大することで生成される値である。ＭとＫの排他的論理和（ＸＯＲ）を取った結果を、特定のビット長データごとに分割し、それぞれの分割されたデータに対し、Ｓｂｏｘと呼ばれる変換テーブル演算を行う。ＭとＫは共有鍵によって異なり、例えばＤａｔａ  Ｅｎｃｒｙｐｔｉｏｎ  Ｓｔａｎｄａｒｄ（ＤＥＳ、データ暗号化標準）の場合は４８ビット、Ａｄｖａｎｃｅｄ  Ｅｎｃｒｙｐｔｉｏｎ  Ｓｔａｎｄａｒｄ（ＡＥＳ、新暗号化標準）の場合は１２８ビットである。Ｓｂｏｘのビット長は暗号の種類に依存するが、例えばＤＥＳの場合、６ビット入力４ビット出力である。ＡＥＳの場合、8８ビット入力８ビット出力である。ａビット入力ｂビット出力のＳｂｏｘの回路規模は、１ビット入力１出力に比べて、ａ×ｂ×２ａ倍となるため、入出力のビット長が大きくなるにつれ、急速に増大する。そのため、Ｓｂｏｘ入出力のビット長としては、８ビット入力８ビット出力が最も大きいものとして知られている。
【００３２】
図４に示されているＳｂｏｘの一つのテーブル変換ｗｊに関連する平文Ｍ、拡大鍵Ｋ、Ｓｂｏｘの入力、およびＳｂｏｘの出力の所定のビットをそれぞれ、ｍｉ、ｋｉ、ｘｉ、およびｚｉとする。外部から暗号を解読しようとする攻撃者にとって、これらのうち、平文と変換テーブルの所定のビット、ｍｉとｗｉは測定可能量として既知であると仮定して、拡大鍵ｋｉの所定のビットを推測することを考える。
【００３３】
一般的に、暗号デバイスの消費電力は入出力データ値のハミングウェイトに比例すると考えられている。このことが正しいことを示す実験結果は、非特許文献５などの文献に示されている。差分電力解析では暗号デバイスの消費電力波形を多数取得し、それらを解析することで秘密鍵を推定する。たとえば、非特許文献６では、ノイズ除去のため少なくとも１００以上の電力波形が必要であることが指摘されている。
【００３４】
以下では、差分電力解析による秘密鍵解読について説明する。
差分電力解析は、電力消費データの測定と、電力差分データの解析という２段階から構成される。電力消費データの測定は、攻撃者が既に知っている情報に依存して、図４のＡ、Ｂ、またはＣで行うことができる。たとえば、入力Ｍが既知で制御可能、Ｓｂｏｘの変換テーブルｗｊも既知、拡大鍵Ｋは未知であるが固定されている状況では、図４のＡ点で電力消費データを測定する。また、入力Ｍが既知で制御可能、拡大鍵Ｋは未知であるが固定されている状況では、図４のＢ点またはＣ点で電力消費データを測定する。攻撃者は、入力データ（平文）を秘密鍵Ｋによって暗号化される際の消費電力波形をオシロスコープなどで観測する。図５はそのようにして得られる電力消費曲線の例である。相違なる入力平文に対してそのような測定を統計的に十分な回数だけ行う。その測定で得られた複数の電力消費曲線の集合をＧとする。
【００３５】
次に、電力消費曲線の解析について説明する。秘密鍵Ｋは未知であるが、平文と暗号アルゴリズムは既知としているため、秘密鍵をＫ’と仮定し、秘密鍵Ｋ’の今、問題にしているビットをｋｉ’とする。既知のｍｉとｗｉと、仮定されたｋｉ’からＳｂｏｘの出力ｚｉ’＝ｗｉ（ｍｉ ＸＯＲ ｋｉ’）を演算して、ｋｉ’に対する集合Ｇ（ｋｉ’）を、次の部分集合Ｇ０（ｋｉ’）とＧ１（ｋｉ’）に分ける。
【００３６】
【数１】
2013014778.tif 000003
【００３７】
【数２】
2013014778.tif 000004
【００３８】
ここで、ｅは自然数であり、第ｅ桁目のビット値とは、ｅ番目の最下位ビット（ＬＳＢ）を表す。
【００３９】
式（１）および（２）の二つの集合Ｇ０（ｋｉ’）およびＧ１（ｋｉ’）の差分ＤＧ（ｋｉ’）を次のように定義する。
【００４０】
【数３】
2013014778.tif 000005
【００４１】
図５は、集合Ｇ０（ｋｉ’）またはＧ１（ｋｉ’）に属する電力消費曲線を平均して得られる平均電力消費曲線の例である。このような平均電力消費曲線が二つの集合Ｇ０（ｋｉ’）およびＧ１（ｋｉ’）に対して得られる。差分ＤＧ（ｋｉ’）は両者の差である。
【００４２】
差分ＤＧ（ｋｉ’）がどのような曲線になるのか考える。ｋｉ’＝ｋｉ、即ち、仮定された鍵の要素値ｋｉ’と真の鍵の要素値ｋｉが一致している場合、集合Ｇ（ｋｉ’）の部分集合Ｇ０（ｋｉ’）に属するＳｂｏｘの出力ｚｉのハミングウェイトは０である。なぜなら、仮定されたｚｉ’＝ｗｉ（ｍｉ ＸＯＲ ｋｉ’）は、これに対応する真のｚｉ＝ｗｉ（ｍｉ ＸＯＲ ｋｉ）と全てのｍｉに関して一致するからである。また、集合Ｇ（ｋｉ’）の部分集合Ｇ１（ｋｉ’）に属するＳｂｏｘの出力ｚｉのハミングウェイトは１となる。結局、ｋｉ’＝ｋｉの場合、
【００４３】
【数４】
2013014778.tif 000006
【００４４】
となる。この結果は、図６に例が示されているように、差分電力消費曲線中のスパイクの出現をもたらす。
【００４５】
一方、ｋｉ’≠ｋｉ、即ち、仮定された鍵の要素値ｋｉ’と真の鍵の要素値ｋｉが一致していない場合、仮定されたｚｉ’＝ｗｉ（ｍｉ ＸＯＲ ｋｉ’）と、これに対応する真のｚｉ＝ｗｉ（ｍｉ ＸＯＲ ｋｉ）とは無関係になる。よって、Ｇ０（ｋｉ’）においても、Ｇ１（ｋｉ’）においても、仮定されたｚｉ’と、これに対応する真のｚｉは無関係になり、
【００４６】
【数５】
2013014778.tif 000007
【００４７】
となる。図７は、ｋｉ’≠ｋｉの場合の差分電力消費曲線の例である。ｋｉ’≠ｋｉの場合の差分電力消費曲線は概ね平坦な曲線となる。
【００４８】
上述のように鍵の要素値ｋｉ’を仮定した解析を各ｉについて行えば、最終的に秘密鍵Ｋの要素全てを解読することができる。
【００４９】
図８は、ＡＥＳにおいてサイドチャンネル攻撃が成功する要因を説明する図である。一般的なＡＥＳにおける暗号処理においては、１２８ビットの拡大鍵Ｋは、１２８ビットの平文と排他的論理和（ＸＯＲ）を取った後、８ビットごとに１６分割され、１６分割されたそれぞれのデータがＳｂｏｘに入力される。攻撃者は、それぞれのＳｂｏｘの消費電力データを利用することで、８ビットごとに分割された拡大鍵Ｋ＝ｋ１５||ｋ１4||・・・||ｋ0に対し、８ビット部分鍵ｋｉについて、それぞれの総当りを実行する。つまり、１２８ビットの鍵の総当りには本来２１２８の手間が必要であるのに対し、サイドチャネル攻撃を用いることで２８の手間を１６回、つまり２８×１６=２１２に減らすことができる。すなわち、サイドチャネル攻撃に必要な手間は、Ｓｂｏｘの入力に関連した部分鍵のビット長に依存する。このビット長は共通鍵暗号方式によって変動するが、既に述べたとおりＡＥＳの８ビットが最大である。
【００５０】
以上の説明では、図４に示されているような、共通鍵暗号回路としては最も単純なものに対するＤＰＡに関して述べた。このような手法は、図４の鍵ＸＯＲ処理の前もしくが後、または前後の両方に線形変換を挿入しても成立する。
＜共通鍵暗号回路に対する差分電力解析対策手法としてのマスク法＞
従来のＤＰＡ対策法としては、暗号処理に対策を施し消費電力をランダム化する手法が存在する。この手法の代表的なものとして、マスク法（ｍａｓｋｉｎｇ  ｍｅｔｈｏｄ）と呼ばれている手法が知られている（たとえば、非特許文献７を参照。以下、「比較例１」と呼ぶ）。
【００５１】
電力解析攻撃対策なしの暗号処理において計算されるデータをＭとすると、比較例１に記載されているＤＰＡ対策は、データＭを計算する代わりに、
【００５２】
【数６】
2013014778.tif 000008
【００５３】
で表されるデータＭ’、Ｒを計算することで暗号処理を行う方法である。ここで、Ｒは乱数であり、暗号処理を実行する度に発生させる値である。この方法により、暗号処理のデータをランダムな値でマスクされる。よって、データがランダム化されることで消費電力もランダム化されるため、ＤＰＡに安全な処理を実現することができる。この方法の問題点は、Ｍ’およびＲの両方を計算する必要があるため、対策なしの回路の２倍の回路規模を必要とすることである。
【００５４】
上の方法をＡＥＳにおけるＤＰＡ対策に適用する際には、部分鍵ｋｉに関連する平文Ｍおよび乱数Ｒの部分をそれぞれ、ＭｉおよびＲｉとして、（６）式の代わりに、
【００５５】
【数７】
2013014778.tif 000009
【００５６】
で表されるデータＭｉ’、Ｒｉを計算することで暗号処理を行う。この場合も、暗号処理ごとに計算されるデータ値がランダムであるため、ＤＰＡに対して安全な処理を実現することができる。しかしながら、Ｍｉ’およびＲｉの両方を計算する必要があるため、対策なしの回路の２倍の回路規模を必要とすることである。
【００５７】
比較例１に示されるような専用の対策つき暗号回路を用いると、消費電力のランダム化がなされる代わりに、回路規模が、対策なしの回路より大きくなる。比較例１では、ラインダールアルゴリズムを実行する回路を構成している。その回路規模は、１７．６Ｋゲートであると評価されている。また、鍵長を１２８ビット専用にした場合には、回路規模は２．２Ｋゲートほど減少する。それでも、サイドチャンネル攻撃対策を施すことによって、１０Ｋゲート以上の回路規模の増大が見込まれる。
【００５８】
そこで、暗号より上位層の認証プロトコルへの改良によりサイドチャネル攻撃に安全な処理を実現する方法への要望が存在する。この場合、暗号回路そのものは、対策なしの回路をそのまま用いるため、電力解析攻撃対策によって回路規模が極端に大きくなることを回避することができる。認証プロトコルは、乱数を伴う処理であるため、この乱数を適切に利用することで、サイドチャネル攻撃に対して安全となる方法が考えられる。すなわち、一般的なチャレンジアンドレスポンス認証では、図２〜３に示されるように、固定の秘密鍵Ｋに対する暗号化処理が行われるが、これはサイドチャネル攻撃に対して脆弱である。この欠点は、乱数を用いて秘密鍵をマスク化することで一見克服できそうである。
＜単純な秘密鍵のランダム化による電力解析対策手法の比較例＞
図９は、単純な鍵のランダム化による認証プロトコル（片側認証、暗号化・復号）の例の機能ブロック図である。図９に示されている方法では、図２に示した共通鍵暗号を用いたチャレンジアンドレスポンス認証方法において、マスク法を適用して鍵Ｋの代わりに、
【００５９】
【数８】
2013014778.tif 000010
【００６０】
を用いる。
Ｓ４５１で、認証を行う側の親機１０１は、乱数rを生成し、認証される側の子機１０２に送信する。Ｓ４５２では、まず、子機１０２は親機１０１から乱数ｒを受け取る。さらに、子機１０２は、親機１０１から受け取った乱数rに対し、秘密鍵Ｋを用いて暗号処理Ｅｎｃ（ｒ，Ｋ’）を実行し、暗号処理によって得られた値を応答ａ＝Ｅｎｃ（ｒ、Ｋ’）として親機１０１に返信する。この応答ａの生成は、鍵Ｋを乱数ｒでマスクした上で生成する。Ｓ４５３で、応答ａを受け取った親機１０１は、秘密鍵Ｋ’を用いて復号処理Ｄｅｃ（ａ，Ｋ’）を実行し、復号処理によって得られる値を復号結果ｒ’＝Ｄｅｃ（ａ，Ｋ’）とする。そして、復号結果ｒ’と、Ｓ５０１で生成した乱数ｒを比較する。復号結果ｒ’と乱数ｒが一致するならば、親機１０１は子機１０２を正当な機器と認定する。子機１０２が、乱数ｒに対応した正当な応答ａを生成できるのは、秘密鍵Ｋを有する場合に限られるからである。
【００６１】
このような方法は、鍵Ｋをランダム化することで、サイドチャンネル攻撃に対して安全であるように見えるが、次のような理由で必ずしもそうではなく、脆弱であることが分かる。この方法において、乱数ｒは、親機１０１と子機１０２の間で送受信され、その結果、共有される。つまり、乱数ｒは、外部から容易に観測できると考えるべきである。もし、乱数ｒが攻撃者によって観測されれば、差分電力解析を用いて、鍵Ｋを解読することが可能である。
【００６２】
また、この方法には幾つかの変形例が考えられる。上の方法では、乱数ｒが親機１０１と子機１０２の間で送受信されることによって、外部から観測され得る。そこでたとえば、マスク化のために用いる変数を、乱数ｒではなく、さらに別の変数にすることが考えられる。たとえば、乱数ｒと式（８）のＫ’を用いて、ｍｒ＝Ｅｎｃ(ｒ、Ｋ’）を生成し、このｍｒを用いて秘密鍵Ｋをマスク化することが考えられる。しかしながら、この場合も、ｍｒを生成は、応答を生成する前であり、ｍｒを生成する処理の消費電力を測定することによって、上と同様の手法によって秘密鍵Ｋを解読することが可能である。
【００６３】
このように、乱数ｒを用いて秘密鍵Ｋをマスク化することで、一見、サイドチャンネル攻撃に対する脆弱性を克服できるように見えるが、必ずしもそうでないことが分かっている。
【００６４】
＜全般的な説明＞
図１０〜１８を参照しながら、全般的な説明を行う。
上述のように、チャンレンジアンドレスポンスプロトコルで用いる乱数をそのまま秘密鍵のマスク化に用いても、サイドチャンネル攻撃に対して安全な認証処理を実現することができない。この問題を克服するために、以下の実施形態では、以下のような手順（手法１と呼ぶ）を実行する。
【００６５】
（手順１−１）秘密鍵ＫＭＡＳＴをビット転置条件が乱数によって変化する回路を用いてビット転置を行いランダム化鍵ＫＥＮＣを生成する。
（手順１−２）ランダム化されたランダム化鍵ＫＥＮＣを、秘密鍵ＫＭＡＳＴの代わりに使用する。
【００６６】
基本アイデアは、秘密鍵を乱数を用いてランダム化し、ランダム化された秘密鍵を新たな秘密鍵として利用する点にある。このアイデアは、チャレンジアンドレスポンス認証で用いる乱数は外部から観察されることは不回避であるという前提に基づくものであり、乱数が観察されたとしても、サイドチャネル攻撃における攻撃者の手間を増やすことができる。以下で説明する各実施形態における鍵のランダム化は以下の条件を満たしている。
【００６７】
（条件１）親機および子機で共有する秘密鍵の値と乱数が分かれば、ランダム化鍵の値もわかる。
（条件２）親機および子機で共有する秘密鍵の値と乱数が分からない限り、ランダム化鍵の値はわからない。
【００６８】
このように、上記手法では、親機および子機で共有する秘密鍵の値と乱数を同時に知らない限りランダム化鍵の解読は不可能である。一般に、機器の製造時に埋め込まれた秘密鍵と、その時々で変化する乱数とを同時に知ろうとすれば、大変な手間が必要となり、チャレンジアンドレスポンス認証を破ることは非現実的となり得る。
【００６９】
図１０は、各実施形態に適用されるランダム化鍵の生成の処理（手法１）を説明する図である。ここでは、秘密鍵は１２８ビットであるとしているが、必ずしも１２８ビットである必要はない。たとえば、秘密鍵は４８ビットであっても良い。
【００７０】
メモリ１００１中に記憶されている１２８ビットの秘密鍵ＫＭＡＳＴと、乱数発生回路１００３で生成された乱数ｒは、ビット転置回路１００２に入力される。ビット転置回路１００２では、入力された乱数ｒに依存するビット転置を用いて、１２８ビットの秘密鍵ＫＭＡＳＴから１２８ビットのランダム化鍵ＫＥＮＣを生成する（手順１−１）。具体的なビット転置の方法については、後述する。
【００７１】
生成されたランダム化鍵ＫＥＮＣは、以下で図１４〜１９を参照しながら説明する、チャンレンジアンドレスポンス認証プロトコルにおいて使用される（手順１−２）。図１４〜１９に示されているチャンレンジアンドレスポンス認証プロトコルは主に、もともとの秘密鍵ＫＭＡＳＴの代わりにランダム化鍵ＫＥＮＣを用いる点で、図２および３に示されているチャンレンジアンドレスポンス認証プロトコルと異なっている。このように単純なランダム化を実行する代わりに、上記手順（１−１）〜（１−２）に示されるようなランダムな鍵圧縮を実行することで、回路規模を抑えつつ、サイドチャネル攻撃対策を施すことができる。サイドチャネル攻撃に対する安全性と、小規模・高速な暗号処理を両立することが可能となる。
【００７２】
図１１は、各実施形態に適用されるシステムの概略図である。図１と同様、システムは親機１０１と子機１０２を含む。親機１０１と子機１０２はそれぞれ、暗号化処理装置１０３、１０４、通信器１１１、１１２、比較器１１３、１１４を備えている。暗号化処理装置１０３、１０４はそれぞれ、通信器１１１、１１２と電気的に接続されている。そして、親機１０１の通信機１１１と子機１０２の通信機１１２は、通信線１１３を介して、互いに通信可能なように構成されている。
【００７３】
親機の暗号化処理装置１０３は、共有鍵として１２８ビットの秘密鍵ＫＭＡＳＴを記憶するメモリ１０５、整数である乱数ｒを発生する乱数発生器１０７、および、乱数ｒを用いて秘密鍵ＫＭＡＳＴのビットの転置を行うビット転置器１０９を含む。同様に、子機１０２も、共有鍵として１２８ビットの秘密鍵ＫＭＡＳＴを記憶するメモリ１０６、整数である乱数ｒを発生する乱数発生器１０８、および、乱数ｒを用いて秘密鍵ＫＭＡＳＴのビットの転置を行うビット転置器１１０を含む。
【００７４】
乱数発生器１０７で発生される乱数ｒは擬似乱数である。よって、乱数の発生に用いられる種が決まれば、出力される乱数は決定論的に画定される。
【００７５】
ビット転置器１１０については、後述の実施例において、ビット転置の方法と共に詳述する。
【００７６】
比較器１１３、１１４は、返信を共有鍵を用いて復号して乱数と比較する、または乱数を共有鍵を用いて暗号化して返信と比較する、ことによって別の暗号化処理装置を認証する。
【００７７】
図１２は、本発明の各実施形態に適用されるシステムを実現可能なハードウェアシステムの一例２００の構成図である。ハードウェアシステムは汎用コンピュータとして実現されても良いし、専用回路として実現されても良い。いずれの場合でも、ハードウェアシステム２００はコンピュータとしての構成を有し、親機１０１に対しても子機１０２に対しても適用され得る。
【００７８】
図１２に示されているコンピュータ２００では、中央処理装置（ＣＰＵ）２０１、メモリ２０２、外部記憶装置２０５、および通信インターフェース２０７が、バス２０８を介して互いに電気的に接続されている。オプションとして、入力装置２０３、出力装置２０４、可搬記録媒体２０９が着脱可能に装着される可搬記録媒体駆動装置２０６を含んでいても良い。メモリ２０２には、コンピュータ２００を制御するためのプログラムおよび別のコンピュータの認証を行うために実行されるチャレンジアンドレスポンス認証プロトコルに用いられるプログラムおよび秘密鍵が格納されていても良い。別のコンピュータの認証を行うために実行されるチャレンジアンドレスポンス認証プロトコルに用いられるプログラムは、本明細書中の各実施形態の全てまたは一部ならびにそれらの組み合わせを実現するために必要なコードを含んでいる。
【００７９】
図１２に示されている構成は、本発明の各実施形態を実現するはハードウェアシステムの一例であり、そのようなハードウェアシステムはこのような構成に限定されない。
【００８０】
ＣＰＵ２０１は、たとえば、メモリ２０２に収納されたプログラムに含まれる命令に応答して、コンピュータ２００の全体の制御を行う。メモリ２０２は、プログラムの実行、データの更新等の際に、外部記憶装置２０５または可搬記録媒体２０９に記憶されているプログラムまたはデータを格納するＲＡＭを含んでいても良い。秘密鍵はリードオンリーメモリ（ＲＯＭ）に収納されることが好ましい。プログラムもＲＯＭに格納されていても良い。
【００８１】
入力装置２０３は、必要に応じて、ユーザによるキーボード、マウス等による入力操作を検知し、その結果をＣＰＵ２０１に送る。出力装置２０４は、ＣＰＵ２０１からの命令に応じて、ＣＰＵ２０１の動作によって得られる結果、メモリ２０２に収納されているデータ等を表示装置、印刷装置等に出力する。
【００８２】
外部記憶装置２０５は、たとえば、ハードディスク記憶装置であっても良い。
可搬記録媒体駆動装置２０６は、光ディスク、ＳＤＲＡＭ、コンパクトフラッシュ（登録商標）等の可搬記録媒体２０９が着脱可能に装着され、外部記憶装置２０５と同様の役割を果たす。
【００８３】
通信インターフェース２０７は、コンピュータ２００を別のコンピュータに接続するための装置である。
バス２０８は、上述の構成要素を互いに電気的に接続する。
【００８４】
図１２に示されている本発明の各実施形態に適用されるシステムを実現可能なハードウェアシステムの一例２００は、ハードウェア構成としては汎用コンピュータに近いものである。しかしながら、本発明の各実施形態に適用されるシステムを実現可能なハードウェアシステムのそれぞれの少なくとも一部を、専用回路として構成しても良い。
【００８５】
図１１に示されている親機１０１および子機１０２では、暗号化処理装置１０３、１０４は、少なくとも図１２のＣＰＵ２０１、メモリ２０２、外部記憶装置２０５を含んでいる。通信機１１１、１１２は、通信インターフェース２０７を含んでいる。比較器１１３、１１４は、少なくとも図１２のＣＰＵ２０１、メモリ２０２を含んでいる。
【００８６】
暗号化処理装置１０３、１０４の乱数発生器１０７、１０８およびビット転置器１０９、１１０は、少なくとも図１２のＣＰＵ２０１、メモリ２０２を含んでいる。
【００８７】
本手法では、１２８ビットのランダム化鍵ＫＥＮＣは、元々の１２８ビットの秘密鍵ＫＭＡＳＴをビット転置することによって生成される。
【００８８】
サイドチャネル攻撃においては、Ｓｂｏｘの入力する部分鍵のビット値が全て確定しないと攻撃を実施することはできない。部分鍵のビット値を確定するためには、乱数が外部に観察されたとしても、秘密鍵全てビット値がわからない限り不可能となる。つまり、サイドチャネル攻撃を成功させるためには、従来は一つの部分鍵に関する総当り、つまり２８回の攻撃を実施すればよかったのに対し、本手法を用いることで、原理的に秘密鍵全ビットに関する総当り、つまり２１２８回の攻撃を実施する必要がある。
【００８９】
本手法は、１２８ビットの秘密鍵ＫＭＡＳＴからランダムにビットを選択して１２８ビットのランダム化鍵ＫＥＮＣを生成する。８ビット部分鍵に着目した場合、１２８ビットからランダムに８ビットを選択することを１００回以上繰り返すため、その鍵のエントロピーは、オーダーとしては、１２８８×１００＝７．２×１０１８〜２６４＝１．８×１０１９となる。これは対策の無い場合の２８のエントロピーと比較すると十分大きい。
【００９０】
また、サイドチャネル攻撃を行う場合には１００以上の波形を必要とすることを考慮すれば、秘密鍵をランダム化する本方式では現実的な時間でのサイドチャネル攻撃は不可能となる。
【００９１】
上記手順の変形例として、次のような手順（手法２と呼ぶ）も考えられる。
（手順２−１）秘密鍵ＫＭＡＳＴを特定のｍビット長毎にｎ分割する。
（手順２−２）ｎ分割された秘密鍵を乱数を用いてビット転置しそれぞれランダム化して、ｎ個のランダム化部分鍵を生成する。
（手順２−３）ｎ個のランダム化部分鍵を、圧縮回路を用いて１つに圧縮し、ランダム化鍵ＫＥＮＣとする。
（手順２−４）上記（手順２−１）〜（手順２−３）をｍ回繰り返す。
（手順２−５）ランダム化鍵ＫＥＮＣを、従来の認証プロトコルで用いられる秘密鍵ＫＭＡＳＴの代わりに使用する。
【００９２】
手順（２−１）〜（２−２）では、１２８ビットの秘密鍵ＫＭＡＳＴを任意のビット長に分割し、分割したビット列それぞれをランダムにビット転置し、圧縮することを繰り返して１２８ビットのランダム化鍵ＫＥＮＣを生成する。圧縮関数としては、一般的なＸＯＲ回路、加算回路、減算回路などを利用すればよい。また、繰り返し回数ｉは秘密鍵を８ビット分割した場合にｉ＝８となる。この場合の８ビット部分鍵のエントロピーは、（２８）１６＝２１２８となり、１２８ビットの鍵総当たりに相当する。そのため、サイドチャネル攻撃に対して手法１と同様安全である。
【００９３】
図１３は、各実施形態に適用されるランダム化鍵の生成の処理を説明する図である。ここでは、秘密鍵は１２８ビットであるとしているが、必ずしも１２８ビットである必要はない。たとえば、秘密鍵は４８ビットであっても良い。
【００９４】
メモリ１００１中に記憶されている１２８ビットの秘密鍵ＫＭＡＳＴは、所定のビット長、たとえば８ビット毎に、ｎ個の分割された秘密鍵ｋＭＡＳＴ，１、ｋＭＡＳＴ，２、…、ｋＭＡＳＴ，ｎに分割される。
【００９５】
ｎ個の分割された秘密鍵ｋＭＡＳＴ，１、ｋＭＡＳＴ，２、…、ｋＭＡＳＴ，ｎのそれぞれは、それぞれに対して乱数発生回路１００３で生成された乱数ｒ１、ｒ２、…、ｒｎと共に、ビット転置回路１００２に入力される。ビット転置回路１００２では、ｎ個の分割された秘密鍵の一つｋＭＡＳＴ，ｊと乱数ｒｊを用いて、ランダム化部分鍵ｋＥＮＣ，ｊを生成する。その結果、ｎ個のランダム化部分鍵ｋＥＮＣ，１、ｋＥＮＣ，２、…、ｋＥＮＣ，ｎが生成される。それらｎ個のランダム化部分鍵ｋＥＮＣ，１、ｋＥＮＣ，２、…、ｋＥＮＣ，ｎは、圧縮回路１００６に入力され、圧縮される。こうして得られる１２８ビットの鍵ＫＥＮＣを再び、所定のビット長、たとえば８ビット毎に分割し、ビット転置を行い、圧縮する。この作業を８回繰り返す。最終的に、１２８ビットのランダム化鍵ＫＥＮＣが生成される。そして、このランダム化鍵ＫＥＮＣを、従来の認証プロトコルで用いられる秘密鍵ＫＭＡＳＴの代わりに使用する。
【００９６】
本手法２も、上記手法１と同様に、図１１および１２に示されているシステムおよびハードウェアシステムによって実行することができる。
【００９７】
図１４〜１９をしながら、本発明の第１〜第６の実施形態に従うチャレンジアンドレスポンス認証プロトコルの処理を説明する。図１４〜１９において、親機１０１と子機１０２は、秘密鍵ＫＭＡＳＴを事前に共有している。
【００９８】
＜第１の実施形態＞
図１４を参照して本発明の第１の実施形態について説明する。本実施形態では、片側認証で、暗号化と復号の両方を利用するチャレンジアンドレスポンス認証方法（プロトコル）が開示される。
【００９９】
Ｓ５０１で、認証を行う側の親機１０１は、乱数rを生成し、認証される側の子機１０２に送信する。Ｓ５０２では、まず、子機１０２は親機１０１から乱数ｒを受け取る。さらに、子機１０２は、子機１０２に記憶されている秘密鍵ＫＭＡＳＴと、親機１０１から受け取った乱数ｒを用いて、ランダム化鍵ＫＥＮＣ＝ＲＡＮＤ（ＫＭＡＳＴ，ｒ）を生成する。ここで、ｃ＝ＲＡＮＤ（ａ，ｂ）とは、鍵ａに対して、乱数ｂを用いてランダム化する処理を施すことによって、ランダム化鍵ｃが得られることを表す。さらに、Ｓ５０３で、子機１０２は、親機１０１から受け取った乱数rに対し、ランダム化鍵ＫＥＮＣを用いて暗号処理Ｅｎｃ（ｒ，ＫＥＮＣ）を実行し、暗号処理によって得られた値を応答ａ＝Ｅｎｃ（ｒ，ＫＥＮＣ）として親機１０１に返信する。ただし、Ｑ＝Ｅｎｃ（Ｐ，Ｋ）とは、共有鍵Ｋを用いて、平文Ｐを鍵Ｋにより暗号化した結果が暗号文Ｑであることを表す。Ｓ５０４で、応答ａを受け取った親機１０１は、親機１０１自身に記憶されている秘密鍵ＫＭＡＳＴと、Ｓ５０１で生成した乱数ｒとを用いてランダム化鍵ＫＥＮＣ＝ＲＡＮＤ（ＫＭＡＳＴ，ｒ）を生成する。この鍵は、Ｓ５０２で子機１０２が生成したランダム化鍵と同じである。このランダム化鍵ＫＥＮＣを用いて復号処理Ｄｅｃ（ａ，Ｋ）を実行し、復号処理によって得られる値を復号結果ｒ’＝Ｄｅｃ（ａ，ＫＥＮＣ）とする。そして、復号結果ｒ’と、Ｓ３０１で生成した乱数ｒを比較する。復号結果ｒ’と乱数ｒが一致するならば、親機１０１は子機１０２を正当な機器と認定する。
【０１００】
このように、本発明の第１の実施形態は、図２に示されているチャレンジアンドレスポンス認証方法とは、親機で生成した乱数rと秘密鍵ＫＭＡＳＴからランダム化した秘密鍵ＫＥＮＣを生成するＳ５０２およびＳ５０４を含む点で異なっている。秘密鍵のランダム化処理はＫＥＮＣ＝ＲＡＮＤ（ＫＭＡＳＴ，ｒ）と表記しており、様々な方式が存在する。ランダム化処理の幾つかの具体例については、実施例として以下で詳述する。
【０１０１】
＜第２の実施形態＞
図１５を参照して、本発明の第２の実施形態について説明する。本実施形態では、両側認証で、暗号化と復号の両方を利用するチャレンジアンドレスポンス認証方法（プロトコル）が開示される。
【０１０２】
上記認証方式では、親機１０１が生成した乱数を用いてランダム化鍵ＫＥＮＣの生成およびチャレンジアンドレスポンス認証を行っているが、親機１０１が生成した乱数を固定化する攻撃を実行された場合にはランダム化鍵ＫＥＮＣも固定値となってしまい、サイドチャネル攻撃対策が無効化されてしまうおそれがある。このような攻撃に対しては、子機１０２側でも乱数を生成して、親機１０１側で生成した乱数と組み合わせた値を使用してランダム化、およびチャレンジアンドレスポンス認証を行うことで乱数の固定化による攻撃を回避することができる。
【０１０３】
Ｓ６０１では、図１４のＳ５０１と同様、親機１０１が乱数rを生成し、子機１０２に送信する。Ｓ６０２では、まず、子機１０２は親機１０１から乱数ｒを受け取る。Ｓ６０３で子機１０２は、乱数ｓを生成する。また、Ｓ６０４で子機１０２は、子機１０２に記憶されている秘密鍵ＫＭＡＳＴと、親機１０１から受け取った乱数ｒを用いて、ランダム化鍵ＫＥＮＣ＝ＲＡＮＤ（ＫＭＡＳＴ，ｒ）を生成する。さらに、Ｓ６０３で、子機１０２は、親機１０１から受け取った乱数rに対し、ランダム化鍵ＫＥＮＣを用いて暗号処理Ｅｎｃ（ｒ，ＫＥＮＣ）を実行し、応答ａ＝Ｅｎｃ（ｒ，ＫＥＮＣ）を生成し、乱数ｓと共に親機１０１に返信する。Ｓ６０５で子機１０２から応答ａを受け取った親機１０１は、親機１０１自身に記憶されている秘密鍵ＫＭＡＳＴと、Ｓ６０１で生成した乱数ｒとを用いてランダム化鍵ＫＥＮＣ＝ＲＡＮＤ（ＫＭＡＳＴ，ｒ）を生成する。Ｓ６０６で、このランダム化鍵ＫＥＮＣを用いて復号処理Ｄｅｃ（ａ，ＫＥＮＣ）を実行し、復号処理によって得られる値を復号結果ｒ’＝Ｄｅｃ（ａ，ＫＥＮＣ）とする。そして、復号結果ｒ’と、Ｓ６０１で生成した乱数ｒを比較する。復号結果ｒ’と乱数ｒが一致するならば、親機１０１は子機１０２を正当な機器と認定する。もし、親機１０１が子機１０２を正当な機器と認定したら、次に、ランダム化鍵ＫＥＮＣを用いてｓの暗号化処理Ｅｎｃ（ｓ，ＫＥＮＣ）を実行し、応答ｂ＝Ｅｎｃ（ｓ，ＫＥＮＣ）として子機１０２に送信する。Ｓ６０７で親機１０１から応答ｂを受け取った子機１０２は、ランダム化鍵ＫＥＮＣを用いて復号処理Ｄｅｃ（ｂ，ＫＥＮＣ）を実行し、復号処理によって得られる値を復号結果ｓ’＝Ｄｅｃ（ｂ，ＫＥＮＣ）とする。そして、復号結果ｓ’と、Ｓ６０２で生成した乱数ｓを比較する。復号結果ｓ’と乱数ｓが一致するならば、子機１０２は親機１０１を正当な機器と認定する。
【０１０４】
＜第３の実施形態＞
図１６を参照して、本発明の第３の実施形態を説明する。本実施形態は、片側認証で、復号処理のみを利用するチャレンジアンドレスポンス認証方法（プロトコル）が開示される。
【０１０５】
Ｓ７０１で、Ｓ５０１と同様、認証を行う側の親機１０１は、乱数rを生成し、認証される側の子機１０２に送信する。Ｓ７０２では、まず、子機１０２は親機１０１から乱数ｒを受け取る。さらに、子機１０２は、子機１０２に記憶されている秘密鍵ＫＭＡＳＴと、親機１０１から受け取った乱数ｒを用いて、ランダム化鍵ＫＥＮＣ＝ＲＡＮＤ（ＫＭＡＳＴ，ｒ）を生成する。さらに、Ｓ７０３で、子機１０２は、親機１０１から受け取った乱数rに対し、ランダム化鍵ＫＥＮＣを用いて暗号処理Ｅｎｃ（ｒ，ＫＥＮＣ）を実行し、暗号処理によって得られた値を応答ａ＝Ｅｎｃ（ｒ，ＫＥＮＣ）として親機１０１に返信する。Ｓ７０４で、応答ａを受け取った親機１０１は、親機１０１自身に記憶されている秘密鍵ＫＭＡＳＴと、Ｓ７０１で生成した乱数ｒとを用いてランダム化鍵ＫＥＮＣ＝ＲＡＮＤ（ＫＭＡＳＴ，ｒ）を生成する。Ｓ７０５で、このランダム化鍵ＫＥＮＣを用いてｒの暗号処理Ｅｎｃ（ｒ，ＫＥＮＣ）を実行し、結果をｒ’＝Ｅｎｃ（ｒ，ＫＥＮＣ）とする。そして、暗号処理結果ｒ’と、Ｓ７０１で生成した乱数ｒを比較する。暗号処理結果ｒ’と乱数ｒが一致するならば、親機１０１は子機１０２を正当な機器と認定する。
【０１０６】
＜第４の実施形態＞
図１７を参照して、本発明の第４の実施形態を説明する。本実施形態は、両側認証で、復号処理のみを利用するチャレンジアンドレスポンス認証方法（プロトコル）が開示される。
【０１０７】
Ｓ８０１では、親機１０１が乱数rを生成し、子機１０２に送信する。Ｓ８０２では、まず、子機１０２は親機１０１から乱数ｒを受け取る。Ｓ８０３で子機１０２は、乱数ｓを生成する。また、Ｓ８０４で子機１０２は、子機１０２に記憶されている秘密鍵ＫＭＡＳＴと、親機１０１から受け取った乱数ｒを用いて、ランダム化鍵ＫＥＮＣ＝ＲＡＮＤ（ＫＭＡＳＴ，ｒ）を生成する。さらに、Ｓ８０３で、子機１０２は、親機１０１から受け取った乱数rに対し、ランダム化鍵ＫＥＮＣを用いて暗号処理Ｅｎｃ（ｒ，ＫＥＮＣ）を実行し、応答ａ＝Ｅｎｃ（ｒ，ＫＥＮＣ）を生成し、乱数ｓと共に親機１０１に返信する。Ｓ８０５で子機１０２から応答ａを受け取った親機１０１は、親機１０１自身に記憶されている秘密鍵ＫＭＡＳＴと、Ｓ６０１で生成した乱数ｒとを用いてランダム化鍵ＫＥＮＣ＝ＲＡＮＤ（ＫＭＡＳＴ，ｒ）を生成する。Ｓ８０６で、このランダム化鍵ＫＥＮＣを用いてｒの暗号処理Ｅｎｃ（ｒ，ＫＥＮＣ）を実行し、結果をｒ’＝Ｅｎｃ（ｒ，ＫＥＮＣ）とする。そして、暗号処理結果ｒ’と、Ｓ８０１で生成した乱数ｒを比較する。暗号処理結果ｒ’と乱数ｒが一致するならば、子機１０２は親機１０１を正当な機器と認定する。もし、親機１０１が子機１０２を正当な機器と認定したら、次に、ランダム化鍵ＫＥＮＣを用いてｓの暗号化処理Ｅｎｃ（ｓ，ＫＥＮＣ）を実行し、応答ｂ＝Ｅｎｃ（ｓ，ＫＥＮＣ）として子機１０２に送信する。Ｓ８０７で親機１０１から応答ｂを受け取った子機１０２は、子機１０２自身に記憶されている秘密鍵ＫＭＡＳＴと、Ｓ８０２で生成した乱数ｓとを用いてランダム化鍵ＫＥＮＣ＝ＲＡＮＤ（ＫＭＡＳＴ，ｓ）を生成する。さらに、Ｓ８０７で、このランダム化鍵ＫＥＮＣを用いてｓの暗号処理Ｅｎｃ（ｓ，ＫＥＮＣ）を実行し、結果をｓ’＝Ｅｎｃ（ｓ，ＫＥＮＣ）とする。そして、暗号処理結果ｓ’と、Ｓ８０１で生成した乱数ｓを比較する。暗号処理結果ｓ’と乱数ｓが一致するならば、親機１０１は子機１０２を正当な機器と認定する。
【０１０８】
＜第５の実施形態＞
図１８を参照しながら、本発明の第５の実施形態を説明する。本実施形態は、両側認証で、子機が親機を認証する際には、暗号・復号処理を利用し、親機が子機を認証する際には、復号処理のみを利用するようなチャレンジアンドレスポンス認証方法（プロトコル）が開示される。
【０１０９】
Ｓ９０１では、親機１０１が乱数rを生成し、子機１０２に送信する。Ｓ９０２では、まず、子機１０２は親機１０１から乱数ｒを受け取る。Ｓ９０３で子機１０２は、乱数ｓを生成する。また、Ｓ８０４で子機１０２は、子機１０２に記憶されている秘密鍵ＫＭＡＳＴと、親機１０１から受け取った乱数ｒを用いて、ランダム化鍵ＫＥＮＣ＝ＲＡＮＤ（ＫＭＡＳＴ，ｒ）を生成する。さらに、Ｓ９０３で、子機１０２は、親機１０１から受け取った乱数rに対し、ランダム化鍵ＫＥＮＣを用いて暗号処理Ｅｎｃ（ｒ，ＫＥＮＣ）を実行し、応答ａ＝Ｅｎｃ（ｒ，ＫＥＮＣ）を生成し、乱数ｓと共に親機１０１に返信する。Ｓ９０５で子機１０２から応答ａを受け取った親機１０１は、親機１０１自身に記憶されている秘密鍵ＫＭＡＳＴと、Ｓ９０１で生成した乱数ｒとを用いてランダム化鍵ＫＥＮＣ＝ＲＡＮＤ（ＫＭＡＳＴ，ｒ）を生成する。Ｓ９０６で、このランダム化鍵ＫＥＮＣを用いてｒの暗号処理Ｅｎｃ（ｒ，ＫＥＮＣ）を実行し、結果をｒ’＝Ｅｎｃ（ｒ，ＫＥＮＣ）とする。そして、暗号処理結果ｒ’と、Ｓ８０１で生成した乱数ｒを比較する。暗号処理結果ｒ’と乱数ｒが一致するならば、子機１０２は親機１０１を正当な機器と認定する。もし、親機１０１が子機１０２を正当な機器と認定したら、次に、ランダム化鍵ＫＥＮＣを用いてｓの暗号化処理Ｅｎｃ（ｓ，ＫＥＮＣ）を実行し、応答ｂ＝Ｅｎｃ（ｓ，ＫＥＮＣ）として子機１０２に送信する。Ｓ９０７で、親機１０１から応答ｂを受け取った子機１０２は、ランダム化鍵ＫＥＮＣを用いて復号処理Ｄｅｃ（ｂ，ＫＥＮＣ）を実行し、復号処理によって得られる値を復号結果ｓ’＝Ｄｅｃ（ｂ，ＫＥＮＣ）とする。そして、復号結果ｓ’と、Ｓ６０２で生成した乱数ｓを比較する。復号結果ｓ’と乱数ｓが一致するならば、子機１０２は親機１０１を正当な機器と認定する。
【０１１０】
＜第６の実施形態＞
図１９を参照しながら、本発明の第６の実施形態を説明する。本実施形態は、両側認証で、親機が子機を認証する際には、暗号・復号処理を利用し、子機が親機を認証する際には、復号処理のみを利用するようなチャレンジアンドレスポンス認証方法（プロトコル）が開示される。
【０１１１】
Ｓ１００１では、親機１０１が乱数rを生成し、子機１０２に送信する。Ｓ１００２では、まず、子機１０２は親機１０１から乱数ｒを受け取る。Ｓ１００３で子機１０２は、乱数ｓを生成する。また、Ｓ１００４で子機１０２は、子機１０２に記憶されている秘密鍵ＫＭＡＳＴと、親機１０１から受け取った乱数ｒを用いて、ランダム化鍵ＫＥＮＣ＝ＲＡＮＤ（ＫＭＡＳＴ，ｒ）を生成する。さらに、Ｓ１００３で、子機１０２は、親機１０１から受け取った乱数rに対し、ランダム化鍵ＫＥＮＣを用いて暗号処理Ｅｎｃ（ｒ，ＫＥＮＣ）を実行し、応答ａ＝Ｅｎｃ（ｒ，ＫＥＮＣ）を生成し、乱数ｓと共に親機１０１に返信する。Ｓ１００５で子機１０２から応答ａを受け取った親機１０１は、親機１０１自身に記憶されている秘密鍵ＫＭＡＳＴと、Ｓ１００１で生成した乱数ｒとを用いてランダム化鍵ＫＥＮＣ＝ＲＡＮＤ（ＫＭＡＳＴ，ｒ）を生成する。Ｓ１００６で、このランダム化鍵ＫＥＮＣを用いて復号処理Ｄｅｃ（ａ，ＫＥＮＣ）を実行し、復号処理によって得られる値を復号結果ｒ’＝Ｄｅｃ（ａ，ＫＥＮＣ）とする。そして、復号結果ｒ’と、Ｓ１００１で生成した乱数ｒを比較する。復号結果ｒ’と乱数ｒが一致するならば、親機１０１は子機１０２を正当な機器と認定する。もし、親機１０１が子機１０２を正当な機器と認定したら、次に、ランダム化鍵ＫＥＮＣを用いてｓの暗号化処理Ｅｎｃ（ｓ，ＫＥＮＣ）を実行し、応答ｂ＝Ｅｎｃ（ｓ，ＫＥＮＣ）として子機１０２に送信する。Ｓ１００７で親機１０１から応答ｂを受け取った子機１０２は、子機１０２自身に記憶されている秘密鍵ＫＭＡＳＴと、Ｓ１００２で生成した乱数ｓとを用いてランダム化鍵ＫＥＮＣ＝ＲＡＮＤ（ＫＭＡＳＴ，ｓ）を生成する。さらに、Ｓ１００７で、このランダム化鍵ＫＥＮＣを用いてｓの暗号処理Ｅｎｃ（ｓ，ＫＥＮＣ）を実行し、結果をｓ’＝Ｅｎｃ（ｓ，ＫＥＮＣ）とする。そして、暗号処理結果ｓ’と、Ｓ１００１で生成した乱数ｓを比較する。暗号処理結果ｓ’と乱数ｓが一致するならば、親機１０１は子機１０２を正当な機器と認定する。
【０１１２】
＜ランダム化鍵生成方法＞
上述の第１〜第６の実施形態において、秘密鍵ＫＭＡＳＴからランダム化鍵ＫＥＮＣを生成する方法について、幾つかの実施例を説明する。また、各実施例に対して、回路規模の見積もりを示す。
【０１１３】
サイドチャネル攻撃対策を施しながら、コスト上昇を抑えるためには、ランダム化鍵を生成する方法は、その方法を実現する回路の回路規模が大きくならない、という制約がある。本名発明では、上記手法１でも手法２でも、ビット転置を行うが、ビット転置を行う回路としては、次のようなものが考えられる。
【０１１４】
（ビット転置回路１）セレクタ回路
（ビット転置回路２）線形帰還シフトレジスタ（ＬＦＳＲ）回路
（ビット転置回路３）結線回路
（ビット転置回路４）上記（１）〜（３）の少なくとも２つの組み合わせ
【０１１５】
また、（手順２−３）では圧縮回路を用いる。圧縮回路としては、次のようなものが考えられる。
（圧縮回路１）セレクタ回路
（圧縮回路２）ＸＯＲ回路
（圧縮回路３）加算または減算回路
【０１１６】
上のビット転置回路のいずれか一つを用いることによって上記手法１を実行可能なハードウェアを構成することができる。また、上のビット転置回路のいずれか一つおよび圧縮回路のいずれか一つを用いることによって、上記手法２を実行可能なハードウェアを構成することができる。
【０１１７】
＜ランダム化鍵生成方法の第１の実施例＞
図２０にランダム化鍵生成のための処理の第１の実施例を示す。全ての実施例においては、１２８ビット共通鍵ブロック暗号において１２８ビット鍵を用いていると仮定する。すなわち、秘密鍵ＫＭＡＳＴは１２８ビットであり、乱数ｒも最大１２８ビットであるとする。
【０１１８】
１２８ビット秘密鍵ＫＭＡＳＴは１２８入力セレクタ回路に入力され、乱数発生回路によって生成された７ビット乱数によって値が決まるセレクト信号を外部から入力して１２８ビットのいずれか１ビットをセレクトする。この処理を１２８サイクル実行することでランダム化された１２８ビットのランダム化鍵ＫＥＮＣを生成する。
【０１１９】
図２１は、回路規模の見積もり基準の表を示す図である。ここでは、回路規模を２入力ＮＡＮＤ（ＮＯＲ）ゲートの数に換算した回路規模を示している。図２１中の表には、ビットあたりの回路規模の見積もりが示されている。たとえば、８ビットレジスタならば１１×８＝８８ゲート、１６ビットシフトレジスタならば１３．５×１６＝２１６ゲートと見積もられる。さらに、図１９中の表には、２入力１出力（２−１と記される）演算回路の規模が示されているが、ｍ入力1出力（ｍ−１と記される）演算回路は、２入力1出力の演算回路の（ｍ−１）倍の回路規模となる。例えば、１０ビット２−１ＸＯＲ回路は３．５×１０＝３５ゲートであるが、１０ビット４−１ＸＯＲ回路は回路規模が３倍となり１０５ゲートである。２０ビット４−１4加算回路の場合、（２０×１５）×３＝９００ゲートとなる。なお、対策回路規模増加分の見積もりに際しては、暗号回路および対策なしの場合と共通な回路(128ビット鍵レジスタ、および乱数生成回路)を除いて評価しており、対策に伴う回路規模の増加分を以降では回路規模と表記する。
【０１２０】
図２２は回路規模の算定基準となるＮＡＮＤゲートの回路の例を示す図であり、図２３はＮＯＲゲートの回路の例を示す図である。図２２および図２３のように、２入力ＮＡＮＤゲートおよび２入力ＮＯＲゲートのいずれも、４つの電界効果トランジスタ（ＦＥＴ）、たとえば金属酸化物半導体電界効果トランジスタ（ＭＯＳＦＥＴ）によって１ゲートが構成される。
【０１２１】
図２４はNOTゲートの回路の例を示す図である。ＮＯＴゲートは、２つのＦＥＴから構成される。よって、図１９中の表に示されているように、回路規模としては、０．５ゲートとなる。
【０１２２】
図２５は、１入力Ｄフリップフロップによって構成されるレジスタの回路の例を示す図である。レジスタは図２３に示されているように、４つのＮＡＮＤゲートと、１つのＮＯＲゲートと、４つのＮＯＴゲートと、それぞれ１ゲートからなる４つのゲート単位から構成される。よって、レジスタのゲート数は１１ゲートとなる。
【０１２３】
図２６は、２入力１出力（２−１）ＸＯＲ（排他論理和）ゲートの回路の例を示す図である。２−１ＸＯＲゲート回路は、２つのＮＯＲゲートと１つのＮＡＮＤゲートとから構成される。よって、２−１ＸＯＲゲート回路の回路規模は３．５ゲートとなる。
【０１２４】
図２７Aおよび図２７Ｂは、２−１セレクタの回路の例を示す図である。図２７Ａがマルチプレクサ、図２７Bはデマルチプレクサの例を示す図である。図２７Ａに示されているように、２−１マルチプレクサは、３つのＮＡＮＤゲートと、１つのＮＯＴゲートから構成される。よって、２−１マルチプレクサの回路規模は、３．５ゲートとなる。また、図２７Ｂに示されているように、デマルチプレクサは、２つのＮＡＮＤゲートと３つのＮＯＴゲートから構成され、回路規模は３．５ゲートとなる。
【０１２５】
図２８は、シフト／巡回レジスタの回路の例である。図２８では、３段分のシフト／巡回レジスタが示されている。１段分のシフト／巡回レジスタは、１つのセレクタ（ＭＵＸ）と１つのレジスタから構成される。よって、シフト／巡回レジスタの回路規模は１４．５ゲートとなる。
【０１２６】
図２９は、線形帰還シフトレジスタ（ＬＳＦＲ）／剰余演算回路の例を示す図である。図２８では、３段分のＬＳＦＲ／剰余演算回路が示されている。図２９に示されているように、１段分のＬＳＦＲ／剰余演算回路は、１つのセレクタ（ＭＵＸ）と、１つのレジスタと、ビット一に対応して０または１個のＸＯＲゲートから構成される。よって、ＬＳＦＲ／剰余演算回路の回路規模は、高々１８ゲートとなる。
【０１２７】
本実施例の回路規模の見積もりは次のようになる。本実施例の回路は、ランダム化鍵を保存するための１２８ビット鍵レジスタが１つと、１２８入力１出力（１２８−１）セレクタ回路が１つと、１２８入力１出力（１２８−１）マルチプレクサ１つとから構成される。よって、本実施例の回路規模は、２．３ｋゲートとなる。この結果は、図３０にまとめられている。なお、対策回路規模増加分の見積もりに際しては、暗号回路および対策なしの場合と共通な回路（１２８ビット鍵レジスタ、および乱数生成回路）を除いて評価しており、対策に伴う回路規模の増加分を以降では回路規模と表記する。
【０１２８】
このように、本実施例では、上述のランダム化鍵を生成方法を実施するための回路であって、回路規模が小さな回路が提供された。本実施例の回路を使ったランダム化鍵の生成方法を、上述の実施形態１〜６のいずれか一つに用いることによって、サイドチャネル攻撃に対する安全性と、小規模・高速な暗号処理を両立する暗号化処理装置を得ることができる。
【０１２９】
＜ランダム化鍵生成方法の第２の実施例＞
図３１を参照しながら、秘密鍵ＫＭＡＳＴからランダム化鍵ＫＥＮＣを生成する方法の第２の実施例を説明する。
【０１３０】
図３１は、ランダム化鍵の生成の処理の第２の実施例を示す図である。
１２８ビット秘密鍵ＫＭＡＳＴと、乱数発生回路によって生成された乱数ｒとが１２８入力ＬＦＳＲ回路に入力され、ｒ回数だけビットシフトを繰り返して、ランダム化鍵ＫＥＮＣが生成される。乱数ｒの最大値は、ＬＦＳＲ回路の最大周期（２１２８−１）以下で構わない。
【０１３１】
本実施例の回路規模の見積もりは次のようになる。本実施例の回路は、１２８ビット鍵レジスタが１つと、１２８ビットＬＳＦＲ回路１つとから構成されている。よって、図２１中の表を参照すれば、３．７ｋビットとなる。
【０１３２】
＜ランダム化鍵生成方法の第３の実施例＞
図３２は、ランダム化鍵の生成の処理の第３の実施例を示す図である。
１２８ビット秘密鍵ＫＭＡＳＴの各ビットの値ｋＭＡＳＴ，１、ｋＭＡＳＴ，２、…、ｋＭＡＳＴ，１２７は、結線回路の接続先のあるビットに入力され、秘密鍵は最上位ビットから、ｋ’ＭＡＳＴ，１、ｋ’ＭＡＳＴ，２、…、ｋ’ＭＡＳＴ，１２７と値が再配列される。このような再配列は、乱数発生回路によって生成された乱数ｒの回数だけ繰り返され、ランダム化鍵ＫＥＮＣが生成される。繰り返しの回数はリソースに応じて設定すればよいが、十分大きな値が必要となる。
【０１３３】
この実施例では結線回路は配線だけであるため回路規模に含める必要はなく、回路規模としては１２８ビットランダム化鍵レジスタのみの１．４ｋゲートとなる。
【０１３４】
＜ランダム化鍵生成方法の第４の実施例＞
図３３は、ランダム化鍵の生成の処理の第４の実施例を示す図である。
本実施例ではまず、１２８ビット秘密鍵ＫＭＡＳＴの各ビットの値ｋＭＡＳＴ，１、ｋＭＡＳＴ，２、…、ｋＭＡＳＴ，１２７は、結線回路１および２の接続先のセレクタ回路に入力される。セレクタ回路には、乱数発生回路によって生成された１ビットの乱数がセレクタ信号として入力され、結線回路１または２のどちらを介して入力されたものをｋ'ＭＡＳＴ，ｎとするか選択する。このようにして秘密鍵は最上位ビットから、ｋ’ＭＡＳＴ，１、ｋ’ＭＡＳＴ，２、…、ｋ’ＭＡＳＴ，１２７と値が再配列される。このような再配列は、乱数発生回路によって生成された乱数ｒの回数だけ繰り返され、ランダム化鍵ＫＥＮＣが生成される。結線回路のパターンは２通り以上としてもよく、繰り返し回数はリソースに応じて設定することができる。
【０１３５】
本実施例の回路規模の見積もりは次のようになる。本実施例の回路は、１２８ビット鍵レジスタが１つと、１２８ビット２−１セレクタ回路１つとから構成されている。よって、図２１中の表を参照すれば、１．８ｋビットとなる。
【０１３６】
＜ランダム化鍵生成方法の第５の実施例＞
図３４は、ランダム化鍵の生成の処理の第５の実施例を示す図である。
本実施例ではまず、１２８ビット秘密鍵ＫＭＡＳＴを８ビットごとに１６分割する。１６分割された秘密鍵ＫＭＡＳＴのそれぞれと、乱数発生回路によって生成された乱数とは、８ビットのＬＦＳＲ回路に入力され、ｒ回だけ帰還シフトを行う。シフトした１６個の８ビット部分鍵をＸＯＲ回路に入力し、ランダム化された８ビット部分鍵とする。この処理を１６回繰り返し、１２８ビットのランダム化鍵ＫＥＮＣが生成される。
【０１３７】
本実施例の回路規模の見積もりは次のようになる。本実施例の回路は、１２８ビット鍵レジスタが２個と、８ビットＬＦＳＲ回路１６個と、８ビット１６入力ＸＯＲ回路１個と、８ビット１６−１デマルチプレクサ回路２個から構成される。よって、図２１中の表を参照すれば、４．５ｋビットとなる。
【０１３８】
＜ランダム化鍵生成方法の第６の実施例＞
図３５は、ランダム化鍵の生成の処理の第６の実施例を示す図である。
本実施例ではまず、１２８ビット秘密鍵ＫＭＡＳＴを８ビットごとに１６分割する。１６分割された秘密鍵ＫＭＡＳＴのi番目の部分鍵と、乱数発生回路で発生された４ビットの乱数ｒ１は、セレクタ回路に入力され、１６個の部分鍵のうちの一つが選択される。次に、選択された８ビットの部分鍵の一つと、乱数発生回路で発生された４ビットの乱数ｒ２がＬＦＳＲ回路に入力され、ｒ２回だけ帰還シフトを行う。その結果は、一旦、データレジスタに、ｋ'ＭＡＳＴ，ｉと保存される。これをi＝１から１６まで、１６回繰り返し、１６個のｋ'ＭＡＳＴ，ｉ（ｉ＝１〜１６）を得る。次に、１６個のｋ'ＭＡＳＴ，ｉをＸＯＲ回路に入力し、ランダム化された８ビット部分鍵とする。この処理を１６回繰り返し、１２８ビットのランダム化鍵ＫＥＮＣが生成される。
【０１３９】
本実施例の回路規模の見積もりは次のようになる。本実施例の回路は、１２８ビット鍵レジスタが２個と、８ビット１６入力１出力（１６−１）セレクタ回路１個と、８ビットＬＦＳＲ回路１個と、８ビット１６入力１出力ＸＯＲ回路１個と、８ビット１６−１デマルチプレクサ回路２個から構成される。よって、図２１中の表を参照すれば、４．６ｋビットとなる。
【０１４０】
＜ランダム化鍵生成方法の第７の実施例＞
図３６Ａおよび図３６Ｂは、ランダム化鍵の生成の処理の第７の実施例を示す図である。
本実施例ではまず、１２８ビット秘密鍵ＫＭＡＳＴを８ビットごとに１６分割する。１６分割された秘密鍵ＫＭＡＳＴのi番目の部分鍵ｋＭＡＳＴ，ｉは、i番目のビット転置回路であるビット転置回路（i）に入力される。
【０１４１】
図３６Ｂは、ビット転置回路（i）を示す図である。
秘密鍵ＫＭＡＳＴのi番目の８ビット部分鍵ｋＭＡＳＴ，ｉと、乱数発生回路で発生された０〜２までの整数である乱数ｒ１と、が３入力１出力セレクタに入力される。残りの２つの入力は、前回のセレクタの出力ｋ’ＭＡＳＴ，ｉと、ｋ’ＭＡＳＴ，ｉをさらに結線回路に入力した結果得られる出力の２つである。このセレクタによる選択を、乱数発生回路で発生された乱数ｒ２の回数だけ繰り返し、出力ｋ”ＭＡＳＴ，ｉを得る。
【０１４２】
ビット転置回路（１）〜（１６）の出力、ｋ”ＭＡＳＴ，１〜ｋ”ＭＡＳＴ，１６は、ＸＯＲ回路に入力され圧縮され、８ビットランダム化鍵ｋＥＮＣ，ｉを得る。これを１６回繰り返し、１６個の８ビットランダム化鍵ｋＥＮＣ，ｉ（ｉ＝１〜１６）を結合することで、１２８ビットのランダム化鍵ＫＥＮＣを得る。
【０１４３】
本実施例の回路規模の見積もりは次のようになる。本実施例の回路は、１２８ビット鍵レジスタが２個と、８ビット３入力１出力（３−１）セレクタ回路１６個と、８ビット１６入力１出力ＸＯＲ回路１個と、８ビット１６−１デマルチプレクサ回路１個から構成される。よって、図２１中の表を参照すれば、４．５ｋビットとなる。
【０１４４】
＜作用効果＞
図３７は、比較例１のラインダールアルゴリズムを実行する回路の回路規模と、上記実施例１〜７の回路の回路規模を比較した表を示している。実施例１〜７の回路を用いることで、従来法１のように回路を肥大化することなく、小規模な回路構成によりサイドチャネル攻撃に対して安全な認証を実現することができる。
【０１４５】
上記では、圧縮回路として、ＸＯＲ回路またはセレクタ回路を用いたが、加算または減算回路を用いても良い。加算または減算回路の回路規模は約１０ゲート／ビットである。
【図１】
2013014778.tif 000011
【図２】
2013014778.tif 000012
【図３】
2013014778.tif 000013
【図４】
2013014778.tif 000014
【図５】
2013014778.tif 000015
【図６】
2013014778.tif 000016
【図７】
2013014778.tif 000017
【図８】
2013014778.tif 000018
【図９】
2013014778.tif 000019
【図１０】
2013014778.tif 000020
【図１１】
2013014778.tif 000021
【図１２】
2013014778.tif 000022
【図１３】
2013014778.tif 000023
【図１４】
2013014778.tif 000024
【図１５】
2013014778.tif 000025
【図１６】
2013014778.tif 000026
【図１７】
2013014778.tif 000027
【図１８】
2013014778.tif 000028
【図１９】
2013014778.tif 000029
【図２０】
2013014778.tif 000030
【図２１】
2013014778.tif 000031
【図２２】
2013014778.tif 000032
【図２３】
2013014778.tif 000033
【図２４】
2013014778.tif 000034
【図２５】
2013014778.tif 000035
【図２６】
2013014778.tif 000036
【図２７Ａ】
2013014778.tif 000037
【図２７Ｂ】
2013014778.tif 000038
【図２８】
2013014778.tif 000039
【図２９】
2013014778.tif 000040
【図３０】
2013014778.tif 000041
【図３１】
2013014778.tif 000042
【図３２】
2013014778.tif 000043
【図３３】
2013014778.tif 000044
【図３４】
2013014778.tif 000045
【図３５】
2013014778.tif 000046
【図３６Ａ】
2013014778.tif 000047
【図３６Ｂ】
2013014778.tif 000048
【図３７】
2013014778.tif 000049
【手続補正書】
【提出日】平成26年1月31日(2014.1.31)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
暗号化処理装置であって、
共有鍵を記憶するメモリと、
整数である乱数を発生する乱数発生器と、
前記共有鍵に対して、少なくとも前記乱数によって定まるビット転置を施し、第１のランダム化鍵を生成するビット転置器と、
前記乱数を、別の暗号化処理装置に送信し、前記別の暗号化処理装置に記憶されている共有鍵と、前記乱数によって定まるビット転置を施して生成される第２のランダム化鍵を用いた暗号化によって得られるレスポンスを前記別の暗号化処理装置から受信する通信器と、
前記レスポンスを前記共有鍵を用いて復号して前記乱数と比較する、または前記乱数を前記共有鍵を用いて暗号化して前記レスポンスと比較することによって前記別の暗号化処理装置を認証する認証器と、
を含む暗号化処理装置。
【請求項２】
前記ビット転置器は、セレクタ回路、線形帰還シフトレジスタ回路、および結線回路の少なくとも一つを含む、請求項１の暗号化処理装置。
【請求項３】
前記ビット転置器は、前記共有鍵を分割して得られる部分鍵に対して、少なくとも前記乱数によって定まるビット転置を施し、ランダム化部分鍵を生成し、前記ランダム化部分鍵を一つに圧縮して、前記第１のランダム化鍵を生成する、請求項１の暗号化処理装置。
【請求項４】
前記別の暗号化処理装置の前記ビット転置器は、前記共有鍵を分割して得られる部分鍵に対して、前記ビット転置の入力値として前記乱数によって定まるビット転置を施し、ランダム化部分鍵を生成し、前記ランダム化部分鍵を一つに圧縮して、前記第１のランダム化鍵を生成する、請求項１または２の暗号化処理装置。
【請求項５】
前記ランダム化部分鍵の圧縮は、ＸＯＲ回路、セレクタ回路、および加算または減算回路の少なくとも一つを用いて行われる、請求項４の暗号化処理装置。
【請求項６】
共有鍵を有する第１の暗号化処理装置を含む第１のデバイスによる、前記共有鍵と同一の鍵を有する第２の暗号化処理装置を含む第２のデバイスの認証方法であって、
乱数を発生することと、
前記共有鍵に対して、少なくとも前記乱数によって定まるビット転置を施し、第１のランダム化鍵を生成することと、
前記乱数を、前記第２の暗号化処理装置に送信することと、
前記第２の暗号化処理装置から、前記第２の暗号化処理装置に記憶されている前記鍵と前記乱数によって定まるビット転置を施して生成される第２のランダム化鍵を用いた暗号化によって得られるレスポンスを受信することと、
前記レスポンスを前記共有鍵を用いて復号して前記乱数と比較する、または前記乱数を前記共有鍵を用いて暗号化して前記レスポンスと比較すること、
を含む認証方法。
【請求項７】
共有鍵を記憶するメモリと、
整数である乱数を発生する乱数発生器と、
前記共有鍵に対して、少なくとも前記乱数によって定まるビット転置を施し、前記メモリに記憶された共有鍵の代わりに用いられる第１のランダム化鍵を生成するビット転置器と、
を含む共有鍵暗号方式で用いられる鍵生成装置。
【国際調査報告】
2013014778.tif 000050
2013014778.tif 000051
2013014778.tif 000052
2013014778.tif 000053