(57)【要約】【課題】先頭部分が同一になりやすい多数の平文を暗号化する場合でも、暗号の安全性低下を防止する。【解決手段】ダミー文字選択手段１ｂは、入力された平文３の所定位置にある１または２以上の文字をダミー文字として選択する。暗号化手段１ａは、選択されたダミー文字を連鎖機能を有する暗号利用モードに従って暗号化すると共に、予め初期ベクタが設定されたレジスタ値を更新する。その後、暗号化手段１ａは、更新されたレジスタ値を用いてさらに平文３を暗号化する。暗号文出力手段１ｃは、暗号化手段１ａによる平文３に対する暗号化処理の結果を暗号文４として出力する。【選択図】図１
2008039844.tif 000002
【特許請求の範囲】
【請求項１】
連鎖機能を有する暗号利用モードを用いて暗号処理を行う暗号処理プログラムにおいて、
コンピュータを、
レジスタ値として予め初期ベクタを有しており、暗号元データを取得すると、所定の前記暗号利用モードに従い、前記レジスタ値を用いた文字の暗号化と暗号化処理で得られる値を用いた前記レジスタ値の更新とを繰り返すことで、暗号化単位間に依存関係がある暗号化データを生成する暗号化手段、
平文が入力されると、前記平文の所定位置にある１または２以上の文字をダミー文字として選択し、前記ダミー文字を暗号元データとして前記暗号化手段に入力し、得られた暗号化データを破棄するダミー文字選択手段、
前記ダミー文字の暗号化によって前記暗号化手段の前記レジスタ値が更新されると、その後、前記平文を暗号元データとして前記暗号化手段に入力し、得られた暗号化データを暗号文として出力する暗号文出力手段、
として機能させることを特徴とする暗号処理プログラム。
【請求項２】
前記コンピュータを、さらに、
前記平文が入力されると、前記平文を先頭と最後尾とが連続した循環文字列とみなし、前記循環文字列上の１文字を新たな先頭に指定し、指定した前記新たな先頭から始まる文字順序が変換された新たな平文を生成する順序変換手段、
として機能させ、
前記ダミー文字選択手段および前記暗号文出力手段は、前記新たな平文を前記平文とみなして暗号化処理を行う、
ことを特徴とする請求項１記載の暗号処理プログラム。
【請求項３】
前記コンピュータを、さらに、
第１の文字コード体系の文字コードと第２の文字コード体系の文字コードとの一対一の対応関係を記憶した文字コード情報記憶手段、
前記第１の文字コード体系で符号化された前記平文が入力されると、前記文字コード情報記憶手段を参照し、前記平文を前記第２の文字コード体系に変換する文字コード変換手段、
前記第２の文字コード体系で符号化された前記暗号文が生成されると、前記文字コード情報記憶手段を参照し、前記暗号文を前記第１の文字コード体系に変換する文字コード逆変換手段、
として機能させ、
前記暗号化手段は、前記第２の文字コード体系の文字コードから成る暗号元データを、前記第２の文字コード体系の文字コードから成る暗号化データに暗号化する、
ことを特徴とする請求項１記載の暗号処理プログラム。
【請求項４】
前記コンピュータを、さらに、
前記レジスタ値として予め前記暗号化手段と同一の前記初期ベクタを有しており、暗号化データを取得すると、前記暗号化手段と同一の前記暗号利用モードに従い、前記レジスタ値を用いた暗号値の復号と復号処理で得られる値を用いた前記レジスタ値の更新とを繰り返すことで、復号データを生成する復号手段、
前記暗号文が入力されると、前記暗号文の前記所定位置にある１または２以上の暗号値をダミー暗号として選択し、前記ダミー暗号を暗号化データとして前記復号手段に入力し、得られた復号データを破棄するダミー暗号選択手段、
前記ダミー暗号の復号によって前記復号手段の前記レジスタ値が更新されると、その後、前記暗号文を暗号化データとして前記復号手段に入力し、得られた復号データを前記平文として出力する平文出力手段、
として機能させることを特徴とする請求項１記載の暗号処理プログラム。
【請求項５】
連鎖機能を有する暗号利用モードを用いて暗号処理を行う暗号処理方法において、
平文が入力されると、前記平文の所定位置にある１または２以上の文字をダミー文字として選択し、
前記ダミー文字を、所定の前記暗号利用モードに従い、レジスタ値として予め設定された初期ベクタを用いて暗号化し、暗号化処理で得られる値を用いて前記レジスタ値を更新すると共に、前記ダミー文字に対応する暗号化データを破棄し、
前記ダミー文字の暗号化によって前記レジスタ値が更新された後、前記暗号利用モードに従い、前記レジスタ値を用いた文字の暗号化と暗号化処理で得られる値を用いた前記レジスタ値の更新とを繰り返すことで、暗号化単位間に依存関係がある暗号化データを生成し暗号文として出力する、
ことを特徴とする暗号処理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は暗号処理プログラムおよび暗号処理方法に関し、特に連鎖機能を有する暗号利用モードを用いて暗号処理を行う暗号処理プログラムおよび暗号処理方法に関する。
【背景技術】
【０００２】
現在、通信内容や蓄積データの秘密保持のため、暗号技術が広く利用されている。ここで、暗号方式には、公開鍵暗号方式と共通鍵暗号方式との２種類がある。公開鍵暗号方式は、ペアとなる鍵の一方を暗号化のための公開鍵、他方を復号のための秘密鍵とする方式であり、暗号強度の維持が容易であるという利点がある。共通鍵暗号方式は、暗号化側と復号側とで共有する共通鍵を用いて暗号化／復号を行う方式であり、公開鍵暗号方式と比べて計算量が少ないという利点がある。一般的に、大量のデータを暗号化する必要がある場合、計算量が少ない共通鍵暗号方式が用いられる。共通鍵暗号方式の暗号化アルゴリズムとしては、ＤＥＳ（Data Encryption Standard）やＡＥＳ（Advanced Encryption Standard）などが知られている（例えば、特許文献１参照）。
【０００３】
ここで、多くの暗号化アルゴリズムでは、１回に暗号化できるデータ長が固定されている。例えば、ＤＥＳでは６４ビット、ＡＥＳでは１２８ビットである。そこで、暗号化単位（以下、ブロックという）以上のデータ長の平文を暗号化するために、暗号利用モードが用意されている。暗号利用モードとは、複数のブロックを暗号化する場合の、一連の暗号化処理の手順を定義したものである。最も単純な暗号利用モードの１つとして、ＥＣＢ（Electronic Code Book）モードがある。ＥＣＢモードは、平文をブロック単位に分割し、個々のブロックを独立に暗号化する方法である。しかし、ＥＣＢモードでは、同一の文字列から成るブロックを暗号化すると、暗号化の鍵が同じである限り常に同一の暗号値が生成される。したがって、同じ文字列が何度も出現する平文を暗号化すると、攻撃者に解読のヒントを与えることになり、暗号の安全性が低下するという問題がある。
【０００４】
そこで、長い平文を安全に暗号化するために、連鎖機能を有する暗号利用モードが知られている。連鎖機能を有する暗号利用モードとは、前のブロックの暗号化処理で得られる値を利用して次のブロックを暗号化する方法であり、暗号化したブロック間に依存関係をもたせることができる。先頭ブロックの暗号化では、依存させるべき暗号化処理の結果がないため、初期ベクタと呼ばれる予め設定された初期値を使用する。連鎖機能を有する暗号利用モードを用いることで、平文の途中で一度異なる文字列が出現すれば、それ以降に既出の文字列と同一の文字列が出現しても、前の暗号値と異なる暗号値が生成される。これにより、暗号の安全性低下を防止することができる。連鎖機能を有する暗号利用モードとしては、ＣＢＣ（Cipher Block Chaining）モード、ＣＦＢ（Cipher FeedBack）モード、ＯＦＢ（Output FeedBack）モードなどが知られている。
【特許文献１】特開平８−２２７２６９号公報
【発明の開示】
【発明が解決しようとする課題】
【０００５】
しかし、上記のような既存の暗号利用モードでは、先頭部分が同一になりやすい多数の平文を暗号化すると、暗号強度が低下するという問題がある。例えば、住所を表す平文は、先頭部分に“東京都○○区”などの特定の文字列が出現する確率が高い。このため、住所を表す多数の平文を暗号化すると、個々の平文の暗号化に連鎖機能を有する暗号利用モードを用いても、先頭部分が同一の暗号文が多数生成されてしまう。そして、このように同一になりやすい先頭部分の文字列は推測も容易であるため、平文と暗号文の組を攻撃者に推測されてしまう。このようにして、平文と暗号文の組を取得した攻撃者は、線形解読法などを用いた既知平文攻撃が可能となり、暗号が解読される可能性が高くなる。
【０００６】
本発明はこのような点に鑑みてなされたものであり、先頭部分が同一になりやすい多数の平文を暗号化する場合でも、暗号の安全性が低下することがない暗号処理プログラムおよび暗号処理方法を提供することを目的とする。
【課題を解決するための手段】
【０００７】
本発明では上記課題を解決するために、図１に示すような暗号処理プログラムが提供される。本発明に係る暗号処理プログラムは、平文から暗号文を生成するために、図１に示す暗号化装置１の有する機能をコンピュータに実行させることができる。
【０００８】
暗号化装置１は、暗号化手段１ａ、ダミー文字選択手段１ｂおよび暗号文出力手段１ｃを有する。暗号化手段１ａは、レジスタ値として予め初期ベクタを有しており、暗号元データを取得すると、所定の暗号利用モードに従い、レジスタ値を用いた文字の暗号化と暗号化処理で得られる値を用いたレジスタ値の更新とを繰り返すことで、暗号化単位間に依存関係がある暗号化データを生成する。ダミー文字選択手段１ｂは、平文３が入力されると、平文３の所定位置にある１または２以上の文字をダミー文字として選択し、ダミー文字を暗号元データとして暗号化手段１ａに入力し、得られた暗号化データを破棄する。暗号文出力手段１ｃは、ダミー文字の暗号化によって暗号化手段１ａのレジスタ値が更新されると、その後、平文３を暗号元データとして暗号化手段１ａに入力し、得られた暗号化データを暗号文４として出力する。
【０００９】
このような暗号処理プログラムを実行するコンピュータによれば、ダミー文字選択手段１ｂにより、入力された平文３の所定位置にある１または２以上の文字がダミー文字として選択される。次に、暗号化手段１ａにより、選択されたダミー文字が連鎖機能を有する暗号利用モードに従って暗号化されると共に、予め初期ベクタが設定されたレジスタ値が更新される。その後、暗号化手段１ａにより、更新されたレジスタ値を用いてさらに平文３が暗号化され、暗号文出力手段１ｃにより、暗号化手段１ａによる暗号化処理の結果が暗号文４として出力される。
【００１０】
また、上記課題を解決するために、連鎖機能を有する暗号利用モードを用いて暗号処理を行う暗号処理方法において、平文が入力されると、前記平文の所定位置にある１または２以上の文字をダミー文字として選択し、前記ダミー文字を、所定の前記暗号利用モードに従い、レジスタ値として予め設定された初期ベクタを用いて暗号化し、暗号化処理で得られる値を用いて前記レジスタ値を更新すると共に、前記ダミー文字に対応する暗号化データを破棄し、前記ダミー文字の暗号化によって前記レジスタ値が更新された後、前記暗号利用モードに従い、前記レジスタ値を用いた文字の暗号化と暗号化処理で得られる値を用いた前記レジスタ値の更新とを繰り返すことで、暗号化単位間に依存関係がある暗号化データを生成し暗号文として出力する、ことを特徴とする暗号処理方法が提供される。
【００１１】
このような暗号処理方法によれば、入力された平文３の所定位置にある１または２以上の文字がダミー文字として選択される。次に、選択されたダミー文字が連鎖機能を有する暗号利用モードに従って暗号化されると共に、予め初期ベクタが設定されたレジスタ値が更新される。その後、更新されたレジスタ値を用いてさらに平文３が暗号化され、暗号化処理の結果が暗号文４として出力される。
【発明の効果】
【００１２】
本発明では、入力された平文の所定位置にある文字をダミー文字として選択し、連鎖機能を有する暗号利用モードを用いて、ダミー文字を暗号化した後、入力された平文を続いて暗号化することとした。これにより、平文の暗号化前に初期ベクタが更新され、先頭部分が同一の平文を暗号化しても、対応する暗号文の先頭部分は同一にならない。したがって、攻撃者が平文を推測するのを困難にし、暗号の安全性低下を防止することができる。
【発明を実施するための最良の形態】
【００１３】
以下、本発明の実施の形態を図面を参照して説明する。
図１は、本実施の形態の概要を示す図である。図１に示すように、本実施の形態では、平文３を暗号化装置１で暗号化し暗号文４を出力する。また、暗号化装置１で暗号化した暗号文５を復号装置２で復号し平文６を出力する。
【００１４】
暗号化装置１は、暗号化手段１ａ、ダミー文字選択手段１ｂ、暗号文出力手段１ｃおよび順序変換手段１ｄを有する。
暗号化手段１ａは、レジスタ値として予め初期ベクタを有している。レジスタ値は、暗号化処理の開始時に毎回初期化され、初期ベクタが設定される。暗号化手段１ａは、暗号元データを取得すると、所定の連鎖機能を有する暗号利用モードに従い、レジスタ値を用いて暗号化処理を行う。具体的には、暗号元データの暗号化単位毎の暗号化と、暗号化処理で得られる値を用いたレジスタ値の更新とを繰り返す。暗号利用モードとしては、例えば、ＣＢＣモード、ＣＦＢモード、ＯＦＢモードのいずれか１つを用いる。これにより、暗号化単位間に依存関係がある暗号化データが生成される。
【００１５】
順序変換手段１ｄは、平文３が入力されると、平文３の文字順序を変換して新たな平文を生成する。具体的には、順序変換手段１ｄは、入力された平文３を先頭と最後尾とが連続した循環文字列とみなし、循環文字列上の１文字を新たな先頭に指定する。そして、順序変換手段１ｄは、指定した新たな先頭から始まる文字列を新たな平文として出力する。
【００１６】
ダミー文字選択手段１ｂは、順序変換手段１ｄから新たな平文が入力されると、新たな平文の所定位置にある１または２以上の文字をダミー文字として選択する。例えば、新たな平文の最後から３番目の文字をダミー文字として選択する。そして、ダミー文字選択手段１ｂは、選択したダミー文字を暗号元データとして暗号化手段１ａに入力する。ダミー文字が入力された暗号化手段１ａは、ダミー文字を暗号化する。この暗号化処理の過程で、初期ベクタが設定されたレジスタ値が更新される。ダミー文字選択手段１ｂは、暗号化手段１ａからダミー文字に対応する暗号化データを取得すると、これを破棄する。
【００１７】
暗号文出力手段１ｃは、ダミー文字の暗号化によって暗号化手段１ａのレジスタ値が更新されると、その後、新たな平文を暗号元データとして暗号化手段１ａに入力する。新たな平文が入力された暗号化手段１ａは、更新されたレジスタ値に依存させて、新たな平文を暗号化する。暗号文出力手段１ｃは、暗号化手段１ａから新たな平文に対応する暗号化データを取得すると、これを平文３に対する暗号文４として出力する。
【００１８】
復号装置２は、復号手段２ａ、ダミー暗号選択手段２ｂ、平文出力手段２ｃおよび順序再生手段２ｄを有する。
復号手段２ａは、レジスタ値として予め暗号化手段１ａと同一の初期ベクタを有している。レジスタ値は、復号処理の開始時に毎回初期化され、初期ベクタが設定される。復号手段２ａは、暗号化データを取得すると、暗号化手段１ａで用いたものと同一の暗号利用モードに従い、レジスタ値を用いて復号処理を行う。具体的には、暗号化データの暗号化単位毎の復号と、復号処理で得られる値を用いたレジスタ値の更新とを繰り返す。これにより、暗号化単位間に依存関係のある暗号化データを復号した復号データが生成される。
【００１９】
ダミー暗号選択手段２ｂは、暗号化装置１で暗号化した暗号文５が入力されると、暗号文５の所定位置にある１または２以上の暗号値をダミー暗号として選択する。ここでいう所定位置とは、ダミー文字選択手段１ｂで選択したダミー文字に対応する位置である。そして、ダミー暗号選択手段２ｂは、選択したダミー暗号を暗号化データとして復号手段２ａに入力する。ダミー暗号が入力された復号手段２ａは、ダミー暗号を復号する。この復号処理の過程で、初期ベクタが設定されたレジスタ値が更新される。ダミー暗号選択手段２ｂは、復号手段２ａからダミー暗号に対応する復号データを取得すると、これを破棄する。
【００２０】
平文出力手段２ｃは、ダミー暗号の復号によって復号手段２ａのレジスタ値が更新されると、その後、暗号文５を暗号元データとして復号手段２ａに入力する。暗号文５が入力された復号手段２ａは、更新されたレジスタ値に依存させて、暗号文５を復号する。平文出力手段２ｃは、復号手段２ａから暗号文５に対応する復号データを取得すると、順序変換された平文として出力する。
【００２１】
順序再生手段２ｄは、平文出力手段２ｃから順序変換された平文が入力されると、文字順序を再生して平文６を生成する。具体的には、順序再生手段２ｄは、順序変換された平文を先頭と最後尾とが連続した循環文字列とみなし、順序変換手段１ｄと逆の手順で、文字順を再生する。これにより、暗号文５に対する平文６が出力される。ここで、暗号文４と暗号文５とが同一であれば、平文３と同一の平文６が再生される。
【００２２】
なお、順序変換手段１ｄにおける新たな先頭の指定方法と、ダミー文字選択手段１ｂにおけるダミー文字の指定方法については、暗号化装置１と復号装置２との間で予め指定方法を決めておけばよい。または、毎回異なる指定方法を採用する場合、暗号化装置１から復号装置２へ暗号文を送信する前に、別手段で、上記指定方法の情報を送信するようにしてもよい。または、送信する暗号文に、上記指定方法の情報を含めるようにしてもよい。
【００２３】
このような暗号化装置１によれば、順序変換手段１ｄにより、入力された平文３の文字順序が変換され新たな平文が生成される。次に、ダミー文字選択手段１ｂにより、新たな平文の所定位置にある１または２以上の文字がダミー文字として選択され、初期ベクタが設定されたレジスタ値を有する暗号化手段１ａにより、ダミー文字が暗号化される。そして、暗号化手段１ａにより、更新されたレジスタ値を用いてさらに新たな平文が暗号化され、暗号文出力手段１ｃにより暗号文４が出力される。
【００２４】
また、このような復号装置２によれば、ダミー暗号選択手段２ｂにより、入力された暗号文５の所定位置にある１または２以上の暗号値がダミー暗号として選択され、初期ベクタが設定されたレジスタ値を有する復号手段２ａにより、ダミー暗号が復号される。次に、復号手段２ａにより、更新されたレジスタ値を用いてさらに暗号文５が復号され、平文出力手段２ｃにより順序変換された平文が出力される。そして、順序再生手段２ｄにより、文字列の順序が再生されて平文６が出力される。
【００２５】
これにより、先頭部分が同一の平文を多数暗号化する場合でも、平文に対して文字列の順序変換が行われるため、暗号文の先頭部分が同一になる可能性を低くできる。さらに、ダミー文字の暗号化によって毎回初期ベクタが更新されるため、順序変換した平文の先頭部分が同一になったとしても、対応する暗号文の先頭部分は同一にならない。したがって、攻撃者が多数の暗号文から平文を推測するのを困難にし、暗号の安全性低下を防止することができる。
【００２６】
このような暗号化装置１および復号装置２は、例えば、データベースに格納するデータの暗号化および復号に利用できる。すなわち、データベースを構築したストレージデバイスに対する不正アクセスや、ストレージデバイスの盗難による情報の漏洩を防止するには、各データを暗号化して格納することが望まれる。ここで、データベースには、住所や電話番号など先頭部分が同一になりやすい文字データを大量に格納することがある。この場合、従来の連鎖機能をもつ暗号利用モードを用いても、先頭部分が同一である暗号文が多数出現することになり、暗号解読の手掛かりとなってしまうおそれがある。
【００２７】
そこで、データベースに格納する文字データに対する暗号処理を例に、本発明の実施の形態を具体的に説明する。
［第１の実施の形態］
図２は、本実施の形態のシステム構成を示す図である。図２に示すデータベースシステムは、データベースに格納する文字データに対して暗号処理を行うものである。本実施の形態のデータベースシステムは、サーバ１００、データベース１１０、クライアント２１およびネットワーク１０で構成される。
【００２８】
クライアント２１は、ネットワーク１０を介してサーバ１００と接続されている。クライアント２１は、ユーザが使用するコンピュータである。サーバ１００は、データベース１１０と接続されている。サーバ１００は、データベース１１０の管理機能を有するコンピュータである。データベース１１０には、文字データが暗号化されて格納されている。
【００２９】
クライアント２１は、データベース１１０に格納されたデータを利用する場合、ネットワーク１０を通じてサーバ１００に対してデータ処理の要求を行う。サーバ１００は、クライアント２１からの要求に応じて、データベース１１０に格納されたデータの処理を行う。ここで、サーバ１００は、データ更新の場合には文字データを暗号化してデータベース１１０に格納し、データ検索の場合には取得した暗号文を復号してクライアント２１に応答する。
【００３０】
このように、サーバ１００が文字データの暗号化および復号の処理を行い、クライアント２１とデータベース１１０との間でデータを中継する。なお、サーバ１００とクライアント２１との間の通信も、ＤＥＳやＡＥＳ等の暗号技術を用いて暗号化して行うことが可能である。
【００３１】
図３は、サーバのハードウェア構成を示す図である。サーバ１００は、ＣＰＵ（Central Processing Unit）１０１によって装置全体が制御されている。ＣＰＵ１０１には、バス１０８を介してＲＡＭ（Random Access Memory）１０２、ハードディスクドライブ（ＨＤＤ:Hard Disk Drive）１０３、グラフィック処理装置１０４、入力インタフェース１０５、通信インタフェース１０６およびストレージデバイスインタフェース１０７が接続されている。
【００３２】
ＲＡＭ１０２には、ＣＰＵ１０１に実行させるＯＳ（Operating System）のプログラムやアプリケーションプログラムの少なくとも一部が一時的に格納される。また、ＲＡＭ１０２には、ＣＰＵ１０１による処理に必要な各種データが格納される。ＨＤＤ１０３には、ＯＳやアプリケーションプログラムが格納される。
【００３３】
グラフィック処理装置１０４には、モニタ１１が接続されている。グラフィック処理装置１０４は、ＣＰＵ１０１からの命令に従って、画像をモニタ１１の画面に表示させる。入力インタフェース１０５には、キーボード１２とマウス１３とが接続されている。入力インタフェース１０５は、キーボード１２やマウス１３から送られてくる信号を、バス１０８を介してＣＰＵ１０１に送信する。
【００３４】
通信インタフェース１０６は、ネットワーク１０に接続されている。通信インタフェース１０６は、ネットワーク１０を介して、他のコンピュータとの間でデータの送受信を行う。ストレージデバイスインタフェース１０７は、データベース１１０に対してデータの入出力を行う通信インタフェースである。
【００３５】
以上のようなハードウェア構成によって、本実施の形態の処理機能を実現することができる。なお、図３には、サーバ１００のハードウェア構成を示したが、クライアント２１も同様のハードウェアで実現できる。
【００３６】
図４は、第１の実施の形態のサーバの機能例を示すブロック図である。サーバ１００は、データベース管理部１２０、初期値記憶部１３１、共通鍵記憶部１３２、ダミー位置記憶部１３３、暗号化部１４０および復号部１５０を有している。
【００３７】
データベース管理部１２０は、クライアント２１からの要求に応じてデータベース１１０内のデータの入出力を行う。ここで、データベース１１０に対して文字データを入力する際には、データベース管理部１２０は、暗号化部１４０を介してデータベース１１０へ文字データを書き込む。また、データベース１１０から文字データを取得し出力する際には、データベース管理部１２０は、復号部１５０を介してデータベース１１０内の文字データを取得する。
【００３８】
初期値記憶部１３１は、暗号化部１４０および復号部１５０が暗号処理で用いる初期ベクタを記憶する。共通鍵記憶部１３２は、暗号化部１４０および復号部１５０が暗号処理で用いる共通鍵を記憶する。ダミー位置記憶部１３３は、暗号化部１４０がダミー文字として選択する文字および復号部１５０がダミー暗号として選択する暗号値の位置を指定した位置情報を記憶する。例えば、最後から３番目の文字または暗号値を、ダミー文字またはダミー暗号として用いるという情報を記憶する。
【００３９】
暗号化部１４０は、データベース管理部１２０から受け取った文字データを暗号化し、データベース１１０に格納する。暗号化に際しては、初期値記憶部１３１、共通鍵記憶部１３２およびダミー位置記憶部１３３を参照する。
【００４０】
復号部１５０は、データベース管理部１２０からの要求に応じてデータベース１１０から暗号化された文字データを取得し、取得した文字データを復号する。そして、復号部１５０は、復号した文字データをデータベース管理部１２０に渡す。復号に際しては、初期値記憶部１３１、共通鍵記憶部１３２およびダミー位置記憶部１３３を参照する。
【００４１】
次に、暗号化部１４０の暗号化処理の機能について詳細に説明する。以下、暗号利用モードとして、まずＣＦＢモードを用いた場合について説明し、続いてＣＦＢモードに代えてＯＦＢモードを用いた場合の変形例を説明する。なお、第１の実施の形態では、暗号化単位を１文字（日本語の場合、データ長が１６ビット）としている。
【００４２】
図５は、第１の実施の形態の暗号化部の機能例を示すブロック図である。図５に示す暗号化部１４０は、ＣＦＢモードを用いたものである。暗号化部１４０は、順序変換部１４１、シフトレジスタ１４２、暗号化処理部１４３、暗号データ記憶部１４４、排他的論理和演算部１４５、ダミー文字選択部１４６および暗号文出力部１４７を有している。
【００４３】
順序変換部１４１は、データベース管理部１２０から文字データとして平文３１が入力されると、平文３１の文字順序を変換して新たな平文を生成する。具体的には、順序変換部１４１は、入力された平文３１を先頭と最後尾とが連続した循環文字列とみなし、循環文字列上で先頭文字と２番目以降の文字を辿る回転方向とを指定する。これにより、順序変換した文字列が生成される。そして、順序変換部１４１は、順序変換した文字列の先頭に、先頭文字と回転方向とを指定した指定情報を付加し、新たな平文としてダミー文字選択部１４６に通知する。
【００４４】
シフトレジスタ１４２は、排他的論理和演算部１４５から演算結果が出力される毎に、所定のビット数だけデータをシフトすることができるレジスタである。第１の実施の形態では、シフトレジスタ１４２内のデータが毎回左に１文字分ずつシフトし、排他的論理和演算部１４５の演算結果が右側に格納される。暗号化処理を開始する際には、初期値記憶部１３１に格納されている初期ベクタがシフトレジスタ１４２に設定される。
【００４５】
暗号化処理部１４３は、シフトレジスタ１４２に設定された値を、共通鍵記憶部１３２に格納されている共通鍵を用いて暗号化する。暗号化処理部１４３で行う暗号化処理の暗号化アルゴリズムとしては、例えば、ＤＥＳやＡＥＳを用いることができる。そして、暗号化処理部１４３は、暗号化処理の結果を暗号データ記憶部１４４に格納する。
【００４６】
排他的論理和演算部１４５は、入力される文字データと、暗号データ記憶部１４４の先頭から１文字分のデータとの排他的論理和を演算する。そして、排他的論理和演算部１４５は、演算結果を出力すると共にシフトレジスタ１４２の入力として与える。
【００４７】
ダミー文字選択部１４６は、順序変換部１４１から新たな平文を取得すると、ダミー位置記憶部１３３に格納されている位置情報を取得し、位置情報で指定される文字をダミー文字として選択する。そして、ダミー文字選択部１４６は、選択したダミー文字を排他的論理和演算部１４５に入力する。これにより、排他的論理和演算部１４５によってダミー文字に対応する暗号値が演算され出力されると共に、出力される暗号値を用いてシフトレジスタ１４２のデータが更新される。
【００４８】
その後、ダミー文字選択部１４６は、取得した暗号値を破棄すると共に、順序変換部１４１から取得した新たな平文を暗号文出力部１４７に通知する。なお、ダミー文字選択部１４６は、ダミー文字として２文字以上を選択し、連続的に排他的論理和演算部１４５に入力するようにしてもよい。
【００４９】
暗号文出力部１４７は、ダミー文字選択部１４６から新たな平文を取得すると、これを排他的論理和演算部１４５に１文字ずつ入力する。これにより、排他的論理和演算部１４５による演算と、シフトレジスタ１４２のデータの更新とが交互に行われ、新たな平文の１文字に対応する暗号値が順次出力される。そして、暗号文出力部１４７は、新たな平文に対応する全ての暗号値を取得すると、これを平文３１に対する暗号文３２として出力し、データベース１１０に格納する。
【００５０】
図６は、順序変換処理の概要を示す図である。順序変換部１４１は、入力された平文３１を、図６に示すような循環文字列とみなす。すなわち、平文３１がｎ文字（ｎは自然数）で構成されるとき、先頭文字Ｄ１と最後尾文字Ｄｎとが連続しているとみなす。ここで、順序変換部１４１は、循環文字列の中の任意の１文字Ｄｋ（ｋは１以上ｎ以下の自然数）を、新たな先頭文字に指定する。
【００５１】
さらに、順序変換部１４１は、指定した先頭文字から２番目以降の文字を辿る回転方向（順方向／逆方向）を指定する。例えば、文字Ｄｋから逆方向を指定した場合、Ｄｋ，Ｄｋ−１，・・・，Ｄ１，Ｄｎ，・・・，Ｄｋ＋１という文字列が得られる。このように文字列を順序変換することで、先頭部分が同一である文字列の出現頻度を低くすることができる。また、循環文字列の回転を利用して順序変換することで、順序を再現するのに必要な設定情報が少なくて済む。
【００５２】
図７は、第１の実施の形態の暗号化処理の進行例を示す図である。図７に示す例は、１文字のダミー文字Ｄ１と、それに続く平文の３文字Ｄ２，Ｄ３，Ｄ４とを、ＣＦＢモードで暗号化するものである。
【００５３】
第１の状態［ＳＴ１１］には、ダミー文字Ｄ１に対する暗号化処理の流れが示されている。このとき、シフトレジスタ１４２には初期ベクタが設定されている。そして、暗号化処理が開始されると、まず、暗号化処理部１４３によってシフトレジスタ１４２内の値が暗号化され、暗号データ記憶部１４４に格納される。このとき暗号化されたデータの先頭１文字分のデータがＸ１である。次に、排他的論理和演算部１４５によって、暗号データ記憶部１４４内の先頭１文字分のデータＸ１とダミー文字Ｄ１との排他的論理和が計算され、演算結果として暗号値Ｃ１が得られる。
【００５４】
第２の状態［ＳＴ１２］には、文字Ｄ２に対する暗号化処理の流れが示されている。このとき、シフトレジスタ１４２は左に１文字分シフトされ、右に前回の演算結果Ｃ１が格納されている。この状態で、暗号化処理部１４３によってシフトレジスタ１４２内の値が暗号化され、暗号データ記憶部１４４に格納される。このとき暗号化されたデータの先頭１文字分のデータがＸ２である。次に、排他的論理和演算部１４５によって、暗号データ記憶部１４４内の先頭１文字分のデータＸ２と文字Ｄ２との排他的論理和が計算され、演算結果として暗号値Ｃ２が得られる。
【００５５】
以後同様に、文字Ｄ３，Ｄ４の暗号化が順次行われる。第３の状態［ＳＴ１３］には、文字Ｄ３に対する暗号化処理の流れが示されている。この例では、Ｘ３とＤ３との排他的論理和の演算結果として暗号値Ｃ３が得られている。第４の状態［ＳＴ１４］には、文字Ｄ４に対する暗号化処理の流れが示されている。この例では、Ｘ４とＤ４との排他的論理和の演算結果として暗号値Ｃ４が得られている。
【００５６】
以上の処理によって得られた暗号値Ｃ２，Ｃ３，Ｃ４の列が、暗号文３２として暗号文出力部１４７によって出力される。
次に、暗号利用モードとしてＯＦＢモードを用いた場合の暗号化処理について説明する。
【００５７】
図８は、第１の実施の形態の暗号化部の他の機能例を示すブロック図である。図８に示す暗号化部１４０ａは、ＯＦＢモードを用いたものである。暗号化部１４０ａは、順序変換部１４１、シフトレジスタ１４２ａ、暗号化処理部１４３、暗号データ記憶部１４４、排他的論理和演算部１４５、ダミー文字選択部１４６および暗号文出力部１４７を有している。暗号化部１４０と同一の符号を付した機能ブロックは、それぞれ同一の機能を有するため、説明を省略する。
【００５８】
シフトレジスタ１４２ａは、排他的論理和演算部１４５から演算結果が出力される毎に、データを左に１文字分シフトし、暗号データ記憶部１４４の先頭１文字分のデータを右側に格納する。このようにして更新されたデータを用いて、暗号化処理部１４３による次の暗号化処理が行われる。
【００５９】
上記のように、ＯＦＢモードでは、シフトレジスタの右側に格納されるデータがＣＦＢモードとは異なる。
図９は、第１の実施の形態の暗号化処理の他の進行例を示す図である。図９に示す例は、図７の例と同様の文字を、ＯＦＢモードで暗号化するものである。
【００６０】
第１の状態［ＳＴ２１］には、ダミー文字Ｄ１に対する暗号化処理の流れが示されている。このとき、シフトレジスタ１４２ａには初期ベクタが設定されている。そして、暗号化処理が開始されると、まず、暗号化処理部１４３によってシフトレジスタ１４２ａ内の値が暗号化され、暗号データ記憶部１４４に格納される。このとき暗号化されたデータの先頭１文字分のデータがＸ１である。次に、排他的論理和演算部１４５によって、暗号データ記憶部１４４内の先頭１文字分のデータＸ１とダミー文字Ｄ１との排他的論理和が計算され、演算結果として暗号値Ｃ１が得られる。
【００６１】
第２の状態［ＳＴ２２］には、文字Ｄ２に対する暗号化処理の流れが示されている。このとき、シフトレジスタ１４２ａは左に１文字分シフトされ、右に暗号データ記憶部１４４内の先頭１文字分のデータＸ１が格納されている。この状態で、暗号化処理部１４３によってシフトレジスタ１４２ａ内の値が暗号化され、暗号データ記憶部１４４に格納される。このとき暗号化されたデータの先頭１文字分のデータがＸ２である。次に、排他的論理和演算部１４５によって、暗号データ記憶部１４４内の先頭１文字分のデータＸ２と文字Ｄ２との排他的論理和が計算され、演算結果として暗号値Ｃ２が得られる。
【００６２】
以後同様に、文字Ｄ３，Ｄ４の暗号化が順次行われる。第３の状態［ＳＴ２３］には、文字Ｄ３に対する暗号化処理の流れが示されている。この例では、Ｘ３とＤ３との排他的論理和の演算結果として暗号値Ｃ３が得られている。第４の状態［ＳＴ２４］には、文字Ｄ４に対する暗号化処理の流れが示されている。この例では、Ｘ４とＤ４との排他的論理和の演算結果として暗号値Ｃ４が得られている。
【００６３】
次に、復号部１５０の復号処理の機能について詳細に説明する。以下、暗号利用モードとして、まずＣＦＢモードの場合について説明し、続いてＯＦＢモードの場合について説明する。
【００６４】
図１０は、第１の実施の形態の復号部の機能例を示すブロック図である。図１０に示す復号部１５０は、ＣＦＢモードを用いて暗号化された暗号文を復号するものである。復号部１５０は、シフトレジスタ１５１、暗号化処理部１５２、暗号データ記憶部１５３、排他的論理和演算部１５４、ダミー暗号選択部１５５、平文出力部１５６および順序再生部１５７を有している。
【００６５】
シフトレジスタ１５１は、排他的論理和演算部１５４から演算結果が出力される毎に、所定のビット数分のデータをシフトすることができるレジスタである。第１の実施の形態では、シフトレジスタ１５１内のデータが毎回左に１文字分ずつシフトし、排他的論理和演算部１５４に入力される暗号値が右側に格納される。暗号化処理を開始する際には、初期値記憶部１３１に格納されている初期ベクタがシフトレジスタ１５１に設定される。
【００６６】
暗号化処理部１５２は、シフトレジスタ１５１に設定された値を、共通鍵記憶部１３２に格納されている共通鍵を用いて暗号化する。暗号化処理部１５２で行う暗号化処理の暗号化アルゴリズムは、暗号化部１４０で用いたものと同一とする。そして、暗号化処理部１５２は、暗号化処理の結果を暗号データ記憶部１５３に格納する。
【００６７】
排他的論理和演算部１５４は、入力される暗号値と、暗号データ記憶部１５３の先頭から１文字分のデータとの排他的論理和を演算する。そして、排他的論理和演算部１５４は、演算結果を出力すると共に、入力された暗号値をシフトレジスタ１５１の入力として与える。
【００６８】
ダミー暗号選択部１５５は、データベース管理部１２０からの要求に応じてデータベース１１０から暗号文３３を取得すると、ダミー位置記憶部１３３に格納されている位置情報を取得し、位置情報で指定される暗号値をダミー暗号として選択する。そして、ダミー暗号選択部１５５は、選択したダミー暗号を排他的論理和演算部１５４に入力する。これにより、排他的論理和演算部１５４によってダミー暗号に対応する文字データが演算され出力されると共に、ダミー暗号を用いてシフトレジスタ１５１のデータが更新される。
【００６９】
その後、ダミー暗号選択部１５５は、取得した文字データを破棄すると共に、暗号文３３を平文出力部１５６に通知する。
平文出力部１５６は、ダミー暗号選択部１５５から暗号文３３を取得すると、これを排他的論理和演算部１５４に１文字分ずつ入力する。これにより、排他的論理和演算部１５４による演算と、シフトレジスタ１５１のデータの更新とが交互に行われ、暗号文３３に対応する文字データが１文字ずつ出力される。そして、平文出力部１５６は、暗号文３３に対応する全ての文字データを取得すると、この文字列を順序再生部１５７に通知する。
【００７０】
順序再生部１５７は、平文出力部１５６から文字列を取得すると、暗号化部１４０の順序変換部１４１で変換された文字順序を逆変換して、平文３４を再生する。具体的には、順序再生部１５７は、文字列の先頭に付加された指定情報を抽出し、先頭文字の位置と回転方向とを把握する。そして、順序再生部１５７は、残りの文字列を先頭と最後尾とが連続した循環文字列とみなし、順序変換部１４１と逆の操作を行う。これにより、文字列の文字順序が再生される。そして、順序再生部１５７は、文字順序を再生した平文３４を、データベース管理部１２０に渡す。
【００７１】
図１１は、第１の実施の形態の復号処理の進行例を示す図である。図１１に示す例は、１文字分のダミー暗号Ｃ１と、それに続く暗号文の３つの暗号値Ｃ２，Ｃ３，Ｃ４とを、ＣＦＢモードで復号するものである。
【００７２】
第１の状態［ＳＴ３１］には、ダミー暗号Ｃ１に対する復号処理の流れが示されている。このとき、シフトレジスタ１５１には初期ベクタが設定されている。そして、復号処理が開始されると、まず、暗号化処理部１５２によってシフトレジスタ１５１内の値が暗号化され、暗号データ記憶部１５３に格納される。このとき暗号化されたデータの先頭１文字分のデータがＸ１である。次に、排他的論理和演算部１５４によって、暗号データ記憶部１５３内の先頭１文字分のデータＸ１とダミー暗号Ｃ１との排他的論理和が計算され、演算結果として文字Ｄ１が得られる。
【００７３】
第２の状態［ＳＴ３２］には、暗号値Ｃ２に対する復号処理の流れが示されている。このとき、シフトレジスタ１５１は左に１文字分シフトされ、右に前回入力された暗号値Ｃ１が格納されている。この状態で、暗号化処理部１５２によってシフトレジスタ１５１内の値が暗号化され、暗号データ記憶部１５３に格納される。このとき暗号化されたデータの先頭１文字分のデータがＸ２である。次に、排他的論理和演算部１５４によって、暗号データ記憶部１５３内の先頭１文字分のデータＸ２と暗号値Ｃ２との排他的論理和が計算され、演算結果として文字Ｄ２が得られる。
【００７４】
以後同様に、暗号値Ｃ３，Ｃ４の復号が順次行われる。第３の状態［ＳＴ３３］には、暗号値Ｃ３に対する復号処理の流れが示されている。この例では、Ｘ３とＣ３との排他的論理和の演算結果として文字Ｄ３が得られている。第４の状態［ＳＴ３４］には、暗号値Ｃ４に対する復号処理の流れが示されている。この例では、Ｘ４とＣ４との排他的論理和の演算結果として文字Ｄ４が得られている。
【００７５】
以上の処理によって得られた文字Ｄ２，Ｄ３，Ｄ４の列が、文字列として平文出力部１５６によって順序再生手段１５７に通知される。
次に、暗号利用モードとしてＯＦＢモードを用いた場合の復号処理について説明する。
【００７６】
図１２は、第１の実施の形態の復号部の他の機能例を示すブロック図である。図１２に示す復号部１５０ａは、ＯＦＢモードを用いたものである。復号部１５０ａは、シフトレジスタ１５１ａ、暗号化処理部１５２、暗号データ記憶部１５３、排他的論理和演算部１５４、ダミー暗号選択部１５５、平文出力部１５６および順序再生部１５７を有している。復号部１５０と同一の符号を付した機能ブロックは、それぞれ同一の機能を有するため、説明を省略する。
【００７７】
シフトレジスタ１５１ａは、排他的論理和演算部１５４から演算結果が出力される毎に、データを左に１文字分シフトし、暗号データ記憶部１５３の先頭１文字分のデータを右側に格納する。このようにして更新されたデータを用いて、暗号化処理部１５２による次の暗号化処理が行われる。
【００７８】
図１３は、第１の実施の形態の復号処理の他の進行例を示す図である。図１３に示す例は、図１１の例と同様の暗号値を、ＯＦＢモードで復号するものである。
第１の状態［ＳＴ４１］には、ダミー暗号Ｃ１に対する復号処理の流れが示されている。このとき、シフトレジスタ１５１ａには初期ベクタが設定されている。そして、復号処理が開始されると、まず、暗号化処理部１５２によってシフトレジスタ１５１ａ内の値が暗号化され、暗号データ記憶部１５３に格納される。このとき暗号化されたデータの先頭１文字分のデータがＸ１である。次に、排他的論理和演算部１５４によって、暗号データ記憶部１５３内の先頭１文字分のデータＸ１とダミー暗号Ｃ１との排他的論理和が計算され、演算結果として文字Ｄ１が得られる。
【００７９】
第２の状態［ＳＴ４２］には、暗号値Ｃ２に対する復号処理の流れが示されている。このとき、シフトレジスタ１５１ａは左に１文字分シフトされ、右に暗号データ記憶部１５３内の先頭１文字分のデータＸ１が格納されている。この状態で、暗号化処理部１５２によってシフトレジスタ１５１ａ内の値が暗号化され、暗号データ記憶部１５３に格納される。このとき暗号化されたデータの先頭１文字分のデータがＸ２である。次に、排他的論理和演算部１５４によって、暗号データ記憶部１５３内の先頭１文字分のデータＸ２と暗号値Ｃ２との排他的論理和が計算され、演算結果として文字Ｄ２が得られる。
【００８０】
以後同様に、暗号値Ｃ３，Ｃ４の復号が順次行われる。第３の状態［ＳＴ４３］には、暗号値Ｃ３に対する復号処理の流れが示されている。この例では、Ｘ３とＣ３との排他的論理和の演算結果として文字Ｄ３が得られている。第４の状態［ＳＴ４４］には、暗号値Ｃ４に対する復号処理の流れが示されている。この例では、Ｘ４とＣ４との排他的論理和の演算結果として文字Ｄ４が得られている。
【００８１】
このような暗号化処理および復号処理を行うサーバを用いることで、先頭部分が同一になりやすい文字データを多数暗号化する場合でも、文字列の順序変換が行われるため、暗号文の先頭部分が同一になる可能性を低くできる。また、ダミー文字の暗号化によって毎回初期ベクタが更新されるため、順序変換した文字列の先頭部分が同一になったとしても、対応する暗号文の先頭部分は同一にならない。したがって、データベースに格納された多数の暗号文から元の文字列を推測するのを困難にし、暗号の安全性低下を効率的に防止することができる。
【００８２】
［第２の実施の形態］
次に、第２の実施の形態について説明する。第２の実施の形態に係るデータベースシステムは、第１の実施の形態における暗号化処理および復号処理を、複数の文字について並列処理できるようしたものである。第２の実施の形態のシステム構成は、第１の実施の形態のものと同様である。以下、暗号化処理を行う暗号化部および復号処理を行う復号部の機能の詳細について、第１の実施の形態と異なる部分を中心に説明する。
【００８３】
図１４は、第２の実施の形態の暗号化部の機能例を示すブロック図である。図１４に示す暗号化部１４０ｂは、図５に示した第１の実施の形態の暗号化部１４０に対応するものであり、ＣＦＢモードを用いている。なお、暗号化部１４０の順序変換部１４１、ダミー文字選択部１４６、暗号文出力部１４７に相当する機能は、第１の実施の形態と同様であるため、機能ブロックの記載を省略している。
【００８４】
シフトレジスタ１４２ｂは、所定のビット数ずつデータをシフトすることができるレジスタである。暗号化処理の開始時には、初期値記憶部１３１に予め格納されている初期ベクタが、シフトレジスタ１４２ｂに格納される。その後、９文字分の暗号化が行われる毎に、シフトレジスタ１４２ｂ内の値が、左に１文字分ずつシフトされる。このとき、右端には、排他的論理和演算部１４５ａの演算結果が設定される。
【００８５】
暗号化処理部１４３は、共通鍵記憶部１３２に格納されている共通鍵を用いて、シフトレジスタ１４２ｂ内の値を暗号化する。そして、暗号化処理部１４３は、暗号化処理の結果を暗号データ記憶部１４４ｂに格納する。暗号データ記憶部１４４ｂは、暗号化処理部１４３で暗号化されたデータを記憶する。暗号データ記憶部１４４ｂに格納されたデータは、先頭から１文字分ずつに分割され、それぞれのデータが排他的論理和演算部１４５ａ，１４５ｂ，１４５ｃ，・・・，１４５ｉに入力される。
【００８６】
排他的論理和演算部１４５ａ，１４５ｂ，１４５ｃ，・・・，１４５ｉは、暗号データ記憶部１４４ｂから入力された１文字分のデータと、入力された文字との排他的論理和をそれぞれ演算する。そして、排他的論理和演算部１４５ａ，１４５ｂ，１４５ｃ，・・・，１４５ｉは、それぞれの暗号値を入力文字との対応順序を保持して出力する。
【００８７】
ただし、暗号化処理を行うとき、ダミー文字と平文とは並列処理せずに、ダミー文字を暗号化してシフトレジスタ１４２ｂのデータが更新されてから平文を入力する必要がある。シフトレジスタ１４２ｂのデータが更新されないうちに平文の暗号化を開始すると、最初の数文字の暗号結果をダミー文字に依存させることができず、暗号の安全性を十分に維持できないからである。
【００８８】
図１５は、第２の実施の形態の復号部の機能例を示すブロック図である。図１５に示す復号部１５０ｂは、図１０に示した第１の実施の形態の復号部１５０に対応するものであり、ＣＦＢモードを用いて暗号化された暗号文を復号するものである。なお、復号部１５０のダミー暗号選択部１５５、平文出力部１５６および順序再生部１５７に相当する機能は、第１の実施の形態と同様であるため、機能ブロックの記載を省略している。
【００８９】
シフトレジスタ１５１ｂは、所定のビット数ずつデータをシフトすることができるレジスタである。復号処理の開始時には、初期値記憶部１３１に予め格納されている初期ベクタが、シフトレジスタ１５１ｂに格納される。その後、９文字分の復号が行われる毎に、シフトレジスタ１５１ｂ内の値が、左に１文字分ずつシフトされる。そのとき、右端には、９文字分ずつ入力される暗号値の最初の暗号値が設定される。
【００９０】
暗号化処理部１５２は、共通鍵記憶部１３２に格納されている共通鍵を用いて、シフトレジスタ１５１ｂ内の値を暗号化する。そして、暗号化処理部１５２は、暗号化処理の結果を暗号データ記憶部１５３ｂに格納する。暗号データ記憶部１５３ｂは、暗号化処理部１５２で暗号化されたデータを記憶する。暗号データ記憶部１５３ｂに格納されたデータは、先頭から１文字分ずつに分割され、それぞれのデータが排他的論理和演算部１５４ａ，１５４ｂ，１５４ｃ，・・・，１５４ｉに入力される。
【００９１】
排他的論理和演算部１５４ａ，１５４ｂ，１５４ｃ，・・・，１５４ｉは、暗号データ記憶部１５３ｂから入力された１文字分のデータと、入力された暗号値との排他的論理和をそれぞれ演算する。そして、排他的論理和演算部１５４ａ，１５４ｂ，１５４ｃ，・・・，１５４ｉは、復号されたそれぞれの文字を入力された暗号値との対応順序を保持して出力する。
【００９２】
ただし、暗号化処理と同様、ダミー暗号と暗号文とは並列処理せずに、ダミー暗号を復号してシフトレジスタ１５１ｂのデータが更新されてから暗号文を入力する必要がある。
なお、第２の実施の形態では、並列化する最大文字数を９文字としたが、シフトレジスタ１５１ｂおよび暗号データ記憶部１５３ｂに格納されるデータのビット長を超えない範囲で、任意の文字数の並列化が可能である。また、第２の実施の形態では、ＣＦＢモードを用いた場合の暗号化処理および復号処理について説明したが、第１の実施の形態で示したように、ＯＦＢモードなど他の連鎖機能を有する暗号利用モードを用いてもよい。
【００９３】
このような暗号化処理および復号処理を行うサーバを用いることで、第１の実施の形態のサーバと同様の効果を得られる。さらに、第２の実施の形態のサーバを用いることで、暗号の安全性を低下させることなく暗号化処理および復号処理の並列化ができ、処理を大幅に高速化できる。
【００９４】
［第３の実施の形態］
次に、第３の実施の形態について説明する。第３の実施の形態に係るデータベースシステムは、平文がある文字コード体系で符号化されているとき、入力された平文を別の文字コード体系の文字コードに変換し、変換後の文字コードに対して暗号化処理を行い、暗号結果を元の文字コード体系の文字コードに逆変換するものである。このように、平文の文字コード体系とは異なる文字コード体系を用いて暗号化処理を行う利点は以下の通りである。
【００９５】
文字データは特定の文字コード体系に従って文字が符号化されたものである。例えば、日本語の文字コード体系であるシフトＪＩＳなどでは、かなや漢字１文字が１６ビットで符号化される。ここで、多くの文字コード体系では、文字が割り当てられてない文字コード領域が存在する。例えば、シフトＪＩＳなどの文字コード体系では、２の１６乗（＝６５５３６）個の文字コードを用意できるが、その全てについて実際に文字が割り当てられているわけではない。したがって、文字が割り当てられてない文字コードが文字データ中に出現すると、その文字データは正常な文字データとして取り扱えない。
【００９６】
ところで、文字コードをＤＥＳやＡＥＳなどの暗号化アルゴリズムを用いて暗号化すると、暗号結果は所定のビット長で表現可能な全範囲に分散するため、文字が割り当てられている文字コード領域に暗号化されるように暗号結果の範囲を制限することはできない。したがって、暗号結果をそのままデータベースに格納すると、データベースを管理するプログラムが文字データのみしか扱えない場合、この暗号文を正常に処理できない。
【００９７】
そこで、暗号化処理の前後で文字コードの変換／逆変換を行うことで、暗号結果を、所定のビット長で表現可能な全範囲のうちの特定の範囲に制限することができる。具体的には、平文の文字コード体系のビット長よりも少ないビット長の文字コード体系を用いて暗号化処理を行うようにすればよい。例えば、日本語の文字は１３ビットで表現可能であるため、１６ビットの文字コード体系から１３ビットの文字コード体系に変換し、１３ビット毎に暗号化処理を行えばよい。
【００９８】
図１６は、第３の実施の形態のサーバの機能例を示すブロック図である。図１６のサーバ１００ｃは、図４に示した第１の実施の形態のサーバ１００に対応するものである。データベース管理部１２０、初期値記憶部１３１、共通鍵記憶部１３２およびダミー位置記憶部１３３の機能は、第１の実施の形態のものと同様である。
【００９９】
変換テーブル記憶部１３４は、第１の文字コード体系と第２の文字コード体系との変換／逆変換を行うための変換テーブルを記憶する。変換テーブルには、第１の文字コード体系の文字コード第２の文字コード体系の文字コードとの対応関係が設定されている。すなわち、同一の文字を表す文字コードの組が記憶されている。
【０１００】
暗号化部１４０ｃは、暗号化処理の前後で文字コードの変換／逆変換を行う。復号部１５０ｃは、復号処理の前後で文字コードの変換／逆変換を行う。その他の機能は、第１の実施の形態における暗号化部１４０および復号部１５０のものと同様である。
【０１０１】
図１７は、変換テーブルのデータ構造例を示す図である。変換テーブル１３４ａは、変換テーブル記憶部１３４に格納されている。変換テーブル１３４ａは、第２の文字コード体系における文字コードの順にインデックスが作成され、それぞれのインデックスに対応する第１の文字コード体系の文字コードが格納されている。例えば、１６進数で表したとき、“０”と“８２Ａ０”（あ）、“１”と“８２Ａ２”（い）、“２”と“８２Ａ４”（う）、“３”と“８２Ａ６”（え）、“４”と“８２Ａ８”（お）をそれぞれ対応付ける。文字コードの並び順は、２つの文字コードが一対一に対応している限り、任意の順序で構わない。
【０１０２】
図１８は、第３の実施の形態の暗号化部の機能例を示すブロック図である。暗号化部１４０ｃは、図５に示した第１の実施の形態の暗号化部１４０に対応するものであり、ＣＦＢモードを用いている。暗号化部１４０と同一の符号を付した機能ブロックは、同一の機能を有するものであり、説明を省略する。
【０１０３】
文字コード変換部１４８は、順序変換部１４１から新たな平文を取得すると、変換テーブル記憶部１３４に格納された変換テーブル１３４ａを参照して、第１の文字コード体系で符号化されている新たな平文の各文字コードを、第２の文字コード体系の対応する文字コードに変換する。そして、文字コード変換部１４８は、第２の文字コード体系で符号化された新たな平文を、ダミー文字選択部１４６に入力する。
【０１０４】
排他的論理和演算部１４５は、第２の文字コード体系の文字コードを対象として排他的論理和の演算を行う。すなわち、暗号化単位は、第２の文字コード体系のビット長となる。そして、出力される各暗号値は、第２の文字コード体系のいずれか１つの文字コードと同一の値となる。
【０１０５】
文字コード逆変換部１４９は、暗号文出力部１４８から第２の文字コード体系の文字コードで構成される暗号文を取得すると、変換テーブル記憶部１３４に格納された変換テーブル１３４ａを参照して、取得した暗号文の各文字コードを第１の文字コード体系の対応する文字コードに変換する。そして、第１の文字コード体系の文字コードで構成される暗号文３２ｃを出力する。
【０１０６】
図１９は、第３の実施の形態の復号部の機能例を示すブロック図である。復号部１５０ｃは、図１０に示した第１の実施の形態の復号部１５０に対応するものであり、ＣＦＢモードを用いている。復号部１５０と同一の符号を付した機能ブロックは、同一の機能を有するものであり、説明を省略する。
【０１０７】
文字コード変換部１５８は、暗号化部１４０ｃで暗号化された暗号文３３ｃを取得すると、変換テーブル記憶部１３４に格納された変換テーブル１３４ａを参照して、第１の文字コード体系の文字コードで構成されている暗号文３３ｃの各暗号値を、第２の文字コード体系の対応する文字コードに変換する。そして、文字コード変換部１５８は、第２の文字コード体系の文字コードで構成されている暗号文を、ダミー暗号選択部１５５に入力する。
【０１０８】
排他的論理和演算部１５４は、第２の文字コード体系の文字コードを対象として排他的論理和の演算を行う。すなわち、暗号化単位は、第２の文字コード体系のビット長となる。そして、出力される各文字は、第２の文字コード体系で符号化されたものになる。
【０１０９】
文字コード逆変換部１５９は、平文出力部１５６から第２の文字コード体系で符号化された文字列を取得すると、変換テーブル記憶部１３４に格納された変換テーブル１３４ａを参照して、取得した文字列の各文字コードを第１の文字コード体系の対応する文字コードに変換する。そして、第１の文字コード体系で符号化された文字列を、順序再生部１５７に通知する。
【０１１０】
なお、第３の実施の形態では、ＣＦＢモードを用いた場合の暗号化処理および復号処理について説明したが、第１の実施の形態で示したように、ＯＦＢモードなど他の連鎖機能を有する暗号利用モードを用いてもよい。
【０１１１】
このような暗号化処理および復号処理を行うサーバを用いることで、第１の実施の形態のサーバと同様の効果を得られる。さらに、第３の実施の形態のサーバを用いることで、暗号の安全性を低下させることなく、出力される暗号文の各暗号値を所定の範囲内に制限することができ、さまざまなプログラムで暗号文を扱えるようにできる。また、暗号文のデータ長を平文のデータ長と同一にすることができる。
【０１１２】
なお、上記の処理機能は、コンピュータによって実現することができる。その場合、サーバが有すべき機能の処理内容を記述したプログラムが提供される。そのプログラムをコンピュータで実行することにより、上記処理機能がコンピュータ上で実現される。処理内容を記述したプログラムは、コンピュータで読み取り可能な記録媒体に記録しておくことができる。コンピュータで読み取り可能な記録媒体としては、磁気記録装置、光ディスク、光磁気記録媒体、半導体メモリなどがある。磁気記録装置には、ハードディスク装置（ＨＤＤ）、フレキシブルディスク（ＦＤ）、磁気テープなどがある。光ディスクには、ＤＶＤ（Digital Versatile Disc）、ＤＶＤ−ＲＡＭ、ＣＤ−ＲＯＭ（Compact Disc - Read Only Memory）、ＣＤ−Ｒ（Recordable）／ＲＷ（ReWritable）などがある。光磁気記録媒体には、ＭＯ（Magneto-Optical disk）などがある。
【０１１３】
プログラムを流通させる場合には、例えば、そのプログラムが記録されたＤＶＤ、ＣＤ−ＲＯＭなどの可搬型記録媒体が販売される。また、プログラムをサーバコンピュータの記憶装置に格納しておき、ネットワークを介して、サーバコンピュータから他のコンピュータにそのプログラムを転送することもできる。
【０１１４】
プログラムを実行するコンピュータは、例えば、可搬型記録媒体に記録されたプログラムもしくはサーバコンピュータから転送されたプログラムを、自己の記憶装置に格納する。そして、コンピュータは、自己の記憶装置からプログラムを読み取り、プログラムに従った処理を実行する。なお、コンピュータは、可搬型記録媒体から直接プログラムを読み取り、そのプログラムに従った処理を実行することもできる。また、コンピュータは、サーバコンピュータからプログラムが転送される毎に、逐次、受け取ったプログラムに従った処理を実行することもできる。
【０１１５】
なお、本発明は、上述の実施の形態にのみ限定されるものではなく、本発明の要旨を逸脱しない範囲内において種々の変更を加えることができる。
以上説明した実施の形態の主な技術的特徴は、以下の付記の通りである。
【０１１６】
（付記１）  連鎖機能を有する暗号利用モードを用いて暗号処理を行う暗号処理プログラムにおいて、
コンピュータを、
レジスタ値として予め初期ベクタを有しており、暗号元データを取得すると、所定の前記暗号利用モードに従い、前記レジスタ値を用いた文字の暗号化と暗号化処理で得られる値を用いた前記レジスタ値の更新とを繰り返すことで、暗号化単位間に依存関係がある暗号化データを生成する暗号化手段、
平文が入力されると、前記平文の所定位置にある１または２以上の文字をダミー文字として選択し、前記ダミー文字を暗号元データとして前記暗号化手段に入力し、得られた暗号化データを破棄するダミー文字選択手段、
前記ダミー文字の暗号化によって前記暗号化手段の前記レジスタ値が更新されると、その後、前記平文を暗号元データとして前記暗号化手段に入力し、得られた暗号化データを暗号文として出力する暗号文出力手段、
として機能させることを特徴とする暗号処理プログラム。
【０１１７】
（付記２）  前記暗号化手段は、１つの前記レジスタ値に対して、複数の文字を並列処理で暗号化することを特徴する付記１記載の暗号処理プログラム。
（付記３）  前記コンピュータを、さらに、
前記平文が入力されると、前記平文を先頭と最後尾とが連続した循環文字列とみなし、前記循環文字列上の１文字を新たな先頭に指定し、指定した前記新たな先頭から始まる文字順序が変換された新たな平文を生成する順序変換手段、
として機能させ、
前記ダミー文字選択手段および前記暗号文出力手段は、前記新たな平文を前記平文とみなして暗号化処理を行う、
ことを特徴とする付記１記載の暗号処理プログラム。
【０１１８】
（付記４）  前記順序変換手段は、前記新たな先頭の指定情報を前記新たな平文に付加することを特徴とする付記３記載の暗号処理プログラム。
（付記５）  前記コンピュータを、さらに、
第１の文字コード体系の文字コードと第２の文字コード体系の文字コードとの一対一の対応関係を記憶した文字コード情報記憶手段、
前記第１の文字コード体系で符号化された前記平文が入力されると、前記文字コード情報記憶手段を参照し、前記平文を前記第２の文字コード体系に変換する文字コード変換手段、
前記第２の文字コード体系で符号化された前記暗号文が生成されると、前記文字コード情報記憶手段を参照し、前記暗号文を前記第１の文字コード体系に変換する文字コード逆変換手段、
として機能させ、
前記暗号化手段は、前記第２の文字コード体系の文字コードから成る暗号元データを、前記第２の文字コード体系の文字コードから成る暗号化データに暗号化する、
ことを特徴とする付記１記載の暗号処理プログラム。
【０１１９】
（付記６）  前記コンピュータを、さらに、
前記レジスタ値として予め前記暗号化手段と同一の前記初期ベクタを有しており、暗号化データを取得すると、前記暗号化手段と同一の前記暗号利用モードに従い、前記レジスタ値を用いた暗号値の復号と復号処理で得られる値を用いた前記レジスタ値の更新とを繰り返すことで、復号データを生成する復号手段、
前記暗号文が入力されると、前記暗号文の前記所定位置にある１または２以上の暗号値をダミー暗号として選択し、前記ダミー暗号を暗号化データとして前記復号手段に入力し、得られた復号データを破棄するダミー暗号選択手段、
前記ダミー暗号の復号によって前記復号手段の前記レジスタ値が更新されると、その後、前記暗号文を暗号化データとして前記復号手段に入力し、得られた復号データを前記平文として出力する平文出力手段、
として機能させることを特徴とする付記１記載の暗号処理プログラム。
【０１２０】
（付記７）  連鎖機能を有する暗号利用モードを用いて暗号処理を行う暗号処理方法において、
平文が入力されると、前記平文の所定位置にある１または２以上の文字をダミー文字として選択し、
前記ダミー文字を、所定の前記暗号利用モードに従い、レジスタ値として予め設定された初期ベクタを用いて暗号化し、暗号化処理で得られる値を用いて前記レジスタ値を更新すると共に、前記ダミー文字に対応する暗号化データを破棄し、
前記ダミー文字の暗号化によって前記レジスタ値が更新された後、前記暗号利用モードに従い、前記レジスタ値を用いた文字の暗号化と暗号化処理で得られる値を用いた前記レジスタ値の更新とを繰り返すことで、暗号化単位間に依存関係がある暗号化データを生成し暗号文として出力する、
ことを特徴とする暗号処理方法。
【０１２１】
（付記８）  連鎖機能を有する暗号利用モードを用いて暗号処理を行う暗号処理装置において、
レジスタ値として予め初期ベクタを有しており、暗号元データを取得すると、所定の前記暗号利用モードに従い、前記レジスタ値を用いた文字の暗号化と暗号化処理で得られる値を用いた前記レジスタ値の更新とを繰り返すことで、暗号化単位間に依存関係がある暗号化データを生成する暗号化手段と、
平文が入力されると、前記平文の所定位置にある１または２以上の文字をダミー文字として選択し、前記ダミー文字を暗号元データとして前記暗号化手段に入力し、得られた暗号化データを破棄するダミー文字選択手段と、
前記ダミー文字の暗号化によって前記暗号化手段の前記レジスタ値が更新されると、その後、前記平文を暗号元データとして前記暗号化手段に入力し、得られた暗号化データを暗号文として出力する暗号文出力手段と、
を有することを特徴とする暗号処理装置。
【図面の簡単な説明】
【０１２２】
【図１】本実施の形態の概要を示す図である。
【図２】本実施の形態のシステム構成を示す図である。
【図３】サーバのハードウェア構成を示す図である。
【図４】第１の実施の形態のサーバの機能例を示すブロック図である。
【図５】第１の実施の形態の暗号化部の機能例を示すブロック図である。
【図６】順序変換処理の概要を示す図である。
【図７】第１の実施の形態の暗号化処理の進行例を示す図である。
【図８】第１の実施の形態の暗号化部の他の機能例を示すブロック図である。
【図９】第１の実施の形態の暗号化処理の他の進行例を示す図である。
【図１０】第１の実施の形態の復号部の機能例を示すブロック図である。
【図１１】第１の実施の形態の復号処理の進行例を示す図である。
【図１２】第１の実施の形態の復号部の他の機能例を示すブロック図である。
【図１３】第１の実施の形態の復号処理の他の進行例を示す図である。
【図１４】第２の実施の形態の暗号化部の機能例を示すブロック図である。
【図１５】第２の実施の形態の復号部の機能例を示すブロック図である。
【図１６】第３の実施の形態のサーバの機能例を示すブロック図である。
【図１７】変換テーブルのデータ構造例を示す図である。
【図１８】第３の実施の形態の暗号化部の機能例を示すブロック図である。
【図１９】第３の実施の形態の復号部の機能例を示すブロック図である。
【符号の説明】
【０１２３】
１  暗号化装置
１ａ  暗号化手段
１ｂ  ダミー文字選択手段
１ｃ  暗号文出力手段
１ｄ  順序変換手段
２  復号装置
２ａ  復号手段
２ｂ  ダミー暗号選択手段
２ｃ  平文出力手段
２ｄ  順序再生手段
３，６  平文
４，５  暗号文
【図１】
2008039844.tif 000003
【図２】
2008039844.tif 000004
【図３】
2008039844.tif 000005
【図４】
2008039844.tif 000006
【図５】
2008039844.tif 000007
【図６】
2008039844.tif 000008
【図７】
2008039844.tif 000009
【図８】
2008039844.tif 000010
【図９】
2008039844.tif 000011
【図１０】
2008039844.tif 000012
【図１１】
2008039844.tif 000013
【図１２】
2008039844.tif 000014
【図１３】
2008039844.tif 000015
【図１４】
2008039844.tif 000016
【図１５】
2008039844.tif 000017
【図１６】
2008039844.tif 000018
【図１７】
2008039844.tif 000019
【図１８】
2008039844.tif 000020
【図１９】
2008039844.tif 000021