説明

整数を暗号化及び復号化する方法、装置及びシステム

【課題】整数を暗号化し復号化する方法、装置及びシステムを提供する。
【解決手段】守秘情報を参照する識別子情報等に係る整数Xiを入力として受け付け、積Nと入力値としての整数Xiとの差が所定範囲内である2つの素数A及びBを生成し、(A−1)と(B−1)との積をDとし、(A−1)と(B−1)の最小公倍数をKとし、D又はKと素である数をEとして、べき乗(XiのE乗)が計算機の整数演算に桁あふれを発生する条件で剰余計算により整数Xiを暗号化する。暗号化された整数Xiは、mを任意の整数としてE×F=m×K+1を成立するFを用意して、べき乗(YiのF乗)の剰余計算で復号化される。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、整数を暗号化及び復号化する方法、装置及びシステムに関する。特に、本発明は、守秘情報を参照するための識別情報等に関連付けられる整数を暗号化及び復号化する方法、装置及びシステムに関する。
【背景技術】
【0002】
従来、法人組織等において構成員を識別するためにユニークな整数等を含む識別子を用いることが知られている。例えば、識別子には、国民健康保険制度等において加入者を識別するための8桁程度の数字、銀行口座を識別するための銀行の支店及び口座を示す3桁から10桁程度の数字、クレジット会員を識別するための12桁程度の数字が用いられる。また、識別子には、適当な区切り記号、文字列又は他の情報等を併用して、識別される本人が覚えやすい形式が適宜用いられている。
【0003】
また、識別情報の暗号化を実現できる方法として、桁数が大きい合成数の素因数分解問題が困難であることを安全性の根拠とした公開鍵暗号であるRSA暗号が知られている(特許文献1及び非特許文献1)。RSA暗号では、暗号化においては適当な正数によるべき乗と素数2個の積を法数とする剰余演算とを用い、復号化においては当該積の素因数を要するべき乗根を用いることにより、素因数を知らなければ復号化が困難になることによって暗号の安全性を確保している。
【0004】
さらに、コンピュータネットワークを介する情報の送受信においてセキュリティを確保するために、暗号化、認証、改ざん検出の機能を有するSSLプロトコル等が知られている(非特許文献2)。SSLプロトコルに含まれる公開鍵証明書に基づく認証には、前述のRSA暗号を用いることができる。
【先行技術文献】
【特許文献】
【0005】
【特許文献1】米国特許第4405829号明細書
【非特許文献】
【0006】
【非特許文献1】「RSA暗号」[online]、平成20年6月12日、[平成20年7月30日検索]、インターネット、<URL:http://ja.wikipedia.org/wiki/RSA%E6%9A%97%E5%8F%B7>
【非特許文献2】「Secure Sockets Layer」[online]、平成20年7月29日、[平成20年7月30日検索]、インターネット、<URL:http://ja.wikipedia.org/wiki/Secure_Sockets_Layer>
【発明の概要】
【発明が解決しようとする課題】
【0007】
しかし、従来のRSA暗号では、長大桁数の数字の素因数分解の困難性を利用するため、処理方式が複雑となり、計算機における暗号化処理及び復号化処理に要する時間がかかるという課題があった。さらに、前述のSSLプロトコル自体の脆弱性が指摘されており(例えば、日立製作所、「SSLの安全性評価報告書」[online]、2001年12月28日、独立行政法人情報通信研究機構(NICT)公開情報、インターネット、<URL:http://cryptrec.nict.go.jp/rep_ID0035.pdf>を参照)、当該プロトコルを通常に使用しても、必ずしもセキュリティは確保できないという課題があった。
【0008】
また、従来技術によって、識別される本人が覚えやすい形式の識別子を日常的に用いることには、この識別子を何らかの手段により入手した他者に対して個人情報等を漏洩する危険性があった。特に、コンピュータネットワークの発達した社会において、識別される本人が覚えやすい識別子の情報を、コンピュータネットワークを介して無加工で送受信すると、通信の中継装置等の通信記録から当該識別子の情報が漏洩する等の危険性があり、特定の個人情報に対するセキュリティが確保できなかった。また、大企業等において、構成員を特定するための識別子、当該構成員の健康保険者番号、社内銀行口座番号等の、それぞれにセキュリティ確保が必要な複数の個人情報に共通の番号等を用いると、いずれかが漏洩した時点で他の個人情報も漏洩の危険にさらされるという課題があった。さらに、音声による通話又は印刷物等の文書を介する情報の漏洩においては、コンピュータネットワークを用いて伝達される情報に対するSSLプロトコル等のセキュリティ技術では対応できないため、音声又は文書等を含む多様な形態で個人情報を漏洩から保護できる方法が必要であった。
【0009】
本発明は、暗号化したい情報の数値範囲に応じて計算条件を自動的に選択することにより計算を高速化すること、及び計算条件を隠蔽することによりセキュリティをより高度に確保することが可能な、方法、装置及びシステムを提供することを目的とする。
また、本発明は、個人情報と関連付けられた識別子等を、計算機が桁あふれを発生する条件で暗号化する方法を提供することにより、本発明の方法によらない第三者には元の識別子を復元できない暗号化された識別子等を生成することが可能な、方法、装置及びシステムを提供することを目的とする。
【課題を解決するための手段】
【0010】
本発明者は、計算過程において計算機が桁あふれを生じさせるような大きな数を意図的に発生する計算手順を用い、所定の手順で桁あふれを回避して暗号化及び復号化を実施することにより、個人情報を秘匿する方法を見出したこと、及び暗号化したい情報の数値範囲に応じて計算条件を自動的に選択する手法を見出したことによって、本発明を完成するに至った。
本発明では、以下のような解決手段を提供する。
【0011】
(1)整数Xiを暗号化し復号化する方法であって、2つの素数A及びBを生成するステップであって、前記素数A及びBの積であるNと前記整数Xiとの差が所定の範囲内となるような前記素数A及びBを生成するステップと、(A−1)と(B−1)との積をDとし、(A−1)と(B−1)の最小公倍数をKとし、D又はKと素である数をEとして、次式において前記整数XiのE乗が計算手段の整数演算に桁あふれを発生する条件で、次式の展開形を用いて前記整数Xiを暗号化した整数Yiを生成する、べき剰余による暗号化ステップと、
【数11】

mを任意の整数として次式を成立するFを用意するステップと、
【数12】

次式を用いて前記暗号化した前記整数Yiを整数Xnに復号化する、べき剰余による復号化ステップと、を含む、整数を暗号化し復号化する方法。
【数13】

【0012】
本発明の方法においては、整数演算を実施可能なコンピュータ装置等を用い、整数を入力して暗号化した整数を生成し、当該生成した暗号化した整数を復号化することにより、入力した整数を復元できる。
入力に用いる整数は、コンピュータ処理可能な整数であればよく、文字又は画像等から可逆的に変換された整数でもよい。例えば、コンピュータ処理可能な文字のそれぞれに割り当てられた文字コード等を、1桁、2桁又は4桁等の16進数の整数として扱ってもよい。また、例えば、コンピュータ処理可能な画像に含まれる個々の画素を、RGB各8ビットの整数の一組とする24ビットの2進数の整数として扱ってもよい。例えば、構成員の識別番号等の個人情報を、コンピュータ処理可能な整数に可逆的に変換して、本発明の整数を暗号化し復号化する方法の入力に用いることができる。
【0013】
本発明の方法において、2つの素数A及びBは、A及びBの積と暗号化する整数との差が所定の範囲内となるように生成される。これにより、数式(I)等に含まれるN(すなわち、A及びBの積)の剰余計算において、暗号化に必要な手順を実行しながら、長大桁数の数字のべき乗及び剰余計算に要するコンピュータ資源を削減することができる。したがって、本発明においては、暗号化する整数に応じて2つの素数A及びBを選択することにより、より少ないコンピュータ資源で暗号化及び復号化を行うことができると共に、より高速に暗号化及び復号化を行うことができる。
【0014】
本発明の方法は、コンピュータに整数演算を実施させるプログラム等を用いて実行することができる。当該プログラムとしては、アセンブラ又はコンパイラ等により生成されたプログラム、インタープリタ等により変換されたプログラム、あるいはスクリプト又はスプレッドシート等が内蔵する計算ルーチンにより呼び出される機械語プログラム等が挙げられるが、これらに限定されない。
【0015】
桁あふれは、例えば、前述のようなコンピュータが備える中央処理装置(CPU)の演算レジスタにおいて発生する可能性がある。有効な桁数の整数演算は、特定のCPUが有する演算レジスタの桁数にしたがって実施できる。例えば、レジスタ長が16ビットのCPUの場合、整数演算に使用できる整数は、例えば符号なし16ビット整数として、10進数の0〜65535の範囲である。レジスタ長が32ビットのCPUの場合は、同様に符号なし32ビット整数として、10進数の0〜4294967295の範囲である。桁あふれは、例えば、このような範囲を超える整数が発生する場合に起きる。
【0016】
また、桁あふれは、インタープリタ、スクリプト又はスプレッドシート等が整数演算のために用意する内部関数において発生する可能性がある。したがって、通常は、特定のインタープリタ、スクリプト又はスプレッドシート等が有する内部関数が表現可能な整数の桁数にしたがって、有効な桁数の整数演算が実施される。例えば、特定のコンパイラ等において符号なし16ビット整数の型が定義された変数が表しうる整数は、10進数の0〜65535の範囲である。桁あふれは、例えば、このような範囲を超える整数が発生する場合に起きる。
【0017】
本発明の方法においては、数式(I)で表されるべき乗の計算において、上述の桁あふれを含む任意の形式の桁あふれを発生するよう、整数Eを選択できる。桁あふれは、例えばCPU内部における整数演算中の桁あふれの発生検出処理、又はコンパイラ等が適宜備える整数演算ライブラリに含まれる桁あふれに対するエラー処理ルーチン等の、当技術分野に公知の手法を用いて検出することができる。
【0018】
次いで、本発明に係る整数を暗号化し復号化する方法においては、数式(II)で表される整数Fを用意する。整数Fは、任意のmを含んで選択された素数A及びBに基づいて生成される右辺の数式(m×K+1)の因数であれば、特に限定されない。
【0019】
次いで、本発明に係る整数を暗号化し復号化する方法においては、数式(III)を用い、前述のようにして得られたFを用いて、暗号化した整数であるYiから元のXiを復号化することができる。
【0020】
このようにすることで、本発明の方法においては、桁あふれを発生する条件で数式(I)のEを選択し、数式(II)によりFを算出し、(III)により整数Yiを得ることで、情報秘匿性の高い暗号化を実施することが可能になる。
また、本発明の方法においては、暗号化する整数の数値範囲に応じて計算条件を自動的に選択することにより、計算に要するコンピュータ資源を削減し、計算を高速化することができ、計算条件を隠蔽することによりセキュリティをより高度に確保することができる。
【0021】
(2)前記べき剰余による暗号化ステップにおいて、前記展開形は前記整数Xiの桁を2つに分割し、前記分割した桁の上位の桁により表される整数Xu及び前記分割した下位の桁により表される整数Xdを生成し、次式を用いて前記整数Xiを置き換えることであり、
【数14】

式中、Mは記数法の底であり、Cdは前記下位の桁の数であり、Cdは少なくとも1であり、前記整数Xu又は前記整数Xdを用いて剰余計算を実施する、(1)に記載の整数を暗号化し復号化する方法。
【0022】
このようにすることで、本発明に係る整数を暗号化し復号化する方法においては、桁あふれを発生する条件で前述の数式(I)のEを選択した後に、数式(IV)を用いて整数Xiを上位の桁と下位の桁とに分割して展開し、展開後の式を用いて演算を行うので、桁あふれを避けて、暗号化した整数である整数Yiを正確に得ることができる。
【0023】
(3)前記2つの素数A及びBを生成するステップは、さらに、前記積であるNが前記整数Xiに最も近くなるように前記2つの素数A及びBを選択するステップを含む、(1)に記載の整数を暗号化し復号化する方法。
【0024】
本発明の方法において、前述の2つの素数A及びBは、暗号化する整数との差が最も近くなるように、A及びBの可能な組み合わせの集合から選択することができる。この選択は、例えば、暗号化する整数Xiに対して、差である(Xi−AB)の絶対値が最小となるように、A及びBの可能な組み合わせの集合から選択することで達成できる。
【0025】
(4)前記整数Xiは、識別子に含まれる文字又は数字の一部又は全体から、可逆的に変換された整数である、(1)に記載の整数を暗号化し復号化する方法。
【0026】
本発明に係る識別子は、典型的にはコンピュータ処理可能な文字(文字としての数字を含む)又は数値とすることができる。一般的に、文字は、文字コード等の公知技法を用いることによりユニークな整数に変換できる。したがって、本発明に係る整数の暗号化及び復号化の方法においては、ユニークな整数との関連付けが可能な文字又は数値を、元の整数として暗号化し、復号化することができる。
【0027】
(5)前記整数Xiは、1次元画像又は2次元画像から可逆的に変換された1次元画像の一部又は全体から、可逆的に変換された整数である、(1)に記載の整数を暗号化し復号化する方法。
【0028】
本発明に係る画像は、典型的にはコンピュータ処理可能な画像データであり、例えば1つの画素は、R(赤)G(緑)B(青)の各色に8ビットの階調の値を含む符号なしの24ビットの整数でありうる。2次元画像は、所定の手順にしたがって画素を並び替えることにより1次元画像に変換してもよい。このようにして、画素からなる画像は整数として扱うことができ、特定の画像はユニークな整数と関連付けられる。暗号化される元の整数に含まれる画素数は、適宜設計できる。したがって、本発明に係る整数の暗号化及び復号化の方法においては、ユニークな整数との関連付けが可能な1次元又は2次元画像を元の整数として暗号化し、復号化することができる。
【0029】
(6)さらに、暗号化に先立って、前記整数Xiを、少なくとも1つの桁を前記整数Xiに対して追加することにより桁を増した整数Wiに置き換えるステップを含む、(1)に記載の整数を暗号化し復号化する方法。
【0030】
このようにすることで、暗号化される整数Xiに対して、任意に選択される桁数を追加した整数を生成して暗号化の入力に用いることができる。桁数を増した整数Wiは、元の整数Xiが同一であっても、増した桁数及び当該桁数の整数に含まれる各桁の数字に依存して変化することが可能である。したがって、同一のXi及び任意に選択される桁数の整数に基づいて、互いに異なる整数Wiを生成して暗号化に用いることができる。
【0031】
例えば、暗号化される整数Xiとしては、生年月日の日付の情報を含む文字列に基づいて生成される4桁、6桁、又は8桁等の整数を用いることができる。ここで、任意に選択される桁数としては、例えば2桁の整数等が挙げられるが、限定されない。本発明の整数を暗号化し復号化する方法のユーザ等は、例えば、自己の生年月日に基づく同一の整数及び任意に選択される2桁の整数から生成される、桁数を増した整数Wiを暗号化の入力とし、当該2桁の整数を使い分けることにより、複数の暗号化した整数を生成して利用することができる。暗号化される整数は例えば10桁等であっても、ユーザは全ての桁の数字を使用目的ごとに記憶する必要はなく、自分が覚えやすい2桁の整数等を使い分ければよい。したがって、本発明に係る整数を暗号化し復号化する方法においては、ユーザが覚えやすい数字を、桁増しとして併用して暗号化することにより、複数の暗号化した整数を生成して使い分けることができる。
【0032】
(7)さらに、復号化の後に、復号化した前記整数Wiから追加した少なくとも1つの桁を除去するステップを含む、(6)に記載の整数を暗号化し復号化する方法。
【0033】
このようにすることで、本発明に係る整数を暗号化し復号化する方法においては、復号化の後に、桁を増した整数Wiから元の前記整数Xiを完全に復号化することが可能である。
【0034】
(8)さらに、前記整数Xiを変換した整数Yiを生成する前に、前記整数Xiから前記整数Xi以下の整数Tを加算して前記整数Xiと置き換えるステップと、前記変換した整数Yiを整数Xnに復号化した後に、前記整数Xnに前記整数Tを減算して前記整数Xnと置き換えるステップと、を含む、(1)に記載の整数を暗号化し復号化する方法。
【0035】
整数Tは、いわゆるオフセットであり、本発明の方法においては、数値の加算によるオフセットの適用及び当該数値の減算によるオフセットの消去を用いて、情報の秘匿化を行うことができる。
特に、従来の公開鍵暗号化技術等では0、1、及び元の整数自身が変換されずに特異点となりうるが、本発明においては、オフセットを用いて従来法における特異点の数値を変更できる。したがって、本発明においては、従来法の特異点に係る問題を避けて暗号化及び復号化を実施できる。
【0036】
(9)前記べき剰余による暗号化ステップにより前記整数Xiを前記整数Yiに変換した後に、換字式暗号化を用いて前記整数Yiを整数Ziに変換する、べき剰余と換字とを連続する暗号化ステップと、換字式復号化を用いて前記整数Ziを前記整数Yiに復号化した後に、前記べき剰余による復号化ステップにより前記整数YiをXnに復号化する、換字とべき剰余とを連続する復号化ステップと、を含み、前記べき剰余と換字とを連続する暗号化ステップ、及び前記換字とべき剰余とを連続する復号化ステップは、少なくとも1以上の同一の回数だけ実施される、(1)に記載の整数を暗号化し復号化する方法。
【0037】
(10)換字式暗号化を用いて前記整数Xiを整数Yiに変換した後に、前記べき剰余による暗号化ステップにより前記整数Yiを前記整数Ziに変換する、換字とべき剰余とを連続する暗号化ステップと、前記べき剰余による復号化ステップにより前記整数ZiをYnに復号化した後に、換字式復号化を用いて前記整数Yiを前記整数Ziに復号化する、べき剰余と換字とを連続する復号化ステップと、を含み、前記換字とべき剰余とを連続する暗号化ステップ、及び前記べき剰余と換字とを連続する復号化ステップは、少なくとも1以上の同一の回数だけ実施される、(1)に記載の整数を暗号化し復号化する方法。
【0038】
これらのようにすることで、本発明の方法においては、異なる暗号化の処理を連続することにより、同じ暗号化の方法の繰り返しからは得られない、より秘匿性の高い暗号化が可能になる。対応する暗号化の手順を知らなければ正確な復号化ができないため、第三者による解読にはより多くの手間を必要とする。したがって、本発明の方法においては、元の整数に対して極めて高い秘匿性を有する暗号化が可能になる。
【0039】
(11)さらに、前記べき剰余による暗号化ステップにおいて、前記整数XiのE乗が計算手段の整数演算に桁あふれを発生する条件で、前記Eをランダムな規則により選択するステップを含む、(1)に記載の整数を暗号化し復号化する方法。
【0040】
本発明に係る暗号化の鍵を選択するためのランダムな規則は、乱数の発生等を含むランダムな規則を用いることが可能である。例えば、整数の乱数を発生するためのコンピュータプログラムを用いて得られる整数を、本発明に係る暗号化の鍵として用いてもよい。これに限定せず、乱数賽等の機構、任意の時刻における電気的雑音の強度と関連付けた数値等をランダムな規則として、これらのランダムな規則に基づいて整数を選択して用いてもよい。
【0041】
具体的には、本発明に係る整数を暗号化する方法においては、数式(I)に含まれる整数Eを、ランダムな規則に基づいて選択することができる。また、本発明に係る整数を復号化する方法においては、数式(II)によって、整数Eと関連付けられる整数Fが選択される。したがって、一対の整数E及び整数Fは、他のべき剰余の計算中に選択された他の一対の整数E及び整数Fとは関連性のない整数となりうる。これにより、本発明の方法は、整数E及び整数Fの正しい値を用いることのない第三者に対して、極めて高い秘匿性を提供できる。
【0042】
(12)さらに、前記積Nの桁を少なくとも二つに分割して前記積Nから少なくとも二つの整数部分を生成するステップと、前記積N及び前記展開形に含まれるそれぞれの整数部分を関連付ける情報を保持するステップと、を含み、前記べき剰余による暗号化ステップにおいて、前記展開形は、前記整数Xiの桁を少なくとも二つに分割して前記整数Xiから少なくとも二つの整数部分として生成され、前記べき剰余による復号化ステップにおいて、前記整数Xnは、前記保持した前記それぞれの整数部分を関連付ける情報に基づいて前記整数Yiから復号化される、(1)に記載の整数を暗号化し復号化する方法。
【0043】
本発明の方法においては、倍精度型の精度の範囲を超える多桁の整数であっても、相互に関連付けを有する整数部分の分割を用いてべき剰余を計算する方法を提供することができる。本発明においては、それぞれの整数部分は別個に暗号化され復号化される独立した整数ではなく、全体が1つの整数として暗号化され復号化される。したがって、本発明に係る整数を暗号化し復号化する方法においては、第三者による解読のための手がかりを増すことなく、暗号化及び復号化を行うことができる。
【0044】
(13)(1)から(12)のいずれかに記載の方法をコンピュータを用いて実行するための、コンピュータプログラム。
【0045】
これにより、本発明に係る整数を暗号化し復号化する方法の各ステップをコンピュータに実行させることができる。
【0046】
(14)(1)から(12)のいずれかに記載の方法の各ステップを用いてエンコードした数値を含むコンピュータ可読媒体。
【0047】
本発明に係る整数を暗号化し復号化する方法は、記憶媒体に記録する任意のデータ、又は記憶媒体の特定の記憶領域を参照するためのファイル割り当てテーブル等に含まれる数値等を、暗号化及び復号化することができる。このようなデータ又は数値は、整数と見なしうるものであれば何でもよい。したがって、本発明は、第三者に対する漏洩を保護したコンピュータ可読媒体を提供することができる。
【0048】
(15)整数Xiを暗号化し復号化する装置であって、2つの素数A及びBを生成する素数生成部であって、前記素数A及びBの積であるNと前記整数Xiとの差が所定の範囲内となるような前記素数A及びBを生成する前記素数生成部と、(A−1)と(B−1)との積をDとし、(A−1)と(B−1)の最小公倍数をKとし、D又はKと素である数をEとして、次式において前記整数XiのE乗が計算手段の整数演算に桁あふれを発生する条件で、次式の展開形を用いて前記整数Xiを暗号化した整数Yiを生成する暗号生成部と、
【数15】

mを任意の整数として次式を成立するFを用意する復号化準備部と、
【数16】

次式を用いて前記暗号化した前記整数YiをXnに復号化する復号化部と、を含む装置。
【数17】

【0049】
本発明の装置は、整数演算中の桁あふれの検出又はプログラム実行中の整数演算の桁あふれ発生の検出が可能であればよい。数式(V)で表されるべき乗計算に含まれる整数Eは、このように桁あふれが検出される条件で選択される。
さらに、本発明の装置においては、桁あふれが発生する条件で数式(V)のEを選択した後に、例えば前述の数式(IV)を用いてXiを展開し、桁あふれを避けて、暗号化した整数であるYiを正確に得ることができる。
したがって、本発明の装置は、整数Yiを正確に得ることが可能になる。すなわち、本発明の装置は、暗号化及び復号化のいずれも正確に実施することができる。
【0050】
(16)整数Xiの暗号化により情報を暗号化及び復号化するシステムであって、2つの素数A及びBを生成する素数生成手段であって、前記素数A及びBの積であるNと前記整数Xiとの差が所定の範囲内となるような前記素数A及びBを生成する前記素数生成手段と、(A−1)と(B−1)との積をDとし、(A−1)と(B−1)の最小公倍数をKとし、D又はKと素である数をEとして、次式において前記整数XiのE乗が計算機の整数演算に桁あふれを発生する条件で、次式の展開形を用いて前記整数Xiを暗号化した整数Yiを生成する暗号生成手段と、
【数18】

mを任意の整数として次式を成立するFを用意する復号化準備手段と、
【数19】

次式を用いて前記暗号化した前記整数YiをXnに復号化する復号化手段と、を含むシステム。
【数20】

【0051】
本発明のシステムにおいては、整数演算中の桁あふれの検出又はプログラム実行中の整数演算の桁あふれ発生の検出が可能であればよい。数式(VIII)で表されるべき乗計算に含まれる整数Eは、このように桁あふれが検出される条件で選択される。
さらに、本発明に係る整数を暗号化及び復号化するシステムにおいては、桁あふれを発生する条件で前述の数式(VIII)のEを選択した後に、例えば前述の数式(IV)を用いてXiを展開し、桁あふれを避けて、暗号化した整数であるYiを正確に得ることができる。
【0052】
したがって、本発明に係る情報を暗号化及び復号化するシステムは、整数Yiを正確に得ることが可能になる。すなわち、本発明に係る整数の暗号化及び復号化装置は、暗号化及び復号化のいずれも正確に実施できる。
【発明の効果】
【0053】
本発明によれば、暗号化したい情報の数値範囲に応じて計算条件を自動的に選択することにより計算を高速化することができ、計算条件を隠蔽することによりセキュリティをより高度に確保することが可能な、方法、装置及びシステムを提供できる。
また、本発明によれば、個人情報と関連付けられた識別子等を、計算機が桁あふれを発生する条件で暗号化する方法を提供することにより、本発明の方法によらない第三者には元の識別子を復元できない暗号化された識別子等を生成することが可能な、方法、装置及びシステムを提供できる。
【図面の簡単な説明】
【0054】
【図1】本発明の一実施形態に係る、整数を暗号化し復号化する方法のフロー図である。
【図2】本発明の一実施形態に係る、2つの素数A及びBを生成する処理の流れを示すフローチャートである。
【図3】本発明の一実施形態に係る、整数を暗号化する方法を用いる個人情報保護手順の例を示す図である。
【図4】本発明の一実施形態に係る、整数を暗号化する方法を用いる個人情報保護手順の別の例を示す図である。
【図5】本発明の一実施形態に係る、整数を暗号化する方法を用いる個人情報保護手順のまた別の例を示す図である。
【図6】本発明の一実施形態に係る、暗号化した整数の復号化手順の例を示す図である。
【図7】本発明の別の実施形態に係る、整数を暗号化する方法のフロー図である。
【図8】本発明の別の実施形態に係る、暗号化した整数を復号化する方法のフロー図である。
【図9】本発明のまた別の実施形態に係る、整数を暗号化する方法のフロー図である。
【図10】本発明のまた別の実施形態に係る、暗号化した整数を復号化する方法のフロー図である。
【図11】本発明のさらに別の実施形態に係る、整数を暗号化する方法のフロー図である。
【図12】本発明のさらに別の実施形態に係る、暗号化した整数を復号化する方法のフロー図である。
【図13】本発明の一実施形態に係る、整数を暗号化する方法を用いる個人情報保護手順のさらに別の例を示す図である。
【図14】本発明の実施形態に係る、暗号化及び復号化の方法の諸段階をスプレッドシート形式の計算アプリケーションパッケージを用いて実装する例を示す図である。
【図15】本発明の一実施形態に係る、暗号化及び復号化の方法の諸段階をスプレッドシート形式の計算アプリケーションパッケージに実装して計算する例を示す図である。
【図16】本発明の実施形態に係る、べき剰余と換字式の重畳を用いる暗号化の処理を、スプレッドシート形式の計算アプリケーションパッケージを用いて実装する例を示す図である。
【図17】本発明の実施形態に係る、換字式とべき剰余の重畳を用いる復号化の処理を、スプレッドシート形式の計算アプリケーションパッケージを用いて実装する例を示す図である。
【発明を実施するための形態】
【0055】
以下、本発明の実施形態について説明する。なお、これはあくまでも一例であって、本発明の技術的範囲はこれに限られるものではない。
【0056】
本発明の実施形態は、コンピュータ及びその周辺装置に適用される。本発明の実施形態における各部は、コンピュータ及びその周辺装置が備えるハードウェア並びに該ハードウェアを制御するソフトウェアによって構成される。
【0057】
上記ハードウェアには、制御部としてのCPU(中央処理装置、Central Processing Unit)の他、記憶部、通信装置、表示装置及び入力装置が含まれる。記憶部としては、例えば、メモリ(RAM:ランダムアクセスメモリ、ROM:読み出し専用メモリ等)、ハードディスクドライブ(HDD:ハードディスクドライブ)、及び光ディスク(CD:コンパクトディスク、DVD:デジタル多目的ディスク等)ドライブが挙げられる。通信装置としては、例えば、各種有線及び無線インタフェース装置が挙げられる。表示装置としては、例えば、液晶ディスプレイ等の各種ディスプレイが挙げられる。入力装置としては、例えば、キーボード及びポインティング・デバイス(マウス、トラッキングボール等)が挙げられる。
【0058】
上記ソフトウェアには、上記ハードウェアを制御するコンピュータプログラムやデータが含まれる。コンピュータプログラムやデータは、記憶部により記憶され、制御部により適宜実行、参照される。また、コンピュータプログラムやデータは、通信回線を介して配布されることも可能であり、コンピュータ可読媒体に記録して配布されることも可能である。
【0059】
具体的には、コンピュータ可読媒体は、フラッシュメモリ等の電気的記憶媒体、CD−ROM等の光学読み取り可能媒体、ハードディスク等の磁気記憶媒体等の任意の形態を含む。コンピュータ可読媒体は、暗号化又は復号化の処理においてコンピュータネットワーク等を介する必要はなく、ネットワーク等から切り離されたオフライン状態でも、本発明の暗号化及び復号化の方法を用いてエンコードした情報を格納してもよい。
【0060】
[暗号化及び復号化のフロー図]
図1に、本発明の一実施形態に係る、整数を暗号化し復号化する方法のフロー図を示す。図1(a)は、本実施形態に係る、整数を暗号化する方法フロー図であり、図1(b)は、当該暗号化した整数を復号化する方法のフロー図である。
【0061】
まず、暗号化の処理を、暗号化装置100(図3)の動作として説明する。本実施形態に係る整数を暗号化する方法において、暗号化装置100は、メモリデバイス等(図示せず)の記憶媒体を適宜用い、図1(a)のステップS100で変数領域を確保する。具体的には、次の表1に列挙する変数を用いる計算のために、暗号化装置100のメモリ領域が確保される。
【表1】

【0062】
暗号化する整数としては、識別子等に含まれうる符号なしの整数が挙げられるが、これに限定されず、任意の形式の整数を用いてもよい。
【0063】
整数Xi、Yi及びXnのワード長は、暗号化装置100が備えるCPUの内部命令において1つの整数を表すために用いうるレジスタのビット幅の最大以内である。例えば、暗号化装置100が、16ビットレジスタを用いて内部命令に含まれる整数演算を実施可能なCPUを備える場合、整数Xi、Yi及びXnのワード長は16ビット以下であり、これらの整数は10進数の記法における0以上65535以下の範囲内をとりうる。
【0064】
次いで、暗号化装置100は、ステップS110において、積Nと整数Xiとの差が所定範囲内である2つの素数A及びBを生成する。この所定の範囲としては、予め定められた一定の数値の範囲、暗号化する整数に対して予め定められた一定の比率の範囲、A及びBの可能な組み合わせのうち、暗号化する整数と積ABとの差が小さい所定範囲内の順序(例えば、最も近い組み合わせ、又は2番目に近い組み合わせ)等が挙げられるが、これらに限定されない。例えば、2つの素数A及びBは、暗号化する整数Xiとの差が最も近くなるように、A及びBの可能な組み合わせの集合から選択されてもよい。
【0065】
また、素数は、公知の素数判定法等により、所定の区間の整数の集合から生成される。したがって、2つの素数A及びBを選択するための素数の集合は、暗号化する整数Xiが指定された後に生成される。このため、暗号化装置100では、この素数の集合を、予め用意する必要がない。よって、暗号化装置100は、暗号化したい情報が指定されるまで、暗号化の計算に必要な素数A及びBの情報を用意する必要がなく、計算条件を隠蔽しておくことが可能である。
【0066】
例えば、暗号化する整数が10000である場合に、2つの素数(A,B)の組み合わせとしては、(2,4999)、(13,769)、(73,137)又は(7,1429)等が挙げられるが、これらに限定されない。これらの(A,B)の対における積AB、すなわち積Nは、この順にそれぞれ、9998、9997、10001及び10003である。
【0067】
なお、暗号化に用いる2つの素数(A,B)の組み合わせは、暗号化する整数Xiとの差が最も小さい条件で選択してもよい。例えば、積ABがXi以上であって当該差が最小である(A,B)を選択してもよく、積ABがXi以下であって当該差が最小である(A,B)を選択してもよい。
【0068】
具体的な処理について、図2に示すフローチャートを参照して説明する。図2は、2つの素数A及びBを生成する処理の流れを示すフローチャートである。
【0069】
ステップS111において、暗号化装置100は、暗号化する整数に3を加算する。
続いて、ステップS112において、暗号化装置100は、ステップS111又はステップS116において加算された整数を、この加算された整数の平方根を超えない素数で順次除算する。ここで算出される商をN1とする。
ステップS113では、暗号化装置100は、加算された整数が素数で割り切れたか否かを判定する。判定の結果がYESであればステップS114に進み、NOであればステップS116に進む。
【0070】
ステップS114では、暗号化装置100は、ステップS113で加算された整数が素数で割り切れたと判定されているので、商N1を、商N1の平方根を超えない素数で除算する。すなわち、この素数が、加算された整数の因数であるので、暗号化装置100は、商N1が素数であるか否かを判定するために、商N1を、商N1の平方根を超えない素数で除算する。
【0071】
ステップS115では、暗号化装置100は、商N1が、商N1の平方根を超えない素数で割り切れたか否かを判定する。判定の結果がYESであれば、ステップS116に進み、NOであれば処理を終了する。すなわち、この判定結果がNOである場合、商N1は素数である。よって、ステップS111又はステップS116で加算された整数は、2つの素数(A,B)の組合せが生成されたことになる。
【0072】
ステップS116は、ステップS113でNOと判定された場合、又はステップS115でYESと判定された場合に実行される。すなわち、ステップS112で加算された整数が素数で割り切れなかった場合、この加算された整数は素数となり、ステップS114で商N1が素数で割り切れた場合、この加算された整数は3個以上の素数に素因数分解可能となるので、ステップS116において、暗号化装置100は、この加算された整数を変更する処理を行う。具体的には、ステップS116では、暗号化装置100は、この加算された整数に対して1を加算する。この処理が終了すると、暗号化装置100は、処理をステップS112に移す。
【0073】
なお、図2に示すフローチャートで示す処理において、暗号化装置100は、暗号化する整数よりも大きい整数の中で、この暗号化する整数に最も近い整数(最小直近整数)を算出することとしたが、暗号化する整数よりも小さい整数の中で、この暗号化する整数に最も近い整数(最大直近整数)を算出することとしてもよい。
この場合、暗号化装置100は、S116における加算処理に代わり、減算処理を行う。
【0074】
図1に戻り、次いで、暗号化装置100は、ステップS120において、(A−1)と(B−1)との積をDに代入し、(A−1)と(B−1)の最小公倍数をKに代入する。
次いで、暗号化装置100は、ステップS130において、D又はKと素である整数Eを生成する。
次いで、暗号化装置100は、ステップS140において、次式(XI)の右辺の項(整数XiのE乗)が、計算手段の整数演算に桁あふれを発生するか否かを判定する。判定の結果がYESであればステップS150に進み、NOであればステップS130に戻る。
【数21】

桁あふれの検出は、計算手段が備えるCPUの内部動作の状況を記憶するための、CPUの特定のレジスタに含まれるフラグ(例えばステータスレジスタ又はコンディションレジスタ等に含まれるオーバーフローフラグ等)の値や、コンパイラ言語等により予めオペレーティングシステムに例外処理等を登録したときの当該例外処理の動作や、スクリプト言語又はコンパイラ言語等に付属するライブラリ等が備えるオーバーフローエラー処理を参照することにより行われる。また、桁あふれの検出はこれらの方法に限らず、適宜設計できる。
【0075】
次いで、暗号化装置100は、ステップS150において、次式(XII)に示される数式(XI)の展開形を用いて、整数Xiを暗号化した整数Yiを生成する。
【数22】

式中、Mは記数法の底である。Cdは下位の桁の数であり、1以上の値をとる。整数Xiの剰余計算は、このようにして置き換えたXu又はXdを用いて行われる。
【0076】
このように、暗号化装置100は、桁あふれを発生する条件で前述の数式(XI)のEを選択した後に、数式(XII)を用いてXiを展開し、桁あふれを避けて、暗号化した整数であるYiを生成する。
【0077】
一例として、10進数の暗号化における展開形を示す。記数法の底であるMを10とし、Xiの桁数を10桁、下位の桁数Ctを5桁とすると、数式(XII)は次式のように表される。
【数23】

【0078】
別の例として、2進数の暗号化における展開形を示す。記数法の底であるMを2とし、Xiの桁数を16桁、下位の桁数Ctを8桁とする場合、数式(XII)は次式のように表される。
【数24】

【0079】
例えば、暗号化装置100が16ビット幅のレジスタを有するCPUを備える場合に、元の整数Xiの値が10進数の65532等であると、Xiのべき乗の計算において、最も小さい整数のべき数でありうる2を用いた時点で、当該CPUが備える16ビット幅のレジスタを用いて表しうる整数の上限値65535を超えてしまう。すなわち、単に元の整数をそのままべき乗する通常の計算方法にしたがって数式(XI)の右辺に含まれるXiのE乗の計算を実施すると、正確なべき乗の値が得られない場合がある。
【0080】
これに対して、暗号化装置100は、数式(XII)又はその具体例である数式(XIII)若しくは数式(XIV)を用いて上位の桁と下位の桁を分離する。例えば、前述の整数Xiの値である65532を、2進数の1111111111111100(2)として表し、上位8桁と下位8桁等に分割し、上位8桁に含まれる整数11111111(2)(10進数の255)及び下位8桁に含まれる整数11111100(2)(10進数の252)を用い、255の2乗、255と252の積、252の2乗をそれぞれ計算すると、これらの整数の積はいずれも当該CPUが備える16ビット幅のレジスタを用いて表しうる整数の範囲内となる。32ビット幅のレジスタ、64ビット幅のレジスタ等についても同様である。
【0081】
したがって、前述の数式(XI)として表される整数Xiのべき乗の計算において、最も少ない回数である整数Xiの2乗の場合に、数式(XIV)の右辺の2乗からは、Xuの2乗、Xu・Xd、及びXdの2乗が生成され、これらはいずれも整数Xiのとりうる最大桁数以下の整数であるため、桁あふれが発生しない。すなわち、整数Xiの任意のべき乗において、数式(XII)の手順を繰り返すことにより、べき乗の計算過程での桁あふれを避けることが可能になる。
【0082】
分割する桁数は、計算手段等が備えるCPUの整数演算のためのレジスタのビット幅等に基づいて適宜設定できる。例えば、符号なし整数演算のためのレジスタのビット幅を等分した上位の桁数及び下位の桁数が、分割した桁数として用いられる。
【0083】
以上の諸段階により、整数Xiから、暗号化した整数であるYiを得られる。整数Yiを表すために必要なワード長は、整数Xiを表すためのワード長と同じでありうるが、これに限定せず、暗号化した整数Yiの用途等に応じて、又は他のセキュリティ手段又は方法等を組み合わせて、桁数を増す数字等を追加してもよく、あるいは整数Yiを文字に変換して適宜記号等を含む文字を任意に追加してもよい。
【0084】
次に、本実施形態に係る復号化の処理を、復号化装置110(図6)の動作として説明する。本実施形態に係る復号化の方法において、復号化装置110は、メモリデバイス等(図示せず)の記憶媒体を適宜用い、図1(b)のステップS200で変数領域を確保する。この変数領域の確保は、前述の暗号化装置100による暗号化の処理におけるステップS100と同様でもよい。あるいは、暗号化装置100及び復号化装置110を一体として構成し、メモリデバイス内の共通の変数領域を暗号化及び復号化の両方の諸段階に用いてもよい。
【0085】
次いで、復号化装置110は、ステップS210において、mを任意の整数として次の数式(XV)が成立するFを生成する。
【数25】

数式(XV)において、整数Fは、任意のmを含む右辺の数式(m×K+1)の因数であれば何でもよい。
【0086】
次いで、復号化装置110は、ステップS220において、次の数式(XVI)を用いて、暗号化したYiを整数Xnに復号化する。
【数26】

【0087】
本実施形態に係る整数を暗号化し復号化する方法において、暗号化装置100は、桁あふれを発生する条件で数式(XII)のEを選択する。本実施形態の方法を用いないコンピュータ装置等においては暗号化した整数Yiを正確に得ることができない。したがって、本実施形態に係る整数を暗号化し復号化する方法は、情報秘匿性の高い暗号化及び復号化を提供できる。
【0088】
また、本実施形態に係る整数を暗号化し復号化する方法において、暗号化装置100は、暗号化する整数の範囲に応じて計算条件を自動的に選択することにより計算を高速化することができると共に、計算条件を隠蔽することによりセキュリティをより高度に確保することができる。
【0089】
さらに、本実施形態に係る整数を暗号化し復号化する方法においては、暗号化の過程である数式(XI)に含まれず、復号化の過程である数式(XV)及び数式(XVI)に含まれる整数Fが第三者に知られにくい又は推定されにくいことに基づいて、高いセキュリティを確保することができる。
【0090】
図1に示した本実施形態に係る整数を暗号化し復号化する方法においては、個人を識別するための識別子等を整数型の識別子として受け付けて暗号化することができる。これに限定されず、本実施形態に係る整数を暗号化し復号化する方法においては、コンピュータ装置等が受け付けうる、種々のデータもまた暗号化及び復号化することができる。例えば、整数に変換した画像を本発明の方法を用いて暗号化及び復号化することにより、第三者に対する漏洩を保護した画像の伝達が可能になる。また例えば、記憶媒体の特定の記憶領域を参照するためのファイル割り当てテーブル等を本発明の方法を用いて暗号化及び復号化することにより、第三者に対する漏洩を保護した記憶媒体等を提供できる。これらの、本実施形態に係る整数を暗号化し復号化する方法を用いて提供できる記憶媒体等は、暗号化又は復号化の処理においてコンピュータネットワーク等を介する必要はなく、ネットワーク等から切り離されたオフライン状態でも暗号化及び復号化を実施可能である。したがって、本実施形態においては、通信技術と連携して動作するセキュリティ技術等と連携できると共に、当該セキュリティ技術とは独立して、単独で暗号化及び復号化の方法を提供することも可能である。
【0091】
[個人情報保護手順の例]
図3に、本発明の一実施形態に係る、整数を暗号化する方法を用いる個人情報保護手順の例を示す。
【0092】
暗号化装置100は、本実施形態に係る入力された整数から暗号化した整数を生成する装置である。具体的には、暗号化装置100としては、パーソナルコンピュータ、携帯型又は可搬型コンピュータ又は携帯電話端末等の、整数演算の処理が可能なコンピュータ機器が挙げられるが、これらに限定されない。
【0093】
暗号化装置100は、特定の個人20が有する識別のための数字及び/又は文字を含む識別子等を、整数型の識別子30として受け付ける。具体的には、個人20は、例えば事業体等に所属する構成員の1人であり、整数型の識別子30は当該事業体において複数の構成員を識別するために用いられる、複数の桁の整数を含む構成員識別子等である。例えば、構成員識別子の形態は、当該事業体等の所属が開始された年次を表す数字2桁及び同時期に所属を開始した他の構成員を含む複数の構成員のそれぞれに割り当てられた6桁の数字等からなる、全体として8桁の数字である。特定の個人20と整数型の識別子30とは1対1に関連付けられ、他の構成員とは関連付けられない。また、構成員識別子等が英文字等を含む場合、整数型の識別子30は、英文字及び数字の全体又はその一部をコンピュータ処理可能な文字コードの集まりとして扱われ、個々の文字コードを16進法の整数として、整数型の識別子30を構成される。本実施形態に係る整数を暗号化し復号化する方法においては、このように変換された16進法の整数を暗号化し、当該暗号化した16進法の整数から元のコンピュータ処理可能な文字コードの集まりを復号化する。構成員識別子等が画像データの場合についても、16進法の整数の集まりとして元の画像データを扱うことにより、同様に暗号化及び復号化が可能である。
【0094】
識別用途A(122)、識別用途B(124)及び識別用途C(126)は、整数型の識別子30を用いて特定の個人20を識別することが必要な任意の用途である。図1にはこれらの3つの識別用途を図示するが、識別用途の種類、個数等は、これらに限定せず、適宜設定できる。具体的には、これらの用途は、特定の個人20による電子メール送受信等を含む事業体内部のコンピュータネットワーク利用又は事業体と関連付けられるオンライン銀行業務又は保険サービス等の利用、あるいは事業体による特定の個人20の業務に係る記録行為等としてもよい。それぞれの識別用途A(122)、識別用途B(124)及び識別用途C(126)は、暗号化装置100において互いに他を区別するための情報を含んでもよい。例えば、識別用途Aの固有情報(62)、識別用途Bの固有情報(64)及び識別用途Cの固有情報(66)等は、互いに他と異なるようにしてもよい。例えば、これらの識別用途の固有情報は特定の整数の値でもよく、前述の数式(XI)に含まれるN又はEの値として、それぞれ独立して異なる値を用いてもよい。
【0095】
暗号化装置100は、受け付けた整数型の識別子30に対して、識別用途Aの固有情報(62)、識別用途Bの固有情報(64)又は識別用途Cの固有情報(66)を用い、それぞれの識別用途の固有情報ごとに独立して、暗号化計算A(72)、暗号化計算B(74)又は暗号化計算C(76)を実施する。当該暗号化計算には、前述のように、整数のべき乗を含む計算のために暗号化装置100が用いるコンピュータ装置等において桁あふれを発生する条件で、数式(XI)の展開形を用いて暗号化した整数を生成する諸段階が含まれる。当該暗号化計算の結果として、暗号化した整数A(42)、暗号化した整数B(44)又は暗号化した整数C(46)が生成される。
【0096】
暗号化した整数A(42)、暗号化した整数B(44)又は暗号化した整数C(46)のそれぞれは、独立して、対応する識別用途A(122)、識別用途B(124)又は識別用途C(126)のために提供される。
【0097】
例えば、識別用途A(122)が事業体内部のコンピュータネットワーク利用等である場合、暗号化装置100は、特定の個人20を識別するための整数型の識別子30に替えて暗号化した整数A(42)を、情報伝達経路A(82)を介して当該事業体のコンピュータネットワーク132等に提供する。なお、情報伝達経路A(82)は、例えば当該事業体内のローカルエリアネットワーク等としてもよい。
【0098】
また、例えば、識別用途B(124)が事業体による特定の個人20の業務に係る記録行為等である場合、暗号化装置100は、特定の個人20を識別するための整数型の識別子30に替えて暗号化した整数B(44)を、情報伝達経路B(84)を介して当該事業体の勤務管理記憶装置134等に提供する。なお、情報伝達経路B(84)は、例えば当該事業体の出入口等に適宜備えられた入構者記録のための端末装置及び記憶装置等としてもよい。
【0099】
これらのコンピュータ処理可能な数値データに限らず、暗号化装置100は、特定の個人20を識別するための整数型の識別子30に替えて暗号化した整数C(46)を、情報伝達経路C(86)を介して不特定の他者136等に提供することができる。情報伝達経路C(86)は、一般公衆回線等の任意の形式でもよい。例えば、不特定の他者136は、当該事業体と独立して運営される団体加入保険サービス業の受付担当者であり、当該事業体の構成員である特定の個人20は、情報伝達経路C(86)として一般公衆回線の電話等を用い、当該団体保健サービスにおいて自己を特定するための情報として、暗号化した整数C(46)を送信してもよい。この送信は、通話、ファクシミリ、電子メール等の任意の形態を含む。したがって、電話等の通話の音声がたまたま周囲にいる第三者に聞かれてしまう等の状況により、この送信の内容が無関係の第三者に傍受されても、本実施形態に係る暗号化装置100により暗号化した整数C(46)は、特定の個人20を識別するための整数型の識別子30とは異なる整数であるため、当該第三者は傍受内容から当該整数型の識別子30を知ることができない。すなわち、本実施形態に係る暗号化装置100を用いることにより、個人情報を漏洩から保護することが可能になる。
【0100】
このようにして、本実施形態に係る暗号化装置100においては、特定の個人20に関連付けられる整数型の識別子30から、識別用途ごとに異なる暗号化した整数を生成し、当該特定の個人20の個人情報を漏洩から保護することができる。
【0101】
さらに、本実施形態に係る暗号化装置100は、特定の識別用途において複数の構成員の識別子を一括して暗号化してもよい。
【0102】
また、暗号化装置100が受け付ける整数型の識別子30が個々の特定の個人20ごとに異なることにより、別個の整数型の識別子30ごとに、暗号化した整数が生成される。したがって、識別用途A(122)、識別用途Aの固有情報(62)及び暗号化計算A(72)が一定であっても、異なる整数型の識別子30を有する事業体内の複数の構成員等は、それぞれ異なる暗号化された整数A(72)を得ることができる。
【0103】
例えば、事業体のネットワーク管理者等は、識別用途Aの固有情報(62)をネットワークメンテナンスの日時等の特定の条件にしたがって選択することにより、当該事業体の複数の構成員のネットワークアカウント情報のそれぞれを別個に一括して暗号化できる。ネットワーク管理者等は識別用途Aの固有情報(62)を選択する条件を管理することにより、複数の構成員のアカウント情報を一括して暗号化して保持し、管理できる。さらに数式(XV)及び数式(XVI)に含まれる整数Fが第三者に知られにくい又は推定されにくいことにより、この値を知らない第三者に対して明示的なアカウント情報を隠蔽することが可能になる。
【0104】
本実施形態に係る暗号化装置100は、具体的にはパーソナルコンピュータ等で実行可能な汎用のワークシート等のアプリケーションに内蔵された整数計算ライブラリ等を用いて実装できる。したがって、本実施形態に係る整数を暗号化し復号化する方法においては、特に専用の計算機等を用意することなく、既存の計算機を用いて社員番号等の暗号化及び復号化を実施することも可能である。
本実施形態に係る方法を用いない第三者は、暗号化又は復号化のいずれかの諸段階において桁あふれが発生することにより正確な暗号化及び/又は復号化ができない。したがって、本実施形態の方法は、構成員の識別子等の個人情報を、このような第三者に対する漏洩から保護することが可能になる。
【0105】
このように、本実施形態に係る暗号化装置100は、特定の個人と関連付けられた識別番号等が漏洩する状況においても、同一の識別番号と関連付けられた他の複数の個人情報に対する第三者からの推定を極めて困難にできるという効果がある。また、本実施形態に係る暗号化装置100によれば、同一の個人情報等から複数の異なる暗号化した情報を生成して使い分けることが可能になる。さらに、本実施形態に係る暗号化装置100によれば、音声による通話又は印刷物等の文書等を含む多様な形態で個人情報を漏洩から保護することが可能になる。
【0106】
[個人情報保護手順の別の例]
図4に、本発明の一実施形態に係る、整数を暗号化する方法を用いる個人情報保護手順の別の例を示す。図3と共通する箇所は説明を省略する。
【0107】
図4においては、暗号化装置100は、特定の個人20から受け付けた整数型の識別子30に対して、追加の桁37を適宜追加する。この追加の桁の形式は、整数型の識別子30と同様に整数である。追加の桁37の桁数は何桁でもよく、例えば2桁、3桁、又は4桁等でもよい。追加の桁37は、整数型の識別子30に対して左側から追加してもよく右側から追加してもよい。あるいは、整数型の識別子30を予め定めた桁において分割し、追加の桁37を挿入してもよく、追加の桁37の追加の態様は適宜設定できる。また、追加の桁37の値は何でもよく、本実施形態に係る整数の暗号化及び復号化を利用する事業体又はシステム等により任意に用意されてもよく、あるいは整数型の識別子30から予め定めた手順により生成してもよい。例えば、整数型の識別子30の各桁の数字の和を算出した値の下位2桁等を、追加の桁37としてもよい。さらに、追加の桁37は、識別用途A(122)、識別用途B(124)及び識別用途C(126)等に依存してそれぞれの識別用途ごとに独立して用意されてもよい。
暗号化装置100は、追加の桁37を追加することにより、整数型の識別子30及び追加の桁37に含まれる各桁の数字を含む新たな整数である、桁増しした識別子38を生成する。
【0108】
一例として、桁増しした識別子38は、整数型の識別子30の右に追加の桁37を追加した数字の集まりが表す、1つの整数として生成される。例えば、整数型の識別子30が8桁の整数であり、追加の桁37が2桁の整数である場合、桁増しした識別子38は10桁の整数である。桁増しした識別子38の値は次式で表される。
【数27】

式中、X38は桁増しした識別子38の値、X30は整数型の識別子30の値、X37は追加の桁37の値であり、Mは記数法の底である。例えば、これらの整数が10進法の整数であるときには、X38の値はX30を100倍してX37を加えた値である。記数法は10進法に限らず、2進法、8進法又は16進法等を任意に用いることができる。桁増しする桁の数は、2桁に限らず、適宜設定できる。
【0109】
追加の桁37を含む桁増しした識別子38に対する暗号化の処理は、図1に示した一実施形態のフロー図、又は図3に示した実施形態の識別用途に依存して実施される暗号化の手順等と同様である。すなわち、図4に示す形態の暗号化の処理により生成される暗号化した整数は、コンピュータネットワーク132又は勤務管理記憶装置134等を用いてコンピュータ処理可能なデータとして生成してもよく、不特定の他者136が知りうる音声又は出版物等の形態で生成してもよい。
【0110】
一実施形態において、構成員の生年月日に含まれる数字等を識別子として利用する事業体等は、本実施形態に係る整数を暗号化し復号化する方法を用い、当該構成員の生年月日に含まれる数字等に追加して、任意の2桁の数字を追加の桁37として組み合わることが可能である。これにより、生年月日が同一の構成員が複数存在しても、任意の2桁の数字が相互に異なれば、生成する暗号化された数字を互いに異なるようにすることができる。当該事業体等は、追加の桁37を用いることにより、暗号化した整数を用いて構成員を識別することができる。
【0111】
このように、予め定めた桁数に追加の桁37を追加することにより、暗号化の処理に入力される整数は、特定の個人20等が有する識別のための情報そのものではなくなる。よって、暗号化装置100においては、桁を追加して得られる整数を暗号化することにより、特定の個人20等の個人情報をさらに漏洩から保護した暗号化が可能になる。
【0112】
[個人情報保護手順のまた別の例]
図5に、本発明の一実施形態に係る、整数を暗号化する方法を用いる個人情報保護手順のまた別の例を示す。図3又は図4と共通する箇所は説明を省略する。
【0113】
図5においては、暗号化装置100は、乱数発生手段39及びオフセット情報40を含む。
【0114】
暗号化装置100は、整数型の定数であるオフセット情報40を、整数型の識別子30に対して加算又は減算する。例えば、整数型の識別子30が整数Xiであり、オフセット情報40が整数Tであるときに、暗号化装置100は、整数Xiに代えて、整数(Xi+T)又は整数(Xi−T)を、暗号化の処理の入力とする。オフセット情報40は、元の整数への復号化の段階において、暗号化における加算又は減算の逆の処理として、減算又は加算されることにより、整数型の識別子30が正しく復元される。オフセット情報40は、定数に限らず、暗号化装置100が1つの整数型の識別子30を受け付けて動作するごとに、毎回異なる値とすることもできる。例えば、暗号化装置100は、乱数発生手段39を用いて乱数を発生させ、当該発生した乱数に基づいてオフセット情報40を生成してもよい。
【0115】
別の例としては、暗号化装置100は、後述する換字式暗号化(図6)の鍵R(数式(XVIII))の値を生成するために、乱数発生手段39を用いてもよい。
【0116】
また別の例としては、暗号化装置100は、後述するべき剰余及び換字式を重畳する暗号化(図6)において、ループカウンタL(図6)の値を生成するために、乱数発生手段39を用いてもよい。
【0117】
また別の例としては、暗号化装置100は、公開鍵暗号化技術における公開鍵に対して、オフセット情報40を用いてオフセットした公開鍵を生成してもよい。具体的には、オフセット情報40が整数Tであるときに、数式(XI)に含まれる変数Eを決定した後に、整数(E+T)又は整数(E−T)を、公開鍵としてもよい。したがって、オフセット情報40(すなわち整数T)が加算又は減算されていることを知らない第三者が解読のためにこの公開鍵を用いることは無駄な手順となる。したがって、オフセット情報40を公開鍵に併用することにより、暗号化された整数等の情報の秘匿性をさらに高めることができる。
【0118】
また別の例としては、暗号化装置100は、上述の乱数発生手段39及びオフセット情報40の両者を用いて、整数型の識別子30を暗号化することもできる。
図5においては、識別用途A(122)、識別用途B(124)及び識別用途C(126)等のそれぞれに対応する暗号化の過程を、整数型の識別子30から、暗号化した整数A(42)、暗号化した整数B(44)及び暗号化した整数C(46)へのそれぞれ独立した矢印として表している。暗号化装置100は、これらのそれぞれについて、独立して乱数発生手段39又はオフセット情報40を用いる。したがって、それぞれの識別用途ごとに生成した、暗号化した整数A(42)、暗号化した整数B(44)又は暗号化した整数C(46)は、乱数発生手段39を用いて発生した乱数の情報、オフセット情報40、及び本発明のいずれかの実施形態に係る暗号化の情報の全てを正確に用いなければ、いずれも正しく復号化することができない。このように、本実施形態に係る個人情報保護手順においては、正確な復号化のための情報の種類をより多く必要とすることで、周知の公開鍵暗号化技術等に比較して、さらに秘匿性を高めることができる。
【0119】
[復号化の手順の例]
図6に、本発明の一実施形態に係る、暗号化した整数の復号化手順の例を示す。
【0120】
復号化装置110は、暗号化装置100が生成した暗号化された整数を復号化するための装置である。具体的には、復号化装置110としては、パーソナルコンピュータ、携帯型又は可搬型コンピュータ又は携帯電話端末等の、整数演算の処理が可能なコンピュータ機器が挙げられるが、これらに限定されない。
【0121】
図6においては、説明の簡潔化のためにコンピュータ処理可能な数値に関し、図3を示して説明した暗号化装置100が生成した暗号化した整数A(42)及び/又は暗号化した整数B(44)に対する復号化を説明するが、通話又は文書等の形態で伝達される暗号化した整数の復号化についても同様である。図3と共通する箇所は説明を省略する。
【0122】
図6は、本実施形態に係る復号化装置110が、暗号化した整数A’(52)及び/又は暗号化した整数B’(54)を受け付け、整数型の復号化した識別子40を生成することを示す。ここで、暗号化した整数A’(52)は、整数型の識別子30に対して暗号化装置100が暗号化計算A(72)を用いて生成した暗号化した整数A(42)が、情報伝達経路A(82)を介してコンピュータネットワーク132等に伝達された後に、さらに情報伝達経路A’(102)を介して本実施形態に係る復号化装置110に伝達したものである。したがって、暗号化した整数A’(52)は、暗号化した整数A(42)と同一である。同様に、暗号化した整数B’(54)は、暗号化した整数B(44)と同一である。
【0123】
復号化装置110は、暗号化した整数A’(52)及び暗号化した整数B’(54)に対して、図1に示したステップS200からステップS220の諸段階を実施し、整数型の復号化した識別子40を生成する。
【0124】
暗号化した整数A’(52)は、暗号化装置100による暗号化計算A(72)において、識別用途A(122)の固有情報(62)を用いて生成した暗号化した整数A(42)である。固有情報(62)は、前述の数式(XI)に含まれるN又はEの値、及びKの値でありうる。よって、復号化装置110は、暗号化計算A(72)において用いられたEの値及びKの値を、固有情報(92)として復号化計算A(112)に用いることができる。同様に、復号化装置110は、暗号化計算B(74)において用いられたEの値及びKの値を、固有情報(94)として復号化計算B(114)に用いることができる。
【0125】
なお、固有情報(92)及び/又は固有情報(94)は、予め復号化装置110が格納してもよく、予め定められた手順にしたがって暗号化装置100又は復号化装置110の一方又は両方が生成してもよい。
【0126】
図6は、情報伝達経路A(82)、情報伝達経路B(84)、情報伝達経路A’(102)及び情報伝達経路B’(104)としてコンピュータ処理可能な数値を伝達されるネットワーク等の情報伝達経路を示すが、これらに限らず、暗号化した整数は、音声又は文書等を含む任意の伝達経路又は伝達手段を介して、暗号化装置100から復号化装置110に向かって伝達することが可能である。
【0127】
本実施形態に係る整数を暗号化し復号化する方法は、これらの伝達経路又は伝達手段を介して伝達される暗号化された整数に対して、桁あふれを発生する条件における暗号化に用いた特定の数値で復号化することによってのみ、元の整数を得られるという特徴がある。したがって、伝達経路又は伝達手段等にアクセスする可能性のある第三者は当該個人情報を正確には復号化できず、当該個人情報は、漏洩から保護される。
【0128】
図6には、暗号化装置100及び復号化装置110のそれぞれを別個に示したが、暗号化装置100及び復号化装置110は、一体化されてもよい。暗号化した整数を伝達する伝達経路又は伝達手段等の形態は、コンピュータネットワークでもよく、一般公衆回線の電話を含む通話、ファクシミリ、電子メール等の形態でもよい。それぞれの伝達経路又は伝達手段に依存して、1つの整数型の識別子30から独立して別個に暗号化した整数を生成してもよく、さらに図4に示した追加の桁37を適宜用いて整数型の識別子30を加工した後に暗号化してもよく、図5に示したようにオフセット情報40又は乱数発生手段39を併用してもよい。このようにして、本実施形態に係る整数を暗号化し復号化する方法においては、構成員識別子等の1つの識別子から、当該識別子を用いる各種の情報伝達手段ごとに、個人情報を秘匿した別個の整数を提供できる。
【0129】
暗号化又は復号化の処理は、暗号化装置100及び復号化装置110等のコンピュータ装置を用いて自動的に実施できるので、本実施形態に係る方法のユーザはこれらの手順を特に意識することなく、自己の個人情報を秘匿した整数を自己の識別子に用いることができる。
【0130】
[べき剰余と換字式とを重畳する暗号化の処理]
図7及び図8に、本発明の別の実施形態に係る、整数を暗号化し復号化する方法のフロー図を示す。図7は、本発明の別の実施形態に係る、整数を暗号化する方法のフロー図であり、図8は、当該暗号化した整数を復号化する方法のフロー図である。具体的には、図7及び図8に示す方法は、べき剰余と換字式とを重畳する暗号化及び復号化の処理を含む。図1に示した実施形態と重複する箇所は説明を省略する。
【0131】
まず、図7を参照し、暗号化の処理を暗号化装置100(図3)の動作として説明する。
暗号化装置100は、図7のステップS300で変数領域を確保する。具体的には、暗号化装置100は、次の表2に列挙する変数を用いる計算のために、メモリ領域を適宜確保する。表2に示す変数は、表1に示した変数に、Zi、R、L及びTを追加したものである。変数Ziは、前述の変数Yiと同様に設定できる。
【表2】

【0132】
また、ステップS300では、暗号化装置100は、次ループカウンタL等の初期設定を適宜実施する。例えば、べき剰余を用いる暗号化及び換字式暗号化の組み合わせを全体として3回繰り返す場合に、暗号化装置100は、ステップS300においてループカウンタLに整数3を設定する。
【0133】
ループカウンタLは、べき剰余を用いる暗号化及び換字式暗号化のいずれとも独立した変数であり、暗号化による秘匿性の強度に影響し、暗号化及び復号化の計算時間に影響する場合がある。ループカウンタLには、秘匿性の強度を確保するために、予め下限を設定してもよい。さらに、ループカウンタLには、暗号化及び復号化の計算処理にかかる時間を短縮するために、予め上限を設定してもよい。したがって、ループカウンタLの値は、予め設定された下限及び/又は上限の範囲にしたがって設定できる。ループカウンタLを第三者に秘密とすることで、それぞれの暗号化の方法における秘匿性に加えて、第三者の解読の手間はさらに膨大となりうる。したがって、本発明の別の実施形態に係る整数を暗号化し復号化する方法においては、元の整数に対して極めて高い秘匿性を与えることができる。
【0134】
また、ステップS300では、暗号化装置100は、べき剰余を用いる暗号化に含まれる変数であるオフセットT及び任意の整数m、並びに換字式暗号化に含まれる変数である鍵Rも同様に、第三者に秘密となるように選択する。これらの値の選択には、例えば、図5に示した乱数発生手段39を用いることもできる。
【0135】
ステップS310は、S311からS315の各ステップを含む。これらのステップは、それぞれ、図1(a)に示したステップS110からステップS150の処理と同等である。図5に示したように、暗号化する整数Xiは、オフセットTを用いて、整数(Xi+T)又は整数(Xi−T)に置き換えた後に、ステップS110からステップS150の処理に用いられてもよい。ステップS315の処理の後には、べき剰余により暗号化されたYiが生成される。
【0136】
暗号化装置100は、ステップS320に含まれる換字式暗号化の処理を順次実施する。ステップS320は、S321及びS322を含む。まず、暗号化装置100は、ステップS321において、鍵Rで整数Yiを換字式暗号化し、整数Ziを生成する。例えば、整数Ziは、次式で表される。
【数28】

式中、Rは換字式暗号化の鍵として用いる整数であり、Rot()は鍵Rを用いて整数Yiを換字式暗号化する関数である。具体的には、Rot()は、十進法等の記数法を用いて整数Yiを記述して得られる数字の並びを文字列として扱う、公知のシーザー暗号化を実施するものである。
【0137】
例えば、Rot()では、シーザー暗号化における鍵Rを整数3として、十進数の数字1文字からなる集合{0,1,2,3,4,5,6,7,8,9}の各要素に鍵Rを加算し、集合{3,4,5,6,7,8,9,0,1,2}の各要素を同一の順番で対応させて換字する。また、Rot()は、シーザー暗号化とは異なって、ランダムな順序を用いる情報又は所定の数字の並び方の情報等と関連付け、対応させる集合はランダムな順序又は所定の数字の並び方とするものでもよい。また、Rot()は、元の集合の一部の要素に対して鍵Rを用いる換字式暗号化を実施してもよく、当該一部の要素の選択には乱数を用いてもよく、当該一部の要素以外の残りの要素に対して公開鍵暗号化を含む任意の暗号化を実施してもよい。また、Rot()は、これらに限定せず、記数法の桁の数字を予め用意した規則にしたがって、可逆的かつ一対一に対応するように換字し、整数Yiを整数Ziに変換することができる。これらの換字式暗号化は、ループカウンタLに依存せずに毎回実施してもよく、ループカウンタLに依存して、初回のみ又は偶数回のみ等、Lの所定の値に基づいて実施してもよい。
【0138】
例えば、換字式暗号化の処理において、英字アルファベットを26進数の1桁の数字として扱い、unix(登録商標)オペレーティングシステムが備える文字列をシーザー暗号化するためのrot13関数等を利用してもよい。また例えば、このrot13関数が有する鍵である、整数の13に換えて任意の1桁の整数を鍵に用い、同様の関数を10進数の整数に対するシーザー暗号化の関数として定義して用いてもよい。
【0139】
次いで、ステップS322において、暗号化装置100は、必要であれば桁数の情報を保持する。例えば、暗号化装置100は、換字式暗号化により生成した整数Ziの最上位がゼロである場合に、この情報を変換前の整数Yiの桁数として保持する。当該保持した桁数の情報は、後述する復号化の処理において生成する整数の確認のために用いられてもよい。
【0140】
次いで、ステップS330において、暗号化装置100は、ループカウンタLをデクリメントする。さらに、ステップS340において、暗号化装置100は、ループカウンタLが0以下であるかどうかを判定する。判定の結果がYESであれば処理を終了し、NOであればステップS350に進み、上述の数式(XVIII)から生成した整数Ziを整数Xiとして、ステップS310に戻る。
なお、繰り返しにおいて、変数A、B、D、Kは同じ値を再利用してもよい。変数E及びFの対も同じ値を再利用してもよいが、より好適には、ループカウンタLの値に依存して変数E及びFの対を変化することにより、第三者による解読をさらに困難にすることが可能になる。
【0141】
このようにして、暗号化装置100は、ステップS340の判定がYESになるまで、上述のステップS310及びステップS330を繰り返す。全ての繰り返しの後に得られた整数Ziが、最終的に暗号化された整数である。例えば、ループカウンタLを3とした場合には、上述のステップS310及びステップS320が3回繰り返される。
【0142】
したがって、暗号化装置100は、所定の回数だけ、ステップS310に含まれる、べき剰余を用いる暗号化の処理、及びステップS320に含まれる換字式暗号化の処理を続けて繰り返す。なお、べき剰余を用いる暗号化の処理と換字式暗号化の処理とは、全体を入れ替えてもよい。
【0143】
このように、本実施形態に係る整数を暗号化する方法においては、べき剰余を用いる暗号化の処理と換字式暗号化の処理とを重畳して用いることにより、いずれかの暗号化のみを用いる場合と比較して、極めて高い秘匿性を確保することが可能になる。
【0144】
[べき剰余と換字式とを重畳する復号化の処理]
次に、復号化の処理を、復号化装置110の動作として説明する。図1(b)に示した復号化の処理と共通する箇所は説明を省略する。本発明の別の実施形態に係る整数を復号化する方法において、復号化装置110は、図8のステップS400で変数領域を確保し、ループカウンタLを初期化する。
【0145】
ステップS410において、復号化装置110は、換字式暗号を復号化する処理を実施する。ここで、復号化の対象になる数は、図7を用いて前述した、最終的に暗号化された整数Ziである。
【0146】
ステップS410は、ステップS411及びステップS412の各ステップを含む。ステップS411では、復号化装置110は、必要に応じて整数Ziの桁数の情報を復元する。これは、単に暗号化の過程において保持した情報との照合のために行われてもよい。ステップS412にでは、復号化装置110は、換字式暗号の復号化を実施し、整数Ziから整数Yiを生成する。例えば、整数Yiは次式により復号化される。
【数29】

式中、Rot−1()は、換字式暗号化により生成した整数Ziを、鍵Rを用いて元の整数Yiに復号化する関数である。
【0147】
次いで、ステップS420において、復号化装置110は、べき剰余を用いる復号化の処理を実施する。ステップS420は、ステップS421及びステップS422の各ステップを含む。これらの処理は、それぞれ、図1(b)に示したステップS210及びステップS220の処理と同等である。ステップS420の処理では、べき剰余により復号化されたXnが生成される。
【0148】
ステップS430において、復号化装置110は、ループカウンタLをデクリメントする。ステップS440において、復号化装置110は、ループカウンタLが0以下であるかどうかを判定する。復号化装置110は、判定の結果がYESであれば処理を終了し、NOであれば処理をステップS450に進める。
【0149】
ステップS450において、復号化装置110は、前述の数式(XVI)から生成される整数XnをZiとして、ステップS410に戻る。このようにして、復号化装置110は、ステップS440の判定がYESになるまで上述の諸段階を繰り返す。全ての繰り返しの後に得られた整数Xnが、最終的に復号化された整数である。
【0150】
したがって、復号化装置110は、ステップS410に含まれる換字式暗号を復号化する処理、及びステップS420に含まれるべき剰余を用いる復号化の処理を、続けて繰り返し実行する。なお、換字式暗号を復号化する諸段階と、べき剰余を用いる復号化の処理とは、暗号化の処理の逆順であればよく、全体を入れ替えてもよい。
【0151】
このように、本実施形態に係る整数を復号化する方法においては、換字式暗号を復号化する処理とべき剰余を用いる復号化の処理とを重畳して用いることができる。本実施形態の復号化においては、対応する暗号化の処理により暗号化された整数Ziから、元の整数Xiと等しい整数Xnが復号化される。
【0152】
[鍵をランダムに選択する暗号化の処理]
図9及び図10に、本発明のまた別の実施形態に係る、整数を暗号化し復号化する方法のフロー図を示す。図9は、本発明のまた別の実施形態に係る、整数を暗号化する方法のフロー図であり、図10は、当該暗号化した整数を復号化する方法のフロー図である。具体的には、図9及び図10に示す方法は、べき剰余と換字式とを重畳する暗号化及び復号化の処理を含み、べき剰余による暗号化の鍵である整数Eをランダムに選択する処理を含む。図1又は図7に示した実施形態と重複する箇所は説明を省略する。
【0153】
まず、図9を参照し、暗号化の処理を、暗号化装置100(図3)の動作として説明する。
ステップS500では、暗号化装置100は、変数領域を確保する。このステップS500において用いられる変数は、前述の表2に示した変数と同等である。このステップS500において、暗号化装置100は、前述のようにループカウンタL等の初期設定を適宜実施してもよい。なお、暗号化装置100は、べき剰余を用いる暗号化に含まれる他の変数であるオフセットT、任意の整数m、及び換字式暗号化に含まれる変数である鍵Rも同様に、第三者に秘密となるように選択する。また、これらの値の選択において、暗号化装置100は、例えば、図5に示した乱数発生手段39を用いる。
【0154】
変数領域を確保した後、ステップS510では、暗号化装置100は、べき剰余を用いて暗号化する処理を実施する。
ステップS510は、S511からS515の各ステップを含む。これらのうち、ステップS511、S512、S514及びS515は、図7に示したステップS311、S312、S314及びS315とそれぞれ同等である。
【0155】
ステップS513では、暗号化装置100は、D又はKと素である数の集合からランダムにEを選択する。例えば、D又はKと素である数の集合の各要素を大きさにしたがって昇順に配列し、配列した要素数を上限として整数型の乱数を発生させ、発生した乱数を配列の順番とする要素を選択して、整数Eとする。
【0156】
なお、暗号化する整数Xiは、図5に示したように、オフセットTを用いて、整数(Xi+T)又は整数(Xi−T)に置き換えられた後に、ステップS511からステップS515の処理に用いられてもよい。
【0157】
以上の処理により、暗号化装置100は、元の整数Xiから、べき剰余を用いて暗号化した整数であるYiを生成できる。
【0158】
さらに、暗号化装置100は、ステップS520に含まれる換字式暗号化の処理を順次実施する。ステップS520は、図7に示したステップS320と同等である。後続のステップS530、S540及びS550は、それぞれステップS330、S340及びS350と同等であり、説明を省略する。ステップS540の判定がYESであれば、最終的に暗号化された整数として整数Ziが生成される。
【0159】
[鍵をランダムに選択する復号化の処理]
次に、復号化の処理を、復号化装置110(図3)の動作として説明する。
ステップS600において、復号化装置110は、変数領域を確保し、ループカウンタLを初期化する。この変数領域の確保は、前述の暗号化の処理におけるステップS500と同様である。
【0160】
次いで、復号化装置110は、ステップS610に含まれる換字式暗号を復号化する処理を実施する。ここで、復号化の対象になる数は、図9に示した暗号化の処理において生成された、暗号化された整数Ziである。
ステップS610は、図8に示したステップS410と同等である。
【0161】
ステップS620では、復号化装置110は、YnをXnに復号化する処理を行う。ステップS620は、S621及びS622の各ステップを含む。
ステップS621では、復号化装置110は、前述の数式(XV)を成立する整数Fを生成するために、式中のmをランダムな規則によって選択する。
ステップS622では、復号化装置110は、ステップS621にて生成された整数Fにより、数式(XVI)を用いてYnをXnに復号化する。
【0162】
ステップS610及びステップS620を続けて実施した後の、ステップS630からステップS650の処理は、前述の図7に示したステップS430からステップS450の処理と同等であり、説明を省略する。ステップS640の判定がYESであれば、最終的に復号化された整数として整数Xnが生成される。
【0163】
このように、本実施形態は、暗号化における整数Eの選択、及び復号化における整数mの選択のそれぞれをランダムな選択とすることができる。したがって、本実施形態の暗号化及び復号化の手順を正確に実行しなければ、暗号化された整数Ziから復号化された整数Xnを得ることはできず、本実施形態の方法は、これらの手順を知らない第三者に対して極めて高い秘匿性を有することができる。
【0164】
[多桁の整数の暗号化の処理]
図11及び図12に、本発明のさらに別の実施形態に係る、整数を暗号化し復号化する方法のフロー図を示す。図11は、本発明のさらに別の実施形態に係る、整数を暗号化する方法のフロー図であり、図12は、当該暗号化した整数を復号化する方法のフロー図である。具体的には、図11及び図12に示す方法は、多桁の整数の上位桁及び下位桁を分割する処理、及び分割した整数部分を関連付ける情報を保持する処理を含む。
【0165】
まず、図11を参照し、暗号化の処理を、暗号化装置100(図3)の動作として説明する。図1(a)、図7又は図9に示した実施形態と重複する箇所は説明を省略する。
【0166】
ステップS700において、暗号化装置100は、変数領域を確保する。このステップS700において用いられる変数は、前述の表2に示した変数と同等である。後続するステップS710からステップS740の処理は、前述のステップS110からステップS140のそれぞれと同等である。
【0167】
ステップS750において、暗号化装置100は、数式(XI)の展開形を用いて、整数Xiを暗号化した整数Yiを生成する。数式(XI)の展開形としては、前述の数式(XII)を用いられる。
【0168】
なお、暗号化装置100は、入力の整数Xiを20桁の10進数Xとして扱い、次式を用いて、5桁の10進数で表される4個の整数部分に分割するようにしてもよい。
【数30】

式中、X15は20桁の整数Xの20位から16位、X10は15位から11位、Xは10位から6位、Xは5位から1位をそれぞれ含む、それぞれ5桁の10進数である。すなわち、暗号化装置100は、20桁の10進数Xを、5桁の10進数として表されるX15、X10、X及びXからなる4個の整数部分に置き換える。なお、整数Xは、19桁等の20桁に満たない整数でもよく、上位の桁をゼロ詰めして表してもよい。また、分割する桁数は、計算手段等が備えるCPUの整数演算のためのレジスタのビット幅等に基づいて適宜設定してもよい。
【0169】
ステップS750における展開形を用いる暗号化では、2個の整数の積を、次式のように置き換えて展開できる。一例として、2個の整数として整数P及びQを示す。式中、P及びQはそれぞれ20桁の10進数として表し、上位の桁に数字が存在しない場合はゼロ詰めしてもよい。
【数31】

数式(XXI)のように展開することにより、分割された整数部分同士の積である式中の各項に含まれるP1515、P1510等はいずれも倍精度型の精度の範囲にある。したがって、本実施形態におけるステップS750の展開形では、倍精度型の整数演算を正確に行うことができる。
【0170】
なお、数式(XXI)と同様に、2個の素数A及びBの積であるNを次式のように表してもよい。式中、素数A及びBはそれぞれ20桁の10進数として表し、上位の桁に数字が存在しない場合はゼロ詰めしてもよい。
【数32】

したがって、本実施形態においては、素数A及びBもまた、倍精度型の整数の範囲を超える20桁の整数等から選択することができる。
【0171】
以上の諸段階により、整数Xiから、べき剰余を用いて暗号化した整数であるYiが得られる。整数Yiを表すために必要なワード長は、元の整数Xiを表すためのワード長と同じであるが、これに限定せず、暗号化した整数Yiの用途等に応じて、又は他のセキュリティ手段又は方法等を組み合わせて、桁数を増す数字等を追加してもよい。また、あるいは整数Yiを文字に変換して適宜記号等を含む文字を任意に追加してもよい。
【0172】
次いで、ステップS760において、暗号化装置100は、上述のように分割したそれぞれの整数部分を関連付ける情報を保持する。具体的には、暗号化装置100は、分割前の整数に対するそれぞれの整数部分の桁の情報を保持する。例えば、暗号化装置100は、分割前の整数Xに対して、整数部分であるX15、X10、X、及びXのそれぞれが、整数Xの20位から16位、15位から11位、10位から6位、及び5位から1位であることの情報が保持する。
【0173】
本実施形態においては、積N及び展開形に含まれるそれぞれの整数部分を関連付ける情報が保持され、互いに関連付けられる。本実施形態においては、それぞれの整数部分は別個に暗号化され復号化される独立した整数ではなく、全体が1つの整数として暗号化され復号化される。したがって、本実施形態においては、第三者による解読のための手がかりを増すことなく、情報を保護することが可能になる。
【0174】
本実施形態においては、桁ごとに差分を算出することにより、積Nに対する剰余を求めてもよい。一例として、次式に、2個の整数PQの積のNに対する剰余を例示する。次式のように計算することにより、差分を表す各項は、PQの積のみで表される整数部分に比較して、より小さな整数になりうるので、計算を高速化できる場合がある。
【数33】

【0175】
[多桁の整数の暗号化の処理]
図12を参照して、多桁の整数の復号化を、復号化装置110の動作として説明する。図1(b)、図8又は図10に示した実施形態と重複する箇所は説明を省略する。
【0176】
ステップS800において、復号化装置110は、変数領域を確保する。この変数領域の確保は、前述の暗号化の処理におけるステップS700と同様でもよい。
【0177】
ステップS810において、復号化装置110は、整数部分を関連付ける情報を復元する。この情報は、図11のステップS760において保持された、整数部分を関連付ける情報である。したがって、ステップS810の動作により、複数の整数部分に対して、それぞれに関連付けられた桁の情報が復元される。例えば、整数部分であるX15、X10、X、及びXのそれぞれが、任意の整数Xの20位から16位、15位から11位、10位から6位、及び5位から1位であることの情報が復元され、分割前の整数Xの桁を正しく再現することが可能になる。
【0178】
次いで、ステップS820において、復号化装置110は、mを任意の整数として前述の数式(XV)を成立するFを生成する。この処理は、ステップS210と同等である。
次いで、ステップS830において、復号化装置110は、数式(XVI)を用いて暗号化されたYiをXnに復号化する。この処理は、ステップS220と同等である。
【0179】
このようにすることで、本実施形態においては、倍精度型の整数の範囲を超える20桁の整数等を復号化することができる。
【0180】
[個人情報保護手順の形態]
図13に、本発明の一実施形態に係る、整数を暗号化する方法を用いる個人情報保護手順のさらに別の例を示す。図13に示す例は、図3から図5に示した例に対して、保護する個人情報を表す整数が、倍精度型の整数の範囲を超えることができることが異なる。図3から図5に示した例と共通する箇所は、説明を省略する。
【0181】
図13において、暗号化装置100は、特定の個人20が有する識別のための数字及び/又は文字を含む識別子等を、整数型の識別子30として受け付ける。ここで、整数型の識別子30は、倍精度型の整数の範囲を超える、例えば20桁の整数とすることができる。
【0182】
暗号化装置100は、受け付けた整数型の識別子30の桁を分割し、整数部分32、34を生成する。図13には、整数型の識別子30から2個の整数部分32、34が生成されることを示すが、これに限定されず、生成される整数部分の個数は2個以上であれば何個でもよい。好適には、それぞれの整数部分32、34は、倍精度型の整数の範囲内にあり、例えば、それぞれは64ビットの2進数を用いて表すことのできる整数である。
【0183】
例えば、整数型の識別子30は20桁の10進数の整数である場合、暗号化装置100は、この識別子30を、5桁ごとに4個の10進数の整数に分割し、それぞれの整数部分の桁の情報35を保持する。このような桁の分割のためには、例えば、数式(XX)に示した桁の分割の方法を用いられる。この分割においては、それぞれの整数部分を関連付ける、桁の情報35が保持される。桁の情報35は、分割前の整数Xに対して、数式(XX)に表される整数部分X15、X10、X、及びXのそれぞれが、整数Xの20位から16位、15位から11位、10位から6位、及び5位から1位であることの情報である。
【0184】
暗号化装置100は、このようにして生成した整数部分及び桁の情報35に対して、図11に示した暗号化を行い、暗号化した整数A(42)、暗号化した整数B(44)又は暗号化した整数C(46)を生成する。
【0185】
本実施形態に係る個人情報保護手順においては、上述のように桁の情報35を保持して整数部分を暗号化することができ、多桁の整数によって表される情報を暗号化できる。したがって、本実施形態に係る暗号化装置100においては、このような方法によらない第三者に対して、個人情報の秘匿性を極めて高く確保することができる。
【実施例】
【0186】
(実施例1:ワークシートの内部関数を用いる実装例)
図14に、本発明の一実施形態に係る、暗号化及び復号化の方法の諸段階をスプレッドシート形式の計算アプリケーションパッケージを用いて実装する例を示す。
【0187】
図14に示す暗号化及び復号化計算ワークシート200は、複数の行及び列の形態に配列されるセルを含む、スプレッドシート形式の計算アプリケーションのデータファイルである。暗号化及び復号化計算ワークシート200に含まれる個々のセルは、1組の行番号及び列番号を用いて特定される。例えば、1行1列目のセルは暗号化の入力値としての整数Xi(入力Xi)を格納するために用いられる。同様に、11行5列目のセルには暗号化した整数Yiを、19行5列目のセルには復号化した整数Xnがそれぞれ格納される。1つのセルに格納させる値又は計算式の種類、数等は適宜設定できる。また、1つのセルに配列等を定義して複数の定数、変数又は計算式を任意に含むことも可能である。
【0188】
図14に示す、暗号化及び復号化計算ワークシート200において、1行1列目のセルと11行5列目のセルとを対角とする長方形状の領域は、図1に示したステップS100からステップS150における暗号化の処理に係る計算のために用いられる。
【0189】
2行1列目のセル及び2行2列目のセルには、2個の素数A及びBが格納される。ここで、2つの素数A及びBは、積ABと整数Xiとの差が所定範囲内である条件で生成される。具体的には、2つの素数A及びBは、図2に示される処理により、積ABが整数Xiよりも大きい整数の中で、最も整数Xiと近いもの(最小直近整数)、となるように生成される。なお、2つの素数A及びBは、積ABが整数Xiよりも小さい整数の中で、最も整数Xiに最も近い整数(最大直近整数)となるように生成されてもよい。
2行3列目のセルは、積ABと整数Xiとの差が所定範囲内であることの判定のために用いられる。図14に示す例においては、この所定範囲を整数Xiの数値に対する1%以内の差として予め設定することを示している。すなわち、積ABと整数Xiとの差の絶対値が、Xiの1%以内であるかどうかが判定される。積AB、すなわち、A及びBの積は、前述の数式(XI)におけるNであり、Nは本実施形態に係る整数の暗号化に含まれる剰余計算の底である。
【0190】
3行1列目のセルは、(A−1)と(B−1)の積であるD値を格納するために用いられる。
4行1列目のセルは、(A−1)と(B−1)の最小公倍数であるK値を格納するために用いられる。
5行1列目のセルは、D又はKと素である整数E(E値)を格納するために用いられる。
【0191】
6行1列目のセルは、整数XiのE乗の値を格納するために用いられる。
6行2列目のセルは、この整数XiのE乗がワークシートの整数演算においてオーバーフローを発生しているか否かを判定するために用いられる。例えば、当該オーバーフローが発生することは、6行1列目の値がスプレッドシート形式の計算アプリケーションパッケージにおいて取り扱い可能な範囲を超えていることを表す「エラー」等の文字等により表され、6行2列目のセルには、当該エラーに対応して論理値の偽を表す数値等が格納される。
【0192】
7行1列目のセルは整数Xiの展開形のために用いられるが、これに限らず、整数Xiを展開することを表すフラグ又はメモ等の文字でもよい。
7行2列目及び8行2列目のセルは、図1に示したステップS150又は数式(XIII)、数式(XIV)又は数式(XVII)を用いて記載した、記数法の桁を分割して入力Xiから生成した整数を格納するために用いられる。例えば、7行2列目は上位桁から生成した整数であり、8行2列目は下位桁から生成した整数である。
【0193】
9行1列目のセルには、「展開形のべき乗」という文字列が含まれ、後続の又は近傍のセルにおいて、上位桁及び下位桁から生成した整数を用いるべき乗の計算が行われることを示している。
【0194】
9行2列目のセルには、上位桁から生成した整数同士の積が格納される。
10行2列目のセルには、上位桁及び下位桁の積が格納される。
11行2列目のセルには、下位桁から生成した整数同士の積が格納される。
【0195】
11行3列目のセルには、前述の9行2列目から11行2列目に格納された積の和が格納される。この積の和は、A及びBの積である積Nを底とする剰余計算の剰余を含む。
10行4列目のセルには、11行3列目の値に対するNの商を格納する。
11行4列目のセルには、11行3列目の値に対するNの剰余を格納する。
11行5列目のセルには、暗号化の出力である整数Yi(出力Yi)を格納する。
【0196】
12行1列目のセルと19行5列目のセルとを対角とする長方形状の領域は、図1に示したステップS200からステップS220における復号化の処理に係る計算のために用いられる。
【0197】
12行1列目のセルには、前述の数式(XVI)に含まれる任意の整数mが格納される。
13行1列目のセルには、前述の数式(XVI)を成立する整数Fが格納される。
14行1列目のセルには、前述の数式(XVI)に含まれる整数YiのF乗の値が格納される。
【0198】
14行2列目のセルは、この整数YiのE乗がワークシートの整数演算においてオーバーフローを発生しているか否かを判定するために用いられる。例えば、このオーバーフローは、スプレッドシート形式の計算アプリケーションパッケージにおいて、14行1列目の値が取り扱い可能な範囲を超えていることを表す「エラー」等の文字等により表される。14行2列目のセルには、当該エラーに対応して、論理値の偽を表す数値等が格納される。
【0199】
15行1列目のセルは整数Yiの展開形のために用いられるが、これに限らず、Yiを展開することを表すフラグ又はメモ等の文字でもよい。
15行2列目及び16行2列目のセルには、記数法の桁を分割して整数Yiから生成した整数が格納される。例えば、15行2列目は上位桁から生成した整数であり、16行2列目は下位桁から生成した整数とすることができる。
【0200】
17行1列目のセルは、上位桁及び下位桁から生成した整数を用いるべき乗の計算のために用いられる。
17行2列目のセルには、上位桁から生成した整数同士の積が格納される。
18行2列目のセルには、上位桁及び下位桁の積が格納される。
19行2列目のセルには、下位桁から生成した整数同士の積が格納される。
19行3列目のセルには、前述の17行2列目から19行2列目に格納された積の和が格納される。すなわち、当該積の和は、A及びBの積である積Nを底とする剰余計算の剰余を含む。
【0201】
18行4列目のセルには、19行3列目の値に対する積Nの商が格納される。
19行4列目のセルには、19行3列目の値に対する積Nの剰余が格納される。
19行5列目のセルには、復号化の出力であるXnが格納される。Xnは、1行1列の入力Xiと同一となる。
【0202】
このように、本実施形態に係る整数を暗号化し復号化する方法の諸段階は、べき乗及び剰余計算を実施可能なスプレッドシート形式の計算アプリケーションパッケージに実装できる。したがって、当該スプレッドシート等の実装手段をインストールしたパーソナルコンピュータ等を用いて、本実施形態に係る整数を暗号化し復号化する方法を実施でき、スプレッドシート形式のデータとして本実施形態に係る整数を暗号化し復号化する方法の実施手段を提供できる。
【0203】
(実施例2:ワークシートによる暗号化及び復号化の計算例)
図15に、本発明の一実施形態に係る、暗号化及び復号化の方法の諸段階をスプレッドシート形式の計算アプリケーションパッケージに実装して計算する例を示す。例示の計算においては、スプレッドシート形式の計算アプリケーションパッケージとしてマイクロソフト社製エクセル2003(登録商標)を用いた。このアプリケーションソフトウェアは、−1×10307〜1×10307の範囲の数値を扱うことが可能であるが、内部関数等の演算結果がこの範囲にない数値を発生する場合は「#num!」等のエラーメッセージを表示する。したがって、該エラーメッセージにより、このアプリケーションソフトウェアでは取り扱えない桁あふれした数値が発生したことを知ることができる。
【0204】
図15に示したスプレッドシートの各セルは、本実施形態に係る整数の暗号化及び復号化の処理を実行するために、図14を用いて説明したワークシートの各セルに対応する計算式をそれぞれ含む。
【0205】
図15に示すワークシート計算例210においては、1行1列目のセルと11行5列のセルを対角とする長方形状の領域は、入力の整数を暗号化する諸段階に係る計算のために用いられる。
【0206】
1行1列目のセルは、入力値としての整数Xiを格納するために用いられる。この例では、入力整数を10進法の「9999912345」が入力されている。
【0207】
2行1列目のセル及び2行2列目のセルには、2個の素数A及びBが生成されて格納される。これらの素数は、前述の図14の2行3列目に示した、積ABと入力Xiとの差が、入力Xiの数値に対する1%以内であるという条件を満たすように、生成される。図15に示す例においては、素数Aとして「13」を、素数Bとして「769230769」が生成されている。素数の生成としては、例えば、整数Xiを最大値とする整数の区間に対して通常の素数判定法の計算を行うことが挙げられるが、これに限定されない。素数判定法の計算は、例えば、エクセル2003(登録商標)等のアプリケーションが備えるマクロ言語プログラム等によって実行してもよい。
【0208】
2行3列目のセルには、生成された素数A及びBが、積ABとXiとの差が所定範囲内であるという条件を満たしているという情報が示される。図15に示す例においては、これらの2個の素数A及びBの積(N)は「9999999997」であり、積ABと入力Xiとの差の入力Xiに対する比率、すなわち|AB−Xi|/Xiの値は約8.8×10^(−6)であり、1%未満である。したがって、図15に示す例において生成された素数A及びBは、本実施形態に係る整数の暗号化の方法に必要な条件を満たしている。
【0209】
3行1列目のセルには、(A−1)及び(B−1)の積であるD値として「9230769216」が表示される。
4行1列目のセルには、最小公倍数を計算するための内部関数であるLCM関数を用いて、(A−1)と(B−1)の最小公倍数であるK値として「769230768」が表示される。
5行1列目のセルには、D値又はK値と素である整数Eとして「11114323」が表示される。整数Eは、予め整数Eとして採用されうる任意の個数の候補を適宜用意し、上記のように計算されたD値及びK値のそれぞれに対して1以外の公約数を有するかどうかを、最大の公約数を計算するための内部関数であるGCM関数を用いて判定し、この判定に基づいて選択される。なお、整数Eの選択は、これに限定されず、整数Eが、D値又はK値と素である条件を満たすように選択されればよく、適宜設定できる。
【0210】
6行1列目のセルには、整数XiのE乗の値が表示されるが、図15に示す例においてはアプリケーションソフトウェアでは取り扱えない桁あふれした数値が発生することにより、「#num!」というエラーメッセージが表示される。したがって、上述の手順により設定した素数A、素数B、D値、K値、及び整数Eは、本実施形態に係る整数の暗号化の方法を用いて入力の整数Xiを暗号化するための条件を満たしている。
6行2列目のセルは、6行1列目のセルにおいて桁あふれが発生したことを表示する。例えば、6行2列目のセルは、6行1列目のセルの計算結果が、計算可能な正の整数の範囲を超えることを条件として、「桁あふれ」等の所定の文字列が表示される。例えば、この所定の文字列の表示により、本実施形態に係る整数の暗号化の方法のための条件が満たされたことを、計算方法の利用者に通知してもよい。
【0211】
7行1列目のセルは、図15においては整数Xiを表す。
7行2列目及び8行2列目のセルは、図15においては、整数Xiの上位5桁及び下位5桁のそれぞれを表す。
【0212】
9行2列目のセルには整数Xiの上位桁の2乗を、10行2列目には上位桁及び下位桁の積の2倍を、11行2列目には下位桁の2乗を、それぞれ表す。すなわち、9行2列目から11行2列目の3つのセルは、整数Xiのべき乗の最も少ない回数である2乗について、前述の数式(XIII)等に示した展開形に含まれる式の値を含む。
【0213】
11行3列目のセルには、この展開形に含まれる式の値を、10進法の桁を有する1つの整数として表す。具体的には、図15の例では、9999800001×1010+2468975310×10+152399025の結果である、「99998246907683399025」が表示される。
【0214】
10行4列目には、11行3列目の値を2行3列のセルの値(積N)で除した商「9999824693」が表示され、11行4列目にはこのときの剰余「7682873104」が表示される。なお、10行4列目の商は、本実施形態に係る暗号化の過程においては後続の計算で用いないため、表示を省略してもよい。
【0215】
なお、整数Xiの3乗に対する剰余の値は、11行4列目の値と1行1列の値(整数Xi)との積を、2行3列目のセルの値(積N)で除して得ることができる。4乗以上についても同様であり、整数Xiを乗ずる回数が整数Eに達するまで、この処理を繰り返すことで、最終的に、11行5列のセルに、暗号化した整数Yiが得られる。図15の例では、整数「2655731903」が得られたことを示す。
【0216】
図15に示すワークシート計算例210においては、12行1列目のセルと19行5列目のセルを対角とする長方形状の領域は、復号化の処理に係る計算のために用いられる。
【0217】
12行1列目のセル、及び13行1列目のセルには、前述の数式(XV)に含まれる任意の整数m及び整数Fが、それぞれ表示される。これらのm及びFは、数式(XV)を満たすものであればよい。図15の例では、整数mとして「1219862」が、整数Fとして「84427579」が表示される。例えば、整数m及び整数Fは、予め整数Fとして用いうる任意の個数の候補を用意し、暗号化の段階に用いたE値及びK値に基づいて、数式(XV)を満たすように、選択することができる。
【0218】
14行1列目のセルには、前述の数式(XVI)に含まれるYiのF乗の値が表示されるが、暗号化の過程に含まれるべき乗の計算と同様に、桁あふれした数値が発生することによって、「#num!」というエラーメッセージが表示される。したがって、この例において、上述の手順により設定された整数Fは、本発明の実施形態に係る暗号化した整数の復号化の方法を用いて、暗号化した整数Yiを復号化するための条件を満たしている。
【0219】
14行2列目のセルには、14行1列目のセルにおいて桁あふれが発生したことが表示される。これは暗号化の過程における6行2列目のセルと同様である。
15行1列目のセルには、暗号化した整数Yiが表される。
15行2列目及び16行2列目のセルは、暗号化した整数Yiの上位5桁及び下位5桁のそれぞれが表される。
【0220】
17行2列目のセルには、暗号化した整数Yiの上位桁の2乗が表される。
18行2列目のセルには、上位桁及び下位桁の積の2倍が表される。
19行2列目のセルには、下位桁の2乗が表される。
これらの、17行2列目から19行2列目の3つのセルは、暗号化した整数Yiのべき乗の最も少ない回数である2乗について、前述の数式(XVI)の展開形に含まれる式の値を含む。
19行3列目のセルには、この数式(XVI)の展開形に含まれる式の値が、10進法の桁を有する1つの整数として表される。具体的には、図15の例では、705274249×1010+1694495942×10+1017801409の結果である、「7052911940612001409」が表示される。
【0221】
18行4列目には、19行3列目の値を2行3列目のセルの値(積N)で除した商「705291194」が表示され、19行4列目にはこのときの剰余「2727874991」が表示される。なお、18行4列目の商は、本実施形態に係る暗号化の過程においては後続の計算で用いないため、表示を省略してもよい。
【0222】
なお、整数Yiの3乗に対する剰余の値は、19行4列目の値と17行2列目の値(Yi)との積を、2行3列目のセルの値(N)で除して得ることができる。4乗以上についても同様であり、暗号化した整数Yiを乗ずる回数が整数Fに達するまで、この処理を繰り返すことで、最終的に、19行5列目のセルに、復号化した整数Xnが得られる。図15の例では、整数Xnとして、「999912345」が得られたことが示され、これは整数Xiと一致し、暗号化された整数Yiから整数Xiが復号化されたことを表している。
【0223】
したがって、本実施形態に係る整数の暗号化及び復号化の方法の諸段階を用いることにより、暗号化の処理及び復号化の処理のいずれにおいても計算過程で桁あふれが発生する条件で、入力の整数Xiを暗号化して暗号化した整数Yiが得られ、暗号化した整数Yiから復号化した整数Xnが得られる。整数Xnは、整数Xiと等しいので、本実施形態に係る整数の暗号化及び復号化の方法は、整数Xiを暗号化し、整数Xnとして正確に復号化することができる。
【0224】
このように、本実施形態に係る整数の暗号化及び復号化の方法は、計算過程において桁あふれを発生する条件において、元の情報を正確に復元することができる。本発明の方法を用いない計算手段等においては、正しい暗号化も復号化も実施できない。したがって、本実施形態に係る整数の暗号化及び復号化の方法及び該方法の実施手段等は、個人情報等と関連する整数の形態の情報に対して高い秘匿性を提供できる。
【0225】
(実施例3:べき剰余と換字式の重畳を用いる暗号化の実装例)
図16及び図17は、本発明の実施形態に係る、べき剰余と換字式の重畳による暗号化及び復号化の処理を、スプレッドシート形式の計算アプリケーションパッケージを用いて実装する例を示す図である。簡潔な記載のため、べき剰余と換字式の重畳の処理の実装例を主に説明し、鍵のランダムな選択、及び多桁の整数の暗号化及び復号化の処理について、該当する箇所ごとに追加的に説明する。
【0226】
図16は、べき剰余と換字式の重畳を用いる暗号化の処理を、スプレッドシート形式の計算アプリケーションパッケージを用いて実装する例を示す図である。前述の実装例と重複する箇所は説明を省略する。
【0227】
図16に示す暗号化計算ワークシート220に含まれる、2行1列目から15行1列目の領域は、図7に示したステップS300における変数領域を確保するために用いられる。2行2列目から15行(2n+1)列の領域は、図7に示したステップS310及びステップS320の繰り返しのために用いられる。図16には、変数A、B、D、Kはそれぞれ同じ値が繰り返して用いられ、変数E、F、Tはループカウンタに依存して繰り返しの各回において変化する例を示している。
【0228】
2行1列目のセルは、暗号化の整数Xiを格納するために用いられる。1列目の他のセルには、べき剰余を用いる復号化における素数A及びB、(A−1)と(B−1)との積D及び最小公倍数K、公開鍵及び秘密鍵の対である整数Ei及び整数Fi、換字式暗号化鍵Ri、オフセットTi、ループカウンタL等が、それぞれ格納される。
【0229】
3行1列目のセル及び4行1列目のセルは、2個の素数A及びBを格納するために用いられる。また、例えば3行2列目のセル等を用いて、2つの素数A及びBの積と整数Xiとの差が所定範囲であることの判定を、図14における2行3列目のセルのように表示してもよい。
【0230】
7行1列目のセルは、(A−1)と(B−1)の積であるDを格納するために用いられる。
8行1列目のセルは、(A−1)と(B−1)の最小公倍数であるKを格納するために用いられる。
9行1列目のセルは、D又はKと素である整数Eiを格納するために用いられる。このときに、整数Eiは、図9のステップS513のように、ランダムな規則によって選択されてもよい。
11行1列目のセルは、前述の数式(XV)を成立する整数Fiを格納するために用いられる。
13行1列目のセルは、換字式暗号化の鍵Riを格納するために用いられる。
14行1列目のセルは、オフセットTiを格納するために用いられる。
15行1列目のセルは、ループカウンタLを格納するために用いられる。
【0231】
10行目の各セルは、整数Eiによるべき乗がワークシートの整数演算においてオーバーフローを発生しているかどうかを表示するために用いられる。
12行目の各セルは、整数Fiによるべき乗がワークシートの整数演算においてオーバーフローを発生しているかどうかを表示するために用いられる。
これらのセルは、例えば、図14における6行2列目のセルと同様にして設定できる。
【0232】
暗号化計算ワークシート220による暗号化の処理においては、これらの整数Eiによるべき乗又は整数Fiによるべき乗がオーバーフローを発生することを条件として、式(XI)の展開形を用いて、べき剰余により暗号化された整数Yiが得られる。具体的には、1行2列目の整数Xiに対して、14行2列目のオフセットT1を用いてオフセットした整数から、暗号化した整数として2行2列目に整数Y1を得ることができる。このときに、当該べき剰余を用いる暗号化から生じる公開鍵E1及び秘密鍵F1が、それぞれ9行2列、11行2列に格納される。
【0233】
なお、添え字iを伴う変数は配列でもよい。すなわち、1個のセルに割り当てられるEi、Fi、Ri及びTiのそれぞれは、{E1,E2,…,En}、{F1,F2,…,Fn}、{R1,R2,…,Rn}及び{T1,T2,…,Tn}等の配列又は配列の形式を用いる数列(漸化式又は任意の関数により各項を定義してもよい)でもよく、暗号化計算ワークシート220の行ごとにこれらの配列に含まれる個々の整数を取り出して用いてもよい。
【0234】
図16に示す暗号化計算ワークシート220において、2列目は、1回目のべき剰余を用いる暗号化のために用いられる。
2行2列目のセルには、べき剰余を用いる暗号化を1回実施して得られた整数Y1が格納される。
他の2列目のセルには、べき剰余を用いる暗号化の処理から生じた変数の値が格納される。例えば、9行2列目には公開鍵E1、11行2列目には秘密鍵F1、14行2列目にはオフセットT1がそれぞれ格納される。
【0235】
3列目は、1回目の換字式暗号化のために用いられる。
2行3列目のセルには、Y1から換字式暗号化により得られた整数Z1が格納される。
他の3列目のセルには、換字式暗号化の処理から生じた変数の値が格納される。例えば、13行3列目には換字式暗号化の鍵R1が格納される。
また、15行3列目のセルには、1回デクリメントされたループカウンタ(L−1)が格納される。
【0236】
このようにして、整数Xiから、1回目のべき剰余を用いる暗号化、及び1回目の換字式暗号化が行われた結果として、2列目にはべき剰余を用いる暗号化により得られたY1、E1、F1、及びT1が格納され、3列目には換字式暗号化により得られたZ1、R1、及びデクリメントされたループカウンタ(L−1)が格納される。
【0237】
デクリメントされたループカウンタ(L−1)の値がゼロ以下である場合は、暗号化の処理は終了する。デクリメントされたループカウンタ(L−1)の値がゼロより大きければ、2行3列目のZ1の値を、2行1列目の整数Xiの値のように取り扱い、べき剰余を用いる暗号化の諸段階及び換字式暗号化の諸段階を繰り返す。これにより、2行5列目にZ2として、2回目に暗号化した整数を得られる。
【0238】
このようにして、暗号化計算ワークシート220においては、べき剰余と換字式を重畳した暗号化が繰り返される。この暗号化は、15行目のループカウンタがゼロ以下となることを条件として終了する。2行(2n+1)列には、整数Znとして、暗号化した整数が得られる。
【0239】
なお、暗号化計算ワークシート220において、2行1列目のセルには1個の整数Xiを格納することもできるが、配列の形式を用いて数列{X1,X2,X3,…,Xk}を格納してもよい。例えば、整数Xiを複数の桁に分割し、それぞれの桁ごとの整数部分と各整数部分の桁の情報35(図13)とを要素とする数列を、整数Xiに代えて2行1列目のセルに格納してもよい。このようにすることで、暗号化計算ワークシート220は、例えば20桁の整数等の多桁の整数を入力とすることも可能である。
【0240】
図17は、換字式とべき剰余の重畳を用いる復号化の処理を、スプレッドシート形式の計算アプリケーションパッケージを用いて実装する例を示す図である。前述の実装例と重複する箇所は説明を省略する。
【0241】
図17に示す復号化計算ワークシート230において、2行1列目から15行1列目の領域は、図8に示したステップS400における変数領域の確保及びループカウンタLの初期化のために用いられる。2行2列目から15行(2n+1)列目の領域は、図8に示したステップS410及びステップS420の繰り返しのために用いられる。
【0242】
2行1列目のセルは、復号化の整数Zi(入力Zi)を格納するために用いられる。1列目の他のセルには、前述の図16に示した暗号化における変数と同一の変数が格納される。すなわち、変数A、B、D、K、Ei、Fi、Ri、Tiとして、すでに用いられたそれぞれの値を再利用できる。
【0243】
復号化計算ワークシート230においては、暗号化と逆の手順により、暗号化された整数から元の整数が復号化される。例えば、べき剰余及び換字式の暗号化がこの順番の組み合わせで繰り返された場合、対応する復号化は、換字式及びべき剰余の復号化の順番で同じ回数だけ繰り返すことにより行われる。
【0244】
まず、1回目の換字式復号化を用いて、整数Ziを変換する手順を説明する。換字式復号化においては、2行1列目に格納された整数Znが、2行2列目の整数Ynに変換される。この換字式復号化の鍵は13行2列目のRnであり、当該Rnは対応する暗号化に用いられた、図16の暗号化計算ワークシート220における13行(2n+1)列目のRnである。
【0245】
次いで、復号化計算ワークシート230において、2行2列目の整数Ynに対し、1回目のべき剰余による復号化を行い、さらにオフセットを消去して、2行3列目に整数Xn−1が得られる。べき剰余の指数には11行3列目のFnが用いられる。数式(XV)を成立するmは、図10のステップS621のように、ランダムな規則によって選択されてもよい。オフセットの値としては14行3列目のTnが用いられる。
【0246】
1回目のべき剰余による復号化により整数Xn−1が得られた後に、復号化計算ワークシート230においては、15行1列目のループカウンタLがデクリメントされ、15行3列目に(L−1)が格納される。このデクリメントされたループカウンタ(L−1)がゼロ以下である場合は、復号化の処理は終了する。デクリメントされたループカウンタ(L−1)がゼロより大きければ、2行3列目のXn−1の値を上述の2行1列目のZiの値のように取り扱い、換字式復号化の諸段階及びべき剰余を用いる復号化の諸段階を繰り返す。これにより、2行5列目にXn−2として、2回目に復号化した整数を得られる。
【0247】
10行目及び12行目の各セルは、図16の暗号化計算ワークシート220と同様に、オーバーフローが発生したかどうかを表示するために用いられる。
【0248】
このようにして、復号化計算ワークシート230においては、換字式とべき剰余を重畳する復号化が繰り返される。この復号化は、15行目のループカウンタがゼロ以下となることを条件として終了する。2行(2n+1)列目には、整数X1として、復号化した整数が得られる。この整数X1は、図16に示した暗号化計算ワークシート220の2行1列に入力された元の整数Xiと等しくなる。
【0249】
図16に示した暗号化計算ワークシート220、及び図17に示した復号化計算ワークシート230は、暗号化及び復号化の計算過程において桁あふれを発生する条件の元で、正確に暗号化及び復号化を行うことができる。本発明の実施形態に係る暗号化及び復号化を用いない計算手段等においては、正しい暗号化も復号化も実施することはできない。さらに、べき剰余に加えて換字式暗号化及び復号化を重畳することにより、本発明の実施形態においては、情報の秘匿性を飛躍的に高めることができる。
【0250】
[複数の識別情報を保護する例]
一例として、6桁の10進数の整数を用いて、1万人のユーザのそれぞれを識別する場合を示す。6桁の整数によって、識別子の数は100万通りとすることが可能である。したがって、6桁の整数のうち、1万通りの整数には1万人のユーザを個々に独立して関連付けることができ、99万通りの整数には特定のユーザとの関連付けを行わないようにすることができる。
【0251】
識別子は、本発明のいずれかの実施形態によって、暗号化し復号化することができる。識別子の暗号化は、所与の識別子に対して1つずつ暗号化された識別子を生成する計算を繰り返すことによって行うことができる。例えば、1万人のユーザのそれぞれに対する、このような識別子の暗号化は、識別子を生成する計算を人数と同じ回数だけ実施することにより行われる。
【0252】
ユーザ数が増加する場合を想定すると、まだユーザに割り当てられていない識別子についても、暗号化された識別子を予め用意することが望ましい場合がある。このような予備的な暗号化を含む暗号化された識別子の生成は、例えば、次の手順によって実行することができる。
【0253】
(暗号化された識別子の生成−1)最初に、1万人のユーザの暗号化前の識別子について、識別子とユーザとを対応させたテーブルを作成する。ユーザに割り当てられていない99万通りの整数についても、特定のユーザとの関連付けのないテーブルを作成する。
(暗号化された識別子の生成−2)次いで、個々のユーザの識別子から、暗号化された識別子を生成し、生成した暗号化された識別子を前述のテーブルにおいてユーザと関連付ける。ユーザに割り当てられていない99万通りの整数についても、暗号化された整数との関連付けが行われる。
(暗号化された識別子の生成−3)1万人のユーザの暗号化された識別子ごとに、復号化の鍵が関連付けられる。ユーザに割り当てられていない99万通りの整数についても、復号化のための鍵との関連付けが行われる。
【0254】
このようにして、まだユーザに割り当てられていない整数に対しても、本発明のいずれかの実施形態に係る暗号化及び復号化の方法を適用して、暗号化された識別子と、これを復号化するための鍵とを生成することができる。したがって、ユーザ数が増加する状況においても、予め生成された暗号化された識別子及び鍵を用いて、増加したユーザの個人情報等を保護することができる。
【0255】
[解読のための所要時間]
本発明の実施形態に係る整数を暗号化する方法を用いて生成した整数に対して、解読の可能性を総当たりにより探索する場合の所要時間を例示する。これは、いわゆるブルート・フォース・アタック(総当たり攻撃)を用いて秘密情報を解読し、元の情報を特定するために要する計算時間である。
【0256】
コンピュータの計算能力が毎秒1ペタフロップス、すなわち1秒間に10の15乗命令数であると仮定すると、当該コンピュータは1年間に約10の22乗命令数を実行することが可能である。
【0257】
本発明の、べき剰余と換字式を重畳する実施形態に係る整数を暗号化する方法において、元の整数が6桁の10進数であり、べき剰余を用いる暗号化及び換字式暗号化を重畳して実行する場合を考える。暗号化において、この重畳した暗号化を5回繰り返すと、当該暗号化に含まれる独立した五重の換字式暗号化のみの組み合わせの総数は、10の30乗(すなわち、10の6乗の5乗)であり、前述のコンピュータによる総当たり計算の所要時間は約10の8乗年(すなわち約1億年)と算出できる。本発明に係る暗号化の方法においては、さらに五重の独立したべき剰余を用いる暗号化が重畳され、これらの暗号化に用いる鍵は乱数発生手段によりランダムに選択することもできるので、総当たりによる解読の所要時間は1億年をはるかに超える天文学的数字の時間となりうる。
【0258】
このように、本発明の実施形態においては、べき剰余と換字式を重畳して複数回繰り返し暗号化を実行することにより、元の整数から、極めて秘匿性の高い暗号化した整数を生成することができる。本発明においては、第三者による解読の手間を膨大化することにより、守秘情報を参照するための識別情報等を高い秘匿性で保護することができる。
【0259】
以上、本発明の実施形態を用いて説明したが、本発明の技術的範囲は上記実施形態に記載の範囲には限定されない。上記実施形態に、多様な変更又は改良を加えることができる。そのような変更又は改良を加えた形態も本発明の技術的範囲に含まれうることが、特許請求の範囲の記載から明らかである。
【0260】
本発明に係る整数を暗号化及び復号化する方法、装置、システム等は、コンピュータネットワーク技術等の、既存の情報伝達技術等と組み合わせることができ、そのように組み合わせた技術もまた、本発明の技術範囲に含まれる。同様に、本発明の技法を含む情報記録システム、情報管理システム、情報処理システム等も、本発明の技術範囲に含まれる。さらに、本発明の技法は、暗号化及び復号化の処理を、FPGA(現場でプログラム可能なゲートアレイ)、ASIC(特定用途向け集積回路)、これらと同等のハードウェアロジック素子、プログラム可能な集積回路、又はこれらの組み合わせが格納できるプログラムの形態、すなわちプログラム製品として提供できる。具体的には、入出力、データバス、メモリバス、システムバス等を備えるカスタムLSI(大規模集積回路)の形態として、本発明に係る暗号化及び復号化装置等を提供でき、そのように集積回路に格納されたプログラム製品の形態も、本発明の技術範囲に含まれる。
【符号の説明】
【0261】
20 特定の個人
30 整数型の識別子
37 追加の桁
40 整数型の復号化した識別子
42、44、46、52、54 暗号化した整数
62、64、66、92、94 固有情報
72、74、76 暗号化計算
82、84、102、104 情報伝達経路
100 暗号化装置
110 復号化装置
112、114 復号化計算
122、124、126 識別用途

【特許請求の範囲】
【請求項1】
整数Xiを暗号化し復号化する方法であって、
2つの素数A及びBを生成するステップであって、前記素数A及びBの積であるNと前記整数Xiとの差が所定の範囲内となるような前記素数A及びBを生成するステップと、
(A−1)と(B−1)との積をDとし、(A−1)と(B−1)の最小公倍数をKとし、D又はKと素である数をEとして、次式において前記整数XiのE乗が計算手段の整数演算に桁あふれを発生する条件で、次式の展開形を用いて前記整数Xiを暗号化した整数Yiを生成する、べき剰余による暗号化ステップと、
【数1】

mを任意の整数として次式を成立するFを用意するステップと、
【数2】

次式を用いて前記暗号化した前記整数Yiを整数Xnに復号化する、べき剰余による復号化ステップと、を含む、整数を暗号化し復号化する方法。
【数3】

【請求項2】
前記べき剰余による暗号化ステップにおいて、前記展開形は前記整数Xiの桁を2つに分割し、前記分割した桁の上位の桁により表される整数Xu及び前記分割した下位の桁により表される整数Xdを生成し、次式を用いて前記整数Xiを置き換えることであり、
【数4】

式中、Mは記数法の底であり、Cdは前記下位の桁の数であり、Cdは少なくとも1であり、前記整数Xu又は前記整数Xdを用いて剰余計算を実施する、請求項1に記載の整数を暗号化し復号化する方法。
【請求項3】
前記2つの素数A及びBを生成するステップは、さらに、
前記積であるNが前記整数Xiに最も近くなるように前記2つの素数A及びBを選択するステップを含む、請求項1に記載の整数を暗号化し復号化する方法。
【請求項4】
前記整数Xiは、識別子に含まれる文字又は数字の一部又は全体から、可逆的に変換された整数である、請求項1に記載の整数を暗号化し復号化する方法。
【請求項5】
前記整数Xiは、1次元画像又は2次元画像から可逆的に変換された1次元画像の一部又は全体から、可逆的に変換された整数である、請求項1に記載の整数を暗号化し復号化する方法。
【請求項6】
さらに、暗号化に先立って、前記整数Xiを、少なくとも1つの桁を前記整数Xiに対して追加することにより桁を増した整数Wiに置き換えるステップを含む、請求項1に記載の整数を暗号化し復号化する方法。
【請求項7】
さらに、復号化の後に、復号化した前記整数Wiから追加した少なくとも1つの桁を除去するステップを含む、請求項6に記載の整数を暗号化し復号化する方法。
【請求項8】
さらに、前記整数Xiを変換した整数Yiを生成する前に、前記整数Xiから前記整数Xi以下の整数Tを加算して前記整数Xiと置き換えるステップと、
前記変換した整数Yiを整数Xnに復号化した後に、前記整数Xnに前記整数Tを減算して前記整数Xnと置き換えるステップと、を含む、請求項1に記載の整数を暗号化し復号化する方法。
【請求項9】
前記べき剰余による暗号化ステップにより前記整数Xiを前記整数Yiに変換した後に、換字式暗号化を用いて前記整数Yiを整数Ziに変換する、べき剰余と換字とを連続する暗号化ステップと、
換字式復号化を用いて前記整数Ziを前記整数Yiに復号化した後に、前記べき剰余による復号化ステップにより前記整数YiをXnに復号化する、換字とべき剰余とを連続する復号化ステップと、を含み、
前記べき剰余と換字とを連続する暗号化ステップ、及び前記換字とべき剰余とを連続する復号化ステップは、少なくとも1以上の同一の回数だけ実施される、請求項1に記載の整数を暗号化し復号化する方法。
【請求項10】
換字式暗号化を用いて前記整数Xiを整数Yiに変換した後に、前記べき剰余による暗号化ステップにより前記整数Yiを前記整数Ziに変換する、換字とべき剰余とを連続する暗号化ステップと、
前記べき剰余による復号化ステップにより前記整数ZiをYnに復号化した後に、換字式復号化を用いて前記整数Yiを前記整数Ziに復号化する、べき剰余と換字とを連続する復号化ステップと、を含み、
前記換字とべき剰余とを連続する暗号化ステップ、及び前記べき剰余と換字とを連続する復号化ステップは、少なくとも1以上の同一の回数だけ実施される、請求項1に記載の整数を暗号化し復号化する方法。
【請求項11】
さらに、前記べき剰余による暗号化ステップにおいて、前記整数XiのE乗が計算手段の整数演算に桁あふれを発生する条件で、前記Eをランダムな規則により選択するステップを含む、請求項1に記載の整数を暗号化し復号化する方法。
【請求項12】
さらに、前記積Nの桁を少なくとも二つに分割して前記積Nから少なくとも二つの整数部分を生成するステップと、
前記積N及び前記展開形に含まれるそれぞれの整数部分を関連付ける情報を保持するステップと、を含み、
前記べき剰余による暗号化ステップにおいて、前記展開形は、前記整数Xiの桁を少なくとも二つに分割して前記整数Xiから少なくとも二つの整数部分として生成され、
前記べき剰余による復号化ステップにおいて、前記整数Xnは、前記保持した前記それぞれの整数部分を関連付ける情報に基づいて前記整数Yiから復号化される、請求項1に記載の整数を暗号化し復号化する方法。
【請求項13】
請求項1から12のいずれかに記載の方法の各ステップをコンピュータを用いて実行するための、コンピュータプログラム。
【請求項14】
請求項1から12のいずれかに記載の方法の各ステップを用いてエンコードした数値を含むコンピュータ可読媒体。
【請求項15】
整数Xiを暗号化し復号化する装置であって、
2つの素数A及びBを生成する素数生成部であって、前記素数A及びBの積であるNと前記整数Xiとの差が所定の範囲内となるような前記素数A及びBを生成する前記素数生成部と、
(A−1)と(B−1)との積をDとし、(A−1)と(B−1)の最小公倍数をKとし、D又はKと素である数をEとして、次式において前記整数XiのE乗が計算手段の整数演算に桁あふれを発生する条件で、次式の展開形を用いて前記整数Xiを暗号化した整数Yiを生成する暗号生成部と、
【数5】

mを任意の整数として次式を成立するFを用意する復号化準備部と、
【数6】

次式を用いて前記暗号化した前記整数YiをXnに復号化する復号化部と、を含む装置。
【数7】

【請求項16】
整数Xiの暗号化により情報を暗号化及び復号化するシステムであって、
2つの素数A及びBを生成する素数生成手段であって、前記素数A及びBの積であるNと前記整数Xiとの差が所定の範囲内となるような前記素数A及びBを生成する前記素数生成手段と、
(A−1)と(B−1)との積をDとし、(A−1)と(B−1)の最小公倍数をKとし、D又はKと素である数をEとして、次式において前記整数XiのE乗が計算機の整数演算に桁あふれを発生する条件で、次式の展開形を用いて前記整数Xiを暗号化した整数Yiを生成する暗号生成手段と、
【数8】

mを任意の整数として次式を成立するFを用意する復号化準備手段と、
【数9】

次式を用いて前記暗号化した前記整数YiをXnに復号化する復号化手段と、を含むシステム。
【数10】


【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate

【図10】
image rotate

【図11】
image rotate

【図12】
image rotate

【図13】
image rotate

【図14】
image rotate

【図15】
image rotate

【図16】
image rotate

【図17】
image rotate


【公開番号】特開2011−180390(P2011−180390A)
【公開日】平成23年9月15日(2011.9.15)
【国際特許分類】
【出願番号】特願2010−44728(P2010−44728)
【出願日】平成22年3月1日(2010.3.1)
【出願人】(000211307)中国電力株式会社 (6,505)
【Fターム(参考)】