(57)【要約】【課題】  暗号鍵を生成する規則の予測を困難にすること。【解決手段】  暗号化対象文を取得する暗号化対象文取得部１２２と、暗号鍵変換規則を示す暗号鍵変換規則情報であって、複数の該暗号鍵変換規則情報を要素とする順列を取得する順列取得部１２３と、暗号鍵を取得する暗号鍵取得部１２４と、前記各暗号鍵変換規則情報が前記順列に含まれる順序で、該順列に含まれる各暗号鍵変換規則情報により示される暗号鍵変換規則にそれぞれ基づいて、前記取得される暗号鍵を変換する暗号鍵変換部１２５と、前記変換された暗号鍵に基づいて、前記暗号化対象文の暗号化を行う暗号化部１２６と、を含むことを特徴とする暗号化装置。【選択図】      図２
2006129306.tif 000002
【特許請求の範囲】
【請求項１】
暗号化対象文を取得する暗号化対象文取得手段と、
暗号鍵変換規則を示す暗号鍵変換規則情報であって、複数の該暗号鍵変換規則情報を要素とする順列を取得する順列取得手段と、
暗号鍵を取得する暗号鍵取得手段と、
前記各暗号鍵変換規則情報が前記順列に含まれる順序で、該順列に含まれる各暗号鍵変換規則情報により示される暗号鍵変換規則にそれぞれ基づいて、前記取得される暗号鍵を変換する暗号鍵変換手段と、
前記変換された暗号鍵に基づいて、前記暗号化対象文の暗号化を行う暗号化手段と、
を含むことを特徴とする暗号化装置。
【請求項２】
請求項１に記載の暗号化装置において、
前記各暗号鍵変換規則情報は０以上の整数であり、
前記暗号鍵変換手段は、前記各暗号鍵変換規則情報により示される整数回にわたり、前記暗号鍵を繰り返し変換することにより、暗号鍵を変換する、
ことを特徴とする暗号化装置。
【請求項３】
請求項２に記載の暗号化装置において、
前記暗号鍵取得手段は、暗号鍵ｋ０を、前記暗号鍵として取得し、
前記暗号鍵変換手段は、暗号鍵ｋｉ−１を、所定の規則ｆに基づいて、前記順列のｉ番目の要素である暗号鍵変換規則情報により示される整数回ｎｉにわたり、前記暗号鍵を繰り返し変換することにより、変換された暗号鍵ｋｉを取得する、
ことを特徴とする暗号化装置。
【請求項４】
請求項２に記載の暗号化装置において、
前記暗号化対象文取得手段は、
前記暗号化手段は、前記暗号鍵ｋｉに基づいて、暗号化対象文Ｈｉの暗号化を行うことにより、暗号化対象文Ｈｉ＋１を取得し、
暗号化対象文Ｈ１は、前記暗号化対象文取得手段により取得される暗号化対象文である、
ことを特徴とする暗号化装置。
【請求項５】
請求項１乃至４のいずれかに記載の暗号化装置において、
前記暗号化対象文取得手段は、順序付けられた複数の前記暗号化対象文を取得し、
前記順列取得手段は、前記順列を、前記暗号化対象文ごとに取得し、
前記暗号化手段は、前記暗号化対象文と、該暗号化対象文の次の暗号化対象文に対応する前記順列と、を含む文の暗号化を行うことにより、前記暗号化対象文の暗号化を行う、
ことを特徴とする暗号化装置。
【請求項６】
復号化対象文を取得する復号化対象文取得手段と、
暗号鍵変換規則を示す暗号鍵変換規則情報であって、複数の該暗号鍵変換規則情報を要素とする順列を取得する順列取得手段と、
暗号鍵を取得する暗号鍵取得手段と、
前記各暗号鍵変換規則情報が前記順列に含まれる順序で、該順列に含まれる各暗号鍵変換規則情報により示される暗号鍵変換規則にそれぞれ基づいて、前記取得される暗号鍵を変換する暗号鍵変換手段と、
前記変換された暗号鍵に基づいて、前記復号化対象文の復号化を行う復号化手段と、
を含むことを特徴とする復号化装置。
【請求項７】
請求項６に記載の復号化装置において、
前記各暗号鍵変換規則情報は０以上の整数であり、
前記暗号鍵変換手段は、前記各暗号鍵変換規則情報により示される整数回にわたり、前記暗号鍵を繰り返し変換することにより、暗号鍵を変換する、
ことを特徴とする復号化装置。
【請求項８】
請求項７に記載の復号化装置において、
前記暗号鍵変換手段は、暗号鍵ｋｉ−１を、所定の規則ｆに基づいて、前記順列のｉ番目の要素である暗号鍵変換規則情報により示される整数回ｎｉにわたり、前記暗号鍵を繰り返し変換することにより、変換された暗号鍵ｋｉを取得し、
暗号鍵ｋ０は、前記暗号鍵取得手段により取得される暗号鍵である、
ことを特徴とする復号化装置。
【請求項９】
請求項８に記載の復号化装置において、
前記復号化手段は、前記暗号鍵ｋｉに基づいて、復号化対象文Ｈｉの復号化を行うことにより、復号化対象文Ｈｉ＋１を取得し、
復号化対象文Ｈ１は、前記復号化対象文取得手段により取得される復号化対象文である、
ことを特徴とする復号化装置。
【請求項１０】
請求項６乃至９のいずれかに記載の復号化装置において、
前記復号化対象文取得手段は、順序付けられた複数の前記復号化対象文を取得し、
前記復号化対象文は、前記復号化対象文の次の復号化対象文に対応する前記順列を含み、
前記順列取得手段は、
前記複数の復号化対象文のうち、１番目の復号化対象文に対応する前記順列を取得するとともに、
前記復号化手段により復号化された前記復号化対象文に含まれる、該復号化対象文の次の復号化対象文に対応する前記順列を取得する、
ことを特徴とする復号化装置。
【請求項１１】
暗号化対象文を取得する暗号化対象文取得ステップと、
暗号鍵変換規則を示す暗号鍵変換規則情報であって、複数の該暗号鍵変換規則情報を要素とする順列を取得する順列取得ステップと、
暗号鍵を取得する暗号鍵取得ステップと、
前記各暗号鍵変換規則情報が前記順列に含まれる順序で、該順列に含まれる各暗号鍵変換規則情報により示される暗号鍵変換規則にそれぞれ基づいて、前記取得される暗号鍵を変換する暗号鍵変換ステップと、
前記変換された暗号鍵に基づいて、前記暗号化対象文の暗号化を行う暗号化ステップと、
を含むことを特徴とする暗号化方法。
【請求項１２】
復号化対象文を取得する復号化対象文取得ステップと、
暗号鍵変換規則を示す暗号鍵変換規則情報であって、複数の該暗号鍵変換規則情報を要素とする順列を取得する順列取得ステップと、
暗号鍵を取得する暗号鍵取得ステップと、
前記各暗号鍵変換規則情報が前記順列に含まれる順序で、該順列に含まれる各暗号鍵変換規則情報により示される暗号鍵変換規則にそれぞれ基づいて、前記取得される暗号鍵を変換する暗号鍵変換ステップと、
前記変換された暗号鍵に基づいて、前記復号化対象文の復号化を行う復号化ステップと、
を含むことを特徴とする復号化方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は暗号化装置、復号化装置、暗号化方法及び復号化方法に関し、特に暗号強度を高める技術に関する。
【背景技術】
【０００２】
暗号化方式としては、従来から様々なものが提案されている。その中のひとつであるバーナム暗号は、平文と乱数（暗号鍵）との排他的論理和を暗号文として使用する暗号化方式である。このバーナム暗号には、暗号文をさらにバーナム暗号方式により暗号化することにより得られる暗号文を復号化する場合、暗号化した順番で、暗号文と暗号鍵との排他的論理和を算出することにより、元の平文を得ることができるという特徴がある。
【０００３】
このようなバーナム暗号を用いた技術の例が、特許文献１に開示されている。特許文献１に記載の技術では、複数の乱数により複数回の暗号化を行う場合において、該乱数を、暗号側と復号側で共有する所定規則に基づいて毎回生成する逐次暗号鍵生成を行うことにより、暗号強度を高めている。
【特許文献１】特開平１０−２２９９４号公報
【発明の開示】
【発明が解決しようとする課題】
【０００４】
しかしながら、上記従来の方法では、逐次暗号鍵生成の生成規則が分かれば暗号文の解読が可能となる。このため、逐次暗号鍵生成の生成規則の予測を困難にすることが課題となっている。
【０００５】
本発明は上記課題を解決するためになされたもので、暗号鍵を生成する規則の予測を困難にすることを可能にする暗号化装置、復号化装置、暗号化方法及び復号化方法を提供することにある。
【課題を解決するための手段】
【０００６】
上記課題を解決するための本発明に係る暗号化装置は、暗号化対象文を取得する暗号化対象文取得手段と、暗号鍵変換規則を示す暗号鍵変換規則情報であって、複数の該暗号鍵変換規則情報を要素とする順列を取得する順列取得手段と、暗号鍵を取得する暗号鍵取得手段と、前記各暗号鍵変換規則情報が前記順列に含まれる順序で、該順列に含まれる各暗号鍵変換規則情報により示される暗号鍵変換規則にそれぞれ基づいて、前記取得される暗号鍵を変換する暗号鍵変換手段と、前記変換された暗号鍵に基づいて、前記暗号化対象文の暗号化を行う暗号化手段と、を含むことを特徴とする。
【０００７】
また、本発明に係る復号化装置であって、上記暗号化装置により暗号化された暗号文を復号化するための復号化装置は、復号化対象文を取得する復号化対象文取得手段と、暗号鍵変換規則を示す暗号鍵変換規則情報であって、複数の該暗号鍵変換規則情報を要素とする順列を取得する順列取得手段と、暗号鍵を取得する暗号鍵取得手段と、前記各暗号鍵変換規則情報が前記順列に含まれる順序で、該順列に含まれる各暗号鍵変換規則情報により示される暗号鍵変換規則にそれぞれ基づいて、前記取得される暗号鍵を変換する暗号鍵変換手段と、前記変換された暗号鍵に基づいて、前記復号化対象文の復号化を行う復号化手段と、を含むことを特徴とする。
【０００８】
このようにすることにより、暗号鍵を生成する規則の予測を困難にすることが可能になる。すなわち、順列（ここでは重複を許す順列でもよい）の要素である暗号鍵変換規則情報に基づいて暗号鍵を変換するので、復号化するためには該順列が必要となり、暗号強度を高めることができる。
【０００９】
また、上記暗号化装置において、前記各暗号鍵変換規則情報は０以上の整数であり、前記暗号鍵変換手段は、前記各暗号鍵変換規則情報により示される整数回にわたり、前記暗号鍵を繰り返し変換することにより、暗号鍵を変換する、こととしてもよい。一方、上記復号化装置において、前記各暗号鍵変換規則情報は０以上の整数であり、前記暗号鍵変換手段は、前記各暗号鍵変換規則情報により示される整数回にわたり、前記暗号鍵を繰り返し変換することにより、暗号鍵を変換する、こととしてもよい。このようにすれば、暗号鍵変換規則情報によって示される回数に従って、暗号鍵を変換することができ、暗号強度の強化を容易に行うことができる。
【００１０】
また、上記暗号化装置において、前記暗号鍵取得手段は、暗号鍵ｋ０を、前記暗号鍵として取得し、前記暗号鍵変換手段は、暗号鍵ｋｉ−１を、所定の規則ｆに基づいて、前記順列のｉ番目の要素である暗号鍵変換規則情報により示される整数回ｎｉにわたり、前記暗号鍵を繰り返し変換することにより、変換された暗号鍵ｋｉを取得する、こととしてもよい。一方、上記復号化装置において、前記暗号鍵変換手段は、暗号鍵ｋｉ−１を、所定の規則ｆに基づいて、前記順列のｉ番目の要素である暗号鍵変換規則情報により示される整数回ｎｉにわたり、前記暗号鍵を繰り返し変換することにより、変換された暗号鍵ｋｉを取得し、暗号鍵ｋ０は、前記暗号鍵取得手段により取得される暗号鍵である、こととしてもよい。このようにすれば、暗号鍵ｋｉ−１を、所定の規則ｆに基づいて、前記順列のｉ番目の要素である暗号鍵変換規則情報により示される整数回ｎｉにわたり、前記暗号鍵を繰り返し変換することにより、変換された暗号鍵ｋｉを取得することができるので、暗号鍵を逐次取得していくことができる。
【００１１】
また、上記暗号化装置において、前記暗号化対象文取得手段は、前記暗号化手段は、前記暗号鍵ｋｉに基づいて、暗号化対象文Ｈｉの暗号化を行うことにより、暗号化対象文Ｈｉ＋１を取得し、暗号化対象文Ｈ１は、前記暗号化対象文取得手段により取得される暗号化対象文である、こととしてもよい。一方、上記復号化装置において、前記復号化手段は、前記暗号鍵ｋｉに基づいて、復号化対象文Ｈｉの復号化を行うことにより、復号化対象文Ｈｉ＋１を取得し、復号化対象文Ｈ１は、前記復号化対象文取得手段により取得される復号化対象文である、こととしてもよい。このようにすれば、逐次生成された暗号鍵により、逐次暗号文を取得していくことができる。
【００１２】
また、上記暗号化装置において、前記暗号化対象文取得手段は、順序付けられた複数の前記暗号化対象文を取得し、前記順列取得手段は、前記順列を、前記暗号化対象文ごとに取得し、前記暗号化手段は、前記暗号化対象文と、該暗号化対象文の次の暗号化対象文に対応する前記順列と、を含む文の暗号化を行うことにより、前記暗号化対象文の暗号化を行う、こととしてもよい。一方、上記復号化装置において、前記復号化対象文取得手段は、順序付けられた複数の前記復号化対象文を取得し、前記復号化対象文は、前記復号化対象文の次の復号化対象文に対応する前記順列を含み、前記順列取得手段は、前記複数の復号化対象文のうち、１番目の復号化対象文に対応する前記順列を取得するとともに、前記復号化手段により復号化された前記復号化対象文に含まれる、該復号化対象文の次の復号化対象文に対応する前記順列を取得する、こととしてもよい。このようにすれば、暗号文に前記順列を含めることができるので、暗号化装置と復号化装置とで、１番目の暗号化対象文についての前記順列を除いて順列を共有する必要がなくなり、前記順列が流出する可能性を低くすることができる。
【００１３】
また、本発明に係る暗号化方法は、暗号化対象文を取得する暗号化対象文取得ステップと、暗号鍵変換規則を示す暗号鍵変換規則情報であって、複数の該暗号鍵変換規則情報を要素とする順列を取得する順列取得ステップと、暗号鍵を取得する暗号鍵取得ステップと、前記各暗号鍵変換規則情報が前記順列に含まれる順序で、該順列に含まれる各暗号鍵変換規則情報により示される暗号鍵変換規則にそれぞれ基づいて、前記取得される暗号鍵を変換する暗号鍵変換ステップと、前記変換された暗号鍵に基づいて、前記暗号化対象文の暗号化を行う暗号化ステップと、を含むことを特徴とする。
【００１４】
さらに、本発明に係る復号化方法は、復号化対象文を取得する復号化対象文取得ステップと、暗号鍵変換規則を示す暗号鍵変換規則情報であって、複数の該暗号鍵変換規則情報を要素とする順列を取得する順列取得ステップと、暗号鍵を取得する暗号鍵取得ステップと、前記各暗号鍵変換規則情報が前記順列に含まれる順序で、該順列に含まれる各暗号鍵変換規則情報により示される暗号鍵変換規則にそれぞれ基づいて、前記取得される暗号鍵を変換する暗号鍵変換ステップと、前記変換された暗号鍵に基づいて、前記復号化対象文の復号化を行う復号化ステップと、を含むことを特徴とする。
【発明を実施するための最良の形態】
【００１５】
本発明の実施の形態について、図面を参照しながら説明する。
【００１６】
図１は、本実施の形態に係る暗号通信システム１の構成図である。同図に示すように、暗号通信システム１は暗号化装置１０と、復号化装置２０と、を含む。暗号化装置１０は平文１０１を暗号化する処理を行う暗号化処理部１２を、復号化装置２０は暗号文１０２を復号化する復号化処理部２２を含んで構成される。暗号化装置１０及び復号化装置２０は、例えば中央処理装置（ＣＰＵ）とメモリとを備えたコンピュータである。
【００１７】
暗号化処理部１２は、共有秘密鍵１０３、共有パラメータ１０４を取得し、これらに基づいて平文１０１を暗号化し、暗号文１０２を取得する。そして該暗号文１０２を復号化装置２０に対して送信する。ここでは、図１では無線で送信することとしているが、もちろんどのような通信手段を使用してもよい。有線通信でもよいし、ＣＤや紙などの情報記憶媒体に記録して、郵便等の手段により復号化装置２０に渡すこととしてもよい。
【００１８】
共有秘密鍵１０３、共有パラメータ１０４は暗号化処理部１２と復号化処理部２２とで、事前（少なくとも復号化処理部２２とにおいて復号化処理を行う前）に共有される。共有秘密鍵１０３は秘密鍵暗号方式における秘密鍵であり、公開鍵暗号方式により暗号化されて共有されることが多い。また共有パラメータ１０４は、例えば暗号化装置１０が移動体通信システムの基地局装置で、復号化装置２０が同移動体通信システムの移動局装置である場合を例に取ると、移動局装置の機体番号などのパラメータであり、一般的には両装置が共通に取得することができるパラメータである。該共有パラメータ１０４も共有秘密鍵１０３と同様に、事前（少なくとも復号化処理部２２とにおいて復号化処理を行う前）に共有される。
【００１９】
復号化処理部２２は、共有秘密鍵１０３、共有パラメータ１０４を取得し、これらに基づいて暗号化装置１０から受け取った暗号文１０２を復号化し、平文１０１を取得する。
【００２０】
このように暗号通信を行う際の暗号化方式としては、様々なものが知られている。そのひとつであるバーナム暗号は、平文と乱数（暗号鍵）との排他的論理和を暗号文として使用する暗号化方式である。このバーナム暗号には、暗号文をさらにバーナム暗号方式により暗号化することにより得られる暗号文を復号化する場合、暗号化した順番で、暗号文と暗号鍵との排他的論理和を算出することにより、元の平文を得ることができるという特徴がある。
【００２１】
バーナム暗号について、より具体的に説明する。まず、暗号鍵ｋ1を使用して平文Ｈを暗号化して得られる暗号文を、ｋ1（Ｈ）と表現することとする。すると、２つの暗号鍵ｋ1とｋ2をこの順に使用して平文Ｈを暗号化して得られる暗号文は、ｋ2（ｋ1（Ｈ））と表現することができる。バーナム暗号方式では、復号化する際の処理として、２つの暗号鍵ｋ1とｋ2をこの順に使用して復号化することができる。すなわち、復号化を関数の逆関数に例えると、ｋ2（ｋ1（Ｈ））を復号化するために、まずｋ1−１（ｋ2（ｋ1（Ｈ）））を算出する処理を行い、ｋ2（Ｈ）を得る。そして次に、ｋ2−１（ｋ2（Ｈ））を算出する処理を行い、元の平文Ｈを得ることができる。
【００２２】
なお、バーナム暗号のように、暗号化のときと同じ順番で暗号鍵を適用することにより、暗号文から平文を得られる暗号方式であればどの暗号方式も適用することができるが、本実施の形態では、バーナム暗号方式を使用するものとして説明する。
【００２３】
図２は、暗号化処理部１２の機能ブロックを示す図である。同図に示すように、暗号化処理部１２は、機能的には、暗号化対象文取得部１２２、順列取得部１２３、暗号鍵取得部１２４、暗号鍵変換部１２５、暗号化部１２６、暗号文取得部１２７、送信部１２８を含んで構成される。
【００２４】
暗号化対象文取得部１２２は、暗号化の対象となる文Ｈ１を取得する機能部である。文とは、通常暗号化されていない平文のことを指すが、暗号化処理部１２において暗号化対象の文として取り扱われるものであればどのようなデータでもよい。つまり、文字列データであってもよいし、コンピュータ上のファイルとして保存されるバイナリデータや画像ファイルのように人間には直接的には理解できない形式で保存されているデータであってもよい。また、他の暗号化手段により既に暗号化されている文であってもよい。そして暗号化対象文取得部１２２は、取得した暗号化対象文Ｈ１を暗号化部１２６に出力する。
【００２５】
順列取得部１２３は、鍵変換回数配列Ｘ［ｎ］を、共有パラメータ１０４のひとつとして取得する。ｎは配列の大きさであり、該配列は各要素が１乃至ｎの順序で順序付けられた順列（ただし、重複を許す）である。また、該配列の各要素はゼロ以上の整数である暗号鍵変換規則情報で構成される。後述するが、該鍵変換回数配列Ｘ［ｎ］は、複数の暗号化対象文を暗号化する場合にはＸｉ［ｎｉ］（ｉ＝１〜文の数）として暗号化対象文ごとに定義され、Ｘ１［ｎ１］は暗号化装置１０と復号化装置２０において、共有パラメータ１０４のひとつとして事前に共有される。
【００２６】
暗号鍵取得部１２４は、暗号鍵ｋ０を共有秘密鍵１０３として取得する。バーナム暗号方式では、共有秘密鍵１０３は予め決められた桁数の乱数であり、通常は暗号化装置１０が所定の乱数発生規則に基づいて生成する。そして、事前に復号化処理部２２に対して該暗号鍵ｋ０を渡しておく。もちろん、他の装置で生成してもよく、その場合には、暗号化装置１０は該他の装置で生成された共有秘密鍵１０３を受信し、暗号鍵取得部１２４は、該受信された暗号鍵ｋ０を共有秘密鍵１０３として取得する。
【００２７】
暗号鍵変換部１２５は、暗号鍵取得部１２４により取得された暗号鍵ｋ０を、順列取得部１２３により取得された鍵変換回数配列Ｘ［ｎ］に基づいて変換する（攪拌する）ことにより、暗号鍵ｋ１を取得する。より具体的には、該鍵変換回数配列Ｘ［ｎ］の１番目の要素である暗号鍵変換規則情報Ｘ［１］により示される整数回にわたり、所定の変換規則ｆに基づいて、暗号鍵ｋ０を変換する処理を行うことにより、暗号鍵ｋ１＝ｆ（ｆ（ｆ（・・・ｆ（ｋ０）・・・）））（規則ｆをＸ［１］回適用）を取得する。ここで、変換規則ｆとしては、該ｆを適用した結果から、任意の引数に該ｆを適用した結果を見い出すことが困難であるような一方向関数（例えばハッシュ関数）を使用することが好適である。そして生成された暗号鍵を暗号化部１２６に出力する。
【００２８】
暗号化対象文Ｈ１と、暗号鍵ｋ１の出力と、を受けた暗号化部１２６は、暗号化対象文Ｈ１を暗号鍵ｋ１により暗号化して暗号文Ｈ２を取得する。ここではバーナム暗号を用いるので、暗号化対象文Ｈ１と乱数である暗号鍵ｋ１の排他的論理和を取得する。そして、暗号化した結果えられる暗号文Ｈ２を保持する。
【００２９】
暗号鍵変換部１２５は、変換することにより得られた暗号鍵ｋ１を、さらに順列取得部１２３により取得された鍵変換回数配列Ｘ［ｎ］に基づいて変換する（攪拌する）ことにより、暗号鍵ｋ２を取得する。より具体的には、該鍵変換回数配列Ｘ［ｎ］の２番目の要素である暗号鍵変換規則情報Ｘ［２］により示される整数回にわたり、所定の変換規則ｆに基づいて、暗号鍵ｋ１を変換する処理を行うことにより、暗号鍵ｋ２＝ｆ（ｆ（ｆ（・・・ｆ（ｋ１）・・・）））（規則ｆをＸ［２］回適用）を取得する。そして生成された暗号鍵を暗号化部１２６に出力する。
【００３０】
暗号鍵ｋ２の出力を受けた暗号化部１２６は、上記保持しておいた暗号化文Ｈ２を、再度暗号化対象文として取得し、暗号鍵ｋ２によりさらに暗号化する。すなわちここでも、暗号化対象文Ｈ２と乱数である暗号鍵ｋ２の排他的論理和を取得する。そして、暗号化した結果えられる暗号文Ｈ３を保持する。
【００３１】
暗号鍵変換部１２５と暗号化部１２６とは、以上の処理を、鍵変換回数配列Ｘ［ｎ］の要素の数であるｎ回繰り返す。
【００３２】
そして暗号化部１２６は、最終的に取得される暗号文Ｈｎを、暗号文取得部１２７に出力し、暗号文取得部１２７は、暗号化部１２６から出力される暗号文Ｈｎを取得し、送信部１２８に出力する。このとき暗号文取得部１２７は、該暗号文Ｈｎが暗号文であることを示すデータを、該暗号文Ｈｎに暗号化せずに含めることとしてもよい。そして送信部１２８は、復号化装置２０に対して、該暗号文を送信する。
【００３３】
図３は、復号化処理部２２の機能ブロックを示す図である。同図に示すように、復号化処理部２２は、機能的には、受信部２２１、復号化対象文取得部２２２、順列取得部２２３、暗号鍵取得部２２４、暗号鍵変換部２２５、復号化部２２６、平文取得部２２７を含んで構成される。
【００３４】
受信部２２１は、暗号化装置１０から送信された文を受信する。そして、受信された文を復号化対象文取得部２２２に対して出力する。復号化対象文取得部２２２は受信部２２１から出力された文を暗号文Ｇ１として取得し、復号化部２２６に対して出力する。なお、受信された文に所定の暗号方式で暗号化された信号であることを示すデータが含まれている場合には、復号化対象文取得部２２２が該データを取得することにより、受信部２２１から出力された文が暗号文であることを知ることができることとしてもよいし、送信した文が暗号文であることを示すデータを、例えば暗号化装置１０のユーザから別の送信手段にて送信され、受信することにより、復号化対象文取得部２２２は受信部２２１から出力された文が暗号文であることを知ることができることとしてもよい。
【００３５】
順列取得部２２３は、上述の鍵変換回数配列Ｘ［ｎ］を共有パラメータ１０４のひとつとして取得する。そして、該鍵変換回数配列Ｘ［ｎ］を暗号鍵変換部２２５に対して出力する。また、暗号鍵取得部２２４は、上述の暗号鍵ｋ０を共有秘密鍵１０３として取得し、暗号鍵ｋ０を暗号鍵変換部２２５に対して出力する。なお、鍵変換回数配列Ｘ［ｎ］と暗号鍵ｋ０とは、復号化処理を行う前に共有される。
【００３６】
暗号鍵変換部２２５は、暗号鍵取得部２２４により取得された暗号鍵ｋ０を、順列取得部２２３により取得された鍵変換回数配列Ｘ［ｎ］に基づいて変換する（攪拌する）ことにより、暗号鍵ｋ１を取得する。該変換処理は、暗号鍵変換部１２５における処理と同様である。すなわち、暗号化装置１０と復号化装置２０とで、暗号鍵変換部１２５における暗号鍵変換処理を共有しておく。ここでは、鍵変換回数配列Ｘ［ｎ］の１番目の要素である暗号鍵変換規則情報Ｘ［１］により示される整数回にわたり、所定の変換規則ｆに基づいて、暗号鍵ｋ０を変換する処理を行うことにより、暗号鍵ｋ１＝ｆ（ｆ（ｆ（・・・ｆ（ｋ０）・・・）））（規則ｆをｎ回適用）を取得するという処理である。もちろん、ｆについても暗号化装置１０と復号化装置２０とで共有しておく必要がある。そして、取得された暗号鍵ｋ１を復号化部２２６に出力する。
【００３７】
復号化対象文Ｇ１と、暗号鍵ｋ１の出力と、を受けた復号化部２２６は、復号化対象文Ｇ１を暗号鍵ｋ１により復号化して暗号文Ｇ２を取得する。ここではバーナム暗号を用いるので、復号化対象文Ｇ１と乱数である暗号鍵ｋ１の排他的論理和を取得する。そして、暗号化した結果得られる暗号文Ｇ２を保持する。
【００３８】
暗号鍵変換部２２５は、変換することにより得られた暗号鍵ｋ２を、さらに順列取得部１２３により取得された鍵変換回数配列Ｘ［ｎ］に基づいて変換する（攪拌する）ことにより、暗号鍵ｋ２を取得する。より具体的には、該鍵変換回数配列Ｘ［ｎ］の２番目の要素である暗号鍵変換規則情報Ｘ［２］により示される整数回にわたり、所定の変換規則ｆに基づいて、暗号鍵ｋ１を変換する処理を行うことにより、暗号鍵ｋ２＝ｆ（ｆ（ｆ（・・・ｆ（ｋ１）・・・）））（規則ｆをＸ［２］回適用）を取得する。そして生成された暗号鍵を復号化部２２６に出力する。
【００３９】
暗号鍵ｋ２の出力を受けた復号化部２２６は、上記保持しておいた暗号化文Ｇ２を、再度復号化対象文として取得し、暗号鍵ｋ２によりさらに復号化する。すなわちここでも、復号化対象文Ｇ２と乱数である暗号鍵ｋ２の排他的論理和を取得する。そして、暗号化した結果えられる暗号文Ｇ３を保持する。
【００４０】
暗号鍵変換部２２５と復号化部２２６とは、以上の処理を、鍵変換回数配列Ｘ［ｎ］の要素の数であるｎ回繰り返す。
【００４１】
そして復号化部２２６は、最終的に取得される暗号文Ｇｎを、平文取得部２２７に出力し、平文取得部２２７は、暗号化部１２６から出力される暗号文Ｇｎを平文として取得する。このようにすることにより、復号化装置２０は元の平文を取得することができる。
【００４２】
以上のようにして暗号化処理を行うことにより、暗号鍵を生成する規則の予測を困難にすることを可能にすることができるので、暗号強度を高めることができる。なおここで、暗号強度は、暗号化・復号化のためのアルゴリズムの知識を有する暗号文攻撃者が暗号文を手に入れた場合に、該暗号文を総当たり法によって解読できる確率の逆数である。本実施の形態によれば、復号化するためには、鍵変換回数配列Ｘ［ｎ］を取得する必要がある。該Ｘ［ｎ］の組み合わせは、最大鍵変換回数（許容される合計攪拌（暗号鍵の変換）回数）をＸ、最大多重暗号化回数（許容される暗号化の回数）をｎ、とすると暗号強度は以下の式（１）のようになる。
【数１】
2006129306.tif 000003
となる。ただし、共有秘密鍵１０３のビット長をｋ、共有パラメータ１０４の総ビット長をｐとする。なお本実施の形態においては、暗号化・復号化に要する処理時間が長くならないようにするため、Ｘ≧ｎを満たすようにしている。一方、背景技術である逐次暗号方式における暗号強度は、
【数２】
2006129306.tif 000004
である。このため、Ｘ＝２５６，ｎ＝１の場合には背景技術と比較して共有秘密鍵１０３のビット長を８ビット追加した程度の暗号強度を得ることができる。同様に、Ｘ＝２５６，ｎ＝２の場合には、共有秘密鍵１０３のビット長を約１５ビット追加した程度の暗号強度を得ることができる。また、Ｘ＝２５６，ｎ＝３の場合には、共有秘密鍵１０３のビット長を２１ビット追加した程度の暗号強度を得ることができる。
【００４３】
次に、上記処理を、暗号化処理部１２及び復号化処理部２２の処理のフロー図を参照しながらより詳細に説明する。
【００４４】
まず、図４は暗号化処理部１２における暗号化処理のフローを示すフロー図である。まず、暗号化対象文Ｈ（平文１０１）を取得する（Ｓ１０００）。そして、共有秘密鍵１０３及び共有パラメータ１０４を取得する（Ｓ１００２）。さらに、鍵変換回数配列Ｘ［ｎ］を取得する（Ｓ１００４）。そして、共有秘密鍵１０３及び共有パラメータ１０４に基づき、初期暗号鍵ｋを生成する（Ｓ１００６）。この生成処理は、所定の規則に基づき行われ、該処理は暗号化装置１０と復号化装置２０で共有される。そして、変数ｃｏｕｎｔ１と変数ｃｏｕｎｔ２の記憶領域を確保し、それぞれ０，１を代入する（Ｓ１００８）。
【００４５】
そして、ｃｏｕｎｔ１が、Ｘ［ｃｏｕｎｔ２］に等しいか否かを判断する（Ｓ１０１０）。最初はｃｏｕｎｔ１の値は０であるので、例えばＸ［１］が０であれば、Ｓ１０１６に進み、そうでなければＳ１０１２に進む。Ｓ１０１２に進んだ場合には、一方向関数ｆにより、暗号鍵の変換を実施する。具体的には、ｋにｆを適用することにより、ｆ（ｋ）を取得し、ｆ（ｋ）をｋに代入する（Ｓ１０１２）。そして、ｃｏｕｎｔ１の値を１インクリメントする（Ｓ１０１４）。
【００４６】
インクリメントしたら、Ｓ１０１０に戻り、再度ｃｏｕｎｔ１が、Ｘ［ｃｏｕｎｔ２］に等しいか否かを判断する。すなわち、ｃｏｕｎｔ１がＸ［ｃｏｕｎｔ２］に等しくなるまで、Ｓ１０１２及びＳ１０１４の処理を繰り返す。このことにより、鍵変換回数配列Ｘ［ｎ］の各要素は、繰り返し回数を累積的に示すデータであると言うことができる。
【００４７】
そして、Ｓ１０１０においてｃｏｕｎｔ１がＸ［ｃｏｕｎｔ２］に等しいと判断された場合には、ｋに基づき、逐次暗号鍵Ａｋを生成する（Ｓ１０１６）。そして、暗号化対象文Ｈを、逐次暗号鍵Ａｋに基づいて暗号化し、Ｈに代入する（Ｓ１０１８）。すなわち、ＨとＡｋとの排他的論理和を計算することにより得られる結果を、Ｈに代入する。そして、ｃｏｕｎｔ２を１インクリメントし（Ｓ１０２０）、ｃｏｕｎｔ２がｎを超えたか否かを判断する（Ｓ１０２２）。すなわち、ｃｏｕｎｔ２が鍵変換回数配列Ｘ［ｎ］の要素の数を超えるまでの間、Ｓ１０１０乃至Ｓ１０２０の処理を繰り返すことにより、鍵変換回数配列Ｘ［ｎ］の各要素に示される繰り返し回数だけ変換した暗号鍵により平文Ｈを逐次暗号化する処理を、鍵変換回数配列Ｘ［ｎ］の要素の全てについて繰り返し行う。そして最終的に得られたＨを、暗号文１０２として取得する（Ｓ１０２４）。
【００４８】
次に、図５は復号化処理部２２，における復号化処理のフローを示すフロー図である。まず、復号化対象文Ｈ（暗号文１０２）を取得する（Ｓ１５００）。そして、共有秘密鍵１０３及び共有パラメータ１０４を取得する（Ｓ１５０２）。さらに、鍵変換回数配列Ｘ［ｎ］を取得する（Ｓ１５０４）。そして、共有秘密鍵１０３及び共有パラメータ１０４に基づき、暗号化装置１０と共有する所定の規則により、初期暗号鍵ｋを生成する（Ｓ１５０６）。そして、変数ｃｏｕｎｔ１と変数ｃｏｕｎｔ２の記憶領域を確保し、それぞれ０，１を代入する（Ｓ１５０８）。
【００４９】
そして、ｃｏｕｎｔ１が、Ｘ［ｃｏｕｎｔ２］に等しいか否かを判断する（Ｓ１５１０）。最初はｃｏｕｎｔ１の値は０であるので、例えばＸ［１］が０であれば、Ｓ１５１６に進み、そうでなければＳ１５１２に進む。Ｓ１５１２に進んだ場合には、一方向関数ｆにより、暗号鍵の変換を実施する。具体的には、ｋにｆを適用することにより、ｆ（ｋ）を取得し、ｆ（ｋ）をｋに代入する（Ｓ１５１２）。そして、ｃｏｕｎｔ１の値を１インクリメントする（Ｓ１５１４）。
【００５０】
インクリメントしたら、Ｓ１５１０に戻り、再度ｃｏｕｎｔ１が、Ｘ［ｃｏｕｎｔ２］に等しいか否かを判断する。すなわち、ｃｏｕｎｔ１がＸ［ｃｏｕｎｔ２］に等しくなるまで、Ｓ１５１２及びＳ１５１４の処理を繰り返す。この処理は、暗号化処理部１２における処理と同様である。
【００５１】
そして、Ｓ１５１０においてｃｏｕｎｔ１がＸ［ｃｏｕｎｔ２］に等しいと判断された場合には、ｋに基づき、逐次暗号鍵Ａｋを生成する（Ｓ１５１６）。そして、復号化対象文Ｈを、逐次暗号鍵Ａｋに基づいて復号化し、Ｈに代入する（Ｓ１５１８）。すなわち、ＨとＡｋとの排他的論理和を計算することにより得られる結果を、Ｈに代入する。そして、ｃｏｕｎｔ２を１インクリメントし（Ｓ１５２０）、ｃｏｕｎｔ２がｎを超えたか否かを判断する（Ｓ１５２２）。すなわち、ｃｏｕｎｔ２が鍵変換回数配列Ｘ［ｎ］の要素の数を超えるまでの間、Ｓ１５１０乃至Ｓ１５２０の処理を繰り返すことにより、鍵変換回数配列Ｘ［ｎ］の各要素に示される繰り返し回数だけ変換した暗号鍵により暗号文Ｈを逐次復号化する処理を、鍵変換回数配列Ｘ［ｎ］の要素の全てについて繰り返し行う。そして最終的に得られたＨを、平文１０１として取得する（Ｓ１５２４）。
【００５２】
以上の処理においては、１つの暗号化対象文を、暗号化及び復号化する処理について説明したが、本実施の形態では、複数の暗号化対象文を一度に暗号化することもできる。このための処理について、以下に説明する。
【００５３】
複数の暗号化対象文は、暗号化処理部１２において、それぞれ上記処理により順番に暗号化される。そして、該鍵変換回数配列Ｘ［ｎ］は、複数の暗号化対象文を暗号化する場合にはＸｉ［ｎｉ］（ｉ＝１〜文の数）として暗号化対象文ごとに定義される。
【００５４】
複数の暗号化対象文を暗号化する際には、ひとつ後に暗号化する暗号化対象文についての鍵変換回数配列Ｘ［ｎ］をも含めて暗号化対象文として取得し、該暗号化対象文を上記処理により暗号化する。このようにすることにより、複数の暗号化対象文を暗号化する際に、暗号化装置１０と復号化装置２０の間で共有することが必要となる鍵変換回数配列Ｘ［ｎ］は、１つの暗号化対象文についてのみで足りることとなる。
【００５５】
これらの処理を実現するための処理の詳細を、暗号化処理部１２及び復号化処理部２２の処理フロー図を参照しながら説明する。
【００５６】
図６は、暗号化処理部１２における、複数の暗号化対象文の暗号化処理である。まず、変数ｉの記憶領域を確保し、１を代入する（Ｓ２０００）。そして、暗号化対象の平文Ｈ［ｉ］を取得する（Ｓ２００２）。配列の添え字であるｉは、平文Ｈ［ｉ］が、ｉ番目の暗号化対象文であることを示す。そして、Ｈ［ｉ＋１］があるか否かを判断する（Ｓ２００４）。具体的には、ｉの最大値を取得し、ｉが該最大値を超えているか否かを判断することとしてもよい。そして、Ｈ［ｉ＋１］があれば、鍵変換回数配列Ｘｉ［ｎｉ］及びＸｉ＋１［ｎｉ＋１］を取得し（Ｓ２００６）、変数Ｈを、Ｈ［ｉ］とＸｉ［ｎｉ］を含めて生成する（Ｓ２００８）。ここでは変数Ｈに、Ｈ［ｉ］とＸｉ［ｎｉ］の連結した値を代入している。一方、Ｈ［ｉ＋１］がないと判断される場合にば、変数ＨにＨ［ｉ］を代入する。
【００５７】
次に、変数ｎにｎｉを、変数Ｘ［ｎ］にＸｉ［ｎｉ］を、それぞれ代入する（Ｓ２０１４）。そして変数Ｈ、変数ｎ、変数Ｘ［ｎ］を使用して、図４に示す暗号化処理を行う（Ｓ２０１６）。すると、暗号文Ｈが得られるので、該暗号文を、暗号化対象文Ｈ［ｉ］に対応する暗号文として取得する（Ｓ２０１８）。そして、全ての暗号化対象文について暗号化が終了したか否かを判断し（Ｓ２０２０）、終了していなければｉを１インクリメントして（Ｓ２０２２）Ｓ２００２に戻り、次の暗号化対象文Ｈ［ｉ］についての処理を開始する。一方、全ての全ての暗号化対象文について暗号化が終了した場合には、処理を終了する。
【００５８】
図７は、復号化処理部２２における、複数の復号化対象文の復号化処理である。ここでの複数の復号化対象文は、図６に示す複数文暗号化処理により暗号化されたものであることを前提としている。
【００５９】
まず、変数ｉの記憶領域を確保し、１を代入する（Ｓ２５００）。そして、復号化対象の暗号文Ｈ［ｉ］を取得する（Ｓ２５０２）。そして、ｉが１であるか否かを判断し（Ｓ２５０４）、ｉが１であれば、鍵変換回数配列Ｘ１［ｎ１］を取得する（Ｓ２５０６）。すなわち、復号化処理部２２はｉが１の場合には鍵変換回数配列Ｘ１［ｎ１］を暗号化処理部１２との間で予め共有しておく必要がある。一方、ｉが１でない場合には、後段の処理により順次鍵変換回数配列Ｘｉ［ｎｉ］を取得することができるので、ここで取得する必要はない。そして、変数ＨにＨ［ｉ］を代入し（Ｓ２５０８）、さらに変数ｎにｎｉを、変数Ｘ［ｎ］にＸｉ［ｎｉ］を、それぞれ代入する（Ｓ２５１０）。そして変数Ｈ、変数ｎ、変数Ｘ［ｎ］を使用して、図５に示す復号化処理を行う（Ｓ２５１２）。すると、平文Ｈが得られるので、該平文ＨにＸｉ＋１［ｎｉ＋１］が含まれるか否かを判断する（Ｓ２５１４）。含まれる場合には、該平文ＨからＸｉ＋１［ｎｉ＋１］を抽出する（Ｓ２５１６）。このようにして、復号化処理部２２は、次に復号化する復号化対象文についての鍵変換回数配列を取得することができる。そして、ＨからＸｉ＋１［ｎｉ＋１］を除いた文を、Ｈ［ｉ］に対応する平文として取得する（Ｓ２５１８）。そしてｉを１インクリメントして（Ｓ２５２０）、Ｓ２５０２に戻り、次の復号化対象文Ｈ［ｉ］についての処理を開始する。一方、Ｓ２５１４において、平文ＨにＸｉ＋１［ｎｉ＋１］が含まれない場合には、該平文Ｈは最後の平文であるのでＸｉ＋１［ｎｉ＋１］を含んでいないのであり、平文ＨをＨ［ｉ］に対応する平文として取得して（Ｓ２５２２）、処理を終了する。
【００６０】
以上のようにして、複数の暗号化対象文について暗号化・復号化処理を行うことにより、１つの暗号化対象文を除き、鍵変換回数配列を事前に共有しなくてよいこととなるため、鍵変換回数配列の流出の危険性を減少することができる。
【図面の簡単な説明】
【００６１】
【図１】本発明の実施の形態に係る暗号通信システムの構成図である。
【図２】本発明の実施の形態に係る暗号化処理部の機能ブロック図である。
【図３】本発明の実施の形態に係る復号化処理部の機能ブロック図である。
【図４】本発明の実施の形態に係る暗号化処理の処理フロー図である。
【図５】本発明の実施の形態に係る復号化処理の処理フロー図である。
【図６】本発明の実施の形態に係る暗号化処理の処理フロー図である。
【図７】本発明の実施の形態に係る復号化処理の処理フロー図である。
【符号の説明】
【００６２】
１  暗号通信システム、１０  暗号化装置、１２  暗号化処理部、２０  復号化装置、２２  復号化処理部、１０１  平文、１０２  暗号文、１０３  共有秘密鍵、１０４  共有パラメータ、１２２  暗号化対象文取得部、１２３  順列取得部、１２４  暗号鍵取得部、１２５  暗号鍵変換部、１２６  暗号化部、１２７  暗号文取得部、１２８  送信部、２２１  受信部、２２２  復号化対象文取得部、２２３  順列取得部、２２４  暗号鍵取得部、２２５  暗号鍵変換部、２２６  復号化部、２２７  平文取得部。
【図１】
2006129306.tif 000005
【図２】
2006129306.tif 000006
【図３】
2006129306.tif 000007
【図４】
2006129306.tif 000008
【図５】
2006129306.tif 000009
【図６】
2006129306.tif 000010
【図７】
2006129306.tif 000011