(57)【特許請求の範囲】
【請求項１】
３重暗号用に不揮発性メモリに設定されたＤＥＳ（Data Encryption Standard）用の２つの鍵を用いて３重暗号の演算を行うデータ攪乱手段を備え、前記データ攪乱手段は、ＤＥＳ用の第３の鍵を生成する機能を有し、設定されたＤＥＳ用の前記２つの鍵と、生成して不揮発性メモリの読み出し不能領域に格納されたＤＥＳ用の第３の鍵を用いて３重暗号の演算を行う可搬記録媒体であって、
前記データ攪乱手段は、入力された平文のブロックデータを転置マップデータに基づいて初期転置し、前記ＤＥＳ用の鍵の１つから複数種類の鍵データを生成し、前記初期転置したブロックデータを左右半分づつに分け、分けた各データと生成した前記複数種類の鍵データの１つとにより換字表データに基づいて非線形処理し、次いで、各データを左右入れ替えて前記複数種類の鍵データの他の１つにより、換字表データに基づいて非線形処理し、以後同様の処理を前記複数種類の鍵データ全てについて行って第１の暗号化処理を実施し、次いで、第１の暗号化処理と同じ第２、第３の暗号化処理をＤＥＳ用の他の２つの鍵について実施した後、転置マップデータに基づいて最終転置によりブロックデータを元の位置に戻して暗号文として出力することを特徴とする可搬記録媒体。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は暗号化機能プログラムを搭載したＩＣカード等の可搬記録媒体に関する。
【０００２】
【従来の技術】
近年、ＩＣカードが普及し、例えば電子財布、電子マネーとして使用すること等が提案されている。このようなＩＣカードにおいては、データのセキュリティを確保することが極めて重要であり、そのために乱数発生機能を持たせて認証を行うとともに、暗号化処理を施すものが提案されている。
【０００３】
暗号化処理としては、図５に示すように、暗号作成者（送信者）と受信者とが共通の鍵を共有し、この共通鍵を用いて平文を暗号化し、暗号文を共通鍵を用いて復号して平文を得る共通鍵暗号方式が広く知られており、代表的なものとしてＤＥＳ（Data Encryption Standard）がある。ＤＥＳは、７バイト（５６ビット）の鍵データと１バイト（８ビット）のパリティの１ブロック８バイト（６４ビット）のデータからなっていて、暗号化すべきデータ（平文）を一定の長さ（６４ビット）ごとのブロックに区切って５６ビットの鍵で暗号化し、６４ビットの暗号文を作成するものである。
【０００４】
図６はＤＥＳによる暗号処理装置の暗号化と復号の関係を示しており、１つの方向（手順）で処理して暗号化した場合、逆の方向（手順）での処理は復号となる。このようなＤＥＳによるブロック暗号処理を１個の平文ブロックに３回連続して適用することにより、データ攪拌処理段数及び鍵長を長くして暗号強度を高くし、安全性を高める方法か知られており、例えば、３重に暗号化するtriple−ＤＥＳが知られている。triple−ＤＥＳは、例えば、図７（ａ）に示すように、２つの鍵Ｋ1 、Ｋ2 を用い、鍵Ｋ1 で暗号化（Ｅ（Ｋ1 ））し、鍵Ｋ2 で逆方向の手順で復号（Ｄ（Ｋ2 ））し（実際は復号できないので暗号化と同等）、さらに、鍵Ｋ1 で暗号化する方法である。
【０００５】
triple−ＤＥＳの鍵オプションには、３回反復するＤＥＳアルゴリズムを３回とも異なる鍵で反復し、合計３個の鍵Ｋ1 、Ｋ2 、Ｋ3 を用いるオプション（３−key triple−ＤＥＳ）（図７（ｂ））と、１回目と３回目で同じ鍵を用い、合計で２個の鍵を用いるオプション（２−key triple−ＤＥＳ）（図７（ａ））、１個の鍵を３回とも用いるオプションの３種類が定められている。なお、１個の鍵を用いるtriple−ＤＥＳのオプションは、２回目の復号で平文に戻るので、単に従来のＤＥＳとの互換性のために定められているにすぎないため、ここでは対象としない。
【０００６】
【発明が解決しようとする課題】
ところで、日本の公共分野で広く採用されているＩＣカードの仕様では、２−key triple−ＤＥＳを採用しており、そのため、２−key triple−ＤＥＳ用の鍵（合計１６バイト）を格納するように鍵格納ファイルが設計されている場合が多い。２−key triple−ＤＥＳでは、通常のＤＥＳ（鍵長５６ビット）よりも鍵長は２倍（実効１１２ビット）になるため、鍵の総当たり攻撃に要する計算量は２56倍となり、２112 回の暗号化計算回数が必要である。
【０００７】
しかし、ある条件のもとでは、攻撃者が選択した平文と、その暗号化結果の両方を入手した場合に、２56個の中間暗号文記憶領域を確保し、平均２55個の選択平文を試して、２57回の計算量に削減することができ、全数探索に比べて大幅に計算量を削減することが可能であることが指摘されている（R.C.Merkle,M.Hellman, ”On the Security ofMultiple Encryption,”Comm ACM,vol.24,No.7,1981,pp.465-467参照）。なお、３−key triple−ＤＥＳの場合は２168 回の計算量を必要とする（ただし、２−key triple−ＤＥＳの場合と同様に、２56個の中間暗号文記憶領域を確保して中間データを記憶することにより、２112 回の計算量に削減可能）ため、現状のコンピュータの能力では、通常の時間では解読することは困難で安全性は極めて高いが、鍵格納ファイルに２４バイト必要とするため採用されていない。
【０００８】
本発明は上記課題を解決するためのもので、鍵格納ファイルの容量を大きくせず、かつ３−key triple−ＤＥＳの暗号強度を確保できるようにすることを目的とする。
【０００９】
【課題を解決するための手段】
本発明は、３重暗号用に不揮発性メモリに設定されたＤＥＳ（Data Encryption Standard）用の２つの鍵を用いて３重暗号の演算を行うデータ攪乱手段を備え、前記データ攪乱手段は、ＤＥＳ用の第３の鍵を生成する機能を有し、設定されたＤＥＳ用の前記２つの鍵と、生成して不揮発性メモリの読み出し不能領域に格納されたＤＥＳ用の第３の鍵を用いて３重暗号の演算を行う可搬記録媒体であって、
前記データ攪乱手段は、入力された平文のブロックデータを転置マップデータに基づいて初期転置し、前記ＤＥＳ用の鍵の１つから複数種類の鍵データを生成し、前記初期転置したブロックデータを左右半分づつに分け、分けた各データと生成した前記複数種類の鍵データの１つとにより換字表データに基づいて非線形処理し、次いで、各データを左右入れ替えて前記複数種類の鍵データの他の１つにより、換字表データに基づいて非線形処理し、以後同様の処理を前記複数種類の鍵データ全てについて行って第１の暗号化処理を実施し、次いで、第１の暗号化処理と同じ第２、第３の暗号化処理をＤＥＳ用の他の２つの鍵について実施した後、転置マップデータに基づいて最終転置によりブロックデータを元の位置に戻して暗号文として出力することを特徴とする可搬記録媒体。
【００１０】
【発明の実施の形態】
以下、本発明の実施の形態について説明する。なお、本発明はメモリ機能と演算処理機能を内蔵した如何なる可搬記録媒体でも適用可能であるが、以下ではＩＣチップを内蔵したＩＣカードを例にして説明する。
図１は本発明のＩＣカードの構成例を説明する図である。ＩＣカード２は演算処理機能を有するＣＰＵ２１、乱数発生プログラムや暗号化処理プログラムを有するデータ攪乱手段、各種制御手段が格納されたＲＯＭ２２、データ処理作業領域を提供するＲＡＭ２４、読み出し可能領域と読み出し不能領域からなる不揮発性メモリ２５からなっていて、リーダ／ライタ１（或いはより上位のホストコンピュータ）に接触或いは非接触で接続され、リーダ／ライタ１からの書き込み、読み取り等のコマンドに応じてデータ処理を行い、処理結果をレスポンスとしてリーダ／ライタ１へ出力する機能を有している。
【００１１】
本発明のＩＣカードは、ＲＯＭ２２のデータ攪乱手段に含まれる暗号化処理プログラム内のデータ領域に転置マップ、換字表等が設定され、不揮発性メモリ２５の読み出し可能領域に、２−key triple−ＤＥＳ用の鍵ｋ1 、ｋ2 がリーダ／ライタ１から設定される。
【００１２】
転置マップは６４ビットのデータをランダムに入れ換える処理（スクランブル）を行うためのものである。図２は転置マップの例を示しており、仮に、データを１〜６４までの数字で表したとき、例えば、最初の「５８」は入力したデータの５８ビット目を１ビット目に移動すること、最後の「７」は入力したデータの７ビット目を６４ビット目に移動することをそれぞれ示しており、入れ換えた後の元のデータ位置を示す表からなっている。
【００１３】
換字表は、鍵による暗号化処理において入力されたデータと出力される結果との相関関係を掴むことができないようにする処理（非線型処理）を行うための表である。例えば、図３に示すように１６（列）×４（行）の換字表では、０行から３行それぞれに０〜１５の数字がランダムに並べられている。ＤＥＳの暗号化処理では、６４ビットの入力データを転置し、さらに適当数のブロックに分割して転置・重複等の演算を施した後、さらに適当数に分割したブロックのデータ（６ビット）をこの換字表に入力し、入力データの最上位ビットと最下位ビットを取り出して得られる２ビットの数値から換字表の行を選択し、最上位ビットと最下位ビットを除いた４ビットの数値から選択した行の何番目（何例目）かを選択し、該当する行と列の数値に置換して出力する。このような換字表を介在させることにより、入力データと出力される結果との相関関係を掴むことができなくなる。
【００１４】
本発明においては、不揮発性メモリの読み出し可能領域に設定された２−key triple−ＤＥＳ用の鍵ｋ1 、ｋ2 の他に、暗号化に際してはデータ攪乱手段２３がもつ乱数発生機能を用いて、新たにＤＥＳ用の鍵ｋ3 を生成し、鍵ｋ1 、ｋ2 、ｋ3 により３−key triple−ＤＥＳを行い、生成した鍵ｋ3 は読み出し不能領域に記憶させて復号に備える。このような処理により、２−key triple−ＤＥＳを前提にしても実際は３−key triple−ＤＥＳのため暗号の解読はできず、万一、３−key triple−ＤＥＳであることが分かったとしても鍵ｋ3 が読みだせないため安全性は高い。また、読み出し可能領域の鍵格納ファイルの容量を大きくすることなく３−key triple−ＤＥＳを実現することができる。
【００１５】
次に、データ攪乱手段による暗号化処理について図４により概略説明する。
平文６４ビットのブロックデータを暗号化処理部３１に入力すると、まず、図２に示したような転置マップに基づいて初期転置を行う。内部鍵生成部３２においては、ＤＥＳ用の５６ビットの共通鍵から暗号処理に使用するための４８ビットの１６種類の鍵を生成し、この１６種類の鍵を使用して初期転置後のデータに対して、順次、１６ステップの暗号化処理を行う。各ステップの暗号化処理においては、６４ビットのデータを左右３２ビットづつに分け、このデータと４８ビットの鍵データとにより図３に示した換字表を使用して暗号化関数により非線型処理し、次のステップでは前段で非線型処理した３２ビットのデータを左右入れ替えて同様の処理を施す。こうして１６ステップの暗号化処理を行った後、最終転置で元の位置に戻して６４ビットの暗号文として出力する。本発明ではこの暗号化処理を予め設定した鍵ｋ1 、ｋ2 と内部的に生成した鍵ｋ3 により、合計３回（うち１回は手順を逆方向（復号化）としてもよいし、順方向（暗号化）としてもよい）行って暗号強度を高めるようにする。
【００１６】
なお、上記説明では鍵ｋ1 、ｋ2 を予め設定しておき、３個目の鍵ｋ3 は内部的に生成するようにしたが、本発明はこれに限定されるものではなく、例えば、予め設定する鍵を１個とし、２個の鍵を内部的に生成して３−key triple−ＤＥＳを行うようにしてもよい。
【００１７】
【発明の効果】
以上のように本発明によれば、可搬記録媒体に１個または２個の鍵を記憶しておくだけで、鍵格納ファイルの容量を大きくせずに３個の鍵を用いた３−key triple−ＤＥＳを行うことができ、これによって以下の効果が達成できる。
・２個の鍵から残りの１個の鍵が確定的に求まるので、鍵空間の大きさは２−key triple−ＤＥＳと同様に２112 である。しかし、３個目の鍵を生成するアルゴリズムは可搬記録媒体内プログラムに実装された秘密アルゴリズムであるため、攻撃者はこれを知ることができない。したがって、鍵の全数探索を行おうとする攻撃者は本来の３−key triple−ＤＥＳと同様に２168 回の計算を行わなければならない。
・内部的には３−key triple−ＤＥＳを行っているため、ＩＣカードに与える平文と、ＩＣカードによる暗号化結果の暗号文とを用いて行う選択平文攻撃では、Merkle,M.Hellmanの攻撃法でも２57回ではなく、２112 回の計算量を必要とし、より安全である。
【図面の簡単な説明】
【図１】  本発明のＩＣカードの構成例を説明する図である。
【図２】  転置マップの例を示す図である。
【図３】  換字表の例を示す図である。
【図４】  暗号化処理を説明する図である。
【図５】  共通鍵暗号方式を説明する図である。
【図６】  暗号処理装置の暗号と復号の関係を示す図である。
【図７】  ３−key triple−ＤＥＳ、２−key triple−ＤＥＳを説明する図である。
【符号の説明】
１…リーダ／ライタ、２…ＩＣカード、２１…ＣＰＵ、２２…ＲＯＭ、２３…データ攪乱手段、２４…ＲＡＭ、２５…不揮発性メモリ。
【図１】
0004321837.tif 000002
【図２】
0004321837.tif 000003
【図３】
0004321837.tif 000004
【図４】
0004321837.tif 000005
【図５】
0004321837.tif 000006
【図６】
0004321837.tif 000007
【図７】
0004321837.tif 000008