(57)【特許請求の範囲】
【請求項１】
暗号化するデータＡとデータＢとを入力し、
第１の演算手段が、データＡとデータＢとを交互に入力して、第１のデータ変換処理を複数回行う暗号処理装置において、
前記暗号処理装置は、
排他的論理和回路ＡとセレクタＡとレジスタＡとを備えたデータ保持手段Ａであって、暗号化するデータＡをセレクタＡが選択してレジスタＡに保持するとともに、第１の演算手段に入力するデータＡをレジスタＡが出力し、第１の演算手段による第１のデータ変換処理の偶数回目の実行後に、排他的論理和回路Ａが第１の演算手段から出力されたデータとレジスタＡに保持されたデータＡとの排他的論理和演算を行い演算した結果をセレクタＡが選択してレジスタＡにデータＡとして保持して出力するデータ保持手段Ａと、
排他的論理和回路ＢとセレクタＢとレジスタＢとを備えたデータ保持手段Ｂであって、暗号化するデータＢをセレクタＢが選択してレジスタＢに保持するとともに、第１の演算手段に入力するデータＢをレジスタＢが出力し、第１の演算手段による第１のデータ変換処理の奇数回目の実行後に、排他的論理和回路Ｂが第１の演算手段から出力されたデータとレジスタＢに保持されたデータＢとの排他的論理和演算を行い演算した結果をセレクタＢが選択してレジスタＢにデータＢとして保持して出力するデータ保持手段Ｂとを備え、
前記第１の演算手段は、さらに、
前記第１の演算手段に対して入力されたデータに対して第２のデータ変換処理を実行する第２の演算手段を有し、
前記暗号処理装置は、さらに、
前記第１の演算手段の内部に設けられ、第２の演算手段から出力されるデータをデータＣとして保持して出力するデータ保持手段Ｃと、
データ保持手段Ａとデータ保持手段Ｂとデータ保持手段Ｃとの３つのデータ保持手段の中から１つのデータ保持手段を選択して、選択したデータ保持手段に保持されているデータを出力する選択手段と
を備え、
前記第１の演算手段は、さらに、
第２のデータ変換処理を複数回行うループ処理手段を有し、
前記ループ処理手段は、第２の演算手段、データ保持手段Ｃ、選択手段により処理ループを構成し、
前記データ保持手段Ｃは、前記第２の演算手段から出力されるデータＣを前記第２のデータ変換処理のタイミングを制御するように一時的に保持し、
前記選択手段は、
前記処理ループを開始させる場合には、データ保持手段Ａに保持されたデータＡとデータ保持手段Ｂに保持されたデータＢとのいずれかを選択し、
前記処理ループを継続させる場合には、データ保持手段Ｃに保持されたデータＣを選択し、
前記処理ループを終了させる場合には、データ保持手段Ｃに保持されたデータＣを選択し、
前記選択手段は、
データ保持手段Ａに保持されたデータＡとデータ保持手段Ｂに保持されたデータＢとのいずれかを選択して前記処理ループを開始し、データ保持手段Ｃに保持されたデータＣを選択して前記処理ループを継続させて第２のデータ変換処理を複数回実行させることにより、データＡに対する第１のデータ変換処理とデータＢに対する第１のデータ変換処理とを第１の演算手段に交互に実行させる
ことを特徴とする暗号処理装置。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
この発明は、暗号処理装置に関するものであり、特にＩＣカード等に用いられる小型暗号処理装置に関するものである。
【０００２】
【従来の技術】
この発明の従来の技術として、秘密鍵（共通鍵）暗号系のブロック暗号である、米国商用暗号のＤＥＳ（Data Encryption Standard）を用いて説明する。ＤＥＳの詳細な処理内容は、例えば、Hans Eberl “A High-speed DES Implementation for Network Applications”、Advances in Cryptology - CRYPTO‘92、Lecture Notes in computer Science 740、Springer-Verlag．に記載されている。図１３は、ＤＥＳ暗号アルゴリズムのフローチャートである。図１３において、１００１〜１００４はデータ変換処理を行う関数Ｆによる演算、１０１１〜１０１４はビット毎の排他的論理和演算である。尚、初期転置、最終転置は省略してある。
【０００３】
動作について説明する。２×ｎビット（ＤＥＳの場合２×３２ビット）の入力データ１０５０が２つのｎビットデータ１０５１、１０５２に分割される。ｎビットデータ１０５１はそのままｎビットデータ１０５３として出力されるとともに、関数Ｆ１００1に入力され、データ変換される。関数Ｆ１００1から出力されたデータは他方のｎビットデータ１０５２と排他的論理和演算１０１１によりビット毎に排他的論理和演算され、ｎビットデータ１０５４が出力される。
以下同様に関数Ｆ１００２、１００３、１００４、排他的論理和演算１０１２、１０１３、１０１４まで演算処理が繰り返され、出力データ１０５５、１０５６が出力される。この２つのｎビットデータは合成され２ｎビットデータ１０５７として出力される。
【０００４】
図１４は、図１３で示されたＤＥＳ暗号フローチャートと同等なデータ変換処理を実現する暗号処理装置の一例である。図１４において１１０１および１１０２はデータを保持するレジスタＡおよびレジスタＢ、１１０３および１１０４はデータを選択するセレクタＡおよびセレクタＢ、１１０５はデータ変換として関数Ｆを演算する関数Ｆ演算回路、１１０６は排他的論理和回路、１２０１、１２０２はｎビット入力データＡ、Ｂ、１２０３、１２０４はｎビット出力データＡ、Ｂである。
【０００５】
動作を説明する。２×ｎビット（ＤＥＳの場合２×３２ビット）の入力データがｎビットの２つのデータ入力Ａ１２０１、入力Ｂ１２０２に分割される。２つの入力データはそれぞれ、セレクタＡ１１０３およびセレクタＢ１１０４によって選択され、レジスタＡ１１０１およびレジスタＢ１１０２に保持される。次にレジスタＡ１１０１に保持されたデータは、セレクタＡ１１０３およびセレクタＢ１１０４にフィードバックされるとともに、関数Ｆ演算回路１１０５に入力されデータ変換された後、レジスタＢ１１０２に保持されたデータと排他的論理和回路１１０６において排他的論理和演算される。この結果はセレクタＡ１１０３およびセレクタＢ１１０４にフィードバックされる。
【０００６】
次にセレクタＡ１１０３においては排他的論理和演算回路１１０６の結果が選択され、セレクタＢにおいてはレジスタＡ１１０１に保持されていたデータが選択され、それぞれレジスタＡ１００１およびレジスタＢ１００２に新たに保持される。以下同様に図１３における関数Ｆ１００２、１００３、１００４から排他的論理和演算１０１２、１０１３、１０１４まで必要回数だけ処理がループされ、出力データＡ１２０３及び出力データＢ１２０４が出力される。尚ＤＥＳの場合は１６回である。
尚、本従来技術の詳細については、例えば、Hans Eberl “A High-speed DES Implementation for Network Applications”, Advances in Cryptology - CRYPTO‘92、Lecture Notes in computer Science 740、Springer-Verlag．に記載されている。
【０００７】
【発明が解決しようとする課題】
上記のような方式による暗号処理装置は、同様な構成をもつ関数Ｆが繰り返し処理される構成を持つ場合、１つの回路を繰り返し利用することで実現処理手段を効率的に構成することができる。そのため、回路規模を削減することが可能となり、低消費電力化も可能であった。しかし、関数Ｆがその内部により小さい処理要素の繰り返し構造を持つ場合には、これまでの暗号処理装置の構成では、回路規模の削減やそれに伴う低消費電力化には効率的ではないという問題があった。
【０００８】
この発明は上記のような問題を解決するためになされたもので、同様な構成をもつ関数Ｆが繰り返し処理される構成を持ち、かつ関数Ｆがその内部により小さい処理要素の繰り返し構造を持つ場合に、暗号処理装置を効率的に構成し，回路規模の削減や消費電力の低下が可能となる暗号処理装置を得ることを目的としている。
【０００９】
【課題を解決するための手段】
第１の発明に係る暗号処理装置は、入力データに対して第１の演算手段により第１のデータ変換処理を複数回行う暗号処理装置において、前記第１の演算手段は、さらに第２のデータ変換処理を複数回行うループ処理手段を有し、前記ループ処理手段は、第２の演算手段、データ保持手段、選択手段により処理ループを構成し、前記第２の演算手段は、前記第２のデータ変換処理を行ない、前記データ保持手段は、前記第２のデータ変換処理のタイミングを制御するように処理ループ上のデータを一時的に保持し、前記選択手段は、当該処理ループを終了させるか継続させるかを選択するものである。
【００１０】
第２の発明に係る暗号処理装置は、第１の発明に係る暗号処理装置において、前記第２の演算手段は、前記第２の演算手段に入力されたデータを第１の分割データと第２の分割データに分けるデータ分割手段と、前記第１の分割データをデータ変換する第３の演算手段と、前記第３の演算手段の出力データと前記第２の分割データをビット毎に排他的論理和演算する排他的論理和手段と、前記排他的論理和手段の出力データと前記第２の分割データを結合するデータ結合手段を有することを特徴とするものである。
【００１１】
第３の発明に係るＩＣカードは、リーダー・ライターとデータの通信を行うＩＣカードであって、前記リーダー・ライターから前記データを受信するデータ受信手段と、前記リーダー・ライターに前記データを送信するデータ送信手段と、前記データを暗号処理する第１の発明に係る暗号処理装置を有するものである。
【００１２】
第４の発明に係るＩＣカードは、リーダー・ライターとデータの通信を行うＩＣカードであって、前記リーダー・ライターから前記データを受信するデータ受信手段と、前記リーダー・ライターに前記データを送信するデータ送信手段と、前記データを暗号処理する第２の発明に係る暗号処理装置を有するものである。
【００１３】
第５の発明に係る暗号処理方法は、入力データに対して第１の演算ステップにより第１のデータ変換処理を複数回行う暗号処理方法において、前記第１の演算ステップは、さらに第２のデータ変換処理を複数回行うループ処理ステップを有し、前記ループ処理ステップは、前記第２のデータ変換処理を行なう第２の演算ステップと、前記第２のデータ変換処理のタイミングを制御するように処理ループ上のデータを一時に保持するデータ保持ステップと、当該処理ループを終了させるか継続させるかを選択する選択ステップを有するものである。
【００１４】
第６の発明に係る暗号処理方法は、第５の発明に係る暗号処理方法において、前記第２の演算ステップは、前記第２の演算ステップに入力されたデータを第１の分割データと第２の分割データに分けるデータ分割ステップと、前記第１の分割データをデータ変換する第３の演算ステップと、前記第３の演算ステップの出力データと前記第２の分割データをビット毎に排他的論理和演算する排他的論理和ステップと、前記排他的論理和ステップの出力データと前記第２の分割データを結合するデータ結合ステップを有することを特徴とするものである。
【００１５】
【発明の実施の形態】
実施の形態１．
この発明の一実施の形態である暗号処理装置について、図１〜図３を用いて説明する。
図１は、この発明の一実施の形態である暗号処理装置における、暗号処理アルゴリズムのフローチャートを示したものである。図１において、１０１〜１０４はデータ変換処理を行う関数Ｆによる演算、１１１〜１１４はビット毎の排他的論理和演算である。
図２は関数Ｆによる演算の構成を示したものであり、３つの関数ｆ２０１〜２０３と１つの関数ｇ２１１による演算により構成される。
【００１６】
動作について説明する。２×ｎビットの入力データ１５０が上位と下位の２つのｎビットデータ１５１、１５２に分割される。ｎビットデータ１５１はそのままｎビットデータ１５３として出力されるとともに、関数Ｆ１０１によりデータ変換される。関数Ｆ１０1から出力されたデータは他方のｎビットデータ１５２と排他的論理和演算１１１においてビット毎に排他的論理和演算され、ｎビットデータ１５４が出力される。関数Ｆにおいては、関数ｆ２０１〜２０３による演算が３回繰り返された後に、関数ｇ２１１による演算が行われ出力される。
以下同様に関数Ｆ１０２、１０３、１０４、排他的論理和演算１１２、１１３、１１４まで演算が繰り返され、ｎビットデータ１５５、１５６が出力される。この２つのｎビットデータが合成され、２ｎビットデータ１５７が出力される。
【００１７】
図３は図１、図２で説明したデータ変換アルゴリズムを実現する、暗号処理装置の概略構成図を示したものである。図３において３０１、３０２及び３０３はデータを保持するレジスタＡ、レジスタＢ、レジスタＣ、３１１、３１２及び３１３はデータを選択するセレクタＡ、セレクタＢ、セレクタＣ、３２１と３２２はビット毎の排他的論理和回路、３２３は関数Ｆの演算を行う構成要素の１つである関数ｆ演算回路、３２４は関数Ｆの演算を行う構成要素の１つである関数ｇ演算回路である。
レジスタＣ３０３、セレクタＣ３１３、関数ｆ演算回路３２３、関数ｇ演算回路３２４等により第１の演算手段を構成する。レジスタＣ３０３、セレクタＣ３１３、関数ｆ演算回路３２３等によりループ処理手段を構成する。
【００１８】
図４、図５は、図３の回路の動作を説明するフローチャートである。図４、図５を用いて動作を説明する。関数Ｆによる演算は、関数ｆ演算回路３２３による処理を３回、関数ｇ演算回路３２４による処理を１回行うことによりなされる。
図１における第１段目のデータ変換処理について説明する。
２×ｎビットの入力データは２つのｎビットデータに分割され、入力データＡ３５１および入力データＢ３５２として入力される。入力されたデータはセレクタＡ３１１セレクタＢ３１２において選択され、それぞれレジスタＡ３０１およびレジスタＢ３０２に保持される（ステップ４−１）。
【００１９】
次にセレクタＣ３１３において、レジスタＡ３０１に保持されたデータが選択され（ステップ４−４）、この選択されたデータは関数ｆ演算回路３２３によりデータ変換される（ステップ４−６）。関数ｆ演算回路３２３より出力されたデータはレジスタＣ３０３に保持される（ステップ４−７）。これにより関数ｆ演算回路による処理の１回目が終了する。
つづいて、セレクタＣ３１３において、レジスタＣ３０３に保持されたデータが選択され（ステップ４−８）、この選択されたデータが関数ｆ演算回路３２３により変換される（ステップ４−６）。関数ｆ演算回路  ３２３より出力されたデータはレジスタＣ３０３に保持される（ステップ４−７）。これにより関数ｆ演算回路による処理の２回目が終了する。
【００２０】
さらに、セレクタＣ３１３においてレジスタＣ３０３に保持されたデータが選択される（ステップ４−８）。そして、この選択されたデータは関数ｆ演算回路３２３によりデータ変換され（ステップ４−６）、出力データがレジスタＣ３０３に保持される（ステップ４−７）。これにより関数ｆ演算回路３２３による処理の３回目が終了する。
次に、セレクタＣ３１３においてレジスタＣ３０３に保持されたデータが選択される（ステップ４−９）。この選択されたデータは関数ｇ演算回路３２４によりデータ変換されて出力される（ステップ４−１０）。以上で、関数Ｆによる演算が終了する。
【００２１】
次に、関数ｇ演算回路３２４から出力されたデータがフィードバックされ、レジスタＢ３０２に保持されたデータと排他的論理和回路３２２において排他的論理和が演算される（ステップ４−１４）。その出力データがセレクタＢ３１２において選択され、この選択されたデータがレジスタＢ３０２に保持される（ステップ４−１５）。以上で第１段目のデータ変換処理が完了する。
次に第２段目のデータ変換処理について説明する。
セレクタＣ３１３においてレジスタＢ３０２に保持されたデータが選択される（ステップ４−３）。次に、この選択されたデータは関数ｆ演算回路３２３によりデータ変換され（ステップ４−６）、出力データがレジスタＣ３０３に保持される（ステップ４−７）。これにより関数ｆ演算回路による処理の１回目が終了する。
【００２２】
つづいて、セレクタＣ３１３においてレジスタＣ３０３に保持されたデータが選択され（ステップ４−８）、この選択されたデータは関数ｆ演算回路３２３によりデータ変換され（ステップ４−６）、出力データがレジスタＣ３０３に保持される（ステップ４−７）。これにより関数ｆ演算回路３２３による処理の２回目が終了する。
さらに、セレクタＣ３１３においてレジスタＣ３０３に保持されたデータが選択される（ステップ４−８）。次に、この選択されたデータは関数ｆ３２３演算回路によりデータ変換され（ステップ４−６）、出力データがレジスタＣ３０３に保持される（ステップ４−７）。これにより関数ｆ演算回路３２３による処理の３回目が終了する。
【００２３】
次にセレクタＣ３１３においてレジスタＣ３０３に保持されたデータが選択され（ステップ４−９）、この選択されたデータは関数ｇ演算回路３２４によりデータ変換される（ステップ４−１０）。以上で、関数Ｆによる演算が終了する。次に、関数ｇ演算回路３２４より出力されたデータがフィードバックされ、レジスタＡ３０１に保持されたデータと排他的論理和回路３２１において排他的論理和演算がなされる（ステップ４−１２）。その出力データがセレクタＡ３１１において選択され、この選択されたデータがレジスタＡ３０１に保持される（ステップ４−１３）。以上で第２段目のデータ変換処理が完了する。
【００２４】
以下、この第１段目のデータ変換処理および第２段目の変換処理と同等な処理を交互に必要段数繰り返す。
最後に最終段目のデータ変換処理の結果として、レジスタＡ３０１およびレジスタＢ３０２で保持されているデータを出力Ａ３５３、出力Ｂ３５４として出力する（ステップ４−１９）。
以上のようにこの発明によれば、レジスタＣ３０３とセレクタＣ３１３を用いることにより、構成要素としての一つの関数ｆ演算回路３２３を繰り返し使用するので、関数ｆ演算回路３２３を一つ持てばよく、関数ｆ演算回路３２３を３つ持つ必要がないので、回路規模を削減することが可能である。
【００２５】
特に、暗号処理のデータ変換に用いられる関数Ｆ（関数ｆ、関数ｇ）は暗号強度の高い関数が用いられるため、非常に複雑な構成をとることが知られており、本発明に基づく回路規模の削減の効果は非常に大きくなる。
また、この発明によれば、レジスタＡ３０１、レジスタＢ３０２、レジスタＣ３０３、セレクタＡ３１１、セレクタＢ３１２、セレクタＣ３１３は常に動作する必要はなく、必要に応じて動作すれば処理を実現することが可能であるため、装置の低消費電力化を実現することが可能となる。
【００２６】
従って、本発明をＩＣカードのような小型の装置として使用する場合に、特に大きな効果を奏することが可能となる。尚、本発明はＩＣカードのみならずＩＣカードのリーダー・ライターにも利用することも可能である。
尚、関数Ｆは上記の構成に限定されるものではない。例えば、関数ｆ３２３の繰り返しのみで構成されている場合は、図３において関数ｇ３２４は必要がなく、セレクタＣ３１３で選択されたデータを直接フィードバックすればよい。
【００２７】
又、関数ｆ３２３がｍ個（ｍは１つまたはそれ以上）の関数により、任意の順で構成されるような場合は、図３における関数ｆ３２３に相当する部分に、前述のｍ個の関数を並列にならべ、そのおのおのにセレクタＣ３１３からのデータを入力し、それらの出力をｍ入力１出力の選択を行うセレクタの入力とし、適切な一つの出力データを選択してレジスタＣ３０３に保持させ、これを前述のｍ個の関数の任意の順に相当するだけ繰り返すことによって構成することも可能である。
【００２８】
実施の形態２．
この発明の他の一実施の形態である暗号処理装置について、図６〜図１１を用いて説明する。
図６はＭＩＳＴＹ暗号アルゴリズムのフローチャートを示している。ＭＩＳＴＹの処理の詳しい内容については、例えば、松井  充“ブロック暗号アルゴリズムＭＩＳＴＹ”、電子情報通信学会  信学技報  ISEC96-11（1996-07）に詳細が記載されている。図６において、５０１〜５０６は関数ＦＬによる演算、５１１〜５１４は関数ＦＯによる演算、５２１〜５２４は排他的論理和演算である。図７は図６における関数ＦＯ５１１〜５１４による演算の構成を示している。図７に示してあるように、ＭＩＳＴＹでは関数ＦＯ５１１〜５１４の処理として関数ＦＩ６０１〜６０３と排他的論理和演算６１１〜６１３を中心とした変換処理を３段繰り返すようになっている。図８は図６および図７で示されるＭＩＳＴＹのデータ変換の処理を本発明を用いて構成した暗号処理装置の一実施例である。
【００２９】
次に図６における暗号アルゴリズムの動作を説明する。
まず２×ｎビットの入力データ５５０が上位と下位のｎビットの２つのデータに分割され、入力Ａ５５１および入力Ｂ５５２として入力される。ＭＩＳＴＹの場合はｎ＝３２である。ｎビットデータ５５１は関数ＦＬ５０１によりデータ変換されて後、そのままｎビットデータ５５３として出力されるとともに、関数ＦＯ５１1によりデータ変換される。関数ＦＯ５１1により演算処理されたデータは、他方のｎビットデータ５５２が関数ＦＬ５０２によりデータ変換された出力データと、排他的論理和演算５２１においてビット毎に排他的論理和演算され、ｎビットデータ５５４が出力される。関数ＦＯにおいては、関数ＦＩ６０１〜６０３と排他的論理和演算６１１〜６１３により演算がなされる。即ち、入力された２ｍビットデータ（ｎビット）６５０が２つのｍビットデータ６５１と６５２に分けられる。データ６５１は関数ＦＩによりデータ変換されて後、データ６５２と排他的論理和演算６１１によりビット毎に排他的論理和演算され、データ６５３として出力される。データ６５２はデータ６５４としてそのまま出力される。以下同様の動作を全部で３段繰り返し、２つのｍビットデータを併せ、２ｍビット（ｎビット）データ６５５として出力される。
【００３０】
次に、２段目の処理について説明する。第１段目の出力データ５５４はそのまま出力されると同時に関数ＦＯ５１２によりデータ変換される。関数ＦＯ５１２の出力データはもう一方のｎビットデータ５５３と排他的論理和演算５２２においてビット毎に排他的論理和が演算され出力される。
以下１段目と２段目と同様なデータ変換が必要段数繰り返され、ｎビットデータ５５７、５５８が出力され、最後に又ＦＬ関数５０５、５０６により変換され、上位、下位が入れ換えられて、この２つのｎビットデータが合成され、２ｎビットデータ５５９が出力される。
【００３１】
図８は図６、図７で説明したデータ変換アルゴリズムを実現する、暗号処理装置の概略構成図を示したものである。
図８において、７０１、７０２、７０３はレジスタＡ、レジスタＢ、レジスタＣ、７１１、７１２、７１３、７１４はセレクタＡ、セレクタＢ、セレクタＣ、セレクタＤ、７２１、７２２、７２３は排他的論理和回路、７２４はデータ変換を行う関数ＦＩ演算回路、７２５はデータ変換を行う関数ＦＬ演算回路、７５１は入力データＡ、７５２は入力データＢ、７５３は出力データＡ、７５４は出力データＢである。
ここで、レジスタＣ７０３、セレクタＣ７１３、関数ＦＩ演算回路７２４、排他的論理和回路７２３等により第１のデータ変換を行う第１の演算手段を構成する。又、レジスタＣ７０３、セレクタＣ７１３、関数ＦＩ演算回路７２４、排他的論理和回路７２３等によりループ処理手段を構成する。
【００３２】
図９〜図１１は図８に示された暗号処理装置の動作を説明するフローチャートである。図９〜図１１を用いて動作を説明する。
まず２×ｎビットの入力データｎビットの２つのデータに分割され、入力Ａ７５１および入力Ｂ７５２として入力される。ＭＩＳＴＹの場合はｎ＝３２である。入力されたデータはセレクタＡ７１１セレクタＢ７１２において選択され、それぞれレジスタＡ７０１およびレジスタＢ７０２に保持される（ステップ８−１）。
【００３３】
次にセレクタＣ７１３においてレジスタＡ７０１に保持されたデータが選択される（ステップ８−３）。次にこの選択されたデータが関数ＦＬ演算回路７２５においてデータ変換され（ステップ８−４）、出力データがセレクタＤ７１４において選択される（ステップ８−５）。さらに、この選択されたデータがセレクタＡ７１１において選択され（ステップ８−６）、レジスタＡ７０１に保持される（ステップ８−７）。
次に、セレクタＣ７１３においてレジスタＢ７０２に保持されたデータが選択される（ステップ８−８）。この選択されたデータが関数ＦＬ演算回路７２５においてデータ変換され（ステップ８−９）、出力データがセレクタＤ７１４において選択される（ステップ８−１０）。さらに、この選択されたデータがセレクタＢ７１２において選択され（ステップ８−１１）、レジスタＢに保持される（ステップ８−１２）。
【００３４】
次にセレクタＣ７１３においてレジスタＡ７０１に保持されたデータが選択される（ステップ８−１３）。次に、この選択されたデータ（２×ｍビット）はｍビットずつにわけられ、一方のｍビットのデータはそのまま出力データとして出力される。他方のｍビットデータは、関数ＦＩ演算回路７２４に入力されデータ変換されて後、排他的論理和回路７２３において、もう一方のｍビットデータとビット毎の排他的論理和演算され、これら２つの出力データが合成される（ステップ８−１４）。出力データはレジスタＣ７０３に保持される（ステップ８−１５）。これにより、１回目の関数ＦＩ演算回路７２４を中心とした処理が完了する。
【００３５】
次に、セレクタＣ７１３においてレジスタＣ７０３に保持されたデータが選択される（ステップ８−１６）。この選択されたデータ（２×ｍビット）はｍビットずつにわけられ、一方のｍビットのデータはそのまま出力データとして出力される。他方のｍビットデータは、関数ＦＩ演算回路７２４に入力されデータ変換されて後、排他的論理和回路７２３において、もう一方のｍビットデータとビット毎の排他的論理和演算され、これら２つの出力データが合成される（ステップ８−１４）。出力データはレジスタＣ７０３に保持される（ステップ８−１５）。これにより、２回目の関数ＦＩ演算回路７２４を中心とした処理が完了する。
【００３６】
次に、セレクタＣ７１３においてレジスタＣ７０３に保持されたデータが選択される（ステップ８−１６）。この選択されたデータ（２×ｍビット）はｍビットずつにわけられ、一方のｍビットのデータはそのまま出力データとして出力される。他方のｍビットデータは、関数ＦＩ演算回路７２４に入力されデータ変換されて後、排他的論理和回路７２３において、もう一方のｍビットデータとビット毎の排他的論理和演算され、これら２つの出力データが合成される（ステップ８−１４）。出力データはレジスタＣ７０３に保持される（ステップ８−１５）。これにより、３回目の関数ＦＩ演算回路７２４を中心とした処理が完了する。
【００３７】
次にセレクタＣ７１３においてレジスタＣ７０３に保持されたデータが選択され（ステップ８−１６）、この選択されたデータがセレクタＤ７１４において選択される（ステップ８−１８）。この選択されたデータがフィードバックされ、レジスタＢ７０２に保持されたデータと排他的論理和回路７２２において排他的論理和演算を取られる（ステップ８−２０）。その出力データがセレクタＢ７１２において選択され（ステップ８−２１）、この選択されたデータがレジスタＢ７０２に保持される（ステップ８−２２）。以上で第１段目のデータ変換処理が完了する。
【００３８】
次に図６における２段目のデータ変換処理に相当するデータ変換処理を行う。まずセレクタＣ７１３においてレジスタＢ７０２に保持されたデータが選択される（ステップ８−２４）。
この選択されたデータ（２×ｍビット）はｍビットずつにわけられ、一方のｍビットのデータはそのまま出力データとして出力される。他方のｍビットデータは、関数ＦＩ演算回路７２４に入力されデータ変換されて後、排他的論理和回路７２３において、もう一方のｍビットデータとビット毎の排他的論理和演算され、これら２つの出力データが合成される（ステップ８−１４）。出力データはレジスタＣ７０３に保持される（ステップ８−１５）。これにより、１回目の関数ＦＩ演算回路７２４を中心とした処理が完了する。
【００３９】
次に、セレクタＣ７１３においてレジスタＣ７０３に保持されたデータが選択される（ステップ８−１６）。この選択されたデータ（２×ｍビット）はｍビットずつにわけられ、一方のｍビットのデータはそのまま出力データとして出力される。他方のｍビットデータは、関数ＦＩ演算回路７２４に入力されデータ変換されて後、排他的論理和回路７２３において、もう一方のｍビットデータとビット毎の排他的論理和演算され、これら２つの出力データが合成される（ステップ８−１４）。出力データはレジスタＣ７０３に保持される（ステップ８−１５）。これにより、２回目の関数ＦＩ演算回路７２４を中心とした処理が完了する。
【００４０】
次に、セレクタＣ７１３においてレジスタＣ７０３に保持されたデータが選択される（ステップ８−１６）。この選択されたデータ（２×ｍビット）はｍビットずつにわけられ、一方のｍビットのデータはそのまま出力データとして出力される。他方のｍビットデータは、関数ＦＩ演算回路７２４に入力されデータ変換されて後、排他的論理和回路７２３において、もう一方のｍビットデータとビット毎の排他的論理和演算され、これら２つの出力データが合成される（ステップ８−１４）。出力データはレジスタＣ７０３に保持される（ステップ８−１５）。これにより、３回目の関数ＦＩ演算回路７２４を中心とした処理が完了する。
【００４１】
次にセレクタＣ７１３においてレジスタＣ７０３に保持されたデータが選択され（ステップ８−１６）、この選択されたデータがセレクタＤ７１４において選択される（ステップ８−１８）。この選択されたデータがフィードバックされ、レジスタＡ７０１に保持されたデータと排他的論理和回路７２１においてビット毎に排他的論理和演算される（ステップ８−２５）。その出力データがセレクタＡ７１１において選択され（ステップ８−２６）、この選択されたデータがレジスタＡ７０１に保持される（ステップ８−２７）。以上で第２段目のデータ変換処理が完了する。
以下、この第１段目のデータ変換処理および第２段目の変換処理と同等な処理を交互に必要段数繰り返す。ＭＩＳＴＹは第８段目の変換処理と同等な処理を行うところまで行う。
【００４２】
次にセレクタＣ７１３においてレジスタＡ７０１に保持されたデータが選択される（ステップ８−３）。次にこの選択されたデータが関数ＦＬ演算回路７２５においてデータ変換され（ステップ８−４）、出力データがセレクタＤ７１４において選択される（ステップ８−５）。さらに、この選択されたデータがセレクタＡ７１１において選択され（ステップ８−６）、レジスタＡ７０１に保持される（ステップ８−７）。
次に、セレクタＣ７１３においてレジスタＢ７０２に保持されたデータが選択される（ステップ８−８）。この選択されたデータが関数ＦＬ演算回路７２５においてデータ変換され（ステップ８−９）、出力データがセレクタＤ７１４において選択される（ステップ８−１０）。さらに、この選択されたデータがセレクタＢ７１２において選択され（ステップ８−１１）、レジスタＢに保持される（ステップ８−１２）。
【００４３】
最後にレジスタＡ７０１およびレジスタＢ７０２で保持されているデータを出力Ａ７５３、出力Ｂ７５４として出力する（ステップ８−２９）。
本実施の形態によれば、各段の関数ＦＯ５１１〜５１４が図７に示されるような構成をもつ場合であっても、関数ＦＩ演算回路を３つ、排他的論理和回路を３つ持つ必要がなく、関数ＦＩ演算回路を一つ、排他的論理和回路を一つもてばよいので、回路規模を削減することが可能となる。又、暗号化アルゴリズムが図６に示されるような構成を持つ場合であっても、関数ＦＬ５０１〜５０４を実現する回路部分を複数持つ必要がなく、関数ＦＬ演算回路を一つもてばよいので、同様に回路規模の削減が可能となる。
【００４４】
本実施の形態であるＭＩＳＴＹの場合、関数ＦＩ、関数ＦＬは暗号強度の高い関数を用いるため、非常に複雑な構成をとる。従って本発明に基づく回路規模の削減の効果は非常に大きなものとなる。
また、本実施形態の動作の説明で明らかなように、レジスタＡ〜レジスタＣ、セレクタＡ〜セレクタＤは常に動作する必要はなく、必要に応じて動作すれば処理を実現することが可能である。これは低消費電力化の実現においても非常に大きな効果を奏する。
従って、本発明をＩＣカードのような小型の装置として使用する場合に、特に大きな効果を奏することが可能となる。尚、本発明はＩＣカードのみならずＩＣカードのリーダー・ライターにも利用することも可能である。
【００４５】
実施の形態３．
図１２はこの発明の一実施の形態である、通信システムの概略構成図を示したものである。図１２において９１はリーダーライター、９２はＩＣカード、９３はＩＣカード９２のＩＣである。ＩＣ９３は構成要素として、９４は通信データの送受信を行なう送受信手段、９５は装置の制御等を行なうＣＰＵ、９６はデータ、プログラム等が記憶されるメモリ、９７は通信データの暗号・復号化処理を行う暗号処理装置である。ＩＣ９３は構成要素として、送受信手段９４、ＣＰＵ９５、メモリ９６、暗号処理装置９７を有する。
【００４６】
暗号処理装置９７には、実施の形態１又は実施の形態２に記載された暗号処理装置が利用される。
この通信システムの通信においては、暗号化されたデータが通信される。すなわち、ＩＣカード９２は、暗号処理装置９７により暗号化されたデータを送受信手段９４によりリーダーライター９１に送信する。又、リーダーライター９１から送信されたデータを送受信手段９４により受信し、この受信データを暗号処理装置９７で復号化することにより通信を行う。
【００４７】
以上のように、この発明によれば、暗号化されたデータを通信する通信システムにおいて、ＩＣカード９２の暗号処理装置９７に実施の形態１もしくは実施の形態２における暗号処理装置を用いることにより、効率的なＩＣの構成が可能となり回路規模の削減および低消費電力化の実現されたＩＣカードを得ることが可能となる。
尚、リーダーライター９１とＩＣカード９２の通信は、接触・非接触のどちらであってもよい。
【００４８】
【発明の効果】
第１の発明に係る暗号処理装置は、入力データに対して第１の演算手段により第１のデータ変換処理を複数回行う暗号処理装置において、前記第１の演算手段は、さらに第２のデータ変換処理を複数回行うループ処理手段を有し、前記ループ処理手段は、第２の演算手段、データ保持手段、選択手段により処理ループを構成し、前記第２の演算手段は、前記第２のデータ変換処理を行ない、前記データ保持手段は、前記第２のデータ変換処理のタイミングを制御するように処理ループ上のデータを一時的に保持し、前記選択手段は、当該処理ループを終了させるか継続させるかを選択するものであるので、暗号処理装置の回路規模の削減および低消費電力化を実現することが可能となる。
【００４９】
第２の発明に係る暗号処理装置は、第１の発明に係る暗号処理装置において、前記第２の演算手段は、前記第２の演算手段に入力されたデータを第１の分割データと第２の分割データに分けるデータ分割手段と、前記第１の分割データをデータ変換する第３の演算手段と、前記第３のデータ変換手段の出力データと前記第２の分割データをビット毎に排他的論理和演算する排他的論理和手段と、前記排他的論理和手段の出力データと前記第２の分割データを結合するデータ結合手段を有することを特徴とするものであるので、暗号処理装置の回路規模の削減および低消費電力化を実現することが可能となる。
【００５０】
第３の発明に係るＩＣカードは、リーダー・ライターとデータの通信を行うＩＣカードであって、前記リーダー・ライターから前記データを受信するデータ受信手段と、前記リーダー・ライターに前記データを送信するデータ送信手段と、前記データを暗号処理する請求項１に記載の暗号処理装置を有するものであるので、特に効率的な回路構成を実現することが要求される暗号処理装置を用いたＩＣカードにおいて、回路規模の削減および低消費電力化が可能となる。
【００５１】
第４の発明に係るＩＣカードは、リーダー・ライターとデータの通信を行うＩＣカードであって、前記リーダー・ライターから前記データを受信するデータ受信手段と、前記リーダー・ライターに前記データを送信するデータ送信手段と、前記データを暗号処理する請求項２に記載の暗号処理装置を有するものであるので、特に効率的な回路構成を実現することが要求される暗号処理装置を用いたＩＣカードにおいて、回路規模の削減および低消費電力化が可能となる。
【００５２】
第５の発明に係る暗号処理方法は、入力データに対して第１の演算ステップにより第１のデータ変換処理を複数回行う暗号処理方法において、前記第１の演算ステップは、さらに第２のデータ変換処理を複数回行うループ処理ステップを有し、前記ループ処理ステップは、前記第２のデータ変換処理を行なう第２の演算ステップと、前記第２のデータ変換処理のタイミングを制御するように処理ループ上のデータを一時に保持するデータ保持ステップと、当該処理ループを終了させるか継続させるかを選択する選択ステップを有するものであるので、暗号処理装置の回路規模の削減および低消費電力化を実現することが可能となる。
【００５３】
第６の発明に係る暗号処理方法は、第５の発明に係る暗号処理方法において、前記第２の演算ステップは、前記第２の演算ステップに入力されたデータを第１の分割データと第２の分割データに分けるデータ分割ステップと、前記第１の分割データをデータ変換する第３の演算ステップと、前記第３の演算ステップの出力データと前記第２の分割データをビット毎に排他的論理和演算する排他的論理和ステップと、前記排他的論理和ステップの出力データと前記第２の分割データを結合するデータ結合ステップを有することを特徴とするものであるので、暗号処理装置の回路規模の削減および低消費電力化を実現することが可能となる。
【図面の簡単な説明】
【図１】  本発明の実施の形態１に係る暗号化アルゴリズムを示する図である。
【図２】  本発明の実施の形態１に係る暗号化アルゴリズムに用いられる、関数の構成を示す図である。
【図３】  本発明の実施の形態１に係る暗号処理装置の基本構成を示すブロック図である。
【図４】  本発明の実施の形態１に係る暗号処理装置の基本的動作の一例を示すフローチャート図である。
【図５】  本発明の実施の形態１に係る暗号処理装置の基本的動作の一例を示すフローチャート図である。
【図６】  本発明の実施の形態２に係る暗号化アルゴリズムを示する図である。
【図７】  本発明の実施の形態２に係る暗号化アルゴリズムに用いられる、関数の構成を示す図である。
【図８】  本発明の実施の形態２に係る暗号処理装置の基本構成を示すブロック図である。
【図９】  本発明の実施の形態２に係る暗号処理装置の基本的動作の一例を示すフローチャート図である。
【図１０】  本発明の実施の形態２に係る暗号処理装置の基本的動作の一例を示すフローチャート図である。
【図１１】  本発明の実施の形態２に係る暗号処理装置の基本的動作の一例を示すフローチャート図である。
【図１２】  本発明の実施の形態３に係る通信システムの基本構成を示すブロック図である。
【図１３】  従来の技術における暗号化アルゴリズムを示する図である。
【図１４】  従来の技術における暗号処理装置の基本構成を示すブロック図である。
【符号の説明】
１０１〜１０４  関数Ｆによる演算、１１１〜１１４  排他的論理和演算、１５０、１５７  ２ｎビットデータ、１５１〜１５６  ｎビットデータ、２０１〜２０３  関数ｆによる演算、２１１  関数ｇによる演算、３０１〜３０３  レジスタ、３１１〜３１３  セレクタ、３２１、３２２  排他的論理和回路、３２３関数ｆ演算回路、３２４  関数ｇ演算回路、３５１〜３５４  ｎビットデータ、５０１〜５０６  関数ＦＬによる演算、５１１〜５１４  関数ＦＯによる演算、５２１〜５２４  排他的論理和演算、５５０、５５９  ２ｎビットデータ、５５１〜５５４、５５７、５５８  ｎビットデータ、６０１〜６０３  関数ＦＩによる演算、６１１〜６１３  排他的論理和演算、６５０、６５５  ２ｍビットデータ、６５１〜６５４  ｍビットデータ、７０１〜７０３  レジスタ、７１１〜７１４  セレクタ、７２１〜７２３  排他的論理和回路、７２４  関数ＦＩ演算回路、７２５  関数ＦＬ演算回路、７５１〜７５４  ｎビットデータ、９１  リーダー・ライター、９２  ＩＣカード、９３  ＩＣ、９４  送受装置、９５  ＣＰＵ、９６  メモリ、９７  暗号処理装置、１００１〜１００４  関数Ｆによる演算、１０１１〜１０１４  排他的論理和、１０５０、１０５７  ２ｎビットデータ、１０５１〜１０５６  ｎビットデータ、１１０１、１１０２  レジスタ、１１０３、１１０４  セレクタ、１１０５  関数Ｆ演算回路、１１０６  排他的論理和回路、１２０１〜１２０４  ｎビットデータ。
【図１】
0003992888.tif 000002
【図２】
0003992888.tif 000003
【図３】
0003992888.tif 000004
【図４】
0003992888.tif 000005
【図５】
0003992888.tif 000006
【図６】
0003992888.tif 000007
【図７】
0003992888.tif 000008
【図８】
0003992888.tif 000009
【図９】
0003992888.tif 000010
【図１０】
0003992888.tif 000011
【図１１】
0003992888.tif 000012
【図１２】
0003992888.tif 000013
【図１３】
0003992888.tif 000014
【図１４】
0003992888.tif 000015