(57)【要約】【課題】  耐タンパ性を高くし、且つ大量のデータの暗号通信を可能とする。【解決手段】  送信装置１に設けられる暗号化回路部１１には、第１暗号化回路１２と第２暗号化回路１３が配置される。第１暗号化回路１２は、平文を入力し、ＡＥＳ暗号の共通鍵にもとづいて平文をデジタル暗号化された暗号文にする。この暗号文は通信回線２を介して受信装置３側に送信される。第２の暗号化回路１３は、共通鍵情報を入力し、ＲＳＡ暗号の公開鍵情報にもとづいて共通鍵をｋ＊＊２（ｍｏｄｕｌｏ  ｎ）演算により暗号化する。この暗号化された共通鍵は通信回線２を介して受信装置３側に送信される。【選択図】  図２
2007300423.tif 000002
【特許請求の範囲】
【請求項１】
平文を共通鍵暗号方式の共通鍵により暗号文にし、前記共通鍵をＲＳＡ暗号方式の公開鍵で暗号化し、前記暗号文及び前記暗号化された共通鍵を出力する暗号化回路部と、
前記暗号化された共通鍵を前記公開鍵と対をなす秘密鍵により復号化し、前記復号化された共通鍵により前記暗号文を復号化する復号化回路部と、
を具備し、前記共通鍵を前記公開鍵で暗号化する暗号化回路と前記暗号化された共通鍵を前記秘密鍵で復号化する復号化回路が同一回路構成であることを特徴とする暗号化復号化装置。
【請求項２】
ＡＥＳ暗号方式の共通鍵の値ｋを左シフトする第１の左シフト回路と、
前記第１の左シフト回路の値と加算器の組み合わせで演算された前記値ｋの２乗を作成し、格納するｋ２演算回路と、
ＲＳＡ暗号方式のｍｏｄｕｌｏ演算の除数ｎを所定のビットだけ左シフトする第２の左シフト回路と、
前記ｋ２演算回路に格納された値から前記第２の左シフト回路の値を減算器で減算し、この手順を複数回繰り返して行うｋ２（ｍｏｄｕｌｏ  ｎ）計算回路と、
を具備し、前記値ｋの２乗計算のあとにｍｏｄｕｌｏ計算を行う手順を複数回繰り返し実行して、前記値ｋを前記ＲＳＡ暗号方式で暗号化して暗号化された共通鍵とすることを特徴とする暗号化装置。
【請求項３】
ＲＳＡ暗号方式で暗号化されたＡＥＳ暗号方式の共通鍵の値ｃを左シフトする第１の左シフト回路と、
前記第１の左シフト回路の値と加算器の組み合わせで演算された前記値ｃの２乗を作成し、格納するｃ２演算回路と、
前記ＲＳＡ暗号方式のｍｏｄｕｌｏ演算の除数ｎを所定のビットだけ左シフトする第２の左シフト回路と、
前記ｃ２演算回路に格納された値から前記第２の左シフト回路の値を減算器で減算し、この手順を複数回繰り返して行うｃ２（ｍｏｄｕｌｏ  ｎ）計算回路と、
を具備し、前記値ｃの２乗計算のあとにｍｏｄｕｌｏ計算を行う手順を複数回繰り返し実行して、前記値ｃを前記ＲＳＡ暗号方式で復号化することを特徴とする復号化装置。
【請求項４】
平文をＡＥＳ暗号方式の共通鍵により暗号文にする第１の暗号化回路と、前記ＡＥＳ暗号方式の共通鍵の値ｋを左シフトする第１の左シフト回路と、前記第１の左シフト回路の値と加算器の組み合わせで演算された前記値ｋの２乗を作成し、格納するｋ２演算回路と、ＲＳＡ暗号方式のｍｏｄｕｌｏ演算の除数ｎを所定のビットだけ左シフトする第２の左シフト回路と、前記ｋ２演算回路に格納された値から前記第２の左シフト回路の値を減算器で減算し、この手順を複数回繰り返して行うｋ２（ｍｏｄｕｌｏ  ｎ）計算回路とを備え、前記値ｋの２乗計算のあとにｍｏｄｕｌｏ計算を行う手順を複数回繰り返し実行して、前記値ｋを前記ＲＳＡ暗号方式で暗号化して暗号化された共通鍵とする第２の暗号化回路とを有し、前記暗号文及び前記暗号化された共通鍵を出力する暗号化回路部と、
前記ＲＳＡ暗号方式で暗号化された前記ＡＥＳ暗号方式の共通鍵の値ｃを左シフトする第３の左シフト回路と、前記第３の左シフト回路の値と加算器の組み合わせで演算された前記値ｃの２乗を作成し、格納するｃ２演算回路と、前記ＲＳＡ暗号方式のｍｏｄｕｌｏ演算の除数ｎを所定のビットだけ左シフトする第４の左シフト回路と、前記ｃ２演算回路に格納された値から前記第４の左シフト回路の値を減算器で減算し、この手順を複数回繰り返して行うｃ２（ｍｏｄｕｌｏ  ｎ）計算回路と備え、前記値ｃの２乗計算のあとにｍｏｄｕｌｏ計算を行う手順を複数回繰り返し実行して、前記値ｃを前記ＲＳＡ暗号方式で復号化する第１の復号化回路と、復号化された前記共通鍵により前記暗号文を復号化する第２の復号化回路とを有し、前記復号化された平文を出力する復号化回路部と、
を具備することを特徴とする暗号化復号化装置。
【請求項５】
平文を共通鍵暗号方式の共通鍵により暗号文にし、前記共通鍵をＲＳＡ暗号方式の公開鍵で暗号化し、前記暗号文及び前記暗号化された共通鍵を出力する送信装置側に設けられる暗号化回路部と、前記暗号化された共通鍵を前記公開鍵と対をなす秘密鍵により復号化し、前記復号化された共通鍵により暗号文を復号化する受信装置側に設けられる復号化回路部とを具備する暗号化復号化装置を用いた暗号化復号化方法であって、
前記送信装置側で、前記共通鍵の生成及び登録を行うステップと、
前記送信装置側で、前記共通鍵で平文を暗号化するステップと、
前記送信装置側で、前記共通鍵をＲＳＡ暗号方式の公開鍵を用いて、前記共通鍵の値ｋをｋ２（ｍｏｄｕｌｏ  ｎ）演算処理して前記共通鍵を暗号化するステップと、
前記暗号文と前記暗号化された共通鍵を送信装置側から受信装置側に送付するステップと、
前記受信装置側で、前記公開鍵と対をなす秘密鍵を用いて、前記送信装置側から送付された前記暗号化された共通鍵の値ｃをｃ２（ｍｏｄｕｌｏ  ｎ）演算処理して前記暗号化された共通鍵を復号化するステップと、
前記受信装置側で、前記復号化された共通鍵を用いて暗号文を復号化するステップと、
を具備することを特徴とする暗号化復号化装置を用いた暗号化復号化方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、暗号化された情報の通信方式に関する。
【背景技術】
【０００２】
音声・映像情報、実行プログラムなどの著作権を有するデジタルデータをネットワークを利用して送受信する場合、利用者認証、配送確認、及び不正コピーの防止などが大変重要となる。利用者認証としてデジタル暗号アルゴリズムが用いられている。デジタル暗号アルゴリズムには、暗号化鍵と復号化鍵に同じ共通鍵を用いる共通鍵暗号（対称鍵暗号とも呼称される）方式と、暗号化鍵と復号化鍵とが異なり、暗号化鍵としての公開鍵と復号化鍵としての秘密鍵を用いる公開鍵暗号（非対称鍵暗号とも呼称される）方式とがある。共通鍵暗号方式には、ＤＥＳ（Data  Encyption  Standard）暗号、Ｔｒｉｐｌｅ  ＤＥＳ暗号、ＡＥＳ（Advanced  Encyption  Standard）暗号などがある。公開鍵暗号方式には、ＲＳＡ（Ｒ）暗号、ＤＳＡ（Digital  Signature  Algorithm）暗号、ＥＣＣ（Elliptic  Curve  Cyptography、楕円曲線とも呼称される）暗号などがある。なお、ＲＳＡとはRivest−Shamir−Adlemanの略称名である（例えば、特許文献１参照。）。
【０００３】
共通鍵暗号方式では、大量のデータを暗号通信できるが、暗号文を受信する過程で共通鍵が盗まれる危険性が高く、耐タンパ性が低いという問題点がある。一方、公開鍵暗号方式では、受信者が暗号文を復号化する場合受信者のみが所有する秘密鍵を使用するので秘密鍵が盗まれる危険性が低く、耐タンパ性が比較的高いが、共通鍵暗号方式よりも計算量が多いので大量のデータを暗号通信することが不向きであるという問題点がある。更に、ＣＰＵ（Central  Processing  Unit）などの演算速度の高速化に伴い、ＲＳＡ暗号などの公開鍵暗号方式でも素因数分解などの直接攻撃により秘密鍵を解読される危険性が生じ、今後耐タンパ性が低下する可能性がある。
【特許文献１】特開平９−２６１２１７号公報（頁６、図１及び図２）
【発明の開示】
【発明が解決しようとする課題】
【０００４】
本発明は、耐タンパ性が高く、且つ大量のデータを暗号通信できる暗号化装置、復号化装置、暗号化復号化装置及びそれを用いた暗号化復号化方法を提供することにある。
【課題を解決するための手段】
【０００５】
上記目的を達成するために、本発明の一態様の暗号化復号化装置は、平文を共通鍵暗号方式の共通鍵により暗号文にし、前記共通鍵をＲＳＡ暗号方式の公開鍵で暗号化し、前記暗号文及び前記暗号化された共通鍵を出力する暗号化回路部と、前記暗号化された共通鍵を前記公開鍵と対をなす秘密鍵により復号化し、前記復号化された共通鍵により前記暗号文を復号化する復号化回路部とを具備し、前記共通鍵を前記公開鍵で暗号化する暗号化回路と前記暗号化された共通鍵を前記秘密鍵で復号化する復号化回路が同一回路構成であることを特徴とする。
【０００６】
また、上記目的を達成するために、本発明の一態様の暗号化装置は、ＡＥＳ暗号方式の共通鍵の値ｋを左シフトする第１の左シフト回路と、前記第１の左シフト回路の値と加算器の組み合わせで演算された前記値ｋの２乗を作成し、格納するｋ２演算回路と、ＲＳＡ暗号方式のｍｏｄｕｌｏ演算の除数ｎを所定のビットだけ左シフトする第２の左シフト回路と、前記ｋ２演算回路に格納された値から前記第２の左シフト回路の値を減算器で減算し、この手順を複数回繰り返して行うｋ２（ｍｏｄｕｌｏ  ｎ）計算回路とを具備し、前記値ｋの２乗計算のあとにｍｏｄｕｌｏ計算を行う手順を複数回繰り返し実行して、前記値ｋを前記ＲＳＡ暗号方式で暗号化して暗号化された共通鍵とすることを特徴とする。
【０００７】
そして、上記目的を達成するために、本発明の一態様の復号化装置は、ＲＳＡ暗号方式で暗号化されたＡＥＳ暗号方式の共通鍵の値ｃを左シフトする第１の左シフト回路と、前記第１の左シフト回路の値と加算器の組み合わせで演算された前記値ｃの２乗を作成し、格納するｃ２演算回路と、前記ＲＳＡ暗号方式のｍｏｄｕｌｏ演算の除数ｎを所定のビットだけ左シフトする第２の左シフト回路と、前記ｃ２演算回路に格納された値から前記第２の左シフト回路の値を減算器で減算し、この手順を複数回繰り返して行うｃ２（ｍｏｄｕｌｏ  ｎ）計算回路と、を具備し、前記値ｃの２乗計算のあとにｍｏｄｕｌｏ計算を行う手順を複数回繰り返し実行して、前記値ｃを前記ＲＳＡ暗号方式で復号化することを特徴とする。
【０００８】
更に、上記目的を達成するために、本発明の一態様の暗号化復号化装置を用いた暗号化復号化方法は、平文を共通鍵暗号方式の共通鍵により暗号文にし、前記共通鍵をＲＳＡ暗号方式の公開鍵で暗号化し、前記暗号文及び前記暗号化された共通鍵を出力する送信装置側に設けられる暗号化回路部と、前記暗号化された共通鍵を前記公開鍵と対をなす秘密鍵により復号化し、前記復号化された共通鍵により暗号文を復号化する受信装置側に設けられる復号化回路部とを具備する暗号化復号化装置を用いた暗号化復号化方法であって、前記送信装置側で、前記共通鍵の生成及び登録を行うステップと、前記送信装置側で、前記共通鍵で平文を暗号化するステップと、前記送信装置側で、前記共通鍵をＲＳＡ暗号方式の公開鍵を用いて、前記共通鍵の値ｋをｋ２（ｍｏｄｕｌｏ  ｎ）演算処理して前記共通鍵を暗号化するステップと、前記暗号文と前記暗号化された共通鍵を送信装置側から受信装置側に送付するステップと、前記受信装置側で、前記公開鍵と対をなす秘密鍵を用いて、前記送信装置側から送付された前記暗号化された共通鍵の値ｃをｃ２（ｍｏｄｕｌｏ  ｎ）演算処理して前記暗号化された共通鍵を復号化するステップと、前記受信装置側で、前記復号化された共通鍵を用いて暗号文を復号化するステップとを具備することを特徴とする。
【発明の効果】
【０００９】
本発明によれば、耐タンパ性が高く、且つ大量のデータを暗号通信できる暗号化装置、復号化装置、暗号化復号化装置及びそれを用いた暗号化復号化方法を提供することができる。
【発明を実施するための最良の形態】
【００１０】
以下本発明の実施例について図面を参照しながら説明する。
【実施例１】
【００１１】
まず、本発明の実施例１に係る暗号化装置、復号化装置、暗号化復号化装置及びそれを用いた暗号化復号化方法について、図面を参照して説明する。図１は暗号化復号化を行うシステム構成を示す概略図、図２は送信装置に設けられる暗号化回路部を示すブロック図、図３は受信装置に設けられる復号化回路部を示すブロック図である。本実施例では共通鍵暗号（対称鍵暗号とも呼称される）としてＡＥＳ（Advanced  Encyption  Standard）暗号を用い、公開鍵暗号（非対称鍵暗号とも呼称される）としてＲＳＡ（Ｒ）暗号を用いている。ここで、ＲＳＡとはRivest−Shamir−Adlemanの略称名である。
【００１２】
図１に示すように、暗号化復号化を行うシステム構成において、複数の送信装置１と複数の受信装置３が通信回線２を介して相互に通信可能に接続される。送信装置１では平文を暗号化して受信装置３側に送信する動作が行われ、受信装置３では送信装置１から送信された暗号文を受信して復号化（平文）する動作が行われる。ここで、通信回線とは有線或いは無線で情報を伝送する通信手段のことである。
【００１３】
送信装置１には、共通鍵を生成・登録するための第１の生成・登録手段、受信装置３側から送信される公開鍵を受信する第１の受信手段、暗号化処理を行う暗号化手段、暗号文及び暗号化された共通鍵を受信装置３側に送信する第１の送信手段、及び各種手段を統括・制御する第１の制御手段等が設けられる。
【００１４】
受信装置３には、公開鍵・秘密鍵を生成・登録するための第２の生成・登録手段、生成された公開鍵を送信装置１側に送信する第２の送信手段、暗号文及び暗号化された共通鍵を送信装置１側から受信する第２の受信手段、復号化処理を行う復号化手段、及び各種手段を統括・制御する第２の制御手段が設けられる。
【００１５】
ここで、暗号化復号化を行うシステムにおいて使用される共通鍵暗号には、ＡＥＳ暗号方式が用いられ、鍵長−ブロック長の組み合わせは、仕様化されている１２８ｂｉｔ−１２８ｂｉｔを使用している。なお、他に仕様化されている１９２ｂｉｔ−１２８ｂｉｔ、或いは２５６ｂｉｔ−１２８ｂｉｔの組み合わせを代わりに使用してもよい。一方、公開鍵暗号には、共通鍵を暗号化及び復号化するためにＲＳＡ暗号方式が用いられる。
【００１６】
図２に示すように、送信装置１に設けられる暗号化手段（暗号化装置）としての暗号化回路部１１には、第１暗号化回路１２と第２暗号化回路１３が配置される。
【００１７】
第１暗号化回路１２は、平文を入力し、ＡＥＳ暗号の共通鍵にもとづいて平文をデジタル暗号化された暗号文にする。この暗号文は通信回線２を介して受信装置３側に送信される。第２の暗号化回路１３は、共通鍵情報を入力し、ＲＳＡ暗号の公開鍵情報にもとづいて共通鍵を暗号化する。この暗号化された共通鍵は通信回線２を介して受信装置３側に送信される。
【００１８】
図３に示すように、受信装置３に設けられる復号化手段（復号化装置）としての復号化回路部３１には、第１復号化回路３２と第２復号化回路３３が配置される。
【００１９】
第２の復号化回路３３は、暗号化された共通鍵を送信装置１側から通信回線２を介して入力し、公開鍵と対をなす秘密鍵情報にもとづいて復号化（共通鍵）する。第１復号化回路３２は、デジタル暗号化された暗号文を送信装置１側から通信回線２を介して入力し、復号化された共通鍵にもとづいて復号化（平文）する。平文は受信装置３から出力され、受信者により理解される。なお、暗号化回路部１１と復号化回路部３１は、暗号化復号化装置として機能する。
【００２０】
ここで、ＲＳＡ暗号方式では、初期設定において、ユーザごとに独立に素数ｐと素数ｑを生成し、
n＝p×q・・・・・・・・・・・・・・・・・・・・・・・・・・・・・式（１）
を計算する。公開鍵（Public  Key）{ｅ、ｎ}と秘密鍵（Private  Key）｛ｄ、ｎ｝は、
ｅ×ｄ＝1{mod(p−1)(q−1)}・・・・・・・・・・・・・・・・・・・・式（２）
が成り立つように一組決められる。なお、ｅとｎが公開（open）され、ｐ、q、ｄが秘密情報となる。
【００２１】
ここで、平文に相当する共通鍵情報をｋとすると、公開鍵{ｅ、ｎ}情報により共通鍵情報としてのkは暗号化された共通鍵としての暗号コードｃに変換され、
c＝(ｋ＊＊ｅ)(modulo  ｎ)・・・・・・・・・・・・・・・・・・・・式（３）
と表される。なお、＊＊はべき乗、（ｍｏｄｕｌｏ  ｎ）はｎで割った余りを表し、ｋ＜ｎがＲＳＡ暗号化の条件である。一方、秘密鍵｛ｄ、ｎ｝情報により共通鍵情報としてのkは復号化され、
k＝(c＊＊ｄ)(modulo  ｎ)・・・・・・・・・・・・・・・式（４）
と表される。
【００２２】
一般的に、（ｍｏｄｕｌｏ  ｎ）演算では、(a×b)(modulo n)をA、a(modulo n)をB、b(modulo n)をCとすると、
A=(B×C)(modulo n)・・・・・・・・・・・・・・・・・・式（５）
が成立するので、ｅを２進化１０進数（ＢＣＤ）で表現すると、例えば、ｅが１１（１０進法表示）の場合、ｅ＝８＋２＋１＝２３＋２１＋２０＝（１、０、１、１）と表されるので、
(ｋ＊＊ｅ)＝(ｋ＊＊8)×(ｋ＊＊2)×(ｋ＊＊1)＝{(ｋ＊＊2)＊＊4}×(ｋ＊＊2)×(ｋ＊＊1)・・・・・・・・・・・・・・・・・・・・・・・・・式（６）
と表される。即ち、ｋの２乗とｋの１乗に分解することができ、ｋ＜ｎの条件を考慮すると、ｋ（ｍｏｄｕｌｏ  ｎ）＝ｋであるから、(ｋ＊＊ｅ)（ｍｏｄｕｌｏ  ｎ）演算するということ、即ち暗号化された共通鍵としての暗号コードｃを演算することは、式（５）及び式（６）から(ｋ＊＊２)（ｍｏｄｕｌｏ  ｎ）演算することに帰着する。
【００２３】
また、暗号化された共通鍵を公開鍵と対をなす秘密鍵情報にもとづいて復号化することは、式（４）から(ｃ＊＊２)（ｍｏｄｕｌｏ  ｎ）演算することに帰着し、その演算結果から共通鍵情報ｋが算出されることとなる。
【００２４】
次に、(ｋ＊＊２)（ｍｏｄｕｌｏ  ｎ）演算及び(ｃ＊＊２)（ｍｏｄｕｌｏ  ｎ）演算する演算回路について図４を参照して説明する。図４はｋ＊＊２（ｍｏｄｕｌｏ  ｎ）演算回路を示すブロック図、図４（ａ）は暗号化回路に設けられるｋ＊＊２（ｍｏｄｕｌｏ  ｎ）演算回路を示すブロック図、図４（ｂ）は復号化回路に設けられるｋ＊＊２（ｍｏｄｕｌｏ  ｎ）演算回路を示すブロック図である。復号化回路では、暗号コードｃが入力され秘密鍵にもとづいて復号化されるが、ここでは暗号化回路と同様な回路構成及び手順でｍｏｄｕｌｏ演算が行われるので、復号化回路側でもｃ＊＊２（ｍｏｄｕｌｏ  ｎ）演算回路と表記する代わりに、ｋ＊＊２（ｍｏｄｕｌｏ  ｎ）演算回路と表記する。
【００２５】
図４（ａ）に示すように、第２暗号化回路１３に設けられるｋ＊＊２（ｍｏｄｕｌｏ  ｎ）演算回路４には、第１のシフトレジスタ４１、第２のシフトレジスタ４２、加算器４３、第３のシフトレジスタ４４、第４のシフトレジスタ４５、第５のシフトレジスタ４６、第６のシフトレジスタ４７、減算器４８、第７のシフトレジスタ４９、及び第８のシフトレジスタ５０が設けられる。
【００２６】
第１のシフトレジスタ４１（第１の左シフト回路）は、共通鍵情報を２進化１０進数（ＢＣＤ）コードで入力して格納する。第２のシフトレジスタ４２は、第１のシフトレジスタ４１と加算器４３の間に設けられ、第１のシフトレジスタ４１から出力されるｂｉｔ情報を左にシフトする。加算器４３は、第２のシフトレジスタ４２と第３のシフトレジスタ４４の間に設けられ、第２のシフトレジスタ４２から出力される情報（値）と第３のシフトレジスタ４４から出力される情報（値）を加算する。第３のシフトレジスタ４４は、加算器４３と第４のシフトレジスタ４５の間に設けられ、途中計算結果を格納し、その情報を加算器４３に出力する。第４のシフトレジスタ４５（ｋ２演算回路）は、第３のシフトレジスタ４４と第７のシフトレジスタ４９の間に設けられ、加算された最終結果を格納し、その情報を第７のシフトレジスタ４９に出力する。
【００２７】
第５のシフトレジスタ４６（第２の左シフト回路）は、剰余算の除数ｎを入力して格納する。第６のシフトレジスタ４７は、第５のシフトレジスタ４６と減算器４８の間に設けられ、除数ｎを第７のシフトレジスタ４９に格納されたｋ＊＊２の値を超えない最大値になるように左シフトする。減算器４８は、第６のシフトレジスタ４７と第７のシフトレジスタ４９の間に設けられ、第７のシフトレジスタ４９から出力される情報（値）から第６のシフトレジスタ４７出力される情報（値）を減算する。第７のシフトレジスタ４９は、第４のシフトレジスタ４５及び減算器４８と第８のシフトレジスタ５０の間に設けられ、途中計算結果を格納し、その情報を減算器４８に出力する。第８のシフトレジスタ５０（ｋ２（ｍｏｄｕｌｏ  ｎ）計算回路）は、最終演算結果を格納し、その情報を暗号化された共通鍵情報として出力する。
【００２８】
図４（ｂ）に示すように、第２復号化回路３３に設けられるｋ＊＊２（ｍｏｄｕｌｏ  ｎ）演算回路５には、第１のシフトレジスタ４１、第２のシフトレジスタ４２、加算器４３、第３のシフトレジスタ４４、第４のシフトレジスタ４５、第５のシフトレジスタ４６、第６のシフトレジスタ４７、減算器４８、第７のシフトレジスタ４９、及び第８のシフトレジスタ５０が設けられる。
【００２９】
第１のシフトレジスタ４１（第１の左シフト回路）は、送信装置１から通信回線２を介して送信される暗号化された共通鍵情報としての暗号コードｃを入力して格納する。第２のシフトレジスタ４２は、第１のシフトレジスタ４１と加算器４３の間に設けられ、第１のシフトレジスタ４１から出力されるｂｉｔ情報を左にシフトする。加算器４３は、第２のシフトレジスタ４２と第３のシフトレジスタ４４の間に設けられ、第２のシフトレジスタ４２から出力される情報（値）と第３のシフトレジスタ４４から出力される情報（値）を加算する。第３のシフトレジスタ４４は、加算器４３と第４のシフトレジスタ４５の間に設けられ、途中計算結果を格納し、その情報を加算器４３に出力する。第４のシフトレジスタ４５（ｃ２演算回路）は、第３のシフトレジスタ４４と第７のシフトレジスタ４９の間に設けられ、加算された最終結果を格納し、その情報を第７のシフトレジスタ４９に出力する。
【００３０】
第５のシフトレジスタ４６（第２の左シフト回路）は、剰余算の除数ｎを入力して格納する。第６のシフトレジスタ４７は、第５のシフトレジスタ４６と減算器４８の間に設けられ、除数ｎを第７のシフトレジスタ４９に格納されたｋ＊＊２の値を超えない最大値になるように左シフトする。減算器４８は、第６のシフトレジスタ４７と第７のシフトレジスタ４９の間に設けられ、第７のシフトレジスタ４９から出力される情報（値）から第６のシフトレジスタ４７出力される情報（値）を減算する。第７のシフトレジスタ４９は、第４のシフトレジスタ４５及び減算器４８と第８のシフトレジスタ５０の間に設けられ、途中計算結果を格納し、その情報を減算器４８に出力する。第８のシフトレジスタ５０（ｃ２（ｍｏｄｕｌｏ  ｎ）計算回路）は、最終演算結果を格納し、その情報を復号化された共通鍵情報として出力する。
【００３１】
次に、暗号化処理及び復号化処理について図５を参照して説明する。図５は暗号化処理の手順を示すフローチャート、図６及び図７は暗号化処理の具体的演算結果を示す図である。
【００３２】
図５に示すように、まず、送信装置１側でＡＥＳ暗号鍵生成プログラムを用いて、共通鍵（ｋ）の生成及び登録が行われる。ここでは、ＡＥＳ暗号鍵生成プログラムは予め送信装置１側にインストールされているが、受信装置３側から通信回線２を介してＡＥＳ暗号鍵生成プログラムが送信され、送信装置１に格納されてもよい（ステップＳ１）。
【００３３】
次に、受信装置３側でＲＳＡ暗号鍵生成プログラムを用いて、公開鍵｛ｅ、ｎ｝及び秘密鍵｛ｄ、ｎ｝の生成及び登録が行われる（ステップＳ２）。続いて、受信装置３側で生成された公開鍵｛ｅ、ｎ｝が通信回線２を介して送信装置１側に送付される（ステップＳ３）。なお、公開鍵｛ｅ、ｎ｝及び秘密鍵｛ｄ、ｎ｝の生成・登録（ステップＳ２）や公開鍵｛ｅ、ｎ｝の送付（ステップＳ３）を共通鍵（ｋ）の生成及び登録（ステップＳ１）の前に行ってもよい。
【００３４】
そして、送信装置１側で受信装置３側の受信者に送付する情報としての平文が共通鍵（ｋ）にもとづいて暗号化される（ステップＳ４）。次に、送信装置１側で公開鍵｛ｅ、ｎ｝にもとづいてＫ＊＊２（ｍｏｄｕｌｏ  ｎ）演算回路４で共通鍵（ｋ）の暗号化、即ちｋの暗号コードｃへの変換が行われる。
【００３５】
ここで、暗号化処理については、ＡＥＳ暗号方式での共通鍵の鍵長を１２８ｂｉｔにしているが、演算内容を明確に表示できるように便宜的に共通鍵の鍵長を短くし、ＲＳＡ暗号方式でのｋ＊＊ｅ（ｍｏｄｕｌｏ  ｎ）演算を用いた暗号化処理について図を参照して説明する。図６及び図７は具体的な演算結果を示す図である。なお、暗号化処理に用いてパラメータは、公開鍵情報としてのｅをｅ＝１１＝８＋２＋１＝２３＋２１＋２０＝（１、０、１、１）とし、共通鍵情報としてのｋをｋ＝１７０＝１２８＋３２＋８＋２＝２７＋２５＋２３＋２１＝（１、０、１、０、１、０、１、０）とし、ｎをｎ＝３７７＝２５６＋６４＋３２＋１６＋８＋１＝２８＋２６＋２５＋２４＋２３＋２０＝（１、０、１、１、１、１、０、０、１）と設定して演算処理が行われる。
【００３６】
図６に示すように、まず、共通鍵情報としてのｋは、ＢＣＤコード（１、０、１、０、１、０、１、０）で第１のシフトレジスタ４１に格納される。次に、第3のシフトレジスタ４４に格納されるデータは０（ゼロ）にリセットされる。続いて、第２のシフトレジスタ４２により、ＢＣＤコード（１、０、１、０、１、０、１、０）は左へ１ｂｉｔシフト（１、０、１、０、１、０、１、０、０）される。この結果と第３のシフトレジスタ４４の内容を加算器４３で加算され、加算結果が第３のシフトレジスタ４４に上書きされる。上書きされた値は、１０進法表示では３４０となる。
【００３７】
そして、ＢＣＤコード（１、０、１、０、１、０、１、０）を左へ３ｂｉｔシフト（１、０、１、０、１、０、１、０、０、０、０）し、第３のシフトレジスタ４４の値と加算器４３で加算し、再度第３のシフトレジスタ４４に上書きされる。上書きされた値は、１０進法表示では１７００となる。
【００３８】
次に、同様な手順で、ＢＣＤコード（１、０、１、０、１、０、１、０）を左へ５ｂｉｔシフト（１、０、１、０、１、０、１、０、０、０、０、０、０）して第３のシフトレジスタ４４の値が書き直される。続いて、最終値ｋ＊＊２がＢＣＤコード（１、１、１、０、０、０、０、１、１、１、０、０、１、０、０）、１０進法表示では２８９００として第４のシフトレジスタ４５と第７のシフトレジスタ４９に格納される。
【００３９】
そして、剰余算の除数ｎは、ＢＣＤコード（１、０、１、１、１、１、０、０、１）で第５のシフトレジスタ４６に入力され、格納される。次に、この除数ｎを第７のシフトレジスタ４９に格納されるｋ＊＊２の値を超えない最大値になるように、第６のシフトレジスタ４７により左シフトされる。ここでは、ｋ＊＊２の値を左６ｂｉｔシフトし、第６のシフトレジスタ４７に格納される値は、ＢＣＤコード（１、０、１、１、１、１、０、０、１、０、０、０、０、０、０）、１０進法表示では２４１２８となる。
【００４０】
続いて、減算器４８により、第７のシフトレジスタ４９の値から第６のシフトレジスタ４７の値が減じられ、その結果は第７のシフトレジスタ４９に上書きされる。上書きされる値は、ＢＣＤコード（１、０、０、１、０、１、０、１、０、０、１、０、０）、１０進法表示では４７７２となる。
【００４１】
そして、第７のシフトレジスタ４９の値を超えないように除数ｎの値は左シフトされ、その値は第７のシフトレジスタ４９から減じられ、減算された結果は再び第７のシフトレジスタ４９に上書きされる。この作業は除数ｎが左シフトできなくなるまで繰り返される。左シフト出来なくなったときの第７のシフトレジスタ４９に残っている値（演算結果）は、ここではＢＣＤコード（１、１、１、１、１、０、０、０）、１０進法表示では２４８となる。
【００４２】
ｋ＊＊２（ｍｏｄｕｌｏ  ｎ）演算をｋ２と表記すると、ｅ＝（１，０、１、１）の場合では、(ｋ＊＊ｅ)(modulo  ｎ)が[{(ｋ＊＊2)(modulo  ｎ)}×{(ｋ＊＊2)(modulo  ｎ)}×ｋ2×ｋ](modulo  ｎ)}で表される。ここで、（ｋ２＊＊２）（ｍｏｄｕｌｏ  ｎ）をｋ３とすると、(ｋ＊＊ｅ)(modulo  ｎ)が{(ｋ3＊＊2)(modulo  ｎ)×ｋ2×ｋ}(modulo  ｎ)}で表され、更に、（ｋ３＊＊２）（ｍｏｄｕｌｏ  ｎ）をｋ４とすると、(ｋ＊＊ｅ)(modulo  ｎ)が(ｋ4×ｋ2×ｋ)(modulo  ｎ)で表され、(ｋ4×ｋ2)(modulo  ｎ)をｋ５とすると、(ｋ＊＊ｅ)(modulo  ｎ)が(ｋ５×ｋ)(modulo  ｎ)で表される。
【００４３】
（ｋ２＊＊２）（ｍｏｄｕｌｏ  ｎ）の演算は、（ｋ＊＊２）（ｍｏｄｕｌｏ  ｎ）の演算と同様なステップで行われ、演算結果は、ＢＣＤコード（１、１、０、１、０、１）、１０進法表示では５３となる（図６に表示）。
【００４４】
（ｋ３＊＊２）（ｍｏｄｕｌｏ  ｎ）の演算は、（ｋ＊＊２）（ｍｏｄｕｌｏ  ｎ）の演算と同様なステップで行われ、演算結果は、ＢＣＤコード（１、０、１、０、１、０、１、０）、１０進法表示では１７０となる（図６に表示）。
【００４５】
（ｋ４＊ｋ２）（ｍｏｄｕｌｏ  ｎ）の演算は、（ｋ＊＊２）（ｍｏｄｕｌｏ  ｎ）の演算と同様なステップで行われ、演算結果は、ＢＣＤコード（１、０、０、１、１、１、０、０、１）、１０進法表示では３１３となる（図７に表示）。
【００４６】
（ｋ５＊ｋ）（ｍｏｄｕｌｏ  ｎ）の演算は、（ｋ＊＊２）（ｍｏｄｕｌｏ  ｎ）の演算と同様なステップで行われ、ｋ＊＊２（ｍｏｄｕｌｏ  ｎ）演算回路４の最終演算結果は、図７に表示するようにＢＣＤコード（１、１、０、１、０、１）、１０進法表示では５３となる。ここで、ｋ＊＊２（ｍｏｄｕｌｏ  ｎ）演算回路４の最終演算結果は暗号化された共通鍵（暗号コードｃ）となる（ステップＳ５）。
【００４７】
続いて、送信装置１側で生成された暗号文と公開鍵を用いて暗号化された共通鍵（暗号コードｃ）は通信回線２を介して受信装置２に送付される（ステップＳ６）。
【００４８】
そして、送信装置１側から送付された暗号文と暗号化共通鍵（暗号コードｃ）は受信装置３側に受信され、受信装置３側で公開鍵と対をなす秘密鍵で暗号化された共通鍵が復号化される。復号化処理は、第２復号化回路３３に設けられるｋ＊＊２（ｍｏｄｕｌｏ  ｎ）演算回路５で行われる。具体的には、ｋ＊＊２（ｍｏｄｕｌｏ  ｎ）演算回路５の第１のシフトレジスタ４１に暗号化された共通鍵（暗号コードｃ）情報が入力され、格納される。これ以降は、第２暗号化回路１３に設けられるｋ＊＊２（ｍｏｄｕｌｏ  ｎ）演算回路４と同様な手順で演算され、復号化された共通鍵情報がｋ＊＊２（ｍｏｄｕｌｏ  ｎ）演算回路５の第８のシフトレジスタ５０から出力される（ステップＳ７）。
【００４９】
次に、復号化された共通鍵情報が第１の復号化回路３２に入力され、送信装置１側から送付された暗号文がこの共通鍵にもとづいて、平文に復号化される（ステップＳ８）。
【００５０】
ここで、送信装置１側の暗号化回路部１１のｋ＊＊２（ｍｏｄｕｌｏ  ｎ）演算回路４と受信装置３側の復号化回路部３１のｋ＊＊２（ｍｏｄｕｌｏ  ｎ）演算回路５を送信装置１側から受信装置３側への暗号化された平文の守秘性向上に使用しているが、必ずしもこの目的に限定されるものではない。例えば、ｋ＊＊２（ｍｏｄｕｌｏ  ｎ）演算回路４を暗号化処理専用に使用したり、復号化回路部３１のｋ＊＊２（ｍｏｄｕｌｏ  ｎ）演算回路５を復号化処理専用に使用したりしてもよい。
【００５１】
上述したように、本実施例の暗号化装置、復号化装置、暗号化復号化装置及びそれを用いた暗号化復号化方法では、第１暗号化回路１２と第２暗号化回路１３が配置される暗号化回路部１１が送信装置１に設けられている。第１暗号化回路１２は、平文を入力し、ＡＥＳ暗号の共通鍵にもとづいて平文をデジタル暗号化された暗号文にする。この暗号文は通信回線２を介して受信装置３側に送信される。第２の暗号化回路１３は、共通鍵情報を入力し、ＲＳＡ暗号の公開鍵情報にもとづいて共通鍵をｋ＊＊２（ｍｏｄｕｌｏ  ｎ）演算により暗号化する。この暗号化された共通鍵は通信回線２を介して受信装置３側に送信される。一方、第１復号化回路３２と第２復号化回路３３が配置される復号化回路部３１が受信装置３に設けられている。第２の復号化回路３３は、暗号化された共通鍵を送信装置１側から通信回線２を介して入力し、公開鍵と対をなす秘密鍵情報にもとづいてｋ＊＊２（ｍｏｄｕｌｏ  ｎ）演算により復号化（共通鍵）する。第１復号化回路３２は、デジタル暗号化された暗号文を送信装置１側から通信回線２を介して入力し、復号化された共通鍵にもとづいて復号化（平文）する。
【００５２】
このため、暗号文を受信する過程で公開鍵情報にもとづいて暗号化された共通鍵が盗まれたり、解読される危険性を大幅に低下させることができ、公開鍵と対をなす秘密鍵が盗まれたり、解読される危険性を大幅に低下させることができ、耐タンパ性を高めることが可能となる。また、公開鍵暗号方式よりも処理効率が高く、高速な共通鍵暗号方式であるＡＥＳ暗号を用いて、暗号文を生成し、通信回線２を介して受信装置３側に送付しているので、大量のデータを高速に暗号通信することができる。更に、共通鍵の暗号化と暗号化された共通鍵の復号化を同一の回路構成のｋ＊＊２（ｍｏｄｕｌｏ  ｎ）演算回路で行っているので、回路設計及び暗号化・復号化に必要なソフトウエア作成などの負担を軽減することができる。
【実施例２】
【００５３】
次に、本発明の実施例２に係る暗号化装置、復号化装置、暗号化復号化装置について、図面を参照して説明する。図８はｋ＊＊２（ｍｏｄｕｌｏ  ｎ）演算回路を示すブロック図、図８（ａ）は暗号化回路に設けられるｋ＊＊２（ｍｏｄｕｌｏ  ｎ）演算回路を示すブロック図、図８（ｂ）は復号化回路に設けられるｋ＊＊２（ｍｏｄｕｌｏ  ｎ）演算回路を示すブロック図である。本実施例では、ｋ＊＊２（ｍｏｄｕｌｏ  ｎ）演算回路の回路構成を簡略化している。
【００５４】
以下、実施例１と同一構成部分には、同一符号を付してその部分の説明を省略し、異なる部分のみ説明する。
【００５５】
図８（ａ）に示すように、第２暗号化回路１３に配置されるｋ＊＊２（ｍｏｄｕｌｏ  ｎ）演算回路４ａには、第１のシフトレジスタ４１、第２のシフトレジスタ４２、加算器４３、第３のシフトレジスタ４４ａ、第５のシフトレジスタ４６、第６のシフトレジスタ４７、減算器４８、及び第７のシフトレジスタ４９ａが設けられる。
【００５６】
第３のシフトレジスタ４４ａは、加算器４３と第７のシフトレジスタ４９ａの間に設けられ、途中計算結果を格納し、その情報を加算器４３に出力する。また、加算器４３で加算された最終結果を格納し、その情報を第７のシフトレジスタ４９ａに出力する。
【００５７】
第７のシフトレジスタ４９ａは、途中計算結果を格納し、その情報を減算器４８に出力する。また、最終演算結果を格納し、その情報を暗号化された共通鍵情報として出力する。
【００５８】
図８（ｂ）に示すように、第２復号化回路３３に配置されるｋ＊＊２（ｍｏｄｕｌｏ  ｎ）演算回路５ａには、第１のシフトレジスタ４１、第２のシフトレジスタ４２、加算器４３、第３のシフトレジスタ４４ａ、第５のシフトレジスタ４６、第６のシフトレジスタ４７、減算器４８、及び第７のシフトレジスタ４９ａが設けられる。
【００５９】
第３のシフトレジスタ４４ａは、加算器４３と第７のシフトレジスタ４９ａの間に設けられ、途中計算結果を格納し、その情報を加算器４３に出力する。また、加算器４３で加算された最終結果を格納し、その情報を第７のシフトレジスタ４９ａに出力する。
【００６０】
第７のシフトレジスタ４９ａは、途中計算結果を格納し、その情報を減算器４８に出力する。また、最終演算結果を格納し、その情報を復号化された共通鍵情報（ｋ）として出力する。
【００６１】
上述したように、本実施例の暗号化装置、復号化装置、暗号化復号化装置では、第１のシフトレジスタ４１、第２のシフトレジスタ４２、加算器４３、第３のシフトレジスタ４４ａ、第５のシフトレジスタ４６、第６のシフトレジスタ４７、減算器４８、及び第７のシフトレジスタ４９ａが設けられるｋ＊＊２（ｍｏｄｕｌｏ  ｎ）演算回路４ａが第２暗号化回路１３に配置されている。一方、第１のシフトレジスタ４１、第２のシフトレジスタ４２、加算器４３、第３のシフトレジスタ４４ａ、第５のシフトレジスタ４６、第６のシフトレジスタ４７、減算器４８、及び第７のシフトレジスタ４９ａが設けられるｋ＊＊２（ｍｏｄｕｌｏ  ｎ）演算回路５ａが第２復号化回路３３に配置されている。
【００６２】
このため、実施例１の効果のほかに、実施例１よりもｋ＊＊２（ｍｏｄｕｌｏ  ｎ）演算回路の回路構成を簡略化しているので、暗号化装置及び復号化装置のコストを低減化することができる。
【００６３】
本発明は、上記実施例に限定されるものではなく、発明の趣旨を逸脱しない範囲で、種々、変更してもよい。
【００６４】
例えば、本実施例では、共通鍵暗号方式としてＡＥＳ暗号を用いているが、例えば５６ｂｉｔの鍵長を有するＤＥＳ（Data  Encyption  Standard）暗号或いは１６８ｂｉｔ相当の鍵長を有するＴｒｉｐｌｅ  ＤＥＳ暗号などの共通鍵暗号方式を用いてもよい。
【００６５】
本発明は、以下の付記に記載されているような構成が考えられる。  
（付記１）  平文をＡＥＳ暗号方式、ＤＥＳ暗号方式、或いはＴｒｉｐｌｅ  ＤＥＳ暗号方式の共通鍵により暗号文にし、前記共通鍵をＲＳＡ暗号方式の公開鍵で暗号化し、前記暗号文及び前記暗号化された共通鍵を出力する暗号化回路部と、前記暗号化された共通鍵を前記公開鍵と対をなす秘密鍵により復号化し、前記復号化された共通鍵により前記暗号文を復号化する復号化回路部とを具備し、前記共通鍵を前記公開鍵で暗号化する暗号化回路と前記暗号化された共通鍵を前記秘密鍵で復号化する復号化回路が同一回路構成である暗号化復号化装置。
【００６６】
（付記２）  前記公開鍵で暗号化する暗号化回路と前記暗号化された共通鍵を前記秘密鍵で復号化する復号化回路は、入力される値の２乗の（ｍｏｄｕｌｏ  ｎ）演算を行う回路である付記１記載の暗号化復号化装置。
【００６７】
（付記３）  平文をＡＥＳ暗号方式、ＤＥＳ暗号方式、或いはＴｒｉｐｌｅ  ＤＥＳ暗号方式の共通鍵により暗号文にし、前記共通鍵をＲＳＡ暗号方式の公開鍵で暗号化し、前記暗号文及び前記暗号化された共通鍵を出力する送信装置側に設けられる暗号化回路部と、前記暗号化された共通鍵を前記公開鍵と対をなす秘密鍵により復号化し、前記復号化された共通鍵により暗号文を復号化する受信装置側に設けられる復号化回路部とを具備する暗号化復号化装置を用いた暗号化復号化方法であって、前記送信装置側で、前記共通鍵の生成及び登録を行うステップと、前記送信装置側で、前記共通鍵で平文を暗号化するステップと、前記送信装置側で、前記共通鍵をＲＳＡ暗号方式の公開鍵を用いて、前記共通鍵の値ｋをｋ２（ｍｏｄｕｌｏ  ｎ）演算処理して前記共通鍵を暗号化するステップと、前記暗号文と前記暗号化された共通鍵を送信装置側から受信装置側に送付するステップと、前記受信装置側で、前記公開鍵と対をなす秘密鍵を用いて、前記送信装置側から送付された前記暗号化された共通鍵の値ｃをｃ２（ｍｏｄｕｌｏ  ｎ）演算処理して前記暗号化された共通鍵を復号化するステップと、前記受信装置側で、前記復号化された共通鍵を用いて暗号文を復号化するステップとを具備する暗号化復号化装置を用いた暗号化復号化方法。
【図面の簡単な説明】
【００６８】
【図１】本発明の実施例１に係る暗号化復号化を行うシステム構成を示す概略図。
【図２】本発明の実施例１に係る送信装置に設けられる暗号化回路部を示すブロック図。
【図３】本発明の実施例１に係る受信装置に設けられる復号化回路部を示すブロック図。
【図４】本発明の実施例１に係るｋ＊＊２（ｍｏｄｕｌｏ  ｎ）演算回路を示すブロック図、図４（ａ）は暗号化回路に設けられるｋ＊＊２（ｍｏｄｕｌｏ  ｎ）演算回路を示すブロック図、図４（ｂ）は復号化回路に設けられるｋ＊＊２（ｍｏｄｕｌｏ  ｎ）演算回路を示すブロック図。
【図５】本発明の実施例１に係る暗号化処理の処理手順を示すフローチャート。
【図６】本発明の実施例１に係る暗号化処理の具体的演算結果を示す図。
【図７】本発明の実施例１に係る暗号化処理の具体的演算結果を示す図。
【図８】本発明の実施例２に係るｋ＊＊２（ｍｏｄｕｌｏ  ｎ）演算回路を示すブロック図、図８（ａ）は暗号化回路に設けられるｋ＊＊２（ｍｏｄｕｌｏ  ｎ）演算回路を示すブロック図、図８（ｂ）は復号化回路に設けられるｋ＊＊２（ｍｏｄｕｌｏ  ｎ）演算回路を示すブロック図。
【符号の説明】
【００６９】
１  送信装置
２  通信回線
３  受信装置
４、４ａ、５、５ａ  ｋ＊＊２（ｍｏｄｕｌｏ  ｎ）演算回路
１１  暗号化回路部
１２  第１暗号化回路
１２  第２暗号化回路
３１  復号化回路部
３２  第１復号化回路
３３  第２復号化回路
４１  第１のシフトレジスタ
４２  第２のシフトレジスタ
４３  加算器
４４、４４ａ  第３のシフトレジスタ
４５  第４のシフトレジスタ
４６  第５のシフトレジスタ
４７  第６のシフトレジスタ
４８  減算器
４９、４９ａ  第７のシフトレジスタ
５０  第８のシフトレジスタ
【図１】
2007300423.tif 000003
【図２】
2007300423.tif 000004
【図３】
2007300423.tif 000005
【図４】
2007300423.tif 000006
【図５】
2007300423.tif 000007
【図６】
2007300423.tif 000008
【図７】
2007300423.tif 000009
【図８】
2007300423.tif 000010