JP2010002525A - 文書・平文空間写像装置、平文空間・文書写像装置、方法及びプログラム - Google Patents

文書・平文空間写像装置、平文空間・文書写像装置、方法及びプログラム Download PDF

Info

Publication number
JP2010002525A
JP2010002525A JP2008159888A JP2008159888A JP2010002525A JP 2010002525 A JP2010002525 A JP 2010002525A JP 2008159888 A JP2008159888 A JP 2008159888A JP 2008159888 A JP2008159888 A JP 2008159888A JP 2010002525 A JP2010002525 A JP 2010002525A
Authority
JP
Japan
Prior art keywords
bit string
bit
unit
bits
document
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.)
Pending
Application number
JP2008159888A
Other languages
English (en)
Inventor
Kiichi Hanatani
嘉一 花谷
Hirobumi Muratani
博文 村谷
Atsushi Shinpo
淳 新保
Kenji Okuma
建司 大熊
Yasutomo Isotani
泰知 磯谷
Yuichi Komano
雄一 駒野
Kenichiro Furuta
憲一郎 古田
Tomoko Yonemura
智子 米村
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.)
Toshiba Corp
Original Assignee
Toshiba Corp
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 Toshiba Corp filed Critical Toshiba Corp
Priority to JP2008159888A priority Critical patent/JP2010002525A/ja
Publication of JP2010002525A publication Critical patent/JP2010002525A/ja
Pending legal-status Critical Current

Links

Images

Abstract

【課題】任意の平文を公開鍵を用いて暗号化する場合に平文空間に効率的に写像したり、平文空間から平文を効率的に復元したりすることを可能にする写像技術を提供する。
【解決手段】暗号化処理装置100は、任意のビット列を暗号化する際に当該ビット列に対して分割とパディングとを行って6次拡大体における素数位数のトーラス上の平文空間に写像する。復号処理装置200は、暗号文が復号されて6次拡大体におけるトーラスの圧縮表現に写像され圧縮されたビット列について、パディングが正しく行われているか否かを判定し、当該判定結果に応じてアンパディングを行って得られた各ビット列を結合する。
【選択図】 図1

Description

