(57)【特許請求の範囲】
【請求項１】
所定の暗号化処理により暗号文Ｃ１を生成する被認証装置と、上記被認証装置により生成された暗号文Ｃ１を復号する認証装置からなる認証システムであって、
被認証装置は、
（１）認証装置と共有する乱数Ｒ１と乱数Ｒ２とを、上記所定の暗号化処理とは異なる変換処理であって第１の関数演算と第１の論理演算とを用いる変換処理により秘密の値である乱数Ｒ２´に変換する乱数加工部であって、
上記第１の関数演算として、上記乱数Ｒ１と乱数Ｒ２とを連結した値を求め、求めた連結した値のハッシュ値を求め、求めたハッシュ値の先頭から所定のｍ（ｍ＞０の整数）ビットを切りだして、ハッシュ関数ＩＶ＝ｈａｓｈ（ＩＶ）のＩＶの初期値として所定の値Ｓｅｅｄ１を設定し、切りだしたｍビットの値の回数分上記ハッシュ関数ＩＶ＝ｈａｓｈ（ＩＶ）を繰り返し計算してハッシュ値を求め、
上記第１の論理演算として、上記乱数Ｒ２と上記ハッシュ関数ＩＶ＝ｈａｓｈ（ＩＶ）の繰り返し計算により求めたハッシュ値との排他的論理和の演算を行い乱数Ｒ２´を求める乱数加工部と、
（２）上記乱数加工部が変換した乱数Ｒ２´を、上記所定の暗号化処理により暗号化して暗号文Ｃ１´を生成する暗号化部であって、
上記所定の暗号化処理として、暗号鍵Ｋ３を用いて上記乱数Ｒ２´を暗号化する暗号化関数Ｅｎｃ（Ｋ３，Ｒ２´）により暗号文Ｃ１´を生成する暗号化部と、
（３）上記暗号化部が生成した暗号文Ｃ１´を、上記所定の暗号化処理と上記乱数加工部の変換処理とのいずれとも異なる変換処理であって第２の関数演算と第２の論理演算とを用いる変換処理により変換して暗号文Ｃ１を求める暗号文加工部であって、
上記第２の関数演算として、上記乱数Ｒ１と乱数Ｒ２とを連結した値を求め、求めた連結した値のハッシュ値を求め、求めたハッシュ値の先頭から所定のｎ（ｎ＞０の整数、ｎ≠ｍ）ビットを切りだして、ハッシュ関数ＦＶ＝ｈａｓｈ（ＦＶ）のＦＶの初期値として所定の値Ｓｅｅｄ２を設定し、切りだしたｎビットの値の回数分上記ハッシュ関数ＦＶ＝ｈａｓｈ（ＦＶ）を繰り返し計算してハッシュ値を求め、
上記第２の論理演算として、上記暗号文Ｃ１´と上記ハッシュ関数ＦＶ＝ｈａｓｈ（ＦＶ）の繰り返し計算により求めたハッシュ値との排他的論理和の演算を行い暗号文Ｃ１を求める暗号文加工部と、
（４）上記暗号文加工部が変換した暗号文Ｃ１を、認証装置に送信する暗号文送信部とを有し、
認証装置は、
（５）被認証装置から、前記変換された暗号文と想定されるデータを受信する暗号文受信部と、
（６）上記暗号文受信部が受信した前記データを、暗号文加工部の関数演算と論理演算とを用いる変換処理と逆の変換処理により逆変換する暗号文逆加工部と、
（７）上記暗号文逆加工部が逆変換した暗号文を、復号して復号文を生成する復号部と、
（８）上記復号部が生成した復号文を、前記変換された暗号文と想定されるデータとして、乱数加工部の関数演算と論理演算とを用いる変換処理と逆の変換処理により逆変換して認証に用いる乱数を生成する乱数逆加工部と、
（９）上記乱数逆加工部が生成した認証に用いる乱数と、上記被認証装置と共有する乱数とを比較して、比較した結果が一致する場合に被認証装置の認証を成功と判定し、比較した結果が一致しない場合に被認証装置の認証を失敗と判定する認証結果判定部と
を有することを特徴とする認証システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、認証するシステムに係り、入出力データに着目した不当な解析を阻止する技術に関する。
【背景技術】
【０００２】
図９は、従来の処理フローを示す図である。この図は、従来のチャレンジアンドレスポンスによる認証の処理手順を示すものである。認証側で保持する鍵Ｋ１と被認証側で保持する鍵Ｋ２が一致しなければ、認証は成功しないようになっている。
【０００３】
しかし、近年電力差分解析や電磁波解析などのサイドチャネルアタックによって、装置内の秘密データが解析される危険が高まっている。このような不正な解析では、被認証側へ乱数Ｒ１を与え、被認証側の装置内での乱数Ｒ１の処理に係るデータ値を予測して、最終的に鍵Ｋ２を求める手順を追う。
【発明の開示】
【発明が解決しようとする課題】
【０００４】
本発明は、上記した従来技術の欠点を除くためになされたものであって、その目的とするところは、乱数に対する被認証側の処理において、不当な解析による予測を困難にすることを課題とする。
【課題を解決するための手段】
【０００５】
本発明に係る認証システムは、
認証される被認証装置と、認証する認証装置からなる認証システムであって、
被認証装置は、
（１）認証装置と共有する乱数を、秘匿の方法で秘密の値に変換する乱数加工部と、
（２）変換された乱数を、暗号化して暗号文を生成する暗号化部と、
（３）生成した暗号文を、秘匿の方法で変換する暗号文加工部と、
（４）変換された暗号文を、認証装置に送信する暗号文送信部とを有し、
認証装置は、
（５）被認証装置から、前記変換された暗号文と想定されるデータを受信する暗号文受信部と、
（６）受信した前記データを、暗号文加工部の変換と可逆の変換方法で逆変換する暗号文逆加工部と、
（７）逆変換された暗号文を、復号して復号文を生成する復号部と、
（８）生成した復号文を、前記変換された暗号文と想定されるデータとして、乱数加工部の変換と可逆の変換方法で逆変換する乱数逆加工部とを有することを特徴とする。
【発明の効果】
【０００６】
本発明においては、被認証側で与えられた乱数をそのまま用いるのではなく、変換した後に暗号等の被認証に係る処理を行うので、乱数の処理に着目した外部からの不正解析を困難にして、秘匿性を担保できる。
【発明を実施するための最良の形態】
【０００７】
実施の形態１．
以下本発明を図面に示す実施例に基づいて説明する。本例では、双方で同時に認証する手順を採用している。
【０００８】
まず、被認証側の処理を中心に説明する。図１は、相互認証の処理のフローを示す図である。両装置は、同時に被認証に係る処理を行う。
【０００９】
図２は、相互認証に係る構成を示す図である。この構成により、被認証の処理を行う。この図は、図１の左側の装置を想定しているが、右側の装置でも同様の構成となっている。乱数生成部２０１、乱数送信部２０２、乱数受信部２０３、入力加工データ生成部２０４、乱数加工部２０５、データ記憶部２０６、暗号化部２０７、出力加工データ生成部２０８、暗号文加工部２０９、暗号文送信部２１０、暗号文受信部２１１、及び暗号文検証部２１２を有している。特に、データ記憶部２０６は、秘匿に係るデータを予め記憶している。
【００１０】
図１と図２に基づいて、被認証側の処理を詳述する。Ｓ１０１〜Ｓ１０３とＳ１５１〜Ｓ１５３で、双方が独自に生成した乱数を交換する。その為に、乱数を生成する乱数生成部２０１、乱数を送信する乱数送信部２０２、乱数を受信する乱数受信部２０３を有している。
【００１１】
Ｓ１０４〜Ｓ１０８とＳ１５４〜Ｓ１５８で、認証される為の暗号文を生成する。両装置は対称的に動作するので、具体例として左側の装置を想定して説明する。
【００１２】
本発明では、取得した乱数Ｒ２を加工（変換）して用いるが、その加工（変換）に用いる入力加工データＩＶを生成する（Ｓ１０４）。この処理は、入力加工データ生成部２０４で行う。図では、ＩＶ＝Ｆ（Ｒ１，Ｒ２，Ｓｅｅｄ１，Ｋ１）と示しているが、両装置間で、共通のデータを算出できる関数であれば、他の形態の関数で算出しても構わない。
【００１３】
ＩＶ＝Ｆ（Ｒ１，Ｒ２，Ｓｅｅｄ１，Ｋ１）の例を、以下に示す。
ｎｕｍ＝ｍ〜ｈａｓｈ（Ｒ１｜｜Ｒ２）
ＩＶ＝Ｓｅｅｄ１
ｆｏｒ  ｊ  ｆｒｏｍ  １  ｔｏ  ｎｕｍ
ＩＶ＝Ｅｎｃ（Ｋ１，ＩＶ）
Ｒ１とＲ２を連結した値のハッシュ値を求め、ハッシュ値から先頭のｍビットを切りだしてｎｕｍとする。ＩＶの初期値に、Ｓｅｅｄ１を設定し、ｎｕｍ回だけ、暗号化を繰り返す。このとき、内部で保持する暗号鍵Ｋ１を用いる。暗号化結果はＩＶに出力される。
【００１４】
この例の暗号化の部分を、ハッシュ関数に置き換えて、
ＩＶ＝ｈａｓｈ（ＩＶ）
とする別の関数も考えられる。
【００１５】
そして、このデータＩＶを用いて、乱数Ｒ２を加工（変換）する（Ｓ１０５）。この処理は、乱数加工部２０５で行う。論理演算として、この例では、排他的論理和を算出している。
【００１６】
Ｒ２´＝Ｒ２  ＸＯＲ  ＩＶ
そして、加工（変換）された乱数Ｒ２´を暗号鍵Ｋ３で暗号化する（Ｓ１０６）。この処理は、暗号化部２０７で行う。
【００１７】
Ｃ１´＝Ｅｎｃ（Ｋ３，Ｒ２´）
本発明では、得られた暗号文Ｃ１´が、更に加工（変換）されるが、その為に用いる出力加工データＦＶを生成する（Ｓ１０７）。この処理は、出力加工データ生成部２０８で行う。図では、ＦＶ＝Ｇ（Ｒ１，Ｒ２，Ｓｅｅｄ２，Ｋ２）と示しているが、両装置間で、共通のデータを算出できる関数であれば、他の形態の関数で算出しても構わない。
【００１８】
ＦＶ＝Ｇ（Ｒ１，Ｒ２，Ｓｅｅｄ２，Ｋ２）の例を、以下に示す。
ｎｕｍ＝ｎ〜ｈａｓｈ（Ｒ１｜｜Ｒ２）
ＦＶ＝Ｓｅｅｄ２
ｆｏｒ  ｊ  ｆｒｏｍ  １  ｔｏ  ｎｕｍ
ＦＶ＝Ｅｎｃ（Ｋ２，ＦＶ）
Ｒ１とＲ２を連結した値のハッシュ値を求め、ハッシュ値から先頭のｎビットを切りだしてｎｕｍとする。ＦＶの初期値に、Ｓｅｅｄ２を設定し、ｎｕｍ回だけ、暗号化を繰り返す。このとき、内部で保持する暗号鍵Ｋ２を用いる。暗号化結果はＦＶに出力される。
【００１９】
この例の暗号化の部分を、ハッシュ関数に置き換えて、
ＦＶ＝ｈａｓｈ（ＦＶ）
とする別の関数も考えられる。
【００２０】
そして、このデータＦＶを用いて、暗号文Ｃ１´を加工（変換）する（Ｓ１０８）。この処理は、暗号文加工部２０９で行う。論理演算として、この例では、排他的論理和を算出している。
【００２１】
Ｃ１＝Ｃ１´  ＸＯＲ  ＦＶ
このようにして得られた暗号文Ｃ１を、暗号文送信部２１０から相手装置に送信し（Ｓ１１０）、相手からも同様に暗号文受信部２１１で暗号文Ｃ２を受信する（Ｓ１０９）。
【００２２】
そして、次に、相手装置を認証するために、暗号文検証部２１２で暗号文Ｃ２を検証する。
【００２３】
次に、この暗号文の検証の処理、つまり認証の処理について説明する。図３は、暗号文の検証の処理フローを示す図である。この処理も同時に対称的に行われる。
【００２４】
図４は、暗号文の検証に係る構成を示す図である。更に、暗号文逆加工部４０１、復号部４０２、乱数逆加工部４０３、及び認証結果判定部４０４を有している。この図は、図３の左側の装置を想定しているが、右側の装置でも同様の構成となっている。
【００２５】
図１と図２に基づいて、被認証側の処理を詳述する。ここでは、左側の装置を想定して説明する。
【００２６】
まず、暗号文逆加工部４０１で、受信した暗号文Ｃ２を逆加工（逆変換）する（Ｓ３０１）。この処理は、Ｓ１５８の変換に対する逆変換である。この例では、論理演算として、この例では、排他的論理和を算出している。ＦＶは、先に求めたものを用いている。
【００２７】
Ｃ２´＝Ｃ２  ＸＯＲ  ＦＶ
そして、逆加工（逆変換）で得られた暗号文Ｃ２´を、暗号鍵Ｋ３を用いて、復号する（Ｓ３０２）。この処理は、復号部４０２で行う。
【００２８】
Ｒ１´＝Ｄｅｃ（Ｋ３，Ｃ２´）
復号結果の平文として得られる乱数Ｒ１´を逆加工（逆変換）する（Ｓ３０３）。この処理は、Ｓ１５５の変換に対する逆変換であり、乱数逆加工部４０３で行う。この例では、論理演算として、この例では、排他的論理和を算出している。ＩＶは、先に求めたものを用いている。
【００２９】
Ｒ１＝Ｒ１´  ＸＯＲ  ＩＶ
そして、Ｓ１０１で生成した乱数Ｒ１と、上述の処理で算出した乱数Ｒ１と想定されるデータと比較する（Ｓ３０４）。一致する場合に認証結果を成功とし（Ｓ３０５）、不一致の場合に認証結果を失敗する（Ｓ３０６）。認証結果判定部４０４で処理する。
【００３０】
検証の仕方は、復号するだけでなく、R1,R2を使用して相手側が生成する値を予想して、受け取った値がその予想値と一致するかどうかということでも検証可能である。また、IV，FVを生成する方法として，ハッシュ関数や暗号アルゴリズム以外にも，単純な加算等でも可能である。
【００３１】
実施の形態２．
本実施の形態では、暗号ブロック連鎖（ＣＢＣ：Ｃｉｐｈｅｒ  Ｂｌｏｃｋ  Ｃｈａｉｎｉｎｇ）モードの暗号化と復号に適用する形態を説明する。
【００３２】
まず、暗号化について説明する。実施の形態１の乱数加工部２０５、及び暗号化部２０７、及び暗号文加工部２０９の処理に対応する。図５は、ＣＢＣモードに適用した場合の暗号化に係るブロックを示す図である。図６は、ＣＢＣモードに適用した場合の暗号化に係る処理フローを示す図である。これらの図を用いて、処理を説明する。
【００３３】
暗号化される平文Ｐ´は、乱数Ｒと、Ｍ１，Ｍ２，…の実データのブロックから構成されている。そして、この先頭ブロックから順に以下の処理を繰り返す（Ｓ６０１）。
【００３４】
先頭から順に、平分データのブロックを取得する（Ｓ６０２）。最初は、Ｒを得る。二回目以降は、Ｍ１，Ｍ２，…の順に取得する。これは、論理演算（５０１，５０２，５０３，…）の一方の入力となる。
【００３５】
他の入力データとなる入力側パラメータも特定する（Ｓ６０３）。最初は、乱数ＩＶ（ダミーデータに相当）を用いる。二回目以降は、前回の暗号結果（順に、Ｃ０´，Ｃ１´，…）を用いる。
【００３６】
そして、これらの入力側論理演算（Ｓ６０４）を行う。この例は、排他的論理和（ＸＯＲ）を求めている。図５の５０１，５０２，５０３に示す処理である。
【００３７】
演算結果（最初は、Ｒ´、順にＭ１，Ｍ２，…）を内部で記憶している暗号鍵ｕｋｅｙで暗号化する（Ｓ６０５）。その結果として、順にＣ０´，Ｃ１´，Ｃ２´，…を得る。
【００３８】
暗号結果と、復号側と共通して用いる乱数ＦＶを入力として、出力側論理演算する（Ｓ６０６）。この例は、排他的論理和（ＸＯＲ）を求めている。図５の５２１，５２２，５２３に示す処理である。
【００３９】
そして、演算結果を暗号データのブロックとして順に記憶する（Ｓ６０７）。順に、Ｃ０，Ｃ１，Ｃ２，…となる。
【００４０】
すべてのブロックを処理した時点で終了する（Ｓ６０８）。
【００４１】
続いて、復号について説明する。実施の形態１の暗号文逆加工部４０１、復号部４０２、及び乱数逆加工部４０３の処理に対応する。図７は、ＣＢＣモードに適用した場合の復号に係るブロックを示す図である。図８は、ＣＢＣモードに適用した場合の復号に係る処理フローを示す図である。
【００４２】
暗号データは、Ｃ０，Ｃ１，Ｃ２，…のブロックから構成されている。そして、この先頭ブロックから順に以下の処理を繰り返す（Ｓ８０１）。
【００４３】
先頭から順に、暗号データのブロックを取得する（Ｓ８０２）。これは、論理演算（７０１，７０２，７０３，…）の一方の入力となる。
【００４４】
他方の入力データとして、暗号側と共通して用いる乱数ＦＶを用いて、入力側論理演算（Ｓ８０３）を行う。この例は、排他的論理和（ＸＯＲ）を求めている。図７の７０１，７０２，７０３に示す処理である。
【００４５】
演算結果（最初は、Ｃ０´，Ｃ１´，Ｃ２´，…）を内部で記憶している暗号鍵ｕｋｅｙで復号する（Ｓ８０４）。その結果として、順にＲ´，Ｍ１´，Ｍ２´，…を得る。復号結果は、出力側論理演算の一方の入力となる。
【００４６】
他の入力となる出力側パラメータを特定する（Ｓ８０５）。最初は、乱数ＩＶ（ダミーデータに相当）を用いる。二回目以降は、前回の復号入力データ（順に、Ｃ０´，Ｃ１´，…）を用いる。
【００４７】
そして、これらの出力側論理演算（Ｓ８０６）を行う。この例は、排他的論理和（ＸＯＲ）を求めている。図７の７１１，７１２，７１３に示す処理である。
【００４８】
演算結果を平分データのブロックとして順に記憶する（Ｓ８０７）。順に、Ｒ，Ｍ１，Ｍ２，…となる。但し、ダミーデータである乱数Ｒは、無視して、Ｍ１以降のブロックを用いる。
【００４９】
すべてのブロックを処理した時点で終了する（Ｓ８０８）。
【００５０】
上述の例では、相互認証の例を示したが、認証される被認証装置と、認証する認証装置からなり、一方のみを認証する認証システムでも有効である。
【００５１】
認証装置は、コンピュータであり、各要素はプログラムにより処理を実行することができる。また、プログラムを記憶媒体に記憶させ、記憶媒体からコンピュータに読み取られるようにすることができる。
【００５２】
図１０は、認証装置のハードウエア構成例を示す図である。バスに、演算装置１００１、データ記憶装置１００２、メモリ１００３、通信インターフェース１００４が接続されている。データ記憶装置１００２は、例えばＲＯＭ（Read Only Memory）やハードディスクである。メモリ１００３は、通常ＲＡＭ（Random Access Memory）である。
【００５３】
プログラムは、通常データ記憶装置１００２に記憶されており、メモリ１００３にロードされた状態で、順次演算装置１００１に読み込まれ処理を行う。データの受信や送信は、通信インターフェース１００４により行う。
【００５４】
このようにすることで、攻撃者に、暗号化されている値を導出することを困難にさせ、サイドチャネルアタックを防ぐことができる。
【図面の簡単な説明】
【００５５】
【図１】相互認証の処理のフローを示す図である。
【図２】相互認証に係る構成を示す図である。
【図３】暗号文の検証の処理フローを示す図である。
【図４】暗号文の検証に係る構成を示す図である。
【図５】ＣＢＣモードに適用した場合の暗号化に係るブロックを示す図である。
【図６】ＣＢＣモードに適用した場合の暗号化に係る処理フローを示す図である。
【図７】ＣＢＣモードに適用した場合の復号に係るブロックを示す図である。
【図８】ＣＢＣモードに適用した場合の復号に係る処理フローを示す図である。
【図９】従来の処理フローを示す図である。
【図１０】認証装置のハードウエア構成例を示す図である。
【符号の説明】
【００５６】
２０１  乱数生成部、２０２  乱数送信部、２０３  乱数受信部、２０４  入力加工データ生成部、２０５  乱数加工部、２０６  データ記憶部、２０７  暗号化部、２０８  出力加工データ生成部、２０９  暗号文加工部、２１０  暗号文送信部、２１１  暗号文受信部、２１２  暗号文検証部、４０１  暗号文逆加工部、４０２  復号部、４０３  乱数逆加工部、４０４  認証結果判定部。
【図１】
0004611642.tif 000002
【図２】
0004611642.tif 000003
【図３】
0004611642.tif 000004
【図４】
0004611642.tif 000005
【図５】
0004611642.tif 000006
【図６】
0004611642.tif 000007
【図７】
0004611642.tif 000008
【図８】
0004611642.tif 000009
【図９】
0004611642.tif 000010
【図１０】
0004611642.tif 000011