(57)【特許請求の範囲】
【請求項１】
整数を暗号化し、復号する暗号装置であって、
第１の素数Ａと第２の素数Ｂとの積Ｎが所定数Ｘを超えるように前記Ａ及び前記Ｂを生成する素数生成手段と、
前記第１の素数Ａより１少ない整数Ａ’と前記第２の素数Ｂより１少ない整数Ｂ’との積Ｄ、又は前記整数Ａ’と前記整数Ｂ’との最小公倍数Ｋと素である整数Ｅであって、前記所定数Ｘを底とし、前記整数Ｅを指数としたべき乗が所定桁数を超えるように前記整数Ｅを生成し、前記整数Ｅを暗号鍵とする暗号鍵生成手段と、
任意の整数ｍとした場合に次式を満たすように整数Ｆを生成し、前記整数Ｆを前記暗号鍵に対応する復号鍵とする復号鍵生成手段と、
【数１】
0005247773.tif 000017
前記所定数Ｘより小さい整数Ｘｉを底とし、前記整数Ｅを指数としたべき乗を前記積Ｎで除算した場合の剰余を算出して前記整数Ｘｉの暗号化数Ｙｉとする第１暗号化手段と、
前記暗号化数Ｙｉの換字式暗号化により前記所定数Ｘより小さい整数となるように整数Ｙｉ’を算出する第２暗号化手段と、
前記Ｙｉ’から換字式復号により前記暗号化数Ｙｉを復号する第２復号手段と、
前記暗号化数Ｙｉを底とし、前記整数Ｆを指数としたべき乗を前記整数Ｎで除算した場合の剰余を算出して前記整数Ｘｉを復号する第１復号手段と、
前記素数生成手段と、前記暗号鍵生成手段と、前記復号鍵生成手段と、前記第１暗号化手段と、前記第２暗号化手段とを、前記素数生成手段、前記暗号鍵生成手段、前記復号鍵生成手段、前記第１暗号化手段、前記第２暗号化手段の順に所定の複数回数実行する暗号化制御手段と、
前記第２復号手段と、前記第１復号手段とを、前記第２復号手段、前記第１復号手段の順に前記所定の複数回数実行する復号制御手段と、
を備え、
前記第１暗号化手段は、前記整数Ｘｉを、複数の整数により構成される展開式に変換し、当該展開式により、前記整数Ｘｉを底とし、前記整数Ｅを指数としたべき乗を算出し、
前記第１復号手段は、前記暗号化数Ｙｉを、複数の整数により構成される展開式に変換し、当該展開式により、前記暗号化数Ｙｉを底とし、前記整数Ｆを指数としたべき乗を算出し、
前記第２暗号化手段は、前記暗号化数Ｙｉを、複数の整数により構成される展開式に変換し、当該展開式により、前記暗号化数Ｙｉを換字式暗号し、
前記第２復号手段は、前記整数Ｙｉ’を、複数の整数により構成される展開式に変換し、当該展開式により、前記暗号化数Ｙｉを復号し、
前記素数生成手段は、前記暗号化制御手段により繰り返し実行される場合、それぞれの繰り返し実行において前記Ａ及び前記Ｂが異なるように前記Ａ及び前記Ｂを生成する暗号装置。
【請求項２】
前記第２暗号化手段は、前記暗号化数Ｙｉに対して、前記所定数より小さい正の整数からランダムに選択された整数である鍵Ｒｉの値を加算することにより、換字式暗号を行う請求項１に記載の暗号装置。
【請求項３】
前記第１暗号化手段は、前記整数Ｘｉに対して、オフセット数Ｔを加算して、当該整数Ｘｉを更新し、当該更新された整数Ｘｉを底とし、前記整数Ｅを指数としたべき乗を前記積Ｎで除算した場合の剰余を算出して当該整数Ｘｉの暗号化数Ｙｉとし、当該暗号化数Ｙｉに対して、前記オフセット数Ｔを減算して当該暗号化数Ｙｉを更新し、
前記第１復号手段は、前記暗号化数Ｙｉに対して、前記オフセット数Ｔを加算して、当該暗号化数Ｙｉを更新し、前記更新された暗号化数Ｙｉを底とし、前記整数Ｆを指数としたべき乗を前記整数Ｎで除算した場合の剰余を算出して前記整数Ｘｉを復号し、当該整数Ｘｉに対して、前記オフセット数Ｔを減算して整数Ｘｉを更新する請求項１又は２に記載の暗号装置。
【請求項４】
前記オフセット数Ｔは、複数の前記整数Ｘｉが存在する場合、当該オフセット数Ｔを当該整数Ｘｉそれぞれに加算した場合に、当該整数Ｘｉそれぞれが０以上かつ前記所定数以下になるように設定される請求項３に記載の暗号装置。
【請求項５】
整数を暗号化し、復号する暗号装置であって、
第１の素数Ａと第２の素数Ｂとの積Ｎが所定数Ｘを超えるように前記Ａ及び前記Ｂを生成する素数生成手段と、
前記第１の素数Ａより１少ない整数Ａ’と前記第２の素数Ｂより１少ない整数Ｂ’との積Ｄ、又は前記整数Ａ’と前記整数Ｂ’との最小公倍数Ｋと素である整数Ｅであって、前記所定数Ｘを底とし、前記整数Ｅを指数としたべき乗が所定桁数を超えるように前記整数Ｅを生成し、前記整数Ｅを暗号鍵とする暗号鍵生成手段と、
任意の整数ｍとした場合に次式を満たすように整数Ｆを生成し、前記整数Ｆを前記暗号鍵に対応する復号鍵とする復号鍵生成手段と、
【数２】
0005247773.tif 000018
前記所定数Ｘより小さい整数Ｘｉに対して、オフセット数Ｔを加算して、当該整数Ｘｉを更新し、当該更新された整数Ｘｉを底とし、前記整数Ｅを指数としたべき乗を前記積Ｎで除算した場合の剰余を算出して前記整数Ｘｉの暗号化数Ｙｉとし、当該暗号化数Ｙｉに対して、前記オフセット数Ｔを減算して当該暗号化数Ｙｉを更新する第１暗号化手段であって、
前記オフセット数Ｔは、複数の前記整数Ｘｉが存在する場合、当該オフセット数Ｔを当該整数Ｘｉそれぞれに加算した場合に、当該整数Ｘｉそれぞれが０以上かつ前記所定数Ｘ以下になるように設定される前記第１暗号化手段と、
前記暗号化数Ｙｉに対して、前記オフセット数Ｔを加算して、当該暗号化数Ｙｉを更新し、前記更新された暗号化数Ｙｉを底とし、前記整数Ｆを指数としたべき乗を前記整数Ｎで除算した場合の剰余を算出して前記整数Ｘｉを復号し、当該整数Ｘｉに対して、前記オフセット数Ｔを減算して整数Ｘｉを更新する第１復号手段と、
前記素数生成手段と、前記暗号鍵生成手段と、前記復号鍵生成手段と、前記第１暗号化手段とを、前記素数生成手段、前記暗号鍵生成手段、前記復号鍵生成手段、前記第１暗号化手段の順に所定の複数回数実行する暗号化制御手段と、
前記第１復号手段を、前記所定の複数回数実行する復号制御手段と、を備え、
前記第１暗号化手段は、前記整数Ｘｉを、複数の整数により構成される展開式に変換し、当該展開式により、前記整数Ｘｉを底とし、前記整数Ｅを指数としたべき乗を算出し、
前記第１復号手段は、前記暗号化数Ｙｉを、複数の整数により構成される展開式に変換し、当該展開式により、前記暗号化数Ｙｉを底とし、前記整数Ｆを指数としたべき乗を算出し、
前記素数生成手段は、前記暗号化制御手段により繰り返し実行される場合、それぞれの繰り返し実行において前記Ａ及び前記Ｂが異なるように前記Ａ及び前記Ｂを生成する暗号装置。
【請求項６】
暗号装置が整数を暗号化し、復号する方法であって、
第１の素数Ａと第２の素数Ｂとの積Ｎが所定数Ｘを超えるように前記Ａ及び前記Ｂを生成する素数生成ステップと、
前記第１の素数Ａより１少ない整数Ａ’と前記第２の素数Ｂより１少ない整数Ｂ’との積Ｄ、又は前記整数Ａ’と前記整数Ｂ’との最小公倍数Ｋと素である整数Ｅであって、前記所定数Ｘを底とし、前記整数Ｅを指数としたべき乗が所定桁数を超えるように前記整数Ｅを生成し、前記整数Ｅを暗号鍵とする暗号鍵生成ステップと、
任意の整数ｍとした場合に次式を満たすように整数Ｆを生成し、前記整数Ｆを前記暗号鍵に対応する復号鍵とする復号鍵生成ステップと、
【数３】
0005247773.tif 000019
前記所定数Ｘより小さい整数Ｘｉを底とし、前記整数Ｅを指数としたべき乗を前記積Ｎで除算した場合の剰余を算出して前記整数Ｘｉの暗号化数Ｙｉとする第１暗号化ステップと、
前記暗号化数Ｙｉを換字式暗号化により前記所定数Ｘより小さい整数となるように整数Ｙｉ’を算出する第２暗号化ステップと、
前記整数Ｙｉ’から換字式復号により前記暗号化数Ｙｉを復号する第２復号ステップと、
前記暗号化数Ｙｉを底とし、前記整数Ｆを指数としたべき乗を前記積Ｎで除算した場合の剰余を算出して前記整数Ｘｉを復号する第１復号ステップと、
前記素数生成ステップと、前記暗号鍵生成ステップと、前記復号鍵生成ステップと、前記第１暗号化ステップと、前記第２暗号化ステップとを、前記素数生成ステップ、前記暗号鍵生成ステップ、前記復号鍵生成ステップ、前記第１暗号化ステップ、前記第２暗号化ステップの順に所定の複数回数実行する暗号化制御ステップと、
前記第２復号ステップと、前記第１復号ステップとを、前記第２復号ステップ、前記第１復号ステップの順に前記所定の複数回数実行する復号制御ステップと、
を含み、
前記第１暗号化ステップは、前記整数Ｘｉを、複数の整数により構成される展開式に変換し、当該展開式により、前記整数Ｘｉを底とし、前記整数Ｅを指数としたべき乗を算出し、
前記第１復号ステップは、前記暗号化数Ｙｉを、複数の整数により構成される展開式に変換し、当該展開式により、前記暗号化数Ｙｉを底とし、前記整数Ｆを指数としたべき乗を算出し、
前記第２暗号化ステップは、前記暗号化数Ｙｉを、複数の整数により構成される展開式に変換し、当該展開式により、前記暗号化数Ｙｉを換字式暗号し、
前記第２復号ステップは、前記整数Ｙｉ’を、複数の整数により構成される展開式に変換し、当該展開式により、前記暗号化数Ｙｉを復号し、
前記素数生成ステップは、前記暗号化制御ステップにより繰り返し実行される場合、それぞれの繰り返し実行において前記Ａ及び前記Ｂが異なるように前記Ａ及び前記Ｂを生成する方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、暗号装置及びその方法に関する。
【背景技術】
【０００２】
従来、法人組織等において構成員を識別するために、ユニークな整数等を含む識別子を用いることが知られている。例えば、国民健康保険制度等において加入者を識別するために８桁程度の数字が用いられたり、銀行口座を識別するために銀行の支店及び口座のそれぞれに３桁から１０桁程度の数字等が用いられたり、クレジットカードの会員を識別するために１６桁程度の数字が用いられたりしている。
【０００３】
また、暗号及びデジタル署名を行う方式として、ＲＳＡ暗号が知られている（例えば、特許文献１参照）。ＲＳＡ暗号は、桁数が大きい合成数の素因数分解問題が困難であることを安全性の根拠とした公開鍵暗号方式である。すなわち、ＲＳＡ暗号では、暗号化の段階において、適当な正の整数によるべき乗と素数２個の積を法数とする剰余演算とを用い、復号において、これら素数２個の積の素因数を要するべき乗根を用いる。このことにより、ＲＳＡ暗号では、素因数を知らなければ復号が困難になることによって暗号の安全性を確保している。
【０００４】
更に、コンピュータ・ネットワークを介する情報の送受信においてセキュリティを確保するために、暗号化、認証、改ざん検出の機能を有するＳＳＬプロトコル等が知られている。例えば、ＳＳＬプロトコルに含まれる公開鍵証明書に基づく認証には、ＲＳＡ暗号を用いられている。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開平０９−１０７３５２号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
しかしながら、従来は、暗号化前の数字等の形式と、復号後の数字等の形式との組み合わせ等を手がかりとして、公開鍵と対をなす秘密鍵が解読されると、同じ公開鍵及び秘密鍵の組み合わせを用いる暗号が、全て解読可能になるという問題があった。また、ＲＳＡ暗号では、素因数を特定するまでの所用時間の長さを暗号の安全性の根拠としていることから、解読に用いるコンピュータ機器等を高性能化することにより、一定の解読手法であってもより短時間で解読することができるという問題があった。
【０００７】
また、パーソナル・コンピュータ用のアプリケーション・ソフトウェア等においては内部で取り扱える数値の範囲の制約から、例えば、１６桁の整数の自然数のべき乗等の計算を実行させるとプロセッサのオーバーフローが発生して、正確な計算結果が得られない場合がある。このため、元の整数を、オーバーフローが発生しない桁の範囲で適宜分割し、分割して得られた整数ごとに独立してべき剰余計算を実施する等の方策が必要であった。これは文章の暗号化において単位バイト数ごとに分割して平文を暗号化及び復号することと同様であるが、こうした手法では、分割した整数又は語句ごとに暗号化及び復号のための鍵が関連づけられるために、第三者により多くの解読の手がかりを与えてしまうという問題があった。
【０００８】
例えば、クレジットカードの登録番号及び有効期限の年月は、１６桁及び４桁の整数の形式を用いて表されている。これらの整数を組み合わせて、２０桁の整数を生成し、この整数を暗号化し復号することが可能な方法が提供できれば、桁を分割して複数の整数を別個に暗号化する従来の技法と比較して、第三者による解読のための手がかりとなる情報を増やすことなく、セキュリティを確保することが可能になる。すなわち、個人情報を秘匿する技術として、多桁の整数を暗号化し復号する方法が求められている。
【０００９】
更に、音声による通話又は印刷物等の文書を介する情報の漏洩においては、コンピュータ・ネットワークを用いて伝達される情報に対するＳＳＬプロトコル等のセキュリティ技術では対応できないため、音声又は文書等を含む多様な形態で個人情報を隠蔽しうる方法が必要であった。
【００１０】
本発明は、パーソナル・コンピュータ用のアプリケーション・ソフトウェア等の有効数字の範囲を超える整数について、第三者による解読のための手がかりとなる情報を増やすことなく、暗号化及び復号をすることができる暗号化及び復号の方法を提供することを目的とする。
【課題を解決するための手段】
【００１１】
本発明に係る暗号装置は、整数を暗号化し、復号する暗号装置であって、第１の素数Ａと第２の素数Ｂとの積Ｎが所定数を超えるように前記Ａ及び前記Ｂを生成する素数生成手段と、前記第１の素数Ａより１少ない整数Ａ’と前記第２の素数Ｂより１少ない整数Ｂ’との積Ｄ、又は前記整数Ａ’と前記整数Ｂ’との最小公倍数Ｋと素である整数Ｅであって、前記所定数を底とし、前記整数Ｅを指数としたべき乗が所定桁数を超えるように前記整数Ｅを生成し、前記整数Ｅを暗号鍵とする暗号鍵生成手段と、任意の整数ｍとした場合に次式を満たすように整数Ｆを生成し、前記整数Ｆを前記暗号鍵に対応する復号鍵とする復号鍵生成手段と、
【数１】
0005247773.tif 000002
前記所定数より小さい整数Ｘｉを底とし、前記整数Ｅを指数としたべき乗を前記積Ｎで除算した場合の剰余を算出して前記整数Ｘｉの暗号化数Ｙｉとする第１暗号化手段と、前記暗号化数Ｙｉの換字式暗号化により整数Ｙｉ’を算出する第２暗号化手段と、前記Ｙｉ’から換字式復号により前記暗号化数Ｙｉを復号する第２復号手段と、前記暗号化数Ｙｉを底とし、前記整数Ｆを指数としたべき乗を前記整数Ｎで除算した場合の剰余を算出して前記整数Ｘｉを復号する第１復号手段と、を備え、前記第１暗号化手段は、前記整数Ｘｉを、複数の整数により構成される展開式に変換し、当該展開式により、前記整数Ｘｉを底とし、前記整数Ｅを指数としたべき乗を算出し、前記第１復号手段は、前記暗号化数Ｙｉを、複数の整数により構成される展開式に変換し、当該展開式により、前記暗号化数Ｙｉを底とし、前記整数Ｆを指数としたべき乗を算出し、前記第２暗号化手段は、前記暗号化数Ｙｉを、複数の整数により構成される展開式に変換し、当該展開式により、前記暗号化数Ｙｉを換字式暗号し、前記第２復号手段は、前記整数Ｙｉ’を、複数の整数により構成される展開式に変換し、当該展開式により、前記暗号化数Ｙｉを復号する。
【００１２】
また、前記第２暗号化手段は、前記暗号化数Ｙｉに対して、前記所定数より小さい正の整数からランダムに選択された整数である鍵Ｒｉの値を加算することにより、換字式暗号を行うことが好ましい。
【００１３】
また、前記第１暗号化手段は、前記整数Ｘｉに対して、オフセット数Ｔを加算して、当該整数Ｘｉを更新し、当該更新された整数Ｘｉを底とし、前記整数Ｅを指数としたべき乗を前記積Ｎで除算した場合の剰余を算出して当該整数Ｘｉの暗号化数Ｙｉとし、当該暗号化数Ｙｉに対して、前記オフセット数Ｔを減算して当該暗号化数Ｙｉを更新し、前記第２暗号化手段は、前記暗号化数Ｙｉに対して、前記オフセット数Ｔを加算して、当該暗号化数Ｙｉを更新し、前記更新された暗号化数Ｙｉを底とし、前記整数Ｆを指数としたべき乗を前記整数Ｎで除算した場合の剰余を算出して前記整数Ｘｉを復号し、当該整数Ｘｉに対して、前記オフセット数Ｔを減算して整数Ｘｉを更新することが好ましい。
【００１４】
また、前記オフセット数Ｔは、複数の前記整数Ｘｉが存在する場合、当該オフセット数Ｔを当該整数Ｘｉそれぞれに加算した場合に、当該整数Ｘｉそれぞれが０以上かつ前記所定数以下になるように設定されることが好ましい。
【００１５】
また、暗号装置は、前記素数生成手段と、前記暗号鍵生成手段と、前記復号鍵生成手段と、前記第１暗号化手段と、前記第２暗号化手段とを、前記素数生成手段、前記暗号鍵生成手段、前記復号鍵生成手段、前記第１暗号化手段、前記第２暗号化手段の順に所定回数実行する暗号化制御手段と、前記第２復号手段と、前記第１復号手段とを、前記第２復号手段、前記第１復号手段の順に前記所定回数実行する復号制御手段と、を更に備えることが好ましい。
【００１６】
また、前記素数生成手段は、前記暗号化制御手段により繰り返し実行される場合、それぞれの繰り返し実行において前記Ａ及び前記Ｂが異なるように前記Ａ及び前記Ｂを生成することが好ましい。
【００１７】
本発明に係る暗号装置は、整数を暗号化し、復号する暗号装置であって、第１の素数Ａと第２の素数Ｂとの積Ｎが所定数を超えるように前記Ａ及び前記Ｂを生成する素数生成手段と、前記第１の素数Ａより１少ない整数Ａ’と前記第２の素数Ｂより１少ない整数Ｂ’との積Ｄ、又は前記整数Ａ’と前記整数Ｂ’との最小公倍数Ｋと素である整数Ｅであって、前記所定数を底とし、前記整数Ｅを指数としたべき乗が所定桁数を超えるように前記整数Ｅを生成し、前記整数Ｅを暗号鍵とする暗号鍵生成手段と、任意の整数ｍとした場合に次式を満たすように整数Ｆを生成し、前記整数Ｆを前記暗号鍵に対応する復号鍵とする復号鍵生成手段と、
【数２】
0005247773.tif 000003
前記所定数より小さい整数Ｘｉに対して、オフセット数Ｔを加算して、当該整数Ｘｉを更新し、当該更新された整数Ｘｉを底とし、前記整数Ｅを指数としたべき乗を前記積Ｎで除算した場合の剰余を算出して前記整数Ｘｉの暗号化数Ｙｉとし、当該暗号化数Ｙｉに対して、前記オフセット数Ｔを減算して当該暗号化数Ｙｉを更新する第１暗号化手段と、前記暗号化数Ｙｉに対して、前記オフセット数Ｔを加算して、当該暗号化数Ｙｉを更新し、前記更新された暗号化数Ｙｉを底とし、前記整数Ｆを指数としたべき乗を前記整数Ｎで除算した場合の剰余を算出して前記整数Ｘｉを復号し、当該整数Ｘｉに対して、前記オフセット数Ｔを減算して整数Ｘｉを更新する第１復号手段と、前記素数生成手段と、前記暗号鍵生成手段と、前記復号鍵生成手段と、前記第１暗号化手段とを、前記素数生成手段、前記暗号鍵生成手段、前記復号鍵生成手段、前記第１暗号化手段の順に所定回数実行する暗号化制御手段と、前記第１復号手段を、前記所定回数実行する復号制御手段と、を備え、前記第１暗号化手段は、前記整数Ｘｉを、複数の整数により構成される展開式に変換し、当該展開式により、前記整数Ｘｉを底とし、前記整数Ｅを指数としたべき乗を算出し、前記第１復号手段は、前記暗号化数Ｙｉを、複数の整数により構成される展開式に変換し、当該展開式により、前記暗号化数Ｙｉを底とし、前記整数Ｆを指数としたべき乗を算出する。
【００１８】
本発明に係る暗号装置が整数を暗号化し、復号する方法は、暗号装置が整数を暗号化し、復号する方法であって、第１の素数Ａと第２の素数Ｂとの積Ｎが所定数を超えるように前記Ａ及び前記Ｂを生成する素数生成ステップと、前記第１の素数Ａより１少ない整数Ａ’と前記第２の素数Ｂより１少ない整数Ｂ’との積Ｄ、又は前記整数Ａ’と前記整数Ｂ’との最小公倍数Ｋと素である整数Ｅであって、前記所定数を底とし、前記整数Ｅを指数としたべき乗が所定桁数を超えるように前記整数Ｅを生成し、前記整数Ｅを暗号鍵とする暗号鍵生成ステップと、任意の整数ｍとした場合に次式を満たすように整数Ｆを生成し、前記整数Ｆを前記暗号鍵に対応する復号鍵とする復号鍵生成ステップと、
【数３】
0005247773.tif 000004
前記所定数より小さい整数Ｘｉを底とし、前記整数Ｅを指数としたべき乗を前記積Ｎで除算した場合の剰余を算出して前記整数Ｘｉの暗号化数Ｙｉとする第１暗号化ステップと、前記暗号化数Ｙｉを換字式暗号化により整数Ｙｉ’を算出する第２暗号化ステップと、前記整数Ｙｉ’から換字式復号により前記暗号化数Ｙｉを復号する第２復号ステップと、前記暗号化数Ｙｉを底とし、前記整数Ｆを指数としたべき乗を前記積Ｎで除算した場合の剰余を算出して前記整数Ｘｉを復号する第１復号ステップと、を含み、前記第１暗号化ステップは、前記整数Ｘｉを、複数の整数により構成される展開式に変換し、当該展開式により、前記整数Ｘｉを底とし、前記整数Ｅを指数としたべき乗を算出し、前記第１復号ステップは、前記暗号化数Ｙｉを、複数の整数により構成される展開式に変換し、当該展開式により、前記暗号化数Ｙｉを底とし、前記整数Ｆを指数としたべき乗を算出し、前記第２暗号化ステップは、前記暗号化数Ｙｉを、複数の整数により構成される展開式に変換し、当該展開式により、前記暗号化数Ｙｉを換字式暗号し、前記第２復号ステップは、前記整数Ｙｉ’を、複数の整数により構成される展開式に変換し、当該展開式により、前記暗号化数Ｙｉを復号する。
【発明の効果】
【００１９】
本発明によれば、パーソナル・コンピュータ用のアプリケーション・ソフトウェア等の有効数字の範囲を超える整数について、第三者による解読のための手がかりとなる情報を増やすことなく、暗号化及び復号をすることができる。
【図面の簡単な説明】
【００２０】
【図１】第１実施形態に係る暗号装置の機能構成を示す図である。
【図２】第１実施形態に係る暗号装置により暗号化を行う場合の処理の流れを示すフローチャートである。
【図３】第１実施形態に係る暗号装置により復号を行う場合の処理の流れを示すフローチャートである。
【図４】第２実施形態に係る暗号装置の機能構成を示す図である。
【図５】第２実施形態に係る暗号装置により暗号化を行う場合の処理の流れを示すフローチャートである。
【図６】第２実施形態に係る暗号装置により復号を行う場合の処理の流れを示すフローチャートである。
【発明を実施するための形態】
【００２１】
＜第１実施形態＞
以下、本発明の実施形態について図を参照しながら説明する。
【００２２】
［機能構成］
図１は、第１実施形態に係る暗号装置１の機能構成を示す図である。暗号装置１は、所定範囲の任意の数値を暗号化し、復号する装置である。この暗号装置１は、他の暗号装置１とＬＡＮ（Ｌｏｃａｌ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）やインターネット等のコンピュータ・ネットワークにより構成される通信ネットワークＮにより、通信可能に接続されている。
【００２３】
第１実施形態は、パーソナル・コンピュータ（暗号装置１）及びその周辺装置に適用される。第１実施形態における各部は、パーソナル・コンピュータ及びその周辺装置が備えるハードウェア並びにこのハードウェアを制御するソフトウェアによって構成される。
【００２４】
上記ハードウェアには、制御部としてのＣＰＵの他、記憶部、通信部、表示部及び入力部が含まれる。記憶部としては、例えば、メモリ（ＲＡＭ、ＲＯＭ等）、ハードディスクドライブ（ＨＤＤ）及び光ディスク（ＣＤ、ＤＶＤ等）ドライブが挙げられる。通信部としては、例えば、各種有線及び無線インターフェース装置が挙げられる。表示部としては、例えば、液晶ディスプレイ、プラズマディスプレイ等の各種ディスプレイが挙げられる。入力部としては、例えば、キーボード及びマウス等が挙げられる。
【００２５】
上記ソフトウェアには、上記ハードウェアを制御するコンピュータ・プログラムやアプリケーション・ソフトウェアやデータが含まれる。コンピュータ・プログラムやアプリケーション・ソフトウェアやデータは、記憶部により記憶され、制御部により適宜実行、参照される。また、コンピュータ・プログラムやアプリケーション・ソフトウェアやデータは、通信回線を介して配布することも可能であり、ＣＤ−ＲＯＭ等のコンピュータ可読媒体に記録して配布することも可能である。
【００２６】
暗号装置１の制御部は、素数生成部１１と、暗号鍵生成部１２と、復号鍵生成部１３と、第１暗号化部１４と、第２暗号化部１５と、暗号化制御部１６と、第２復号部１７と、第１復号部１８と、復号制御部１９と、を備える。
を備える。
【００２７】
素数生成部１１は、第１の素数Ａと第２の素数Ｂとの積Ｎが所定数Ｘを超えるように、第１の素数Ａ及び第２の素数Ｂを生成する。所定数Ｘとは、例えば、２０桁の整数であり、乗算結果がレジスタで一度に表現できる範囲を超える整数である。また、所定数Ｘとは、一度に暗号化したい情報が整数で表現できる場合、この整数よりも大きい値である。
【００２８】
暗号鍵生成部１２は、第１の素数Ａより１少ない整数Ａ’と第２の素数Ｂより１少ない整数Ｂ’との積Ｄ、又は整数Ａ’と整数Ｂ’との最小公倍数Ｋと、素である整数Ｅであって、所定数Ｘを底とし整数Ｅを指数としたべき乗が、レジスタの表現できる桁数よりも大きい桁数としての所定桁数を超える（桁あふれが発生する）ように整数Ｅを生成し、この整数Ｅを暗号鍵とする。すなわち、暗号鍵生成部１２は、積Ｄ又は最小公倍数Ｋと素である整数Ｅであって、整数ＸのＥ乗の演算結果が所定桁数を超える整数Ｅをランダムに生成し、この整数Ｅを暗号鍵とする。
【００２９】
復号鍵生成部１３は、任意の整数ｍとした場合に以下の（１）式を満たすように整数Ｆを生成し、この整数Ｆを、暗号化鍵Ｅに対応する復号鍵として算出する。生成された整数Ｆは、後述の第１復号部１８に通知される。整数Ｆは、（１）式を満たすものであれば、任意の数でよく、復号鍵生成部１３は、ランダムに整数Ｆを生成してもよい。
【００３０】
【数４】
0005247773.tif 000005
【００３１】
第１暗号化部１４は、所定数Ｘより小さい任意の正の整数、すなわち、暗号化される整数Ｘｉを底とし整数Ｅを指数としたべき乗を、第１の素数Ａと第２の素数Ｂとの積Ｎで除算した場合の剰余を算出することにより、整数Ｘｉの暗号化数Ｙｉを算出する。すなわち、第１暗号化部１４は、以下の（２）式で表される、整数Ｘｉの暗号化数Ｙｉを算出する。（２）式に示される「ｍｏｄ」は、剰余を算出する関数である。
【００３２】
【数５】
0005247773.tif 000006
【００３３】
具体的には、第１暗号化部１４は、繰り返し二乗法（高速冪乗法）を用いて整数Ｘｉの暗号化数Ｙｉを算出する。以下に、処理手順について以下に説明する。
【００３４】
まず、第１暗号化部１４は、整数Ｅの２進数展開を行い、整数ＸｉのＥ乗を、この整数Ｘｉの２ｋのべき乗の積に展開する。ここで、ｋは、０からｎまでの整数をとるものとし、ｎは、２のｎ乗が整数Ｅを超えないｎのうち、もっとも大きい数に対応するものとする。例えば、整数Ｅが２８７である場合、整数Ｘｉは、以下の（３）式で表される。また、２の８乗が整数Ｅを超えない最も大きい数となるので、ｎは８となる。
【００３５】
【数６】
0005247773.tif 000007
【００３６】
続いて、第１暗号化部１４は、以下の（４）式に示すように、整数Ｘｉの２０乗を積Ｎで除算した場合の剰余から順に、整数Ｘｉの２ｋ乗を積Ｎで除算した場合の剰余を算出する。
【００３７】
【数７】
0005247773.tif 000008
【００３８】
ここで、整数Ｅは、所定数ＸのＥ乗の演算結果がレジスタの表現できる桁数よりも大きい桁数となるように生成しているので、整数Ｘｉの２ｋ乗を算出する場合に、桁あふれが生じる場合がある。そこで、第１暗号化部１４は、整数Ｘｉについて、以下の（５）式を用いて、上位の桁Ｘｕ及び下位の桁Ｘｄに分割された整数に展開し、上位の桁Ｘｕ及び下位の桁Ｘｄに基づいて、整数Ｘｉの２ｎ乗まで算出する。
【００３９】
【数８】
0005247773.tif 000009
【００４０】
式中、Ｍは底であり、Ｃｄは整数Ｘｉにおける下位の桁の数である。また、Ｃｄは、１以上の整数である。
【００４１】
例えば、底であるＭを２とし、整数Ｘｉの桁数を１６桁、下位の桁数Ｃｄを８桁とする場合、（５）式は、以下の（６）式のように表される。
【００４２】
【数９】
0005247773.tif 000010
【００４３】
例えば、第１実施形態に係る暗号装置１が１６ビット幅のレジスタのＣＰＵを備える場合に、整数Ｘｉの値が１０進数の６５５３２であるとすると、この整数Ｘｉに対するべき乗の計算において、指数として、２を用いた時点で、１６ビット幅のレジスタを用いて表現できる整数の上限値６５５３５を超えてしまう。すなわち、単に整数Ｘｉをべき乗する通常の計算方法に従って（２）式の右辺に含まれる整数ＸｉのＥ乗の計算を実施すると、正確なべき乗の値が得られない場合がある。
【００４４】
これに対して、式（６）により表される桁の分割を用いて上位の桁と下位の桁をそれぞれ整数部分として分割すると、例えば、整数Ｘｉが１０進数の６５５３２、すなわち、２進数の１１１１１１１１１１１１１１００（２）は、上位８桁に含まれる整数１１１１１１１１（２）（１０進数の２５５）と、下位８桁に含まれる整数１１１１１１００（２）（１０進数の２５２）とに分割される。この場合、分割された２つの数は、２５５の２乗よりも小さい値となるので、１６ビット幅のレジスタが表現できる整数の範囲内となる。よって、桁あふれによる誤りを避けることが可能である。
【００４５】
また、第１実施形態では、（５）式のように、２つの整数に分割することとしたが、例えば、整数Ｘｉが２０桁の場合に、以下の（７）式に示されるように、４つの整数に分割することとしてもよい。
【００４６】
【数１０】
0005247773.tif 000011
【００４７】
式中、Ｘ１５は整数Ｘｉの１６桁目から２０桁目、Ｘ１０は整数Ｘｉの１１桁目から１５桁目、Ｘ５は整数Ｘｉの６桁目から１０桁目、Ｘ０は整数Ｘｉの１桁目から５桁目である。また、整数Ｘｉが２０桁に満たない場合に、上位の桁に対してゼロ詰めを行ってもよい。このようにすることで、暗号装置１は、桁あふれを発生する条件で整数Ｅを生成した後に、（３）〜（５）式を用いて整数Ｘｉを展開して暗号化数Ｙｉを算出することにより、桁あふれを避けて、暗号化数Ｙｉを正確に算出することができる。
なお、整数Ｘｉは、（６）式や（７）式のように、分割後の整数の桁数が等しくなるように分割されることが好ましい。
【００４８】
続いて、第１暗号化部１４は、２のべき乗の積に展開された整数ＸｉのＥ乗の剰余を算出する。例えば、整数Ｅが２８７である場合、整数ＸｉのＥ乗の剰余は、以下の（８）式で示されるので、（４）式に示すように予め求められている整数Ｘｉの２ｋ乗を積Ｎで除算した場合の剰余から容易に算出することが可能となる。なお、この計算において、桁あふれを回避するように、被乗数を、（５）式と同様に上位の桁と下位の桁に分割して、剰余を算出するようにしてもよい。
【００４９】
【数１１】
0005247773.tif 000012
【００５０】
第２暗号化部１５は、所定数Ｘより小さい正の整数をランダムに選択し、この整数を鍵Ｒｉとする。続いて、第２暗号化部１５は、この鍵Ｒｉを使用して、以下の（９）式を基づいて、暗号化数Ｙの換字式暗号を行い、整数Ｙｉ’を算出する。
【００５１】
【数１２】
0005247773.tif 000013
【００５２】
式中、Ｒｏｔ（）は、鍵Ｒｉを秘密鍵として用いて、暗号化数Ｙｉを換字式暗号する関数である。具体的には、Ｒｏｔ（）は、暗号化数Ｙｉを、所定数Ｘの範囲で鍵Ｒｉの値だけ加算する。また、暗号化数Ｙｉに鍵Ｒｉを加算した結果が所定数Ｘを超える場合、Ｒｏｔ（）は、整数Ｙｉ’として、ＹｉにＲｉを加算したことにより所定数Ｘを超えた分、すなわち、Ｙｉ＋Ｒｉ−Ｘを返す。なお、この鍵Ｒｉは、第２復号部１７に通知される。
【００５３】
また、Ｒｏｔ（）は、暗号化数Ｙｉに鍵Ｒｉを加算する場合に、暗号化数Ｙｉについて、以下の（１０）式を用いて、上位の桁Ｙｕ及び下位の桁Ｙｄに分割された整数部分を生成し、この上位の桁Ｙｕ及び下位の桁Ｙｄを用いて、整数Ｙｉ’を算出する。
【００５４】
【数１３】
0005247773.tif 000014
【００５５】
（５）式と同様に、（１０）式中、Ｍは底であり、Ｃｄは暗号化数Ｙｉにおける下位の桁の数である。また、Ｃｄは、少なくとも１である。
【００５６】
暗号化制御部１６は、素数生成部１１と、暗号鍵生成部１２と、復号鍵生成部１３と、第１暗号化部１４と、第２暗号化部１５との実行を制御する。具体的には、暗号化制御部１６は、素数生成部１１と、暗号鍵生成部１２と、第１暗号化部１４と、第２暗号化部１５とを、素数生成部１１、暗号鍵生成部１２、第１暗号化部１４、及び第２暗号化部１５の順に所定回数実行する。この所定回数は、予め定められている回数でもよいし、暗号化制御部１６によりランダムに生成される整数でもよい。なお、この所定回数は、復号制御部１９に通知される。
【００５７】
第２復号部１７は、第２暗号化部１５により換字式暗号された整数Ｙｉ’から、換字式復号により暗号化数Ｙｉを算出する。具体的には、第２復号部１７は、以下の（１１）式を用いた換字式復号を行い、暗号化数Ｙを算出する。
【００５８】
【数１４】
0005247773.tif 000015
【００５９】
式中、鍵Ｒｉは、換字式暗号化の秘密鍵として用いられる整数であり、第２暗号化部１５により生成された整数である。なお、鍵Ｒｉは、第２暗号化部１５により暗号化されたデータとは別に通知される。
【００６０】
Ｒｏｔ−１（）は、整数Ｙｉ’を、所定数Ｘの範囲で鍵Ｒｉの値だけ減算した値である。整数Ｙｉ’に鍵Ｒｉを減算した結果が０未満となる場合、Ｒｏｔ−１（）は、暗号化数Ｙｉとして、整数Ｙｉ’にＲｉを減算したことにより０より小さい分を所定数Ｘから減算した値、すなわち、Ｙｉ−Ｒｉ＋Ｘを返す。
【００６１】
また、Ｒｏｔ−１（）は、整数Ｙｉ’にＲｉを減算する場合に、整数Ｙｉ’について、（１０）式と同様に、上位の桁及び下位の桁に分割された整数部分を生成し、この上位の桁及び下位の桁を用いて、暗号化数Ｙｉを算出する。
【００６２】
第１復号部１８は、復号鍵生成部１３から通知された復号鍵としての整数Ｆを用いて、暗号化数Ｙｉを底とし整数Ｆを指数としたべき乗を、積Ｎで除算した場合の剰余を算出することにより、暗号化数Ｙｉの元の数、すなわち整数Ｘｉを算出する。すなわち、第１復号部１８は、以下の（１２）式で表される、暗号化数Ｙｉの元の整数Ｘｉを算出する。第１復号部１８は、第１暗号化部１４と同様に、繰り返し二乗法（高速冪乗法）を用いることにより、暗号化数Ｙｉの元の整数Ｘｉを算出する。第１復号部１８の詳細な処理は、第１暗号化部１４と同様であるので、説明を省略する。
【００６３】
【数１５】
0005247773.tif 000016
【００６４】
復号制御部１９は、第２復号部１７と第１復号部１８との実行を制御する。具体的には、復号制御部１９は、第２復号部１７と第１復号部１８とを、第２復号部１７、第１復号部１８の順に所定回数実行する。
【００６５】
［フローチャート］
続いて、第１実施形態に係る暗号装置１を使用して、暗号化及び復号を行う処理の流れについて説明する。
図２は、第１実施形態に係る暗号装置１により暗号化を行う場合の処理の流れを示すフローチャートである。なお、このフローチャートでは、暗号化制御部１６により、所定回数としてＡ回、暗号化が行なわれるものとする。
【００６６】
ステップＳ１において、制御部（暗号化制御部１６）は、所定回数か否かを判定するために記憶部に設けられているカウンタｃ１の値を１とする。
【００６７】
ステップＳ２において、制御部（素数生成部１１）は、第１の素数Ａと第２の素数Ｂとの積Ｎが所定数Ｘを超えるように、第１の素数Ａ及び第２の素数Ｂを生成する。
【００６８】
ステップＳ３において、制御部（暗号鍵生成部１２）は、第１の素数Ａ及び第２の素数Ｂに基づいて、暗号鍵としての整数Ｅを生成する。具体的には、制御部（暗号鍵生成部１２）は、（Ａ−１）と（Ｂ−１）の積Ｄ、又は（Ａ−１）と（Ｂ−１）の最小公倍数Ｋと、素である整数Ｅであって、所定数Ｘを底とし、整数Ｅを指数としたべき乗が、レジスタの表現できる桁数よりも大きい桁数としての所定桁数を超えるように整数Ｅを生成し、この整数Ｅを暗号鍵とする。
【００６９】
ステップＳ４において、制御部（復号鍵生成部１３）は、暗号鍵（整数Ｅ）に対応する復号鍵（整数Ｆ）を生成する。具体的には、任意の整数ｍとした場合に上述の（１）式を満たすように、整数Ｆを生成し、この整数Ｆを復号鍵とする。この整数Ｆは、例えば制御部により、何回目の第１暗号化部１４の暗号に係る復号鍵であるかを示す情報と関連付けられて、復号を行う暗号装置１に通知される。
【００７０】
ステップＳ５において、制御部（第１暗号化部１４）は、整数Ｅの２進数展開を行い、この展開式に基づいて、整数ＸｉのＥ乗を、この整数Ｘｉの２ｋのべき乗の積に展開する。
【００７１】
ステップＳ６において、制御部（第１暗号化部１４）は、ｋを０に設定する。
ステップＳ７において、制御部（第１暗号化部１４）は、整数Ｘｉの２ｋ乗を、積Ｎで除算した場合の剰余を算出する。具体的には、制御部（第１暗号化部１４）は、直前に算出した整数Ｘｉの２ｋ−１乗を積Ｎで除算した場合の剰余を２乗し、更にこの値を積Ｎで除算した場合の剰余を算出する。また、制御部（第１暗号化部１４）は、整数Ｘｉを、桁あふれが生じないように上述の（５）式に基づいて、複数の整数の和に変換し、変換された整数に基づいて、整数Ｘｉの２ｋ乗を積Ｎで除算した場合の剰余を算出する。
【００７２】
ステップＳ８において、制御部（第１暗号化部１４）は、ｋに１を加算する。
ステップＳ９において、制御部（第１暗号化部１４）は、ｋがｎより大きいか否かを判定する。制御部（第１暗号化部１４）は、この判定がＹＥＳの場合、処理をステップＳ１０に移し、この判定がＮＯの場合、処理をステップＳ７に移す。
【００７３】
ステップＳ１０において、制御部（第１暗号化部１４）は、ステップＳ７で算出した剰余に基づいて、整数ＸｉのＥ乗を、積Ｎで除算した場合の剰余を暗号化数Ｙｉとして算出する。
【００７４】
ステップＳ１１において、制御部（第２暗号化部１５）は、鍵Ｒｉを生成し、（９）式に基づいて、暗号化数Ｙの換字式暗号を行い、整数Ｙｉ’を算出する。この鍵Ｒｉは、例えば制御部により、何回目の換字式暗号に係る鍵であるかを示す情報と関連付けられて、復号を行う暗号装置１に通知される。
【００７５】
ステップＳ１２において、制御部（暗号化制御部１６）は、カウンタｃ１が、所定回数Ａと等しいか否かを判定する。制御部（暗号化制御部１６）は、この判定がＹＥＳの場合、処理を終了し、この判定がＮＯの場合、処理をステップＳ１３に移す。
ステップＳ１３において、制御部（暗号化制御部１６）は、カウンタｃ１に１を加算するとともに、整数Ｘｉに、整数Ｙｉ’を代入する。その後、制御部（暗号化制御部１６）は、処理をステップＳ２に移す。
【００７６】
図３は、第１実施形態に係る暗号装置１により復号を行う場合の処理の流れを示すフローチャートである。なお、暗号装置１には、暗号化されたデータと、暗号化に用いられた鍵Ｒｉ、及び復号鍵（整数Ｆ）が通知され、暗号化されたデータの復号が可能な状態であることとする。また、暗号化の繰り返し数、すなわち所定回数は、Ａであることとする。
【００７７】
ステップＳ２１において、制御部（復号制御部１９）は、所定回数か否かを判定するために記憶部に設けられているカウンタｃ２の値を１とする。
【００７８】
ステップＳ２２において、制御部（第２復号部１７）は、上述の（１１）式に基づいて、第２暗号化部１５により換字式暗号された整数Ｙｉ’から、暗号化数Ｙｉを算出する。復号に用いられる、鍵Ｒｉには、何回目の換字式復号であるかを示す情報が関連付けられており、所定回数Ａに対応する鍵Ｒｉから順に復号が行われる。
【００７９】
ステップＳ２３において、制御部（第１復号部１８）は、暗号化数Ｙｉの２進数展開を行い、この展開式に基づいて、暗号化数ＹｉのＦ乗を、この暗号化数Ｙｉの２ｋのべき乗の積に展開する。
【００８０】
ステップＳ２４において、制御部（第１復号部１８）は、ｋを０に設定する。
ステップＳ２５において、制御部（第１復号部１８）は、暗号化数Ｙｉの２ｋ乗を、積Ｎで除算した場合の剰余を算出する。具体的には、制御部（第１復号部１８）は、直前に算出した暗号化数Ｙｉの２ｋ−１乗を積Ｎで除算した場合の剰余を２乗し、更にこの値を積Ｎで除算した場合の剰余を算出する。また、制御部（第１復号部１８）は、暗号化数Ｙｉを、桁あふれが生じないように上述の（１０）式に基づいて複数の整数の和に変換し、変換された整数に基づいて、暗号化数Ｙｉの２ｋ乗を積Ｎで除算した場合の剰余を算出する。
【００８１】
ステップＳ２６において、制御部（第１復号部１８）は、ｋに１を加算する。
ステップＳ２７において、制御部（第１復号部１８）は、ｋがｎより大きいか否かを判定する。制御部（第１復号部１８）は、この判定がＹＥＳの場合、処理をステップＳ２８に移し、この判定がＮＯの場合、処理をステップＳ２５に移す。
【００８２】
ステップＳ２８において、制御部（第１復号部１８）は、ステップＳ２５で算出した剰余に基づいて、暗号化数ＹｉのＦ乗を、積Ｎで除算した場合の剰余を整数Ｘｉとして算出（復号）する。
【００８３】
ステップＳ２９において、制御部（復号制御部１９）は、カウンタｃ２が、所定回数Ａと等しいか否かを判定する。制御部（復号制御部１９）は、この判定がＹＥＳの場合、処理を終了し、この判定がＮＯの場合、処理をステップＳ３０に移す。
ステップＳ３０において、制御部（復号制御部１９）は、カウンタｃ２に１を加算するとともに、暗号化数Ｙｉに、整数Ｘｉを代入する。その後、制御部（復号制御部１９）は、処理をステップＳ２２に移す。
【００８４】
以上、第１実施形態によれば、暗号装置１は、第１暗号化部１４により、整数Ｘｉを、複数の整数により構成される展開式に変換し、当該展開式により、整数Ｘｉを底とし、整数Ｅを指数としたべき乗を算出し、第１復号部１８により、暗号化数Ｙｉを、複数の整数により構成される展開式に変換し、当該展開式により、暗号化数Ｙｉを底とし、整数Ｆを指数としたべき乗を算出し、第２暗号化部１５により、暗号化数Ｙｉを、複数の整数により構成される展開式に変換し、当該展開式により、暗号化数Ｙｉを換字式暗号し、第２復号部１７により、整数Ｙｉ’を、複数の整数により構成される展開式に変換し、当該展開式により、暗号化数Ｙｉを復号する。
【００８５】
すなわち、暗号装置１は、整数Ｘｉ、暗号化数Ｙｉ、整数Ｙｉ’について演算する場合に、演算対象の整数を、桁あふれが生じない桁数の整数に分割して計算するので、整数Ｘｉ、暗号化数Ｙｉ、整数Ｙｉ’を正確に算出することができる。更に、整数Ｘｉは、この整数Ｘｉを構成する数字それぞれについて、別個に暗号化を行わずに、整数Ｘｉそのものを暗号化し、暗号化数Ｙｉを算出する。つまり、暗号装置１は、整数Ｘｉを暗号化する場合に、例えば、複数バイトずつにわけて、それぞれについて暗号化を行うといったように、暗号化による結果を複数算出することがない。よって、パーソナル・コンピュータ用のアプリケーション・ソフトウェア等の有効数字の範囲を超える整数について、第三者による解読のための手がかりとなる情報を増やすことなく、暗号化及び復号をすることができる。
【００８６】
また、暗号装置１は、所定数Ｘより小さい正の整数をランダムに選択し、この整数を鍵Ｒｉとし、この鍵Ｒｉの値を暗号化数Ｙｉに対して加算することにより、換字式暗号を行う。従来の換字式暗号では、数字を他の数字（例えば、０を１、１を２、・・・）に置き換える方法であり、この方法で２０桁の整数を、換字式暗号を行った場合、暗号化のパターンが１０通りに限定されてしまう。本実施形態では、鍵Ｒｉは、所定数Ｘ以下の正の整数であるので、所定数Ｘが大きければ大きいほど、暗号化のパターンが多くなる。よって、従来の換字式暗号に比べて、セキュリティを、より強固なものとすることができる。
【００８７】
また、暗号装置１は、暗号化制御部１６により、暗号化制御部１６は、素数生成部１１と、暗号鍵生成部１２と、第１暗号化部１４と、第２暗号化部１５とを、素数生成部１１、暗号鍵生成部１２、第１暗号化部１４、及び第２暗号化部１５の順に所定回数実行するので、暗号化を単に１回行う場合に比べて、セキュリティをより強固なものとすることができる。
【００８８】
また、暗号装置１は、整数Ｘｉ、暗号化数Ｙｉを、上述の（５）式、（１０）式を用いて、べき乗の計算を行う。例えば、整数Ｘｉが２乗の場合に、（５）式の右辺の２乗から、整数Ｘｕの２乗、整数Ｘｕ・整数Ｘｄ、及び整数Ｘｄの２乗が生成され、これらはいずれも元の整数Ｘｉの桁数以下の整数となるので、桁あふれを避けられる。このように、暗号装置１は、整数Ｘｉ、暗号化数Ｙｉの任意のべき乗において、（５）式、（１０）式の手順を繰り返すことにより、べき乗の計算過程での桁あふれを避けることが可能になる。
【００８９】
＜第２実施形態＞
以下、本発明の第２実施形態について図を参照しながら説明する。なお、第１実施形態と同様の構成には同一の符号を付し、説明を省略又は簡略化する。
【００９０】
［機能構成］
図４は、第２実施形態に係る暗号装置１００の機能構成を示す図である。
暗号装置１００の制御部は、第１実施形態の制御部が備える第１暗号化部１４及び第１復号部１８に換えて、第１暗号化部１１４及び第１復号部１１８を備える。
【００９１】
第１暗号化部１１４は、暗号化したい整数の集合Ｓが、０から所定数Ｘの範囲外にある場合に、オフセット数Ｔを、集合Ｓに含まれる暗号化したい整数それぞれに対して加算して、この暗号化したい整数それぞれが、０から所定数Ｘの範囲に含まれるように調整し、集合Ｓ’とする。
【００９２】
具体的には、第１暗号化部１１４は、暗号化を行う直前に、整数Ｘｉに対して、オフセット数Ｔを加算して当該整数Ｘｉを更新し、暗号化を行った直後に、暗号化数Ｙｉに対して、オフセット数Ｔを減算して、当該暗号化数Ｙｉを更新する。
また、第１復号部１１８は、復号を行う直前に、暗号化数Ｙｉに対して、オフセット数Ｔを加算して当該暗号化数Ｙｉを更新し、復号を行った直後に、整数Ｘｉに対して、オフセット数Ｔを減算して、当該整数Ｘｉを更新する。
なお、ここでは、第１暗号化部１１４により、整数Ｘｉに対してオフセット数Ｔを加算してから暗号化を行い、暗号化数Ｙｉに対してオフセット数Ｔを減算することとしているが、整数Ｘｉに対してオフセット数Ｔを減算してから暗号化を行い、暗号化した後に暗号化数Ｙｉに対してオフセット数Ｔを加算することとしてもよい。また、この場合、第１復号部１１８は、暗号化数Ｙｉに対して、オフセット数Ｔを減算して当該暗号化数Ｙｉを更新し、復号を行った直後に、整数Ｘｉに対して、オフセット数Ｔを加算して、当該整数Ｘｉを更新する。
【００９３】
［フローチャート］
続いて、第２実施形態に係る暗号装置１００を使用して、暗号化及び復号を行う処理の流れについて説明する。
図５は、第２実施形態に係る暗号装置１００により暗号化を行う場合の処理の流れを示すフローチャートである。なお、ここでは、第１実施形態と同様に、暗号化制御部１６により、所定回数としてＡ回、暗号化が行なわれるものとする。また、このフローチャートでは、集合Ｓに含まれる整数Ｘｉの暗号化が行われるものとする。
【００９４】
ステップＳ１０１からステップＳ１０４までの処理は、第１実施形態のステップＳ１からステップＳ４までの処理と同一であるので、説明を省略する。
【００９５】
ステップＳ１０５において、制御部（第１暗号化部１１４）は、整数Ｘｉに対して、オフセット数Ｔを加算して、整数Ｘｉを更新する。オフセット数Ｔは、このオフセット数Ｔを、集合Ｓに含まれる全ての整数それぞれに対して加算した場合に、０から所定数Ｘの範囲内となるように設定されるものとする。
【００９６】
ステップＳ１０６からステップＳ１１１までの処理は、第１実施形態のステップＳ５からステップＳ１０までの処理と同一であるので、説明を省略する。
【００９７】
ステップＳ１１２において、制御部（第１暗号化部１１４）は、暗号化数Ｙｉに対して、オフセット数Ｔを減算する。このオフセット数Ｔは、ステップＳ１０５において使用されたオフセット数Ｔと同じ値である。
【００９８】
ステップＳ１１３からステップＳ１１５までの処理は、第１実施形態のステップＳ１１からステップＳ１３までの処理と同一であるので、説明を省略する。
【００９９】
図６は、第２実施形態に係る暗号装置１により復号を行う場合の処理の流れを示すフローチャートである。なお、ここでは、第１実施形態と同様に、暗号化されたデータと、暗号化に用いられた鍵Ｒｉ、及び復号鍵（整数Ｆ）が通知され、暗号化されたデータの復号が可能な状態であることとする。また、暗号化の繰り返し数、すなわち所定回数は、Ａであることとする。また、オフセット数Ｔは、図５のステップＳ１０５において使用されたオフセット数Ｔと同じ値である。
【０１００】
ステップＳ１２１及びステップＳ１２２の処理は、第１実施形態のステップＳ２１及びステップＳ２２の処理と同一であるので、説明を省略する。
【０１０１】
ステップＳ１２３において、制御部（第１復号部１１８）は、暗号化数Ｙｉに対して、オフセット数Ｔを加算して、暗号化数Ｙｉを更新する。
【０１０２】
ステップＳ１２４からステップＳ１２９までの処理は、第１実施形態のステップＳ２３からステップＳ２８までの処理と同一であるので、説明を省略する。
【０１０３】
ステップＳ１３０において、制御部（第１復号部１１８）は、整数Ｘｉに対して、オフセット数Ｔを減算して、整数Ｘｉを更新する。
【０１０４】
ステップＳ１３１及びステップＳ１３２の処理は、第１実施形態のステップＳ２９及びステップＳ３０の処理と同一であるので、説明を省略する。
【０１０５】
以上、第２実施形態によれば、暗号装置１００は、第１暗号化部１１４により、暗号化を行う直前に、整数Ｘｉに対して、オフセット数Ｔを加算して当該整数Ｘｉを更新し、暗号化を行った直後に、暗号化数Ｙｉに対して、オフセット数Ｔを減算して、当該暗号化数Ｙｉを更新する。よって、暗号装置１００は、オフセット数Ｔを加減算して暗号化することにより、暗号化の手順を更に複雑なものとすることができるので、セキュリティをより強固なものとすることができる。
【０１０６】
また、オフセット数Ｔは、複数の整数Ｘｉが存在する場合、当該オフセット数Ｔを当該整数Ｘｉそれぞれに加算した場合に、当該整数Ｘｉそれぞれが０以上かつ所定数Ｘ以下になるように設定されるので、複数の整数Ｘｉが０以上かつ所定数Ｘ以下に含まれない場合であっても、０以上かつ所定数Ｘ以下に含まれるように調整することができるので、複数の整数Ｘｉの暗号化を正常に行うことができる。
【０１０７】
また、暗号装置１００は、オフセット数Ｔによる加減算により、任意の範囲の複数の整数Ｘｉを暗号化し、更に、暗号化制御部１６により、暗号化に係る処理を繰り返し実行する。よって、繰り返し実行時に、素数生成部１１による素数の組合せをランダムに生成し、暗号鍵（整数Ｅ）を生成しても、この複数の整数Ｘｉを暗号化することができる。
【０１０８】
簡単のため、桁あふれを考慮しないこととし、例えば、整数Ｘｉの集合Ｓが０〜３１までの数字である場合に、暗号装置１００により、１回目の暗号化において、素数３と素数１１の組合せに基づいた暗号化を行い、２回目の暗号化において、素数２と素数１７の組合せに基づいた暗号化を行い、３回目の暗号化において、素数５と素数７の組合せに基づいた暗号化を行うとする。
【０１０９】
ここで、素数３と素数１１の組合せでは、基本的に０〜３２の３３個の数字、素数２と素数１７の組合せでは、基本的に０〜３３の３４個の数字、素数５と素数７の組合せでは、基本的に０〜３４の３５個の数字をＲＳＡ暗号化することができる。よって、素数３と素数１１の組合せの場合には、０を省略させた１〜３２の範囲（３２個）と、３２を省略させた０〜３２の範囲（３２個）に対してオフセット数Ｔを用いて、集合Ｓを生成し、ＲＳＡ暗号を行うことができる。また、素数２と素数１７の組合せの場合には、０、１を省略させた２〜３３の範囲（３２個）と０、３２を省略させた１〜３２の範囲（３２個）に対してオフセット数Ｔを用いて、集合Ｓを生成し、ＲＳＡ暗号を行うことができる。また、素数５と素数７の組合せの場合には、０、１、３４を省略させた２〜３３の範囲（３２個）に対してオフセット数Ｔを用いて、集合Ｓを生成し、ＲＳＡ暗号を行うことができる。
【０１１０】
なお、この場合、オフセット数Ｔは−２から０の範囲に設定される。すなわち、上述のように、３つの素数の組合せにおける積Ｎが連続する３つ整数である場合、暗号化範囲の個数を同一として０〜２でスライド（加減算）させたものを暗号化させその後０〜−２でスライド（加減算）させて元に戻すことで、集合Ｓに含まれる複数の整数Ｘｉは、暗号化した後も、集合Ｓが取り得る範囲の整数に暗号化されるので、複数の整数Ｘｉの暗号化を正常に行うことができるとともに、暗号化することにより得られるパターンを多様化することができる。
【０１１１】
なお、上述の例では、連続する３つ整数の場合について説明したが、連続する４つの整数（差が３以内）から得られる素数の組合せであれば、複数の整数Ｘｉの暗号化を正常に行うことができる。例えば、９９８５（素数５と素数１９９７の組合せ）と、９９８６（素数２と素数４９９３の組合せ）と、９９８７（素数３と素数３３２９の組合せ）や、９９８６（素数２と素数４９９３の組合せ）と、９９８７（素数３と素数３３２９の組合せ）と、９９８９（素数７と素数１４２７の組合せ）についても、オフセット数Ｔを−２から０の範囲に設定することで、複数の整数Ｘｉの暗号化を正常に行うことができる。
【０１１２】
これに対して、連続する４つの整数から得られない素数の組合せにより暗号化すると、暗号化した後に、集合Ｓが取り得る範囲の整数に暗号化されなくなり、正しく暗号化を行うことができない。例えば、集合Ｓに含まれる複数の整数Ｘｉを０〜３４として、この３５個の整数を暗号化する場合、素数５と素数７の組合せでは、素数５と素数７の組合せでは、基本的に０〜３４の３５個の数字をＲＳＡ暗号化することができる。これに対して、素数３と素数１３の組合せでは、例えば、集合Ｓに含まれる複数の整数Ｘｉを２〜３６とすると、この３５個の整数に対して暗号化をした場合に、暗号化した結果に、３７等の集合Ｓの範囲を超える整数が発生するように、どのように３５個の数字を選択しても、暗号化した後に、選択された数字以外に変換される整数が発生してしまい、複数の整数Ｘｉの暗号化を正常に行うことができない。
【０１１３】
つまり、上述のように、ＲＳＡにより繰り返し暗号化を行う場合に、２つの素数の組合せが、連続する４つの整数（Ｎ、Ｎ＋１、Ｎ＋２、Ｎ＋３）から得られる異なる素数の組合せに、オフセット数Ｔとして、−２から０（又は０から２）を用いてスライド（加減算）して集合Ｓとしての複数の整数ＸｉのＲＳＡ暗号を行うことで、この複数の整数Ｘｉの暗号化数Ｙｉを集合Ｓの範囲に収めて、暗号化を正常に行うことができるとともに、暗号化することにより得られるパターンを、素数の組合せを同一のまま繰り返しＲＳＡ暗号を行う場合に比べて多様化することができ、セキュリティをより強固にすることができる。更に、換字式暗号と組合せて暗号化を行うことで、暗号化することにより得られるパターンを更に多様化することができ、多様性を更に増加させることができる。
【０１１４】
なお、このように、異なる素数の組合せによりＲＳＡ暗号を繰り返し行う場合、第２暗号化部１５の鍵Ｒｉの値を０としてもよい。すなわち、第２暗号化部１５及び第２復号部１７による換字式暗号化を行わないこととしてもよい。このようにすることで、第２暗号化部１５の機能が無効にして処理速度を向上させるとともに、異なる素数の組合せにより、ＲＳＡ暗号を行うことで、暗号化することにより得られるパターンを多様化することができる。
【０１１５】
以上、本発明の実施形態について説明したが、本発明は本実施形態に限定されるものではなく、本発明の目的を達成できる範囲での変形、改良等は本発明に含まれるものである。
【符号の説明】
【０１１６】
１  暗号装置
１１  素数生成部
１２  暗号鍵生成部
１３  復号鍵生成部
１４、１１４  第１暗号化部
１５  第２暗号化部
１６  暗号化制御部
１７  第２復号部
１８、１１８  第１復号部
１９  復号制御部
【図１】
0005247773.tif 000020
【図２】
0005247773.tif 000021
【図３】
0005247773.tif 000022
【図４】
0005247773.tif 000023
【図５】
0005247773.tif 000024
【図６】
0005247773.tif 000025