本発明は、平文を公開鍵を用いて暗号化する際に平文空間に写像する文書・平文空間写像装置、平文空間・文書写像装置、方法及びプログラムに関する。
通信路を流れる情報を保護するために、暗号を用いる方法がある。暗号には、例えば、共通鍵暗号と公開鍵暗号とがある。共通鍵暗号を用いる場合、通信相手と事前に鍵を共有しておく必要があるため、インターネットのような不特定多数との通信の際には鍵の共有や管理に大きな手間がかかる。公開鍵暗号は、事前に鍵を共有することなしに安全な通信を実現できるため、ネットワーク・セキュリティの基盤技術として幅広く用いられている。
現在、公開鍵暗号において典型的なセキュリティパラメータは1024ビット〜2048ビットである。セキュリティパラメータとは、公開鍵サイズや暗号文サイズを決定するパラメータであり、暗号方式の安全性に影響を与えるパラメータである。このセキュリティパラメータが大きくなれば、公開鍵サイズや暗号文サイズも大きくなる。解読が困難とされるセキュリティパラメータは年々大きくなっている。これは、計算機の進歩に伴い攻撃者の能力も向上するためである。公開鍵暗号では公開鍵サイズや暗号文サイズは、暗号方式により異なるが、セキュリティパラメータの数倍となる。このため、メモリ容量や通信帯域が十分でない装置ではセキュリティパラメータの増大が問題になる。
そこで、公開鍵暗号における公開鍵サイズや暗号文サイズを圧縮する方法が提案されている(例えば、非特許文献1参照)。この方法は、公開鍵暗号で用いる数の集合のうち代数的トーラスと呼ばれる部分集合を用いると、集合の要素を小さいビット数で表現できるという事実に基づいている。代数的トーラスの属する拡大体の次数nが高々二つの素数p,qの冪の積n=(p^m)*(q^w)であるとき、圧縮率(=圧縮前のビット数/圧縮後のビット数)はn/φ(n)となることが知られている。ただし、φ(・)はオイラー関数である。尚、^はべき乗を表す。p^mは、pのm乗である。小さいビット数の表現へ変換を行う写像をρと書き、それぞれRS圧縮写像と呼ぶことにする。暗号文を圧縮する場合の具体例を示す。RS圧縮写像では、暗号文cを入力として計算を行い、圧縮暗号文γを得る(式1参照)。
ρ(c)=γ・・・(式1)
元のビット数の表現に戻すには、ρの逆写像を計算すればよい。ρの逆写像を‘ρ-1’と書き、RS伸長写像と呼ぶことにする。RS伸長写像では、圧縮暗号文としてγが与えられたときに計算を行い、cを得る(式2参照)。
ρ-1(γ)= c・・・(式2)
また、非特許文献1では、次のような圧縮写像ρ6、伸長写像‘ρ6-1’の構成法が示されている。圧縮写像ρ6は、6次拡大体F_{p^6}上のトーラスTの任意の元tを入力として計算し、{0,…,p-1}の要素と{1,…,p-1}の要素との組を得る(式3参照)。
ρ6(t)= (a,b) ∈ {0,…,p-1}×{1,…,p-1}・・・(式3)
伸長写像‘ρ6-1’は、(a,b) ∈ {0,…,p-1}×{1,…,p-1}を入力として計算し、6次拡大体F_{p^6}上のトーラスTの元tを得る(式4参照)。
ρ-1(a,b)=t ∈ T・・・(式4)
一方、Cramer−Shoup暗号は、標準モデルで安全性が保証されている方式であるが、公開鍵や暗号文の成分の数が多いという特徴がある。また、有限アーベル群G上の素数位数の部分巡回群G〜を用いて暗号化を行うため、暗号化できる平文は部分巡回群G〜に属する要素のみとなる(例えば、非特許文献2参照)。部分巡回群G~に属する要素は、非連続な整数値を要素とする集合であるため、任意の平文を暗号化するのが難しい。従来の方式では、この問題を解決するために、Cramer−Shoup暗号の他に、ハッシュ関数と任意の平文を暗号化可能な共通鍵暗号とを用いていた(例えば非特許文献3参照)。尚、有限アーベル群とは交換法則が成り立つ演算が定義される数の集合であり、その素数位数の部分巡回群とは、前記有限アーベル群の素数個の数を部分集合の要素とし、部分集合の全ての要素は生成元gのべき乗で表現することができ、さらに部分集合上で前記有限アーベル群と同じ演算が定義される。
K.Rubin and A.Silverberg, "Torus-Based Cryptography", CRYPTO 2003, LNCS 2729, pp. 349-365, 2003. R.Cramerand V.Shoup, "A practical key cryptosystem provably secure against adaptive chosen ciphertext attack", CRYPTO 1998, LNCS 1462, pp. 13-25, 1998. V.Shoup, "ACE Encrypt: The Advanced Cryptographic Engine’s Public Key Encryption Scheme", "http://www.zurich.ibm.com/security/ace/ace_encrypt.pdf",2000.
Cramer−Shoup暗号は、有限アーベル群G上の素数位数の部分巡回群G〜上で暗号化や復号を行う暗号系で、G〜上の要素を安全に暗号化したり復号したりする方式である。一般にG~に属する要素は、非連続な整数値を要素とする集合であるため、Cramer−Shoup暗号のみを用いて任意の平文を暗号化したり復号したりするのは困難である。非特許文献3の技術では、ハッシュ関数と共通鍵暗号とを組み合わせて用いることで、任意の平文を暗号化したり復号したりしている。しかし、共通鍵暗号を用いる場合数々の演算が必要となるため、方式の構成が複雑になる。
本発明は、上記に鑑みてなされたものであって、任意の平文を公開鍵を用いて暗号化する場合に平文空間に効率的に写像したり、平文空間から平文を効率的に復元したりすることを可能にするための文書・平文空間写像装置、平文空間・文書写像装置、方法及びプログラムを提供することを目的とする。
上述した課題を解決し、本発明は、複数のビットが配列された任意のビット列を公開鍵を用いて暗号化する場合に平文空間に写像する文書・平文空間写像装置であって、ビット列と、当該ビット列を標数p及び拡大次数mの有限体F_{p^m}の6次拡大体上の部分群の1つである素数位数のトーラスの要素の圧縮表現であるF_{p^m}× F_{p^m}^*の要素(p:素数,m:自然数,p^m:pのm乗)に写像するためのpとmとを取得する取得部と、取得された前記ビット列を、F_{p^m}の要素を表現するのに必要な m*|p-1|ビット以下のビット列に各々分割する分割部と、分割された各前記ビット列に対して可逆な変換処理を行って、F_{p^m}の要素に写像する第1変換部と、分割された各前記ビット列に対して可逆な変換処理を行ってF_{p^m}^*の要素に写像する第2変換部と、写像されたF_{p^m}×F_{p^m}^*の要素の組を出力する出力部とを備えることを特徴とする。
また、本発明は、複数のビットが配列された任意のビット列を公開鍵を用いて暗号化する場合に平文空間に写像する文書・平文空間写像装置であって、ビット列と、当該ビット列を標数p及び拡大次数mの有限体F_{p^m}の6次拡大体上の部分群の1つである素数位数のトーラスの要素の圧縮表現 であるF_{p^m}× F_{p^m}^*の要素(p:素数,m:自然数,p^m:pのm乗) のベクトル表現の組に写像するためのpとmとを取得する取得部と、取得された前記ビット列を、F_{p^m}の要素をベクトル表現するのに必要な m*|p-1|ビット以下のビット列に各々分割する分割部と、分割された各前記ビット列に対して可逆な変換処理を行って、F_{p^m}の要素のベクトル表現に写像する第1変換部と、分割された各前記ビット列に対して可逆な変換処理を行ってF_{p^m}^*の要素のベクトル表現に写像する第2変換部と、写像されたF_{p^m}×F_{p^m}^*の要素のベクトル表現の組を出力する出力部とを備えることを特徴とする。
また、本発明は、複数のビットが配列されたビット列であり暗号化されたビット列を公開鍵に対応する秘密鍵を用いて復号した後平文空間からビット列に写像する平文空間・文書写像装置であって、標数p及び拡大次数mの有限体の6次拡大体上の部分群の1つである素数位数のトーラスの要素の圧縮表現 F_{p^m}×F_{p^m}^*の要素の組により表現されるビット列を取得する取得部と、取得された前記ビット列に基づいて、F_{p^m}の要素で表現される第1付加ビット列集合に対して前記変換処理の逆変換処理を行うことにより、第1ビット列を得る第1逆変換部と、取得された前記ビット列に基づいて、F_{p^m}^*の要素で表現される第2付加ビット列集合に対して前記変換処理の逆変換処理を行うことにより、第2ビット列を得る第2逆変換部と、前記第1ビット列及び前記第2ビット列を結合する結合部とを備えることを特徴とする。
また、本発明は、取得部と、分割部と、第1変換部と、第2変換部と、出力部とを備え、複数のビットが配列された任意のビット列を公開鍵を用いて暗号化する場合に平文空間に写像する文書・平文空間写像装置文書・平文空間写像装置で実行される文書・平文空間写像方法であって、前記取得部が、ビット列と、当該ビット列を標数p及び拡大次数mの有限体F_{p^m}の6次拡大体上の部分群の1つである素数位数のトーラスの要素の圧縮表現であるF_{p^m}× F_{p^m}^*の要素(p:素数,m:自然数,p^m:pの乗)に写像するためのpとmとを取得する取得ステップと、前記分割部が、取得された前記ビット列を、F_{p^m}の要素を表現するのに必要な m*|p-1|ビット以下のビット列に各々分割する分割ステップと、前記第1変換部が、分割された各前記ビット列に対して可逆な変換処理を行ってF_{p^m}の要素に写像する第1変換ステップと、前記第2変換部が、分割された各前記ビット列に対して可逆な変換処理を行ってF_{p^m}^*の要素の要素に写像する第2変換ステップと、前記出力部が、写像されたF_{p^m}×F_{p^m}^*の要素の組を出力する出力ステップとを含むことを特徴とする。
また、本発明は、取得部と、分割部と、第1変換部と、第2変換部と、出力部とを備え、複数のビットが配列された任意のビット列を公開鍵を用いて暗号化する場合に平文空間に写像する文書・平文空間写像装置で実行される文書・平文空間写像方法であって、前記取得部が、ビット列と、当該ビット列を標数p及び拡大次数mの有限体F_{p^m}の6次拡大体上の部分群の1つである素数位数のトーラスの要素の圧縮表現 であるF_{p^m}× F_{p^m}^*の要素(p:素数,m:自然数,p^m:pのm乗) のベクトル表現の組に写像するためのpとmとを取得する取得ステップと、前記分割部が、取得された前記ビット列を、F_{p^m}の要素をベクトル表現するのに必要な m*|p-1|ビット以下のビット列に各々分割する分割ステップと、前記第1変換部が、分割された各前記ビット列に対して可逆な変換処理を行って、F_{p^m}の要素のベクトル表現に写像する第1変換ステップと、前記第2変換部が、分割された各前記ビット列に対して可逆な変換処理を行ってF_{p^m}^*の要素のベクトル表現に写像する第2変換ステップと、前記出力部が、写像されたF_{p^m}×F_{p^m}^*の要素のベクトル表現の組を出力する出力ステップとを含むことを特徴とする。
また、本発明は、取得部と、判定部と、第1変換部と、第2変換部と、結合部とを備え、複数のビットが配列されたビット列であり暗号化されたビット列を公開鍵に対応する秘密鍵を用いて復号した後平文空間からビット列に写像する平文空間・文書写像装置で実行される平文空間・文書方法であって、前記取得部が、標数p及び拡大次数mの有限体の6次拡大体上の部分群の1つである素数位数のトーラスの要素の圧縮表現 F_{p^m}×F_{p^m}^*の要素の組により表現されるビット列を取得する取得ステップと、前記第1変換部が、取得された前記ビット列に基づいて、F_{p^m}の要素で表現される第1付加ビット列集合に対して前記変換処理の逆変換処理を行うことにより、第1ビット列を得る第1逆変換ステップと、前記第2変換部が、取得された前記ビット列に基づいて、F_{p^m}^*の要素で表現される第2付加ビット列集合に対して前記変換処理の逆変換処理を行うことにより、第2ビット列を得る第2逆変換ステップと、前記結合部が、前記第1ビット列及び前記第2ビット列を結合する結合ステップとを含むことを特徴とする。
また、本発明は、プログラムであって、上記の方法をコンピュータに実行させることを特徴とする。
本発明によれば、任意の平文を公開鍵を用いて暗号化する場合に、方式を複雑にすることなく、平文を平文空間に写像したり、平文空間から平文を復元したりすることを可能にする。
以下に添付図面を参照して、この発明にかかる文書・平文空間写像装置、平文空間・文書写像装置、方法及びプログラムの最良な実施の形態を詳細に説明する。
[第1の実施の形態]
(1)構成
まず、本実施の形態にかかる暗号化処理装置及び復号処理装置について図1を用いて説明する。本実施の形態にかかる暗号化処理装置100と復号処理装置200とは、インターネット等のネットワーク300に接続されている。暗号化処理装置100は、平文に対して公開鍵を用いた暗号化処理を行って暗号文を生成して、ネットワーク300を介して復号処理装置200に送信する。復号処理装置200は、ネットワーク300を介して暗号化処理装置100から送信された暗号文を受信して、公開鍵に対応した秘密鍵を用いて復号して、平文を得る。
尚、これらの暗号化処理装置100及び復号処理装置200は各々、装置全体を制御するCPU(Central Processing Unit)等の制御装置と、各種データや各種プログラムを記憶するROM(Read Only Memory)やRAM(Random Access Memory)等の記憶装置と、各種データや各種プログラムを記憶するHDD(Hard Disk Drive)やCD(Compact Disk)ドライブ装置等の外部記憶装置と、外部装置の通信を制御する通信I/F(interface)と、これらを接続するバスとを備えており、通常のコンピュータを利用したハードウェア構成となっている。
次に、暗号化処理装置100の備えるCPUが記憶装置や外部記憶装置に記憶された各種プログラムを実行することにより実現される各種機能について具体的に説明する。図1において、暗号化処理装置100内に示される各部は、暗号化処理装置100のCPUのプログラム実行時にRAMなどの記憶装置上に生成されるものである。暗号化処理装置100は、文書・平文空間写像部101と、伸張部106と、暗号化部107と、送信部108とを有する。
尚、本実施の形態においては、まず、拡大次数mが‘1’の場合について説明する。文書・平文空間写像部101は、入力された平文を平文空間に写像する。文書・平文空間写像部101は、第1文書分割部102と、第2文書分割部103と、第1パディング部104と、第2パディング部105とを有する。第1文書分割部102には、平文として複数のビット列が配列された任意のビット列と、この平文を6次拡大体における素数位数のトーラス上の要素の圧縮表現F_p×F_p^*(p:素数)の組に写像するための標数pとが入力される。尚、ここでは、当該圧縮表現F_p×F_p^*の要素についてベクトル表現の組に写像するものとする。‘F_p={0,…,p-1}’であり、‘F_p^*={1,…,p-1}’である。圧縮表現における‘×’は直積を意味する。また、ここでは、n*{2*(|p-1|-1)-1}ビット、即ち、n*(2*|p-1|-3)ビットのビット列が第1文書分割部102に入力されるものとする。nは各々任意の自然数であり、|p-1|は(p-1)を表現するのに必要なビット数である。‘*’は乗算を意味する。第1文書分割部102は、n*(2*|p-1|-3)ビットのビット列を(2*|p-1|-3)ビット毎のビット列に分割して、n組の(2*|p-1|-3)ビットのビット列を出力する。第2文書分割部103は、第1文書分割部102から出力されたn組の(2*|p-1|-3)ビットのビット列を入力とし、組毎に、先頭から(|p-1|-1)ビット目までのビット列((|p-1|-1)ビットのビット列)と、|p-1|ビット目から(|p-1|+j-1)ビット目までのビット列(jビットのビット列)と、(|p-1|+j)ビット目から(2*|p-1|-3)ビット目までのビット列((|p-1|-j-2)ビットのビット列)とに分割してこれら3つのビット列を組毎に出力する。jは各々任意の自然数であり、予め定められているものとする。
図2は、n*(2*|p-1|-3)ビットのビット列の分割及びパディングを概念的に示す図である。同図に示されるように、n*(2|p-1|-3)ビットのビット列D1が、 (2*|p-1|-3)ビットのn組のビット列D10に第1文書分割部102により分割される。各ビット列D10が、(|p-1|-1)ビットのビット列D20と、jビットのビット列D21と、(|p-1|-j-2)ビットのビット列D22とに第2文書分割部103により各々分割される。
第1パディング部104は、第2文書分割部103から組毎に3つずつ出力されたビット列のうち、先頭から(|p-1|-1)ビット目までのビット列((|p-1|-1)ビットのビット列)を入力とし、先頭に‘0’を付加することによりパディングを行い、パディング後の0||((|p-1|-1)ビットのビット列)を組毎に出力する。尚、||は結合を表す。第2パディング部105は、第2文書分割部103から組毎に3つずつ出力されたビット列のうち、|p-1|ビット目から(|p-1|+j-1)ビット目までのビット列(jビットのビット列)と、(|p-1|+j)ビット目から(2*|p-1|-3)ビット目までのビット列((|p-1|-j-2)ビットのビット列)とを入力とし、前者のビット列の先頭に’0’をパディングすると共に、後者のビット列の先頭に’1’をパディングし、これらのビット列を結合して、0||(jビットのビット列)||1||((|p-1|-j-2)ビットのビット列)を組毎に出力する。即ち、図2に示されるように、ビット列D20の先頭に‘0’が第1パディング部104によりパディングされる。また、第2パディング部105により、ビット列D21の先頭に‘0’がパディングされ、ビット列D22の先頭に‘1’がパディングされこれらが結合される。そして、これが、先頭ビットが‘0’であり、所定のビット位置(ここでは(j+2)ビット目である)が‘1’であるビット列となる。
伸張部106は、第1パディング部104から出力されたビット列及び第2パディング部105から出力されたビット列を6次元拡大体上に写像して伸張して、データmiを得る。伸張の方法については、例えば非特許文献1に示されるため、ここではその詳細な説明を省略する。暗号化部107は、伸張部106により伸張されて得られたデータmiを、公開鍵を用いて暗号化し、暗号文Ciを出力する。暗号化の方法については、例えば非特許文献2に示されるため、ここではその詳細な説明を省略する。送信部108は、暗号化部107により出力された暗号文Ciを送信する。
次に、復号処理装置200の備えるCPUが記憶装置や外部記憶装置に記憶された各種プログラムを実行することにより実現される各種機能について具体的に説明する。図1において、復号処理装置200内に示される各部は、復号処理装置200のCPUのプログラム実行時にRAMなどの記憶装置上に生成されるものである。復号処理装置200は、受信部201と、復号部202と、圧縮部203と、平文空間・文書写像部204とを有する。
受信部201は、上述した暗号化処理装置100から出力された暗号文Ciを受信する。復号部202は、受信部201により受信された暗号文Ciを入力とし、上述の公開鍵に対応する秘密鍵を用いて、暗号文Ciを復号して、データmiを得る。復号の方法は、例えば非特許文献2に示されるため、ここではその詳細な説明を省略する。圧縮部203は、復号部202により暗号文Ciが復号されて得られたデータmiを6次拡大体におけるトーラスの圧縮表現に写像することにより、圧縮して、{0,…,p-1}により表現される|p-1|ビットのビット列である第1付加ビット列と{1,…,p-1}により表現される|p-1|ビットのビット列である第2付加ビット列とをn組出力する。圧縮の方法は、例えば非特許文献1に示されるため、ここではその詳細な説明を省略する。
平文空間・文書写像部204は、圧縮部203により出力されたn組の第1ビット列及び第2ビット列について、組毎に、パディングが正しく行われているか否かを判定し、判定結果に応じてアンパディングを行って、各ビット列を結合する。平文空間・文書写像部204は、判定部205と、第1アンパディング部206と、第2アンパディング部207と、第1文書結合部208と、第2文書結合部209とを有する。判定部205は、組毎の|p-1|ビットの第1付加ビット列及び|p-1|ビットの第2付加ビット列を入力とし、以下の判定条件を満たす場合、パディングが正しく行われていると判定し、第1付加ビット列及び第2付加ビット列を出力し、判定条件を満たさない場合、パディングが正しく行われていないと判定し、第1付加ビット列及び第2付加ビット列を出力しない。判定条件とは、第1付加ビット列の先頭ビットが‘0’且つ第2付加ビット列の先頭ビットが‘0’且つ第2付加ビット列の(j+2)ビット目が‘1’であることである。
第1アンパディング部206は、判定部205から第1付加ビット列及び第2付加ビット列が出力された場合、|p-1|ビットの第1ビット列について、組毎に、先頭ビットの‘0’を取り除くことによりアンパディングを行って、アンパディング後の(|p-1|-1)ビットのビット列である第1ビット列を出力する。第2アンパディング部207は、判定部205から第1付加ビット列及び第2付加ビット列が出力された場合、|p-1|ビットの第2付加ビット列について、組毎に、先頭ビットの‘0’を取り除くと共に(j+2)ビット目の‘1’を取り除き、アンパディング後の先頭からjビット目までのビット列(jビットのビット列)及び(j+1)ビット目から(|p-1|-2)ビット目までのビット列((|p-1|-j-2)ビットのビット列)である第2ビット列を出力する。
第1文書結合部208は、第1アンパディング部206から組毎に出力された(|p-1|-1)ビットのビット列である第1ビット列と、第2アンパディング部207から組毎に出力されたjビットのビット列及び(|p-1|-j-2)ビットのビット列である第2ビット列を入力とし、これらを結合して、((|p-1|-1)ビットのビット列)||(jビットのビット列)||((|p-1|-j-2)ビットのビット列)を組毎に出力する。第2文書結合部209は、第1文書結合部208から組毎にn組の出力された(2*|p-1|-3)ビットのビット列を入力とし、これらを順番に結合して、(n*(2*|p-1|-3))ビットのビット列を出力する。ここで出力されるビット列が、図2に示したビット列D1である平文となる。
(2)動作
<文書・平文空間写像処理>
次に、本実施の形態にかかる暗号化処理装置100が平文を暗号化する処理について説明する。ここでは、特に、文書・平文空間写像部101が行う文書・平文空間写像処理の手順について図3を用いて説明する。文書・平文空間写像部101は、n*(2*|p-1|-3)ビットの文書が入力されると、(2*|p-1|-3)ビット毎のビット列に分割して、n組の(2*|p-1|-3)ビットのビット列を出力する(ステップS1)。次いで、文書・平文空間写像部101は、n組の(2*|p-1|-3)ビットについて、組毎に、先頭から(|p-1|-1)ビット目までのビット列((|p-1|-1)ビットのビット列)と、|p-1|ビット目から(|p-1|+j-1)ビット目までのビット列(jビットのビット列)と、(|p-1|+j)ビット目から(2*|p-1|-3)ビット目までのビット列(|p-1|-j-2)ビットのビット列)とに分割してこれら3つのビット列を出力する(ステップS2)。
そして、文書・平文空間写像部101は、ステップS2で組毎に3つずつ出力されたビット列のうち、先頭から(|p-1|-1)ビット目までのビット列((|p-1|-1)ビットのビット列)について、先頭に‘0’をパディングし、0||((|p-1|-1)ビットのビット列)を組毎に出力する(ステップS3)。また、文書・平文空間写像部101は、ステップS2で組毎に3つずつ出力されたビット列のうち、|p-1|ビット目から(|p-1|+j-1)ビット目までのビット列(jビットのビット列)と、(|p-1|+j)ビット目から(2*|p-1|-3)ビット目までのビット列((|p-1|-j-2)ビットのビット列)とについて、前者のビット列の先頭に‘0’をパディングすると共に、後者のビット列の先頭に‘1’をパディングし、これらのビット列を結合して、0||(jビットのビット列)||1||((|p-1|-j-2)ビットのビット列)を組毎に出力する(ステップS4)。
そして、図示はしないが、n組全てについてステップS3及びステップS4でビット列が各々出力されて、これらのビット列が伸張部106に入力されると、伸張部106は、これを伸張して、データmiを得る。暗号化部107は、伸張部106により伸張されて得られたデータmiを、公開鍵を用いて暗号化し、暗号文Ciを出力する。そして、送信部108が、暗号文Ciを復号処理装置200に送信する。
<平文空間・文書写像処理>
次に、暗号化処理装置100から送信された暗号文Ciを復号処理装置200が復号する処理について説明する。ここでは、特に、平文空間・文書写像部204が行う平文空間・文書写像処理の手順について図4を用いて説明する。まず、図示はしないが、受信部201が暗号文Ciを受信し、復号部202が、上述の公開鍵に対応する秘密鍵を用いて、暗号文Ciを復号してデータmiを得る。圧縮部203は、復号部202により暗号文Ciが復号されて得られたデータmiを6次拡大体におけるトーラスの圧縮表現に写像することにより、圧縮して、{0,…,p-1}により表現される|p-1|ビットの第1ビット列と{1,…,p-1}により表現される|p-1|ビットの第2ビット列とをn組出力する。
次いで、平文空間・文書写像部204は、圧縮部203により出力された|p-1|ビットの第1ビット列及び|p-1|ビットの第2ビット列とについて、組毎に、パディングが正しく行われているか否かを判定する(ステップS20)。具体的には、平文空間・文書写像部204は、判定条件を満たさない場合、パディングが正しく行われていないと判定して(ステップS20:NO)、エラーを出力し(ステップS21)、判定条件を満たす場合、パディングが正しく行われていると判定して(ステップS20:YES)、第1付加ビット列及び第2付加ビット列を組毎に出力する(ステップS22)。尚、ここでの判定条件は、上述したように、第1付加ビット列の先頭ビットが‘0’且つ第2付加ビット列の先頭ビットが‘0’且つ第2付加ビット列の(j+2)ビット目が‘1’であることである。
次いで、平文空間・文書写像部204は、ステップS22で出力された|p-1|ビットの第1付加ビット列について、先頭ビットの‘0’を取り除き、(|p-1|-1)ビットのビット列である第1ビット列を組毎に出力する(ステップS23)。また、平文空間・文書写像部204は、ステップS22で出力された|p-1|ビットの第2付加ビット列について、先頭ビットの‘0’を取り除くと共に(j+2)ビット目の‘1’を取り除くために、2ビット目から(j+1)ビット目までのビット列(jビットのビット列)と、(j+3)ビット目から(|p-1|)ビット目までのビット列((|p-1|-j-2)ビットのビット列)とである第2ビット列を組毎に出力する(ステップS24)。
その後、平文空間・文書写像部204は、ステップS23で組毎に出力された(|p-1|-1)ビットの第1ビット列と、ステップS24で組毎に出力されたjビットのビット列及び(|p-1|-j-2)ビットの第2ビット列とが入力されると、これらを結合して、((|p-1|-1)ビットのビット列)||(jビットのビット列)||((|p-1|-j-2)ビットのビット列)を組毎に出力する(ステップS25)。次いで、平文空間・文書写像部204は、ステップS25で組毎にn組の出力された(2*|p-1|-3)ビットのビット列を順番に結合して、(n*(2*|p-1|-3))ビットのビット列を出力する(ステップS26)。即ち、{0,…,p-1}×{1,…,p-1}の組からビット列に写像される。
以上のようにして、任意の平文を暗号化する際に、当該平文を分割しパディングを行うことで{0,…,p-1}×{1,…,p-1}の要素の組を出力する。一方、暗号化されたビット列を復号する際には、{0,…,p-1}×{1,…,p-1}の要素の組を入力としパディングを外し結合することで平文を復元する。このように、6次拡大体における素数位数のトーラスT上で暗号化や復号を行うCramer−Shoup暗号を用いれば、{0,…,p-1}×{1,…,p-1}の上の任意の要素を暗号化したり復号したりすることができる。
即ち、|p-1|ビットより短いビット列の先頭ビットに‘0’をパディングすることにより、{0,…,2^{|p-1|-1}-1}の要素になるため、必ず{0,…,p-1}に含まれるよう写像できる。また、|p-1|ビットより短いビット列の先頭ビットに‘0’をパディングし、少なくとも1つのビット位置に‘1’をパディングすることにより、{1,…,2^{|p-1|-1}-1}の要素になるため、必ず{1,…,p-1}に含まれるよう写像できる。なぜならば、2^{|p-1|-1}は2の倍数のため素数にはならず、|p-1|ビットの素数は必ず2^{|p-1|-1}以上となるからである。そして、このようにパディングされたビット位置が予め分かっていれば、そのビット位置のビットを取り除いたビット列を結合することで元のビット列を復元することができる。
従って、上述の実施の形態によれば、ビット列の分割とパディングとを行うことで、任意のビット列を、6次拡大体における素数位数のトーラスを利用したCramer−Shoup暗号の平文空間に効率良く写像することができる。このため、共通鍵暗号を利用することなく効率的に暗号化したり復号したりすることができる。
[第2の実施の形態]
次に、暗号化処理装置及び復号処理装置の第2の実施の形態について説明する。なお、上述の第1の実施の形態と共通する部分については、同一の符号を使用して説明したり、説明を省略したりする。
(1)構成
本実施の形態にかかる暗号化処理装置100の有する文書・平文空間写像部101の各機能は上述の第1の実施の形態と以下の点で異なる。文書・平文空間写像部101の第1文書分割部102に入力される文書は、n*(2*|p-1|-2)ビットとなる。第1文書分割部102は、当該文書を(2*|p-1|-2)ビット毎のビット列に分割して、n組の(2*|p-1|-2)ビットのビット列を出力する。第2文書分割部103は、第1文書分割部102から出力されたn組の(2*|p-1|-2)ビットのビット列を入力とし、組毎に、先頭から(|p-1|-1)ビット目までのビット列((|p-1|-1)ビットのビット列)と、|p-1|ビット目から(2*|p-1|-2)ビット目までのビット列((|p-1|-1)ビットのビット列)とに分割してこれら2つのビット列を組毎に出力する。図5は、n*(2*|p-1|-2)ビットのビット列の分割及びパディングを概念的に示す図である。同図に示されるように、n組の(2*|p-1|-2)ビットのビット列D30が、(2*|p-1|-2)ビットのn組のビット列D40に第1文書分割部102により分割される。各ビット列D40が、(|p-1|-1)ビットのビット列D50と、(|p-1|-1)ビットのビット列D51とに第2文書分割部103により各々分割される。
第1パディング部104は、第2文書分割部103から組毎に2つずつ出力されたビット列のうち、先頭から(|p-1|-1)ビット目までのビット列((|p-1|-1)ビットのビット列)を入力とし、先頭に‘0’をパディングし、0||((|p-1|-1)ビットのビット列)を組毎に出力する。第2パディング部105は、第2文書分割部103から組毎に2つずつ出力されたビット列のうち、|p-1|ビット目から(2*|p-1|-2)ビット目までのビット列((|p-1|-1)ビット)を入力とし、(|p-1|-1)ビットが全て‘0’である場合、先頭に‘1’をパディングして、1||((|p-1|-1)ビットのビット列)を組毎に出力し、(|p-1|-1)ビットのうち少なくとも1つのビットが‘1’である場合、先頭に‘0’をパディングして、0||((|p-1|-1)ビットのビット列)を組毎に出力する。即ち、図5に示されるように、ビット列D50の先頭に‘0’が第1パディング部104によりパディングされる。また、ビット列D51については、(|p-1|-1)ビットの各値に応じて、先頭に‘0’又は‘1’が第2パディング部105によりパディングされる。
本実施の形態にかかる復号処理装置200の有する平文空間・文書写像部204の各機能が上述の第1の実施の形態と以下の点で異なる。平文空間・文書写像部204の判定部205は、上述の第1の実施の形態と同様に、{0,…,p-1}により表現される|p-1|ビットのビット列である第1付加ビット列と{1,…,p-1}により表現される|p-1|ビットのビット列である第2付加ビット列とについて、組毎に、判定条件を満たすか否かを判定し、当該判定結果に応じて、第1ビット列及び第2ビット列を出力するが、その判定条件が上述の第1の実施の形態と異なる。ここでの判定条件は、第1付加ビット列の先頭ビットが‘0’且つ第2付加ビット列の先頭ビットが‘1’であるとき他のビットは‘0’である又は第2付加ビット列の先頭ビットが‘0’であるとき他のビットのうち少なくとも1つは‘1’であることである。第1アンパディング部206は、判定部205から第1付加ビット列及び第2付加ビット列が出力された場合、|p-1|ビットの第1付加ビット列について、組毎に、先頭ビットの‘0’を取り除き、(|p-1|-1)ビットのビット列である第1ビット列を出力する。第2アンパディング部207は、判定部205から第1付加ビット列及び第2付加ビット列が出力された場合、|p-1|ビットの第2付加ビット列について、組毎に、先頭ビットの‘0’又は‘1’を取り除き、(|p-1|-1)ビットのビット列である第2ビット列を出力する。第1文書結合部208は、第1アンパディング部206から組毎に出力された(|p-1|-1)ビットの第1ビット列と、第2アンパディング部207から組毎に出力された(|p-1|-1)ビットの第2ビット列とを入力とし、これらを結合して、((|p-1|-1)ビットのビット列)||((|p-1|-1)ビットのビット列)を組毎に出力する。第2文書結合部209は、第1文書結合部208から組毎にn組の出力された(2*|p-1|-2)ビットのビット列を入力とし、これらを順番に結合して、(n*(2*|p-1|-2))ビットの文書を出力する。ここで出力されるビット列が、図5に示したビット列D30である平文となる。
(2)動作
<文書・平文空間写像処理>
次に、本実施の形態にかかる暗号化処理装置100の有する文書・平文空間写像部101が行う文書・平文空間写像処理の手順について図6を用いて説明する。文書・平文空間写像部101は、n*(2*|p-1|-2)ビットのビット列が入力されると、(2*|p-1|-2)ビット毎のビット列に分割して、n組の(2*|p-1|-2)ビットのビット列を出力する(ステップS40)。次いで、文書・平文空間写像部101は、n組の(2*|p-1|-2)ビットについて、組毎に、先頭から(|p-1|-1)ビット目までのビット列((|p-1|-1)ビットのビット列)と、|p-1|ビット目から(2*|p-1|-2)ビット目までのビット列((|p-1|-1)ビットのビット列)とに分割してこれら2つのビット列を組毎に出力する(ステップS41)。そして、文書・平文空間写像部101は、ステップS41で組毎に2つずつ出力されたビット列のうち、先頭から(|p-1|-1)ビット目までのビット列((|p-1|-1)ビットのビット列)について、先頭に‘0’をパディングし、0||((|p-1|-1)ビットのビット列)を組毎に出力する(ステップS42)。また、文書・平文空間写像部101は、ステップS41で組毎に2つずつ出力されたビット列のうち、|p-1|ビット目から(2*|p-1|-2)ビット目までのビット列((|p-1|-1)ビットのビット列)について、(|p-1|-1)ビットが全て‘0’である場合、先頭に‘1’をパディングして、1||((|p-1|-1)ビットのビット列)を組毎に出力し、(|p-1|-1)ビットのうち少なくとも1つのビットが‘1’である場合、先頭に‘0’をパディングして、0||((|p-1|-1)ビットのビット列)を組毎に出力する(ステップS43)。以降、上述の第1の実施の形態と同様にして、n組全てについてステップS3及びステップS4で出力されたビット列が伸張され、公開鍵を用いて暗号化され、暗号文Ciが出力されて、復号処理装置200に送信される。
<平文空間・文書写像処理>
次に、暗号化処理装置100から送信された暗号文Ciを復号処理装置200が復号する際に、平文空間・文書写像部204が行う平文空間・文書写像処理の手順について図7を用いて説明する。上述の第1の実施の形態と同様にして、暗号文Ciが、上述の公開鍵に対応する秘密鍵を用いて、復号され圧縮されることにより、{0,…,p-1}により表現される|p-1|ビットの第1ビット列と{1,…,p-1}により表現される|p-1|ビットの第2ビット列とがn組出力されるものとする。ステップS20〜S22は上述の第1の実施の形態と同様である。但し、ここでの判定条件は、上述したように、第1付加ビット列の先頭ビットが‘0’且つ第2付加ビット列の先頭ビットが‘1’であるとき他のビットは‘0’である又は第2付加ビット列の先頭ビットが‘0’であるとき他のビットのうち少なくとも1つは‘1’であることである。ステップS60では、平文空間・文書写像部204は、ステップS61で出力された|p-1|ビットの第1付加ビット列について、先頭ビットの‘0’を取り除き、(|p-1|-1)ビットのビット列である第1ビット列を組毎に出力する。また、ステップS61では、平文空間・文書写像部204は、ステップS22で出力された|p-1|ビットの第2付加ビット列について、先頭ビットの‘0’又は‘1’を取り除き(|p-1|-1)ビットのビット列である第2ビット列を組毎に出力する。その後、平文空間・文書写像部204は、ステップS60で組毎に出力された(|p-1|-1)ビットの第1ビット列と、ステップS61で組毎に出力された(|p-1|-1)ビットの第2ビット列とが入力されると、これらを結合して、((|p-1|-1)ビットのビット列)||((|p-1|-1)ビットのビット列)を組毎に出力する(ステップS62)。次いで、平文空間・文書写像部204は、ステップS62で組毎にn組の出力された(2*|p-1|-2)ビットのビット列を順番に結合して、(n*(2*|p-1|-2))ビットの文書を出力する(ステップS63)。
以上のように、|p-1|ビットより短いビット列の全てのビットが‘0’のとき先頭ビットに‘1’をパディングし、少なくとも1つのビット位置に‘1’が含まれるとき先頭ビットに‘0’をパディングすることにより、{1,…,2^{|p-1|-1}-1, 2^{|p-1|-1}}の要素になるため、必ず{1,…,p-1}に含まれるよう写像できる。なぜならば、2^{|p-1|-1}は2の倍数のため素数にはならず、|p-1|ビットの素数は必ず2^{|p-1|-1}以上となるからである。
従って、上述の実施の形態によっても、ビット列の分割とパディングとを行うことで、任意のビット列を6次拡大体上の素数位数トーラスを利用したCramer−Shoup暗号の平文空間に効率良く写像することができる。即ち、共通鍵暗号を利用することなく効率的に暗号化したり復号したりすることができる。
[第3の実施の形態]
次に、暗号化処理装置及び復号処理装置の第3の実施の形態について説明する。なお、上述の第1の実施の形態又は第2の実施の形態と共通する部分については、同一の符号を使用して説明したり、説明を省略したりする。
(1)構成
上述した第1の実施の形態及び第2の実施の形態においては、拡大次数mが’1’の場合について説明し、平文として複数のビット列が配列された任意のビット列を6次拡大体上の部分体の1つである素数位数のトーラス上の要素の圧縮表現F_p×F_p^*の組に写像した。本実施の形態においては、拡大次数mが‘1’より大きい整数である場合に一般化して説明する。即ち、ここでは、m次拡大体の6次拡大体上の部分体の1つである素数位数トーラスの要素の圧縮表現であるF_{p^m}×F_{p^m}^*の組に任意のビット列を写像する。尚、ここでも、当該圧縮表現F_{p^m}×F_{p^m}^*の要素についてベクトル表現の組に写像するものとする。図8は、F_{p^m}×F_{p^m}^*の組を概念的に示す図である。同図に示されるように、‘F_{p^m}={0,…,p-1}×{0,…,p-1}×…×{0,…,p-1}’である。‘F_{p^m}^*={0,…,p-1}×{0,…,p-1}×…×{0,…,p-1}’であり、F_{p^m}のうち全ての数値が’0’である(0,0,…,0)を除いたものである。このような構成において、第1の実施の形態で説明した構成を‘1’以上の整数である拡大次数mに適用させた構成について以降詳細に説明する。
本実施の形態にかかる暗号化処理装置100の機能的構成は上述の第1の実施の形態と以下の点で異なる。暗号化処理装置100の有する第1文書分割部102には、平文として複数のビット列が配列された任意のビット列と、この平文を標数p及び拡大次数mの有限体F_{p^m}の6次拡大体上の部分群の1つである素数位数のトーラスの要素の圧縮表現であるF_{p^m}×F_{p^m}^*の要素(p:素数)の組に写像するためのpとmとが入力される。ここでは、n*(2*m*(|p-1|-1)-1)ビットのビット列が第1文書分割部102に入力されるものとする。nとmは各々任意の自然数であり、|p-1|は{0,・・・,p-1}の要素を表現するのに必要なビット数である。第1文書分割部102は、n*(2*m*(|p-1|-1)- 1)ビットのビット列を(2*m*(|p-1|-1)-1) ビット毎のビット列に分割して、n組の(2*m*(|p-1|-1)- 1)ビットのビット列を出力する。第2文書分割部103は、第1文書分割部102から出力されたn組の(2*m*(|p-1|-1)-1)ビットのビット列を入力とし、組毎に、先頭から(m*|p-1|-1)ビット目までについてm個のビット列と、(m*|p-1|)ビット目から(2*m*(|p-1|-1)-1)ビットまでの(m+1)個のビット列との合計(2*m+1)個のビット列とに分割してこれらを出力する。
前者のm個のビット列は、第2文書分割部103が以下のように分割を行うことにより得られる。第2文書分割部103は、先頭から(|p-1|-1)ビット目までのビット列((|p-1|-1)ビットのビット列)と(|p-1|)ビット目から(2*|p-1|-2)ビット目までのビット列((|p-1|-1)ビットのビット列)と・・・((m-1)*|p-1|-m+2)ビット目から(m*|p-1|-m)ビット目までのビット列((|p-1|-1)ビットのビット列)の計m個のビット列に分割する。後者の(m+1)個のビット列は、第2文書分割部103が、m個のうちk番目について、kが所定のiであるか否かに応じて、以下のように分割を行うことにより得られる。iは‘1’から‘m-1’までの自然数である。ここで、第2文書分割部103は、‘1’から‘m’までのkについて各々以下の(a)又は(b)又は(c)の分割を行う。
(a)‘k<i’であるとき ((m-1+k)*|p-1|-m-k)ビット目から ((m+k)*|p-1|-m-k-2)ビット目までのビット列((|p-1|-1)ビットのビット列)に分割する。
(b)‘k=i’であるとき((m-1+k)*|p-1|-m-k)ビット目から((m-1+k)*|p-1|-m-k+j-1)ビット目までのビット列(jビットのビット列)と ((m-1+k)*|p-1|-m-k+j)ビット目から((m+k)*|p-1|-m-k-3)ビット目((|p-1|-j-2)ビットのビット列)に分割する。
(c)‘k>i’であるとき((m+k)|p-1|-m-k-2)ビット目から((m+k+1)*|p-1|-m-k-4)ビット目までのビット列((|p-1|-1)ビットのビット列)に分割する。
尚、jは‘0’から‘|p-1|-2’までの自然数である。
図9は、n*(2*m*(|p-1|-1)-1)ビットのビット列の分割及びパディングを概念的に示す図である。尚、同図においては、説明の便宜上、‘i=m’としている。同図に示されるように、n*(2*m*(|p-1|-1)- 1) ビットのビット列D60が、(2*m*(|p-1|-1)- 1)ビットのn組のビット列D70に第1文書分割部102により分割される。各ビット列D70は、(2*m-1)個の(|p-1|-1)ビットのビット列D80と、1個のjビットのビット列D81と、1個の(|p-1|-j-2)ビットのビット列D82とに第2文書分割部103により各々分割される。
第1パディング部104は、第2文書分割部103から組毎に(2*m+1)個ずつ出力されたビット列のうち、1個目からm個目のビット列(m個のビット列)を入力とし、各ビット列の先頭に‘0’を付加することによりパディングを行い、パディング後のm個の0||((|p-1|-1)ビットのビット列)を組毎に出力する。第2パディング部105は、第2文書分割部103から組毎に(2*m+1)個ずつ出力されたビット列のうち、(m+1)個目から(2*m+1)目までのビット列((m+1)個のビット列)を入力とし、(m+i)番目のビット列と(m+i+1)番目のビット列以外のビット列の先頭に’0’をパディングし0||((|p-1|-1)ビットのビット列)とすると共に、(m+i)番目のビット列の先頭に‘0’をパディングし(m+i+1)番目のビット列の先頭に’1’をパディングしこれらのビット列を結合して、0||(jビットのビット列)||1||((|p-1|-j-2)ビットのビット列)とし、パディングしたビット列を組毎に出力する。即ち、図9に示されるように、ビット列D80の先頭に‘0’が第1パディング部104によりパディングされる。また、第2パディング部105により、ビット列D81の先頭に‘0’がパディングされ、ビット列D82の先頭に‘1’がパディングされこれらが結合される。そして、これが、先頭ビットが‘0’であり、所定のビット位置(ここでは(j+2)ビットである)が‘1’であるビット列となる。
伸張部106、暗号化部107及び送信部108の各機能は上述の第1の実施の形態と同様である。
次に、本実施の形態にかかる復号処理装置200の機能的構成について上述の第1の実施の形態と異なる点について説明する。受信部201、復号部202の各機能は上述の第1の実施の形態と同様である。圧縮部203は、復号部202により暗号文Ciが復号されて得られたデータmiをF_{p^m}×F_{p^m}^*の要素に写像することにより、圧縮して、F_{p^m}の要素により表現される|p-1|ビットのビット列の集合である第1付加ビット列集合とF_{p^m}^*の要素により表現される|p-1|ビットのビット列の集合である第2付加ビット列集合とをn組出力する。圧縮の方法は、例えば非特許文献1に示されるため、ここではその詳細な説明を省略する。
平文空間・文書写像部204は、圧縮部203により出力されたn組の第1付加ビット列集合及び第2付加ビット列集合について、組毎に、パディングが正しく行われているか否かを判定し、判定結果に応じてアンパディングを行って、各ビット列を結合する。平文空間・文書写像部204の判定部205は、組毎のm個の|p-1|ビットのビット列を要素とする第1付加ビット列集合及びm個の|p-1|ビットのビット列を要素とする第2付加ビット列集合を入力とし、以下の判定条件を満たす場合、パディングが正しく行われていると判定し、第1付加ビット列集合及び第2付加ビット列集合を出力し、判定条件を満たさない場合、パディングが正しく行われていないと判定し、第1付加ビット列集合及び第2付加ビット列集合を出力しない。判定条件とは、第1付加ビット列集合に含まれる各ビット列の先頭ビットが‘0’且つ第2付加ビット列集合の各ビット列に含まれる先頭ビットが‘0’且つ第2付加ビット列集合に含まれるi番目のビット列の(j+2)ビット目が‘1’であることである。このiとは、上述の暗号化処理装置100の第1パディング104がパディングを行う際に用いた’i’に相当する。判定部205は、このiを示す情報を暗号化処理装置00から予め取得しておく。
第1アンパディング部206は、判定部205から第1付加ビット列集合及び第2付加ビット列集合が出力された場合、第1付加ビット列集合に含まれる|p-1|ビットの各ビット列について、組毎に、各ビット列の先頭ビットの‘0’を取り除くことによりアンパディングを行って、アンパディング後の(|p-1|-1)ビットのビット列である第1ビット列を出力する。第2アンパディング部207は、判定部205から第1付加ビット列集合及び第2付加ビット列集合が出力された場合、第2付加ビット列集合に含まれる|p-1|ビットの各ビット列について、組毎に、各ビット列の先頭ビットの‘0’を取り除き、以下の(c)及び(d)の各ビット列である第2ビット列を出力する。
(c)i番目以外のビット列のアンパディング後の(m-1)個の(|p-1|-1)ビットのビット列
(d)i番目のビット列のアンパディング後の1ビット目からjビット目までのビット列(jビットのビット列)及び(j+1)ビット目から(|p-1|- 2 )ビット目までのビット列((|p-1|-j-2)ビットのビット列)
第1文書結合部208は、第1アンパディング部206から組毎に出力されたm個の(|p-1|-1)ビットの第1ビット列と、第2アンパディング部207から組毎に出力された(m-1)個の(|p-1|-1)ビットのビット列、1個のjビットのビット列及び1個の(|p-1|-j-2)ビットである第2ビット列とを入力とし、これらを結合して、((|p-1|-1)ビットのビット列)^m||((|p-1|-1)ビットのビット列)^{i-1} ||(jビットのビット列)||((|p-1|-j-2)ビットのビット列)|| ((|p-1|-1)ビットのビット列)^{m-i}を組毎に出力する。ただし、(xビットのビット列)^{y} (x,y:自然数) は、(xビットのビット列)をy個連結したビット列をあらわす。
第2文書結合部209は、第1文書結合部208から組毎に出力されたn組の(2*m*(|p-1|-1)-1)ビットのビット列を入力とし、これらを順番に結合して、n* (2*m*(|p-1|-1)-1)ビットのビット列を出力する。ここで出力されるビット列が、図9に示したビット列D60である平文となる。
(2)動作
<文書・平文空間写像処理>
次に、本実施の形態にかかる暗号化処理装置100が平文を暗号化する処理について説明する。ここでは、特に、文書・平文空間写像部101が行う文書・平文空間写像処理の手順について図10を用いて説明する。文書・平文空間写像部101は、n*(2*m*(|p-1|-1)-1)ビットの文書が入力されると、(2*m*(|p-1|-1)-1)ビット毎のビット列に分割して、n組の(2*m*(|p-1|-1)-1)ビットのビット列を出力する(ステップS120)。次いで、文書・平文空間写像部101は、n組の(2*m*(|p-1|-1)-1)ビットについて、上述の構成欄で説明したように、組毎に、先頭から(m*(|p-1|-1))ビット目までについて計m個のビット列と、(m*(|p-1|-1)+1)ビット目から(2*m*(|p-1|-1)-1)ビットめまでについて計(m+1)個のビット列との合計(2*m+1)個のビット列とに分割してこれらを出力する(ステップS121)。
そして、文書・平文空間写像部101は、ステップS121で組毎に(2*m+1)個ずつ出力されたビット列のうち、1個目からm個目までのビット列((|p-1|-1)ビットのビット列)について、先頭に‘0’をパディングし、0||((|p-1|-1)ビットのビット列)を組毎に出力する(ステップS122)。また、文書・平文空間写像部101は、ステップS121で組毎に(2*m+1)個ずつ出力されたビット列のうち、(m+1)個目から(2*m+1)個目までのビット列((m+i)個目のビット列はjビット、(m+i+1)個目のビット列は(|p-1|-j-2)ビット、それ以外は(|p-1|-1)ビットのビット列)について以下のようにパディングを行って、パディング後のビット列を出力する。文書・平文空間写像部101は、(m+i)番目のビット列と(m+i+1)番目のビット列以外のビット列の先頭に’0’をパディングし0||((|p-1|-1)ビットのビット列を出力する(ステップS122)また、文書・平文空間写像部101は、(m+i)番目のビット列の先頭に‘0’をパディングし(m+i+1)番目のビット列の先頭に’1’をパディングしこれらのビット列を結合して、0||(jビットのビット列)||1||((|p-1|-j-2)ビットのビット列を組毎に出力する(ステップS123)。
そして、図示はしないが、n組全てについてステップS122及びステップS123でビット列が各々出力されて、これらのビット列が伸張部106に入力されると、伸張部106は、これを伸張して、データmiを得る。暗号化部107は、伸張部106により伸張されて得られたデータmiを、公開鍵を用いて暗号化し、暗号文Ciを出力する。そして、送信部108が、暗号文Ciを復号処理装置200に送信する。
<平文空間・文書写像処理>
次に、暗号化処理装置100から送信された暗号文Ciを復号処理装置200が復号する処理について説明する。ここでは、特に、平文空間・文書写像部204が行う平文空間・文書写像処理の手順について図11を用いて説明する。まず、図示はしないが、受信部201が暗号文Ciを受信し、復号部202が、上述の公開鍵に対応する秘密鍵を用いて、暗号文Ciを復号してデータmiを得る。圧縮部203は、復号部202により暗号文Ciが復号されて得られたデータmiをF_{p^m}×F_{p^m}^*に写像することにより、圧縮して、F_{p^m}の要素により表現されるm個の|p-1|ビットのビット列を含む第1付加ビット列集合とF_{p^m}^*の要素により表現されるm個の|p-1|ビットのビット列を含む第2付加ビット列集合とをn組出力する。
次いで、平文空間・文書写像部204は、圧縮部203により出力されたm個の|p-1|ビットのビット列を含む第1付加ビット列集合及びm個の|p-1|ビットのビット列を含む第2付加ビット列集合について、組毎に、パディングが正しく行われているか否かを判定する(ステップS140)。具体的には、平文空間・文書写像部204は、判定条件を満たさない場合、パディングが正しく行われていないと判定して(ステップS140:NO)、エラーを出力し(ステップS141)、判定条件を満たす場合、パディングが正しく行われていると判定して(ステップS20:YES)、第1付加ビット列集合及び第2付加ビット列集合を組毎に出力する(ステップS142)。尚、ここでの判定条件は、上述したように、第1付加ビット列集合に含まれる各ビット列の先頭ビットが‘0’且つ第2付加ビット列集合に含まれる各ビット列の先頭ビットが‘0’且つ第2付加ビット列集合に含まれるi番目のビット列の(j+2)ビット目が‘1’であることである。
次いで、平文空間・文書写像部204は、ステップS142で出力された第1付加ビット列集合に含まれるm個の|p-1|ビットの各ビット列について、各ビット列の先頭ビットの‘0’を取り除き、(|p-1|-1)ビットのビット列である第1ビット列を組毎に出力する(ステップS143)。また、平文空間・文書写像部204は、ステップS142で出力された第2付加ビット列集合に含まれるm個の(|p-1|)ビットの各ビット列について、先頭ビットの‘0’を取り除くと共にi番目のビット列の(j+2)ビット目の‘1’を取り除き、i番目以外のビット列のアンパディング後の(m-1)個の(|p-1|-1)ビットのビット列とi番目のビット列のアンパディング後の1ビット目からjビット目までのビット列(jビットのビット列)及び(j+1)ビット目から(|p-1|- 2 )ビット目までのビット列((|p-1|-j-2)ビットのビット列)である第1ビット列を出力する(ステップS144)。
その後、平文空間・文書写像部204は、ステップS143で組毎に出力されたm個の(|p-1|-1)ビットの第1ビット列と、ステップS144で組毎に出力された(m-1)個の(|p-1|-1)ビットのビット列及び1個のjビットのビット列及び1個の(|p-1|-j-2)ビットのビット列とである第2ビット列とが入力されると、これらを結合して、((|p-1|-1)ビットのビット列)^m||((|p-1|-1)ビットのビット列)^{i-1} ||(jビットのビット列)||((|p-1|-j-2)ビットのビット列)|| ((|p-1|-1)ビットのビット列)^{m-i}を組毎に出力する(ステップS145)。次いで、平文空間・文書写像部204は、ステップS145で組毎に出力されたn組の(2*m*(|p-1|-1)-1)ビットのビット列を順番に結合して、(n*(2*m*(|p-1|-1)-1))ビットのビット列を出力する(ステップS146)。即ち、F_{p^m}×F_{p^m}^*の組からビット列に写像される。ただし、(xビットのビット列)^{y} (x,y:自然数) は、(xビットのビット列)をy個連結したビット列をあらわす。
以上のようにして、任意の平文を暗号化する際に、当該平文を分割しパディングを行うことでF_{p^m}×F_{p^m}^*の要素の組を出力する。一方、暗号化されたビット列を復号する際には、F_{p^m}×F_{p^m}^*の要素の組を入力としパディングを外し結合することで平文を復元する。このように、F_{p^m}の6次拡大体における素数位数のトーラス上で暗号化や復号を行うCramer−Shoup暗号を用いれば、F_{p^m}×F_{p^m}^*の上の任意の要素を暗号化したり復号したりすることができる。
即ち、|p-1|ビットより短いビット列の先頭ビットに‘0’をパディングすることにより、{0,…,2^{|p-1|-1}-1}の要素になるため、必ず{0,…,p-1}に含まれるよう写像できる。また、|p-1|ビットより短いビット列の先頭ビットに‘0’をパディングし、少なくとも1つのビット位置に‘1’をパディングすることにより、{1,…,2^{|p-1|-1}-1}の要素になるため、必ず{1,…,p-1}に含まれるよう写像できる。なぜならば、2^{|p-1|-1}は2の倍数のため素数にはならず、|p-1|ビットの素数は必ず2^{|p-1|-1}以上となるからである。そして、このようにパディングされたビット位置が予め分かっていれば、そのビット位置のビットを取り除いたビット列を結合することで元のビット列を復元することができる。
従って、上述の実施の形態によれば、ビット列の分割とパディングとを行うことで、任意のビット列を、F_{p^m}の6次拡大体における素数位数のトーラスを利用したCramer−Shoup暗号の平文空間に効率良く写像することができる。このため、共通鍵暗号を利用することなく効率的に暗号化したり復号したりすることができる。
[第4の実施の形態]
次に、文書・平文空間写像装置、平文空間・文書写像装置の第2の実施の形態について説明する。なお、上述の第1の実施の形態乃至第4の実施の形態と共通する部分については、同一の符号を使用して説明したり、説明を省略したりする。
・ 構成
本実施の形態においても、上述の第3の実施の形態と同様に、拡大次数mが‘1’より大きい整数である場合に一般化して説明する。ここでは、第2の実施の形態で説明した構成を、‘1’以上の整数である拡大次数mに適用させた構成について詳細に説明する。
本実施の形態にかかる暗号化処理装置100の機能的構成は上述の第2の実施の形態乃至第3の実施の形態と以下の点で異なる。暗号化処理装置100の有する第1文書分割部102には、上述の第3の実施の形態と同様に、平文として複数のビット列が配列された任意のビット列と、この平文を標数p及び拡大次数mの有限体F_{p^m}の6次拡大体上の部分群の1つである素数位数のトーラスの要素の圧縮表現であるF_{p^m}×F_{p^m}^*の要素(p:素数)の組に写像するためのpとmとが入力される。但し、ここでは、n*2* m*(|p-1|-1)ビットのビット列が第1文書分割部102に入力されるものとする。nとmは各々任意の自然数であり、|p-1|は{0,・・・,p-1}の要素を表現するのに必要なビット数である。第1文書分割部102は、n*2* m*(|p-1|-1)ビットのビット列を2*m*(|p-1|-1)ビット毎のビット列に分割して、n組の2*m*(|p-1|-1) ビットのビット列を出力する。第2文書分割部103は、第1文書分割部102から出力されたn組の2*m*(|p-1|-1)ビットのビット列を入力とし、組毎に、先頭からm*(|p-1|-1)ビット目までについてm個のビット列と、(m*(|p-1|-1)+1)ビット目から(2*m*(|p-1|-1))ビット目までについてm個のビット列との合計2*m個のビット列とに分割してこれらを出力する。
前者の計m個のビット列は、第2文書分割部103が以下のように分割を行うことにより得られる。第2文書分割部103は、先頭から(|p-1|-1)ビット目までのビット列((|p-1|-1)ビットのビット列)と(|p-1|)ビット目から(2*(|p-1|-1))ビット目までのビット列((|p-1|-1)ビットのビット列)と・・・((m-1)*(|p-1|-1)+1)ビット目から(m*(|p-1|-1))ビット目までのビット列((|p-1|-1)ビットのビット列)の計m個のビット列に分割する。後者のm個のビット列は、第2文書分割部103が以下のように分割を行うことにより得られる。第2文書分割部103は、(m*(|p-1|-1)+1)ビット目から((m+1)*(|p-1|-1))ビット目までのビット列((|p-1|-1)ビットのビット列)と((m+1)*(|p-1|-1)+1)ビット目から((m+2)*(|p-1|-1))ビット目までのビット列((|p-1|-1)ビットのビット列)と・・・((2*m−1)*(|p−1|-1)+1)ビット目から(2*m*(|p−1|−1))ビット目までのビット列((|p-1|-1)ビットのビット列)の計m個に分割する。
図12は、n*(2*m*(|p-1|-1))ビットのビット列の分割及びパディングを概念的に示す図である。同図に示されるように、n*2* m*(|p-1|-1)ビットのビット列D90が、2* m*(|p-1|-1)ビットのn組のビット列D100に第1文書分割部102により分割される。各ビット列D70が、m個の(|p-1|-1)ビットのビット列D110と、m個の(|p-1|-1)ビットのビット列D111とに第2文書分割部103により各々分割される。
第1パディング部104は、第2文書分割部103から組毎に2*m個ずつ出力された付加ビット列集合のうち、1個目からm個目までのビット列((|p-1|-1)ビットのビット列)を入力とし、各ビット列の先頭に‘0’をパディングし、0||((|p-1|-1)ビットのビット列)を組毎に出力する。第2パディング部105は、第2文書分割部103から組毎に2*m個ずつ出力されたビット列のうち(m+1)個目から2*m個目までのビット列((|p-1|-1)ビット)を入力とし、以下のようにパディングを行う。第1パディング部104は、m個の全てのビット列のビットが全て‘0’である場合、所定のビット列の先頭に‘1’をパディングしその他のビット列の先頭に‘0’をパディングし、m個のビット列の少なくとも1つのビットが‘1’である場合、各ビット列の先頭に‘0’をパディングする。尚、所定のビット列は、m個のビット列の中から任意に決定されるものであっても良い。ここでは、図12に示されるように、ビット列D110の先頭に‘0’が第1パディング部104によりパディングされる。また、ビット列D111については、(|p-1|-1)ビットの各値に応じて、先頭に‘0’又は‘1’が第2パディング部105によりパディングされる。尚、同図においては、ビット列D111について、m個の全てのビット列のビットが全て‘0’である場合に’1’が先頭にパディングされる所定のビット列を2*m個目のビット列としている。
伸張部106、暗号化部107及び送信部108の各機能は上述の第1の実施の形態と同様である。
次に、本実施の形態にかかる復号処理装置200の機能的構成について上述の第2の実施の形態乃至第3の実施の形態と異なる点について説明する。受信部201、復号部202の各機能は上述の第1の実施の形態と同様である。圧縮部203の機能は上述の第3の実施の形態と同様である。
平文空間・文書写像部204の判定部205は、上述の第3の実施の形態と同様に、F_{p^m}の要素により表現されるm個の|p-1|ビットのビット列を含む第1付加ビット列集合とF_{p^m}^*により表現されるm個の|p-1|ビットのビット列のビット列を含む第2付加ビット列集合とについて、組毎に、判定条件を満たすか否かを判定し、当該判定結果に応じて、第1付加ビット列集合及び第2付加ビット列集合を出力するが、その判定条件が上述の第3の実施の形態と異なる。ここでの判定条件は、第1付加ビット列集合に含まれる各ビット列の先頭ビットが‘0’且つ第2付加ビット列集合に含まれる所定のビット列の先頭ビットが‘1’であるときその他のビットが全て‘0’である又は所定のビット列の先頭ビットが‘0’である且つその他のビット列の先頭が’0’であるとき先頭ビット以外の少なくとも1つのビットが‘1’であることである。この所定のビット列とは、上述の暗号化処理装置100の第1パディング104がパディングを行う際に用いた所定のビット列に相当する。判定部205は、m個のビット列のうちいずれのビット列が所定のビット列に相当するかを示す情報を暗号化処理装置00から予め取得しておく。第1アンパディング部206は、判定部205から第1付加ビット列集合及び第2付加ビット列集合が出力された場合、第1付加ビット列集合に含まれるm個の|p-1|ビットの各ビット列について、組毎に、先頭ビットの‘0’を取り除き、(|p-1|-1)ビットの各ビット列である第1ビット列を出力する。第2アンパディング部207は、判定部205から第1付加ビット列集合及び第2付加ビット列集合が出力された場合、第2付加ビット列集合に含まれるm個の|p-1|ビットの各ビット列について、組毎に、先頭ビットの‘0’又は‘1’を取り除き、(|p-1|-1)ビットのビット列である第2ビット列を出力する。第1文書結合部208は、第1アンパディング部206から組毎に出力されたm個の(|p-1|-1)ビットの第1ビット列と、第2アンパディング部207から組毎に出力されたm個の(|p-1|-1)ビットの第2ビット列とを入力とし、これらを結合して、((|p-1|-1)ビットのビット列)^m||((|p-1|-1)ビットのビット列)^mを組毎に出力する。第2文書結合部209は、第1文書結合部208から組毎に出力されたn組の(2*m*(|p-1|-1))ビットのビット列を入力とし、これらを順番に結合して、(2*n*m*(|p-1|-1))ビットの文書を出力する。ここで出力されるビット列が、図12に示したビット列D90である平文となる。
(2)動作
<文書・平文空間写像処理>
次に、本実施の形態にかかる暗号化処理装置100の有する文書・平文空間写像部101が行う文書・平文空間写像処理の手順について図13を用いて説明する。文書・平文空間写像部101は、n*2* m*(|p-1|-1)ビットのビット列が入力されると、2*m*(|p-1|-1)ビット毎のビット列に分割して、n組の(2*m*(|p-1|-1))ビットのビット列を出力する(ステップS160)。次いで、文書・平文空間写像部101は、n組の(2*m*(|p-1|-1))ビットについて、上述の構成欄で説明したように、組毎に、先頭から(m*(|p-1|-1))ビット目までについて計m個のビット列と、(m*(|p-1|-1)+1)ビット目から(2*m*(|p-1|-1))ビット目までについて計m個のビット列との合計2*m個のビット列とに分割してこれらを出力する(ステップS161)。そして、文書・平文空間写像部101は、ステップS161で組毎に2*m個ずつ出力されたビット列のうち、1個目からm個目までのビット列((|p-1|-1)ビットのビット列)について、先頭に‘0’をパディングし、0||((|p-1|-1)ビットのビット列)を組毎に出力する(ステップS162)。また、文書・平文空間写像部101は、ステップS161で組毎に2*m個ずつ出力されたビット列のうち、(m+1)個目から2*m個目までのビット列((|p-1|-1)ビットのビット列)について、m個の全てのビット列のビットが全て‘0’である場合、所定のビット列の先頭に‘1’をパディングして1||((|p-1|-1) ビットのビット列)としその他のビット列の先頭に‘0’をパディングして0||((|p-1|-1) ビットのビット列)とし組毎に出力し、m個のビット列の少なくとも1つのビットが‘1’である場合、各ビット列の先頭に‘0’をパディングして0||((|p-1|-1) ビットのビット列) を組毎に出力する(ステップS163)。以降、上述の第3の実施の形態と同様にして、n組全てについてステップS162及びステップS163で出力されたビット列が伸張され、公開鍵を用いて暗号化され、暗号文Ciが出力されて、復号処理装置200に送信される。
<平文空間・文書写像処理>
次に、暗号化処理装置100から送信された暗号文Ciを復号処理装置200が復号する際に、平文空間・文書写像部204が行う平文空間・文書写像処理の手順について図14を用いて説明する。上述の第1の実施の形態と同様にして、暗号文Ciが、上述の公開鍵に対応する秘密鍵を用いて、復号され圧縮されることにより、F_{p^m}により表現されるm個の|p-1|ビットのビット列からなる第1付加ビット列集合とF_{p^m}^*により表現されるm個の|p-1|ビットのビット列からなる第2付加ビット列集合とがn組出力されるものとする。次いで、平文空間・文書写像部204は、ステップS140で、上述の第3の実施の形態と同様にして、圧縮部203により出力されたm個の|p-1|ビットのビット列を含む第1付加ビット列集合及びm個の|p-1|ビットのビット列を含む第2付加ビット列集合とについて、組毎に、パディングが正しく行われているか否かを判定する。但し、ここでの判定条件は、上述したように、第1付加ビット列集合の各ビット列の先頭ビットが‘0’且つ第2付加ビット列集合の所定のビット列の先頭ビットが‘1’であるときその他のビットが全て‘0’である又は所定のビット列の先頭ビットが‘0’である且つその他のビット列の先頭が’0’であるとき先頭ビット以外の少なくとも1つのビットが‘1’であることである。そして、ステップS140の判定結果が否定的である場合、平文空間・文書写像部204は、エラーを出力し(ステップS141)、判定条件を満たす場合、パディングが正しく行われていると判定して、第1付加ビット列集合及び第2付加ビット列集合を組毎に出力する(ステップS142)。
ステップS142の後ステップS183では、平文空間・文書写像部204は、ステップS142で出力された第1付加ビット列集合に含まれるm個の|p-1|ビットの各ビット列について、各ビット列の先頭ビットの‘0’を取り除き、m個の(|p-1|-1)ビットのビット列である第1ビット列を組毎に出力する。また、ステップS184では、平文空間・文書写像部204は、ステップS142で出力された第2付加ビット列集合に含まれるm個の|p-1|ビットの各ビット列について、各ビット列の先頭ビットの‘0’又は‘1’を取り除きm個の(|p-1|-1)ビットのビット列である第2ビット列を組毎に出力する。その後、ステップS145では、平文空間・文書写像部204は、ステップS183で組毎に出力されたm個の(|p-1|-1)ビットの第1ビット列と、ステップS184で組毎に出力されたm個の(|p-1|-1)ビットの第2ビット列とが入力されると、これらを結合して、((|p-1|-1)ビットのビット列)^m||((|p-1|-1)ビットのビット列)^mを組毎に出力する。次いで、ステップS146では、平文空間・文書写像部204は、ステップS145で組毎に出力されたn組の(2*m*(|p-1|-1))ビットのビット列を順番に結合して、(n*2*m*(|p-1|-1))ビットの文書を出力する。
以上のように、|p-1|ビットより短いビット列の全てのビットが‘0’のとき先頭ビットに‘1’をパディングし、少なくとも1つのビット位置に‘1’が含まれるとき先頭ビットに‘0’をパディングすることにより、{1,…,2^{|p-1|-1}-1, 2^{|p-1|-1}}の要素になるため、必ず{1,…,p-1}に含まれるよう写像できる。なぜならば、2^{|p-1|-1}は2の倍数のため素数にはならず、|p-1|ビットの素数は必ず2^{|p-1|-1}以上となるからである。
従って、上述の実施の形態によっても、ビット列の分割とパディングとを行うことで、任意のビット列をF_{p^m}の6次拡大体上の素数位数トーラスを利用したCramer−Shoup暗号の平文空間に効率良く写像することができる。即ち、共通鍵暗号を利用することなく効率的に暗号化したり復号したりすることができる。
[変形例]
なお、本発明は前記実施形態そのままに限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で構成要素を変形して具体化できる。また、前記実施形態に開示されている複数の構成要素の適宜な組み合わせにより、種々の発明を形成できる。例えば、実施形態に示される全構成要素から幾つかの構成要素を削除してもよい。さらに、異なる実施形態にわたる構成要素を適宜組み合わせてもよい。また、以下に例示するような種々の変形が可能である。
<変形例1>
上述した各実施の形態において、暗号化処理装置100で実行される各種プログラムを、インターネット等のネットワークに接続されたコンピュータ上に格納し、ネットワーク経由でダウンロードさせることにより提供するように構成しても良い。当該各種プログラムを、インストール可能な形式又は実行可能な形式のファイルでCD−ROM、フレキシブルディスク(FD)、CD−R、DVD(Digital Versatile Disk)等のコンピュータで読み取り可能な記録媒体に記録して提供するように構成しても良い。この場合には、プログラムは、暗号化処理装置100において上記記録媒体から読み出して実行することにより記憶装置(例えばRAM)上にロードされ、上記機能的構成において説明した各部が記憶装置上に生成される。復号処理装置200で実行される各種プログラムについても同様である。
<変形例2>
上述した第1の実施の形態においては、暗号化処理装置100の第1文書分割部102に平文として入力されるビット列は、n*(2*|p-1|-3)ビットであるとしたが、これより多いビット列が入力されても良い。この場合、暗号化処理装置100は、入力された平文をn*(2*|p-1|-3)ビット以下のビット列に分割した後、第1文書分割部102がn*(2*|p-1|-2)ビット以下のビット列を(2*|p-1|-2)ビット毎に分割するようにしても良い。
第2の実施の形態においても同様に、暗号化処理装置100の第1文書分割部102に平文として入力されるビット列がn*(2*|p-1|-2)ビットより多い場合、暗号化処理装置100は、入力された平文をn*(2*|p-1|-2)ビット以下のビット列に分割した後、第1文書分割部102がn*(2*|p-1|-2)ビット以下のビット列を(2*|p-1|-2)ビット毎に分割するようにしても良い。
<変形例3>
上述した各実施の形態においては、可逆な変換処理としてパディングを取り扱い、当該変換処理の逆変換処理としてアンパディングを取り扱ったが、可逆な変換処理及びこの逆変換処理はこれらに限らない。
<変形例4>
上述した各実施の形態においては、暗号化処理装置100は送信部108を有し、復号処理装置200は受信部201を有し、送信部108、受信部201及びネットワーク300を介して暗号文Ciを受け渡すように構成した。しかし、暗号化処理装置100は送信部108を有さず、復号処理装置200は受信部201を有さず、暗号化処理装置100が出力した暗号文Ciを、例えば、記憶媒体を介して復号処理装置200は取得するように構成しても良い。
<変形例5>
上述した各実施の形態においては、6次拡大体における素数位数のトーラスを利用したCramer−Shoup暗号の平文空間に平文を写像する暗号化処理に適用する例について説明したが、これと同様の平文空間に写像する暗号化処理に適用しても良い。
<変形例6>
上述の第1の実施の形態においては、暗号化処理装置100は、伸張部106及び暗号化部107を備えるようにしたが、図15に示されるように、伸張部106を備えず、暗号化処理を行った後圧縮処理を行う暗号化部107´を備えるように構成しても良い。図16は、本変形例にかかる暗号化処理の手順を示すフローチャートである。尚、ここでは、図示しないパラメータ生成装置が、公開鍵暗号に関する公開情報を生成し、鍵生成装置が、公開情報を用いて公開鍵と、これに対応する秘密鍵とを生成し、更に公開鍵を圧縮して圧縮公開鍵を予め生成しているものとする。尚、公開情報としては、公開鍵に関する情報として、群の要素やハッシュ関数などの情報や、暗号系が定義される群に関する情報として、位数や生成元の情報がある。
暗号化部107´は、公開情報に含まれる位数である公開パラメータq(q:素数)を用いて、‘0≦u<q’なる乱数uを生成する(ステップS80)。次いで、暗号化部107´は、圧縮された公開鍵(g~,e,f,h)とgとを伸長する(ステップS81)。尚、gは暗号が定義される群G(位数はq)の生成元、g~,e,f,hはGの元とする。その後、暗号化部107´は、式5〜6によりべき乗を計算する(ステップS82)。
c1=g^u・・・(式5)
c2=(g~)^u・・・(式6)
そして、暗号化部107´は、c1,c2を圧縮する(ステップS83)。その後、暗号化部107´は、平文msgを伸長する(ステップS84)。平文msgは、第1パディング104で出力されたビット列m1iと第1パディング104で出力されたビット列m2i(1≦i≦4)とを含むものである。次いで、暗号化部107´は、式7によりべき乗を計算することにより、平文マスクを行う(ステップS85)。
c3=msg*h^u・・・(式7)
そして、暗号化部107´は、c3を圧縮する(ステップS86)。次いで、暗号化部107´は、c1,c2,c3からハッシュ値を求め、vとする(ステップS87)。そして、暗号化部107´は、式8によりべき乗を計算する(ステップS88)。
c4=(e^u)*f^(uv)・・・(式8)
次いで、暗号化部107´は、c4を圧縮する(ステップS89)。その後、暗号化部107´は、(c1,c2,c3,c4)を圧縮暗号文として出力する(ステップS90)。
以上のような構成によれば、暗号化処理と圧縮処理とを組み合わせて圧縮暗号文を出力することができる。
<変形例7>
上述の第2の実施の形態においては、復号処理装置200は、復号部202及び圧縮部203を備えるようにしたが、図17に示されるように、圧縮部203を備えず、圧縮暗号文に対して復号処理を行う復号部202´を備えるように構成しても良い。図18は、本変形例にかかる復号処理の手順を示すフローチャートである。尚、復号処理装置200は、公開鍵(g,g~,e,f,h)に対応する秘密鍵(x1, x2, y1, y2, z1, z2)を予め取得しているものとする。また、ここでは、受信部201は、圧縮暗号文(c1,c2,c3,c4)を暗号化処理装置100から受信するものとする。そして、復号部202´は、(c1,c2,c3,c4)が正しい群の元であるか否かを判定する(ステップS100)。即ち、復号部202´は、(c1,c2,c3,c4)の各要素が‘F_p×F_p^*’の元であるか否かを判定する。当該判定結果が肯定的である場合、復号部202´は、式9によりハッシュ計算を行う(ステップS101)。
v=H(c1,c2,c3)・・・(式9)
次いで、復号部202´は、各c1,c2,c3を伸長する(ステップS102)。その後、復号部202´は、式10によりべき乗を計算することにより、検査式に用いるcを計算する(ステップS103)。
c=c1^(x1+y1*v)*c2^(x2+y2*v)・・・(式10)
そして、復号部202´は、cを圧縮する(ステップS104)。次いで、復号部202´は、検査式が成立するか否かを判定する(ステップS105)。即ち、復号部202´は、であるか否かを判定する。この判定は、例えば、ベクトル表現における各値が一致することで判定できる。当該判定結果が肯定的である場合、復号部202´は、式11によりべき乗を計算する(ステップS106)。
b=c1^z1*c2^z2・・・(式11)
次いで、復号部202´は、式12により平文msgを計算する(ステップS107)。
msg=c3*b^(−1)・・・(式12)
その後、復号部202´は、平文msgを圧縮する(ステップS108)。次いで、復号部202´は、圧縮した平文msgを出力する(ステップS109)。そして、復号部202´は、平文msgの全部又は一部について、{0,…,p-1}により表現される|p-1|ビットの第1ビット列と{1,…,p-1}により表現される|p-1|ビットの第2ビット列とをn組出力する。以降の平文空間・文書写像処理の手順は上述の第2の実施の形態と同様である。尚、ステップS105の判定結果が否定的である場合、復号部202´は、rejectを出力する(ステップS110)。また、ステップS100の判定結果が否定的である場合、復号部202´は、invalidを出力する(ステップS111)。但し、いずれの場合であっても、復号部202´は、なにも出力せずに処理を終了するようにしても良い。
このように、圧縮暗号文(c1,c2,c3,c4)を入力とした場合であっても、以上のように圧縮された平文msgについて、平文空間から平文に効率的に写像することが可能になる。
<変形例8>
上述の各実施の形態においては、6次拡大体における素数位数のトーラス上の要素の圧縮表現の要素についてベクトル表現の組に写像するものとしたが、これに限らない。
<変形例9>
上述の各実施の形態においては、復号処理装置200は、判定部205を備えないように構成しても良い。この場合、第1アンパディング部206には、圧縮部203により出力されたn組の第1ビット列が入力され、第2アンパディング部207には、圧縮部203により出力されたn組の第2ビット列が入力される。第1アンパディング部206及び第2アンパディング部207が行う処理は上述の各実施の形態と同様である。例えば、暗号化処理装置100においてパディングが正しく行われていると推定される場合には、復号処理装置200の構成を判定部205を備えない構成にすることができ、これにより、復号処理装置200の構成を簡素化することが可能になる。
第1の実施の形態にかかる暗号化処理装置100及び復号処理装置200の構成を例示する図である。 同実施の形態にかかるn*(2*|p-1|-3)ビットのビット列の分割及びパディングを概念的に示す図である。 同実施の形態にかかる文書・平文空間写像部101が行う文書・平文空間写像処理の手順を示すフローチャートである。 同実施の形態にかかる平文空間・文書写像部204が行う平文空間・文書写像処理の手順を示すフローチャートである。 第2の実施の形態にかかるn*(2*|p-1|-2)ビットのビット列の分割及びパディングを概念的に示す図である。 同実施の形態にかかる文書・平文空間写像部101が行う文書・平文空間写像処理の手順を示すフローチャートである。 同実施の形態にかかる平文空間・文書写像部204が行う平文空間・文書写像処理の手順を示すフローチャートである。 第3の実施の形態にかかるF_{p^m}×F_{p^m}*の組を概念的に示す図である。 同実施の形態にかかるn*(2*m*(|p-1|-1)-1)ビットのビット列の分割及びパディングを概念的に示す図である。 同実施の形態にかかる文書・平文空間写像部101が行う文書・平文空間写像処理の手順を示すフローチャートである。 同実施の形態にかかる平文空間・文書写像部204が行う平文空間・文書写像処理の手順を示すフローチャートである。 第4の実施の形態にかかるn*(2*m*(|p-1|-1))ビットのビット列の分割及びパディングを概念的に示す図である。 同実施の形態にかかる文書・平文空間写像部101が行う文書・平文空間写像処理の手順を示すフローチャートである。 同実施の形態にかかる平文空間・文書写像部204が行う平文空間・文書写像処理の手順を示すフローチャートである。 一変形例にかかる暗号化処理装置100を例示する図である。 同変形例にかかる暗号化処理及び圧縮処理の手順を示すフローチャートである。 一変形例にかかる復号処理装置200を例示する図である。 同変形例にかかる復号処理の手順を示すフローチャートである。
符号の説明
100 暗号化処理装置
101 文書・平文空間写像部
102 第1文書分割部(第1分割部)
103 第2文書分割部(第2分割部)
104 第1パディング部(変換部)
105 第2パディング部(変換部)
106 伸張部
107,107´ 暗号化部
108 送信部
200 復号処理装置
201 受信部
202,202´ 復号部
203 圧縮部
204 平文空間・文書写像部
205 判定部
206 第1アンパディング部(第1逆変換部)
207 第2アンパディング部(第2逆変換部)
208 第1文書結合部(第1結合部)
209 第2文書結合部(第2結合部)
300 ネットワーク

Claims (23)

  1. 複数のビットが配列された任意のビット列を公開鍵を用いて暗号化する場合に平文空間に写像する文書・平文空間写像装置であって、
    ビット列と、当該ビット列を標数p及び拡大次数mの有限体F_{p^m}の6次拡大体上の部分群の1つである素数位数のトーラスの要素の圧縮表現であるF_{p^m}× F_{p^m}^*の要素(p:素数,m:自然数,p^m:pのm乗)に写像するためのpとmとを取得する取得部と、
    取得された前記ビット列を、F_{p^m}の要素を表現するのに必要な m*|p-1|ビット以下のビット列に各々分割する分割部と、
    分割された各前記ビット列に対して可逆な変換処理を行って、F_{p^m}の要素に写像する第1変換部と、
    分割された各前記ビット列に対して可逆な変換処理を行ってF_{p^m}^*の要素に写像する第2変換部と、
    写像されたF_{p^m}×F_{p^m}^*の要素の組を出力する出力部とを備える
    ことを特徴とする文書・平文空間写像装置。
  2. 複数のビットが配列された任意のビット列を公開鍵を用いて暗号化する場合に平文空間に写像する文書・平文空間写像装置であって、
    ビット列と、当該ビット列を標数p及び拡大次数mの有限体F_{p^m}の6次拡大体上の部分群の1つである素数位数のトーラスの要素の圧縮表現 であるF_{p^m}× F_{p^m}^*の要素(p:素数,m:自然数,p^m:pのm乗) のベクトル表現の組に写像するためのpとmとを取得する取得部と、
    取得された前記ビット列を、F_{p^m}の要素をベクトル表現するのに必要な m*|p-1|ビット以下のビット列に各々分割する分割部と、
    分割された各前記ビット列に対して可逆な変換処理を行って、F_{p^m}の要素のベクトル表現に写像する第1変換部と、
    分割された各前記ビット列に対して可逆な変換処理を行ってF_{p^m}^*の要素のベクトル表現に写像する第2変換部と、
    写像されたF_{p^m}×F_{p^m}^*の要素のベクトル表現の組を出力する出力部とを備える
    ことを特徴とする文書・平文空間写像装置。
  3. 前記第1変換部は、分割された各前記ビット列に対してパディングを行ってF_{p^m}に写像し、
    前記第2変換部は、分割された各前記ビット列に対してパディングを行ってF_{p^m}^*に写像する
    ことを特徴とする請求項2に記載の文書・平文空間写像装置。
  4. 前記分割部は、取得された前記ビット列を|p-1|ビット以下の所定の長さ毎に分割し、
    前記第1変換部は、前記所定の長さのビット列の一部の先頭に‘0’をパディングし、
    前記第2変換部は、前記一部以外の部分の先頭に‘0’をパディングすると共に、先頭以外の所定のビット位置に少なくとも1つの‘1’をパディングする
    ことを特徴とする請求項3に記載の文書・平文空間写像装置。
  5. 前記取得部は、mが’1’より大きい場合、n*(2*m*(|p-1|-1)-1)ビット(n:自然数)のビット列とpとmとを取得し、
    前記分割部は、
    n*(2*m*(|p-1|-1)-1)ビットのビット列を(2*m*(|p-1|-1)-1)ビット毎に分割する第1分割部と、
    (2*m*(|p-1|-1)-1)の各ビット列を、m個の(|p-1|-1)ビットのビット列を含む第1付加ビット列集合と、(m-1)個の(|p-1|-1)ビットのビット列と1個の(|p-1|-2)ビットのビット列とを含む第2付加ビット列集合とに各々分割する第2分割部とを有し、
    前記第1変換部は、各前記第1付加ビット列集合に含まれる各ビット列の先頭に‘0’をパディングし、
    前記第2変換部は、各前記第2付加ビット列集合に含まれる各ビット列の先頭に‘0’をパディングすると共に、各前記第2付加ビット列集合に含まれる(|p-1|-2)ビットのビット列の先頭以外の所定のビット位置に‘1’をパディングする
    ことを特徴とする請求項4に記載の文書・平文空間写像装置。
  6. 前記取得部は、mが’1’である場合、n*(2*|p-1|-3)ビット(n:自然数)のビット列とpとを取得し、
    前記分割部は、
    n*(2*|p-1|-3)ビットのビット列を(2*|p-1|-3)ビット毎に分割する第1分割部と、
    (2*|p-1|-3)ビットの各ビット列を、(|p-1|-1)ビットの第1ビット列と(|p-1|-2)ビットの第2ビット列とに各々分割する第2分割部とを有し、
    前記第1変換部は、各前記第1ビット列の先頭に‘0’をパディングし、
    前記第2変換部は、各前記第2ビット列の先頭に‘0’をパディングすると共に、先頭以外の所定のビット位置に‘1’をパディングする
    ことを特徴とする請求項4に記載の文書・平文空間写像装置。
  7. 前記分割部は、取得された前記ビット列を m*|p-1|ビット以下の所定の長さ毎に各々分割し、
    前記第1変換部は、前記所定の長さのビット列の一部の先頭に‘0’をパディングし、
    前記第2変換部は、前記一部以外の部分に含まれる全てのビットが‘0’である場合、当該一部以外の部分の所定のビット列の先頭に‘1’をパディングし、前記一部以外の部分に含まれる少なくとも1つのビットが‘1’である場合、当該一部以外の部分の先頭に‘0’をパディングする
    ことを特徴とする請求項3に記載の文書・平文空間写像装置。
  8. 前記取得部は、mが’1’より大きい場合、2*n*m*(|p-1|-1)ビット(n:自然数)のビット列とpとmとを取得し、
    前記分割部は、
    2*n*m*(|p-1|-1)ビットのビット列を2*m*(|p-1|-1)ビット毎に分割する第1分割部と、
    2*m*(|p-1|-1)ビットの各ビット列を、m個の(|p-1|-1)ビットのビット列を含む第1付加ビット列集合とm個の(|p-1|-1)ビットのビット列を含む第2付加ビット列集合とに各々分割する第2分割部とを有し、
    前記第1変換部は、各前記第1付加ビット列集合に含まれる各ビット列の先頭に‘0’をパディングし、
    前記第2変換部は、各前記第2付加ビット列集合に含まれる全てのビット列のビットが全て‘0’である場合、当該第2付加ビット列集合に含まれる所定のビット列の先頭に‘1’をパディングしその他のビット列の先頭に‘0’をパディングし、各前記第2付加ビット列集合に含まれるビット列の少なくとも1つのビットが‘1’である場合、当該第2付加ビット列集合に含まれる各ビット列の先頭に‘0’をパディングする
    ことを特徴とする請求項7に記載の文書・平文空間写像装置。
  9. 前記取得部は、mが’1’である場合、n*(2*|p-1|-2)ビット(n:自然数)のビット列とpとを取得し、
    前記分割部は、
    n*(2*|p-1|-2)ビットのビット列を(2*|p-1|-2)ビット毎に分割する第1分割部と、
    (2*|p-1|-2)ビットの各ビット列を、(|p-1|-1)ビットの第1ビット列と(|p-1|-1)ビットの第2ビット列とに各々分割する第2分割部とを有し、
    前記第1変換部は、各前記第1ビット列の先頭に‘0’をパディングし、
    前記第2変換部は、各前記第2ビット列のビットが全て‘0’である場合、当該第2ビット列の先頭に‘1’をパディングし、各前記第2ビット列に含まれる少なくとも1つのビットが‘1’である場合、当該第2ビット列の先頭に‘0’をパディングする
    ことを特徴とする請求項7に記載の文書・平文空間写像装置。
  10. 複数のビットが配列されたビット列であり暗号化されたビット列を公開鍵に対応する秘密鍵を用いて復号した後平文空間からビット列に写像する平文空間・文書写像装置であって、
    標数p及び拡大次数mの有限体の6次拡大体上の部分群の1つである素数位数のトーラスの要素の圧縮表現 F_{p^m}×F_{p^m}^*の要素の組により表現されるビット列を取得する取得部と、
    取得された前記ビット列に基づいて、F_{p^m}の要素で表現される第1付加ビット列集合に対して前記変換処理の逆変換処理を行うことにより、第1ビット列を得る第1逆変換部と、
    取得された前記ビット列に基づいて、F_{p^m}^*の要素で表現される第2付加ビット列集合に対して前記変換処理の逆変換処理を行うことにより、第2ビット列を得る第2逆変換部と、
    前記第1ビット列及び前記第2ビット列を結合する結合部とを備える
    ことを特徴とする平文空間・文書写像装置。
  11. 取得された前記ビット列に対して可逆な変換処理が正しく行われているか否かを判定する判定部を更に備え、
    前記第1逆変換部は、前記判定部の判定結果が肯定的である場合、F_{p^m}の要素で表現される第1付加ビット列集合に対して前記変換処理の逆変換処理を行うことにより、第1ビット列を得て、
    前記第21逆変換部は、前記判定部の判定結果が肯定的である場合、F_{p^m}^*の要素で表現される第2付加ビット列集合に対して前記変換処理の逆変換処理を行うことにより、第2ビット列を得る
    ことを特徴とする請求項10に記載の平文空間・文書写像装置。
  12. 前記判定部は、取得された前記ビット列に対してパディングが正しく行われているか否かを判定し、
    前記第1逆変換部は、前記判定部の判定結果が肯定的である場合、前記第1付加ビット列集合に含まれる各ビット列からパディングを取り除くことにより、第1ビット列を得て、
    前記第2逆変換部は、前記判定部の判定結果が肯定的である場合、前記第2付加ビット列集合に含まれる各ビット列からパディングを取り除くことにより、第2ビット列を得る
    ことを特徴とする請求項11に記載の平文空間・文書写像装置。
  13. 前記判定部は、
    前記第1付加ビット列集合に含まれる各ビット列が所定の長さ以下である且つ先頭ビットが‘0’であるか否かを判定する第1判定部と、
    前記第2付加ビット列集合に含まれる各ビット列が所定の長さ以下である且つ先頭ビットが‘0’である且つ所定のビット列の所定のビットが‘1’であるか否かを判定する第2判定部とを有し、
    前記第1逆変換部は、前記第1判定部の判定結果が肯定的である場合、前記第1付加ビット列集合に含まれる各ビット列から先頭ビットを取り除くことにより、第1ビット列を得て、
    前記第2逆変換部は、前記第2判定部の判定結果が肯定的である場合、前記第2付加ビット列集合に含まれる各ビット列から先頭ビット及び前記所定のビット列の前記所定のビットを取り除くことにより、第2ビット列を得る
    ことを特徴とする請求項12に記載の平文空間・文書写像装置。
  14. 前記判定部は、
    mが’1’より大きい場合、前記第1付加ビット列集合の各ビット列の長さが|p-1|ビットである且つ先頭ビットが‘0’であるか否かを判定する第1判定部と、
    mが’1’より大きい場合、前記第2付加ビット列集合の各ビット列の長さが|p-1|ビットである且つ先頭ビットが‘0’且つ所定のビット列の所定のビットが‘1’であるか否かを判定する第2判定部とを有し、
    前記第1逆変換部は、前記第1判定部の判定結果が肯定的である場合、前記第1付加ビット列集合に含まれる各ビット列から先頭ビットを取り除くことにより、第1ビット列を得て、
    前記第2逆変換部は、前記第2判定部の判定結果が肯定的である場合、前記第2付加ビット列集合に含まれる各ビット列から前記先頭ビット及び前記所定ビット列の前記所定のビットを取り除くことにより、第2ビット列を得る
    ことを特徴とする請求項13に記載の平文空間・文書写像装置。
  15. 前記判定部は、
    mが’1’である場合、前記第1付加ビット列集合に含まれる第1付加ビット列の長さが|p-1|ビットである且つ先頭ビットが‘0’であるか否かを判定する第1判定部と、
    mが’1’である場合、前記第2付加ビット列集合に含まれる第2付加ビット列の長さが|p-1|ビットである且つ当該第2付加ビット列の先頭ビットが‘0’且つ所定のビットが‘1’であるか否かを判定する第2判定部とを有し、
    前記第1逆変換部は、前記第1判定部の判定結果が肯定的である場合、前記第1付加ビット列から先頭ビットを取り除くことにより、第1ビット列を得て、
    前記第2逆変換部は、前記第2判定部の判定結果が肯定的である場合、前記第2付加ビット列から前記先頭ビット及び前記所定のビットを取り除くことにより、第2ビット列を得る
    ことを特徴とする請求項13に記載の平文空間・文書写像装置。
  16. 前記判定部は、
    前記第1付加ビット列集合に含まれる各ビット列が所定の長さ以下である且つ先頭ビットが‘0’であるか否かを判定する第1判定部と、
    前記第2付加ビット列集合に含まれる各ビット列が所定の長さ以下である且つ所定のビット列の先頭ビットが‘1’であるときその他のビットが全て‘0’である又は所定のビット列の先頭ビットが‘0’である且つその他のビット列の先頭ビットが’0’であるとき先頭ビット以外の少なくとも1つのビットが‘1’であるか否かを判定する第2判定部とを有し、
    前記第1逆変換部は、前記第1判定部の判定結果が肯定的である場合、前記第1付加ビット列集合に含まれる各ビット列から先頭ビットを取り除くことにより、第1ビット列を得て、
    前記第2逆変換部は、前記第2判定部の判定結果が肯定的である場合、前記第2付加ビット列集合に含まれる各ビット列から先頭ビットを取り除くことにより、第2ビット列を得る
    ことを特徴とする請求項11に記載の平文空間・文書写像装置。
  17. 前記判定部は、
    mが’1’より大きい場合、前記第1付加ビット列集合に含まれる各ビット列の長さが|p-1|ビットである且つ先頭ビットが‘0’であるか否かを判定する第1判定部と、
    mが’1’より大きい場合、前記第2付加ビット列集合に含まれる各ビット列の長さが|p-1|ビットである且つ所定のビット列の先頭ビットが‘1’であるときその他のビットが全て‘0’である又は前記所定のビット列の先頭ビットが‘0’である且つその他のビット列の先頭が’0’であるとき先頭ビット以外の少なくとも1つのビットが‘1’であるか否かを判定する第2判定部とを有し、
    前記第1逆変換部は、前記第1判定部の判定結果が肯定的である場合、前記第1ビット列から先頭ビットを取り除くことにより、第1ビット列を得て、
    前記第2逆変換部は、前記第2判定部の判定結果が肯定的である場合、前記第2ビット列から前記先頭ビットを取り除くことにより、第2ビット列を得る
    ことを特徴とする請求項15に記載の平文空間・文書写像装置。
  18. 前記判定部は、
    mが’1’である場合、前記第1付加ビット列集合に含まれる第1付加ビット列の長さが|p-1|ビットである且つ先頭ビットが‘0’であるか否かを判定する第1判定部と、
    mが’1’である場合、前記第2付加ビット列集合に含まれる第2付加ビット列の長さが|p-1|ビットである且つ当該第2付加ビット列の先頭ビットが‘1’であるとき2ビット目以降が全て‘0’である又は先頭ビットが‘0’であるとき先頭ビット以外の少なくとも1つのビットが‘1’であるか否かを判定する第2判定部とを有し、
    前記第1逆変換部は、前記第1判定部の判定結果が肯定的である場合、前記第1付加ビット列から先頭ビットを取り除くことにより、第1ビット列を得て、
    前記第2逆変換部は、前記第2判定部の判定結果が肯定的である場合、前記第2付加ビット列から前記先頭ビットを取り除くことにより、第2ビット列を得る
    ことを特徴とする請求項16に記載の平文空間・文書写像装置。
  19. 前記取得部は、F_{p^m}×F_{p^m}^*の要素の組により表現されるビット列をn組(n:自然数)取得し、
    前記判定部は、取得されたn組の前記ビット列に対して可逆な変換処理が正しく行われているか否かを各々判定し、
    前記第1逆変換部は、n組全てに対して前記判定部の判定結果が肯定的である場合、F_{p^m}の要素で表現される第1付加ビット列集合に対して前記変換処理の逆変換処理を行うことにより、第1ビット列を得て、
    前記第2逆変換部は、n組全てに対して前記判定部の判定結果が肯定的である場合、組毎に、F_{p^m}^*の要素で表現される第2付加ビット列集合に対して前記変換処理の逆変換処理を行うことにより、第2ビット列を得て、
    前記結合部は、n組全てについて前記第1ビット列及び前記第2ビット列を結合する
    ことを特徴とする請求項10乃至16のいずれか一項に記載の平文空間・文書写像装置。
  20. 取得部と、分割部と、第1変換部と、第2変換部と、出力部とを備え、複数のビットが配列された任意のビット列を公開鍵を用いて暗号化する場合に平文空間に写像する文書・平文空間写像装置で実行される文書・平文空間写像方法であって、
    前記取得部が、ビット列と、当該ビット列を標数p及び拡大次数mの有限体F_{p^m}の6次拡大体上の部分群の1つである素数位数のトーラスの要素の圧縮表現であるF_{p^m}× F_{p^m}^*の要素(p:素数,m:自然数,p^m:pのm乗)に写像するためのpとmとを取得する取得ステップと、
    前記分割部が、取得された前記ビット列を、F_{p^m}の要素を表現するのに必要な m*|p-1|ビット以下のビット列に各々分割する分割ステップと、
    前記第1変換部が、分割された各前記ビット列に対して可逆な変換処理を行ってF_{p^m}の要素に写像する第1変換ステップと、
    前記第2変換部が、分割された各前記ビット列に対して可逆な変換処理を行ってF_{p^m}^*の要素の要素に写像する第2変換ステップと、
    前記出力部が、写像されたF_{p^m}×F_{p^m}^*の要素の組を出力する出力ステップとを含む
    ことを特徴とする文書・平文空間写像方法。
  21. 取得部と、分割部と、第1変換部と、第2変換部と、出力部とを備え、複数のビットが配列された任意のビット列を公開鍵を用いて暗号化する場合に平文空間に写像する文書・平文空間写像装置で実行される文書・平文空間写像方法であって、
    前記取得部が、ビット列と、当該ビット列を標数p及び拡大次数mの有限体F_{p^m}の6次拡大体上の部分群の1つである素数位数のトーラスの要素の圧縮表現 であるF_{p^m}× F_{p^m}^*の要素(p:素数,m:自然数,p^m:pのm乗) のベクトル表現の組に写像するためのpとmとを取得する取得ステップと、
    前記分割部が、取得された前記ビット列を、F_{p^m}の要素をベクトル表現するのに必要な m*|p-1|ビット以下のビット列に各々分割する分割ステップと、
    前記第1変換部が、分割された各前記ビット列に対して可逆な変換処理を行って、F_{p^m}の要素のベクトル表現に写像する第1変換ステップと、
    前記第2変換部が、分割された各前記ビット列に対して可逆な変換処理を行ってF_{p^m}^*の要素のベクトル表現に写像する第2変換ステップと、
    前記出力部が、写像されたF_{p^m}×F_{p^m}^*の要素のベクトル表現の組を出力する出力ステップとを含む
    ことを特徴とする文書・平文空間写像方法。
  22. 取得部と、判定部と、第1変換部と、第2変換部と、結合部とを備え、複数のビットが配列されたビット列であり暗号化されたビット列を公開鍵に対応する秘密鍵を用いて復号した後平文空間からビット列に写像する平文空間・文書写像装置で実行される平文空間・文書方法であって、
    前記取得部が、標数p及び拡大次数mの有限体の6次拡大体上の部分体の1つである素数位数のトーラスの要素の圧縮表現 F_{p^m}×F_{p^m}^*の要素の組により表現されるビット列を取得する取得ステップと、
    前記第1変換部が、取得された前記ビット列に基づいて、F_{p^m}の要素で表現される第1付加ビット列集合に対して前記変換処理の逆変換処理を行うことにより、第1ビット列を得る第1逆変換ステップと、
    前記第2変換部が、取得された前記ビット列に基づいて、F_{p^m}^*の要素で表現される第2付加ビット列集合に対して前記変換処理の逆変換処理を行うことにより、第2ビット列を得る第2逆変換ステップと、
    前記結合部が、前記第1ビット列及び前記第2ビット列を結合する結合ステップとを含む
    ことを特徴とする平文空間・文書写像方法。
  23. 請求項20乃至22のいずれか一項に記載の方法をコンピュータに実行させることを特徴とするプログラム。
JP2008159888A 2008-06-19 2008-06-19 文書・平文空間写像装置、平文空間・文書写像装置、方法及びプログラム Pending JP2010002525A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2008159888A JP2010002525A (ja) 2008-06-19 2008-06-19 文書・平文空間写像装置、平文空間・文書写像装置、方法及びプログラム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2008159888A JP2010002525A (ja) 2008-06-19 2008-06-19 文書・平文空間写像装置、平文空間・文書写像装置、方法及びプログラム

Publications (1)

Publication Number Publication Date
JP2010002525A true JP2010002525A (ja) 2010-01-07

Family

ID=41584330

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2008159888A Pending JP2010002525A (ja) 2008-06-19 2008-06-19 文書・平文空間写像装置、平文空間・文書写像装置、方法及びプログラム

Country Status (1)

Country Link
JP (1) JP2010002525A (ja)

Similar Documents

Publication Publication Date Title
JP6964688B2 (ja) 暗号文に対する近似演算を行う装置及び方法
JP6934963B2 (ja) データを暗号化する方法およびシステム
JP6083234B2 (ja) 暗号処理装置
KR102019159B1 (ko) 정수 기반 준동형 암호 기법에 일반적으로 적용 가능한 압축 암복호화 장치 및 방법
JP4786531B2 (ja) 暗号システム、暗号装置、復号装置、プログラムおよび集積回路
JP6962578B2 (ja) 暗号処理システム、暗号処理装置、暗号処理プログラム、及び暗号処理方法
JPH09230786A (ja) データの暗号化方法及び装置
JP6575532B2 (ja) 暗号化装置、復号装置、暗号処理システム、暗号化方法、復号方法、暗号化プログラム、及び復号プログラム
US20070121933A1 (en) Information transfer system, encryption device, and decryption device
US20100046745A1 (en) Encrypting apparatus, decrypting apparatus, cryptocommunication system, and methods and computer program products therefor
JP2009193024A (ja) 復号化処理装置、暗号処理システム、復号化処理方法およびプログラム
JP2010049212A (ja) 復号装置、復号方法、復号プログラム、暗号化装置、暗号化方法および暗号化プログラム
US20080181397A1 (en) Secure data transmission and storage using limited-domain functions
WO2019220900A1 (ja) 暗号化システム、暗号化装置、復号装置、暗号化方法、復号方法、及びプログラム
JP5300374B2 (ja) 表現変換装置、演算装置、表現変換方法及びプログラム
JP5354994B2 (ja) 代数的トーラスを用いたデータ圧縮処理を行う装置およびプログラム
JP5300373B2 (ja) 代数的トーラスを用いたデータ圧縮処理を行う装置およびプログラム
JP4685621B2 (ja) 鍵生成装置、暗号化装置、復号化装置、乗法型ナップザック暗号システム、乗法型ナップザック暗号復号方法およびプログラム
JP2010049214A (ja) 暗号化装置、復号装置、暗号文検証装置、暗号化方法、復号方法及びプログラム
JP5103407B2 (ja) 暗号化数値二進変換システム、暗号化数値二進変換方法、暗号化数値二進変換プログラム
JP2010002525A (ja) 文書・平文空間写像装置、平文空間・文書写像装置、方法及びプログラム
Apau et al. Data hiding in audio signals using elliptic curve cryptography, huffman code algorithm and low-bit encoding
JP5514345B2 (ja) 表現変換装置、演算装置、表現変換方法及びプログラム
JP2004184516A (ja) デジタルデータ送信端末
Mandangan et al. REDUCTION-BY-PERCENTAGE COMPRESSION TECHNIQUE FOR REDUCING SIZES OF PLAINTEXT PRIOR TO ENCRYPTION ALGORITHM