JP2008152059A - 暗号処理プログラム、暗号処理方法および暗号処理装置 - Google Patents

暗号処理プログラム、暗号処理方法および暗号処理装置 Download PDF

Info

Publication number
JP2008152059A
JP2008152059A JP2006340627A JP2006340627A JP2008152059A JP 2008152059 A JP2008152059 A JP 2008152059A JP 2006340627 A JP2006340627 A JP 2006340627A JP 2006340627 A JP2006340627 A JP 2006340627A JP 2008152059 A JP2008152059 A JP 2008152059A
Authority
JP
Japan
Prior art keywords
encryption
character
conversion
plaintext
character code
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
JP2006340627A
Other languages
English (en)
Other versions
JP5060119B2 (ja
Inventor
Shigeyuki Okubo
重行 大久保
Ryota Akiyama
良太 秋山
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Fujitsu Broad Solution and Consulting Inc
Original Assignee
Fujitsu Broad Solution and Consulting Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Fujitsu Broad Solution and Consulting Inc filed Critical Fujitsu Broad Solution and Consulting Inc
Priority to JP2006340627A priority Critical patent/JP5060119B2/ja
Priority to US11/907,287 priority patent/US7961871B2/en
Priority to CN200710182363.1A priority patent/CN101206815B/zh
Publication of JP2008152059A publication Critical patent/JP2008152059A/ja
Application granted granted Critical
Publication of JP5060119B2 publication Critical patent/JP5060119B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/06Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols the encryption apparatus using shift registers or memories for block-wise or stream coding, e.g. DES systems or RC4; Hash functions; Pseudorandom sequence generators
    • H04L9/0618Block ciphers, i.e. encrypting groups of characters of a plain text message using fixed encryption transformation
    • H04L9/0637Modes of operation, e.g. cipher block chaining [CBC], electronic codebook [ECB] or Galois/counter mode [GCM]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L2209/00Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
    • H04L2209/08Randomization, e.g. dummy operations or using noise
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L2209/00Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
    • H04L2209/12Details relating to cryptographic hardware or logic circuitry
    • H04L2209/125Parallelization or pipelining, e.g. for accelerating processing of cryptographic operations
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L2209/00Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
    • H04L2209/34Encoding or coding, e.g. Huffman coding or error correction

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Storage Device Security (AREA)

Abstract

【課題】文字単位で暗号処理を行う場合に、文字コード体系に含まれる文字コードの個数にかかわらず、文字コードのみから構成される暗号データを生成する。
【解決手段】変換テーブル記憶手段1aは、それぞれ2のべき乗個の情報を格納する1以上の領域に分割され、文字コードと各領域で個々の文字コードを識別する最小ビット長のインデックス値とを対応付ける変換テーブルを記憶する。平文変換手段1bは、平文3が入力されると、変換テーブルに基づいて、平文3を構成するそれぞれの文字コードをインデックス値に変換する。暗号化手段1cは、ビット長を変えずに、インデックス値を暗号値に暗号化する。暗号文出力手段1dは、変換テーブルに基づいて、暗号値を文字コードに変換し、文字コードの列を暗号文4として出力する。
【選択図】図1

Description

本発明は暗号処理プログラム、暗号処理方法および暗号処理装置に関し、特に文字単位で暗号処理を行う暗号処理プログラム、暗号処理方法および暗号処理装置に関する。
現在、通信内容や蓄積データの秘密保持のため、暗号技術が広く利用されている。ここで、暗号方式には、公開鍵暗号方式と共通鍵暗号方式との2種類がある。公開鍵暗号方式は、ペアとなる鍵の一方を暗号化のための公開鍵、他方を復号のための秘密鍵とする方式であり、暗号強度の維持が容易であるという利点がある。共通鍵暗号方式は、暗号化側と復号側とで共有する共通鍵を用いて暗号化および復号を行う方式であり、公開鍵暗号方式と比べて計算量が少ないという利点がある。一般的に、大量のデータを暗号化する必要がある場合、計算量が少ない共通鍵暗号方式が用いられる。共通鍵暗号方式の暗号化アルゴリズムとしては、DES(Data Encryption Standard)やAES(Advanced Encryption Standard)などが知られている(例えば、特許文献1参照)。
ところで、コンピュータを用いた暗号処理では、文字を特定の文字コード体系に従って符号化した文字データを処理対象とすることが多い。しかし、既存の暗号化アルゴリズムによって生成される暗号データは、文字データのみを扱うように設計されたソフトウェアで正常に扱えない場合があるという問題がある。その理由は以下の通りである。
大多数の文字コード体系では、文字が割り当てられてない文字コード領域が存在する。例えば、シフトJISなどの日本語の文字コード体系では、1文字は16ビットで表現されるが、2の16乗(=65536)通りの文字コードの全てに実際に文字が割り当てられているわけではない。そこで、ソフトウェアは、文字コードとして使用されないビット列の有無によって、データが文字データか否かを判別することができる。一方、既存の暗号化アルゴリズムで生成される暗号データは、入力データと同じビット長で表現可能な全範囲が生成対象である。このため、文字データのみを扱うように設計されたソフトウェアは、暗号データを正しく認識できない。
これに対し、より多くのソフトウェアで暗号データを扱えるようにしたいという要求から、文字コードのみから構成される暗号データを生成する技術が検討されている。例えば、BASE64変換を用いて、暗号化アルゴリズムによって生成された暗号データを文字コードに変換する方法が知られている。BASE64変換は、変換元のデータを24ビット毎に区切り、24ビットのビット列から4つの半角英数字を表す文字コード(ASCIIコード)に変換する技術である。これにより、ASCIIコードのみから構成される暗号データを生成することができ、より多くのソフトウェアで暗号データを扱うことができるようになる。
特開平8−227269号公報
しかし、BASE64変換を用いて暗号データを生成する方法では、暗号データのビット長が元の文字データのビット長よりも大きくなるという問題がある。BASE64変換では、24ビット(3バイト)のビット列を4つのASCIIコード(4バイト)に変換するため、ビット長が約1.3倍に増大する。ここで、ビット長の増大は、データベースに暗号データを格納する場合に特に大きな問題となる。データベースでは、格納するデータの大きさが一定の範囲に制限されることが多いからである。
一方、暗号データが取り得る値の範囲を制限する他の方法として、暗号化の前後でデータのビット長を変換する方法が考えられる。すなわち、暗号化を行う前に、文字データの文字コードをビット長がより短いビット列に変換する。そして、変換したビット列を暗号化し、暗号化処理で生成されたビット列を文字コードに逆変換する。例えば、全てのJIS第一第二水準漢字は13ビットで表現できるため、16ビットの文字コードを13ビットのビット列に変換して暗号化を行う。これにより、最終的な暗号データは16ビットであるものの、取り得る値の範囲をその一部に制限できる。また、暗号データのビット長を元の文字データのビット長と同一にすることができる。
しかし、上記方法のみでは、文字コード体系に含まれる文字コードの個数が2のべき乗でない場合、文字コードのみから構成される暗号データを生成することはできないという問題がある。これは、逆変換できないビット列が暗号化処理によって生成される可能性があるためである。例えば、JIS第一第二水準に属する文字は6879個であるが、13ビットのビット列は8192個の文字を表現可能である。そのため、ビット長を13ビットに減縮しても文字が割り当てられていないビット列が生成されてしまう可能性を排除できない。当然ながら、ビット長を12ビットにすると、JIS第一第二水準に属する全ての文字を表現できなくなる。
本発明はこのような点に鑑みてなされたものであり、文字単位で暗号処理を行う場合に、文字コード体系に含まれる文字コードの個数にかかわらず、文字コードのみから構成される暗号データを容易に生成できる暗号処理プログラム、暗号処理方法および暗号処理装置を提供することを目的とする。
本発明では上記課題を解決するために、図1に示すような暗号処理プログラムが提供される。本発明に係る暗号処理プログラムは、文字コード単位で暗号処理を行うために、図1に示す暗号化装置1が有する機能をコンピュータに実行させることができる。
変換テーブル記憶手段1aは、それぞれ2のべき乗個の文字に関する情報を格納する1以上の領域に分割されており、所定の文字コード体系に含まれる文字コードと、領域に格納された文字コードを領域内で個々に識別するために必要な最小のビット長のインデックス値とを対応付ける変換テーブルを記憶する。平文変換手段1bは、所定の文字コード体系で符号化された平文3が入力されると、変換テーブル記憶手段1aに記憶された変換テーブルを参照して、平文3を構成するそれぞれの文字コードを対応するインデックス値に変換する。暗号化手段1cは、平文変換手段1bによって得られたインデックス値を順次取得し、ビット長を変えずに、インデックス値を暗号値に暗号化する。暗号文出力手段1dは、暗号化手段1cによって得られた暗号値を順次取得し、変換テーブル内の平文変換手段1bが変換時に参照した領域を参照して、暗号値を暗号値と同一のインデックス値に対応する文字コードに変換し、得られた文字コードの列を平文3に対応する暗号文4として出力する。
このような暗号処理プログラムを実行するコンピュータによれば、平文3が入力されると、平文変換手段1bにより、それぞれ2のべき乗個の情報を格納する1以上の領域に分割された変換テーブルに基づいて、平文3を構成するそれぞれの文字コードが領域に応じたビット長のインデックス値に変換される。次に、暗号化手段1cにより、ビット長が変更されることなく、インデックス値が暗号値に暗号化される。そして、暗号文出力手段1dにより、変換テーブルに基づいて、暗号値が対応する文字コードに変換され、文字コードの列が暗号文4として出力される。
また、上記課題を解決するために、文字単位で暗号処理を行う暗号処理方法において、それぞれ2のべき乗個の文字に関する情報を格納する1以上の領域に分割され、所定の文字コード体系に含まれる文字コードと、領域に格納された文字コードを領域内で個々に識別するために必要な最小のビット長のインデックス値とを対応付ける変換テーブルが変換テーブル記憶手段に記憶されており、平文変換手段が、所定の文字コード体系で符号化された平文が入力されると、変換テーブル記憶手段に記憶された変換テーブルを参照して、平文を構成するそれぞれの文字コードを対応するインデックス値に変換し、暗号化手段が、平文変換手段によって得られたインデックス値を順次取得し、ビット長を変えずに、インデックス値を暗号値に暗号化し、暗号文出力手段が、暗号化手段によって得られた暗号値を順次取得し、変換テーブル内の平文変換手段が変換時に参照した領域を参照して、暗号値を暗号値と同一のインデックス値に対応する文字コードに変換し、得られた文字コードの列を平文に対応する暗号文として出力する、ことを特徴とする暗号処理方法が提供される。
このような暗号処理方法によれば、平文が入力されると、それぞれ2のべき乗個の情報を格納する1以上の領域に分割された変換テーブルに基づいて、平文を構成するそれぞれの文字コードが領域に応じたビット長のインデックス値に変換される。次に、ビット長が変更されることなく、インデックス値が暗号値に暗号化される。そして、変換テーブルに基づいて、暗号値が対応する文字コードに変換され、文字コードの列が暗号文として出力される。
また、上記課題を解決するために、文字単位で暗号処理を行う暗号処理装置において、それぞれ2のべき乗個の文字に関する情報を格納する1以上の領域に分割されており、所定の文字コード体系に含まれる文字コードと、領域に格納された文字コードを領域内で個々に識別するために必要な最小のビット長のインデックス値とを対応付ける変換テーブルを記憶する変換テーブル記憶手段と、所定の文字コード体系で符号化された平文が入力されると、変換テーブル記憶手段に記憶された変換テーブルを参照して、平文を構成するそれぞれの文字コードを対応するインデックス値に変換する平文変換手段と、平文変換手段によって得られたインデックス値を順次取得し、ビット長を変えずに、インデックス値を暗号値に暗号化する暗号化手段と、暗号化手段によって得られた暗号値を順次取得し、変換テーブル内の平文変換手段が変換時に参照した領域を参照して、暗号値を暗号値と同一のインデックス値に対応する文字コードに変換し、得られた文字コードの列を平文に対応する暗号文として出力する暗号文出力手段と、を有することを特徴とする暗号処理装置が提供される。
このような暗号処理装置によれば、平文が入力されると、平文変換手段により、それぞれ2のべき乗個の情報を格納する1以上の領域に分割された変換テーブルに基づいて、平文を構成するそれぞれの文字コードが領域に応じたビット長のインデックス値に変換される。次に、暗号化手段により、ビット長が変更されることなく、インデックス値が暗号値に暗号化される。そして、暗号文出力手段により、変換テーブルに基づいて、暗号値が対応する文字コードに変換され、文字コードの列が暗号文として出力される。
本発明では、それぞれ2のべき乗個の文字コードを格納するように分割した変換テーブルを用いて、暗号処理の前後で、文字コードとインデックス値との間の変換を行うこととした。これにより、暗号処理によって変換テーブルに存在しないビット列が生成されることを確実に防止できる。従って、複雑な処理を必要とせず、所定の文字コード体系で符号化された暗号文を容易に生成することができる。
以下、本発明の実施の形態を図面を参照して説明する。
図1は、本実施の形態の概要を示す図である。図1に示すように、本実施の形態では、暗号化装置1が平文3を暗号化し暗号文4を出力する。また、復号装置2が暗号化装置1によって生成された暗号文5を復号し平文6を出力する。
暗号化装置1は、変換テーブル記憶手段1a、平文変換手段1b、暗号化手段1cおよび暗号文出力手段1dを有する。
変換テーブル記憶手段1aは、所定の文字コード体系に含まれる文字コードとインデックス値とを対応付ける変換テーブルを記憶する。ここで、変換テーブルは、それぞれ2のべき乗個の文字コードを格納するように1以上の領域に分割されている。インデックス値は、それぞれの領域内で文字コードを一意に識別するビット列である。インデックス値のビット長は、文字コードの識別に必要な最小のビット長とする。
例えば、アルファベットの“A”から“F”までの6つの文字で構成される文字コード体系があるとする。ここで、6は2のべき乗ではないが、2の2乗と2の1乗との和に分解できる。そこで、変換テーブルは、4(2の2乗)個の文字コードを格納する第1の領域と、2(2の1乗)個の文字コードを格納する第2の領域とに分割される。そして、第1の領域では、個々の文字コードに対して2ビットのインデックス値が付与される。第2の領域では、個々の文字コードに対して1ビットのインデックス値が付与される。
平文変換手段1bは、入力された平文3を取得する。そして、平文変換手段1bは、変換テーブル記憶手段1aが記憶する変換テーブルを参照して、取得した平文3を構成するそれぞれの文字コードをインデックス値に変換する。例えば、平文変換手段1bは、平文3に文字“A”の文字コードが含まれていると、これをインデックス値“00”に変換する。
暗号化手段1cは、平文変換手段1bの変換結果であるインデックス値を順次取得する。そして、暗号化手段1cは、ビット長を変えずに、取得したインデックス値を暗号値に暗号化する。例えば、暗号化手段1cは、インデックス値“00”を暗号値“10”に暗号化する。
暗号文出力手段1dは、暗号化手段1cの処理結果である暗号値を順次取得する。そして、暗号文出力手段1dは、変換テーブル記憶手段1aが記憶する変換テーブルを参照して、取得した暗号値を文字コードに変換する。ここでは、暗号値と変換テーブルのインデックス値とを同一視するものとする。例えば、暗号文出力手段1dは、暗号値“10”を文字“C”の文字コードに変換する。そして、暗号文出力手段1dは、得られた文字コードの列を、平文3に対応する暗号文4として出力する。
復号装置2は、変換テーブル記憶手段2a、暗号文変換手段2b、復号手段2cおよび平文出力手段2dを有する。変換テーブル記憶手段2aは、暗号化装置1の変換テーブル記憶手段1aが記憶する変換テーブルと同一のテーブルを記憶している。
暗号文変換手段2bは、入力された暗号文5を取得する。そして、暗号文変換手段2bは、変換テーブル記憶手段2aが記憶する変換テーブルを参照して、取得した暗号文5を構成するそれぞれの文字コードをインデックス値に変換する。例えば、暗号文変換手段2bは、暗号文5に文字“C”の文字コードが含まれていると、これをインデックス値“10”に変換する。
復号手段2cは、暗号文変換手段2bの変換結果であるインデックス値を順次取得する。そして、復号手段2cは、ビット長を変えずに、取得したインデックス値を復号値に復号する。例えば、復号手段2cは、インデックス値“10”を復号値“00”に復号する。
平文出力手段2dは、復号手段2cの処理結果である復号値を順次取得する。そして、平文出力手段2dは、変換テーブル記憶手段2aが記憶する変換テーブルを参照して、取得した復号値を文字コードに変換する。例えば、平文出力手段2dは、復号値“00”を文字“A”の文字コードに変換する。そして、平文出力手段2dは、得られた文字コードの列を、暗号文5に対応する平文6として出力する。
なお、暗号化装置1と復号装置2とが別個に変換テーブルを保持するのではなく、暗号化装置1と復号装置2とから共通に参照可能な記憶手段に変換テーブルを格納するようにしてもよい。
このような暗号化装置1によれば、平文3が入力されると、平文変換手段1bにより、それぞれ2のべき乗個の情報を格納する1以上の領域に分割された変換テーブルに基づいて、平文3を構成するそれぞれの文字コードが領域に応じたビット長のインデックス値に変換される。次に、暗号化手段1cにより、ビット長が変更されることなく、インデックス値が暗号値に暗号化される。そして、暗号文出力手段1dにより、変換テーブルに基づいて、暗号値が文字コードに変換され、文字コードの列が暗号文4として出力される。
また、このような復号装置2によれば、暗号文5が入力されると、暗号文変換手段2bにより、それぞれ2のべき乗個の情報を格納する1以上の領域に分割された変換テーブルに基づいて、暗号文5を構成するそれぞれの文字コードが領域に応じたビット長のインデックス値に変換される。次に、復号手段2cにより、ビット長が変更されることなく、インデックス値が復号値に復号される。そして、平文出力手段2dにより、変換テーブルに基づいて、復号値が文字コードに変換され、文字コードの列が平文6として出力される。
これにより、暗号処理によって変換テーブルに存在しないビット列が生成されることを確実に防止できる。従って、複雑な処理を必要とせず、所定の文字コード体系で符号化された暗号文を容易に生成および復号することができる。
このような暗号化装置1および復号装置2は、例えば、データベースに格納するデータの暗号化および復号に利用できる。すなわち、データベースを構築したストレージデバイスに対する不正アクセスや、ストレージデバイスの盗難による情報の漏洩を防止するために、各データを暗号化して格納することが考えられる。そこで、データベースに格納する文字データに対する暗号処理を例に、本発明の実施の形態を具体的に説明する。
[第1の実施の形態]
図2は、本実施の形態のシステム構成を示す図である。図2に示すデータベースシステムは、データベースに格納する文字データに対して暗号処理を行うものである。本実施の形態のデータベースシステムは、サーバ100、データベース110、クライアント21およびネットワーク10で構成される。
クライアント21は、ネットワーク10を介してサーバ100と接続されている。クライアント21は、ユーザが使用するコンピュータである。サーバ100は、データベース110と接続されている。サーバ100は、データベース110の管理機能を有するコンピュータである。データベース110には、文字データが暗号化されて格納されている。
クライアント21は、データベース110に格納されたデータを利用する場合、ネットワーク10を通じてサーバ100に対してデータ処理の要求を行う。サーバ100は、クライアント21からの要求に応じて、データベース110に格納されたデータの処理を行う。ここで、サーバ100は、データ更新の場合には文字データを暗号化してデータベース110に格納し、データ検索の場合には取得した暗号文を復号してクライアント21に応答する。
このように、サーバ100が文字データの暗号化および復号の処理を行い、クライアント21とデータベース110との間でデータを中継する。なお、サーバ100とクライアント21との間の通信も、DESやAES等の暗号技術を用いて暗号化して行うことが可能である。
図3は、サーバのハードウェア構成を示す図である。サーバ100は、CPU(Central Processing Unit)101によって装置全体が制御されている。CPU101には、バス108を介してRAM(Random Access Memory)102、ハードディスクドライブ(HDD:Hard Disk Drive)103、グラフィック処理装置104、入力インタフェース105、通信インタフェース106およびストレージデバイスインタフェース107が接続されている。
RAM102には、CPU101に実行させるOS(Operating System)プログラムやアプリケーションプログラムの少なくとも一部が一時的に格納される。また、RAM102には、CPU101による処理に必要な各種データが格納される。HDD103には、OSやアプリケーションプログラムが格納される。
グラフィック処理装置104には、モニタ11が接続されている。グラフィック処理装置104は、CPU101からの命令に従って、画像をモニタ11の画面に表示させる。入力インタフェース105には、キーボード12とマウス13とが接続されている。入力インタフェース105は、キーボード12やマウス13から送られてくる信号を、バス108を介してCPU101に送信する。
通信インタフェース106は、ネットワーク10に接続されている。通信インタフェース106は、ネットワーク10を介して、他のコンピュータとの間でデータの送受信を行う。ストレージデバイスインタフェース107は、データベース110に対してデータの入出力を行う通信インタフェースである。
以上のようなハードウェア構成によって、本実施の形態の処理機能を実現することができる。なお、図3には、サーバ100のハードウェア構成を示したが、クライアント21も同様のハードウェアで実現できる。
図4は、第1の実施の形態のサーバの機能を示すブロック図である。サーバ100は、データベース管理部120、初期値記憶部131、共通鍵記憶部132、変換テーブル記憶部133、暗号化部140および復号部150を有している。
データベース管理部120は、クライアント21からの要求に応じてデータベース110内のデータの入出力を行う。ここで、データベース110に対して文字データを入力する際には、データベース管理部120は、暗号化部140を介してデータベース110へ文字データを書き込む。また、データベース110から文字データを取得し出力する際には、データベース管理部120は、復号部150を介してデータベース110内の文字データを取得する。
初期値記憶部131は、暗号化部140および復号部150が暗号処理で用いる初期ベクタを記憶する。初期ベクタとは、先頭の文字を暗号化および復号する際に使用するビット列である。共通鍵記憶部132は、暗号化部140および復号部150が暗号処理で用いる共通鍵を記憶する。変換テーブル記憶部133は、文字コードと文字コードを識別するインデックスとの対応関係を定義した変換テーブルを記憶する。
暗号化部140は、データベース管理部120から受け取った文字データを暗号化し、データベース110に格納する。暗号化に際しては、初期値記憶部131、共通鍵記憶部132および変換テーブル記憶部133を参照する。
復号部150は、データベース管理部120からの要求に応じてデータベース110から暗号化された文字データを取得し、取得した文字データを復号する。そして、復号部150は、復号した文字データをデータベース管理部120に渡す。復号に際しては、初期値記憶部131、共通鍵記憶部132および変換テーブル記憶部133を参照する。
図5は、変換テーブルのデータ構造例を示す図である。変換テーブル133aは、変換テーブル記憶部133に格納されている。変換テーブル133aには、インデックスを示す項目、文字コードを示す項目および有効ビット数を示す項目が設けられている。各項目の横方向に並べられた情報同士が互いに関連付けられている。
インデックスは、文字コードを一意に識別するための数値である。インデックスは、個々の文字コードに対して、0から順番に付与される。図5では、インデックスを2進数で表記している。
文字コードは、所定の文字コード体系で定義された、文字を識別するための数値である。文字コードは、インデックスと1対1に対応していればよく、インデックスの順序に合わせて整列する必要はない。図5では、文字コードを16進数で表記している。
有効ビット数は、インデックスのうち、暗号化および復号の対象となるビットのビット数である。例えば、有効ビット数が4ビットの場合、インデックスの下位4ビットが暗号化および復号の対象となる。なお、インデックスの下位から有効ビット数だけ抽出したビット列が、本実施の形態の概要で述べたインデックス値に相当する。
有効ビット数およびその有効ビット数に対応付けられる文字コードの個数は、変換テーブル133aに格納される文字コードの総数を2のべき乗数の和に分解することで決定される。例えば、文字コードの総数が26個の場合、26=2の4乗(16)+2の3乗(8)+2の1乗(2)と分解できる。そこで、有効ビット数4の文字コードが16個、有効ビット数3の文字コードが8個、有効ビット数1の文字コードが2個と決定される。
なお、本実施の形態では、説明を容易にするため、アルファベット26文字からなる文字コード体系を想定する。
ここで、図5に示すように、出現頻度が高いアルファベットに対して、大きい有効ビット数を割り当てることにする。これは、文字の暗号化は、有効ビット数が同じ文字コードの中での変換として実現されるからである。例えば、文字“E”を暗号化すると、16文字のうちのいずれか1つに変換される。一方、文字“Q”を暗号化すると、“Q”または“Z”のいずれか1つに変換される。従って、変換のパターンが少なくなる小さな有効ビット数を、出現頻度が高い文字に割り当てることは、セキュリティの観点から好ましくない。
次に、暗号化部140の処理機能について詳細に説明する。以下、暗号化アルゴリズムとしてDESを用い、暗号利用モードとしてCFB(Cipher FeedBack)モードを用いるものとする。
図6は、第1の実施の形態の暗号化部の機能例を示すブロック図である。暗号化部140は、平文変換部141、シフトレジスタ142、暗号化処理部143、暗号データ記憶部144、排他的論理和演算部145および暗号文出力部146を有している。
平文変換部141は、データベース管理部120から平文31が入力されると、変換テーブル記憶部133に格納された変換テーブル133aを参照して、平文31を構成する個々の文字コードを暗号化対象のビット列に変換する。暗号化対象のビット列は、インデックスのうち、下位の桁から有効ビット数だけ切り出したものである。そして、平文変換部141は、暗号化対象のビット列を、順次排他的論理和演算部145に出力する。
シフトレジスタ142は、所定のビット数だけビット列を格納することができると共に、ビットの格納位置を右から左へ向かってシフトすることができる。シフトレジスタ142は、排他的論理和演算部145から演算結果が出力されと、演算結果のビット数だけ格納されたデータを左にシフトする。そして、シフトレジスタ142は、排他的論理和演算部145の演算結果を右側に格納する。暗号化処理の開始時には、初期値記憶部131に格納された初期ベクタがシフトレジスタ142に設定される。
暗号化処理部143は、シフトレジスタ142に設定された値を、共通鍵記憶部132に格納されている共通鍵を用いて、DESのアルゴリズムに従って暗号化する。そして、暗号化処理部143は、暗号化処理の結果を暗号データ記憶部144に格納する。
排他的論理和演算部145は、平文変換部141から暗号化対象のビット列を取得すると、暗号データ記憶部144に格納されたビット列の先頭から、暗号化対象のビット数だけ切り出す。そして、排他的論理和演算部145は、切り出したビット列と暗号化対象のビット列との排他的論理和の演算を行う。その後、排他的論理和演算部145は、演算結果を出力すると共に、シフトレジスタ142の入力として演算結果を与える。
暗号文出力部146は、排他的論理和演算部145から演算結果のビット列を取得すると、変換テーブル133aを参照して、取得したビット列を文字コードに変換する。変換先の文字コードは、変換テーブル133aのインデックスおよび有効ビット数に基づいて特定する。そして、暗号文出力部146は、変換した一連の文字コードを結合し、平文31に対応する暗号文32として出力して、データベース110に格納する。
図7は、第1の実施の形態の暗号化処理の進行例を示す図である。図7に示す例は、平文“JAZZ”を表す文字データを暗号化するものである。
第1の状態[ST11]には、1つ目の文字“J”に対する暗号化処理が示されている。このとき、シフトレジスタ142には初期ベクタが設定されている。暗号化処理が開始されると、まず、暗号化処理部143によってシフトレジスタ142内の値が暗号化され、暗号データ記憶部144に格納される。次に、排他的論理和演算部145によって、暗号データ記憶部144内の先頭3ビットが抽出され、文字“J”に対応するビット列“111”との排他的論理和の演算が行われる。そして、演算結果として、例えば、ビット列“001”が得られる。ビット列“001”は、暗号文出力部146によって、文字“G”の文字コードに変換される。
第2の状態[ST12]には、2つ目の文字“A”に対する暗号化処理が示されている。このとき、シフトレジスタ142は左に3ビットだけシフトされ、右に前回の演算結果“001”が格納されている。この状態で、暗号化処理部143によってシフトレジスタ142内の値が暗号化され、暗号データ記憶部144に格納される。次に、排他的論理和演算部145によって、暗号データ記憶部144内の先頭4ビットが抽出され、文字“A”に対応するビット列“0010”との排他的論理和の演算が行われる。そして、演算結果として、例えば、ビット列“1111”が得られる。ビット列“1111”は、暗号文出力部146によって、文字“W”の文字コードに変換される。
以後同様に、3つ目および4つ目の文字“Z”の暗号化が順次行われる。第3の状態[ST13]には、3つ目の文字“Z”に対する暗号化処理が示されている。この例では、ビット列“0”が得られている。第4の状態[ST14]には、4つ目の文字“Z”に対する暗号化処理が示されている。この例では、ビット列“1”が得られている。状態[ST13]と状態[ST14]とで得られるビット列が異なるのは、CFBモードでは、暗号化処理の結果が、それ以前に行われた暗号化処理の結果に依存するからである。
以上の処理によって得られた文字列“GWQZ”が、暗号文32として暗号文出力部146によって出力される。
次に、復号部150の復号処理の機能について詳細に説明する。以下、暗号化部140と同様、暗号化アルゴリズムとしてDESを用い、暗号利用モードとしてCFBモードを用いるものとする。
図8は、第1の実施の形態の復号部の機能例を示すブロック図である。復号部150は、暗号文変換部151、シフトレジスタ152、暗号化処理部153、暗号データ記憶部154、排他的論理和演算部155および平文出力部156を有している。
暗号文変換部151は、データベース管理部120からの要求に応じてデータベース110から暗号文33を取得すると、変換テーブル133aを参照して、暗号文33を構成する個々の文字コードを復号対象のビット列に変換する。復号対象のビット列は、インデックスのうち、下位の桁から有効ビット数だけ切り出したものである。そして、暗号文変換部151は、復号対象のビット列を、順次排他的論理和演算部155に出力する。
シフトレジスタ152は、所定のビット数だけビット列を格納することができると共に、ビットの格納位置を右から左へ向かってシフトすることができる。シフトレジスタ152は、排他的論理和演算部155で演算が行われると、復号対象のビット列のビット数だけ格納されたデータを左にシフトする。そして、シフトレジスタ152は、復号対象のビット列を右側に格納する。復号処理の開始時には、初期値記憶部131に格納された初期ベクタがシフトレジスタ152に設定される。
暗号化処理部153は、シフトレジスタ152に設定された値を、共通鍵記憶部132に格納されている共通鍵を用いて、DESのアルゴリズムに従って暗号化する。そして、暗号化処理部153は、暗号化処理の結果を暗号データ記憶部154に格納する。
排他的論理和演算部155は、暗号文変換部151から復号対象のビット列を取得すると、暗号データ記憶部154に格納されたビット列の先頭から、復号対象のビット数だけ切り出す。そして、排他的論理和演算部155は、切り出したビット列と復号対象のビット列との排他的論理和の演算を行う。その後、排他的論理和演算部155は、演算結果を出力すると共に、演算の際に入力された復号対象のビット列をシフトレジスタ152の入力として与える。
平文出力部156は、排他的論理和演算部155から演算結果のビット列を取得すると、変換テーブル133aを参照して、取得したビット列を文字コードに変換する。変換先の文字コードは、変換テーブル133aのインデックスおよび有効ビット数に基づいて特定する。そして、平文出力部156は、変換した一連の文字コードを結合し、暗号文33に対応する平文34として、データベース管理部120に通知する。
図9は、第1の実施の形態の復号処理の進行例を示す図である。図9に示す例は、暗号文“GWQZ”を表す暗号データを復号するものである。
第1の状態[ST21]には、1つ目の文字“G”に対する復号処理が示されている。このとき、シフトレジスタ152には初期ベクタが設定されている。復号処理が開始されると、まず、暗号化処理部153によってシフトレジスタ152内の値が暗号化され、暗号データ記憶部154に格納される。次に、排他的論理和演算部155によって、暗号データ記憶部154内の先頭3ビットが抽出され、文字“G”に対応するビット列“001”との排他的論理和の演算が行われる。そして、演算結果として、例えば、ビット列“111”が得られる。ビット列“111”は、平文出力部156によって、文字“J”の文字コードに変換される。
第2の状態[ST22]には、2つ目の文字“W”に対する復号処理が示されている。このとき、シフトレジスタ152は左に3ビットだけシフトされ、右に前回の復号対象のビット列“001”が格納されている。この状態で、暗号化処理部153によってシフトレジスタ152内の値が暗号化され、暗号データ記憶部154に格納される。次に、排他的論理和演算部155によって、暗号データ記憶部154内の先頭4ビットが抽出され、文字“W”に対応するビット列“1111”との排他的論理和の演算が行われる。そして、演算結果として、例えば、ビット列“0010”が得られる。ビット列“0010”は、平文出力部156によって、文字“A”の文字コードに変換される。
以後同様に、3つ目の文字“Q”および4つ目の文字“Z”の復号が順次行われる。第3の状態[ST23]には、3つ目の文字“Q”に対する復号処理が示されている。この例では、ビット列“1”が得られている。第4の状態[ST24]には、4つ目の文字“Z”に対する復号処理が示されている。この例では、ビット列“1”が得られている。
以上の処理によって得られた文字列“JAZZ”が、平文34として平文出力部156によって出力される。
このような暗号化処理および復号処理を行うサーバを用いることで、ビット長が元の文字データと同一であり、かつ、文字コードのみから構成される暗号データを容易に生成し復号することができる。従って、文字データのみを扱うように設定されたデータベースにも、暗号データを正常に格納することができる。その結果、データベースに格納したデータの不正アクセスを防止することができる。
[第2の実施の形態]
次に、第2の実施の形態について説明する。第2の実施の形態のデータベースシステムは、第1の実施の形態における暗号化処理および復号処理を、複数の文字について並列処理できるようしたものである。第2の実施の形態のシステム構成は、第1の実施の形態のものと同様である。以下、暗号化処理を行う暗号化部および復号処理を行う復号部の機能の詳細について、第1の実施の形態と異なる部分を中心に説明する。
図10は、第2の実施の形態の暗号化部の機能例を示すブロック図である。図10に示す暗号化部140aは、図6に示した第1の実施の形態の暗号化部140に対応するものである。暗号化部140aは、平文変換部141a、シフトレジスタ142a、暗号化処理部143、暗号データ記憶部144a、排他的論理和演算部145a,145b,145c,・・・,145hおよび暗号文出力部146aを有している。
平文変換部141aは、平文が入力されると、平文を構成する個々の文字コードを暗号化対象のビット列に変換する。ここで、平文変換部141aは、所定の個数の文字コードを並列処理することができる。図10の例では、8個の文字コードを並列処理することができる。そして、平文変換部141aは、暗号化対象のビット列を、排他的論理和演算部145a,145b,145c,・・・,145hにそれぞれ出力する。
シフトレジスタ142aは、ビット列を格納することができると共に、ビットの格納位置を右から左へ向かってシフトすることができる。シフトレジスタ142aは、排他的論理和演算部145aから演算結果が出力されると、演算結果のビット数だけ格納されたデータを左にシフトする。そして、シフトレジスタ142aは、排他的論理和演算部145aの演算結果を右側に格納する。
暗号化処理部143は、シフトレジスタ142aに設定された値を暗号化し、暗号化処理の結果を暗号データ記憶部144aに格納する。ここで、暗号データ記憶部144aは、ビット列を、並列処理する文字コードの個数と同数の部分ビット列に分割して格納する。すなわち、図10の例では、8個の部分ビット列に分割して格納する。
排他的論理和演算部145aは、平文変換部141aから暗号化対象のビット列を取得すると、暗号データ記憶部144aに格納された1番目の部分ビット列を取得し、部分ビット列の先頭から暗号化対象のビット数だけ切り出す。そして、排他的論理和演算部145aは、切り出したビット列と暗号化対象のビット列との排他的論理和の演算を行う。排他的論理和演算部145b,145c,・・・,145hも、同様に、暗号データ記憶部144aに格納された対応する部分ビット列を取得して、排他的論理和の演算を行う。
暗号文出力部146aは、排他的論理和演算部145a,145b,145c,・・・,145hから演算結果のビット列を取得すると、取得したビット列を文字コードにそれぞれ変換する。そして、暗号文出力部146aは、変換した一連の文字コードを結合し、平文に対応する暗号文として出力する。
なお、並列処理可能な文字コードの個数は、暗号データ記憶部144aに格納されるビット列のビット長と、変換テーブル133aで定義された有効ビット数の最大値とから決定される。例えば、暗号データ記憶部144aに格納されるビット列のビット長が32ビット、有効ビット数の最大値が4ビットである場合は、最大で8個の文字コードを並列処理することができる。
図11は、第2の実施の形態の復号部の機能例を示すブロック図である。図11に示す復号部150aは、図8に示した第1の実施の形態の復号部150に対応するものである。復号部150aは、暗号文変換部151a、シフトレジスタ152a、暗号化処理部153、暗号データ記憶部154a、排他的論理和演算部155a,155b,155c,・・・,155hおよび平文出力部156aを有している。
暗号文変換部151aは、暗号文を取得すると、暗号文を構成する個々の文字コードを復号対象のビット列に変換する。ここで、暗号文変換部151aは、所定の個数の文字コードを並列処理することができる。そして、暗号文変換部151aは、復号対象のビット列を、排他的論理和演算部155a,155b,155c,・・・,155hにそれぞれ出力する。
シフトレジスタ152aは、ビット列を格納することができると共に、ビットの格納位置を右から左へ向かってシフトすることができる。シフトレジスタ152aは、排他的論理和演算部155aで演算が行われると、復号対象のビット列のビット数だけ格納されたデータを左にシフトする。そして、シフトレジスタ152aは、復号対象のビット列を右側に格納する。
暗号化処理部153は、シフトレジスタ152aに設定された値を暗号化し、暗号化処理の結果を暗号データ記憶部154aに格納する。ここで、暗号データ記憶部154aは、ビット列を、並列処理する文字コードの個数と同数の部分ビット列に分割して格納する。
排他的論理和演算部155aは、暗号文変換部151aから復号対象のビット列を取得すると、暗号データ記憶部154aに格納された1番目の部分ビット列を取得し、部分ビット列の先頭から復号対象のビット数だけ切り出す。そして、排他的論理和演算部155aは、切り出したビット列と復号対象のビット列との排他的論理和の演算を行う。排他的論理和演算部155b,155c,・・・,155hも、同様に、暗号データ記憶部154aに格納された対応する部分ビット列を取得して、排他的論理和の演算を行う。
平文出力部156aは、排他的論理和演算部155a,155b,155c,・・・,155hから演算結果のビット列を取得すると、取得したビット列を文字コードにそれぞれ変換する。そして、平文出力部156aは、変換した一連の文字コードを結合し、暗号文に対応する平文として出力する。
なお、並列処理可能な文字コードの個数は、暗号化部140aと同様、暗号データ記憶部154aに格納されるビット列のビット長と、変換テーブル133aで定義された有効ビット数の最大値とから決定される。
このような暗号化処理および復号処理を行うサーバを用いることで、第1の実施の形態と同様の効果を得られる。更に、第2の実施の形態のサーバを用いることで、暗号化処理および復号処理を大幅に高速化できる。
[第3の実施の形態]
次に、第3の実施の形態について説明する。第3の実施の形態のデータベースシステムは、第1の実施の形態のデータベースシステムを拡張し、暗号の安全性をより強化したものである。以下、第1の実施の形態と異なる部分を中心に説明する。
CFBモードのような連鎖機能を有する暗号利用モードは、前の暗号化処理で得られる暗号値を利用して次の文字を暗号化する。このため、平文の途中で一度異なる文字が出現すれば、それ以降に既出の文字と同一の文字が出現しても、前の暗号値と異なる暗号値が生成される。
しかし、一般的な暗号利用モードでは、先頭部分が同一になりやすい多数の平文を暗号化すると、暗号強度が低下する恐れがある。例えば、住所を表す平文は、先頭部分に“東京都○○区”などの特定の文字列が出現する確率が高い。このため、住所を表す多数の平文を暗号化すると、個々の平文の暗号化に連鎖機能を有する暗号利用モードを用いても、先頭部分が同一の暗号文が多数生成されてしまう。
特に、データベースには、住所や電話番号など先頭部分が同一になりやすい文字データを大量に格納することがある。この場合、先頭部分が同一である暗号文が多数出現することになり、暗号解読の手掛かりとなってしまう恐れがある。
そこで、第3の実施の形態では、先頭部分が同一の平文を暗号化しても、対応する暗号文の先頭部分は同一にならないようにする。
図12は、第3の実施の形態のサーバの機能例を示すブロック図である。サーバ100bは、データベース管理部120、初期値記憶部131、共通鍵記憶部132、変換テーブル記憶部133、ダミー位置記憶部134、暗号化部140bおよび復号部150bを有している。データベース管理部120、初期値記憶部131、共通鍵記憶部132および変換テーブル記憶部133の構成および機能は、それぞれ第1の実施の形態のものと同じである。
ダミー位置記憶部134は、暗号化部140bがダミー文字として選択する文字コードおよび復号部150bがダミー暗号として選択する文字コードの位置を指定した位置情報を記憶する。ダミー文字およびダミー暗号については、後で詳細に説明する。
暗号化部140bは、データベース管理部120から受け取った文字データを暗号化し、データベース110に格納する。暗号化に際しては、初期値記憶部131、共通鍵記憶部132、変換テーブル記憶部133およびダミー位置記憶部134を参照する。
復号部150bは、データベース管理部120からの要求に応じてデータベース110から暗号化された文字データを取得し、取得した文字データを復号する。そして、復号部150bは、復号した文字データをデータベース管理部120に渡す。復号に際しては、初期値記憶部131、共通鍵記憶部132、変換テーブル記憶部133およびダミー位置記憶部134を参照する。
次に、暗号化部140bの処理機能について詳細に説明する。第1の実施の形態と同様、暗号化アルゴリズムとしてDESを用い、暗号利用モードとしてCFBモードを用いるものとする。
図13は、第3の実施の形態の暗号化部の機能例を示すブロック図である。暗号化部140bは、平文変換部141、シフトレジスタ142、暗号化処理部143、暗号データ記憶部144、排他的論理和演算部145、暗号文出力部146b、順序変換部147およびダミー文字選択部148を有している。平文変換部141、シフトレジスタ142、暗号化処理部143、暗号データ記憶部144および排他的論理和演算部145の処理機能は、それぞれ第1の実施の形態のものと同じである。
順序変換部147は、平文35が入力されると、平文35の文字順序を変換して新たな平文を生成する。具体的には、順序変換部147は、平文35を先頭と最後尾とが連続した循環文字列とみなし、所定の指定方法に従って、循環文字列上で先頭文字と2番目以降の文字を辿る回転方向とを指定する。これにより、順序変換した文字列が生成される。そして、順序変換部147は、順序変換した文字列をダミー文字選択部148に出力する。
ダミー文字選択部148は、順序変換部147から文字列を取得すると、ダミー位置記憶部134に格納されている位置情報を参照し、位置情報で指定される文字をダミー文字として選択する。そして、ダミー文字選択部148は、順序変換部147から取得した文字列の先頭に選択したダミー文字を付加して、新たな平文として平文変換部141に出力する。
暗号文出力部146bは、排他的論理和演算部145から演算結果のビット列を順次取得する。ここで、暗号文出力部146bは、先頭のビット列、すなわち、ダミー文字選択部148が付加したダミー文字に対応するビット列を破棄する。そして、暗号文出力部146bは、残りのビット列をそれぞれ文字コードに変換し、変換した一連の文字コードを結合して暗号文36として出力する。
図14は、順序変換処理の概要を示す図である。順序変換部147は、入力された平文35を、図14に示すような循環文字列とみなす。すなわち、平文35がn文字(nは自然数)で構成されるとき、先頭文字L1と最後尾文字Lnとが連続しているとみなす。ここで、順序変換部147は、所定の指定方法に従って、循環文字列の中の1文字Lk(kは1以上n以下の自然数)を、新たな先頭文字に指定する。
更に、順序変換部147は、指定した先頭文字から2番目以降の文字を辿る回転方向(順方向/逆方向)を指定する。例えば、文字Lkから逆方向を指定した場合、Lk,Lk−1,・・・,L1,Ln,・・・,Lk+1という文字列が得られる。このように文字列を順序変換することで、先頭部分が同一である文字列の出現頻度を低くすることができる。また、文字列の回転を利用して順序変換することで、順序を再現する処理も容易となる。
図15は、第3の実施の形態の暗号化処理の進行例を示す図である。図15に示す例は、暗号化対象のビット列D0,D1,D2,D3を暗号化するものである。ただし、ビット列D0はダミー文字に対応する。
第1の状態[ST31]には、ビット列D0に対する暗号化処理が示されている。暗号化処理の基本的な流れは、第1の実施の形態と同じである。そして、演算結果として、ビット列C0が得られる。ビット列C0は、暗号文出力部146bによって破棄される。
第2の状態[ST32]には、ビット列D1に対する暗号化処理が示されている。このとき、シフトレジスタ142はビット列C0のビット数だけ左にシフトされ、右にビット列C0が格納されている。そして、演算結果として、ビット列C1が得られる。ビット列C1は、暗号文出力部146bによって、1つ目の文字コードに対応するビット列として取り扱われる。
以後同様に、ビット列D2およびビット列D3に対する暗号化が順次行われる。第3の状態[ST33]には、ビット列D2に対する暗号化処理が示されている。ここで得られたビット列C2は、暗号文出力部146bによって、2つ目の文字コードに対応するビット列として取り扱われる。第4の状態[ST34]には、ビット列D3に対する暗号化処理が示されている。ここで得られたビット列C3は、暗号文出力部146bによって、3つ目の文字コードに対応するビット列として取り扱われる。
このように、最初にダミー文字を暗号化することで、それ以降の暗号化処理をダミー文字の処理結果に依存させることができる。
次に、復号部150bの復号処理の機能について詳細に説明する。以下、暗号化部140bと同様、暗号化アルゴリズムとしてDESを用い、暗号利用モードとしてCFBモードを用いるものとする。
図16は、第3の実施の形態の復号部の機能例を示すブロック図である。復号部150bは、暗号文変換部151、シフトレジスタ152、暗号化処理部153、暗号データ記憶部154、排他的論理和演算部155、平文出力部156b、ダミー暗号選択部157および順序再生部158を有している。暗号文変換部151、シフトレジスタ152、暗号化処理部153、暗号データ記憶部154および排他的論理和演算部155の処理機能は、それぞれ第1の実施の形態のものと同じである。
ダミー暗号選択部157は、暗号文37が入力されると、ダミー位置記憶部134に格納されている位置情報を参照し、位置情報で指定される暗号文字をダミー暗号として選択する。そして、ダミー暗号選択部157は、暗号文37の先頭に選択したダミー暗号を付加して、新たな暗号文として暗号文変換部151に出力する。
平文出力部156bは、排他的論理和演算部155から演算結果のビット列を順次取得する。ここで、平文出力部156bは、先頭のビット列、すなわち、ダミー暗号選択部157が付加したダミー暗号に対応するビット列を破棄する。そして、平文出力部156bは、残りのビット列をそれぞれ文字コードに変換し、変換した一連の文字コードからなる文字列を順序再生部158に出力する。
順序再生部158は、平文出力部156bから文字列を取得すると、暗号化部140bの順序変換部147で変換された文字順序を逆変換して、平文38を再生する。すなわち、順序再生部158は、取得した文字列を先頭と最後尾とが連続した循環文字列とみなし、順序変換部147と逆の操作を行う。そして、順序再生部158は、再生した平文38を出力する。
図17は、第3の実施の形態の復号処理の進行例を示す図である。図17に示す例は、復号対象のビット列C0,C1,C2,C3を復号するものである。ただし、ビット列C0はダミー暗号に対応する。
第1の状態[ST41]には、ビット列C0に対する復号処理が示されている。復号処理の基本的な流れは、第1の実施の形態と同じである。そして、演算結果として、ビット列D0が得られる。ビット列D0は、平文出力部156bによって破棄される。
第2の状態[ST42]には、ビット列C1に対する復号処理が示されている。このとき、シフトレジスタ152はビット列C0のビット数だけ左にシフトされ、右にビット列C0が格納されている。そして、演算結果として、ビット列D1が得られる。ビット列D1は、平文出力部156bによって、1つ目の文字コードに対応するビット列として取り扱われる。
以後同様に、ビット列C2およびビット列C3に対する復号が順次行われる。第3の状態[ST43]には、ビット列C2に対する復号処理が示されている。ここで得られたビット列D2は、平文出力部156bによって、2つ目の文字コードに対応するビット列として取り扱われる。第4の状態[ST44]には、ビット列C3に対する復号処理が示されている。ここで得られたビット列D3は、平文出力部156bによって、3つ目の文字コードに対応するビット列として取り扱われる。
このように、最初にダミー暗号を復号することで、暗号化部140bによって生成された暗号文を復号することができる。
このような暗号化処理および復号処理を行うサーバを用いることで、第1の実施の形態と同様の効果を得られる。更に、第3の実施の形態のサーバを用いることで、先頭部分が同一になりやすい文字データを多数暗号化する場合でも、文字列の順序が変換されて、暗号文の先頭部分が同一になる可能性を低くできる。また、ダミー文字の暗号化によって初期ベクタが更新されるため、順序変換した文字列の先頭部分が同一になったとしても、対応する暗号文の先頭部分は同一にならない。従って、データベースに格納された多数の暗号文から元の文字列を推測するのを困難にし、暗号の安全性低下を効率的に防止することができる。
なお、本実施の形態では、暗号化アルゴリズムとしてDESを用いたが、他の暗号化アルゴリズムを用いてもよい。また、本実施の形態では暗号利用モードとしてCFBモードを用いたが、CBC(Cipher Block Chaining)モードやOFB(Output FeedBack)モードなどの他の暗号利用モードを用いてもよい。特に、第1の実施の形態および第2の実施の形態では、連鎖機能を有さない暗号利用モードを用いてもよい。
また、本実施の形態では、変換テーブルにおいて、有効ビット数が大きい領域にできる限り多くの文字コードを配置するようにしたが、有効ビット数が同じ領域を2つ以上作成してもよい。例えば、26=2の3乗(8)+2の3乗(8)+2の3乗(8)+2の1乗(2)のように分割することも可能である。この場合、文字コードから暗号化対象または復号対象のビット列に変換する際に、どの領域にある対応関係を使用したかを後段の処理機能に通知することで、逆変換を容易に行える。
また、本実施の形態では、変換テーブル内に有効ビット数を明記したが、有効ビット数の判定方法は、さまざまな代替方法が考えられる。例えば、暗号化処理および復号処理の際に、変換テーブル内での相対位置から、自動的に有効ビット数を判定するようにしてもよい。
以上、本発明の暗号処理プログラム、暗号処理方法および暗号処理装置を図示の実施の形態に基づいて説明したが、本発明はこれに限定されるものではなく、各部の構成は同様の機能を有する任意の構成のものに置換することができる。また、本発明に他の任意の構成物や工程が付加されていてもよい。また、本発明は、前述した実施の形態のうちの任意の2以上の構成(特徴)を組み合わせたものであってもよい。
なお、上記の処理機能は、コンピュータによって実現することができる。その場合、サーバが有すべき機能の処理内容を記述したプログラムが提供される。そのプログラムをコンピュータで実行することにより、上記処理機能がコンピュータ上で実現される。処理内容を記述したプログラムは、コンピュータで読み取り可能な記録媒体に記録しておくことができる。コンピュータで読み取り可能な記録媒体としては、磁気記録装置、光ディスク、光磁気記録媒体、半導体メモリなどがある。磁気記録装置には、ハードディスク装置(HDD)、フレキシブルディスク(FD)、磁気テープ(MT)などがある。光ディスクには、DVD(Digital Versatile Disc)、DVD−RAM、CD−ROM(Compact Disc - Read Only Memory)、CD−R(Recordable)/RW(ReWritable)などがある。光磁気記録媒体には、MO(Magneto-Optical disk)などがある。
プログラムを流通させる場合には、例えば、そのプログラムが記録されたDVD、CD−ROMなどの可搬型記録媒体が販売される。また、プログラムをサーバコンピュータの記憶装置に格納しておき、ネットワークを介して、サーバコンピュータから他のコンピュータにそのプログラムを転送することもできる。
上記プログラムを実行するコンピュータは、例えば、可搬型記録媒体に記録されたプログラムもしくはサーバコンピュータから転送されたプログラムを、自己の記憶装置に格納する。そして、コンピュータは、自己の記憶装置からプログラムを読み取り、プログラムに従った処理を実行する。なお、コンピュータは、可搬型記録媒体から直接プログラムを読み取り、そのプログラムに従った処理を実行することもできる。また、コンピュータは、サーバコンピュータからプログラムが転送される毎に、逐次、受け取ったプログラムに従った処理を実行することもできる。
本実施の形態の概要を示す図である。 本実施の形態のシステム構成を示す図である。 サーバのハードウェア構成を示す図である。 第1の実施の形態のサーバの機能を示すブロック図である。 変換テーブルのデータ構造例を示す図である。 第1の実施の形態の暗号化部の機能例を示すブロック図である。 第1の実施の形態の暗号化処理の進行例を示す図である。 第1の実施の形態の復号部の機能例を示すブロック図である。 第1の実施の形態の復号処理の進行例を示す図である。 第2の実施の形態の暗号化部の機能例を示すブロック図である。 第2の実施の形態の復号部の機能例を示すブロック図である。 第3の実施の形態のサーバの機能例を示すブロック図である。 第3の実施の形態の暗号化部の機能例を示すブロック図である。 順序変換処理の概要を示す図である。 第3の実施の形態の暗号化処理の進行例を示す図である。 第3の実施の形態の復号部の機能例を示すブロック図である。 第3の実施の形態の復号処理の進行例を示す図である。
符号の説明
1 暗号化装置
1a,2a 変換テーブル記憶手段
1b 平文変換手段
1c 暗号化手段
1d 暗号文出力手段
2 復号装置
2b 暗号文変換手段
2c 復号手段
2d 平文出力手段
3,6 平文
4,5 暗号文

Claims (7)

  1. 文字単位で暗号処理を行う暗号処理プログラムにおいて、
    コンピュータを、
    それぞれ2のべき乗個の文字に関する情報を格納する1以上の領域に分割されており、所定の文字コード体系に含まれる文字コードと、前記領域に格納された前記文字コードを前記領域内で個々に識別するために必要な最小のビット長のインデックス値とを対応付ける変換テーブルを記憶する変換テーブル記憶手段、
    前記所定の文字コード体系で符号化された平文が入力されると、前記変換テーブル記憶手段に記憶された前記変換テーブルを参照して、前記平文を構成するそれぞれの前記文字コードを対応する前記インデックス値に変換する平文変換手段、
    前記平文変換手段によって得られた前記インデックス値を順次取得し、ビット長を変えずに、前記インデックス値を暗号値に暗号化する暗号化手段、
    前記暗号化手段によって得られた前記暗号値を順次取得し、前記変換テーブル内の前記平文変換手段が変換時に参照した前記領域を参照して、前記暗号値を前記暗号値と同一の前記インデックス値に対応する前記文字コードに変換し、得られた前記文字コードの列を前記平文に対応する暗号文として出力する暗号文出力手段、
    として機能させることを特徴とする暗号処理プログラム。
  2. 前記暗号化手段は、予め初期値が格納されたレジスタの値を暗号化してビット列を生成し、生成した前記ビット列から前記インデックス値と同じビット長の部分ビット列を切り取り、前記インデックス値と所定の演算を行うことで前記暗号値を生成することを特徴とする請求項1記載の暗号処理プログラム。
  3. 前記暗号化手段は、1つの前記ビット列を生成すると、前記ビット列からそれぞれの前記インデックス値のビット長に応じた複数の前記部分ビット列を切り取り、複数の前記インデックス値に対応する前記暗号値を並行して生成することを特徴とする請求項2記載の暗号処理プログラム。
  4. 前記変換テーブルは、格納される前記文字コードの個数が異なる複数の前記領域に分割されている場合、出現頻度が高い文字の前記文字コードを、格納される個数が多い前記領域に優先的に格納することを特徴とする請求項1記載の暗号処理プログラム。
  5. 前記コンピュータを、更に、
    前記暗号文が入力されると、前記変換テーブル記憶手段に記憶された前記変換テーブルを参照して、前記暗号文を構成するそれぞれの前記文字コードを対応する前記インデックス値に変換する暗号文変換手段、
    前記暗号文変換手段によって得られた前記インデックス値を順次取得し、ビット長を変えずに、前記インデックス値を復号値に復号する復号手段、
    前記復号手段によって得られた前記復号値を順次取得し、前記変換テーブル内の前記暗号文変換手段が変換時に参照した前記領域を参照して、前記復号値を前記復号値と同一の前記インデックス値に対応する前記文字コードに変換し、得られた前記文字コードの列を前記暗号文に対応する前記平文として出力する平文出力手段、
    として機能させることを特徴とする請求項1記載の暗号処理プログラム。
  6. 文字単位で暗号処理を行う暗号処理方法において、
    それぞれ2のべき乗個の文字に関する情報を格納する1以上の領域に分割され、所定の文字コード体系に含まれる文字コードと、前記領域に格納された前記文字コードを前記領域内で個々に識別するために必要な最小のビット長のインデックス値とを対応付ける変換テーブルが変換テーブル記憶手段に記憶されており、平文変換手段が、前記所定の文字コード体系で符号化された平文が入力されると、前記変換テーブル記憶手段に記憶された前記変換テーブルを参照して、前記平文を構成するそれぞれの前記文字コードを対応する前記インデックス値に変換し、
    暗号化手段が、前記平文変換手段によって得られた前記インデックス値を順次取得し、ビット長を変えずに、前記インデックス値を暗号値に暗号化し、
    暗号文出力手段が、前記暗号化手段によって得られた前記暗号値を順次取得し、前記変換テーブル内の前記平文変換手段が変換時に参照した前記領域を参照して、前記暗号値を前記暗号値と同一の前記インデックス値に対応する前記文字コードに変換し、得られた前記文字コードの列を前記平文に対応する暗号文として出力する、
    ことを特徴とする暗号処理方法。
  7. 文字単位で暗号処理を行う暗号処理装置において、
    それぞれ2のべき乗個の文字に関する情報を格納する1以上の領域に分割されており、所定の文字コード体系に含まれる文字コードと、前記領域に格納された前記文字コードを前記領域内で個々に識別するために必要な最小のビット長のインデックス値とを対応付ける変換テーブルを記憶する変換テーブル記憶手段と、
    前記所定の文字コード体系で符号化された平文が入力されると、前記変換テーブル記憶手段に記憶された前記変換テーブルを参照して、前記平文を構成するそれぞれの前記文字コードを対応する前記インデックス値に変換する平文変換手段と、
    前記平文変換手段によって得られた前記インデックス値を順次取得し、ビット長を変えずに、前記インデックス値を暗号値に暗号化する暗号化手段と、
    前記暗号化手段によって得られた前記暗号値を順次取得し、前記変換テーブル内の前記平文変換手段が変換時に参照した前記領域を参照して、前記暗号値を前記暗号値と同一の前記インデックス値に対応する前記文字コードに変換し、得られた前記文字コードの列を前記平文に対応する暗号文として出力する暗号文出力手段と、
    を有することを特徴とする暗号処理装置。
JP2006340627A 2006-12-19 2006-12-19 暗号処理プログラム、暗号処理方法および暗号処理装置 Active JP5060119B2 (ja)

Priority Applications (3)

Application Number Priority Date Filing Date Title
JP2006340627A JP5060119B2 (ja) 2006-12-19 2006-12-19 暗号処理プログラム、暗号処理方法および暗号処理装置
US11/907,287 US7961871B2 (en) 2006-12-19 2007-10-10 Encryption process, encryption device, and computer-readable medium storing encryption program
CN200710182363.1A CN101206815B (zh) 2006-12-19 2007-10-18 加密装置和加密方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2006340627A JP5060119B2 (ja) 2006-12-19 2006-12-19 暗号処理プログラム、暗号処理方法および暗号処理装置

Publications (2)

Publication Number Publication Date
JP2008152059A true JP2008152059A (ja) 2008-07-03
JP5060119B2 JP5060119B2 (ja) 2012-10-31

Family

ID=39527222

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2006340627A Active JP5060119B2 (ja) 2006-12-19 2006-12-19 暗号処理プログラム、暗号処理方法および暗号処理装置

Country Status (3)

Country Link
US (1) US7961871B2 (ja)
JP (1) JP5060119B2 (ja)
CN (1) CN101206815B (ja)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2010079878A1 (ko) * 2009-01-09 2010-07-15 Lee Soon Goo 가변코드 테이블을 이용한 데이터 암복호화 장치 및 그 방법
JP2010246055A (ja) * 2009-04-10 2010-10-28 Hiroyuki Watanabe 暗号化・復号化システム、暗号化装置、復号化装置、暗号化方法、復号化方法、およびプログラム
JP2012514353A (ja) * 2008-12-29 2012-06-21 ノーテル・ネットワークス・リミテッド 通信チャネルでの暗号化の存在を隠すための帯域効率的な方法及びシステム
KR101428650B1 (ko) * 2014-03-07 2014-08-13 (주)케이사인 암호화 방법 및 복호화 방법

Families Citing this family (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP2241050B1 (en) * 2008-02-01 2018-08-08 Rambus Inc. Receiver with enhanced clock and data recovery
JP4962335B2 (ja) * 2008-02-04 2012-06-27 富士通株式会社 埋込みデータを復元するための方法
JP5539024B2 (ja) * 2010-05-27 2014-07-02 キヤノン株式会社 データ暗号化装置およびその制御方法
CN101937464B (zh) * 2010-09-13 2012-01-25 武汉达梦数据库有限公司 基于逐字索引的密文检索方法
CN102469345A (zh) * 2010-11-19 2012-05-23 康佳集团股份有限公司 多媒体媒体数据加解密方法
WO2012150637A1 (ja) * 2011-05-02 2012-11-08 富士通株式会社 抽出方法、情報処理方法、抽出プログラム、情報処理プログラム、抽出装置、および情報処理装置
CN102739403A (zh) * 2012-06-19 2012-10-17 深圳市文鼎创数据科技有限公司 动态令牌的身份认证方法及装置
CN103580857A (zh) * 2012-08-06 2014-02-12 重庆电子工程职业学院 一种基于背包加密的汉字报文数据压缩方法
JP2014192612A (ja) * 2013-03-26 2014-10-06 Toshiba Corp 生成装置、暗号化装置、復号装置、生成方法、暗号化方法、復号方法およびプログラム
CN104283859A (zh) * 2013-07-10 2015-01-14 上海信颐信息技术有限公司 广告机文件的加密解密方法
CN103825723B (zh) * 2014-01-24 2019-05-03 深圳市太和物联信息技术有限公司 一种加密方法和装置
CN104348609B (zh) * 2014-09-18 2017-06-06 成都西山居互动娱乐科技有限公司 一种非存储的密码管理算法
EP3483867B1 (en) * 2016-07-06 2022-04-20 Nippon Telegraph and Telephone Corporation System, device, method, and program for indexing a secret-shared array with secure multiparty computations
CN107634827A (zh) * 2017-10-15 2018-01-26 天津飞眼无人机科技有限公司 无人机保密通信系统
CN109711119A (zh) * 2018-12-29 2019-05-03 360企业安全技术(珠海)有限公司 加密代码的运行方法及装置、存储介质、终端
CN113810174B (zh) * 2021-09-16 2024-09-03 金蝶软件(中国)有限公司 一种数据处理方法以及相关设备

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2005141282A (ja) * 2003-11-04 2005-06-02 Fujitsu Ltd 文字データの暗号化プログラム
JP2007065253A (ja) * 2005-08-31 2007-03-15 Fujitsu Broad Solution & Consulting Inc 文字コード暗号処理プログラム、および文字コード暗号処理方法
JP2008039844A (ja) * 2006-08-01 2008-02-21 Fujitsu Broad Solution & Consulting Inc 暗号処理プログラムおよび暗号処理方法

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPWO2003013054A1 (ja) * 2001-07-17 2004-11-25 シャープ株式会社 処理に伴い暗号データの改ざん検出用データを生成する装置及び方法
US8054967B2 (en) * 2004-04-26 2011-11-08 Panasonic Corporation Computer system and computer program executing encryption or decryption

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2005141282A (ja) * 2003-11-04 2005-06-02 Fujitsu Ltd 文字データの暗号化プログラム
JP2007065253A (ja) * 2005-08-31 2007-03-15 Fujitsu Broad Solution & Consulting Inc 文字コード暗号処理プログラム、および文字コード暗号処理方法
JP2008039844A (ja) * 2006-08-01 2008-02-21 Fujitsu Broad Solution & Consulting Inc 暗号処理プログラムおよび暗号処理方法

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2012514353A (ja) * 2008-12-29 2012-06-21 ノーテル・ネットワークス・リミテッド 通信チャネルでの暗号化の存在を隠すための帯域効率的な方法及びシステム
WO2010079878A1 (ko) * 2009-01-09 2010-07-15 Lee Soon Goo 가변코드 테이블을 이용한 데이터 암복호화 장치 및 그 방법
JP2010246055A (ja) * 2009-04-10 2010-10-28 Hiroyuki Watanabe 暗号化・復号化システム、暗号化装置、復号化装置、暗号化方法、復号化方法、およびプログラム
JP4733793B2 (ja) * 2009-04-10 2011-07-27 裕之 渡辺 暗号化・復号化システム、暗号化装置、復号化装置、暗号化方法、復号化方法、およびプログラム
KR101428650B1 (ko) * 2014-03-07 2014-08-13 (주)케이사인 암호화 방법 및 복호화 방법

Also Published As

Publication number Publication date
CN101206815B (zh) 2011-06-15
JP5060119B2 (ja) 2012-10-31
US20080144809A1 (en) 2008-06-19
CN101206815A (zh) 2008-06-25
US7961871B2 (en) 2011-06-14

Similar Documents

Publication Publication Date Title
JP5060119B2 (ja) 暗号処理プログラム、暗号処理方法および暗号処理装置
JP4989055B2 (ja) 文字コード暗号処理プログラム、および文字コード暗号処理方法
JP3229148B2 (ja) 暗号化方法およびシステム
US20080260147A1 (en) Method and apparatus for encrypting message for maintaining message integrity, and method and apparatus for decrypting message for maintaining message integrity
US8467526B2 (en) Key evolution method and system of block ciphering
JP5060079B2 (ja) 暗号処理プログラム
JPWO2005103908A1 (ja) 暗号又は復号を行うコンピュータシステム及びコンピュータプログラム
RU2369024C2 (ru) Система защиты информационного содержания, устройство генерации данных ключей и устройство воспроизведения
US20100061550A1 (en) Data processing apparatus
WO2007001075A1 (ja) 暗号化処理装置、暗号化方法、復号化処理装置、復号化方法、及びデータ構造
JP2006311383A (ja) データ管理方法、データ管理システムおよびデータ管理装置
WO2015166701A1 (ja) 暗号化方法、プログラム、および、システム
JP2008185608A (ja) 暗号化装置、暗号復号装置、暗号化方法、暗号復号方法、及び、プログラム
KR20170103321A (ko) 보안성이 강화된 순서보존 암호화 방법 및 장치
JP4161859B2 (ja) 情報処理装置、情報記録媒体、および情報処理方法、並びにコンピュータ・プログラム
KR101148560B1 (ko) 비트 조합 순서를 이용한 암호화 방법 및 장치
WO2006115213A1 (ja) 回路更新システム
JP4644053B2 (ja) 暗号化装置及び方法、復号化装置及び方法
JP2006048158A (ja) データ格納方法及びデータ処理装置
JP2007034212A (ja) ブロック暗号装置、ブロック復号装置、それらの方法及びプログラム
JP2002023624A (ja) ブロック暗号通信方法とその装置、及びブロック暗号通信プログラムを記録した記録媒体
KR101978777B1 (ko) 다양한 암호화 방식을 조합한 암호화 장치 및 방법
KR20020025343A (ko) 기본키와 일회용키를 이용한 파일 암호 와 복호 방법 및그 장치
JP2007134860A (ja) 暗号化プログラムおよび復号化プログラム
JPH10293723A (ja) 外部記憶装置、暗号化ユニット装置、復号化ユニット装置、暗号化システム、復号化システム、暗号化方法及び復号化方法

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20091216

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20120508

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20120709

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20120731

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20120803

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20150810

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Ref document number: 5060119

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313111

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350