暗号装置及びその方法
【課題】パーソナル・コンピュータ用のアプリケーション・ソフトウェア等の有効数字の範囲を超える整数について、第三者による解読のための手がかりとなる情報を増やすことなく、暗号化及び復号をすることができる暗号化及び復号の方法を提供すること。
【解決手段】暗号装置1は、第1暗号化部14により、所定数より小さい整数Xiを底とし、整数Eを指数としたべき乗を積Nで除算した場合の剰余を算出して整数Xiの暗号化数Yiとし、第2暗号化部15により、暗号化数Yiの換字式暗号化により整数Yi’を算出する。第1暗号化部14は、整数Xiを、複数の整数により構成される展開式に変換し、当該展開式により、整数Xiを底とし、整数Eを指数としたべき乗を算出し、第2暗号化部15は、暗号化数Yiを、複数の整数により構成される展開式に変換し、当該展開式により、暗号化数Yiの換字式暗号を行う。
【解決手段】暗号装置1は、第1暗号化部14により、所定数より小さい整数Xiを底とし、整数Eを指数としたべき乗を積Nで除算した場合の剰余を算出して整数Xiの暗号化数Yiとし、第2暗号化部15により、暗号化数Yiの換字式暗号化により整数Yi’を算出する。第1暗号化部14は、整数Xiを、複数の整数により構成される展開式に変換し、当該展開式により、整数Xiを底とし、整数Eを指数としたべき乗を算出し、第2暗号化部15は、暗号化数Yiを、複数の整数により構成される展開式に変換し、当該展開式により、暗号化数Yiの換字式暗号を行う。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、暗号装置及びその方法に関する。
【背景技術】
【0002】
従来、法人組織等において構成員を識別するために、ユニークな整数等を含む識別子を用いることが知られている。例えば、国民健康保険制度等において加入者を識別するために8桁程度の数字が用いられたり、銀行口座を識別するために銀行の支店及び口座のそれぞれに3桁から10桁程度の数字等が用いられたり、クレジットカードの会員を識別するために16桁程度の数字が用いられたりしている。
【0003】
また、暗号及びデジタル署名を行う方式として、RSA暗号が知られている(例えば、特許文献1参照)。RSA暗号は、桁数が大きい合成数の素因数分解問題が困難であることを安全性の根拠とした公開鍵暗号方式である。すなわち、RSA暗号では、暗号化の段階において、適当な正の整数によるべき乗と素数2個の積を法数とする剰余演算とを用い、復号において、これら素数2個の積の素因数を要するべき乗根を用いる。このことにより、RSA暗号では、素因数を知らなければ復号が困難になることによって暗号の安全性を確保している。
【0004】
更に、コンピュータ・ネットワークを介する情報の送受信においてセキュリティを確保するために、暗号化、認証、改ざん検出の機能を有するSSLプロトコル等が知られている。例えば、SSLプロトコルに含まれる公開鍵証明書に基づく認証には、RSA暗号を用いられている。
【先行技術文献】
【特許文献】
【0005】
【特許文献1】特開平09−107352号公報
【発明の概要】
【発明が解決しようとする課題】
【0006】
しかしながら、従来は、暗号化前の数字等の形式と、復号後の数字等の形式との組み合わせ等を手がかりとして、公開鍵と対をなす秘密鍵が解読されると、同じ公開鍵及び秘密鍵の組み合わせを用いる暗号が、全て解読可能になるという問題があった。また、RSA暗号では、素因数を特定するまでの所用時間の長さを暗号の安全性の根拠としていることから、解読に用いるコンピュータ機器等を高性能化することにより、一定の解読手法であってもより短時間で解読することができるという問題があった。
【0007】
また、パーソナル・コンピュータ用のアプリケーション・ソフトウェア等においては内部で取り扱える数値の範囲の制約から、例えば、16桁の整数の自然数のべき乗等の計算を実行させるとプロセッサのオーバーフローが発生して、正確な計算結果が得られない場合がある。このため、元の整数を、オーバーフローが発生しない桁の範囲で適宜分割し、分割して得られた整数ごとに独立してべき剰余計算を実施する等の方策が必要であった。これは文章の暗号化において単位バイト数ごとに分割して平文を暗号化及び復号することと同様であるが、こうした手法では、分割した整数又は語句ごとに暗号化及び復号のための鍵が関連づけられるために、第三者により多くの解読の手がかりを与えてしまうという問題があった。
【0008】
例えば、クレジットカードの登録番号及び有効期限の年月は、16桁及び4桁の整数の形式を用いて表されている。これらの整数を組み合わせて、20桁の整数を生成し、この整数を暗号化し復号することが可能な方法が提供できれば、桁を分割して複数の整数を別個に暗号化する従来の技法と比較して、第三者による解読のための手がかりとなる情報を増やすことなく、セキュリティを確保することが可能になる。すなわち、個人情報を秘匿する技術として、多桁の整数を暗号化し復号する方法が求められている。
【0009】
更に、音声による通話又は印刷物等の文書を介する情報の漏洩においては、コンピュータ・ネットワークを用いて伝達される情報に対するSSLプロトコル等のセキュリティ技術では対応できないため、音声又は文書等を含む多様な形態で個人情報を隠蔽しうる方法が必要であった。
【0010】
本発明は、パーソナル・コンピュータ用のアプリケーション・ソフトウェア等の有効数字の範囲を超える整数について、第三者による解読のための手がかりとなる情報を増やすことなく、暗号化及び復号をすることができる暗号化及び復号の方法を提供することを目的とする。
【課題を解決するための手段】
【0011】
本発明に係る暗号装置は、整数を暗号化し、復号する暗号装置であって、第1の素数Aと第2の素数Bとの積Nが所定数を超えるように前記A及び前記Bを生成する素数生成手段と、前記第1の素数Aより1少ない整数A’と前記第2の素数Bより1少ない整数B’との積D、又は前記整数A’と前記整数B’との最小公倍数Kと素である整数Eであって、前記所定数を底とし、前記整数Eを指数としたべき乗が所定桁数を超えるように前記整数Eを生成し、前記整数Eを暗号鍵とする暗号鍵生成手段と、任意の整数mとした場合に次式を満たすように整数Fを生成し、前記整数Fを前記暗号鍵に対応する復号鍵とする復号鍵生成手段と、
【数1】
前記所定数より小さい整数Xiを底とし、前記整数Eを指数としたべき乗を前記積Nで除算した場合の剰余を算出して前記整数Xiの暗号化数Yiとする第1暗号化手段と、前記暗号化数Yiの換字式暗号化により整数Yi’を算出する第2暗号化手段と、前記Yi’から換字式復号により前記暗号化数Yiを復号する第2復号手段と、前記暗号化数Yiを底とし、前記整数Fを指数としたべき乗を前記整数Nで除算した場合の剰余を算出して前記整数Xiを復号する第1復号手段と、を備え、前記第1暗号化手段は、前記整数Xiを、複数の整数により構成される展開式に変換し、当該展開式により、前記整数Xiを底とし、前記整数Eを指数としたべき乗を算出し、前記第1復号手段は、前記暗号化数Yiを、複数の整数により構成される展開式に変換し、当該展開式により、前記暗号化数Yiを底とし、前記整数Fを指数としたべき乗を算出し、前記第2暗号化手段は、前記暗号化数Yiを、複数の整数により構成される展開式に変換し、当該展開式により、前記暗号化数Yiを換字式暗号し、前記第2復号手段は、前記整数Yi’を、複数の整数により構成される展開式に変換し、当該展開式により、前記暗号化数Yiを復号する。
【0012】
また、前記第2暗号化手段は、前記暗号化数Yiに対して、前記所定数より小さい正の整数からランダムに選択された整数である鍵Riの値を加算することにより、換字式暗号を行うことが好ましい。
【0013】
また、前記第1暗号化手段は、前記整数Xiに対して、オフセット数Tを加算して、当該整数Xiを更新し、当該更新された整数Xiを底とし、前記整数Eを指数としたべき乗を前記積Nで除算した場合の剰余を算出して当該整数Xiの暗号化数Yiとし、当該暗号化数Yiに対して、前記オフセット数Tを減算して当該暗号化数Yiを更新し、前記第2暗号化手段は、前記暗号化数Yiに対して、前記オフセット数Tを加算して、当該暗号化数Yiを更新し、前記更新された暗号化数Yiを底とし、前記整数Fを指数としたべき乗を前記整数Nで除算した場合の剰余を算出して前記整数Xiを復号し、当該整数Xiに対して、前記オフセット数Tを減算して整数Xiを更新することが好ましい。
【0014】
また、前記オフセット数Tは、複数の前記整数Xiが存在する場合、当該オフセット数Tを当該整数Xiそれぞれに加算した場合に、当該整数Xiそれぞれが0以上かつ前記所定数以下になるように設定されることが好ましい。
【0015】
また、暗号装置は、前記素数生成手段と、前記暗号鍵生成手段と、前記復号鍵生成手段と、前記第1暗号化手段と、前記第2暗号化手段とを、前記素数生成手段、前記暗号鍵生成手段、前記復号鍵生成手段、前記第1暗号化手段、前記第2暗号化手段の順に所定回数実行する暗号化制御手段と、前記第2復号手段と、前記第1復号手段とを、前記第2復号手段、前記第1復号手段の順に前記所定回数実行する復号制御手段と、を更に備えることが好ましい。
【0016】
また、前記素数生成手段は、前記暗号化制御手段により繰り返し実行される場合、それぞれの繰り返し実行において前記A及び前記Bが異なるように前記A及び前記Bを生成することが好ましい。
【0017】
本発明に係る暗号装置は、整数を暗号化し、復号する暗号装置であって、第1の素数Aと第2の素数Bとの積Nが所定数を超えるように前記A及び前記Bを生成する素数生成手段と、前記第1の素数Aより1少ない整数A’と前記第2の素数Bより1少ない整数B’との積D、又は前記整数A’と前記整数B’との最小公倍数Kと素である整数Eであって、前記所定数を底とし、前記整数Eを指数としたべき乗が所定桁数を超えるように前記整数Eを生成し、前記整数Eを暗号鍵とする暗号鍵生成手段と、任意の整数mとした場合に次式を満たすように整数Fを生成し、前記整数Fを前記暗号鍵に対応する復号鍵とする復号鍵生成手段と、
【数2】
前記所定数より小さい整数Xiに対して、オフセット数Tを加算して、当該整数Xiを更新し、当該更新された整数Xiを底とし、前記整数Eを指数としたべき乗を前記積Nで除算した場合の剰余を算出して前記整数Xiの暗号化数Yiとし、当該暗号化数Yiに対して、前記オフセット数Tを減算して当該暗号化数Yiを更新する第1暗号化手段と、前記暗号化数Yiに対して、前記オフセット数Tを加算して、当該暗号化数Yiを更新し、前記更新された暗号化数Yiを底とし、前記整数Fを指数としたべき乗を前記整数Nで除算した場合の剰余を算出して前記整数Xiを復号し、当該整数Xiに対して、前記オフセット数Tを減算して整数Xiを更新する第1復号手段と、前記素数生成手段と、前記暗号鍵生成手段と、前記復号鍵生成手段と、前記第1暗号化手段とを、前記素数生成手段、前記暗号鍵生成手段、前記復号鍵生成手段、前記第1暗号化手段の順に所定回数実行する暗号化制御手段と、前記第1復号手段を、前記所定回数実行する復号制御手段と、を備え、前記第1暗号化手段は、前記整数Xiを、複数の整数により構成される展開式に変換し、当該展開式により、前記整数Xiを底とし、前記整数Eを指数としたべき乗を算出し、前記第1復号手段は、前記暗号化数Yiを、複数の整数により構成される展開式に変換し、当該展開式により、前記暗号化数Yiを底とし、前記整数Fを指数としたべき乗を算出する。
【0018】
本発明に係る暗号装置が整数を暗号化し、復号する方法は、暗号装置が整数を暗号化し、復号する方法であって、第1の素数Aと第2の素数Bとの積Nが所定数を超えるように前記A及び前記Bを生成する素数生成ステップと、前記第1の素数Aより1少ない整数A’と前記第2の素数Bより1少ない整数B’との積D、又は前記整数A’と前記整数B’との最小公倍数Kと素である整数Eであって、前記所定数を底とし、前記整数Eを指数としたべき乗が所定桁数を超えるように前記整数Eを生成し、前記整数Eを暗号鍵とする暗号鍵生成ステップと、任意の整数mとした場合に次式を満たすように整数Fを生成し、前記整数Fを前記暗号鍵に対応する復号鍵とする復号鍵生成ステップと、
【数3】
前記所定数より小さい整数Xiを底とし、前記整数Eを指数としたべき乗を前記積Nで除算した場合の剰余を算出して前記整数Xiの暗号化数Yiとする第1暗号化ステップと、前記暗号化数Yiを換字式暗号化により整数Yi’を算出する第2暗号化ステップと、前記整数Yi’から換字式復号により前記暗号化数Yiを復号する第2復号ステップと、前記暗号化数Yiを底とし、前記整数Fを指数としたべき乗を前記積Nで除算した場合の剰余を算出して前記整数Xiを復号する第1復号ステップと、を含み、前記第1暗号化ステップは、前記整数Xiを、複数の整数により構成される展開式に変換し、当該展開式により、前記整数Xiを底とし、前記整数Eを指数としたべき乗を算出し、前記第1復号ステップは、前記暗号化数Yiを、複数の整数により構成される展開式に変換し、当該展開式により、前記暗号化数Yiを底とし、前記整数Fを指数としたべき乗を算出し、前記第2暗号化ステップは、前記暗号化数Yiを、複数の整数により構成される展開式に変換し、当該展開式により、前記暗号化数Yiを換字式暗号し、前記第2復号ステップは、前記整数Yi’を、複数の整数により構成される展開式に変換し、当該展開式により、前記暗号化数Yiを復号する。
【発明の効果】
【0019】
本発明によれば、パーソナル・コンピュータ用のアプリケーション・ソフトウェア等の有効数字の範囲を超える整数について、第三者による解読のための手がかりとなる情報を増やすことなく、暗号化及び復号をすることができる。
【図面の簡単な説明】
【0020】
【図1】第1実施形態に係る暗号装置の機能構成を示す図である。
【図2】第1実施形態に係る暗号装置により暗号化を行う場合の処理の流れを示すフローチャートである。
【図3】第1実施形態に係る暗号装置により復号を行う場合の処理の流れを示すフローチャートである。
【図4】第2実施形態に係る暗号装置の機能構成を示す図である。
【図5】第2実施形態に係る暗号装置により暗号化を行う場合の処理の流れを示すフローチャートである。
【図6】第2実施形態に係る暗号装置により復号を行う場合の処理の流れを示すフローチャートである。
【発明を実施するための形態】
【0021】
<第1実施形態>
以下、本発明の実施形態について図を参照しながら説明する。
【0022】
[機能構成]
図1は、第1実施形態に係る暗号装置1の機能構成を示す図である。暗号装置1は、所定範囲の任意の数値を暗号化し、復号する装置である。この暗号装置1は、他の暗号装置1とLAN(Local Area Network)やインターネット等のコンピュータ・ネットワークにより構成される通信ネットワークNにより、通信可能に接続されている。
【0023】
第1実施形態は、パーソナル・コンピュータ(暗号装置1)及びその周辺装置に適用される。第1実施形態における各部は、パーソナル・コンピュータ及びその周辺装置が備えるハードウェア並びにこのハードウェアを制御するソフトウェアによって構成される。
【0024】
上記ハードウェアには、制御部としてのCPUの他、記憶部、通信部、表示部及び入力部が含まれる。記憶部としては、例えば、メモリ(RAM、ROM等)、ハードディスクドライブ(HDD)及び光ディスク(CD、DVD等)ドライブが挙げられる。通信部としては、例えば、各種有線及び無線インターフェース装置が挙げられる。表示部としては、例えば、液晶ディスプレイ、プラズマディスプレイ等の各種ディスプレイが挙げられる。入力部としては、例えば、キーボード及びマウス等が挙げられる。
【0025】
上記ソフトウェアには、上記ハードウェアを制御するコンピュータ・プログラムやアプリケーション・ソフトウェアやデータが含まれる。コンピュータ・プログラムやアプリケーション・ソフトウェアやデータは、記憶部により記憶され、制御部により適宜実行、参照される。また、コンピュータ・プログラムやアプリケーション・ソフトウェアやデータは、通信回線を介して配布することも可能であり、CD−ROM等のコンピュータ可読媒体に記録して配布することも可能である。
【0026】
暗号装置1の制御部は、素数生成部11と、暗号鍵生成部12と、復号鍵生成部13と、第1暗号化部14と、第2暗号化部15と、暗号化制御部16と、第2復号部17と、第1復号部18と、復号制御部19と、を備える。
を備える。
【0027】
素数生成部11は、第1の素数Aと第2の素数Bとの積Nが所定数Xを超えるように、第1の素数A及び第2の素数Bを生成する。所定数Xとは、例えば、20桁の整数であり、乗算結果がレジスタで一度に表現できる範囲を超える整数である。また、所定数Xとは、一度に暗号化したい情報が整数で表現できる場合、この整数よりも大きい値である。
【0028】
暗号鍵生成部12は、第1の素数Aより1少ない整数A’と第2の素数Bより1少ない整数B’との積D、又は整数A’と整数B’との最小公倍数Kと、素である整数Eであって、所定数Xを底とし整数Eを指数としたべき乗が、レジスタの表現できる桁数よりも大きい桁数としての所定桁数を超える(桁あふれが発生する)ように整数Eを生成し、この整数Eを暗号鍵とする。すなわち、暗号鍵生成部12は、積D又は最小公倍数Kと素である整数Eであって、整数XのE乗の演算結果が所定桁数を超える整数Eをランダムに生成し、この整数Eを暗号鍵とする。
【0029】
復号鍵生成部13は、任意の整数mとした場合に以下の(1)式を満たすように整数Fを生成し、この整数Fを、暗号化鍵Eに対応する復号鍵として算出する。生成された整数Fは、後述の第1復号部18に通知される。整数Fは、(1)式を満たすものであれば、任意の数でよく、復号鍵生成部13は、ランダムに整数Fを生成してもよい。
【0030】
【数4】
【0031】
第1暗号化部14は、所定数Xより小さい任意の正の整数、すなわち、暗号化される整数Xiを底とし整数Eを指数としたべき乗を、第1の素数Aと第2の素数Bとの積Nで除算した場合の剰余を算出することにより、整数Xiの暗号化数Yiを算出する。すなわち、第1暗号化部14は、以下の(2)式で表される、整数Xiの暗号化数Yiを算出する。(2)式に示される「mod」は、剰余を算出する関数である。
【0032】
【数5】
【0033】
具体的には、第1暗号化部14は、繰り返し二乗法(高速冪乗法)を用いて整数Xiの暗号化数Yiを算出する。以下に、処理手順について以下に説明する。
【0034】
まず、第1暗号化部14は、整数Eの2進数展開を行い、整数XiのE乗を、この整数Xiの2kのべき乗の積に展開する。ここで、kは、0からnまでの整数をとるものとし、nは、2のn乗が整数Eを超えないnのうち、もっとも大きい数に対応するものとする。例えば、整数Eが287である場合、整数Xiは、以下の(3)式で表される。また、2の8乗が整数Eを超えない最も大きい数となるので、nは8となる。
【0035】
【数6】
【0036】
続いて、第1暗号化部14は、以下の(4)式に示すように、整数Xiの20乗を積Nで除算した場合の剰余から順に、整数Xiの2k乗を積Nで除算した場合の剰余を算出する。
【0037】
【数7】
【0038】
ここで、整数Eは、所定数XのE乗の演算結果がレジスタの表現できる桁数よりも大きい桁数となるように生成しているので、整数Xiの2k乗を算出する場合に、桁あふれが生じる場合がある。そこで、第1暗号化部14は、整数Xiについて、以下の(5)式を用いて、上位の桁Xu及び下位の桁Xdに分割された整数に展開し、上位の桁Xu及び下位の桁Xdに基づいて、整数Xiの2n乗まで算出する。
【0039】
【数8】
【0040】
式中、Mは底であり、Cdは整数Xiにおける下位の桁の数である。また、Cdは、1以上の整数である。
【0041】
例えば、底であるMを2とし、整数Xiの桁数を16桁、下位の桁数Cdを8桁とする場合、(5)式は、以下の(6)式のように表される。
【0042】
【数9】
【0043】
例えば、第1実施形態に係る暗号装置1が16ビット幅のレジスタのCPUを備える場合に、整数Xiの値が10進数の65532であるとすると、この整数Xiに対するべき乗の計算において、指数として、2を用いた時点で、16ビット幅のレジスタを用いて表現できる整数の上限値65535を超えてしまう。すなわち、単に整数Xiをべき乗する通常の計算方法に従って(2)式の右辺に含まれる整数XiのE乗の計算を実施すると、正確なべき乗の値が得られない場合がある。
【0044】
これに対して、式(6)により表される桁の分割を用いて上位の桁と下位の桁をそれぞれ整数部分として分割すると、例えば、整数Xiが10進数の65532、すなわち、2進数の1111111111111100(2)は、上位8桁に含まれる整数11111111(2)(10進数の255)と、下位8桁に含まれる整数11111100(2)(10進数の252)とに分割される。この場合、分割された2つの数は、255の2乗よりも小さい値となるので、16ビット幅のレジスタが表現できる整数の範囲内となる。よって、桁あふれによる誤りを避けることが可能である。
【0045】
また、第1実施形態では、(5)式のように、2つの整数に分割することとしたが、例えば、整数Xiが20桁の場合に、以下の(7)式に示されるように、4つの整数に分割することとしてもよい。
【0046】
【数10】
【0047】
式中、X15は整数Xiの16桁目から20桁目、X10は整数Xiの11桁目から15桁目、X5は整数Xiの6桁目から10桁目、X0は整数Xiの1桁目から5桁目である。また、整数Xiが20桁に満たない場合に、上位の桁に対してゼロ詰めを行ってもよい。このようにすることで、暗号装置1は、桁あふれを発生する条件で整数Eを生成した後に、(3)〜(5)式を用いて整数Xiを展開して暗号化数Yiを算出することにより、桁あふれを避けて、暗号化数Yiを正確に算出することができる。
なお、整数Xiは、(6)式や(7)式のように、分割後の整数の桁数が等しくなるように分割されることが好ましい。
【0048】
続いて、第1暗号化部14は、2のべき乗の積に展開された整数XiのE乗の剰余を算出する。例えば、整数Eが287である場合、整数XiのE乗の剰余は、以下の(8)式で示されるので、(4)式に示すように予め求められている整数Xiの2k乗を積Nで除算した場合の剰余から容易に算出することが可能となる。なお、この計算において、桁あふれを回避するように、被乗数を、(5)式と同様に上位の桁と下位の桁に分割して、剰余を算出するようにしてもよい。
【0049】
【数11】
【0050】
第2暗号化部15は、所定数Xより小さい正の整数をランダムに選択し、この整数を鍵Riとする。続いて、第2暗号化部15は、この鍵Riを使用して、以下の(9)式を基づいて、暗号化数Yの換字式暗号を行い、整数Yi’を算出する。
【0051】
【数12】
【0052】
式中、Rot()は、鍵Riを秘密鍵として用いて、暗号化数Yiを換字式暗号する関数である。具体的には、Rot()は、暗号化数Yiを、所定数Xの範囲で鍵Riの値だけ加算する。また、暗号化数Yiに鍵Riを加算した結果が所定数Xを超える場合、Rot()は、整数Yi’として、YiにRiを加算したことにより所定数Xを超えた分、すなわち、Yi+Ri−Xを返す。なお、この鍵Riは、第2復号部17に通知される。
【0053】
また、Rot()は、暗号化数Yiに鍵Riを加算する場合に、暗号化数Yiについて、以下の(10)式を用いて、上位の桁Yu及び下位の桁Ydに分割された整数部分を生成し、この上位の桁Yu及び下位の桁Ydを用いて、整数Yi’を算出する。
【0054】
【数13】
【0055】
(5)式と同様に、(10)式中、Mは底であり、Cdは暗号化数Yiにおける下位の桁の数である。また、Cdは、少なくとも1である。
【0056】
暗号化制御部16は、素数生成部11と、暗号鍵生成部12と、復号鍵生成部13と、第1暗号化部14と、第2暗号化部15との実行を制御する。具体的には、暗号化制御部16は、素数生成部11と、暗号鍵生成部12と、第1暗号化部14と、第2暗号化部15とを、素数生成部11、暗号鍵生成部12、第1暗号化部14、及び第2暗号化部15の順に所定回数実行する。この所定回数は、予め定められている回数でもよいし、暗号化制御部16によりランダムに生成される整数でもよい。なお、この所定回数は、復号制御部19に通知される。
【0057】
第2復号部17は、第2暗号化部15により換字式暗号された整数Yi’から、換字式復号により暗号化数Yiを算出する。具体的には、第2復号部17は、以下の(11)式を用いた換字式復号を行い、暗号化数Yを算出する。
【0058】
【数14】
【0059】
式中、鍵Riは、換字式暗号化の秘密鍵として用いられる整数であり、第2暗号化部15により生成された整数である。なお、鍵Riは、第2暗号化部15により暗号化されたデータとは別に通知される。
【0060】
Rot−1()は、整数Yi’を、所定数Xの範囲で鍵Riの値だけ減算した値である。整数Yi’に鍵Riを減算した結果が0未満となる場合、Rot−1()は、暗号化数Yiとして、整数Yi’にRiを減算したことにより0より小さい分を所定数Xから減算した値、すなわち、Yi−Ri+Xを返す。
【0061】
また、Rot−1()は、整数Yi’にRiを減算する場合に、整数Yi’について、(10)式と同様に、上位の桁及び下位の桁に分割された整数部分を生成し、この上位の桁及び下位の桁を用いて、暗号化数Yiを算出する。
【0062】
第1復号部18は、復号鍵生成部13から通知された復号鍵としての整数Fを用いて、暗号化数Yiを底とし整数Fを指数としたべき乗を、積Nで除算した場合の剰余を算出することにより、暗号化数Yiの元の数、すなわち整数Xiを算出する。すなわち、第1復号部18は、以下の(12)式で表される、暗号化数Yiの元の整数Xiを算出する。第1復号部18は、第1暗号化部14と同様に、繰り返し二乗法(高速冪乗法)を用いることにより、暗号化数Yiの元の整数Xiを算出する。第1復号部18の詳細な処理は、第1暗号化部14と同様であるので、説明を省略する。
【0063】
【数15】
【0064】
復号制御部19は、第2復号部17と第1復号部18との実行を制御する。具体的には、復号制御部19は、第2復号部17と第1復号部18とを、第2復号部17、第1復号部18の順に所定回数実行する。
【0065】
[フローチャート]
続いて、第1実施形態に係る暗号装置1を使用して、暗号化及び復号を行う処理の流れについて説明する。
図2は、第1実施形態に係る暗号装置1により暗号化を行う場合の処理の流れを示すフローチャートである。なお、このフローチャートでは、暗号化制御部16により、所定回数としてA回、暗号化が行なわれるものとする。
【0066】
ステップS1において、制御部(暗号化制御部16)は、所定回数か否かを判定するために記憶部に設けられているカウンタc1の値を1とする。
【0067】
ステップS2において、制御部(素数生成部11)は、第1の素数Aと第2の素数Bとの積Nが所定数Xを超えるように、第1の素数A及び第2の素数Bを生成する。
【0068】
ステップS3において、制御部(暗号鍵生成部12)は、第1の素数A及び第2の素数Bに基づいて、暗号鍵としての整数Eを生成する。具体的には、制御部(暗号鍵生成部12)は、(A−1)と(B−1)の積D、又は(A−1)と(B−1)の最小公倍数Kと、素である整数Eであって、所定数Xを底とし、整数Eを指数としたべき乗が、レジスタの表現できる桁数よりも大きい桁数としての所定桁数を超えるように整数Eを生成し、この整数Eを暗号鍵とする。
【0069】
ステップS4において、制御部(復号鍵生成部13)は、暗号鍵(整数E)に対応する復号鍵(整数F)を生成する。具体的には、任意の整数mとした場合に上述の(1)式を満たすように、整数Fを生成し、この整数Fを復号鍵とする。この整数Fは、例えば制御部により、何回目の第1暗号化部14の暗号に係る復号鍵であるかを示す情報と関連付けられて、復号を行う暗号装置1に通知される。
【0070】
ステップS5において、制御部(第1暗号化部14)は、整数Eの2進数展開を行い、この展開式に基づいて、整数XiのE乗を、この整数Xiの2kのべき乗の積に展開する。
【0071】
ステップS6において、制御部(第1暗号化部14)は、kを0に設定する。
ステップS7において、制御部(第1暗号化部14)は、整数Xiの2k乗を、積Nで除算した場合の剰余を算出する。具体的には、制御部(第1暗号化部14)は、直前に算出した整数Xiの2k−1乗を積Nで除算した場合の剰余を2乗し、更にこの値を積Nで除算した場合の剰余を算出する。また、制御部(第1暗号化部14)は、整数Xiを、桁あふれが生じないように上述の(5)式に基づいて、複数の整数の和に変換し、変換された整数に基づいて、整数Xiの2k乗を積Nで除算した場合の剰余を算出する。
【0072】
ステップS8において、制御部(第1暗号化部14)は、kに1を加算する。
ステップS9において、制御部(第1暗号化部14)は、kがnより大きいか否かを判定する。制御部(第1暗号化部14)は、この判定がYESの場合、処理をステップS10に移し、この判定がNOの場合、処理をステップS7に移す。
【0073】
ステップS10において、制御部(第1暗号化部14)は、ステップS7で算出した剰余に基づいて、整数XiのE乗を、積Nで除算した場合の剰余を暗号化数Yiとして算出する。
【0074】
ステップS11において、制御部(第2暗号化部15)は、鍵Riを生成し、(9)式に基づいて、暗号化数Yの換字式暗号を行い、整数Yi’を算出する。この鍵Riは、例えば制御部により、何回目の換字式暗号に係る鍵であるかを示す情報と関連付けられて、復号を行う暗号装置1に通知される。
【0075】
ステップS12において、制御部(暗号化制御部16)は、カウンタc1が、所定回数Aと等しいか否かを判定する。制御部(暗号化制御部16)は、この判定がYESの場合、処理を終了し、この判定がNOの場合、処理をステップS13に移す。
ステップS13において、制御部(暗号化制御部16)は、カウンタc1に1を加算するとともに、整数Xiに、整数Yi’を代入する。その後、制御部(暗号化制御部16)は、処理をステップS2に移す。
【0076】
図3は、第1実施形態に係る暗号装置1により復号を行う場合の処理の流れを示すフローチャートである。なお、暗号装置1には、暗号化されたデータと、暗号化に用いられた鍵Ri、及び復号鍵(整数F)が通知され、暗号化されたデータの復号が可能な状態であることとする。また、暗号化の繰り返し数、すなわち所定回数は、Aであることとする。
【0077】
ステップS21において、制御部(復号制御部19)は、所定回数か否かを判定するために記憶部に設けられているカウンタc2の値を1とする。
【0078】
ステップS22において、制御部(第2復号部17)は、上述の(11)式に基づいて、第2暗号化部15により換字式暗号された整数Yi’から、暗号化数Yiを算出する。復号に用いられる、鍵Riには、何回目の換字式復号であるかを示す情報が関連付けられており、所定回数Aに対応する鍵Riから順に復号が行われる。
【0079】
ステップS23において、制御部(第1復号部18)は、暗号化数Yiの2進数展開を行い、この展開式に基づいて、暗号化数YiのF乗を、この暗号化数Yiの2kのべき乗の積に展開する。
【0080】
ステップS24において、制御部(第1復号部18)は、kを0に設定する。
ステップS25において、制御部(第1復号部18)は、暗号化数Yiの2k乗を、積Nで除算した場合の剰余を算出する。具体的には、制御部(第1復号部18)は、直前に算出した暗号化数Yiの2k−1乗を積Nで除算した場合の剰余を2乗し、更にこの値を積Nで除算した場合の剰余を算出する。また、制御部(第1復号部18)は、暗号化数Yiを、桁あふれが生じないように上述の(10)式に基づいて複数の整数の和に変換し、変換された整数に基づいて、暗号化数Yiの2k乗を積Nで除算した場合の剰余を算出する。
【0081】
ステップS26において、制御部(第1復号部18)は、kに1を加算する。
ステップS27において、制御部(第1復号部18)は、kがnより大きいか否かを判定する。制御部(第1復号部18)は、この判定がYESの場合、処理をステップS28に移し、この判定がNOの場合、処理をステップS25に移す。
【0082】
ステップS28において、制御部(第1復号部18)は、ステップS25で算出した剰余に基づいて、暗号化数YiのF乗を、積Nで除算した場合の剰余を整数Xiとして算出(復号)する。
【0083】
ステップS29において、制御部(復号制御部19)は、カウンタc2が、所定回数Aと等しいか否かを判定する。制御部(復号制御部19)は、この判定がYESの場合、処理を終了し、この判定がNOの場合、処理をステップS30に移す。
ステップS30において、制御部(復号制御部19)は、カウンタc2に1を加算するとともに、暗号化数Yiに、整数Xiを代入する。その後、制御部(復号制御部19)は、処理をステップS22に移す。
【0084】
以上、第1実施形態によれば、暗号装置1は、第1暗号化部14により、整数Xiを、複数の整数により構成される展開式に変換し、当該展開式により、整数Xiを底とし、整数Eを指数としたべき乗を算出し、第1復号部18により、暗号化数Yiを、複数の整数により構成される展開式に変換し、当該展開式により、暗号化数Yiを底とし、整数Fを指数としたべき乗を算出し、第2暗号化部15により、暗号化数Yiを、複数の整数により構成される展開式に変換し、当該展開式により、暗号化数Yiを換字式暗号し、第2復号部17により、整数Yi’を、複数の整数により構成される展開式に変換し、当該展開式により、暗号化数Yiを復号する。
【0085】
すなわち、暗号装置1は、整数Xi、暗号化数Yi、整数Yi’について演算する場合に、演算対象の整数を、桁あふれが生じない桁数の整数に分割して計算するので、整数Xi、暗号化数Yi、整数Yi’を正確に算出することができる。更に、整数Xiは、この整数Xiを構成する数字それぞれについて、別個に暗号化を行わずに、整数Xiそのものを暗号化し、暗号化数Yiを算出する。つまり、暗号装置1は、整数Xiを暗号化する場合に、例えば、複数バイトずつにわけて、それぞれについて暗号化を行うといったように、暗号化による結果を複数算出することがない。よって、パーソナル・コンピュータ用のアプリケーション・ソフトウェア等の有効数字の範囲を超える整数について、第三者による解読のための手がかりとなる情報を増やすことなく、暗号化及び復号をすることができる。
【0086】
また、暗号装置1は、所定数Xより小さい正の整数をランダムに選択し、この整数を鍵Riとし、この鍵Riの値を暗号化数Yiに対して加算することにより、換字式暗号を行う。従来の換字式暗号では、数字を他の数字(例えば、0を1、1を2、・・・)に置き換える方法であり、この方法で20桁の整数を、換字式暗号を行った場合、暗号化のパターンが10通りに限定されてしまう。本実施形態では、鍵Riは、所定数X以下の正の整数であるので、所定数Xが大きければ大きいほど、暗号化のパターンが多くなる。よって、従来の換字式暗号に比べて、セキュリティを、より強固なものとすることができる。
【0087】
また、暗号装置1は、暗号化制御部16により、暗号化制御部16は、素数生成部11と、暗号鍵生成部12と、第1暗号化部14と、第2暗号化部15とを、素数生成部11、暗号鍵生成部12、第1暗号化部14、及び第2暗号化部15の順に所定回数実行するので、暗号化を単に1回行う場合に比べて、セキュリティをより強固なものとすることができる。
【0088】
また、暗号装置1は、整数Xi、暗号化数Yiを、上述の(5)式、(10)式を用いて、べき乗の計算を行う。例えば、整数Xiが2乗の場合に、(5)式の右辺の2乗から、整数Xuの2乗、整数Xu・整数Xd、及び整数Xdの2乗が生成され、これらはいずれも元の整数Xiの桁数以下の整数となるので、桁あふれを避けられる。このように、暗号装置1は、整数Xi、暗号化数Yiの任意のべき乗において、(5)式、(10)式の手順を繰り返すことにより、べき乗の計算過程での桁あふれを避けることが可能になる。
【0089】
<第2実施形態>
以下、本発明の第2実施形態について図を参照しながら説明する。なお、第1実施形態と同様の構成には同一の符号を付し、説明を省略又は簡略化する。
【0090】
[機能構成]
図4は、第2実施形態に係る暗号装置100の機能構成を示す図である。
暗号装置100の制御部は、第1実施形態の制御部が備える第1暗号化部14及び第1復号部18に換えて、第1暗号化部114及び第1復号部118を備える。
【0091】
第1暗号化部114は、暗号化したい整数の集合Sが、0から所定数Xの範囲外にある場合に、オフセット数Tを、集合Sに含まれる暗号化したい整数それぞれに対して加算して、この暗号化したい整数それぞれが、0から所定数Xの範囲に含まれるように調整し、集合S’とする。
【0092】
具体的には、第1暗号化部114は、暗号化を行う直前に、整数Xiに対して、オフセット数Tを加算して当該整数Xiを更新し、暗号化を行った直後に、暗号化数Yiに対して、オフセット数Tを減算して、当該暗号化数Yiを更新する。
また、第1復号部118は、復号を行う直前に、暗号化数Yiに対して、オフセット数Tを加算して当該暗号化数Yiを更新し、復号を行った直後に、整数Xiに対して、オフセット数Tを減算して、当該整数Xiを更新する。
なお、ここでは、第1暗号化部114により、整数Xiに対してオフセット数Tを加算してから暗号化を行い、暗号化数Yiに対してオフセット数Tを減算することとしているが、整数Xiに対してオフセット数Tを減算してから暗号化を行い、暗号化した後に暗号化数Yiに対してオフセット数Tを加算することとしてもよい。また、この場合、第1復号部118は、暗号化数Yiに対して、オフセット数Tを減算して当該暗号化数Yiを更新し、復号を行った直後に、整数Xiに対して、オフセット数Tを加算して、当該整数Xiを更新する。
【0093】
[フローチャート]
続いて、第2実施形態に係る暗号装置100を使用して、暗号化及び復号を行う処理の流れについて説明する。
図5は、第2実施形態に係る暗号装置100により暗号化を行う場合の処理の流れを示すフローチャートである。なお、ここでは、第1実施形態と同様に、暗号化制御部16により、所定回数としてA回、暗号化が行なわれるものとする。また、このフローチャートでは、集合Sに含まれる整数Xiの暗号化が行われるものとする。
【0094】
ステップS101からステップS104までの処理は、第1実施形態のステップS1からステップS4までの処理と同一であるので、説明を省略する。
【0095】
ステップS105において、制御部(第1暗号化部114)は、整数Xiに対して、オフセット数Tを加算して、整数Xiを更新する。オフセット数Tは、このオフセット数Tを、集合Sに含まれる全ての整数それぞれに対して加算した場合に、0から所定数Xの範囲内となるように設定されるものとする。
【0096】
ステップS106からステップS111までの処理は、第1実施形態のステップS5からステップS10までの処理と同一であるので、説明を省略する。
【0097】
ステップS112において、制御部(第1暗号化部114)は、暗号化数Yiに対して、オフセット数Tを減算する。このオフセット数Tは、ステップS105において使用されたオフセット数Tと同じ値である。
【0098】
ステップS113からステップS115までの処理は、第1実施形態のステップS11からステップS13までの処理と同一であるので、説明を省略する。
【0099】
図6は、第2実施形態に係る暗号装置1により復号を行う場合の処理の流れを示すフローチャートである。なお、ここでは、第1実施形態と同様に、暗号化されたデータと、暗号化に用いられた鍵Ri、及び復号鍵(整数F)が通知され、暗号化されたデータの復号が可能な状態であることとする。また、暗号化の繰り返し数、すなわち所定回数は、Aであることとする。また、オフセット数Tは、図5のステップS105において使用されたオフセット数Tと同じ値である。
【0100】
ステップS121及びステップS122の処理は、第1実施形態のステップS21及びステップS22の処理と同一であるので、説明を省略する。
【0101】
ステップS123において、制御部(第1復号部118)は、暗号化数Yiに対して、オフセット数Tを加算して、暗号化数Yiを更新する。
【0102】
ステップS124からステップS129までの処理は、第1実施形態のステップS23からステップS28までの処理と同一であるので、説明を省略する。
【0103】
ステップS130において、制御部(第1復号部118)は、整数Xiに対して、オフセット数Tを減算して、整数Xiを更新する。
【0104】
ステップS131及びステップS132の処理は、第1実施形態のステップS29及びステップS30の処理と同一であるので、説明を省略する。
【0105】
以上、第2実施形態によれば、暗号装置100は、第1暗号化部114により、暗号化を行う直前に、整数Xiに対して、オフセット数Tを加算して当該整数Xiを更新し、暗号化を行った直後に、暗号化数Yiに対して、オフセット数Tを減算して、当該暗号化数Yiを更新する。よって、暗号装置100は、オフセット数Tを加減算して暗号化することにより、暗号化の手順を更に複雑なものとすることができるので、セキュリティをより強固なものとすることができる。
【0106】
また、オフセット数Tは、複数の整数Xiが存在する場合、当該オフセット数Tを当該整数Xiそれぞれに加算した場合に、当該整数Xiそれぞれが0以上かつ所定数X以下になるように設定されるので、複数の整数Xiが0以上かつ所定数X以下に含まれない場合であっても、0以上かつ所定数X以下に含まれるように調整することができるので、複数の整数Xiの暗号化を正常に行うことができる。
【0107】
また、暗号装置100は、オフセット数Tによる加減算により、任意の範囲の複数の整数Xiを暗号化し、更に、暗号化制御部16により、暗号化に係る処理を繰り返し実行する。よって、繰り返し実行時に、素数生成部11による素数の組合せをランダムに生成し、暗号鍵(整数E)を生成しても、この複数の整数Xiを暗号化することができる。
【0108】
簡単のため、桁あふれを考慮しないこととし、例えば、整数Xiの集合Sが0〜31までの数字である場合に、暗号装置100により、1回目の暗号化において、素数3と素数11の組合せに基づいた暗号化を行い、2回目の暗号化において、素数2と素数17の組合せに基づいた暗号化を行い、3回目の暗号化において、素数5と素数7の組合せに基づいた暗号化を行うとする。
【0109】
ここで、素数3と素数11の組合せでは、基本的に0〜32の33個の数字、素数2と素数17の組合せでは、基本的に0〜33の34個の数字、素数5と素数7の組合せでは、基本的に0〜34の35個の数字をRSA暗号化することができる。よって、素数3と素数11の組合せの場合には、0を省略させた1〜32の範囲(32個)と、32を省略させた0〜32の範囲(32個)に対してオフセット数Tを用いて、集合Sを生成し、RSA暗号を行うことができる。また、素数2と素数17の組合せの場合には、0、1を省略させた2〜33の範囲(32個)と0、32を省略させた1〜32の範囲(32個)に対してオフセット数Tを用いて、集合Sを生成し、RSA暗号を行うことができる。また、素数5と素数7の組合せの場合には、0、1、34を省略させた2〜33の範囲(32個)に対してオフセット数Tを用いて、集合Sを生成し、RSA暗号を行うことができる。
【0110】
なお、この場合、オフセット数Tは−2から0の範囲に設定される。すなわち、上述のように、3つの素数の組合せにおける積Nが連続する3つ整数である場合、暗号化範囲の個数を同一として0〜2でスライド(加減算)させたものを暗号化させその後0〜−2でスライド(加減算)させて元に戻すことで、集合Sに含まれる複数の整数Xiは、暗号化した後も、集合Sが取り得る範囲の整数に暗号化されるので、複数の整数Xiの暗号化を正常に行うことができるとともに、暗号化することにより得られるパターンを多様化することができる。
【0111】
なお、上述の例では、連続する3つ整数の場合について説明したが、連続する4つの整数(差が3以内)から得られる素数の組合せであれば、複数の整数Xiの暗号化を正常に行うことができる。例えば、9985(素数5と素数1997の組合せ)と、9986(素数2と素数4993の組合せ)と、9987(素数3と素数3329の組合せ)や、9986(素数2と素数4993の組合せ)と、9987(素数3と素数3329の組合せ)と、9989(素数7と素数1427の組合せ)についても、オフセット数Tを−2から0の範囲に設定することで、複数の整数Xiの暗号化を正常に行うことができる。
【0112】
これに対して、連続する4つの整数から得られない素数の組合せにより暗号化すると、暗号化した後に、集合Sが取り得る範囲の整数に暗号化されなくなり、正しく暗号化を行うことができない。例えば、集合Sに含まれる複数の整数Xiを0〜34として、この35個の整数を暗号化する場合、素数5と素数7の組合せでは、素数5と素数7の組合せでは、基本的に0〜34の35個の数字をRSA暗号化することができる。これに対して、素数3と素数13の組合せでは、例えば、集合Sに含まれる複数の整数Xiを2〜36とすると、この35個の整数に対して暗号化をした場合に、暗号化した結果に、37等の集合Sの範囲を超える整数が発生するように、どのように35個の数字を選択しても、暗号化した後に、選択された数字以外に変換される整数が発生してしまい、複数の整数Xiの暗号化を正常に行うことができない。
【0113】
つまり、上述のように、RSAにより繰り返し暗号化を行う場合に、2つの素数の組合せが、連続する4つの整数(N、N+1、N+2、N+3)から得られる異なる素数の組合せに、オフセット数Tとして、−2から0(又は0から2)を用いてスライド(加減算)して集合Sとしての複数の整数XiのRSA暗号を行うことで、この複数の整数Xiの暗号化数Yiを集合Sの範囲に収めて、暗号化を正常に行うことができるとともに、暗号化することにより得られるパターンを、素数の組合せを同一のまま繰り返しRSA暗号を行う場合に比べて多様化することができ、セキュリティをより強固にすることができる。更に、換字式暗号と組合せて暗号化を行うことで、暗号化することにより得られるパターンを更に多様化することができ、多様性を更に増加させることができる。
【0114】
なお、このように、異なる素数の組合せによりRSA暗号を繰り返し行う場合、第2暗号化部15の鍵Riの値を0としてもよい。すなわち、第2暗号化部15及び第2復号部17による換字式暗号化を行わないこととしてもよい。このようにすることで、第2暗号化部15の機能が無効にして処理速度を向上させるとともに、異なる素数の組合せにより、RSA暗号を行うことで、暗号化することにより得られるパターンを多様化することができる。
【0115】
以上、本発明の実施形態について説明したが、本発明は本実施形態に限定されるものではなく、本発明の目的を達成できる範囲での変形、改良等は本発明に含まれるものである。
【符号の説明】
【0116】
1 暗号装置
11 素数生成部
12 暗号鍵生成部
13 復号鍵生成部
14、114 第1暗号化部
15 第2暗号化部
16 暗号化制御部
17 第2復号部
18、118 第1復号部
19 復号制御部
【技術分野】
【0001】
本発明は、暗号装置及びその方法に関する。
【背景技術】
【0002】
従来、法人組織等において構成員を識別するために、ユニークな整数等を含む識別子を用いることが知られている。例えば、国民健康保険制度等において加入者を識別するために8桁程度の数字が用いられたり、銀行口座を識別するために銀行の支店及び口座のそれぞれに3桁から10桁程度の数字等が用いられたり、クレジットカードの会員を識別するために16桁程度の数字が用いられたりしている。
【0003】
また、暗号及びデジタル署名を行う方式として、RSA暗号が知られている(例えば、特許文献1参照)。RSA暗号は、桁数が大きい合成数の素因数分解問題が困難であることを安全性の根拠とした公開鍵暗号方式である。すなわち、RSA暗号では、暗号化の段階において、適当な正の整数によるべき乗と素数2個の積を法数とする剰余演算とを用い、復号において、これら素数2個の積の素因数を要するべき乗根を用いる。このことにより、RSA暗号では、素因数を知らなければ復号が困難になることによって暗号の安全性を確保している。
【0004】
更に、コンピュータ・ネットワークを介する情報の送受信においてセキュリティを確保するために、暗号化、認証、改ざん検出の機能を有するSSLプロトコル等が知られている。例えば、SSLプロトコルに含まれる公開鍵証明書に基づく認証には、RSA暗号を用いられている。
【先行技術文献】
【特許文献】
【0005】
【特許文献1】特開平09−107352号公報
【発明の概要】
【発明が解決しようとする課題】
【0006】
しかしながら、従来は、暗号化前の数字等の形式と、復号後の数字等の形式との組み合わせ等を手がかりとして、公開鍵と対をなす秘密鍵が解読されると、同じ公開鍵及び秘密鍵の組み合わせを用いる暗号が、全て解読可能になるという問題があった。また、RSA暗号では、素因数を特定するまでの所用時間の長さを暗号の安全性の根拠としていることから、解読に用いるコンピュータ機器等を高性能化することにより、一定の解読手法であってもより短時間で解読することができるという問題があった。
【0007】
また、パーソナル・コンピュータ用のアプリケーション・ソフトウェア等においては内部で取り扱える数値の範囲の制約から、例えば、16桁の整数の自然数のべき乗等の計算を実行させるとプロセッサのオーバーフローが発生して、正確な計算結果が得られない場合がある。このため、元の整数を、オーバーフローが発生しない桁の範囲で適宜分割し、分割して得られた整数ごとに独立してべき剰余計算を実施する等の方策が必要であった。これは文章の暗号化において単位バイト数ごとに分割して平文を暗号化及び復号することと同様であるが、こうした手法では、分割した整数又は語句ごとに暗号化及び復号のための鍵が関連づけられるために、第三者により多くの解読の手がかりを与えてしまうという問題があった。
【0008】
例えば、クレジットカードの登録番号及び有効期限の年月は、16桁及び4桁の整数の形式を用いて表されている。これらの整数を組み合わせて、20桁の整数を生成し、この整数を暗号化し復号することが可能な方法が提供できれば、桁を分割して複数の整数を別個に暗号化する従来の技法と比較して、第三者による解読のための手がかりとなる情報を増やすことなく、セキュリティを確保することが可能になる。すなわち、個人情報を秘匿する技術として、多桁の整数を暗号化し復号する方法が求められている。
【0009】
更に、音声による通話又は印刷物等の文書を介する情報の漏洩においては、コンピュータ・ネットワークを用いて伝達される情報に対するSSLプロトコル等のセキュリティ技術では対応できないため、音声又は文書等を含む多様な形態で個人情報を隠蔽しうる方法が必要であった。
【0010】
本発明は、パーソナル・コンピュータ用のアプリケーション・ソフトウェア等の有効数字の範囲を超える整数について、第三者による解読のための手がかりとなる情報を増やすことなく、暗号化及び復号をすることができる暗号化及び復号の方法を提供することを目的とする。
【課題を解決するための手段】
【0011】
本発明に係る暗号装置は、整数を暗号化し、復号する暗号装置であって、第1の素数Aと第2の素数Bとの積Nが所定数を超えるように前記A及び前記Bを生成する素数生成手段と、前記第1の素数Aより1少ない整数A’と前記第2の素数Bより1少ない整数B’との積D、又は前記整数A’と前記整数B’との最小公倍数Kと素である整数Eであって、前記所定数を底とし、前記整数Eを指数としたべき乗が所定桁数を超えるように前記整数Eを生成し、前記整数Eを暗号鍵とする暗号鍵生成手段と、任意の整数mとした場合に次式を満たすように整数Fを生成し、前記整数Fを前記暗号鍵に対応する復号鍵とする復号鍵生成手段と、
【数1】
前記所定数より小さい整数Xiを底とし、前記整数Eを指数としたべき乗を前記積Nで除算した場合の剰余を算出して前記整数Xiの暗号化数Yiとする第1暗号化手段と、前記暗号化数Yiの換字式暗号化により整数Yi’を算出する第2暗号化手段と、前記Yi’から換字式復号により前記暗号化数Yiを復号する第2復号手段と、前記暗号化数Yiを底とし、前記整数Fを指数としたべき乗を前記整数Nで除算した場合の剰余を算出して前記整数Xiを復号する第1復号手段と、を備え、前記第1暗号化手段は、前記整数Xiを、複数の整数により構成される展開式に変換し、当該展開式により、前記整数Xiを底とし、前記整数Eを指数としたべき乗を算出し、前記第1復号手段は、前記暗号化数Yiを、複数の整数により構成される展開式に変換し、当該展開式により、前記暗号化数Yiを底とし、前記整数Fを指数としたべき乗を算出し、前記第2暗号化手段は、前記暗号化数Yiを、複数の整数により構成される展開式に変換し、当該展開式により、前記暗号化数Yiを換字式暗号し、前記第2復号手段は、前記整数Yi’を、複数の整数により構成される展開式に変換し、当該展開式により、前記暗号化数Yiを復号する。
【0012】
また、前記第2暗号化手段は、前記暗号化数Yiに対して、前記所定数より小さい正の整数からランダムに選択された整数である鍵Riの値を加算することにより、換字式暗号を行うことが好ましい。
【0013】
また、前記第1暗号化手段は、前記整数Xiに対して、オフセット数Tを加算して、当該整数Xiを更新し、当該更新された整数Xiを底とし、前記整数Eを指数としたべき乗を前記積Nで除算した場合の剰余を算出して当該整数Xiの暗号化数Yiとし、当該暗号化数Yiに対して、前記オフセット数Tを減算して当該暗号化数Yiを更新し、前記第2暗号化手段は、前記暗号化数Yiに対して、前記オフセット数Tを加算して、当該暗号化数Yiを更新し、前記更新された暗号化数Yiを底とし、前記整数Fを指数としたべき乗を前記整数Nで除算した場合の剰余を算出して前記整数Xiを復号し、当該整数Xiに対して、前記オフセット数Tを減算して整数Xiを更新することが好ましい。
【0014】
また、前記オフセット数Tは、複数の前記整数Xiが存在する場合、当該オフセット数Tを当該整数Xiそれぞれに加算した場合に、当該整数Xiそれぞれが0以上かつ前記所定数以下になるように設定されることが好ましい。
【0015】
また、暗号装置は、前記素数生成手段と、前記暗号鍵生成手段と、前記復号鍵生成手段と、前記第1暗号化手段と、前記第2暗号化手段とを、前記素数生成手段、前記暗号鍵生成手段、前記復号鍵生成手段、前記第1暗号化手段、前記第2暗号化手段の順に所定回数実行する暗号化制御手段と、前記第2復号手段と、前記第1復号手段とを、前記第2復号手段、前記第1復号手段の順に前記所定回数実行する復号制御手段と、を更に備えることが好ましい。
【0016】
また、前記素数生成手段は、前記暗号化制御手段により繰り返し実行される場合、それぞれの繰り返し実行において前記A及び前記Bが異なるように前記A及び前記Bを生成することが好ましい。
【0017】
本発明に係る暗号装置は、整数を暗号化し、復号する暗号装置であって、第1の素数Aと第2の素数Bとの積Nが所定数を超えるように前記A及び前記Bを生成する素数生成手段と、前記第1の素数Aより1少ない整数A’と前記第2の素数Bより1少ない整数B’との積D、又は前記整数A’と前記整数B’との最小公倍数Kと素である整数Eであって、前記所定数を底とし、前記整数Eを指数としたべき乗が所定桁数を超えるように前記整数Eを生成し、前記整数Eを暗号鍵とする暗号鍵生成手段と、任意の整数mとした場合に次式を満たすように整数Fを生成し、前記整数Fを前記暗号鍵に対応する復号鍵とする復号鍵生成手段と、
【数2】
前記所定数より小さい整数Xiに対して、オフセット数Tを加算して、当該整数Xiを更新し、当該更新された整数Xiを底とし、前記整数Eを指数としたべき乗を前記積Nで除算した場合の剰余を算出して前記整数Xiの暗号化数Yiとし、当該暗号化数Yiに対して、前記オフセット数Tを減算して当該暗号化数Yiを更新する第1暗号化手段と、前記暗号化数Yiに対して、前記オフセット数Tを加算して、当該暗号化数Yiを更新し、前記更新された暗号化数Yiを底とし、前記整数Fを指数としたべき乗を前記整数Nで除算した場合の剰余を算出して前記整数Xiを復号し、当該整数Xiに対して、前記オフセット数Tを減算して整数Xiを更新する第1復号手段と、前記素数生成手段と、前記暗号鍵生成手段と、前記復号鍵生成手段と、前記第1暗号化手段とを、前記素数生成手段、前記暗号鍵生成手段、前記復号鍵生成手段、前記第1暗号化手段の順に所定回数実行する暗号化制御手段と、前記第1復号手段を、前記所定回数実行する復号制御手段と、を備え、前記第1暗号化手段は、前記整数Xiを、複数の整数により構成される展開式に変換し、当該展開式により、前記整数Xiを底とし、前記整数Eを指数としたべき乗を算出し、前記第1復号手段は、前記暗号化数Yiを、複数の整数により構成される展開式に変換し、当該展開式により、前記暗号化数Yiを底とし、前記整数Fを指数としたべき乗を算出する。
【0018】
本発明に係る暗号装置が整数を暗号化し、復号する方法は、暗号装置が整数を暗号化し、復号する方法であって、第1の素数Aと第2の素数Bとの積Nが所定数を超えるように前記A及び前記Bを生成する素数生成ステップと、前記第1の素数Aより1少ない整数A’と前記第2の素数Bより1少ない整数B’との積D、又は前記整数A’と前記整数B’との最小公倍数Kと素である整数Eであって、前記所定数を底とし、前記整数Eを指数としたべき乗が所定桁数を超えるように前記整数Eを生成し、前記整数Eを暗号鍵とする暗号鍵生成ステップと、任意の整数mとした場合に次式を満たすように整数Fを生成し、前記整数Fを前記暗号鍵に対応する復号鍵とする復号鍵生成ステップと、
【数3】
前記所定数より小さい整数Xiを底とし、前記整数Eを指数としたべき乗を前記積Nで除算した場合の剰余を算出して前記整数Xiの暗号化数Yiとする第1暗号化ステップと、前記暗号化数Yiを換字式暗号化により整数Yi’を算出する第2暗号化ステップと、前記整数Yi’から換字式復号により前記暗号化数Yiを復号する第2復号ステップと、前記暗号化数Yiを底とし、前記整数Fを指数としたべき乗を前記積Nで除算した場合の剰余を算出して前記整数Xiを復号する第1復号ステップと、を含み、前記第1暗号化ステップは、前記整数Xiを、複数の整数により構成される展開式に変換し、当該展開式により、前記整数Xiを底とし、前記整数Eを指数としたべき乗を算出し、前記第1復号ステップは、前記暗号化数Yiを、複数の整数により構成される展開式に変換し、当該展開式により、前記暗号化数Yiを底とし、前記整数Fを指数としたべき乗を算出し、前記第2暗号化ステップは、前記暗号化数Yiを、複数の整数により構成される展開式に変換し、当該展開式により、前記暗号化数Yiを換字式暗号し、前記第2復号ステップは、前記整数Yi’を、複数の整数により構成される展開式に変換し、当該展開式により、前記暗号化数Yiを復号する。
【発明の効果】
【0019】
本発明によれば、パーソナル・コンピュータ用のアプリケーション・ソフトウェア等の有効数字の範囲を超える整数について、第三者による解読のための手がかりとなる情報を増やすことなく、暗号化及び復号をすることができる。
【図面の簡単な説明】
【0020】
【図1】第1実施形態に係る暗号装置の機能構成を示す図である。
【図2】第1実施形態に係る暗号装置により暗号化を行う場合の処理の流れを示すフローチャートである。
【図3】第1実施形態に係る暗号装置により復号を行う場合の処理の流れを示すフローチャートである。
【図4】第2実施形態に係る暗号装置の機能構成を示す図である。
【図5】第2実施形態に係る暗号装置により暗号化を行う場合の処理の流れを示すフローチャートである。
【図6】第2実施形態に係る暗号装置により復号を行う場合の処理の流れを示すフローチャートである。
【発明を実施するための形態】
【0021】
<第1実施形態>
以下、本発明の実施形態について図を参照しながら説明する。
【0022】
[機能構成]
図1は、第1実施形態に係る暗号装置1の機能構成を示す図である。暗号装置1は、所定範囲の任意の数値を暗号化し、復号する装置である。この暗号装置1は、他の暗号装置1とLAN(Local Area Network)やインターネット等のコンピュータ・ネットワークにより構成される通信ネットワークNにより、通信可能に接続されている。
【0023】
第1実施形態は、パーソナル・コンピュータ(暗号装置1)及びその周辺装置に適用される。第1実施形態における各部は、パーソナル・コンピュータ及びその周辺装置が備えるハードウェア並びにこのハードウェアを制御するソフトウェアによって構成される。
【0024】
上記ハードウェアには、制御部としてのCPUの他、記憶部、通信部、表示部及び入力部が含まれる。記憶部としては、例えば、メモリ(RAM、ROM等)、ハードディスクドライブ(HDD)及び光ディスク(CD、DVD等)ドライブが挙げられる。通信部としては、例えば、各種有線及び無線インターフェース装置が挙げられる。表示部としては、例えば、液晶ディスプレイ、プラズマディスプレイ等の各種ディスプレイが挙げられる。入力部としては、例えば、キーボード及びマウス等が挙げられる。
【0025】
上記ソフトウェアには、上記ハードウェアを制御するコンピュータ・プログラムやアプリケーション・ソフトウェアやデータが含まれる。コンピュータ・プログラムやアプリケーション・ソフトウェアやデータは、記憶部により記憶され、制御部により適宜実行、参照される。また、コンピュータ・プログラムやアプリケーション・ソフトウェアやデータは、通信回線を介して配布することも可能であり、CD−ROM等のコンピュータ可読媒体に記録して配布することも可能である。
【0026】
暗号装置1の制御部は、素数生成部11と、暗号鍵生成部12と、復号鍵生成部13と、第1暗号化部14と、第2暗号化部15と、暗号化制御部16と、第2復号部17と、第1復号部18と、復号制御部19と、を備える。
を備える。
【0027】
素数生成部11は、第1の素数Aと第2の素数Bとの積Nが所定数Xを超えるように、第1の素数A及び第2の素数Bを生成する。所定数Xとは、例えば、20桁の整数であり、乗算結果がレジスタで一度に表現できる範囲を超える整数である。また、所定数Xとは、一度に暗号化したい情報が整数で表現できる場合、この整数よりも大きい値である。
【0028】
暗号鍵生成部12は、第1の素数Aより1少ない整数A’と第2の素数Bより1少ない整数B’との積D、又は整数A’と整数B’との最小公倍数Kと、素である整数Eであって、所定数Xを底とし整数Eを指数としたべき乗が、レジスタの表現できる桁数よりも大きい桁数としての所定桁数を超える(桁あふれが発生する)ように整数Eを生成し、この整数Eを暗号鍵とする。すなわち、暗号鍵生成部12は、積D又は最小公倍数Kと素である整数Eであって、整数XのE乗の演算結果が所定桁数を超える整数Eをランダムに生成し、この整数Eを暗号鍵とする。
【0029】
復号鍵生成部13は、任意の整数mとした場合に以下の(1)式を満たすように整数Fを生成し、この整数Fを、暗号化鍵Eに対応する復号鍵として算出する。生成された整数Fは、後述の第1復号部18に通知される。整数Fは、(1)式を満たすものであれば、任意の数でよく、復号鍵生成部13は、ランダムに整数Fを生成してもよい。
【0030】
【数4】
【0031】
第1暗号化部14は、所定数Xより小さい任意の正の整数、すなわち、暗号化される整数Xiを底とし整数Eを指数としたべき乗を、第1の素数Aと第2の素数Bとの積Nで除算した場合の剰余を算出することにより、整数Xiの暗号化数Yiを算出する。すなわち、第1暗号化部14は、以下の(2)式で表される、整数Xiの暗号化数Yiを算出する。(2)式に示される「mod」は、剰余を算出する関数である。
【0032】
【数5】
【0033】
具体的には、第1暗号化部14は、繰り返し二乗法(高速冪乗法)を用いて整数Xiの暗号化数Yiを算出する。以下に、処理手順について以下に説明する。
【0034】
まず、第1暗号化部14は、整数Eの2進数展開を行い、整数XiのE乗を、この整数Xiの2kのべき乗の積に展開する。ここで、kは、0からnまでの整数をとるものとし、nは、2のn乗が整数Eを超えないnのうち、もっとも大きい数に対応するものとする。例えば、整数Eが287である場合、整数Xiは、以下の(3)式で表される。また、2の8乗が整数Eを超えない最も大きい数となるので、nは8となる。
【0035】
【数6】
【0036】
続いて、第1暗号化部14は、以下の(4)式に示すように、整数Xiの20乗を積Nで除算した場合の剰余から順に、整数Xiの2k乗を積Nで除算した場合の剰余を算出する。
【0037】
【数7】
【0038】
ここで、整数Eは、所定数XのE乗の演算結果がレジスタの表現できる桁数よりも大きい桁数となるように生成しているので、整数Xiの2k乗を算出する場合に、桁あふれが生じる場合がある。そこで、第1暗号化部14は、整数Xiについて、以下の(5)式を用いて、上位の桁Xu及び下位の桁Xdに分割された整数に展開し、上位の桁Xu及び下位の桁Xdに基づいて、整数Xiの2n乗まで算出する。
【0039】
【数8】
【0040】
式中、Mは底であり、Cdは整数Xiにおける下位の桁の数である。また、Cdは、1以上の整数である。
【0041】
例えば、底であるMを2とし、整数Xiの桁数を16桁、下位の桁数Cdを8桁とする場合、(5)式は、以下の(6)式のように表される。
【0042】
【数9】
【0043】
例えば、第1実施形態に係る暗号装置1が16ビット幅のレジスタのCPUを備える場合に、整数Xiの値が10進数の65532であるとすると、この整数Xiに対するべき乗の計算において、指数として、2を用いた時点で、16ビット幅のレジスタを用いて表現できる整数の上限値65535を超えてしまう。すなわち、単に整数Xiをべき乗する通常の計算方法に従って(2)式の右辺に含まれる整数XiのE乗の計算を実施すると、正確なべき乗の値が得られない場合がある。
【0044】
これに対して、式(6)により表される桁の分割を用いて上位の桁と下位の桁をそれぞれ整数部分として分割すると、例えば、整数Xiが10進数の65532、すなわち、2進数の1111111111111100(2)は、上位8桁に含まれる整数11111111(2)(10進数の255)と、下位8桁に含まれる整数11111100(2)(10進数の252)とに分割される。この場合、分割された2つの数は、255の2乗よりも小さい値となるので、16ビット幅のレジスタが表現できる整数の範囲内となる。よって、桁あふれによる誤りを避けることが可能である。
【0045】
また、第1実施形態では、(5)式のように、2つの整数に分割することとしたが、例えば、整数Xiが20桁の場合に、以下の(7)式に示されるように、4つの整数に分割することとしてもよい。
【0046】
【数10】
【0047】
式中、X15は整数Xiの16桁目から20桁目、X10は整数Xiの11桁目から15桁目、X5は整数Xiの6桁目から10桁目、X0は整数Xiの1桁目から5桁目である。また、整数Xiが20桁に満たない場合に、上位の桁に対してゼロ詰めを行ってもよい。このようにすることで、暗号装置1は、桁あふれを発生する条件で整数Eを生成した後に、(3)〜(5)式を用いて整数Xiを展開して暗号化数Yiを算出することにより、桁あふれを避けて、暗号化数Yiを正確に算出することができる。
なお、整数Xiは、(6)式や(7)式のように、分割後の整数の桁数が等しくなるように分割されることが好ましい。
【0048】
続いて、第1暗号化部14は、2のべき乗の積に展開された整数XiのE乗の剰余を算出する。例えば、整数Eが287である場合、整数XiのE乗の剰余は、以下の(8)式で示されるので、(4)式に示すように予め求められている整数Xiの2k乗を積Nで除算した場合の剰余から容易に算出することが可能となる。なお、この計算において、桁あふれを回避するように、被乗数を、(5)式と同様に上位の桁と下位の桁に分割して、剰余を算出するようにしてもよい。
【0049】
【数11】
【0050】
第2暗号化部15は、所定数Xより小さい正の整数をランダムに選択し、この整数を鍵Riとする。続いて、第2暗号化部15は、この鍵Riを使用して、以下の(9)式を基づいて、暗号化数Yの換字式暗号を行い、整数Yi’を算出する。
【0051】
【数12】
【0052】
式中、Rot()は、鍵Riを秘密鍵として用いて、暗号化数Yiを換字式暗号する関数である。具体的には、Rot()は、暗号化数Yiを、所定数Xの範囲で鍵Riの値だけ加算する。また、暗号化数Yiに鍵Riを加算した結果が所定数Xを超える場合、Rot()は、整数Yi’として、YiにRiを加算したことにより所定数Xを超えた分、すなわち、Yi+Ri−Xを返す。なお、この鍵Riは、第2復号部17に通知される。
【0053】
また、Rot()は、暗号化数Yiに鍵Riを加算する場合に、暗号化数Yiについて、以下の(10)式を用いて、上位の桁Yu及び下位の桁Ydに分割された整数部分を生成し、この上位の桁Yu及び下位の桁Ydを用いて、整数Yi’を算出する。
【0054】
【数13】
【0055】
(5)式と同様に、(10)式中、Mは底であり、Cdは暗号化数Yiにおける下位の桁の数である。また、Cdは、少なくとも1である。
【0056】
暗号化制御部16は、素数生成部11と、暗号鍵生成部12と、復号鍵生成部13と、第1暗号化部14と、第2暗号化部15との実行を制御する。具体的には、暗号化制御部16は、素数生成部11と、暗号鍵生成部12と、第1暗号化部14と、第2暗号化部15とを、素数生成部11、暗号鍵生成部12、第1暗号化部14、及び第2暗号化部15の順に所定回数実行する。この所定回数は、予め定められている回数でもよいし、暗号化制御部16によりランダムに生成される整数でもよい。なお、この所定回数は、復号制御部19に通知される。
【0057】
第2復号部17は、第2暗号化部15により換字式暗号された整数Yi’から、換字式復号により暗号化数Yiを算出する。具体的には、第2復号部17は、以下の(11)式を用いた換字式復号を行い、暗号化数Yを算出する。
【0058】
【数14】
【0059】
式中、鍵Riは、換字式暗号化の秘密鍵として用いられる整数であり、第2暗号化部15により生成された整数である。なお、鍵Riは、第2暗号化部15により暗号化されたデータとは別に通知される。
【0060】
Rot−1()は、整数Yi’を、所定数Xの範囲で鍵Riの値だけ減算した値である。整数Yi’に鍵Riを減算した結果が0未満となる場合、Rot−1()は、暗号化数Yiとして、整数Yi’にRiを減算したことにより0より小さい分を所定数Xから減算した値、すなわち、Yi−Ri+Xを返す。
【0061】
また、Rot−1()は、整数Yi’にRiを減算する場合に、整数Yi’について、(10)式と同様に、上位の桁及び下位の桁に分割された整数部分を生成し、この上位の桁及び下位の桁を用いて、暗号化数Yiを算出する。
【0062】
第1復号部18は、復号鍵生成部13から通知された復号鍵としての整数Fを用いて、暗号化数Yiを底とし整数Fを指数としたべき乗を、積Nで除算した場合の剰余を算出することにより、暗号化数Yiの元の数、すなわち整数Xiを算出する。すなわち、第1復号部18は、以下の(12)式で表される、暗号化数Yiの元の整数Xiを算出する。第1復号部18は、第1暗号化部14と同様に、繰り返し二乗法(高速冪乗法)を用いることにより、暗号化数Yiの元の整数Xiを算出する。第1復号部18の詳細な処理は、第1暗号化部14と同様であるので、説明を省略する。
【0063】
【数15】
【0064】
復号制御部19は、第2復号部17と第1復号部18との実行を制御する。具体的には、復号制御部19は、第2復号部17と第1復号部18とを、第2復号部17、第1復号部18の順に所定回数実行する。
【0065】
[フローチャート]
続いて、第1実施形態に係る暗号装置1を使用して、暗号化及び復号を行う処理の流れについて説明する。
図2は、第1実施形態に係る暗号装置1により暗号化を行う場合の処理の流れを示すフローチャートである。なお、このフローチャートでは、暗号化制御部16により、所定回数としてA回、暗号化が行なわれるものとする。
【0066】
ステップS1において、制御部(暗号化制御部16)は、所定回数か否かを判定するために記憶部に設けられているカウンタc1の値を1とする。
【0067】
ステップS2において、制御部(素数生成部11)は、第1の素数Aと第2の素数Bとの積Nが所定数Xを超えるように、第1の素数A及び第2の素数Bを生成する。
【0068】
ステップS3において、制御部(暗号鍵生成部12)は、第1の素数A及び第2の素数Bに基づいて、暗号鍵としての整数Eを生成する。具体的には、制御部(暗号鍵生成部12)は、(A−1)と(B−1)の積D、又は(A−1)と(B−1)の最小公倍数Kと、素である整数Eであって、所定数Xを底とし、整数Eを指数としたべき乗が、レジスタの表現できる桁数よりも大きい桁数としての所定桁数を超えるように整数Eを生成し、この整数Eを暗号鍵とする。
【0069】
ステップS4において、制御部(復号鍵生成部13)は、暗号鍵(整数E)に対応する復号鍵(整数F)を生成する。具体的には、任意の整数mとした場合に上述の(1)式を満たすように、整数Fを生成し、この整数Fを復号鍵とする。この整数Fは、例えば制御部により、何回目の第1暗号化部14の暗号に係る復号鍵であるかを示す情報と関連付けられて、復号を行う暗号装置1に通知される。
【0070】
ステップS5において、制御部(第1暗号化部14)は、整数Eの2進数展開を行い、この展開式に基づいて、整数XiのE乗を、この整数Xiの2kのべき乗の積に展開する。
【0071】
ステップS6において、制御部(第1暗号化部14)は、kを0に設定する。
ステップS7において、制御部(第1暗号化部14)は、整数Xiの2k乗を、積Nで除算した場合の剰余を算出する。具体的には、制御部(第1暗号化部14)は、直前に算出した整数Xiの2k−1乗を積Nで除算した場合の剰余を2乗し、更にこの値を積Nで除算した場合の剰余を算出する。また、制御部(第1暗号化部14)は、整数Xiを、桁あふれが生じないように上述の(5)式に基づいて、複数の整数の和に変換し、変換された整数に基づいて、整数Xiの2k乗を積Nで除算した場合の剰余を算出する。
【0072】
ステップS8において、制御部(第1暗号化部14)は、kに1を加算する。
ステップS9において、制御部(第1暗号化部14)は、kがnより大きいか否かを判定する。制御部(第1暗号化部14)は、この判定がYESの場合、処理をステップS10に移し、この判定がNOの場合、処理をステップS7に移す。
【0073】
ステップS10において、制御部(第1暗号化部14)は、ステップS7で算出した剰余に基づいて、整数XiのE乗を、積Nで除算した場合の剰余を暗号化数Yiとして算出する。
【0074】
ステップS11において、制御部(第2暗号化部15)は、鍵Riを生成し、(9)式に基づいて、暗号化数Yの換字式暗号を行い、整数Yi’を算出する。この鍵Riは、例えば制御部により、何回目の換字式暗号に係る鍵であるかを示す情報と関連付けられて、復号を行う暗号装置1に通知される。
【0075】
ステップS12において、制御部(暗号化制御部16)は、カウンタc1が、所定回数Aと等しいか否かを判定する。制御部(暗号化制御部16)は、この判定がYESの場合、処理を終了し、この判定がNOの場合、処理をステップS13に移す。
ステップS13において、制御部(暗号化制御部16)は、カウンタc1に1を加算するとともに、整数Xiに、整数Yi’を代入する。その後、制御部(暗号化制御部16)は、処理をステップS2に移す。
【0076】
図3は、第1実施形態に係る暗号装置1により復号を行う場合の処理の流れを示すフローチャートである。なお、暗号装置1には、暗号化されたデータと、暗号化に用いられた鍵Ri、及び復号鍵(整数F)が通知され、暗号化されたデータの復号が可能な状態であることとする。また、暗号化の繰り返し数、すなわち所定回数は、Aであることとする。
【0077】
ステップS21において、制御部(復号制御部19)は、所定回数か否かを判定するために記憶部に設けられているカウンタc2の値を1とする。
【0078】
ステップS22において、制御部(第2復号部17)は、上述の(11)式に基づいて、第2暗号化部15により換字式暗号された整数Yi’から、暗号化数Yiを算出する。復号に用いられる、鍵Riには、何回目の換字式復号であるかを示す情報が関連付けられており、所定回数Aに対応する鍵Riから順に復号が行われる。
【0079】
ステップS23において、制御部(第1復号部18)は、暗号化数Yiの2進数展開を行い、この展開式に基づいて、暗号化数YiのF乗を、この暗号化数Yiの2kのべき乗の積に展開する。
【0080】
ステップS24において、制御部(第1復号部18)は、kを0に設定する。
ステップS25において、制御部(第1復号部18)は、暗号化数Yiの2k乗を、積Nで除算した場合の剰余を算出する。具体的には、制御部(第1復号部18)は、直前に算出した暗号化数Yiの2k−1乗を積Nで除算した場合の剰余を2乗し、更にこの値を積Nで除算した場合の剰余を算出する。また、制御部(第1復号部18)は、暗号化数Yiを、桁あふれが生じないように上述の(10)式に基づいて複数の整数の和に変換し、変換された整数に基づいて、暗号化数Yiの2k乗を積Nで除算した場合の剰余を算出する。
【0081】
ステップS26において、制御部(第1復号部18)は、kに1を加算する。
ステップS27において、制御部(第1復号部18)は、kがnより大きいか否かを判定する。制御部(第1復号部18)は、この判定がYESの場合、処理をステップS28に移し、この判定がNOの場合、処理をステップS25に移す。
【0082】
ステップS28において、制御部(第1復号部18)は、ステップS25で算出した剰余に基づいて、暗号化数YiのF乗を、積Nで除算した場合の剰余を整数Xiとして算出(復号)する。
【0083】
ステップS29において、制御部(復号制御部19)は、カウンタc2が、所定回数Aと等しいか否かを判定する。制御部(復号制御部19)は、この判定がYESの場合、処理を終了し、この判定がNOの場合、処理をステップS30に移す。
ステップS30において、制御部(復号制御部19)は、カウンタc2に1を加算するとともに、暗号化数Yiに、整数Xiを代入する。その後、制御部(復号制御部19)は、処理をステップS22に移す。
【0084】
以上、第1実施形態によれば、暗号装置1は、第1暗号化部14により、整数Xiを、複数の整数により構成される展開式に変換し、当該展開式により、整数Xiを底とし、整数Eを指数としたべき乗を算出し、第1復号部18により、暗号化数Yiを、複数の整数により構成される展開式に変換し、当該展開式により、暗号化数Yiを底とし、整数Fを指数としたべき乗を算出し、第2暗号化部15により、暗号化数Yiを、複数の整数により構成される展開式に変換し、当該展開式により、暗号化数Yiを換字式暗号し、第2復号部17により、整数Yi’を、複数の整数により構成される展開式に変換し、当該展開式により、暗号化数Yiを復号する。
【0085】
すなわち、暗号装置1は、整数Xi、暗号化数Yi、整数Yi’について演算する場合に、演算対象の整数を、桁あふれが生じない桁数の整数に分割して計算するので、整数Xi、暗号化数Yi、整数Yi’を正確に算出することができる。更に、整数Xiは、この整数Xiを構成する数字それぞれについて、別個に暗号化を行わずに、整数Xiそのものを暗号化し、暗号化数Yiを算出する。つまり、暗号装置1は、整数Xiを暗号化する場合に、例えば、複数バイトずつにわけて、それぞれについて暗号化を行うといったように、暗号化による結果を複数算出することがない。よって、パーソナル・コンピュータ用のアプリケーション・ソフトウェア等の有効数字の範囲を超える整数について、第三者による解読のための手がかりとなる情報を増やすことなく、暗号化及び復号をすることができる。
【0086】
また、暗号装置1は、所定数Xより小さい正の整数をランダムに選択し、この整数を鍵Riとし、この鍵Riの値を暗号化数Yiに対して加算することにより、換字式暗号を行う。従来の換字式暗号では、数字を他の数字(例えば、0を1、1を2、・・・)に置き換える方法であり、この方法で20桁の整数を、換字式暗号を行った場合、暗号化のパターンが10通りに限定されてしまう。本実施形態では、鍵Riは、所定数X以下の正の整数であるので、所定数Xが大きければ大きいほど、暗号化のパターンが多くなる。よって、従来の換字式暗号に比べて、セキュリティを、より強固なものとすることができる。
【0087】
また、暗号装置1は、暗号化制御部16により、暗号化制御部16は、素数生成部11と、暗号鍵生成部12と、第1暗号化部14と、第2暗号化部15とを、素数生成部11、暗号鍵生成部12、第1暗号化部14、及び第2暗号化部15の順に所定回数実行するので、暗号化を単に1回行う場合に比べて、セキュリティをより強固なものとすることができる。
【0088】
また、暗号装置1は、整数Xi、暗号化数Yiを、上述の(5)式、(10)式を用いて、べき乗の計算を行う。例えば、整数Xiが2乗の場合に、(5)式の右辺の2乗から、整数Xuの2乗、整数Xu・整数Xd、及び整数Xdの2乗が生成され、これらはいずれも元の整数Xiの桁数以下の整数となるので、桁あふれを避けられる。このように、暗号装置1は、整数Xi、暗号化数Yiの任意のべき乗において、(5)式、(10)式の手順を繰り返すことにより、べき乗の計算過程での桁あふれを避けることが可能になる。
【0089】
<第2実施形態>
以下、本発明の第2実施形態について図を参照しながら説明する。なお、第1実施形態と同様の構成には同一の符号を付し、説明を省略又は簡略化する。
【0090】
[機能構成]
図4は、第2実施形態に係る暗号装置100の機能構成を示す図である。
暗号装置100の制御部は、第1実施形態の制御部が備える第1暗号化部14及び第1復号部18に換えて、第1暗号化部114及び第1復号部118を備える。
【0091】
第1暗号化部114は、暗号化したい整数の集合Sが、0から所定数Xの範囲外にある場合に、オフセット数Tを、集合Sに含まれる暗号化したい整数それぞれに対して加算して、この暗号化したい整数それぞれが、0から所定数Xの範囲に含まれるように調整し、集合S’とする。
【0092】
具体的には、第1暗号化部114は、暗号化を行う直前に、整数Xiに対して、オフセット数Tを加算して当該整数Xiを更新し、暗号化を行った直後に、暗号化数Yiに対して、オフセット数Tを減算して、当該暗号化数Yiを更新する。
また、第1復号部118は、復号を行う直前に、暗号化数Yiに対して、オフセット数Tを加算して当該暗号化数Yiを更新し、復号を行った直後に、整数Xiに対して、オフセット数Tを減算して、当該整数Xiを更新する。
なお、ここでは、第1暗号化部114により、整数Xiに対してオフセット数Tを加算してから暗号化を行い、暗号化数Yiに対してオフセット数Tを減算することとしているが、整数Xiに対してオフセット数Tを減算してから暗号化を行い、暗号化した後に暗号化数Yiに対してオフセット数Tを加算することとしてもよい。また、この場合、第1復号部118は、暗号化数Yiに対して、オフセット数Tを減算して当該暗号化数Yiを更新し、復号を行った直後に、整数Xiに対して、オフセット数Tを加算して、当該整数Xiを更新する。
【0093】
[フローチャート]
続いて、第2実施形態に係る暗号装置100を使用して、暗号化及び復号を行う処理の流れについて説明する。
図5は、第2実施形態に係る暗号装置100により暗号化を行う場合の処理の流れを示すフローチャートである。なお、ここでは、第1実施形態と同様に、暗号化制御部16により、所定回数としてA回、暗号化が行なわれるものとする。また、このフローチャートでは、集合Sに含まれる整数Xiの暗号化が行われるものとする。
【0094】
ステップS101からステップS104までの処理は、第1実施形態のステップS1からステップS4までの処理と同一であるので、説明を省略する。
【0095】
ステップS105において、制御部(第1暗号化部114)は、整数Xiに対して、オフセット数Tを加算して、整数Xiを更新する。オフセット数Tは、このオフセット数Tを、集合Sに含まれる全ての整数それぞれに対して加算した場合に、0から所定数Xの範囲内となるように設定されるものとする。
【0096】
ステップS106からステップS111までの処理は、第1実施形態のステップS5からステップS10までの処理と同一であるので、説明を省略する。
【0097】
ステップS112において、制御部(第1暗号化部114)は、暗号化数Yiに対して、オフセット数Tを減算する。このオフセット数Tは、ステップS105において使用されたオフセット数Tと同じ値である。
【0098】
ステップS113からステップS115までの処理は、第1実施形態のステップS11からステップS13までの処理と同一であるので、説明を省略する。
【0099】
図6は、第2実施形態に係る暗号装置1により復号を行う場合の処理の流れを示すフローチャートである。なお、ここでは、第1実施形態と同様に、暗号化されたデータと、暗号化に用いられた鍵Ri、及び復号鍵(整数F)が通知され、暗号化されたデータの復号が可能な状態であることとする。また、暗号化の繰り返し数、すなわち所定回数は、Aであることとする。また、オフセット数Tは、図5のステップS105において使用されたオフセット数Tと同じ値である。
【0100】
ステップS121及びステップS122の処理は、第1実施形態のステップS21及びステップS22の処理と同一であるので、説明を省略する。
【0101】
ステップS123において、制御部(第1復号部118)は、暗号化数Yiに対して、オフセット数Tを加算して、暗号化数Yiを更新する。
【0102】
ステップS124からステップS129までの処理は、第1実施形態のステップS23からステップS28までの処理と同一であるので、説明を省略する。
【0103】
ステップS130において、制御部(第1復号部118)は、整数Xiに対して、オフセット数Tを減算して、整数Xiを更新する。
【0104】
ステップS131及びステップS132の処理は、第1実施形態のステップS29及びステップS30の処理と同一であるので、説明を省略する。
【0105】
以上、第2実施形態によれば、暗号装置100は、第1暗号化部114により、暗号化を行う直前に、整数Xiに対して、オフセット数Tを加算して当該整数Xiを更新し、暗号化を行った直後に、暗号化数Yiに対して、オフセット数Tを減算して、当該暗号化数Yiを更新する。よって、暗号装置100は、オフセット数Tを加減算して暗号化することにより、暗号化の手順を更に複雑なものとすることができるので、セキュリティをより強固なものとすることができる。
【0106】
また、オフセット数Tは、複数の整数Xiが存在する場合、当該オフセット数Tを当該整数Xiそれぞれに加算した場合に、当該整数Xiそれぞれが0以上かつ所定数X以下になるように設定されるので、複数の整数Xiが0以上かつ所定数X以下に含まれない場合であっても、0以上かつ所定数X以下に含まれるように調整することができるので、複数の整数Xiの暗号化を正常に行うことができる。
【0107】
また、暗号装置100は、オフセット数Tによる加減算により、任意の範囲の複数の整数Xiを暗号化し、更に、暗号化制御部16により、暗号化に係る処理を繰り返し実行する。よって、繰り返し実行時に、素数生成部11による素数の組合せをランダムに生成し、暗号鍵(整数E)を生成しても、この複数の整数Xiを暗号化することができる。
【0108】
簡単のため、桁あふれを考慮しないこととし、例えば、整数Xiの集合Sが0〜31までの数字である場合に、暗号装置100により、1回目の暗号化において、素数3と素数11の組合せに基づいた暗号化を行い、2回目の暗号化において、素数2と素数17の組合せに基づいた暗号化を行い、3回目の暗号化において、素数5と素数7の組合せに基づいた暗号化を行うとする。
【0109】
ここで、素数3と素数11の組合せでは、基本的に0〜32の33個の数字、素数2と素数17の組合せでは、基本的に0〜33の34個の数字、素数5と素数7の組合せでは、基本的に0〜34の35個の数字をRSA暗号化することができる。よって、素数3と素数11の組合せの場合には、0を省略させた1〜32の範囲(32個)と、32を省略させた0〜32の範囲(32個)に対してオフセット数Tを用いて、集合Sを生成し、RSA暗号を行うことができる。また、素数2と素数17の組合せの場合には、0、1を省略させた2〜33の範囲(32個)と0、32を省略させた1〜32の範囲(32個)に対してオフセット数Tを用いて、集合Sを生成し、RSA暗号を行うことができる。また、素数5と素数7の組合せの場合には、0、1、34を省略させた2〜33の範囲(32個)に対してオフセット数Tを用いて、集合Sを生成し、RSA暗号を行うことができる。
【0110】
なお、この場合、オフセット数Tは−2から0の範囲に設定される。すなわち、上述のように、3つの素数の組合せにおける積Nが連続する3つ整数である場合、暗号化範囲の個数を同一として0〜2でスライド(加減算)させたものを暗号化させその後0〜−2でスライド(加減算)させて元に戻すことで、集合Sに含まれる複数の整数Xiは、暗号化した後も、集合Sが取り得る範囲の整数に暗号化されるので、複数の整数Xiの暗号化を正常に行うことができるとともに、暗号化することにより得られるパターンを多様化することができる。
【0111】
なお、上述の例では、連続する3つ整数の場合について説明したが、連続する4つの整数(差が3以内)から得られる素数の組合せであれば、複数の整数Xiの暗号化を正常に行うことができる。例えば、9985(素数5と素数1997の組合せ)と、9986(素数2と素数4993の組合せ)と、9987(素数3と素数3329の組合せ)や、9986(素数2と素数4993の組合せ)と、9987(素数3と素数3329の組合せ)と、9989(素数7と素数1427の組合せ)についても、オフセット数Tを−2から0の範囲に設定することで、複数の整数Xiの暗号化を正常に行うことができる。
【0112】
これに対して、連続する4つの整数から得られない素数の組合せにより暗号化すると、暗号化した後に、集合Sが取り得る範囲の整数に暗号化されなくなり、正しく暗号化を行うことができない。例えば、集合Sに含まれる複数の整数Xiを0〜34として、この35個の整数を暗号化する場合、素数5と素数7の組合せでは、素数5と素数7の組合せでは、基本的に0〜34の35個の数字をRSA暗号化することができる。これに対して、素数3と素数13の組合せでは、例えば、集合Sに含まれる複数の整数Xiを2〜36とすると、この35個の整数に対して暗号化をした場合に、暗号化した結果に、37等の集合Sの範囲を超える整数が発生するように、どのように35個の数字を選択しても、暗号化した後に、選択された数字以外に変換される整数が発生してしまい、複数の整数Xiの暗号化を正常に行うことができない。
【0113】
つまり、上述のように、RSAにより繰り返し暗号化を行う場合に、2つの素数の組合せが、連続する4つの整数(N、N+1、N+2、N+3)から得られる異なる素数の組合せに、オフセット数Tとして、−2から0(又は0から2)を用いてスライド(加減算)して集合Sとしての複数の整数XiのRSA暗号を行うことで、この複数の整数Xiの暗号化数Yiを集合Sの範囲に収めて、暗号化を正常に行うことができるとともに、暗号化することにより得られるパターンを、素数の組合せを同一のまま繰り返しRSA暗号を行う場合に比べて多様化することができ、セキュリティをより強固にすることができる。更に、換字式暗号と組合せて暗号化を行うことで、暗号化することにより得られるパターンを更に多様化することができ、多様性を更に増加させることができる。
【0114】
なお、このように、異なる素数の組合せによりRSA暗号を繰り返し行う場合、第2暗号化部15の鍵Riの値を0としてもよい。すなわち、第2暗号化部15及び第2復号部17による換字式暗号化を行わないこととしてもよい。このようにすることで、第2暗号化部15の機能が無効にして処理速度を向上させるとともに、異なる素数の組合せにより、RSA暗号を行うことで、暗号化することにより得られるパターンを多様化することができる。
【0115】
以上、本発明の実施形態について説明したが、本発明は本実施形態に限定されるものではなく、本発明の目的を達成できる範囲での変形、改良等は本発明に含まれるものである。
【符号の説明】
【0116】
1 暗号装置
11 素数生成部
12 暗号鍵生成部
13 復号鍵生成部
14、114 第1暗号化部
15 第2暗号化部
16 暗号化制御部
17 第2復号部
18、118 第1復号部
19 復号制御部
【特許請求の範囲】
【請求項1】
整数を暗号化し、復号する暗号装置であって、
第1の素数Aと第2の素数Bとの積Nが所定数を超えるように前記A及び前記Bを生成する素数生成手段と、
前記第1の素数Aより1少ない整数A’と前記第2の素数Bより1少ない整数B’との積D、又は前記整数A’と前記整数B’との最小公倍数Kと素である整数Eであって、前記所定数を底とし、前記整数Eを指数としたべき乗が所定桁数を超えるように前記整数Eを生成し、前記整数Eを暗号鍵とする暗号鍵生成手段と、
任意の整数mとした場合に次式を満たすように整数Fを生成し、前記整数Fを前記暗号鍵に対応する復号鍵とする復号鍵生成手段と、
【数1】
前記所定数より小さい整数Xiを底とし、前記整数Eを指数としたべき乗を前記積Nで除算した場合の剰余を算出して前記整数Xiの暗号化数Yiとする第1暗号化手段と、
前記暗号化数Yiの換字式暗号化により整数Yi’を算出する第2暗号化手段と、
前記Yi’から換字式復号により前記暗号化数Yiを復号する第2復号手段と、
前記暗号化数Yiを底とし、前記整数Fを指数としたべき乗を前記整数Nで除算した場合の剰余を算出して前記整数Xiを復号する第1復号手段と、を備え、
前記第1暗号化手段は、前記整数Xiを、複数の整数により構成される展開式に変換し、当該展開式により、前記整数Xiを底とし、前記整数Eを指数としたべき乗を算出し、
前記第1復号手段は、前記暗号化数Yiを、複数の整数により構成される展開式に変換し、当該展開式により、前記暗号化数Yiを底とし、前記整数Fを指数としたべき乗を算出し、
前記第2暗号化手段は、前記暗号化数Yiを、複数の整数により構成される展開式に変換し、当該展開式により、前記暗号化数Yiを換字式暗号し、
前記第2復号手段は、前記整数Yi’を、複数の整数により構成される展開式に変換し、当該展開式により、前記暗号化数Yiを復号する暗号装置。
【請求項2】
前記第2暗号化手段は、前記暗号化数Yiに対して、前記所定数より小さい正の整数からランダムに選択された整数である鍵Riの値を加算することにより、換字式暗号を行う請求項1に記載の暗号装置。
【請求項3】
前記第1暗号化手段は、前記整数Xiに対して、オフセット数Tを加算して、当該整数Xiを更新し、当該更新された整数Xiを底とし、前記整数Eを指数としたべき乗を前記積Nで除算した場合の剰余を算出して当該整数Xiの暗号化数Yiとし、当該暗号化数Yiに対して、前記オフセット数Tを減算して当該暗号化数Yiを更新し、
前記第2暗号化手段は、前記暗号化数Yiに対して、前記オフセット数Tを加算して、当該暗号化数Yiを更新し、前記更新された暗号化数Yiを底とし、前記整数Fを指数としたべき乗を前記整数Nで除算した場合の剰余を算出して前記整数Xiを復号し、当該整数Xiに対して、前記オフセット数Tを減算して整数Xiを更新する請求項1又は2に記載の暗号装置。
【請求項4】
前記オフセット数Tは、複数の前記整数Xiが存在する場合、当該オフセット数Tを当該整数Xiそれぞれに加算した場合に、当該整数Xiそれぞれが0以上かつ前記所定数以下になるように設定される請求項3に記載の暗号装置。
【請求項5】
前記素数生成手段と、前記暗号鍵生成手段と、前記復号鍵生成手段と、前記第1暗号化手段と、前記第2暗号化手段とを、前記素数生成手段、前記暗号鍵生成手段、前記復号鍵生成手段、前記第1暗号化手段、前記第2暗号化手段の順に所定回数実行する暗号化制御手段と、
前記第2復号手段と、前記第1復号手段とを、前記第2復号手段、前記第1復号手段の順に前記所定回数実行する復号制御手段と、を更に備える請求項1から4のいずれかに記載の暗号装置。
【請求項6】
前記素数生成手段は、前記暗号化制御手段により繰り返し実行される場合、それぞれの繰り返し実行において前記A及び前記Bが異なるように前記A及び前記Bを生成する請求項5に記載の暗号装置。
【請求項7】
整数を暗号化し、復号する暗号装置であって、
第1の素数Aと第2の素数Bとの積Nが所定数を超えるように前記A及び前記Bを生成する素数生成手段と、
前記第1の素数Aより1少ない整数A’と前記第2の素数Bより1少ない整数B’との積D、又は前記整数A’と前記整数B’との最小公倍数Kと素である整数Eであって、前記所定数を底とし、前記整数Eを指数としたべき乗が所定桁数を超えるように前記整数Eを生成し、前記整数Eを暗号鍵とする暗号鍵生成手段と、
任意の整数mとした場合に次式を満たすように整数Fを生成し、前記整数Fを前記暗号鍵に対応する復号鍵とする復号鍵生成手段と、
【数2】
前記所定数より小さい整数Xiに対して、オフセット数Tを加算して、当該整数Xiを更新し、当該更新された整数Xiを底とし、前記整数Eを指数としたべき乗を前記積Nで除算した場合の剰余を算出して前記整数Xiの暗号化数Yiとし、当該暗号化数Yiに対して、前記オフセット数Tを減算して当該暗号化数Yiを更新する第1暗号化手段と、
前記暗号化数Yiに対して、前記オフセット数Tを加算して、当該暗号化数Yiを更新し、前記更新された暗号化数Yiを底とし、前記整数Fを指数としたべき乗を前記整数Nで除算した場合の剰余を算出して前記整数Xiを復号し、当該整数Xiに対して、前記オフセット数Tを減算して整数Xiを更新する第1復号手段と、
前記素数生成手段と、前記暗号鍵生成手段と、前記復号鍵生成手段と、前記第1暗号化手段とを、前記素数生成手段、前記暗号鍵生成手段、前記復号鍵生成手段、前記第1暗号化手段の順に所定回数実行する暗号化制御手段と、
前記第1復号手段を、前記所定回数実行する復号制御手段と、を備え、
前記第1暗号化手段は、前記整数Xiを、複数の整数により構成される展開式に変換し、当該展開式により、前記整数Xiを底とし、前記整数Eを指数としたべき乗を算出し、
前記第1復号手段は、前記暗号化数Yiを、複数の整数により構成される展開式に変換し、当該展開式により、前記暗号化数Yiを底とし、前記整数Fを指数としたべき乗を算出する暗号装置。
【請求項8】
暗号装置が整数を暗号化し、復号する方法であって、
第1の素数Aと第2の素数Bとの積Nが所定数を超えるように前記A及び前記Bを生成する素数生成ステップと、
前記第1の素数Aより1少ない整数A’と前記第2の素数Bより1少ない整数B’との積D、又は前記整数A’と前記整数B’との最小公倍数Kと素である整数Eであって、前記所定数を底とし、前記整数Eを指数としたべき乗が所定桁数を超えるように前記整数Eを生成し、前記整数Eを暗号鍵とする暗号鍵生成ステップと、
任意の整数mとした場合に次式を満たすように整数Fを生成し、前記整数Fを前記暗号鍵に対応する復号鍵とする復号鍵生成ステップと、
【数3】
前記所定数より小さい整数Xiを底とし、前記整数Eを指数としたべき乗を前記積Nで除算した場合の剰余を算出して前記整数Xiの暗号化数Yiとする第1暗号化ステップと、
前記暗号化数Yiを換字式暗号化により整数Yi’を算出する第2暗号化ステップと、
前記整数Yi’から換字式復号により前記暗号化数Yiを復号する第2復号ステップと、
前記暗号化数Yiを底とし、前記整数Fを指数としたべき乗を前記積Nで除算した場合の剰余を算出して前記整数Xiを復号する第1復号ステップと、を含み、
前記第1暗号化ステップは、前記整数Xiを、複数の整数により構成される展開式に変換し、当該展開式により、前記整数Xiを底とし、前記整数Eを指数としたべき乗を算出し、
前記第1復号ステップは、前記暗号化数Yiを、複数の整数により構成される展開式に変換し、当該展開式により、前記暗号化数Yiを底とし、前記整数Fを指数としたべき乗を算出し、
前記第2暗号化ステップは、前記暗号化数Yiを、複数の整数により構成される展開式に変換し、当該展開式により、前記暗号化数Yiを換字式暗号し、
前記第2復号ステップは、前記整数Yi’を、複数の整数により構成される展開式に変換し、当該展開式により、前記暗号化数Yiを復号する方法。
【請求項1】
整数を暗号化し、復号する暗号装置であって、
第1の素数Aと第2の素数Bとの積Nが所定数を超えるように前記A及び前記Bを生成する素数生成手段と、
前記第1の素数Aより1少ない整数A’と前記第2の素数Bより1少ない整数B’との積D、又は前記整数A’と前記整数B’との最小公倍数Kと素である整数Eであって、前記所定数を底とし、前記整数Eを指数としたべき乗が所定桁数を超えるように前記整数Eを生成し、前記整数Eを暗号鍵とする暗号鍵生成手段と、
任意の整数mとした場合に次式を満たすように整数Fを生成し、前記整数Fを前記暗号鍵に対応する復号鍵とする復号鍵生成手段と、
【数1】
前記所定数より小さい整数Xiを底とし、前記整数Eを指数としたべき乗を前記積Nで除算した場合の剰余を算出して前記整数Xiの暗号化数Yiとする第1暗号化手段と、
前記暗号化数Yiの換字式暗号化により整数Yi’を算出する第2暗号化手段と、
前記Yi’から換字式復号により前記暗号化数Yiを復号する第2復号手段と、
前記暗号化数Yiを底とし、前記整数Fを指数としたべき乗を前記整数Nで除算した場合の剰余を算出して前記整数Xiを復号する第1復号手段と、を備え、
前記第1暗号化手段は、前記整数Xiを、複数の整数により構成される展開式に変換し、当該展開式により、前記整数Xiを底とし、前記整数Eを指数としたべき乗を算出し、
前記第1復号手段は、前記暗号化数Yiを、複数の整数により構成される展開式に変換し、当該展開式により、前記暗号化数Yiを底とし、前記整数Fを指数としたべき乗を算出し、
前記第2暗号化手段は、前記暗号化数Yiを、複数の整数により構成される展開式に変換し、当該展開式により、前記暗号化数Yiを換字式暗号し、
前記第2復号手段は、前記整数Yi’を、複数の整数により構成される展開式に変換し、当該展開式により、前記暗号化数Yiを復号する暗号装置。
【請求項2】
前記第2暗号化手段は、前記暗号化数Yiに対して、前記所定数より小さい正の整数からランダムに選択された整数である鍵Riの値を加算することにより、換字式暗号を行う請求項1に記載の暗号装置。
【請求項3】
前記第1暗号化手段は、前記整数Xiに対して、オフセット数Tを加算して、当該整数Xiを更新し、当該更新された整数Xiを底とし、前記整数Eを指数としたべき乗を前記積Nで除算した場合の剰余を算出して当該整数Xiの暗号化数Yiとし、当該暗号化数Yiに対して、前記オフセット数Tを減算して当該暗号化数Yiを更新し、
前記第2暗号化手段は、前記暗号化数Yiに対して、前記オフセット数Tを加算して、当該暗号化数Yiを更新し、前記更新された暗号化数Yiを底とし、前記整数Fを指数としたべき乗を前記整数Nで除算した場合の剰余を算出して前記整数Xiを復号し、当該整数Xiに対して、前記オフセット数Tを減算して整数Xiを更新する請求項1又は2に記載の暗号装置。
【請求項4】
前記オフセット数Tは、複数の前記整数Xiが存在する場合、当該オフセット数Tを当該整数Xiそれぞれに加算した場合に、当該整数Xiそれぞれが0以上かつ前記所定数以下になるように設定される請求項3に記載の暗号装置。
【請求項5】
前記素数生成手段と、前記暗号鍵生成手段と、前記復号鍵生成手段と、前記第1暗号化手段と、前記第2暗号化手段とを、前記素数生成手段、前記暗号鍵生成手段、前記復号鍵生成手段、前記第1暗号化手段、前記第2暗号化手段の順に所定回数実行する暗号化制御手段と、
前記第2復号手段と、前記第1復号手段とを、前記第2復号手段、前記第1復号手段の順に前記所定回数実行する復号制御手段と、を更に備える請求項1から4のいずれかに記載の暗号装置。
【請求項6】
前記素数生成手段は、前記暗号化制御手段により繰り返し実行される場合、それぞれの繰り返し実行において前記A及び前記Bが異なるように前記A及び前記Bを生成する請求項5に記載の暗号装置。
【請求項7】
整数を暗号化し、復号する暗号装置であって、
第1の素数Aと第2の素数Bとの積Nが所定数を超えるように前記A及び前記Bを生成する素数生成手段と、
前記第1の素数Aより1少ない整数A’と前記第2の素数Bより1少ない整数B’との積D、又は前記整数A’と前記整数B’との最小公倍数Kと素である整数Eであって、前記所定数を底とし、前記整数Eを指数としたべき乗が所定桁数を超えるように前記整数Eを生成し、前記整数Eを暗号鍵とする暗号鍵生成手段と、
任意の整数mとした場合に次式を満たすように整数Fを生成し、前記整数Fを前記暗号鍵に対応する復号鍵とする復号鍵生成手段と、
【数2】
前記所定数より小さい整数Xiに対して、オフセット数Tを加算して、当該整数Xiを更新し、当該更新された整数Xiを底とし、前記整数Eを指数としたべき乗を前記積Nで除算した場合の剰余を算出して前記整数Xiの暗号化数Yiとし、当該暗号化数Yiに対して、前記オフセット数Tを減算して当該暗号化数Yiを更新する第1暗号化手段と、
前記暗号化数Yiに対して、前記オフセット数Tを加算して、当該暗号化数Yiを更新し、前記更新された暗号化数Yiを底とし、前記整数Fを指数としたべき乗を前記整数Nで除算した場合の剰余を算出して前記整数Xiを復号し、当該整数Xiに対して、前記オフセット数Tを減算して整数Xiを更新する第1復号手段と、
前記素数生成手段と、前記暗号鍵生成手段と、前記復号鍵生成手段と、前記第1暗号化手段とを、前記素数生成手段、前記暗号鍵生成手段、前記復号鍵生成手段、前記第1暗号化手段の順に所定回数実行する暗号化制御手段と、
前記第1復号手段を、前記所定回数実行する復号制御手段と、を備え、
前記第1暗号化手段は、前記整数Xiを、複数の整数により構成される展開式に変換し、当該展開式により、前記整数Xiを底とし、前記整数Eを指数としたべき乗を算出し、
前記第1復号手段は、前記暗号化数Yiを、複数の整数により構成される展開式に変換し、当該展開式により、前記暗号化数Yiを底とし、前記整数Fを指数としたべき乗を算出する暗号装置。
【請求項8】
暗号装置が整数を暗号化し、復号する方法であって、
第1の素数Aと第2の素数Bとの積Nが所定数を超えるように前記A及び前記Bを生成する素数生成ステップと、
前記第1の素数Aより1少ない整数A’と前記第2の素数Bより1少ない整数B’との積D、又は前記整数A’と前記整数B’との最小公倍数Kと素である整数Eであって、前記所定数を底とし、前記整数Eを指数としたべき乗が所定桁数を超えるように前記整数Eを生成し、前記整数Eを暗号鍵とする暗号鍵生成ステップと、
任意の整数mとした場合に次式を満たすように整数Fを生成し、前記整数Fを前記暗号鍵に対応する復号鍵とする復号鍵生成ステップと、
【数3】
前記所定数より小さい整数Xiを底とし、前記整数Eを指数としたべき乗を前記積Nで除算した場合の剰余を算出して前記整数Xiの暗号化数Yiとする第1暗号化ステップと、
前記暗号化数Yiを換字式暗号化により整数Yi’を算出する第2暗号化ステップと、
前記整数Yi’から換字式復号により前記暗号化数Yiを復号する第2復号ステップと、
前記暗号化数Yiを底とし、前記整数Fを指数としたべき乗を前記積Nで除算した場合の剰余を算出して前記整数Xiを復号する第1復号ステップと、を含み、
前記第1暗号化ステップは、前記整数Xiを、複数の整数により構成される展開式に変換し、当該展開式により、前記整数Xiを底とし、前記整数Eを指数としたべき乗を算出し、
前記第1復号ステップは、前記暗号化数Yiを、複数の整数により構成される展開式に変換し、当該展開式により、前記暗号化数Yiを底とし、前記整数Fを指数としたべき乗を算出し、
前記第2暗号化ステップは、前記暗号化数Yiを、複数の整数により構成される展開式に変換し、当該展開式により、前記暗号化数Yiを換字式暗号し、
前記第2復号ステップは、前記整数Yi’を、複数の整数により構成される展開式に変換し、当該展開式により、前記暗号化数Yiを復号する方法。
【図1】
【図2】
【図3】
【図4】
【図5】
【図6】
【図2】
【図3】
【図4】
【図5】
【図6】
【公開番号】特開2012−32740(P2012−32740A)
【公開日】平成24年2月16日(2012.2.16)
【国際特許分類】
【出願番号】特願2010−174299(P2010−174299)
【出願日】平成22年8月3日(2010.8.3)
【出願人】(000211307)中国電力株式会社 (6,505)
【Fターム(参考)】
【公開日】平成24年2月16日(2012.2.16)
【国際特許分類】
【出願日】平成22年8月3日(2010.8.3)
【出願人】(000211307)中国電力株式会社 (6,505)
【Fターム(参考)】
[ Back to top ]