(57)【要約】【課題】  耐タンパ性の高い暗号化方法およびその復号化方法、並びに、それを実現するための装置を提供する。【解決手段】  本暗号化方法は、平文データ１００を複数のブロックに分割し、この複数のブロックのデータ（中間文１０、２０）を暗号化して暗号文３０を生成するものである。ここで、前記ブロックのデータを暗号化する際に、異なるブロックのデータの一部を前記ブロックのデータの暗号化の鍵として使用する。例えば、この暗号化の鍵は、暗号化されるブロックに隣接するブロックのデータの一部とすることができる。このように生成された暗号文３０は、前記暗号化されたブロックのデータを、暗号化時に使用した前記暗号化の鍵を用いて復号され、平文データ１００を得ることができる。【選択図】      図２
2006279406.tif 000002
【特許請求の範囲】
【請求項１】
平文データを複数のブロックに分割し、前記複数のブロックのデータを暗号化して暗号文を生成する暗号化方法であって、前記ブロックのデータを暗号化する際に、異なるブロックのデータの一部を前記ブロックのデータの暗号化の鍵として使用することを特徴とする暗号化方法。
【請求項２】
前記複数のブロックのデータに対して、それぞれ異なるブロックのデータの一部が前記暗号化の鍵として用いられることを特徴とする請求項１記載の暗号化方法。
【請求項３】
前記暗号化の鍵が、前記暗号化されるブロックに隣接するブロックのデータの一部であることを特徴とする請求項１または２記載の暗号化方法。
【請求項４】
請求項１〜３のいずれかに記載の暗号化方法によって生成された暗号文を平文データに復号する復号化方法であって、前記暗号化されたブロックのデータを、暗号化時に使用した前記暗号化の鍵を用いて復号することを特徴とする復号化方法。
【請求項５】
入力された平文データを複数のブロックに分割する平文ブロック分割部と、前記分割された複数のブロックのデータをそれぞれ暗号化するブロック暗号化部とを備えた暗号化装置であって、前記ブロック暗号化部は、前記ブロックのデータを暗号化する際に、異なるブロックのデータの一部を前記ブロックのデータの暗号化の鍵として使用することを特徴とする暗号化装置。
【請求項６】
請求項５に記載の暗号化装置により暗号化されたブロックのデータを復号する復号化装置であって、前記暗号化されたブロックのデータを復号するブロック復号部と、前記復号されたデータを結合して平文データを生成する平文ブロック結合部とを備え、前記ブロック復号部は、前記暗号化されたブロックのデータを、暗号化時に使用した前記暗号化の鍵を用いて復号することを特徴とする復号化装置。
【請求項７】
平文データを複数のブロックに分割する機能、および、前記ブロックのデータを暗号化する際に、異なるブロックのデータの一部を前記ブロックのデータの暗号化の鍵として使用する機能を、コンピュータに実現させるための暗号化プログラム。
【請求項８】
請求項７に記載のプログラムにより暗号化されたブロックのデータを暗号化時に使用した前記暗号化の鍵を用いて復号する機能、および、前記復号されたデータを結合して平文データを生成する機能を、コンピュータに実現させるための復号化プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、暗号化および復号化方法並びにその装置に係り、特に、暗号化すべき平文データを複数ブロックに分割して行う暗号化および復号化方法並びにその装置に関するものである。
【背景技術】
【０００２】
従来、一般的に広く利用されている暗号化方式としては、例えば、暗号化のためのパスワード（又は、鍵）を設定して付加し、暗号化すべき平文データなどの情報に当該パスワードを付加した状態で圧縮する方法が、既に知られている。更には、上記のパスワードに代えて、秘密鍵や公開鍵を利用し、これら秘密鍵と公開鍵の組合せによってデータを暗号化する方法も、既に知られている。
【０００３】
これらの従来の方式では、暗号化された情報は、例えば、通信回線を通じて送受信する場合、細かなブロックに分割して送受信される。また、フレキシブルディスクなどの可搬型の記録媒体に格納する場合には、その総容量が多いと、これを複数に分割して保存する場合が多い。このようなことから、これらの鍵は、繰り返して、同一の値を使用するケースが多く、そのため、解読され易いものとなっている。そのため、従来技術では、例えば、ランダムなデータを生成し、このランダムデータを正規の平文に付加することが行われている。
【０００４】
また、例えば、次の特許文献１には、暗号鍵生成装置を使用し、当該装置で生成された鍵により、分割された平文ブロックを、順次、暗号化していく技術が開示されている。即ち、当該従来技術では、平文データと生成された鍵とを、それぞれブロックに分割し、分割されたブロック毎に、当該分割された平文と鍵とを結合し、さらに、これらを暗号化する方法をとるものである。
【特許文献１】特開平１１−５５２４１号公報
【発明の開示】
【発明が解決しようとする課題】
【０００５】
上述したように、従来技術では、例えば、ランダムなデータを生成し、このランダムデータを正規の平文に付加することが行われているが、これではデータが不要に増えてしまうこと、更には、付加したランダムなデータの区切りが漏洩すると、やはり、解読されてしまう危険性を秘めているという問題点が指摘されていた。
【０００６】
また、上述したパスワード、秘密鍵、公開鍵など、所謂、暗号化のための情報又はアルゴリズムは、これが、一旦、漏洩してしまうと、全体のデータが揃わなくても、分割された部分ブロック単位で、盗聴などにより、解読される危険性を秘めている。例えば、上記の特許文献１においても、データと鍵とを複数のブロックに分割することにより、解読される確率は低減することはできるが、一旦、そのデータを復号する方法が漏洩されてしまうと、全データが揃わなくても、各分割されたブロック単位に、解読されてしまうことになる。
【０００７】
本発明は、上述した従来技術における問題点に鑑みて成されたものであり、その目的は、全体のデータの分割されたブロックの一部が漏洩し又は盗聴され、そして、たとえその暗号方式が漏洩したとしても、その漏洩し又は盗聴された一部のデータ単独では解読困難な、耐タンパ（ｔａｍｐｅｒ）性（非正規な手段による機密データの読み取りを防ぐ能力）の高い暗号化方法およびその復号化方法、並びに、それを実現するための装置を提供することにある。
【課題を解決するための手段】
【０００８】
上記目的は、平文データを複数のブロックに分割し、前記複数のブロックのデータを暗号化して暗号文を生成する暗号化方法であって、前記ブロックのデータを暗号化する際に、異なるブロックのデータの一部を前記ブロックのデータの暗号化の鍵として使用する暗号化方法により達成される。ここで、前記複数のブロックのデータに対して、それぞれ異なるブロックのデータの一部が前記暗号化の鍵として用いられるようにすることができる。また、前記暗号化の鍵は、前記暗号化されるブロックに隣接するブロックのデータの一部とすることができる。
【０００９】
また、本発明に係る復号化方法は、前記暗号化方法によって生成された暗号文を平文データに復号する場合に、前記暗号化されたブロックのデータを、暗号化時に使用した前記暗号化の鍵を用いて復号するものである。
【００１０】
さらに、本発明に係る暗号化装置は、入力された平文データを複数のブロックに分割する平文ブロック分割部と、前記分割された複数のブロックのデータをそれぞれ暗号化するブロック暗号化部とを備え、前記ブロック暗号化部は、前記ブロックのデータを暗号化する際に、異なるブロックのデータの一部を前記ブロックのデータの暗号化の鍵として使用するものである。
【００１１】
また、本発明に係る復号化装置は、前記暗号化装置により暗号化されたブロックのデータを復号するものであって、前記暗号化されたブロックのデータを復号するブロック復号部と、前記復号されたデータを結合して平文データを生成する平文ブロック結合部とを備え、前記ブロック復号部は、前記暗号化されたブロックのデータを、暗号化時に使用した前記暗号化の鍵を用いて復号するものである。
【００１２】
さらに、本発明に係る暗号化プログラムは、平文データを複数のブロックに分割する機能、および、前記ブロックのデータを暗号化する際に、異なるブロックのデータの一部を前記ブロックのデータの暗号化の鍵として使用する機能を、コンピュータに実現させるためのものである。また、本発明に係る復号化プログラムは、前記暗号化プログラムにより暗号化されたブロックのデータを暗号化時に使用した前記暗号化の鍵を用いて復号する機能、および、前記復号されたデータを結合して平文データを生成する機能を、コンピュータに実現させるためのものである。
【発明の効果】
【００１３】
本発明によれば、そのデータ量を不要に増大することなく、たとえ分割されたデータの一部が漏洩しても、そのデータの全てが揃わない限り、解読することが不可能であり、そのため、暗号アルゴリズムが漏洩してもその耐タンパ性を高く維持することが可能な、暗号化および復号化方法、並びに、それを実現するための暗号化および復号化装置を得ることができる。
【発明を実施するための最良の形態】
【００１４】
以下、本発明の実施の形態について、添付の図面を参照して詳細に説明する。なお、以下に述べる実施の形態は、その性質上、権利を限定するものではなく、本発明を例示するためのものであり、本発明はその実施の形態に限定されるものでない。
【００１５】
図１は、本発明に係る暗号化および復号化方法を適用した一実施の形態による分散暗号化システムの全体構成の一例を示す図である。以下、この図１を参照して、本発明を適用した分散暗号化システムを説明する。
【００１６】
本実施の形態になる分散暗号化システムは、まず、通信回線（ネットワーク）を構成する、例えば、ローカルエリアネットワーク（ＬＡＮ）７と、このＬＡＮ７に接続された複数のサーバ装置を含んで構成される。図１では、ＬＡＮ７に接続された（送信側）サーバ装置１と、ＬＡＮ７に接続された他の（受信側）サーバ装置４を示しているが、更に、他のサーバ装置やその他の装置をＬＡＮ７に接続して構成してもよい。また、サーバ装置１にはパーソナルコンピュータ（以下、単に、「ＰＣ」と言う）２が接続されており、他方、サーバ装置４には、他のＰＣ５が接続されている。これらのサーバ装置１、４にも、更に、他のＰＣや他の装置を接続することも可能である。
【００１７】
サーバ装置１は、図示しない演算処理部を備えており、その一部に、文書を暗号化する機能と共に、後に詳細に説明する暗号化処理を実行するためにデータを一時的に記憶するためのメモリ１１を備えている。また、このサーバ装置１に接続されたＰＣ２は、その一部に文書ファイル３を内蔵しており、文書ファイル３に内蔵される文書情報の暗号化要求をサーバ装置１へ送信する機能を有している。
【００１８】
一方、ＬＡＮ７に接続された他のサーバ装置４も、図示しない演算処理部を備えており、上記サーバ装置１から暗号化された文書を受信し、その暗号化された文書を復号化する機能と共に、後に詳細に説明する復号化処理を実行するためにデータを一時的に記憶するためのメモリ４１を備えている。また、このサーバ装置４に接続されたＰＣ５は、サーバ装置４で復号化された文書ファイルを入力し、ＰＣ５に内蔵した文書ファイル６へ複写する機能を持っている。
【００１９】
即ち、この分散暗号化システムは、上記ＰＣ２の文書ファイル３の文書をサーバ装置１によって暗号化し、暗号文としてＬＡＮ７を介して送信する。他方、ＬＡＮ７に接続されたサーバ装置４は、ＬＡＮ７を介して暗号文を受信し、それをもとの文書に復号化して、ＰＣ５内の文書ファイル６へ格納（複写）する。
【００２０】
図２は、本発明に係る分散暗号化方法の一実施例を示す図である。本発明による暗号化方法は、概略次のとおりである。まず、平文データ１００を、例えば、先頭からｎ個のブロックに分割して中間文１０を生成する。ここで、ｎは２以上の整数（ｎ＞１）であり、自由に設定可能である。次に、ｎ個のブロック化された中間文１０を後述するキー（鍵）で、それぞれ、ｎ個のブロック化された中間文２０に順次変換する。そして、最後に、ｎ個のブロック化された中間文２０を後述するキー（鍵）でそれぞれ変換し、ｎ個のブロック化された暗号文３０を生成する。以下、各ステップについて詳述する。
【００２１】
まず、ステップＳ２００において、暗号化対象の文書である平文データ１００を、先頭からｎ個のブロックに分割して中間文１０を生成する。すなわち、中間文１０は、図示のように、第１ブロックＢＬＫ（１：１）〜第ｎブロックＢＬＫ（１：ｎ）から構成される。
【００２２】
次に、中間文１０から次のようにして中間文２０を生成する。まず、ステップＳ２１０において、中間文１０の第１ブロックＢＬＫ（１：１）を、中間文１０の第２ブロックＢＬＫ（１：２）のデータの一部ＫＥＹ（１：２）をキーに暗号化し、これを中間文２０の第１ブロックＢＬＫ（２：１）に格納する。ここで使用する暗号方式は、一般的に知られている共通鍵暗号方式を使用する。また、各ブロックＢＬＫ（ｘ：ｙ）のデータの一部ＫＥＹ（ｘ：ｙ）は、各ブロックＢＬＫ（ｘ：ｙ）のあらかじめ決められた位置にあるものとする。同様にして、ステップＳ２１１において、中間文１０の第２ブロックＢＬＫ（１：２）を、中間文１０の第３ブロックＢＬＫ（１：３）のデータの一部ＫＥＹ（１：３）をキーに暗号化し、これを中間文２０の第２ブロックＢＬＫ（２：２）に格納する。
【００２３】
これと同様して中間文１０の第３ブロックＢＬＫ（１：３）〜第ｎ−１ブロックＢＬＫ（１：ｎ−１）を暗号化し、それらを中間文２０の第３ブロックＢＬＫ（２：３）〜第ｎ−１ブロックＢＬＫ（２：ｎ−１）にそれぞれ格納する（ステップＳ２１２）。中間文１０の第ｎブロックＢＬＫ（１：ｎ）は、ステップＳ２１３に示すように、中間文２０の第１ブロックＢＬＫ（２：１）データの一部ＫＥＹ（２：１）をキーに暗号化し、中間文２０の第ｎブロックＢＬＫ（２：ｎ）へ格納する。
【００２４】
続いて、中間文２０から次のようにして暗号文３０を生成する。まず、ステップＳ２２０において、中間文２０の第１ブロックＢＬＫ（２：１）を、中間文２０の第２ブロックＢＬＫ（２：２）のデータの一部ＫＥＹ（１：２）をキーに暗号化し、これを暗号文３０の第１ブロックＢＬＫ（３：１）に格納する。同様にして、ステップＳ２２１において、中間文２０の第２ブロックＢＬＫ（２：２）を、中間文２０の第３ブロックＢＬＫ（２：３）のデータの一部ＫＥＹ（２：３）をキーに暗号化し、これを暗号文３０の第２ブロックＢＬＫ（３：２）に格納する。
【００２５】
これと同様して中間文２０の第３ブロックＢＬＫ（２：３）〜第ｎ−１ブロックＢＬＫ（２：ｎ−１）を暗号化し、それらを暗号文３０の第３ブロックＢＬＫ（３：３）〜第ｎ−１ブロックＢＬＫ（３：ｎ−１）にそれぞれ格納する（ステップＳ２２２）。中間文２０の第ｎブロックＢＬＫ（２：ｎ）は、ステップＳ２２３に示すように、暗号文３０の第ｎブロックにそのまま第ｎブロックＢＬＫ（３：ｎ）として格納し、暗号文３０を完成させる。
【００２６】
図３は、本発明に係る復号化方法の一実施例を示す図である。本発明による復号化方法は、概略次のとおりである。すなわち、本復号化方法では、上記のように生成した暗号文３０を、暗号化時に使用した暗号化の鍵を用いて、中間文２０、中間文１０に、順次変換することで、最後に平文データ１００を復号するものである。以下、この復号化方法の各ステップについて詳細に説明する。
【００２７】
まず、ステップＳ３００において、受信したｎ個のブロックから成る暗号文３０について、その第ｎブロックＢＬＫ（３：ｎ）を、中間文２０の第ｎブロックＢＬＫ（２：ｎ）ヘそのまま複写する。次に、ステップＳ３０１において、複写した中間文２０の第ｎブロックＢＬＫ（２：ｎ）内のＫＥＹ（２：ｎ）をキーとして、暗号文３０の第ｎ−１ブロックＢＬＫ（３：ｎ−１）を復号し、これを中間文２０の第ｎ−１ブロックＢＬＫ（２：ｎ−１）に格納する。更に、上記Ｓ３０１と同様の処理を、暗号文３０の第ｎ−２ブロックから第１ブロックまで順次実施し、中間文２０の残りのブロックを生成する。この時、上記中間文２０の各ブロックには、まだ平文データ１００は含まれていない。
【００２８】
続いて、ステップＳ３１０において、中間文２０の第１ブロックＢＬＫ（２：１）のＫＥＹ（２：１）をキーとして、中間文２０の第ｎブロックＢＬＫ（２：ｎ）を復号化し、それを中間文１０の第ｎブロックＢＬＫ（１：ｎ）に格納する。次に、ステップＳ３１１においては、上記中間文１０の第ｎブロックＢＬＫ（１：ｎ）のＫＥＹ（１：ｎ）をキーとして、中間文２０の第ｎ−１ブロックを復号化し、それを中間文１０の第ｎ−１ブロックＢＬＫ（１：ｎ−１）に格納する。以下、上記ステップＳ３１１と同様の処理を、中間文２０の第１ブロックＢＬＫ（２：１）まで順次実施し、中間文１０の残りのブロックを生成する。この中間文１０の各ブロックには、平文データ１００が含まれている。
【００２９】
そして、ステップＳ３２０において、上記のようにして得られた中間文１０の各ブロックＢＬＫ（１：１）〜ＢＬＫ（１：ｎ）を結合して、平文データ１００を生成する。これにより、上記図２の暗号化方法によって暗号化された暗号文３０が、元の平文データ１００に復号されることとなる。
【００３０】
このように、本発明の暗号化方法では、暗号化対象の文書である平文を複数のブロックに分割し暗号化する際に、分割されたブロックのデータの一部を、それとは異なるブロックの暗号化のキー（鍵）としている。そのため、暗号化されて転送されるデータ量を不要に増大することがなく、また、たとえ分割されたデータの一部が漏洩しても、そのデータの全てが揃わない限り、解読することができない。この点を次に説明する。
【００３１】
次に、図４により、本発明による暗号化方法で暗号化された暗号文３０のうち１つ以上のブロックが分離された場合、どのブロックも復号不可であることを説明する。本例は、暗号文３０の第１ブロックが分離された場合の例である。
【００３２】
まず、ステップＳ４００において、暗号文３０の第ｎブロックＢＬＫ（３：ｎ）は、中間文２０の第ｎブロックＢＬＫ（２：ｎ）ヘそのまま複写される。そして、続くステップＳ４０１においては、中間文２０の第ｎブロックＢＬＫ（２：ｎ）内のＫＥＹ（２：ｎ）をキーとして、暗号文３０のＢＬＫ（３：ｎ−１）を復号し、それを中間文２０の第ｎ−１ブロックに格納する。その後、このステップＳ４０１と同様の処理を、残りの暗号文３０の第１ブロックまで実施して、中間文２０の残りのブロックを生成する。
【００３３】
ここで、ステップＳ４０２において、中間文２０の第１ブロックを生成しようとした時、上述のように暗号文３０の第１ブロックが分離されており存在しないため、復号処理が中断する。この復号処理が中断した時点においては、途中まで復号された中間文２０の各ブロックには平文が含まれていない。また、途中まで復号された中間文２０の各ブロックを復号するために必要なキーは、まだ復号されていない。その結果、暗号文３０はその一部たりとも平文に復号できない。従って、例えば、本発明の暗号化方法を用いて暗号化した暗号文を複数枚のＦＤに格納した場合、そのうちの１枚のＦＤを紛失したとしても、その１枚のＦＤ中の暗号文は平文に復号することができないのである。
【００３４】
図５は、中間文１０と暗号鍵（キー）の関係を示す図である。図示のように、中間文１０はＢＬＫ（１：１）からＢＬＫ（１：ｎ）までのｎ個のブロックから構成される。各ブロックは、データの先頭から決められた長さの暗号鍵兼用部５０１とデータ部５０２とで構成される。ここで、暗号鍵兼用部５０１はデータの一部であり、長さは任意に変更可能である。中間文１０を中間文２０に暗号化する場合、暗号鍵兼用部５０１を暗号化キーに使用する。但し、本例ではＫＥＹ（１：１）は使用しない。ＫＥＹ（１：２）はブロックＢＬＫ（１：１）の暗号鍵（キー）として利用され、ＫＥＹ（１：３）はブロックＢＬＫ（１：２）のキーとして利用され、同様にしてＫＥＹ（１：ｎ）はブロックＢＬＫ（１：ｎ−１）のキーとして利用される。
【００３５】
図６は、中間文２０と暗号鍵（キー）の関係を示す図である。図示のように、中間文２０はＢＬＫ（２：１）からＢＬＫ（２：ｎ）までのｎ個のブロックから構成される。各ブロックは、データの先頭から決められた長さの暗号鍵兼用部６０１とデータ部６０２とで構成される。ここで、暗号鍵兼用部６０１はデータの一部であり、長さは任意に変更可能である。中間文２０を暗号文３０に暗号化する場合、暗号鍵兼用部６０１を暗号化キーに使用する。すなわち、ＫＥＹ（２：１）はブロックＢＬＫ（１：ｎ）の暗号鍵（キー）として利用され、ＫＥＹ（２：２）はブロックＢＬＫ（２：１）のキーとして利用され、同様にしてＫＥＹ（２：ｎ）はブロックＢＬＫ（２：ｎ−１）のキーとして利用される。
【００３６】
図７は、本発明に係る暗号化方法および復号化方法を用いた分散暗号化システムの処理の流れの一例を示す図である。本分散暗号化システムは、暗号化装置および復号化装置を備えており、この暗号化装置はサーバ装置１の演算処理部によって実現され、また復号化装置はサーバ装置４の演算処理部によって実現される。以下、各部の処理内容について説明する。
【００３７】
まず、送信元（サーバ装置１）では、Ｓ７０１において、ＰＣ２などの送信元を経由して文書ファイル３の文書を平文データで入力する（平文入力部）。次に、Ｓ７０２において、平文データをｎ個のブロックに分割する（平文ブロック分割部）。続いて、Ｓ７０３において、この分割された各ブロックを上述したような方法で暗号化して暗号文を作成する（ブロック暗号化部）。そして、この暗号文をＬＡＮ７等の通信回線（ネットワーク）を介して送信する。
【００３８】
一方、受信元（サーバ装置４）では、上記暗号文を受信して文書を復号するため、まず、Ｓ７０４において、暗号化された各ブロックからなる暗号文を受け付ける（ブロック受信部）。その後、Ｓ７０５において、暗号文の全ブロックの受信を確認した後、Ｓ７０６において、各ブロックを復号する（ブロック復号部）。次に、Ｓ７０７において、復号された各ブロックを平文に結合する（平文ブロック結合部）。これにより、復号した平文データを文書ファイル６に格納する。
【００３９】
図８及び図９は、上記ブロック暗号化部Ｓ７０３の処理内容を説明するためのフローチャートである。以下、このフローチャートに沿って説明する。まず、ステップＳ８０１において、カウンタｉを１で初期化する。次に、ステップＳ８０２において、中間文１０のブロックＢＬＫ（１：ｉ）を先頭から、一つずつ、順次、読み出す。その後、ステップＳ８０３において、ｉ＝１か否かを判定する。即ち、ＢＬＫ（１：１）を読み込んだか否かを判定する。そして、中間文１０の第１ブロックＢＬＫ（１：１）を読み込んだ場合には、即ち、ｉ＝１であり、「ＹＥＳ」と判定され、処理はステップＳ８０５へ移り、その内容を保持してカウンタｉを加算（ｉ＋１）し、中間文１０の次のブロックを読み込む。その後、ステップＳ８０６に移行する。
【００４０】
一方、上記ステップＳ８０３において、ｉ＝１でない（「ＮＯ」）と判断された場合、即ち、中間文１０の第２ブロック以降を読み込んだ場合には、ステップＳ８０４において、ブロックＢＬＫ（１：ｉ）のＫＥＹ（１：ｉ）をキーにして、ブロックＢＬＫ（１：ｉ−１）を暗号化し、その結果を、中間文２０のブロックＢＬＫ（２：ｉ−１）ヘ格納し、上述のステップＳ８０５に移行する。
【００４１】
そして、ステップＳ８０６では、ｉ＝ｎか否か、即ち、中間文１０の全ブロックを処理したか否かを判定する。その結果、中間文１０の全ブロックを処理した（「ＹＥＳ」）と判断した場合には、図９に示す処理へ進む。他方、未だ、中間文１０の全ブロックを処理していない（「ＮＯ」）と判断された場合には、上記ステップＳ８０２へ戻り、上記処理を繰り返す。
【００４２】
続いて、図９に示すステップＳ８０７において、カウンタｊを１に初期化する。この段階では、未だ、中間文２０の最終ブロックは生成されていない。そして、ステップＳ８０８において、中間文２０のブロックを先頭から一つずつ、順次、読み込み、ステップＳ８０９において、ｊ＝１か否かを判断する。即ち、中間文２０の第１ブロックＢＬＫ（２：１）を読み込んだか否かを判断する。
【００４３】
ステップＳ８０９において、ｊ＝１である（「ＹＥＳ」）場合、即ち、中間文２０の第１ブロックＢＬＫ（２：１）を読み込んだ場合には、処理はステップＳ８１１へ移動し、ブロックＢＬＫ（２：１）のＫＥＹ（２：１）をキーとして、中間文１０の第ｎブロックＢＬＫ（１：ｎ）を暗号化し、その結果を、中間文２０の第ｎブロックＢＬＫ（２：ｎ）へ格納し、ステップＳ８１２へ移行する。この段階で、中間文２０の全ブロックが生成される。ｎは中間文１０の総ブロック数である。
【００４４】
一方、ステップＳ８０９において、ｊ＝１でない（「ＮＯ」）場合、即ち、中間文２０の第２ブロック以降のブロックＢＬＫ（２：ｊ）を読み出した場合、ステップＳ８１０において、中間文２０のブロックＢＬＫ（２：ｊ−１）を、隣接するブロックＢＬＫ（２：ｊ）のＫＥＹ（２：ｊ）を使って暗号化し、その結果を暗号文３０の対応するブロックＢＬＫ（３：ｊ−１）へ格納し、ステップＳ８１２へ移行する。
【００４５】
ステップＳ８１２において、ｊを加算し（ｊ＋１）、ステップＳ８１３において、ｊ＝ｎか否か、即ち、中間文２０の第ｎブロックまでの処理が終了したか否かを判定する。ステップＳ８１３において、ｊ＝ｎでない（「ＮＯ」）場合、ステップＳ８０８に戻り、上記ステップを繰り返す。
【００４６】
ステップＳ８１３において、ｊ＝ｎである（「ＹＥＳ」）場合、即ち、処理が中間文２０の第ｎブロックまで終了したと判断された場合には、処理は、ステップＳ８１４に移動する。ステップＳ８１４では、中間文２０の第ｎブロックＢＬＫ（２：ｎ）を、そのまま、暗号文３０の第ｎブロックＢＬＫ（３：ｎ）に複写して、暗号文３０を完成させる。最後に、ステップＳ８１５において、暗号文３０をファイルに保存し、一連の処理を終了する。
【００４７】
図１０及び図１１は、上記ブロック復号化部Ｓ７０６の処理内容を説明するためのフローチャートである。以下、このフローチャートに沿って説明する。まず、ステップＳ９０１において、カウンタｊをｎで初期化する。このｎは、暗号文３０の総ブロック数である。ステップＳ９０２において、暗号文３０のブロックＢＬＫ（３：ｊ）を、後方（第ｎブロック）から一つずつ、順次、読み出す。ステップＳ９０３において、ｊ＝ｎか否か、即ち、暗号文３０の第ｎブロックＢＬＫ（３：ｎ）を読み込んだか否かを判定する。
【００４８】
上記Ｓ９０３の判定の結果、ｊ＝ｎである（「ＹＥＳ」）場合、即ち、暗号文３０の第ｎブロックＢＬＫ（３：ｎ）を読み込んだ場合、処理はステップＳ９０５へ移動し、その内容をそのまま中間文２０の第ｎブロックＢＬＫ（２，ｎ）に複写し、ステップＳ９０６へ移行する。一方、ｊ＝ｎでない（「ＮＯ」）場合、即ち、暗号文３０の第ｎ−１ブロック以前のブロックＢＬＫ（３：ｊ）を読み込んだ場合、Ｓ９０４において、中間文２０の第ｊ＋１ブロックＢＬＫ（２，ｊ＋１）のＫＥＹ（２：ｊ＋１）をキーに、暗号文３０の第ｊブロックＢＬＫ（３：ｊ）を復号化し、その結果を、中間文２０のブロックＢＬＫ（２：ｊ）ヘ格納し、ステップＳ９０６へ移行する。
【００４９】
ステップＳ９０６において、カウンタｊを減算し（ｊ−１）、ステップＳ９０７に移行する。ステップＳ９０７では、ｊ＝０か否か、即ち、暗号文３０の第１ブロックまで処理が終了したか否かを判定する。この判定の結果、ｊ＝０でない、即ち、未だ、暗号文３０の第１ブロックまで処理が終了していない（「ＮＯ」）と判断された場合には、処理は上記ステップＳ９０２へ移行し、上記ステップを繰り返す。その後、ステップＳ９０７において、暗号文３０の第１ブロックまでの処理が終了したと判定された場合は、以下の図１１に示すステップＳ９０８に移動する。
【００５０】
図１１において、ステップＳ９０８では、カウンタｉをｎに初期化する。次に、ステップＳ９０９において、中間文２０のブロックを、その後方（第ｎブロック）から一つずつ、順次、読み込む。ステップＳ９１０において、ｉ＝ｎか否か、即ち、中間文２０の第ｎブロックＢＬＫ（２：ｎ）を読み込んだか否かを判定する。
【００５１】
ステップＳ９１０において、ｉ＝ｎである（「ＹＥＳ」）と判定された場合には、処理はステップＳ９１２へ移動し、中間文２０の第１ブロックＢＬＫ（２：１）のＫＥＹ（２：１）をキーとして、ブロックＢＬＫ（２：ｎ）を復号化し、その結果を中間文１０の第ｎブロックＢＬＫ（１：ｎ）に格納して、ステップＳ９１３に移行する。
【００５２】
他方、ステップＳ９１０において、中間文２０の第ｎ−１又はそれ以前のブロックＢＬＫ（２：ｉ）を読み出した（「ＮＯ」）と判定された場合には、ステップＳ９１１において、中間文１０の第ｉ＋１ブロックＢＬＫ（１：ｉ＋１）のＫＥＹ（１：ｉ＋１）をキーとして、ブロックＢＬＫ（２：ｉ）を復号化し、その結果を、中間文１０のブロックＢＬＫ（１：ｉ）ヘ格納して、ステップＳ９１３に移行する。
【００５３】
ステップＳ９１３において、カウンタｉを減算し、更に、ステップＳ９１４において、ｉ＝０か否かを判定する。即ち、Ｓ９１４において、処理が中間文２０の第１ブロックまで終了していない（「ＮＯ」）と判定された場合には、処理は、再び上記ステップＳ９０９へ戻り、上記ステップを繰り返す。他方、処理が中間文２０の第１ブロックまで終了した（「ＹＥＳ」）と判定された場合は、ステップＳ９１５において、得られた中間文１０をファイルに格納し、一連の処理を終了する。
【００５４】
本発明は、コンピュータプログラムにより実行することができる。即ち、本発明に係る暗号化プログラムは、平文データを複数のブロックに分割する機能、および、前記ブロックのデータを暗号化する際に、異なるブロックのデータの一部を前記ブロックのデータの暗号化の鍵として使用する機能を、コンピュータに実現させるためのものである。また、本発明に係る復号化プログラムは、前記暗号化プログラムにより暗号化されたブロックのデータを暗号化時に使用した前記暗号化の鍵を用いて復号する機能、および、前記復号されたデータを結合して平文データを生成する機能を、コンピュータに実現させるためのものである。本実施例では、上記暗号化プログラムはサーバ装置１に格納され、上記復号化プログラムはサーバ装置２に格納される。また、これらのプログラムは、コンピュータ読み取り可能なＣＤＲＯＭ等の記録媒体に格納され、またはインターネット等の電気通信回線を介してアップロードすることによりダウンロード可能とされ、適宜サーバ装置にインストールすることができる。
【００５５】
なお、本実施例では、文書データの平文を、中間文１０、および中間文２０へ変換する際、所定の規則で定められたブロックのデータの一部を暗号化キーとして利用する。例えば、互いに隣接するブロックの一部を暗号化キーとして利用することができる。しかし、本発明は、上記の例に限定されず、例えば、予め、ブロック間で所定の関係を設定しておき（例えば、テーブルで設定）、この所定の関係にあるデータを暗号化キーとすることも可能である。また、本実施例では、暗号化キーとして、すべて異なるブロックのデータの一部を利用するものとして説明したが、本発明は、かかる一例にのみ限定されるものではない。さらに、本実施例では、平文データを二段階の中間文を経て暗号文に変換するものとして説明したが、更に暗号化を繰り返すことで更に耐タンパ性が一層向上する。
【産業上の利用可能性】
【００５６】
本発明は、機密情報の漏洩防止のため、情報を分散して保管することができる暗号化システムに適用して効果的であり、産業上の利用可能性がある。
【図面の簡単な説明】
【００５７】
【図１】本発明に係る暗号化および復号化方法を適用した一実施の形態による分散暗号化システムの全体構成の一例を示す図である。
【図２】本発明に係る分散暗号化方法の一実施例を示す図である。
【図３】本発明に係る復号化方法の一実施例を示す図である。
【図４】本発明による暗号化方法で暗号化された暗号文のうち１つ以上のブロックが分離された場合、どのブロックも復号不可であることを説明するための図である。
【図５】中間文１０と暗号鍵（キー）の関係を示す図である。
【図６】中間文２０と暗号鍵（キー）の関係を示す図である。
【図７】本発明に係る暗号化方法および復号化方法を用いた分散暗号化システムの処理の流れの一例を示す図である。
【図８】ブロック暗号化部の処理内容を説明するためのフローチャートである（その１）。
【図９】ブロック暗号化部の処理内容を説明するためのフローチャートである（その２）。
【図１０】ブロック復号化部の処理内容を説明するためのフローチャートである（その１）。
【図１１】ブロック復号化部の処理内容を説明するためのフローチャートである（その２）。
【符号の説明】
【００５８】
１  （送信側）サーバ装置
２、５  パーソナルコンピュータ
３、６  文書ファイル
４  （受信側）サーバ装置
７  ＬＡＮ
１０、２０  中間文
３０  暗号文
１００  平文データ
Ｓ７０１  平文入力部
Ｓ７０２  平文ブロック分割部
Ｓ７０３  ブロック暗号化部
Ｓ７０４  ブロック受信部
Ｓ７０５  全ブロック受信判定部
Ｓ７０６  ブロック復号部
Ｓ７０７  平文ブロック結合部
【図１】
2006279406.tif 000003
【図２】
2006279406.tif 000004
【図３】
2006279406.tif 000005
【図４】
2006279406.tif 000006
【図５】
2006279406.tif 000007
【図６】
2006279406.tif 000008
【図７】
2006279406.tif 000009
【図８】
2006279406.tif 000010
【図９】
2006279406.tif 000011
【図１０】
2006279406.tif 000012
【図１１】
2006279406.tif 000013