(57)【要約】【課題】能動的攻撃に強く、暗号鍵の長さより長い平文Ｍをも暗号化することができ、短時間で、平文Ｍを知っている者が暗号文Ｙを作ったことを検証することを可能とする。【解決手段】乱数Ｒを平文とし、乱数ｒと共に確率暗号の公開鍵暗号方式で公開鍵により暗号化して暗号文Ｃを生成し（１０６）、Ｒに対しハッシュ関数Ｇを施して、ｓビットの共通鍵ｓｙｍＫを生成し（１０８）、ＭとＲに対しハッシュ関数Ｈを施してデータＷを生成し（１１１）、ＭとＷのビット連結に対し、ｓｙｍＫで共通鍵暗号演算を行って暗号文Ｓを生成し（１１４）、ＣとＳのビット連結を暗号文Ｙとして出力する。【選択図】  図１
2004347885.tif 000002
【特許請求の範囲】
【請求項１】
平文Ｍと公開鍵暗号方式の公開鍵を暗号化装置に入力して、暗号文を出力させる暗号化装置の処理方法であって、
乱数Ｒとｒを生成する過程と、
上記乱数Ｒを平文とし、上記乱数ｒと共に上記公開鍵で公開鍵暗号方式により暗号化してその暗号文Ｃを記憶部に記憶する過程と、
ｋビットのデータをｓビットのデータに変換するランダム関数で上記乱数Ｒをランダム化して秘密鍵  ｓｙｍＫを生成して記憶部に記憶する過程と、
任意のサイズのデータを特定のサイズのデータに変換するランダム関数で上記乱数Ｒと平文Ｍをランダム化してデータＷを生成する過程と、
上記データＷと上記平文Ｍをビット連結する過程と、
上記ビット連結したデータを上記秘密鍵  ｓｙｍＫで共通暗号化方式により暗号化して暗号文Ｓを生成して記憶部に記憶する過程と、
上記暗号文Ｃと上記暗号文Ｓをビット連結して暗号文Ｙを出力する過程と
を有する暗号化装置処理方法。
【請求項２】
公開鍵暗号方式の秘密鍵ｐｋを保持している暗号復号装置に暗号文Ｙを入力して、平文Ｍを出力させる上記装置の処理方法であって、
上記暗号文Ｙを暗号文Ｓと暗号文Ｃとにビット分離して記憶部に記憶する過程と、
上記暗号文Ｃに対し上記秘密鍵ｐｋで公開鍵暗号方式の復号を行って乱数Ｒを生成し記憶部に記憶する過程と、
ｋビットのデータをｓビットのデータに変換するランダム関数で上記乱数Ｒをランダム化して秘密鍵  ｓｙｍＫを生成する過程と、
上記秘密鍵  ｓｙｍＫで共通鍵暗号方式の復号を上記暗号文Ｓに行う過程と、
上記共通鍵暗号方式の復号結果を平文ＭとデータＷとにビット分離して記憶部に記憶する過程と、
任意のサイズのデータを特定のサイズのデータに変換するランダム関数で上記乱数Ｒと上記平文Ｍをランダム化してデータＷ′を生成する過程と、
上記データＷ′と上記データＷを比較して等しければ上記平文Ｍを出力する過程と
を有する暗号復号装置処理方法。
【請求項３】
乱数Ｒ及びｒを生成する乱数生成部と、
上記乱数Ｒ及びｒと公開鍵が入力され、上記乱数Ｒ及びｒに対し上記公開鍵により公開鍵暗号方式の暗号化演算を行い暗号文Ｃを出力する第１暗号化部と、
上記乱数Ｒが入力され、この乱数Ｒに対しランダム関数を演算すると共にｋビットのデータをｓビットのデータに変換して秘密鍵  ｓｙｍＫを出力する第１関数演算部と、
平文Ｍと上記乱数Ｒが入力され、これらに対しランダム関数を演算して一定のビット数のデータＷを出力する第２関数演算部と、
上記平文Ｍと上記データＷが入力され、これらをビット連結して出力する第１連結部と、
上記連結部の出力と上記秘密鍵  ｓｙｍＫが入力され、上記連結部の出力に対し、上記秘密鍵  ｓｙｍＫで共通鍵暗号方式の暗号化演算を行い暗号文Ｓを出力する第２暗号化部と、
上記暗号文Ｃと上記暗号文Ｓが入力され、これらをビット連結して暗号文Ｙを出力する第２連結部と
を具備する暗号化装置。
【請求項４】
入力された暗号文Ｙを暗号文Ｓと暗号文Ｃとにビット分離する分離部と、
上記暗号文Ｃが入力され、これに対し上記秘密鍵ｐｋで公開鍵暗号方式の復号演算を行って乱数Ｒを生成する第１復号部と、
上記乱数Ｒが入力され、これに対しｋビットのデータをｓビットのデータに変換するランダム関数演算を行って秘密鍵  ｓｙｍＫを生成する第１関数演算部と、
上記暗号文Ｓ及び上記秘密鍵  ｓｙｍＫが入力され、その暗号文Ｓに対し上記秘密鍵で共通鍵暗号方式の復号演算を行う第２復号部と、
上記第２復号部よりの復号演算結果が入力され、これを平文ＭとデータＷとにビット分離する分離部と、
上記平文Ｍと上記乱数Ｒが入力され、これらに対し任意のサイズのデータを特定のサイズのデータに変換するランダム関数演算を行ってデータＷ′を生成する第２関数演算部と、
上記データＷ′と上記データＷが入力され、これらを比較して等しければ上記平文Ｍを出力する比較部と
を具備する暗号復号装置。
【請求項５】
平文Ｍと公開鍵暗号方式の公開鍵を暗号化装置に入力して、暗号文を出力させる暗号化装置の処理方法であって、
乱数Ｒとｒを生成する過程と、
上記乱数Ｒを平文とし上記乱数ｒと共に上記公開鍵で公開鍵暗号方式により暗号化してその暗号文Ｃを記憶部に記憶する過程と、
ｋビットのデータをｓビットのデータに変換するランダム関数で上記乱数Ｒをランダム化して秘密鍵  ｓｙｍＫを生成して記憶部に記憶する過程と、
任意のサイズのデータを特定のサイズのデータに変換するランダム関数で上記乱数Ｒと平文Ｍをランダム化してデータＷを生成する過程と、
上記平文Ｍを上記秘密鍵  ｓｙｍＫで共通暗号化方式により暗号化して暗号文Ｓを生成して記憶部に記憶する過程と、
上記暗号文Ｃと上記暗号文Ｓと上記データＷをビット連結して暗号文Ｙを出力する過程と
を有する暗号化装置処理方法。
【請求項６】
公開鍵暗号方式の秘密鍵ｐｋを保持している暗号復号装置に暗号文Ｙを入力して、平文Ｍを出力させる上記装置の処理方法であって、
上記暗号文Ｙを暗号文Ｓと暗号文ＣとデータＷとにビット分離して記憶部に記憶する過程と、
上記暗号文Ｃに対し上記秘密鍵ｐｋで公開鍵暗号方式の復号を行って乱数Ｒを生成し記憶部に記憶する過程と、
ｋビットのデータをｓビットのデータに変換するランダム関数で上記乱数Ｒをランダム化して秘密鍵  ｓｙｍＫを生成する過程と、
上記秘密鍵  ｓｙｍＫで共通鍵暗号方式の復号を上記暗号文Ｓに行って平文Ｍを得る過程と、
任意のサイズのデータを特定のサイズのデータに変換するランダム関数で上記乱数Ｒと上記平文Ｍをランダム化してデータＷ′を生成する過程と、
上記データＷ′と上記データＷを比較して等しければ上記平文Ｍを出力する過程と
を有する暗号復号装置処理方法。
【請求項７】
乱数Ｒ及びｒを生成する乱数生成部と、
上記乱数Ｒ及びｒと公開鍵が入力され、上記乱数Ｒを平文とし乱数ｒと共に上記公開鍵により公開鍵暗号方式の暗号化演算を行い暗号文Ｃを出力する第１暗号化部と、
上記乱数Ｒが入力され、この乱数Ｒに対しランダム関数を演算すると共にｋビットのデータをｓビットのデータに変換して秘密鍵  ｓｙｍＫを出力する第１関数演算部と、
平文Ｍと上記乱数Ｒが入力され、これらに対しランダム関数を演算して一定のビット数のデータＷを出力する第２関数演算部と、
上記平文Ｍと上記秘密鍵  ｓｙｍＫが入力され、上記平文Ｍに対し、上記秘密鍵  ｓｙｍＫで共通鍵暗号方式の暗号化演算を行い暗号文Ｓを出力する第２暗号化部と、
上記暗号文Ｃと上記暗号文Ｓと上記データＷが入力され、これらをビット連結して暗号文Ｙを出力する連結部と
を具備する暗号化装置。
【請求項８】
入力された暗号文ＹをデータＷと暗号文Ｓと暗号文Ｃとにビット分離する分離部と、
上記暗号文Ｃが入力され、これに対し秘密鍵ｐｋで公開鍵暗号方式の復号演算を行って乱数Ｒを生成する第１復号部と、
上記乱数Ｒが入力され、これに対し、ｋビットのデータをｓビットのデータに変換するランダム関数演算を行って秘密鍵  ｓｙｍＫを生成する第１関数演算部と、
上記秘密鍵  ｓｙｍＫと上記暗号文Ｓが入力され、暗号文Ｓに対し上記秘密鍵  ｓｙｍＫで共通鍵暗号方式の復号演算を行って平文Ｍを生成する第２復号部と、
上記平文Ｍと上記乱数Ｒが入力され、これらに対し、任意のサイズのデータを特定のサイズのデータに変換するランダム関数演算を行ってデータＷ′を生成する第２関数演算部と、
上記データＷ′と上記データＷが入力され、これらを比較して等しければ上記平文Ｍを出力する比較部と
を具備する暗号復号装置。
【請求項９】
請求項１又は５に記載した暗号化装置処理方法の各過程をコンピュータに実行させるためのプログラム。
【請求項１０】
請求項２又は６に記載した暗号復号装置処理方法の各過程をコンピュータに実行させるためのプログラム。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
この発明は公開鍵暗号方式及び共通鍵暗号方式を併用した暗号化装置、暗号復号装置、それらの処理方法及びプログラムに関する。
【０００２】
【従来の技術】
一般に、暗号方法は共通鍵暗号方式と公開鍵暗号方式との二種類に類別できる。公開鍵暗号方式は、共通鍵暗号方式で問題となる鍵配送の問題や鍵の管理の問題などがないものであって、代表的な公開鍵暗号方式として、ＲＳＡ暗号、Ｒａｂｉｎ暗号、ＥｌＧａｍａｌ暗号、楕円曲線暗号（楕円ＥｌＧａｍａｌ暗号）などが挙げられる。
暗号の攻撃法には、大きく分けて受動的攻撃法と能動的攻撃法がある。受動的攻撃法は、攻撃者は単に暗号文と公開情報から平文を探索する方法である。能動的攻撃法とは、攻撃者は自分が自由に選択した暗号文を正規の受信者に復号してもらうことができる。能動的攻撃法に対しても安全な暗号方式を構成することは、より強い安全性を保証する暗号文を構成することを意味する。
【０００３】
従来、ＲＳＡ暗号のような確定的な暗号に基づき、能動的攻撃に強い暗号文を構成する一般的な方法としては、Ｂｅｌｌａｒｅ，Ｒｏｇａｗａｙにより、ＯＡＥＰ（Ｏｐｔｉｍａｌ  Ａｓｙｍｍｅｔｒｉｃ  Ｅｎｃｒｙｐｔｉｏｎ  Ｐａｄｄｉｎｇ）という方法が知られている（Ｍ．Ｂｅｌｌａｒｅ  ａｎｄ  Ｐ．Ｒｏｇａｗａｙ，“Ｏｐｔｉｍａｌ  Ａｓｙｍｍｅｔｒｉｃ  Ｅｎｃｒｙｐｔｉｏｎ−Ｈｏｗ  ｔｏ  ｅｎｃｒｙｐｔ  ｗｉｔｈ  ＲＳＡ”Ａｄｖａｎｃｅｓ  ｉｎ  Ｃｒｙｐｔｏｌｏｇｙ−ＥＵＲＯＣＲＹＰＴ’９４，ＬＮＣＳ，Ｓｐｒｉｎｇｅｒ−Ｖｅｒｌａｇ，１９９５．参照）。彼らの方法は、ランダム関数を２種類用いて構成する方法である。この２種類のランダム関数は例えば、ＳＨＡなどのハッシュ関数であり、その具体的な構成法は上記論文に掲載されている。
【０００４】
このＯＡＥＰでは１回の暗号文で送信できる平文の長さは、適用する公開鍵暗号方式の鍵長よりも短くなければならないという問題点があった。
ＯＡＥＰの改良方式としてはＳｈｏｕｐによるＯＡＥＰ＋が知られている（Ｖ．Ｓｈｏｕｐ，“ＯＡＥＰ  Ｒｅｃｏｎｓｉｄｅｒｅｄ”Ａｄｖａｎｃｅｓ  ｉｎ  Ｃｒｙｐｔｏｌｏｇｙ−ＣＲＹＰＴＯ  ２００１，ＬＮＣＳ，Ｓｐｒｉｎｇｅｒ−Ｖｅｒｌａｇ，２００１．参照）。ＯＡＥＰ＋はランダム関数を３回利用して、ＯＡＥＰよりも高い安全性を実現する方式である。
しかしながら、ＯＡＥＰ＋はランダム関数を３回使用しなければならないことに加え、ＯＡＥＰと同様に１回の暗号文で送信できる平文の長さは、適用する公開鍵暗号方式の鍵長よりも短くなければならないという問題点があった。
【０００５】
確率暗号を用いて能動的攻撃に強い暗号文を構成する方法としては、非特許文献１で提案されているＲＥＡＣＴ（Ｒａｐｉｄ  Ｅｎｈａｎｃｅｄ−ｓｅｃｕｒｉｔｙ  Ａｓｙｍｍｅｔｒｉｃ  Ｃｒｙｐｔｏｓｙｓｔｅｍ  Ｔｒａｎｓｆｏｒｍ）が知られている。
このＲＥＡＣＴは、ランダム関数と公開鍵暗号方式（確率暗号を含む）の他に、共通鍵暗号方式（例えば、ＡＥＳやＣａｍｅｌｌｉａなど）を用い、送信者は乱数ｒを公開鍵暗号方式で暗号化したｃ１  と、ｒをランダム関数演算した関数値ｒ′を共通鍵とする共通鍵暗号方式で平文を暗号化して得られた暗号文ｃ２  とを、受信者に送信する。また暗号化処理において、暗号文の正当性を保証するため、平文、乱数ｒ、公開鍵暗号方式により計算された暗号文ｃ１  、共通鍵暗号方式により計算された暗号文ｃ２  を、ランダム関数演算した関数値ｃ３  を、検査用の情報として暗号文ｃ１  ，ｃ２  に添付する。
【０００６】
受信者はｃ１  を受信者の秘密鍵を用いて復号してｒを求め、ｒをランダム関数演算してｒ′を求め、ｒ′を共通鍵としてｃ２から平文を復号する。復号処理が終わったら、復号で得られた平文、乱数ｒと、暗号文ｃ１  ，ｃ２  を、ランダム関数演算して得られる関数値がｃ３  と一致するかの検査を行い、暗号文の正当性が確認できれば、得られた平文を暗号文に対応した情報とみなす。
ＲＥＡＣＴは、確率暗号の適用を可能にし、高い安全性を保証するとともに、平文に対する暗号化共通鍵暗号方式によって行い公開鍵暗号方式によらないため、１回の暗号文で送信できる平文の長さの制限がなく、高い通信効率が実現できる。
【０００７】
【非特許文献１】
Ｔ．Ｏｋａｍｏｔｏ  ａｎｄ  Ｄ．Ｐｏｉｎｔｃｈｅｖａｌ，“ＲＥＡＣＴ：Ｒａｐｉｄ  Ｅｎｈａｎｃｅｄ−ｓｅｃｕｒｉｔｙ  Ａｓｙｍｍｅｔｒｉｃ  Ｃｒｙｐｔｏｓｙｓｔｅｍ  Ｔｒａｎｓｆｏｒｍ”Ｔｈｅ  Ｃｒｙｐｔｏｇｒａｐｈｅｒ’ｓ  Ｔｒａｃｋ  ａｔ  ＲＳＡ  Ｃｏｎｆｅｒｅｎｃｅ，ＬＮＣＳ，Ｓｐｒｉｎｇｅｒ−Ｖｅｒｌａｇ，２００１）
【０００８】
【発明が解決しようとする課題】
ＲＥＡＣＴは、公開鍵暗号方式で得られる暗号文ｃ１  と、共通鍵暗号方式で得られる暗号文ｃ２  の計算が完了しなければ、暗号文の正当性の検査で用いる情報ｃ３  の計算を開始できない、従って処理速度が遅いという問題があった。
この発明の目的は、一般的な確率暗号の公開鍵暗号方式を用いて能動的攻撃に強く、共通鍵暗号方式を用いて通信効率がよく、かつ並列処理により高速に暗号文の計算を行える暗号化装置、その復号装置、これら装置の処理方法、及びプログラムを提供することにある。
【０００９】
【課題を解決するための手段】
この発明の暗号化装置の処理方法によれば、乱数Ｒとｒを生成し、乱数Ｒを平文とし、乱数ｒと共に公開鍵で公開鍵暗号方式による暗号化を行って暗号文Ｃを生成し、ｋビットの上記乱数をランダム関数Ｇでランダム化してｓビットの秘密鍵  ｓｙｍＫを生成し、上記乱数Ｒと平文Ｍをランダム関数Ｈでランダム化して一定ビット数のデータＷを生成し、このデータＷと上記平文Ｍをビット連結し、そのビット連結したデータを上記秘密鍵  ｓｙｍＫで共通暗号化方式により暗号化して暗号文Ｓを生成し、上記暗号文Ｃと上記暗号文Ｓをビット連結して暗号文Ｙを出力する。
【００１０】
この暗号化装置の処理方法と対応したこの発明の暗号復号装置の処理方法によれば入力暗号文Ｙを暗号文Ｓと暗号文Ｃとにビット分離し、暗号文Ｃに対し上記秘密鍵ｐｋで公開鍵暗号方式の復号を行って乱数Ｒを生成し、このｋビットの乱数Ｒをランダム関数Ｇでランダム化してｓビットの秘密鍵  ｓｙｍＫを生成し、この秘密鍵  ｓｙｍＫで共通鍵暗号方式の復号を暗号文Ｓに行い、その復号結果を平文ＭとデータＷとにビット分離し、上記乱数Ｒと上記平文Ｍをランダム関数Ｈでランダム化して一定ビット数のデータＷ′を生成し、上記データＷ′と上記データＷを比較して等しければ上記平文Ｍを出力する。
【００１１】
この発明の暗号化装置処理方法の他面によれば、上述の方法において、平文Ｍをビット連結を行うことなく、秘密鍵  ｓｙｍＫで暗号化して暗号文Ｓとし、暗号文Ｓと暗号文ＣとデータＷとをビット連結して出力暗号文Ｙとする。その他は上述の方法と同様である。
この処理方法と対応する復号装置の処理方法では上述した復号装置処理方法において、入力暗号文Ｙを暗号文Ｓと暗号文ＣとデータＷとにビット分離し、秘密鍵  ｓｙｍＫで暗号文Ｓを復号した結果をそのまま平文Ｍとし、ランダム関数でランダム化して得られたデータＷ′とビット分離したデータＷとを比較する。その他は上述の方法と同様である。
【００１２】
【発明の実施の形態】
この発明による暗号化装置により平文Ｍを暗号文Ｙとし、この暗号文Ｙをこの発明による暗号復号装置とにより復号して平文Ｍを得る暗号システムが構成される。この暗号システムの構成に当り、使用する確率暗号の公開鍵暗号方式と共通鍵暗号方式とが決められ、共通鍵暗号方式としてはＡＥＳやＣａｍｅｌｌｉａあるいは秘密鍵を平文と同一の長さとし、その秘密鍵と平文との排他的論理和をとる方式などを用いることができる。その公開鍵暗号方式の公開鍵をｐｋ、秘密鍵をｓｋとする。更に任意のサイズのデータを特定のサイズのデータに変換するランダム関数Ｈと、ｋビットのデータをｓビットに変換するランダム関数Ｇが使用されるが、これらランダム関数Ｈ，Ｇは例えばＳＨＡなどのハッシュ関数であり、具体例は前記ＯＡＥＰの論文に上げられている。ランダム関数Ｇの関数値のｓビットは、使用する共通鍵暗号方式が決まれば、その秘密鍵  ｓｙｍＫのビット長と等しくし、例えば１００ビットとか２００ビット程度であり、ランダム関数Ｈの関数値Ｗの一定のビット数ｎも、例えば秘密鍵  ｓｙｍＫのビット長と同程度とされる。乱数ｒのビット数は使用する公開鍵暗号方式により制限される範囲のものを使用する。
【００１３】
第１実施形態
図１にこの発明の暗号化装置の第１実施形態の機能構成例を示し、この構成と、この装置の処理方法を以下に説明する。暗号化されるべき平文Ｍは記憶部１０１に記憶され、また公開鍵暗号方式の公開鍵ｐｋが記憶部１０２に格納されている。
平文Ｍに対する暗号文Ｙを生成するには、まず乱数発生部１０３よりｋビットの乱数Ｒおよびｍビットの乱数ｒを発生させ、それぞれ記憶部１０４，１０５に記憶する。
これら乱数Ｒ，ｒを公開鍵ｐｋとともに暗号化部１０６に入力し、乱数Ｒを平文とする確率暗号の公開鍵暗号化演算を公開鍵ｐｋを用いて行って暗号化の結果として暗号文Ｃ＝Ｅｐｋ（Ｒ，ｒ）を得、これを記憶部１０７に記憶する。
【００１４】
一方、公開鍵暗号暗号化演算処理と並行して、関数演算部１０８に乱数Ｒを入力し、乱数Ｒに対する関数演算を行ってＲをランダム化してその関数値としてｓビットの秘密鍵  ｓｙｍＫ＝Ｇ（Ｒ）を得て、これを記憶部１０９に記憶する。
またこれら処理と並列的に平文Ｍと乱数Ｒを関数演算部１１１に入力して、平文Ｍ、乱数Ｒに対し関数演算を行ってランダム化して一定ビット数ｎのデータＷ＝Ｈ（Ｍ，Ｒ）を求めて、記憶部１１２に記憶する。平文Ｍと、データＷを連結部１１３でビット連結してＭ‖Ｗを作成する。
記憶部１０９内の秘密鍵  ｓｙｍＫとビット連結Ｍ‖Ｗを暗号化部１１４に入力して、平文Ｍに対し秘密鍵  ｓｙｍＫを用いて共通鍵暗号暗号化演算を行い、その暗号化の結果としての暗号文Ｓ＝  ｓｙｍＥｓｙｍＫ（Ｍ‖Ｗ）を記憶部１１５に記憶する。
記憶部１１５内の暗号文Ｓと、記憶部１０７内の暗号文Ｃを連結部１１６でビット連結して暗号文Ｙ＝Ｓ‖Ｃを生成して、この暗号化装置の出力とする。
【００１５】
平文Ｍや公開鍵ｐｋなどの入力を行う入力部１１７、各部を動作させ、各記憶部に対する読み書きを行う制御部１１８、暗号文Ｙを出力する出力部１１９が設けられる。記憶部１０１，１０２，１０４，１０５，１０７，１０９，１１２，１１５はその全部又は一部を、共通の記憶部を兼用して用いてもよい。また記憶部１０４，１０５は乱数生成部１０３内のレジスタ、記憶部１０７，１１５はそれぞれ暗号化部１０６，１１４内のレジスタ、記憶部１０９，１１２はそれぞれ関数演算部１０８，１１１内のレジスタであってもよい。
【００１６】
次に図１に示した暗号化装置に対する暗号復号装置の機能構成例を図２に示し、その構成と処理方法を以下に説明する。
この暗号復号装置に入力された暗号文Ｙは分離部２０１を用いて暗号文ＳとＣにビット分離してそれぞれ記憶部２０２，２０３に記憶する。暗号部Ｃと記憶部２０４に記憶されている公開鍵暗号の秘密鍵ｓｋを復号部２０５に入力して暗号文Ｃに対し秘密鍵ｓｋによる公開鍵暗号復号演算を行ってその結果としてｋビットの乱数Ｒ＝Ｄｓｋ（Ｃ）を得、これを記憶部２０６に記憶する。この乱数Ｒに対し関数演算部２０７で関数演算を行ってランダム化してその結果としてｓビットの秘密鍵  ｓｙｍＫ＝Ｇ（Ｒ）を生成してｓｙｍＫを記憶部２０８に記憶する。
【００１７】
この秘密鍵  ｓｙｍＫと、記憶部２０２から読み出した暗号文Ｓを復号部２１１に入力して暗号文Ｓに対し、秘密鍵ｓｙｍＫによる公開鍵暗号復号演算を行い、その結果としてデータＭ‖Ｗ＝ｓｙｍＤｓｙｍＫ（Ｓ）を得る。この復号結果のデータＭ‖Ｗを分離部２１２で平文ＭとデータＷとにビット分離して、それぞれ記憶部２１３，２１４に記憶する。
平文Ｍと記憶部２０６間の乱数Ｒを関数演算部２１５に入力して、これらにランダム関数Ｈの演算を行ってランダム化し、ｎビットの関数値を生成する。この関数値Ｈ（Ｍ，Ｒ）と記憶部２１４内のデータＷとを比較部２１６で比較し、これらが互いに等しいかどうかを検証する。
【００１８】
もし等しくなければ、何も出力しない、もしくは、「検証不合格」を出力し、等しければ、記憶部２１３内の平文Ｍを暗号文Ｙの復号結果として出力する。
暗号文Ｙの入力部２１７、平文Ｍや不合格など出力する出力部２１８、各部を動作させ、かつ各記憶部に対する読み書きを行う制御部２１９が設けられている。各記憶部は複数ないし全部を共通のもので兼用してもよく、また各演算部や復号部内のレジスタであってもよい。
【００１９】
第２実施形態
この発明の第２実施形態における暗号化装置の機能構成例を図３に図１と対応する部分に同一参照番号を付けて示す。重複説明は省略する。この第２実施形態では図１中の連結部１１３が省略され、第１実施形態と同様に乱数発生部１０３より乱数Ｒ，ｒを発生させ、暗号文Ｃを生成し、また、秘密鍵  ｓｙｍＫを生成し、更に、データＷを生成する。第２実施形態では平文ＭはデータＷとビット連結されることなく、暗号化部１１４で秘密鍵  ｓｙｍＫにより共通鍵暗号暗号化演算が行われ、その暗号化の結果が暗号文Ｓ＝  ｓｙｍＥ  ｓｙｍＫ（Ｍ）として記憶部１１５に記憶される。また連結部１１６では暗号文ＳとＣのみならずデータＷもビット連結され、暗号文Ｙ＝Ｓ‖Ｗ‖Ｃとして出力される。
【００２０】
図４に第２実施形態における暗号復号装置の機能構成を図２と対応する部分に同一参照番号を付けて示し、重複説明は省略する。図４は図２に対し、分離部２１２が省略されている。
入力された暗号文Ｙは分離部２０１で暗号文Ｓと暗号文ＣのみならずデータＷとの３つにビット分離され、データＷは記憶部２１４に記憶される。暗号文Ｃが復号され、更に秘密鍵  ｓｙｍＫが生成され、暗号文Ｓがこの秘密鍵  ｓｙｍＫにより共通鍵暗号復号演算が行われることは第１実施形態と同様である。第２実施形態ではこの秘密鍵  ｓｙｍＫによる復号結果はビット分離されることなく、そのまま平文Ｍとされ、これと乱数Ｒとに対して関数演算Ｈがなされ、この演算結果Ｈ（Ｍ，Ｒ）と分離部２０１でビット分離されたデータＷとが比較部２１６で比較され、等しくなければ、何も出力しないもしくは、「検証不合格」を出力し、等しければ、記憶部２１３内の平文Ｍを暗号文Ｙの復号結果として出力する。
【００２１】
図１及び図３に示した暗号化装置はコンピュータにより機能させることもできる。その場合は、前述したこの装置の処理方法の各過程をコンピュータに実行させるための暗号化装置処理プログラムを、ＣＤ−ＲＯＭ、磁気ディスクなどの記録媒体から、あるいは通信回線を介してコンピュータ内にインストールして、このプログラムをそのコンピュータに実行させればよい。同様に図２及び図４に示した暗号復号装置もコンピュータにより機能させればよい。この場合も前述したこの装置の処理方法の各過程をコンピュータに実行させるための暗号復号装置処理プログラムを用いればよい。
【００２２】
【発明の効果】
以上述べたようにこの発明によればランダム関数を利用することにより、暗号文Ｙを復号する者は、送信者がその暗号文Ｙの復号結果である平文の値を知っていたかどうかを検証できる。従って、復号処理の検証に合格する時には、送信者が暗号文Ｙの復号結果である平文Ｍの値を知っていたことを確認できるため、能動的攻撃に対しても安全性が保証できる暗号方式となっている。
通信効率の点では、ＲＥＡＣＴと同様、送信すべき平文Ｍに対し公開鍵暗号方式による暗号化を行うことなく、平文Ｍは共通鍵暗号方式にて暗号化しているため、１回の暗号文で送信できる平文Ｍの長さの制限を受けない。
【００２３】
さらに、一般には、公開鍵暗号（Ｅｐｋ，Ｄｓｋ）の演算量は、秘密鍵暗号（ｓｙｍＥ  ｓｙｍＫ，ｓｙｍＤ  ｓｙｍＫ）、および関数Ｇ，Ｈの演算量に比べて大きいため、この発明の暗号化処理においては、公開鍵暗号（Ｅｐｋ，Ｄｓｋ）の計算を行っている過程で、並列処理を行うことで、暗号文に用いる他の全ての情報を計算することが可能である。すなわち、この発明における平文に対する暗号演算量は、公開鍵暗号（Ｅｐｋ，Ｄｓｋ）の演算量と同等である。つまり、この発明により、暗号文Ｓと暗号文Ｃ、検証に必要なデータＷとの生成を並列的に行うことにより計算の待ち時間を削除し、高速に暗号化処理を行い、安全性を向上させることが可能となる。
【００２４】
しかも暗号文ＳとＣが生成された時は、暗号文の正当性の検証に用いる情報も生成されているため、暗号文ｃ１  とｃ２  が得られた後に暗号文の正当性の検証に用いる情報ｃ３  を生成するＲＥＡＣＴよりも短時間で暗号文Ｙを生成することができる。
第１実施形態ではデータＷが得られた後に、暗号化部１１４での暗号化処理を行うことになるが、第２実施形態では全体の処理を開始した時に、平文Ｍに対し直接暗号化処理を行う点で、それだけ処理時間を短かくすることができる。平文Ｍの長さをｔビットとすると、関数演算部１１１の入力ビット長はｔ＋ｋであるが、ＲＥＡＣＴは２ｔ＋２ｋとなり、ｔが大きいと入力が大きいため並列処理が困難になる。この点でもこの発明は有利である。
【図面の簡単な説明】
【図１】この発明の第１実施形態の暗号化装置の機能構成例を示す図。
【図２】この発明の第１実施形態の暗号復号装置の機能構成例を示す図。
【図３】この発明の第２実施形態の暗号化装置の機能構成例を示す図。
【図４】この発明の第２実施形態の暗号復号装置の機能構成例を示す図。
【図１】
2004347885.tif 000003
【図２】
2004347885.tif 000004
【図３】
2004347885.tif 000005
【図４】
2004347885.tif 000006