(57)【要約】【課題】整数を暗号化し復号化する方法、装置及びシステムを提供する。【解決手段】守秘情報を参照する識別子情報等に係る整数Ｘｉを入力として受け付け、積Ｎと入力値としての整数Ｘｉとの差が所定範囲内である２つの素数Ａ及びＢを生成し、（Ａ−１）と（Ｂ−１）との積をＤとし、（Ａ−１）と（Ｂ−１）の最小公倍数をＫとし、Ｄ又はＫと素である数をＥとして、べき乗（ＸｉのＥ乗）が計算機の整数演算に桁あふれを発生する条件で剰余計算により整数Ｘｉを暗号化する。暗号化された整数Ｘｉは、ｍを任意の整数としてＥ×Ｆ＝ｍ×Ｋ＋１を成立するＦを用意して、べき乗（ＹｉのＦ乗）の剰余計算で復号化される。【選択図】図１
2011180390.tif 000002
【特許請求の範囲】
【請求項１】
整数Ｘｉを暗号化し復号化する方法であって、
２つの素数Ａ及びＢを生成するステップであって、前記素数Ａ及びＢの積であるＮと前記整数Ｘｉとの差が所定の範囲内となるような前記素数Ａ及びＢを生成するステップと、
（Ａ−１）と（Ｂ−１）との積をＤとし、（Ａ−１）と（Ｂ−１）の最小公倍数をＫとし、Ｄ又はＫと素である数をＥとして、次式において前記整数ＸｉのＥ乗が計算手段の整数演算に桁あふれを発生する条件で、次式の展開形を用いて前記整数Ｘｉを暗号化した整数Ｙｉを生成する、べき剰余による暗号化ステップと、
【数１】
2011180390.tif 000028
ｍを任意の整数として次式を成立するＦを用意するステップと、
【数２】
2011180390.tif 000029
次式を用いて前記暗号化した前記整数Ｙｉを整数Ｘｎに復号化する、べき剰余による復号化ステップと、を含む、整数を暗号化し復号化する方法。
【数３】
2011180390.tif 000030
【請求項２】
前記べき剰余による暗号化ステップにおいて、前記展開形は前記整数Ｘｉの桁を２つに分割し、前記分割した桁の上位の桁により表される整数Ｘｕ及び前記分割した下位の桁により表される整数Ｘｄを生成し、次式を用いて前記整数Ｘｉを置き換えることであり、
【数４】
2011180390.tif 000031
式中、Ｍは記数法の底であり、Ｃｄは前記下位の桁の数であり、Ｃｄは少なくとも１であり、前記整数Ｘｕ又は前記整数Ｘｄを用いて剰余計算を実施する、請求項１に記載の整数を暗号化し復号化する方法。
【請求項３】
前記２つの素数Ａ及びＢを生成するステップは、さらに、
前記積であるＮが前記整数Ｘｉに最も近くなるように前記２つの素数Ａ及びＢを選択するステップを含む、請求項１に記載の整数を暗号化し復号化する方法。
【請求項４】
前記整数Ｘｉは、識別子に含まれる文字又は数字の一部又は全体から、可逆的に変換された整数である、請求項１に記載の整数を暗号化し復号化する方法。
【請求項５】
前記整数Ｘｉは、１次元画像又は２次元画像から可逆的に変換された１次元画像の一部又は全体から、可逆的に変換された整数である、請求項１に記載の整数を暗号化し復号化する方法。
【請求項６】
さらに、暗号化に先立って、前記整数Ｘｉを、少なくとも１つの桁を前記整数Ｘｉに対して追加することにより桁を増した整数Ｗｉに置き換えるステップを含む、請求項１に記載の整数を暗号化し復号化する方法。
【請求項７】
さらに、復号化の後に、復号化した前記整数Ｗｉから追加した少なくとも１つの桁を除去するステップを含む、請求項６に記載の整数を暗号化し復号化する方法。
【請求項８】
さらに、前記整数Ｘｉを変換した整数Ｙｉを生成する前に、前記整数Ｘｉから前記整数Ｘｉ以下の整数Ｔを加算して前記整数Ｘｉと置き換えるステップと、
前記変換した整数Ｙｉを整数Ｘｎに復号化した後に、前記整数Ｘｎに前記整数Ｔを減算して前記整数Ｘｎと置き換えるステップと、を含む、請求項１に記載の整数を暗号化し復号化する方法。
【請求項９】
前記べき剰余による暗号化ステップにより前記整数Ｘｉを前記整数Ｙｉに変換した後に、換字式暗号化を用いて前記整数Ｙｉを整数Ｚｉに変換する、べき剰余と換字とを連続する暗号化ステップと、
換字式復号化を用いて前記整数Ｚｉを前記整数Ｙｉに復号化した後に、前記べき剰余による復号化ステップにより前記整数ＹｉをＸｎに復号化する、換字とべき剰余とを連続する復号化ステップと、を含み、
前記べき剰余と換字とを連続する暗号化ステップ、及び前記換字とべき剰余とを連続する復号化ステップは、少なくとも１以上の同一の回数だけ実施される、請求項１に記載の整数を暗号化し復号化する方法。
【請求項１０】
換字式暗号化を用いて前記整数Ｘｉを整数Ｙｉに変換した後に、前記べき剰余による暗号化ステップにより前記整数Ｙｉを前記整数Ｚｉに変換する、換字とべき剰余とを連続する暗号化ステップと、
前記べき剰余による復号化ステップにより前記整数ＺｉをＹｎに復号化した後に、換字式復号化を用いて前記整数Ｙｉを前記整数Ｚｉに復号化する、べき剰余と換字とを連続する復号化ステップと、を含み、
前記換字とべき剰余とを連続する暗号化ステップ、及び前記べき剰余と換字とを連続する復号化ステップは、少なくとも１以上の同一の回数だけ実施される、請求項１に記載の整数を暗号化し復号化する方法。
【請求項１１】
さらに、前記べき剰余による暗号化ステップにおいて、前記整数ＸｉのＥ乗が計算手段の整数演算に桁あふれを発生する条件で、前記Ｅをランダムな規則により選択するステップを含む、請求項１に記載の整数を暗号化し復号化する方法。
【請求項１２】
さらに、前記積Ｎの桁を少なくとも二つに分割して前記積Ｎから少なくとも二つの整数部分を生成するステップと、
前記積Ｎ及び前記展開形に含まれるそれぞれの整数部分を関連付ける情報を保持するステップと、を含み、
前記べき剰余による暗号化ステップにおいて、前記展開形は、前記整数Ｘｉの桁を少なくとも二つに分割して前記整数Ｘｉから少なくとも二つの整数部分として生成され、
前記べき剰余による復号化ステップにおいて、前記整数Ｘｎは、前記保持した前記それぞれの整数部分を関連付ける情報に基づいて前記整数Ｙｉから復号化される、請求項１に記載の整数を暗号化し復号化する方法。
【請求項１３】
請求項１から１２のいずれかに記載の方法の各ステップをコンピュータを用いて実行するための、コンピュータプログラム。
【請求項１４】
請求項１から１２のいずれかに記載の方法の各ステップを用いてエンコードした数値を含むコンピュータ可読媒体。
【請求項１５】
整数Ｘｉを暗号化し復号化する装置であって、
２つの素数Ａ及びＢを生成する素数生成部であって、前記素数Ａ及びＢの積であるＮと前記整数Ｘｉとの差が所定の範囲内となるような前記素数Ａ及びＢを生成する前記素数生成部と、
（Ａ−１）と（Ｂ−１）との積をＤとし、（Ａ−１）と（Ｂ−１）の最小公倍数をＫとし、Ｄ又はＫと素である数をＥとして、次式において前記整数ＸｉのＥ乗が計算手段の整数演算に桁あふれを発生する条件で、次式の展開形を用いて前記整数Ｘｉを暗号化した整数Ｙｉを生成する暗号生成部と、
【数５】
2011180390.tif 000032
ｍを任意の整数として次式を成立するＦを用意する復号化準備部と、
【数６】
2011180390.tif 000033
次式を用いて前記暗号化した前記整数ＹｉをＸｎに復号化する復号化部と、を含む装置。
【数７】
2011180390.tif 000034
【請求項１６】
整数Ｘｉの暗号化により情報を暗号化及び復号化するシステムであって、
２つの素数Ａ及びＢを生成する素数生成手段であって、前記素数Ａ及びＢの積であるＮと前記整数Ｘｉとの差が所定の範囲内となるような前記素数Ａ及びＢを生成する前記素数生成手段と、
（Ａ−１）と（Ｂ−１）との積をＤとし、（Ａ−１）と（Ｂ−１）の最小公倍数をＫとし、Ｄ又はＫと素である数をＥとして、次式において前記整数ＸｉのＥ乗が計算機の整数演算に桁あふれを発生する条件で、次式の展開形を用いて前記整数Ｘｉを暗号化した整数Ｙｉを生成する暗号生成手段と、
【数８】
2011180390.tif 000035
ｍを任意の整数として次式を成立するＦを用意する復号化準備手段と、
【数９】
2011180390.tif 000036
次式を用いて前記暗号化した前記整数ＹｉをＸｎに復号化する復号化手段と、を含むシステム。
【数１０】
2011180390.tif 000037
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、整数を暗号化及び復号化する方法、装置及びシステムに関する。特に、本発明は、守秘情報を参照するための識別情報等に関連付けられる整数を暗号化及び復号化する方法、装置及びシステムに関する。
【背景技術】
【０００２】
従来、法人組織等において構成員を識別するためにユニークな整数等を含む識別子を用いることが知られている。例えば、識別子には、国民健康保険制度等において加入者を識別するための８桁程度の数字、銀行口座を識別するための銀行の支店及び口座を示す３桁から１０桁程度の数字、クレジット会員を識別するための１２桁程度の数字が用いられる。また、識別子には、適当な区切り記号、文字列又は他の情報等を併用して、識別される本人が覚えやすい形式が適宜用いられている。
【０００３】
また、識別情報の暗号化を実現できる方法として、桁数が大きい合成数の素因数分解問題が困難であることを安全性の根拠とした公開鍵暗号であるＲＳＡ暗号が知られている（特許文献１及び非特許文献１）。ＲＳＡ暗号では、暗号化においては適当な正数によるべき乗と素数２個の積を法数とする剰余演算とを用い、復号化においては当該積の素因数を要するべき乗根を用いることにより、素因数を知らなければ復号化が困難になることによって暗号の安全性を確保している。
【０００４】
さらに、コンピュータネットワークを介する情報の送受信においてセキュリティを確保するために、暗号化、認証、改ざん検出の機能を有するＳＳＬプロトコル等が知られている（非特許文献２）。ＳＳＬプロトコルに含まれる公開鍵証明書に基づく認証には、前述のＲＳＡ暗号を用いることができる。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】米国特許第４４０５８２９号明細書
【非特許文献】
【０００６】
【非特許文献１】「ＲＳＡ暗号」［ｏｎｌｉｎｅ］、平成２０年６月１２日、［平成２０年７月３０日検索］、インターネット、＜ＵＲＬ：ｈｔｔｐ：／／ｊａ．ｗｉｋｉｐｅｄｉａ．ｏｒｇ／ｗｉｋｉ／ＲＳＡ％Ｅ６％９Ａ％９７％Ｅ５％８Ｆ％Ｂ７＞
【非特許文献２】「Ｓｅｃｕｒｅ  Ｓｏｃｋｅｔｓ  Ｌａｙｅｒ」［ｏｎｌｉｎｅ］、平成２０年７月２９日、［平成２０年７月３０日検索］、インターネット、＜ＵＲＬ：ｈｔｔｐ：／／ｊａ．ｗｉｋｉｐｅｄｉａ．ｏｒｇ／ｗｉｋｉ／Ｓｅｃｕｒｅ＿Ｓｏｃｋｅｔｓ＿Ｌａｙｅｒ＞
【発明の概要】
【発明が解決しようとする課題】
【０００７】
しかし、従来のＲＳＡ暗号では、長大桁数の数字の素因数分解の困難性を利用するため、処理方式が複雑となり、計算機における暗号化処理及び復号化処理に要する時間がかかるという課題があった。さらに、前述のＳＳＬプロトコル自体の脆弱性が指摘されており（例えば、日立製作所、「ＳＳＬの安全性評価報告書」［ｏｎｌｉｎｅ］、２００１年１２月２８日、独立行政法人情報通信研究機構（ＮＩＣＴ）公開情報、インターネット、＜ＵＲＬ：ｈｔｔｐ：／／ｃｒｙｐｔｒｅｃ．ｎｉｃｔ．ｇｏ．ｊｐ／ｒｅｐ＿ＩＤ００３５．ｐｄｆ＞を参照）、当該プロトコルを通常に使用しても、必ずしもセキュリティは確保できないという課題があった。
【０００８】
また、従来技術によって、識別される本人が覚えやすい形式の識別子を日常的に用いることには、この識別子を何らかの手段により入手した他者に対して個人情報等を漏洩する危険性があった。特に、コンピュータネットワークの発達した社会において、識別される本人が覚えやすい識別子の情報を、コンピュータネットワークを介して無加工で送受信すると、通信の中継装置等の通信記録から当該識別子の情報が漏洩する等の危険性があり、特定の個人情報に対するセキュリティが確保できなかった。また、大企業等において、構成員を特定するための識別子、当該構成員の健康保険者番号、社内銀行口座番号等の、それぞれにセキュリティ確保が必要な複数の個人情報に共通の番号等を用いると、いずれかが漏洩した時点で他の個人情報も漏洩の危険にさらされるという課題があった。さらに、音声による通話又は印刷物等の文書を介する情報の漏洩においては、コンピュータネットワークを用いて伝達される情報に対するＳＳＬプロトコル等のセキュリティ技術では対応できないため、音声又は文書等を含む多様な形態で個人情報を漏洩から保護できる方法が必要であった。
【０００９】
本発明は、暗号化したい情報の数値範囲に応じて計算条件を自動的に選択することにより計算を高速化すること、及び計算条件を隠蔽することによりセキュリティをより高度に確保することが可能な、方法、装置及びシステムを提供することを目的とする。
また、本発明は、個人情報と関連付けられた識別子等を、計算機が桁あふれを発生する条件で暗号化する方法を提供することにより、本発明の方法によらない第三者には元の識別子を復元できない暗号化された識別子等を生成することが可能な、方法、装置及びシステムを提供することを目的とする。
【課題を解決するための手段】
【００１０】
本発明者は、計算過程において計算機が桁あふれを生じさせるような大きな数を意図的に発生する計算手順を用い、所定の手順で桁あふれを回避して暗号化及び復号化を実施することにより、個人情報を秘匿する方法を見出したこと、及び暗号化したい情報の数値範囲に応じて計算条件を自動的に選択する手法を見出したことによって、本発明を完成するに至った。
本発明では、以下のような解決手段を提供する。
【００１１】
（１）整数Ｘｉを暗号化し復号化する方法であって、２つの素数Ａ及びＢを生成するステップであって、前記素数Ａ及びＢの積であるＮと前記整数Ｘｉとの差が所定の範囲内となるような前記素数Ａ及びＢを生成するステップと、（Ａ−１）と（Ｂ−１）との積をＤとし、（Ａ−１）と（Ｂ−１）の最小公倍数をＫとし、Ｄ又はＫと素である数をＥとして、次式において前記整数ＸｉのＥ乗が計算手段の整数演算に桁あふれを発生する条件で、次式の展開形を用いて前記整数Ｘｉを暗号化した整数Ｙｉを生成する、べき剰余による暗号化ステップと、
【数１１】
2011180390.tif 000003
ｍを任意の整数として次式を成立するＦを用意するステップと、
【数１２】
2011180390.tif 000004
次式を用いて前記暗号化した前記整数Ｙｉを整数Ｘｎに復号化する、べき剰余による復号化ステップと、を含む、整数を暗号化し復号化する方法。
【数１３】
2011180390.tif 000005
【００１２】
本発明の方法においては、整数演算を実施可能なコンピュータ装置等を用い、整数を入力して暗号化した整数を生成し、当該生成した暗号化した整数を復号化することにより、入力した整数を復元できる。
入力に用いる整数は、コンピュータ処理可能な整数であればよく、文字又は画像等から可逆的に変換された整数でもよい。例えば、コンピュータ処理可能な文字のそれぞれに割り当てられた文字コード等を、１桁、２桁又は４桁等の１６進数の整数として扱ってもよい。また、例えば、コンピュータ処理可能な画像に含まれる個々の画素を、ＲＧＢ各８ビットの整数の一組とする２４ビットの２進数の整数として扱ってもよい。例えば、構成員の識別番号等の個人情報を、コンピュータ処理可能な整数に可逆的に変換して、本発明の整数を暗号化し復号化する方法の入力に用いることができる。
【００１３】
本発明の方法において、２つの素数Ａ及びＢは、Ａ及びＢの積と暗号化する整数との差が所定の範囲内となるように生成される。これにより、数式（Ｉ）等に含まれるＮ（すなわち、Ａ及びＢの積）の剰余計算において、暗号化に必要な手順を実行しながら、長大桁数の数字のべき乗及び剰余計算に要するコンピュータ資源を削減することができる。したがって、本発明においては、暗号化する整数に応じて２つの素数Ａ及びＢを選択することにより、より少ないコンピュータ資源で暗号化及び復号化を行うことができると共に、より高速に暗号化及び復号化を行うことができる。
【００１４】
本発明の方法は、コンピュータに整数演算を実施させるプログラム等を用いて実行することができる。当該プログラムとしては、アセンブラ又はコンパイラ等により生成されたプログラム、インタープリタ等により変換されたプログラム、あるいはスクリプト又はスプレッドシート等が内蔵する計算ルーチンにより呼び出される機械語プログラム等が挙げられるが、これらに限定されない。
【００１５】
桁あふれは、例えば、前述のようなコンピュータが備える中央処理装置（ＣＰＵ）の演算レジスタにおいて発生する可能性がある。有効な桁数の整数演算は、特定のＣＰＵが有する演算レジスタの桁数にしたがって実施できる。例えば、レジスタ長が１６ビットのＣＰＵの場合、整数演算に使用できる整数は、例えば符号なし１６ビット整数として、１０進数の０〜６５５３５の範囲である。レジスタ長が３２ビットのＣＰＵの場合は、同様に符号なし３２ビット整数として、１０進数の０〜４２９４９６７２９５の範囲である。桁あふれは、例えば、このような範囲を超える整数が発生する場合に起きる。
【００１６】
また、桁あふれは、インタープリタ、スクリプト又はスプレッドシート等が整数演算のために用意する内部関数において発生する可能性がある。したがって、通常は、特定のインタープリタ、スクリプト又はスプレッドシート等が有する内部関数が表現可能な整数の桁数にしたがって、有効な桁数の整数演算が実施される。例えば、特定のコンパイラ等において符号なし１６ビット整数の型が定義された変数が表しうる整数は、１０進数の０〜６５５３５の範囲である。桁あふれは、例えば、このような範囲を超える整数が発生する場合に起きる。
【００１７】
本発明の方法においては、数式（Ｉ）で表されるべき乗の計算において、上述の桁あふれを含む任意の形式の桁あふれを発生するよう、整数Ｅを選択できる。桁あふれは、例えばＣＰＵ内部における整数演算中の桁あふれの発生検出処理、又はコンパイラ等が適宜備える整数演算ライブラリに含まれる桁あふれに対するエラー処理ルーチン等の、当技術分野に公知の手法を用いて検出することができる。
【００１８】
次いで、本発明に係る整数を暗号化し復号化する方法においては、数式（ＩＩ）で表される整数Ｆを用意する。整数Ｆは、任意のｍを含んで選択された素数Ａ及びＢに基づいて生成される右辺の数式（ｍ×Ｋ＋１）の因数であれば、特に限定されない。
【００１９】
次いで、本発明に係る整数を暗号化し復号化する方法においては、数式（ＩＩＩ）を用い、前述のようにして得られたＦを用いて、暗号化した整数であるＹｉから元のＸｉを復号化することができる。
【００２０】
このようにすることで、本発明の方法においては、桁あふれを発生する条件で数式（Ｉ）のＥを選択し、数式（ＩＩ）によりＦを算出し、（ＩＩＩ）により整数Ｙｉを得ることで、情報秘匿性の高い暗号化を実施することが可能になる。
また、本発明の方法においては、暗号化する整数の数値範囲に応じて計算条件を自動的に選択することにより、計算に要するコンピュータ資源を削減し、計算を高速化することができ、計算条件を隠蔽することによりセキュリティをより高度に確保することができる。
【００２１】
（２）前記べき剰余による暗号化ステップにおいて、前記展開形は前記整数Ｘｉの桁を２つに分割し、前記分割した桁の上位の桁により表される整数Ｘｕ及び前記分割した下位の桁により表される整数Ｘｄを生成し、次式を用いて前記整数Ｘｉを置き換えることであり、
【数１４】
2011180390.tif 000006
式中、Ｍは記数法の底であり、Ｃｄは前記下位の桁の数であり、Ｃｄは少なくとも１であり、前記整数Ｘｕ又は前記整数Ｘｄを用いて剰余計算を実施する、（１）に記載の整数を暗号化し復号化する方法。
【００２２】
このようにすることで、本発明に係る整数を暗号化し復号化する方法においては、桁あふれを発生する条件で前述の数式（Ｉ）のＥを選択した後に、数式（ＩＶ）を用いて整数Ｘｉを上位の桁と下位の桁とに分割して展開し、展開後の式を用いて演算を行うので、桁あふれを避けて、暗号化した整数である整数Ｙｉを正確に得ることができる。
【００２３】
（３）前記２つの素数Ａ及びＢを生成するステップは、さらに、前記積であるＮが前記整数Ｘｉに最も近くなるように前記２つの素数Ａ及びＢを選択するステップを含む、（１）に記載の整数を暗号化し復号化する方法。
【００２４】
本発明の方法において、前述の２つの素数Ａ及びＢは、暗号化する整数との差が最も近くなるように、Ａ及びＢの可能な組み合わせの集合から選択することができる。この選択は、例えば、暗号化する整数Ｘｉに対して、差である（Ｘｉ−ＡＢ）の絶対値が最小となるように、Ａ及びＢの可能な組み合わせの集合から選択することで達成できる。
【００２５】
（４）前記整数Ｘｉは、識別子に含まれる文字又は数字の一部又は全体から、可逆的に変換された整数である、（１）に記載の整数を暗号化し復号化する方法。
【００２６】
本発明に係る識別子は、典型的にはコンピュータ処理可能な文字（文字としての数字を含む）又は数値とすることができる。一般的に、文字は、文字コード等の公知技法を用いることによりユニークな整数に変換できる。したがって、本発明に係る整数の暗号化及び復号化の方法においては、ユニークな整数との関連付けが可能な文字又は数値を、元の整数として暗号化し、復号化することができる。
【００２７】
（５）前記整数Ｘｉは、１次元画像又は２次元画像から可逆的に変換された１次元画像の一部又は全体から、可逆的に変換された整数である、（１）に記載の整数を暗号化し復号化する方法。
【００２８】
本発明に係る画像は、典型的にはコンピュータ処理可能な画像データであり、例えば１つの画素は、Ｒ（赤）Ｇ（緑）Ｂ（青）の各色に８ビットの階調の値を含む符号なしの２４ビットの整数でありうる。２次元画像は、所定の手順にしたがって画素を並び替えることにより１次元画像に変換してもよい。このようにして、画素からなる画像は整数として扱うことができ、特定の画像はユニークな整数と関連付けられる。暗号化される元の整数に含まれる画素数は、適宜設計できる。したがって、本発明に係る整数の暗号化及び復号化の方法においては、ユニークな整数との関連付けが可能な１次元又は２次元画像を元の整数として暗号化し、復号化することができる。
【００２９】
（６）さらに、暗号化に先立って、前記整数Ｘｉを、少なくとも１つの桁を前記整数Ｘｉに対して追加することにより桁を増した整数Ｗｉに置き換えるステップを含む、（１）に記載の整数を暗号化し復号化する方法。
【００３０】
このようにすることで、暗号化される整数Ｘｉに対して、任意に選択される桁数を追加した整数を生成して暗号化の入力に用いることができる。桁数を増した整数Ｗｉは、元の整数Ｘｉが同一であっても、増した桁数及び当該桁数の整数に含まれる各桁の数字に依存して変化することが可能である。したがって、同一のＸｉ及び任意に選択される桁数の整数に基づいて、互いに異なる整数Ｗｉを生成して暗号化に用いることができる。
【００３１】
例えば、暗号化される整数Ｘｉとしては、生年月日の日付の情報を含む文字列に基づいて生成される４桁、６桁、又は８桁等の整数を用いることができる。ここで、任意に選択される桁数としては、例えば２桁の整数等が挙げられるが、限定されない。本発明の整数を暗号化し復号化する方法のユーザ等は、例えば、自己の生年月日に基づく同一の整数及び任意に選択される２桁の整数から生成される、桁数を増した整数Ｗｉを暗号化の入力とし、当該２桁の整数を使い分けることにより、複数の暗号化した整数を生成して利用することができる。暗号化される整数は例えば１０桁等であっても、ユーザは全ての桁の数字を使用目的ごとに記憶する必要はなく、自分が覚えやすい２桁の整数等を使い分ければよい。したがって、本発明に係る整数を暗号化し復号化する方法においては、ユーザが覚えやすい数字を、桁増しとして併用して暗号化することにより、複数の暗号化した整数を生成して使い分けることができる。
【００３２】
（７）さらに、復号化の後に、復号化した前記整数Ｗｉから追加した少なくとも１つの桁を除去するステップを含む、（６）に記載の整数を暗号化し復号化する方法。
【００３３】
このようにすることで、本発明に係る整数を暗号化し復号化する方法においては、復号化の後に、桁を増した整数Ｗｉから元の前記整数Ｘｉを完全に復号化することが可能である。
【００３４】
（８）さらに、前記整数Ｘｉを変換した整数Ｙｉを生成する前に、前記整数Ｘｉから前記整数Ｘｉ以下の整数Ｔを加算して前記整数Ｘｉと置き換えるステップと、前記変換した整数Ｙｉを整数Ｘｎに復号化した後に、前記整数Ｘｎに前記整数Ｔを減算して前記整数Ｘｎと置き換えるステップと、を含む、（１）に記載の整数を暗号化し復号化する方法。
【００３５】
整数Ｔは、いわゆるオフセットであり、本発明の方法においては、数値の加算によるオフセットの適用及び当該数値の減算によるオフセットの消去を用いて、情報の秘匿化を行うことができる。
特に、従来の公開鍵暗号化技術等では０、１、及び元の整数自身が変換されずに特異点となりうるが、本発明においては、オフセットを用いて従来法における特異点の数値を変更できる。したがって、本発明においては、従来法の特異点に係る問題を避けて暗号化及び復号化を実施できる。
【００３６】
（９）前記べき剰余による暗号化ステップにより前記整数Ｘｉを前記整数Ｙｉに変換した後に、換字式暗号化を用いて前記整数Ｙｉを整数Ｚｉに変換する、べき剰余と換字とを連続する暗号化ステップと、換字式復号化を用いて前記整数Ｚｉを前記整数Ｙｉに復号化した後に、前記べき剰余による復号化ステップにより前記整数ＹｉをＸｎに復号化する、換字とべき剰余とを連続する復号化ステップと、を含み、前記べき剰余と換字とを連続する暗号化ステップ、及び前記換字とべき剰余とを連続する復号化ステップは、少なくとも１以上の同一の回数だけ実施される、（１）に記載の整数を暗号化し復号化する方法。
【００３７】
（１０）換字式暗号化を用いて前記整数Ｘｉを整数Ｙｉに変換した後に、前記べき剰余による暗号化ステップにより前記整数Ｙｉを前記整数Ｚｉに変換する、換字とべき剰余とを連続する暗号化ステップと、前記べき剰余による復号化ステップにより前記整数ＺｉをＹｎに復号化した後に、換字式復号化を用いて前記整数Ｙｉを前記整数Ｚｉに復号化する、べき剰余と換字とを連続する復号化ステップと、を含み、前記換字とべき剰余とを連続する暗号化ステップ、及び前記べき剰余と換字とを連続する復号化ステップは、少なくとも１以上の同一の回数だけ実施される、（１）に記載の整数を暗号化し復号化する方法。
【００３８】
これらのようにすることで、本発明の方法においては、異なる暗号化の処理を連続することにより、同じ暗号化の方法の繰り返しからは得られない、より秘匿性の高い暗号化が可能になる。対応する暗号化の手順を知らなければ正確な復号化ができないため、第三者による解読にはより多くの手間を必要とする。したがって、本発明の方法においては、元の整数に対して極めて高い秘匿性を有する暗号化が可能になる。
【００３９】
（１１）さらに、前記べき剰余による暗号化ステップにおいて、前記整数ＸｉのＥ乗が計算手段の整数演算に桁あふれを発生する条件で、前記Ｅをランダムな規則により選択するステップを含む、（１）に記載の整数を暗号化し復号化する方法。
【００４０】
本発明に係る暗号化の鍵を選択するためのランダムな規則は、乱数の発生等を含むランダムな規則を用いることが可能である。例えば、整数の乱数を発生するためのコンピュータプログラムを用いて得られる整数を、本発明に係る暗号化の鍵として用いてもよい。これに限定せず、乱数賽等の機構、任意の時刻における電気的雑音の強度と関連付けた数値等をランダムな規則として、これらのランダムな規則に基づいて整数を選択して用いてもよい。
【００４１】
具体的には、本発明に係る整数を暗号化する方法においては、数式（Ｉ）に含まれる整数Ｅを、ランダムな規則に基づいて選択することができる。また、本発明に係る整数を復号化する方法においては、数式（ＩＩ）によって、整数Ｅと関連付けられる整数Ｆが選択される。したがって、一対の整数Ｅ及び整数Ｆは、他のべき剰余の計算中に選択された他の一対の整数Ｅ及び整数Ｆとは関連性のない整数となりうる。これにより、本発明の方法は、整数Ｅ及び整数Ｆの正しい値を用いることのない第三者に対して、極めて高い秘匿性を提供できる。
【００４２】
（１２）さらに、前記積Ｎの桁を少なくとも二つに分割して前記積Ｎから少なくとも二つの整数部分を生成するステップと、前記積Ｎ及び前記展開形に含まれるそれぞれの整数部分を関連付ける情報を保持するステップと、を含み、前記べき剰余による暗号化ステップにおいて、前記展開形は、前記整数Ｘｉの桁を少なくとも二つに分割して前記整数Ｘｉから少なくとも二つの整数部分として生成され、前記べき剰余による復号化ステップにおいて、前記整数Ｘｎは、前記保持した前記それぞれの整数部分を関連付ける情報に基づいて前記整数Ｙｉから復号化される、（１）に記載の整数を暗号化し復号化する方法。
【００４３】
本発明の方法においては、倍精度型の精度の範囲を超える多桁の整数であっても、相互に関連付けを有する整数部分の分割を用いてべき剰余を計算する方法を提供することができる。本発明においては、それぞれの整数部分は別個に暗号化され復号化される独立した整数ではなく、全体が１つの整数として暗号化され復号化される。したがって、本発明に係る整数を暗号化し復号化する方法においては、第三者による解読のための手がかりを増すことなく、暗号化及び復号化を行うことができる。
【００４４】
（１３）（１）から（１２）のいずれかに記載の方法をコンピュータを用いて実行するための、コンピュータプログラム。
【００４５】
これにより、本発明に係る整数を暗号化し復号化する方法の各ステップをコンピュータに実行させることができる。
【００４６】
（１４）（１）から（１２）のいずれかに記載の方法の各ステップを用いてエンコードした数値を含むコンピュータ可読媒体。
【００４７】
本発明に係る整数を暗号化し復号化する方法は、記憶媒体に記録する任意のデータ、又は記憶媒体の特定の記憶領域を参照するためのファイル割り当てテーブル等に含まれる数値等を、暗号化及び復号化することができる。このようなデータ又は数値は、整数と見なしうるものであれば何でもよい。したがって、本発明は、第三者に対する漏洩を保護したコンピュータ可読媒体を提供することができる。
【００４８】
（１５）整数Ｘｉを暗号化し復号化する装置であって、２つの素数Ａ及びＢを生成する素数生成部であって、前記素数Ａ及びＢの積であるＮと前記整数Ｘｉとの差が所定の範囲内となるような前記素数Ａ及びＢを生成する前記素数生成部と、（Ａ−１）と（Ｂ−１）との積をＤとし、（Ａ−１）と（Ｂ−１）の最小公倍数をＫとし、Ｄ又はＫと素である数をＥとして、次式において前記整数ＸｉのＥ乗が計算手段の整数演算に桁あふれを発生する条件で、次式の展開形を用いて前記整数Ｘｉを暗号化した整数Ｙｉを生成する暗号生成部と、
【数１５】
2011180390.tif 000007
ｍを任意の整数として次式を成立するＦを用意する復号化準備部と、
【数１６】
2011180390.tif 000008
次式を用いて前記暗号化した前記整数ＹｉをＸｎに復号化する復号化部と、を含む装置。
【数１７】
2011180390.tif 000009
【００４９】
本発明の装置は、整数演算中の桁あふれの検出又はプログラム実行中の整数演算の桁あふれ発生の検出が可能であればよい。数式（Ｖ）で表されるべき乗計算に含まれる整数Ｅは、このように桁あふれが検出される条件で選択される。
さらに、本発明の装置においては、桁あふれが発生する条件で数式（Ｖ）のＥを選択した後に、例えば前述の数式（ＩＶ）を用いてＸｉを展開し、桁あふれを避けて、暗号化した整数であるＹｉを正確に得ることができる。
したがって、本発明の装置は、整数Ｙｉを正確に得ることが可能になる。すなわち、本発明の装置は、暗号化及び復号化のいずれも正確に実施することができる。
【００５０】
（１６）整数Ｘｉの暗号化により情報を暗号化及び復号化するシステムであって、２つの素数Ａ及びＢを生成する素数生成手段であって、前記素数Ａ及びＢの積であるＮと前記整数Ｘｉとの差が所定の範囲内となるような前記素数Ａ及びＢを生成する前記素数生成手段と、（Ａ−１）と（Ｂ−１）との積をＤとし、（Ａ−１）と（Ｂ−１）の最小公倍数をＫとし、Ｄ又はＫと素である数をＥとして、次式において前記整数ＸｉのＥ乗が計算機の整数演算に桁あふれを発生する条件で、次式の展開形を用いて前記整数Ｘｉを暗号化した整数Ｙｉを生成する暗号生成手段と、
【数１８】
2011180390.tif 000010
ｍを任意の整数として次式を成立するＦを用意する復号化準備手段と、
【数１９】
2011180390.tif 000011
次式を用いて前記暗号化した前記整数ＹｉをＸｎに復号化する復号化手段と、を含むシステム。
【数２０】
2011180390.tif 000012
【００５１】
本発明のシステムにおいては、整数演算中の桁あふれの検出又はプログラム実行中の整数演算の桁あふれ発生の検出が可能であればよい。数式（ＶＩＩＩ）で表されるべき乗計算に含まれる整数Ｅは、このように桁あふれが検出される条件で選択される。
さらに、本発明に係る整数を暗号化及び復号化するシステムにおいては、桁あふれを発生する条件で前述の数式（ＶＩＩＩ）のＥを選択した後に、例えば前述の数式（ＩＶ）を用いてＸｉを展開し、桁あふれを避けて、暗号化した整数であるＹｉを正確に得ることができる。
【００５２】
したがって、本発明に係る情報を暗号化及び復号化するシステムは、整数Ｙｉを正確に得ることが可能になる。すなわち、本発明に係る整数の暗号化及び復号化装置は、暗号化及び復号化のいずれも正確に実施できる。
【発明の効果】
【００５３】
本発明によれば、暗号化したい情報の数値範囲に応じて計算条件を自動的に選択することにより計算を高速化することができ、計算条件を隠蔽することによりセキュリティをより高度に確保することが可能な、方法、装置及びシステムを提供できる。
また、本発明によれば、個人情報と関連付けられた識別子等を、計算機が桁あふれを発生する条件で暗号化する方法を提供することにより、本発明の方法によらない第三者には元の識別子を復元できない暗号化された識別子等を生成することが可能な、方法、装置及びシステムを提供できる。
【図面の簡単な説明】
【００５４】
【図１】本発明の一実施形態に係る、整数を暗号化し復号化する方法のフロー図である。
【図２】本発明の一実施形態に係る、２つの素数Ａ及びＢを生成する処理の流れを示すフローチャートである。
【図３】本発明の一実施形態に係る、整数を暗号化する方法を用いる個人情報保護手順の例を示す図である。
【図４】本発明の一実施形態に係る、整数を暗号化する方法を用いる個人情報保護手順の別の例を示す図である。
【図５】本発明の一実施形態に係る、整数を暗号化する方法を用いる個人情報保護手順のまた別の例を示す図である。
【図６】本発明の一実施形態に係る、暗号化した整数の復号化手順の例を示す図である。
【図７】本発明の別の実施形態に係る、整数を暗号化する方法のフロー図である。
【図８】本発明の別の実施形態に係る、暗号化した整数を復号化する方法のフロー図である。
【図９】本発明のまた別の実施形態に係る、整数を暗号化する方法のフロー図である。
【図１０】本発明のまた別の実施形態に係る、暗号化した整数を復号化する方法のフロー図である。
【図１１】本発明のさらに別の実施形態に係る、整数を暗号化する方法のフロー図である。
【図１２】本発明のさらに別の実施形態に係る、暗号化した整数を復号化する方法のフロー図である。
【図１３】本発明の一実施形態に係る、整数を暗号化する方法を用いる個人情報保護手順のさらに別の例を示す図である。
【図１４】本発明の実施形態に係る、暗号化及び復号化の方法の諸段階をスプレッドシート形式の計算アプリケーションパッケージを用いて実装する例を示す図である。
【図１５】本発明の一実施形態に係る、暗号化及び復号化の方法の諸段階をスプレッドシート形式の計算アプリケーションパッケージに実装して計算する例を示す図である。
【図１６】本発明の実施形態に係る、べき剰余と換字式の重畳を用いる暗号化の処理を、スプレッドシート形式の計算アプリケーションパッケージを用いて実装する例を示す図である。
【図１７】本発明の実施形態に係る、換字式とべき剰余の重畳を用いる復号化の処理を、スプレッドシート形式の計算アプリケーションパッケージを用いて実装する例を示す図である。
【発明を実施するための形態】
【００５５】
以下、本発明の実施形態について説明する。なお、これはあくまでも一例であって、本発明の技術的範囲はこれに限られるものではない。
【００５６】
本発明の実施形態は、コンピュータ及びその周辺装置に適用される。本発明の実施形態における各部は、コンピュータ及びその周辺装置が備えるハードウェア並びに該ハードウェアを制御するソフトウェアによって構成される。
【００５７】
上記ハードウェアには、制御部としてのＣＰＵ（中央処理装置、Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）の他、記憶部、通信装置、表示装置及び入力装置が含まれる。記憶部としては、例えば、メモリ（ＲＡＭ：ランダムアクセスメモリ、ＲＯＭ：読み出し専用メモリ等）、ハードディスクドライブ（ＨＤＤ：ハードディスクドライブ）、及び光ディスク（ＣＤ：コンパクトディスク、ＤＶＤ：デジタル多目的ディスク等）ドライブが挙げられる。通信装置としては、例えば、各種有線及び無線インタフェース装置が挙げられる。表示装置としては、例えば、液晶ディスプレイ等の各種ディスプレイが挙げられる。入力装置としては、例えば、キーボード及びポインティング・デバイス（マウス、トラッキングボール等）が挙げられる。
【００５８】
上記ソフトウェアには、上記ハードウェアを制御するコンピュータプログラムやデータが含まれる。コンピュータプログラムやデータは、記憶部により記憶され、制御部により適宜実行、参照される。また、コンピュータプログラムやデータは、通信回線を介して配布されることも可能であり、コンピュータ可読媒体に記録して配布されることも可能である。
【００５９】
具体的には、コンピュータ可読媒体は、フラッシュメモリ等の電気的記憶媒体、ＣＤ−ＲＯＭ等の光学読み取り可能媒体、ハードディスク等の磁気記憶媒体等の任意の形態を含む。コンピュータ可読媒体は、暗号化又は復号化の処理においてコンピュータネットワーク等を介する必要はなく、ネットワーク等から切り離されたオフライン状態でも、本発明の暗号化及び復号化の方法を用いてエンコードした情報を格納してもよい。
【００６０】
［暗号化及び復号化のフロー図］
図１に、本発明の一実施形態に係る、整数を暗号化し復号化する方法のフロー図を示す。図１（ａ）は、本実施形態に係る、整数を暗号化する方法フロー図であり、図１（ｂ）は、当該暗号化した整数を復号化する方法のフロー図である。
【００６１】
まず、暗号化の処理を、暗号化装置１００（図３）の動作として説明する。本実施形態に係る整数を暗号化する方法において、暗号化装置１００は、メモリデバイス等（図示せず）の記憶媒体を適宜用い、図１（ａ）のステップＳ１００で変数領域を確保する。具体的には、次の表１に列挙する変数を用いる計算のために、暗号化装置１００のメモリ領域が確保される。
【表１】
2011180390.tif 000013
【００６２】
暗号化する整数としては、識別子等に含まれうる符号なしの整数が挙げられるが、これに限定されず、任意の形式の整数を用いてもよい。
【００６３】
整数Ｘｉ、Ｙｉ及びＸｎのワード長は、暗号化装置１００が備えるＣＰＵの内部命令において１つの整数を表すために用いうるレジスタのビット幅の最大以内である。例えば、暗号化装置１００が、１６ビットレジスタを用いて内部命令に含まれる整数演算を実施可能なＣＰＵを備える場合、整数Ｘｉ、Ｙｉ及びＸｎのワード長は１６ビット以下であり、これらの整数は１０進数の記法における０以上６５５３５以下の範囲内をとりうる。
【００６４】
次いで、暗号化装置１００は、ステップＳ１１０において、積Ｎと整数Ｘｉとの差が所定範囲内である２つの素数Ａ及びＢを生成する。この所定の範囲としては、予め定められた一定の数値の範囲、暗号化する整数に対して予め定められた一定の比率の範囲、Ａ及びＢの可能な組み合わせのうち、暗号化する整数と積ＡＢとの差が小さい所定範囲内の順序（例えば、最も近い組み合わせ、又は２番目に近い組み合わせ）等が挙げられるが、これらに限定されない。例えば、２つの素数Ａ及びＢは、暗号化する整数Ｘｉとの差が最も近くなるように、Ａ及びＢの可能な組み合わせの集合から選択されてもよい。
【００６５】
また、素数は、公知の素数判定法等により、所定の区間の整数の集合から生成される。したがって、２つの素数Ａ及びＢを選択するための素数の集合は、暗号化する整数Ｘｉが指定された後に生成される。このため、暗号化装置１００では、この素数の集合を、予め用意する必要がない。よって、暗号化装置１００は、暗号化したい情報が指定されるまで、暗号化の計算に必要な素数Ａ及びＢの情報を用意する必要がなく、計算条件を隠蔽しておくことが可能である。
【００６６】
例えば、暗号化する整数が１００００である場合に、２つの素数（Ａ，Ｂ）の組み合わせとしては、（２，４９９９）、（１３，７６９）、（７３，１３７）又は（７，１４２９）等が挙げられるが、これらに限定されない。これらの（Ａ，Ｂ）の対における積ＡＢ、すなわち積Ｎは、この順にそれぞれ、９９９８、９９９７、１０００１及び１０００３である。
【００６７】
なお、暗号化に用いる２つの素数（Ａ，Ｂ）の組み合わせは、暗号化する整数Ｘｉとの差が最も小さい条件で選択してもよい。例えば、積ＡＢがＸｉ以上であって当該差が最小である（Ａ，Ｂ）を選択してもよく、積ＡＢがＸｉ以下であって当該差が最小である（Ａ，Ｂ）を選択してもよい。
【００６８】
具体的な処理について、図２に示すフローチャートを参照して説明する。図２は、２つの素数Ａ及びＢを生成する処理の流れを示すフローチャートである。
【００６９】
ステップＳ１１１において、暗号化装置１００は、暗号化する整数に３を加算する。
続いて、ステップＳ１１２において、暗号化装置１００は、ステップＳ１１１又はステップＳ１１６において加算された整数を、この加算された整数の平方根を超えない素数で順次除算する。ここで算出される商をＮ１とする。
ステップＳ１１３では、暗号化装置１００は、加算された整数が素数で割り切れたか否かを判定する。判定の結果がＹＥＳであればステップＳ１１４に進み、ＮＯであればステップＳ１１６に進む。
【００７０】
ステップＳ１１４では、暗号化装置１００は、ステップＳ１１３で加算された整数が素数で割り切れたと判定されているので、商Ｎ１を、商Ｎ１の平方根を超えない素数で除算する。すなわち、この素数が、加算された整数の因数であるので、暗号化装置１００は、商Ｎ１が素数であるか否かを判定するために、商Ｎ１を、商Ｎ１の平方根を超えない素数で除算する。
【００７１】
ステップＳ１１５では、暗号化装置１００は、商Ｎ１が、商Ｎ１の平方根を超えない素数で割り切れたか否かを判定する。判定の結果がＹＥＳであれば、ステップＳ１１６に進み、ＮＯであれば処理を終了する。すなわち、この判定結果がＮＯである場合、商Ｎ１は素数である。よって、ステップＳ１１１又はステップＳ１１６で加算された整数は、２つの素数（Ａ，Ｂ）の組合せが生成されたことになる。
【００７２】
ステップＳ１１６は、ステップＳ１１３でＮＯと判定された場合、又はステップＳ１１５でＹＥＳと判定された場合に実行される。すなわち、ステップＳ１１２で加算された整数が素数で割り切れなかった場合、この加算された整数は素数となり、ステップＳ１１４で商Ｎ１が素数で割り切れた場合、この加算された整数は３個以上の素数に素因数分解可能となるので、ステップＳ１１６において、暗号化装置１００は、この加算された整数を変更する処理を行う。具体的には、ステップＳ１１６では、暗号化装置１００は、この加算された整数に対して１を加算する。この処理が終了すると、暗号化装置１００は、処理をステップＳ１１２に移す。
【００７３】
なお、図２に示すフローチャートで示す処理において、暗号化装置１００は、暗号化する整数よりも大きい整数の中で、この暗号化する整数に最も近い整数（最小直近整数）を算出することとしたが、暗号化する整数よりも小さい整数の中で、この暗号化する整数に最も近い整数（最大直近整数）を算出することとしてもよい。
この場合、暗号化装置１００は、Ｓ１１６における加算処理に代わり、減算処理を行う。
【００７４】
図１に戻り、次いで、暗号化装置１００は、ステップＳ１２０において、（Ａ−１）と（Ｂ−１）との積をＤに代入し、（Ａ−１）と（Ｂ−１）の最小公倍数をＫに代入する。
次いで、暗号化装置１００は、ステップＳ１３０において、Ｄ又はＫと素である整数Ｅを生成する。
次いで、暗号化装置１００は、ステップＳ１４０において、次式（ＸＩ）の右辺の項（整数ＸｉのＥ乗）が、計算手段の整数演算に桁あふれを発生するか否かを判定する。判定の結果がＹＥＳであればステップＳ１５０に進み、ＮＯであればステップＳ１３０に戻る。
【数２１】
2011180390.tif 000014
桁あふれの検出は、計算手段が備えるＣＰＵの内部動作の状況を記憶するための、ＣＰＵの特定のレジスタに含まれるフラグ（例えばステータスレジスタ又はコンディションレジスタ等に含まれるオーバーフローフラグ等）の値や、コンパイラ言語等により予めオペレーティングシステムに例外処理等を登録したときの当該例外処理の動作や、スクリプト言語又はコンパイラ言語等に付属するライブラリ等が備えるオーバーフローエラー処理を参照することにより行われる。また、桁あふれの検出はこれらの方法に限らず、適宜設計できる。
【００７５】
次いで、暗号化装置１００は、ステップＳ１５０において、次式（ＸＩＩ）に示される数式（ＸＩ）の展開形を用いて、整数Ｘｉを暗号化した整数Ｙｉを生成する。
【数２２】
2011180390.tif 000015
式中、Ｍは記数法の底である。Ｃｄは下位の桁の数であり、１以上の値をとる。整数Ｘｉの剰余計算は、このようにして置き換えたＸｕ又はＸｄを用いて行われる。
【００７６】
このように、暗号化装置１００は、桁あふれを発生する条件で前述の数式（ＸＩ）のＥを選択した後に、数式（ＸＩＩ）を用いてＸｉを展開し、桁あふれを避けて、暗号化した整数であるＹｉを生成する。
【００７７】
一例として、１０進数の暗号化における展開形を示す。記数法の底であるＭを１０とし、Ｘｉの桁数を１０桁、下位の桁数Ｃｔを５桁とすると、数式（ＸＩＩ）は次式のように表される。
【数２３】
2011180390.tif 000016
【００７８】
別の例として、２進数の暗号化における展開形を示す。記数法の底であるＭを２とし、Ｘｉの桁数を１６桁、下位の桁数Ｃｔを８桁とする場合、数式（ＸＩＩ）は次式のように表される。
【数２４】
2011180390.tif 000017
【００７９】
例えば、暗号化装置１００が１６ビット幅のレジスタを有するＣＰＵを備える場合に、元の整数Ｘｉの値が１０進数の６５５３２等であると、Ｘｉのべき乗の計算において、最も小さい整数のべき数でありうる２を用いた時点で、当該ＣＰＵが備える１６ビット幅のレジスタを用いて表しうる整数の上限値６５５３５を超えてしまう。すなわち、単に元の整数をそのままべき乗する通常の計算方法にしたがって数式（ＸＩ）の右辺に含まれるＸｉのＥ乗の計算を実施すると、正確なべき乗の値が得られない場合がある。
【００８０】
これに対して、暗号化装置１００は、数式（ＸＩＩ）又はその具体例である数式（ＸＩＩＩ）若しくは数式（ＸＩＶ）を用いて上位の桁と下位の桁を分離する。例えば、前述の整数Ｘｉの値である６５５３２を、２進数の１１１１１１１１１１１１１１００（２）として表し、上位８桁と下位８桁等に分割し、上位８桁に含まれる整数１１１１１１１１（２）（１０進数の２５５）及び下位８桁に含まれる整数１１１１１１００（２）（１０進数の２５２）を用い、２５５の２乗、２５５と２５２の積、２５２の２乗をそれぞれ計算すると、これらの整数の積はいずれも当該ＣＰＵが備える１６ビット幅のレジスタを用いて表しうる整数の範囲内となる。３２ビット幅のレジスタ、６４ビット幅のレジスタ等についても同様である。
【００８１】
したがって、前述の数式（ＸＩ）として表される整数Ｘｉのべき乗の計算において、最も少ない回数である整数Ｘｉの２乗の場合に、数式（ＸＩＶ）の右辺の２乗からは、Ｘｕの２乗、Ｘｕ・Ｘｄ、及びＸｄの２乗が生成され、これらはいずれも整数Ｘｉのとりうる最大桁数以下の整数であるため、桁あふれが発生しない。すなわち、整数Ｘｉの任意のべき乗において、数式（ＸＩＩ）の手順を繰り返すことにより、べき乗の計算過程での桁あふれを避けることが可能になる。
【００８２】
分割する桁数は、計算手段等が備えるＣＰＵの整数演算のためのレジスタのビット幅等に基づいて適宜設定できる。例えば、符号なし整数演算のためのレジスタのビット幅を等分した上位の桁数及び下位の桁数が、分割した桁数として用いられる。
【００８３】
以上の諸段階により、整数Ｘｉから、暗号化した整数であるＹｉを得られる。整数Ｙｉを表すために必要なワード長は、整数Ｘｉを表すためのワード長と同じでありうるが、これに限定せず、暗号化した整数Ｙｉの用途等に応じて、又は他のセキュリティ手段又は方法等を組み合わせて、桁数を増す数字等を追加してもよく、あるいは整数Ｙｉを文字に変換して適宜記号等を含む文字を任意に追加してもよい。
【００８４】
次に、本実施形態に係る復号化の処理を、復号化装置１１０（図６）の動作として説明する。本実施形態に係る復号化の方法において、復号化装置１１０は、メモリデバイス等（図示せず）の記憶媒体を適宜用い、図１（ｂ）のステップＳ２００で変数領域を確保する。この変数領域の確保は、前述の暗号化装置１００による暗号化の処理におけるステップＳ１００と同様でもよい。あるいは、暗号化装置１００及び復号化装置１１０を一体として構成し、メモリデバイス内の共通の変数領域を暗号化及び復号化の両方の諸段階に用いてもよい。
【００８５】
次いで、復号化装置１１０は、ステップＳ２１０において、ｍを任意の整数として次の数式（ＸＶ）が成立するＦを生成する。
【数２５】
2011180390.tif 000018
数式（ＸＶ）において、整数Ｆは、任意のｍを含む右辺の数式（ｍ×Ｋ＋１）の因数であれば何でもよい。
【００８６】
次いで、復号化装置１１０は、ステップＳ２２０において、次の数式（ＸＶＩ）を用いて、暗号化したＹｉを整数Ｘｎに復号化する。
【数２６】
2011180390.tif 000019
【００８７】
本実施形態に係る整数を暗号化し復号化する方法において、暗号化装置１００は、桁あふれを発生する条件で数式（ＸＩＩ）のＥを選択する。本実施形態の方法を用いないコンピュータ装置等においては暗号化した整数Ｙｉを正確に得ることができない。したがって、本実施形態に係る整数を暗号化し復号化する方法は、情報秘匿性の高い暗号化及び復号化を提供できる。
【００８８】
また、本実施形態に係る整数を暗号化し復号化する方法において、暗号化装置１００は、暗号化する整数の範囲に応じて計算条件を自動的に選択することにより計算を高速化することができると共に、計算条件を隠蔽することによりセキュリティをより高度に確保することができる。
【００８９】
さらに、本実施形態に係る整数を暗号化し復号化する方法においては、暗号化の過程である数式（ＸＩ）に含まれず、復号化の過程である数式（ＸＶ）及び数式（ＸＶＩ）に含まれる整数Ｆが第三者に知られにくい又は推定されにくいことに基づいて、高いセキュリティを確保することができる。
【００９０】
図１に示した本実施形態に係る整数を暗号化し復号化する方法においては、個人を識別するための識別子等を整数型の識別子として受け付けて暗号化することができる。これに限定されず、本実施形態に係る整数を暗号化し復号化する方法においては、コンピュータ装置等が受け付けうる、種々のデータもまた暗号化及び復号化することができる。例えば、整数に変換した画像を本発明の方法を用いて暗号化及び復号化することにより、第三者に対する漏洩を保護した画像の伝達が可能になる。また例えば、記憶媒体の特定の記憶領域を参照するためのファイル割り当てテーブル等を本発明の方法を用いて暗号化及び復号化することにより、第三者に対する漏洩を保護した記憶媒体等を提供できる。これらの、本実施形態に係る整数を暗号化し復号化する方法を用いて提供できる記憶媒体等は、暗号化又は復号化の処理においてコンピュータネットワーク等を介する必要はなく、ネットワーク等から切り離されたオフライン状態でも暗号化及び復号化を実施可能である。したがって、本実施形態においては、通信技術と連携して動作するセキュリティ技術等と連携できると共に、当該セキュリティ技術とは独立して、単独で暗号化及び復号化の方法を提供することも可能である。
【００９１】
［個人情報保護手順の例］
図３に、本発明の一実施形態に係る、整数を暗号化する方法を用いる個人情報保護手順の例を示す。
【００９２】
暗号化装置１００は、本実施形態に係る入力された整数から暗号化した整数を生成する装置である。具体的には、暗号化装置１００としては、パーソナルコンピュータ、携帯型又は可搬型コンピュータ又は携帯電話端末等の、整数演算の処理が可能なコンピュータ機器が挙げられるが、これらに限定されない。
【００９３】
暗号化装置１００は、特定の個人２０が有する識別のための数字及び／又は文字を含む識別子等を、整数型の識別子３０として受け付ける。具体的には、個人２０は、例えば事業体等に所属する構成員の１人であり、整数型の識別子３０は当該事業体において複数の構成員を識別するために用いられる、複数の桁の整数を含む構成員識別子等である。例えば、構成員識別子の形態は、当該事業体等の所属が開始された年次を表す数字２桁及び同時期に所属を開始した他の構成員を含む複数の構成員のそれぞれに割り当てられた６桁の数字等からなる、全体として８桁の数字である。特定の個人２０と整数型の識別子３０とは１対１に関連付けられ、他の構成員とは関連付けられない。また、構成員識別子等が英文字等を含む場合、整数型の識別子３０は、英文字及び数字の全体又はその一部をコンピュータ処理可能な文字コードの集まりとして扱われ、個々の文字コードを１６進法の整数として、整数型の識別子３０を構成される。本実施形態に係る整数を暗号化し復号化する方法においては、このように変換された１６進法の整数を暗号化し、当該暗号化した１６進法の整数から元のコンピュータ処理可能な文字コードの集まりを復号化する。構成員識別子等が画像データの場合についても、１６進法の整数の集まりとして元の画像データを扱うことにより、同様に暗号化及び復号化が可能である。
【００９４】
識別用途Ａ（１２２）、識別用途Ｂ（１２４）及び識別用途Ｃ（１２６）は、整数型の識別子３０を用いて特定の個人２０を識別することが必要な任意の用途である。図１にはこれらの３つの識別用途を図示するが、識別用途の種類、個数等は、これらに限定せず、適宜設定できる。具体的には、これらの用途は、特定の個人２０による電子メール送受信等を含む事業体内部のコンピュータネットワーク利用又は事業体と関連付けられるオンライン銀行業務又は保険サービス等の利用、あるいは事業体による特定の個人２０の業務に係る記録行為等としてもよい。それぞれの識別用途Ａ（１２２）、識別用途Ｂ（１２４）及び識別用途Ｃ（１２６）は、暗号化装置１００において互いに他を区別するための情報を含んでもよい。例えば、識別用途Ａの固有情報（６２）、識別用途Ｂの固有情報（６４）及び識別用途Ｃの固有情報（６６）等は、互いに他と異なるようにしてもよい。例えば、これらの識別用途の固有情報は特定の整数の値でもよく、前述の数式（ＸＩ）に含まれるＮ又はＥの値として、それぞれ独立して異なる値を用いてもよい。
【００９５】
暗号化装置１００は、受け付けた整数型の識別子３０に対して、識別用途Ａの固有情報（６２）、識別用途Ｂの固有情報（６４）又は識別用途Ｃの固有情報（６６）を用い、それぞれの識別用途の固有情報ごとに独立して、暗号化計算Ａ（７２）、暗号化計算Ｂ（７４）又は暗号化計算Ｃ（７６）を実施する。当該暗号化計算には、前述のように、整数のべき乗を含む計算のために暗号化装置１００が用いるコンピュータ装置等において桁あふれを発生する条件で、数式（ＸＩ）の展開形を用いて暗号化した整数を生成する諸段階が含まれる。当該暗号化計算の結果として、暗号化した整数Ａ（４２）、暗号化した整数Ｂ（４４）又は暗号化した整数Ｃ（４６）が生成される。
【００９６】
暗号化した整数Ａ（４２）、暗号化した整数Ｂ（４４）又は暗号化した整数Ｃ（４６）のそれぞれは、独立して、対応する識別用途Ａ（１２２）、識別用途Ｂ（１２４）又は識別用途Ｃ（１２６）のために提供される。
【００９７】
例えば、識別用途Ａ（１２２）が事業体内部のコンピュータネットワーク利用等である場合、暗号化装置１００は、特定の個人２０を識別するための整数型の識別子３０に替えて暗号化した整数Ａ（４２）を、情報伝達経路Ａ（８２）を介して当該事業体のコンピュータネットワーク１３２等に提供する。なお、情報伝達経路Ａ（８２）は、例えば当該事業体内のローカルエリアネットワーク等としてもよい。
【００９８】
また、例えば、識別用途Ｂ（１２４）が事業体による特定の個人２０の業務に係る記録行為等である場合、暗号化装置１００は、特定の個人２０を識別するための整数型の識別子３０に替えて暗号化した整数Ｂ（４４）を、情報伝達経路Ｂ（８４）を介して当該事業体の勤務管理記憶装置１３４等に提供する。なお、情報伝達経路Ｂ（８４）は、例えば当該事業体の出入口等に適宜備えられた入構者記録のための端末装置及び記憶装置等としてもよい。
【００９９】
これらのコンピュータ処理可能な数値データに限らず、暗号化装置１００は、特定の個人２０を識別するための整数型の識別子３０に替えて暗号化した整数Ｃ（４６）を、情報伝達経路Ｃ（８６）を介して不特定の他者１３６等に提供することができる。情報伝達経路Ｃ（８６）は、一般公衆回線等の任意の形式でもよい。例えば、不特定の他者１３６は、当該事業体と独立して運営される団体加入保険サービス業の受付担当者であり、当該事業体の構成員である特定の個人２０は、情報伝達経路Ｃ（８６）として一般公衆回線の電話等を用い、当該団体保健サービスにおいて自己を特定するための情報として、暗号化した整数Ｃ（４６）を送信してもよい。この送信は、通話、ファクシミリ、電子メール等の任意の形態を含む。したがって、電話等の通話の音声がたまたま周囲にいる第三者に聞かれてしまう等の状況により、この送信の内容が無関係の第三者に傍受されても、本実施形態に係る暗号化装置１００により暗号化した整数Ｃ（４６）は、特定の個人２０を識別するための整数型の識別子３０とは異なる整数であるため、当該第三者は傍受内容から当該整数型の識別子３０を知ることができない。すなわち、本実施形態に係る暗号化装置１００を用いることにより、個人情報を漏洩から保護することが可能になる。
【０１００】
このようにして、本実施形態に係る暗号化装置１００においては、特定の個人２０に関連付けられる整数型の識別子３０から、識別用途ごとに異なる暗号化した整数を生成し、当該特定の個人２０の個人情報を漏洩から保護することができる。
【０１０１】
さらに、本実施形態に係る暗号化装置１００は、特定の識別用途において複数の構成員の識別子を一括して暗号化してもよい。
【０１０２】
また、暗号化装置１００が受け付ける整数型の識別子３０が個々の特定の個人２０ごとに異なることにより、別個の整数型の識別子３０ごとに、暗号化した整数が生成される。したがって、識別用途Ａ（１２２）、識別用途Ａの固有情報（６２）及び暗号化計算Ａ（７２）が一定であっても、異なる整数型の識別子３０を有する事業体内の複数の構成員等は、それぞれ異なる暗号化された整数Ａ（７２）を得ることができる。
【０１０３】
例えば、事業体のネットワーク管理者等は、識別用途Ａの固有情報（６２）をネットワークメンテナンスの日時等の特定の条件にしたがって選択することにより、当該事業体の複数の構成員のネットワークアカウント情報のそれぞれを別個に一括して暗号化できる。ネットワーク管理者等は識別用途Ａの固有情報（６２）を選択する条件を管理することにより、複数の構成員のアカウント情報を一括して暗号化して保持し、管理できる。さらに数式（ＸＶ）及び数式（ＸＶＩ）に含まれる整数Ｆが第三者に知られにくい又は推定されにくいことにより、この値を知らない第三者に対して明示的なアカウント情報を隠蔽することが可能になる。
【０１０４】
本実施形態に係る暗号化装置１００は、具体的にはパーソナルコンピュータ等で実行可能な汎用のワークシート等のアプリケーションに内蔵された整数計算ライブラリ等を用いて実装できる。したがって、本実施形態に係る整数を暗号化し復号化する方法においては、特に専用の計算機等を用意することなく、既存の計算機を用いて社員番号等の暗号化及び復号化を実施することも可能である。
本実施形態に係る方法を用いない第三者は、暗号化又は復号化のいずれかの諸段階において桁あふれが発生することにより正確な暗号化及び／又は復号化ができない。したがって、本実施形態の方法は、構成員の識別子等の個人情報を、このような第三者に対する漏洩から保護することが可能になる。
【０１０５】
このように、本実施形態に係る暗号化装置１００は、特定の個人と関連付けられた識別番号等が漏洩する状況においても、同一の識別番号と関連付けられた他の複数の個人情報に対する第三者からの推定を極めて困難にできるという効果がある。また、本実施形態に係る暗号化装置１００によれば、同一の個人情報等から複数の異なる暗号化した情報を生成して使い分けることが可能になる。さらに、本実施形態に係る暗号化装置１００によれば、音声による通話又は印刷物等の文書等を含む多様な形態で個人情報を漏洩から保護することが可能になる。
【０１０６】
［個人情報保護手順の別の例］
図４に、本発明の一実施形態に係る、整数を暗号化する方法を用いる個人情報保護手順の別の例を示す。図３と共通する箇所は説明を省略する。
【０１０７】
図４においては、暗号化装置１００は、特定の個人２０から受け付けた整数型の識別子３０に対して、追加の桁３７を適宜追加する。この追加の桁の形式は、整数型の識別子３０と同様に整数である。追加の桁３７の桁数は何桁でもよく、例えば２桁、３桁、又は４桁等でもよい。追加の桁３７は、整数型の識別子３０に対して左側から追加してもよく右側から追加してもよい。あるいは、整数型の識別子３０を予め定めた桁において分割し、追加の桁３７を挿入してもよく、追加の桁３７の追加の態様は適宜設定できる。また、追加の桁３７の値は何でもよく、本実施形態に係る整数の暗号化及び復号化を利用する事業体又はシステム等により任意に用意されてもよく、あるいは整数型の識別子３０から予め定めた手順により生成してもよい。例えば、整数型の識別子３０の各桁の数字の和を算出した値の下位２桁等を、追加の桁３７としてもよい。さらに、追加の桁３７は、識別用途Ａ（１２２）、識別用途Ｂ（１２４）及び識別用途Ｃ（１２６）等に依存してそれぞれの識別用途ごとに独立して用意されてもよい。
暗号化装置１００は、追加の桁３７を追加することにより、整数型の識別子３０及び追加の桁３７に含まれる各桁の数字を含む新たな整数である、桁増しした識別子３８を生成する。
【０１０８】
一例として、桁増しした識別子３８は、整数型の識別子３０の右に追加の桁３７を追加した数字の集まりが表す、１つの整数として生成される。例えば、整数型の識別子３０が８桁の整数であり、追加の桁３７が２桁の整数である場合、桁増しした識別子３８は１０桁の整数である。桁増しした識別子３８の値は次式で表される。
【数２７】
2011180390.tif 000020
式中、Ｘ３８は桁増しした識別子３８の値、Ｘ３０は整数型の識別子３０の値、Ｘ３７は追加の桁３７の値であり、Ｍは記数法の底である。例えば、これらの整数が１０進法の整数であるときには、Ｘ３８の値はＸ３０を１００倍してＸ３７を加えた値である。記数法は１０進法に限らず、２進法、８進法又は１６進法等を任意に用いることができる。桁増しする桁の数は、２桁に限らず、適宜設定できる。
【０１０９】
追加の桁３７を含む桁増しした識別子３８に対する暗号化の処理は、図１に示した一実施形態のフロー図、又は図３に示した実施形態の識別用途に依存して実施される暗号化の手順等と同様である。すなわち、図４に示す形態の暗号化の処理により生成される暗号化した整数は、コンピュータネットワーク１３２又は勤務管理記憶装置１３４等を用いてコンピュータ処理可能なデータとして生成してもよく、不特定の他者１３６が知りうる音声又は出版物等の形態で生成してもよい。
【０１１０】
一実施形態において、構成員の生年月日に含まれる数字等を識別子として利用する事業体等は、本実施形態に係る整数を暗号化し復号化する方法を用い、当該構成員の生年月日に含まれる数字等に追加して、任意の２桁の数字を追加の桁３７として組み合わることが可能である。これにより、生年月日が同一の構成員が複数存在しても、任意の２桁の数字が相互に異なれば、生成する暗号化された数字を互いに異なるようにすることができる。当該事業体等は、追加の桁３７を用いることにより、暗号化した整数を用いて構成員を識別することができる。
【０１１１】
このように、予め定めた桁数に追加の桁３７を追加することにより、暗号化の処理に入力される整数は、特定の個人２０等が有する識別のための情報そのものではなくなる。よって、暗号化装置１００においては、桁を追加して得られる整数を暗号化することにより、特定の個人２０等の個人情報をさらに漏洩から保護した暗号化が可能になる。
【０１１２】
［個人情報保護手順のまた別の例］
図５に、本発明の一実施形態に係る、整数を暗号化する方法を用いる個人情報保護手順のまた別の例を示す。図３又は図４と共通する箇所は説明を省略する。
【０１１３】
図５においては、暗号化装置１００は、乱数発生手段３９及びオフセット情報４０を含む。
【０１１４】
暗号化装置１００は、整数型の定数であるオフセット情報４０を、整数型の識別子３０に対して加算又は減算する。例えば、整数型の識別子３０が整数Ｘｉであり、オフセット情報４０が整数Ｔであるときに、暗号化装置１００は、整数Ｘｉに代えて、整数（Ｘｉ＋Ｔ）又は整数（Ｘｉ−Ｔ）を、暗号化の処理の入力とする。オフセット情報４０は、元の整数への復号化の段階において、暗号化における加算又は減算の逆の処理として、減算又は加算されることにより、整数型の識別子３０が正しく復元される。オフセット情報４０は、定数に限らず、暗号化装置１００が１つの整数型の識別子３０を受け付けて動作するごとに、毎回異なる値とすることもできる。例えば、暗号化装置１００は、乱数発生手段３９を用いて乱数を発生させ、当該発生した乱数に基づいてオフセット情報４０を生成してもよい。
【０１１５】
別の例としては、暗号化装置１００は、後述する換字式暗号化（図６）の鍵Ｒ（数式（ＸＶＩＩＩ））の値を生成するために、乱数発生手段３９を用いてもよい。
【０１１６】
また別の例としては、暗号化装置１００は、後述するべき剰余及び換字式を重畳する暗号化（図６）において、ループカウンタＬ（図６）の値を生成するために、乱数発生手段３９を用いてもよい。
【０１１７】
また別の例としては、暗号化装置１００は、公開鍵暗号化技術における公開鍵に対して、オフセット情報４０を用いてオフセットした公開鍵を生成してもよい。具体的には、オフセット情報４０が整数Ｔであるときに、数式（ＸＩ）に含まれる変数Ｅを決定した後に、整数（Ｅ＋Ｔ）又は整数（Ｅ−Ｔ）を、公開鍵としてもよい。したがって、オフセット情報４０（すなわち整数Ｔ）が加算又は減算されていることを知らない第三者が解読のためにこの公開鍵を用いることは無駄な手順となる。したがって、オフセット情報４０を公開鍵に併用することにより、暗号化された整数等の情報の秘匿性をさらに高めることができる。
【０１１８】
また別の例としては、暗号化装置１００は、上述の乱数発生手段３９及びオフセット情報４０の両者を用いて、整数型の識別子３０を暗号化することもできる。
図５においては、識別用途Ａ（１２２）、識別用途Ｂ（１２４）及び識別用途Ｃ（１２６）等のそれぞれに対応する暗号化の過程を、整数型の識別子３０から、暗号化した整数Ａ（４２）、暗号化した整数Ｂ（４４）及び暗号化した整数Ｃ（４６）へのそれぞれ独立した矢印として表している。暗号化装置１００は、これらのそれぞれについて、独立して乱数発生手段３９又はオフセット情報４０を用いる。したがって、それぞれの識別用途ごとに生成した、暗号化した整数Ａ（４２）、暗号化した整数Ｂ（４４）又は暗号化した整数Ｃ（４６）は、乱数発生手段３９を用いて発生した乱数の情報、オフセット情報４０、及び本発明のいずれかの実施形態に係る暗号化の情報の全てを正確に用いなければ、いずれも正しく復号化することができない。このように、本実施形態に係る個人情報保護手順においては、正確な復号化のための情報の種類をより多く必要とすることで、周知の公開鍵暗号化技術等に比較して、さらに秘匿性を高めることができる。
【０１１９】
［復号化の手順の例］
図６に、本発明の一実施形態に係る、暗号化した整数の復号化手順の例を示す。
【０１２０】
復号化装置１１０は、暗号化装置１００が生成した暗号化された整数を復号化するための装置である。具体的には、復号化装置１１０としては、パーソナルコンピュータ、携帯型又は可搬型コンピュータ又は携帯電話端末等の、整数演算の処理が可能なコンピュータ機器が挙げられるが、これらに限定されない。
【０１２１】
図６においては、説明の簡潔化のためにコンピュータ処理可能な数値に関し、図３を示して説明した暗号化装置１００が生成した暗号化した整数Ａ（４２）及び／又は暗号化した整数Ｂ（４４）に対する復号化を説明するが、通話又は文書等の形態で伝達される暗号化した整数の復号化についても同様である。図３と共通する箇所は説明を省略する。
【０１２２】
図６は、本実施形態に係る復号化装置１１０が、暗号化した整数Ａ’（５２）及び／又は暗号化した整数Ｂ’（５４）を受け付け、整数型の復号化した識別子４０を生成することを示す。ここで、暗号化した整数Ａ’（５２）は、整数型の識別子３０に対して暗号化装置１００が暗号化計算Ａ（７２）を用いて生成した暗号化した整数Ａ（４２）が、情報伝達経路Ａ（８２）を介してコンピュータネットワーク１３２等に伝達された後に、さらに情報伝達経路Ａ’（１０２）を介して本実施形態に係る復号化装置１１０に伝達したものである。したがって、暗号化した整数Ａ’（５２）は、暗号化した整数Ａ（４２）と同一である。同様に、暗号化した整数Ｂ’（５４）は、暗号化した整数Ｂ（４４）と同一である。
【０１２３】
復号化装置１１０は、暗号化した整数Ａ’（５２）及び暗号化した整数Ｂ’（５４）に対して、図１に示したステップＳ２００からステップＳ２２０の諸段階を実施し、整数型の復号化した識別子４０を生成する。
【０１２４】
暗号化した整数Ａ’（５２）は、暗号化装置１００による暗号化計算Ａ（７２）において、識別用途Ａ（１２２）の固有情報（６２）を用いて生成した暗号化した整数Ａ（４２）である。固有情報（６２）は、前述の数式（ＸＩ）に含まれるＮ又はＥの値、及びＫの値でありうる。よって、復号化装置１１０は、暗号化計算Ａ（７２）において用いられたＥの値及びＫの値を、固有情報（９２）として復号化計算Ａ（１１２）に用いることができる。同様に、復号化装置１１０は、暗号化計算Ｂ（７４）において用いられたＥの値及びＫの値を、固有情報（９４）として復号化計算Ｂ（１１４）に用いることができる。
【０１２５】
なお、固有情報（９２）及び／又は固有情報（９４）は、予め復号化装置１１０が格納してもよく、予め定められた手順にしたがって暗号化装置１００又は復号化装置１１０の一方又は両方が生成してもよい。
【０１２６】
図６は、情報伝達経路Ａ（８２）、情報伝達経路Ｂ（８４）、情報伝達経路Ａ’（１０２）及び情報伝達経路Ｂ’（１０４）としてコンピュータ処理可能な数値を伝達されるネットワーク等の情報伝達経路を示すが、これらに限らず、暗号化した整数は、音声又は文書等を含む任意の伝達経路又は伝達手段を介して、暗号化装置１００から復号化装置１１０に向かって伝達することが可能である。
【０１２７】
本実施形態に係る整数を暗号化し復号化する方法は、これらの伝達経路又は伝達手段を介して伝達される暗号化された整数に対して、桁あふれを発生する条件における暗号化に用いた特定の数値で復号化することによってのみ、元の整数を得られるという特徴がある。したがって、伝達経路又は伝達手段等にアクセスする可能性のある第三者は当該個人情報を正確には復号化できず、当該個人情報は、漏洩から保護される。
【０１２８】
図６には、暗号化装置１００及び復号化装置１１０のそれぞれを別個に示したが、暗号化装置１００及び復号化装置１１０は、一体化されてもよい。暗号化した整数を伝達する伝達経路又は伝達手段等の形態は、コンピュータネットワークでもよく、一般公衆回線の電話を含む通話、ファクシミリ、電子メール等の形態でもよい。それぞれの伝達経路又は伝達手段に依存して、１つの整数型の識別子３０から独立して別個に暗号化した整数を生成してもよく、さらに図４に示した追加の桁３７を適宜用いて整数型の識別子３０を加工した後に暗号化してもよく、図５に示したようにオフセット情報４０又は乱数発生手段３９を併用してもよい。このようにして、本実施形態に係る整数を暗号化し復号化する方法においては、構成員識別子等の１つの識別子から、当該識別子を用いる各種の情報伝達手段ごとに、個人情報を秘匿した別個の整数を提供できる。
【０１２９】
暗号化又は復号化の処理は、暗号化装置１００及び復号化装置１１０等のコンピュータ装置を用いて自動的に実施できるので、本実施形態に係る方法のユーザはこれらの手順を特に意識することなく、自己の個人情報を秘匿した整数を自己の識別子に用いることができる。
【０１３０】
［べき剰余と換字式とを重畳する暗号化の処理］
図７及び図８に、本発明の別の実施形態に係る、整数を暗号化し復号化する方法のフロー図を示す。図７は、本発明の別の実施形態に係る、整数を暗号化する方法のフロー図であり、図８は、当該暗号化した整数を復号化する方法のフロー図である。具体的には、図７及び図８に示す方法は、べき剰余と換字式とを重畳する暗号化及び復号化の処理を含む。図１に示した実施形態と重複する箇所は説明を省略する。
【０１３１】
まず、図７を参照し、暗号化の処理を暗号化装置１００（図３）の動作として説明する。
暗号化装置１００は、図７のステップＳ３００で変数領域を確保する。具体的には、暗号化装置１００は、次の表２に列挙する変数を用いる計算のために、メモリ領域を適宜確保する。表２に示す変数は、表１に示した変数に、Ｚｉ、Ｒ、Ｌ及びＴを追加したものである。変数Ｚｉは、前述の変数Ｙｉと同様に設定できる。
【表２】
2011180390.tif 000021
【０１３２】
また、ステップＳ３００では、暗号化装置１００は、次ループカウンタＬ等の初期設定を適宜実施する。例えば、べき剰余を用いる暗号化及び換字式暗号化の組み合わせを全体として３回繰り返す場合に、暗号化装置１００は、ステップＳ３００においてループカウンタＬに整数３を設定する。
【０１３３】
ループカウンタＬは、べき剰余を用いる暗号化及び換字式暗号化のいずれとも独立した変数であり、暗号化による秘匿性の強度に影響し、暗号化及び復号化の計算時間に影響する場合がある。ループカウンタＬには、秘匿性の強度を確保するために、予め下限を設定してもよい。さらに、ループカウンタＬには、暗号化及び復号化の計算処理にかかる時間を短縮するために、予め上限を設定してもよい。したがって、ループカウンタＬの値は、予め設定された下限及び／又は上限の範囲にしたがって設定できる。ループカウンタＬを第三者に秘密とすることで、それぞれの暗号化の方法における秘匿性に加えて、第三者の解読の手間はさらに膨大となりうる。したがって、本発明の別の実施形態に係る整数を暗号化し復号化する方法においては、元の整数に対して極めて高い秘匿性を与えることができる。
【０１３４】
また、ステップＳ３００では、暗号化装置１００は、べき剰余を用いる暗号化に含まれる変数であるオフセットＴ及び任意の整数ｍ、並びに換字式暗号化に含まれる変数である鍵Ｒも同様に、第三者に秘密となるように選択する。これらの値の選択には、例えば、図５に示した乱数発生手段３９を用いることもできる。
【０１３５】
ステップＳ３１０は、Ｓ３１１からＳ３１５の各ステップを含む。これらのステップは、それぞれ、図１（ａ）に示したステップＳ１１０からステップＳ１５０の処理と同等である。図５に示したように、暗号化する整数Ｘｉは、オフセットＴを用いて、整数（Ｘｉ＋Ｔ）又は整数（Ｘｉ−Ｔ）に置き換えた後に、ステップＳ１１０からステップＳ１５０の処理に用いられてもよい。ステップＳ３１５の処理の後には、べき剰余により暗号化されたＹｉが生成される。
【０１３６】
暗号化装置１００は、ステップＳ３２０に含まれる換字式暗号化の処理を順次実施する。ステップＳ３２０は、Ｓ３２１及びＳ３２２を含む。まず、暗号化装置１００は、ステップＳ３２１において、鍵Ｒで整数Ｙｉを換字式暗号化し、整数Ｚｉを生成する。例えば、整数Ｚｉは、次式で表される。
【数２８】
2011180390.tif 000022
式中、Ｒは換字式暗号化の鍵として用いる整数であり、Ｒｏｔ（）は鍵Ｒを用いて整数Ｙｉを換字式暗号化する関数である。具体的には、Ｒｏｔ（）は、十進法等の記数法を用いて整数Ｙｉを記述して得られる数字の並びを文字列として扱う、公知のシーザー暗号化を実施するものである。
【０１３７】
例えば、Ｒｏｔ（）では、シーザー暗号化における鍵Ｒを整数３として、十進数の数字１文字からなる集合｛０，１，２，３，４，５，６，７，８，９｝の各要素に鍵Ｒを加算し、集合｛３，４，５，６，７，８，９，０，１，２｝の各要素を同一の順番で対応させて換字する。また、Ｒｏｔ（）は、シーザー暗号化とは異なって、ランダムな順序を用いる情報又は所定の数字の並び方の情報等と関連付け、対応させる集合はランダムな順序又は所定の数字の並び方とするものでもよい。また、Ｒｏｔ（）は、元の集合の一部の要素に対して鍵Ｒを用いる換字式暗号化を実施してもよく、当該一部の要素の選択には乱数を用いてもよく、当該一部の要素以外の残りの要素に対して公開鍵暗号化を含む任意の暗号化を実施してもよい。また、Ｒｏｔ（）は、これらに限定せず、記数法の桁の数字を予め用意した規則にしたがって、可逆的かつ一対一に対応するように換字し、整数Ｙｉを整数Ｚｉに変換することができる。これらの換字式暗号化は、ループカウンタＬに依存せずに毎回実施してもよく、ループカウンタＬに依存して、初回のみ又は偶数回のみ等、Ｌの所定の値に基づいて実施してもよい。
【０１３８】
例えば、換字式暗号化の処理において、英字アルファベットを２６進数の１桁の数字として扱い、ｕｎｉｘ（登録商標）オペレーティングシステムが備える文字列をシーザー暗号化するためのｒｏｔ１３関数等を利用してもよい。また例えば、このｒｏｔ１３関数が有する鍵である、整数の１３に換えて任意の１桁の整数を鍵に用い、同様の関数を１０進数の整数に対するシーザー暗号化の関数として定義して用いてもよい。
【０１３９】
次いで、ステップＳ３２２において、暗号化装置１００は、必要であれば桁数の情報を保持する。例えば、暗号化装置１００は、換字式暗号化により生成した整数Ｚｉの最上位がゼロである場合に、この情報を変換前の整数Ｙｉの桁数として保持する。当該保持した桁数の情報は、後述する復号化の処理において生成する整数の確認のために用いられてもよい。
【０１４０】
次いで、ステップＳ３３０において、暗号化装置１００は、ループカウンタＬをデクリメントする。さらに、ステップＳ３４０において、暗号化装置１００は、ループカウンタＬが０以下であるかどうかを判定する。判定の結果がＹＥＳであれば処理を終了し、ＮＯであればステップＳ３５０に進み、上述の数式（ＸＶＩＩＩ）から生成した整数Ｚｉを整数Ｘｉとして、ステップＳ３１０に戻る。
なお、繰り返しにおいて、変数Ａ、Ｂ、Ｄ、Ｋは同じ値を再利用してもよい。変数Ｅ及びＦの対も同じ値を再利用してもよいが、より好適には、ループカウンタＬの値に依存して変数Ｅ及びＦの対を変化することにより、第三者による解読をさらに困難にすることが可能になる。
【０１４１】
このようにして、暗号化装置１００は、ステップＳ３４０の判定がＹＥＳになるまで、上述のステップＳ３１０及びステップＳ３３０を繰り返す。全ての繰り返しの後に得られた整数Ｚｉが、最終的に暗号化された整数である。例えば、ループカウンタＬを３とした場合には、上述のステップＳ３１０及びステップＳ３２０が３回繰り返される。
【０１４２】
したがって、暗号化装置１００は、所定の回数だけ、ステップＳ３１０に含まれる、べき剰余を用いる暗号化の処理、及びステップＳ３２０に含まれる換字式暗号化の処理を続けて繰り返す。なお、べき剰余を用いる暗号化の処理と換字式暗号化の処理とは、全体を入れ替えてもよい。
【０１４３】
このように、本実施形態に係る整数を暗号化する方法においては、べき剰余を用いる暗号化の処理と換字式暗号化の処理とを重畳して用いることにより、いずれかの暗号化のみを用いる場合と比較して、極めて高い秘匿性を確保することが可能になる。
【０１４４】
［べき剰余と換字式とを重畳する復号化の処理］
次に、復号化の処理を、復号化装置１１０の動作として説明する。図１（ｂ）に示した復号化の処理と共通する箇所は説明を省略する。本発明の別の実施形態に係る整数を復号化する方法において、復号化装置１１０は、図８のステップＳ４００で変数領域を確保し、ループカウンタＬを初期化する。
【０１４５】
ステップＳ４１０において、復号化装置１１０は、換字式暗号を復号化する処理を実施する。ここで、復号化の対象になる数は、図７を用いて前述した、最終的に暗号化された整数Ｚｉである。
【０１４６】
ステップＳ４１０は、ステップＳ４１１及びステップＳ４１２の各ステップを含む。ステップＳ４１１では、復号化装置１１０は、必要に応じて整数Ｚｉの桁数の情報を復元する。これは、単に暗号化の過程において保持した情報との照合のために行われてもよい。ステップＳ４１２にでは、復号化装置１１０は、換字式暗号の復号化を実施し、整数Ｚｉから整数Ｙｉを生成する。例えば、整数Ｙｉは次式により復号化される。
【数２９】
2011180390.tif 000023
式中、Ｒｏｔ−１（）は、換字式暗号化により生成した整数Ｚｉを、鍵Ｒを用いて元の整数Ｙｉに復号化する関数である。
【０１４７】
次いで、ステップＳ４２０において、復号化装置１１０は、べき剰余を用いる復号化の処理を実施する。ステップＳ４２０は、ステップＳ４２１及びステップＳ４２２の各ステップを含む。これらの処理は、それぞれ、図１（ｂ）に示したステップＳ２１０及びステップＳ２２０の処理と同等である。ステップＳ４２０の処理では、べき剰余により復号化されたＸｎが生成される。
【０１４８】
ステップＳ４３０において、復号化装置１１０は、ループカウンタＬをデクリメントする。ステップＳ４４０において、復号化装置１１０は、ループカウンタＬが０以下であるかどうかを判定する。復号化装置１１０は、判定の結果がＹＥＳであれば処理を終了し、ＮＯであれば処理をステップＳ４５０に進める。
【０１４９】
ステップＳ４５０において、復号化装置１１０は、前述の数式（ＸＶＩ）から生成される整数ＸｎをＺｉとして、ステップＳ４１０に戻る。このようにして、復号化装置１１０は、ステップＳ４４０の判定がＹＥＳになるまで上述の諸段階を繰り返す。全ての繰り返しの後に得られた整数Ｘｎが、最終的に復号化された整数である。
【０１５０】
したがって、復号化装置１１０は、ステップＳ４１０に含まれる換字式暗号を復号化する処理、及びステップＳ４２０に含まれるべき剰余を用いる復号化の処理を、続けて繰り返し実行する。なお、換字式暗号を復号化する諸段階と、べき剰余を用いる復号化の処理とは、暗号化の処理の逆順であればよく、全体を入れ替えてもよい。
【０１５１】
このように、本実施形態に係る整数を復号化する方法においては、換字式暗号を復号化する処理とべき剰余を用いる復号化の処理とを重畳して用いることができる。本実施形態の復号化においては、対応する暗号化の処理により暗号化された整数Ｚｉから、元の整数Ｘｉと等しい整数Ｘｎが復号化される。
【０１５２】
［鍵をランダムに選択する暗号化の処理］
図９及び図１０に、本発明のまた別の実施形態に係る、整数を暗号化し復号化する方法のフロー図を示す。図９は、本発明のまた別の実施形態に係る、整数を暗号化する方法のフロー図であり、図１０は、当該暗号化した整数を復号化する方法のフロー図である。具体的には、図９及び図１０に示す方法は、べき剰余と換字式とを重畳する暗号化及び復号化の処理を含み、べき剰余による暗号化の鍵である整数Ｅをランダムに選択する処理を含む。図１又は図７に示した実施形態と重複する箇所は説明を省略する。
【０１５３】
まず、図９を参照し、暗号化の処理を、暗号化装置１００（図３）の動作として説明する。
ステップＳ５００では、暗号化装置１００は、変数領域を確保する。このステップＳ５００において用いられる変数は、前述の表２に示した変数と同等である。このステップＳ５００において、暗号化装置１００は、前述のようにループカウンタＬ等の初期設定を適宜実施してもよい。なお、暗号化装置１００は、べき剰余を用いる暗号化に含まれる他の変数であるオフセットＴ、任意の整数ｍ、及び換字式暗号化に含まれる変数である鍵Ｒも同様に、第三者に秘密となるように選択する。また、これらの値の選択において、暗号化装置１００は、例えば、図５に示した乱数発生手段３９を用いる。
【０１５４】
変数領域を確保した後、ステップＳ５１０では、暗号化装置１００は、べき剰余を用いて暗号化する処理を実施する。
ステップＳ５１０は、Ｓ５１１からＳ５１５の各ステップを含む。これらのうち、ステップＳ５１１、Ｓ５１２、Ｓ５１４及びＳ５１５は、図７に示したステップＳ３１１、Ｓ３１２、Ｓ３１４及びＳ３１５とそれぞれ同等である。
【０１５５】
ステップＳ５１３では、暗号化装置１００は、Ｄ又はＫと素である数の集合からランダムにＥを選択する。例えば、Ｄ又はＫと素である数の集合の各要素を大きさにしたがって昇順に配列し、配列した要素数を上限として整数型の乱数を発生させ、発生した乱数を配列の順番とする要素を選択して、整数Ｅとする。
【０１５６】
なお、暗号化する整数Ｘｉは、図５に示したように、オフセットＴを用いて、整数（Ｘｉ＋Ｔ）又は整数（Ｘｉ−Ｔ）に置き換えられた後に、ステップＳ５１１からステップＳ５１５の処理に用いられてもよい。
【０１５７】
以上の処理により、暗号化装置１００は、元の整数Ｘｉから、べき剰余を用いて暗号化した整数であるＹｉを生成できる。
【０１５８】
さらに、暗号化装置１００は、ステップＳ５２０に含まれる換字式暗号化の処理を順次実施する。ステップＳ５２０は、図７に示したステップＳ３２０と同等である。後続のステップＳ５３０、Ｓ５４０及びＳ５５０は、それぞれステップＳ３３０、Ｓ３４０及びＳ３５０と同等であり、説明を省略する。ステップＳ５４０の判定がＹＥＳであれば、最終的に暗号化された整数として整数Ｚｉが生成される。
【０１５９】
［鍵をランダムに選択する復号化の処理］
次に、復号化の処理を、復号化装置１１０（図３）の動作として説明する。
ステップＳ６００において、復号化装置１１０は、変数領域を確保し、ループカウンタＬを初期化する。この変数領域の確保は、前述の暗号化の処理におけるステップＳ５００と同様である。
【０１６０】
次いで、復号化装置１１０は、ステップＳ６１０に含まれる換字式暗号を復号化する処理を実施する。ここで、復号化の対象になる数は、図９に示した暗号化の処理において生成された、暗号化された整数Ｚｉである。
ステップＳ６１０は、図８に示したステップＳ４１０と同等である。
【０１６１】
ステップＳ６２０では、復号化装置１１０は、ＹｎをＸｎに復号化する処理を行う。ステップＳ６２０は、Ｓ６２１及びＳ６２２の各ステップを含む。
ステップＳ６２１では、復号化装置１１０は、前述の数式（ＸＶ）を成立する整数Ｆを生成するために、式中のｍをランダムな規則によって選択する。
ステップＳ６２２では、復号化装置１１０は、ステップＳ６２１にて生成された整数Ｆにより、数式（ＸＶＩ）を用いてＹｎをＸｎに復号化する。
【０１６２】
ステップＳ６１０及びステップＳ６２０を続けて実施した後の、ステップＳ６３０からステップＳ６５０の処理は、前述の図７に示したステップＳ４３０からステップＳ４５０の処理と同等であり、説明を省略する。ステップＳ６４０の判定がＹＥＳであれば、最終的に復号化された整数として整数Ｘｎが生成される。
【０１６３】
このように、本実施形態は、暗号化における整数Ｅの選択、及び復号化における整数ｍの選択のそれぞれをランダムな選択とすることができる。したがって、本実施形態の暗号化及び復号化の手順を正確に実行しなければ、暗号化された整数Ｚｉから復号化された整数Ｘｎを得ることはできず、本実施形態の方法は、これらの手順を知らない第三者に対して極めて高い秘匿性を有することができる。
【０１６４】
［多桁の整数の暗号化の処理］
図１１及び図１２に、本発明のさらに別の実施形態に係る、整数を暗号化し復号化する方法のフロー図を示す。図１１は、本発明のさらに別の実施形態に係る、整数を暗号化する方法のフロー図であり、図１２は、当該暗号化した整数を復号化する方法のフロー図である。具体的には、図１１及び図１２に示す方法は、多桁の整数の上位桁及び下位桁を分割する処理、及び分割した整数部分を関連付ける情報を保持する処理を含む。
【０１６５】
まず、図１１を参照し、暗号化の処理を、暗号化装置１００（図３）の動作として説明する。図１（ａ）、図７又は図９に示した実施形態と重複する箇所は説明を省略する。
【０１６６】
ステップＳ７００において、暗号化装置１００は、変数領域を確保する。このステップＳ７００において用いられる変数は、前述の表２に示した変数と同等である。後続するステップＳ７１０からステップＳ７４０の処理は、前述のステップＳ１１０からステップＳ１４０のそれぞれと同等である。
【０１６７】
ステップＳ７５０において、暗号化装置１００は、数式（ＸＩ）の展開形を用いて、整数Ｘｉを暗号化した整数Ｙｉを生成する。数式（ＸＩ）の展開形としては、前述の数式（ＸＩＩ）を用いられる。
【０１６８】
なお、暗号化装置１００は、入力の整数Ｘｉを２０桁の１０進数Ｘとして扱い、次式を用いて、５桁の１０進数で表される４個の整数部分に分割するようにしてもよい。
【数３０】
2011180390.tif 000024
式中、Ｘ１５は２０桁の整数Ｘの２０位から１６位、Ｘ１０は１５位から１１位、Ｘ５は１０位から６位、Ｘ０は５位から１位をそれぞれ含む、それぞれ５桁の１０進数である。すなわち、暗号化装置１００は、２０桁の１０進数Ｘを、５桁の１０進数として表されるＸ１５、Ｘ１０、Ｘ５及びＸ０からなる４個の整数部分に置き換える。なお、整数Ｘは、１９桁等の２０桁に満たない整数でもよく、上位の桁をゼロ詰めして表してもよい。また、分割する桁数は、計算手段等が備えるＣＰＵの整数演算のためのレジスタのビット幅等に基づいて適宜設定してもよい。
【０１６９】
ステップＳ７５０における展開形を用いる暗号化では、２個の整数の積を、次式のように置き換えて展開できる。一例として、２個の整数として整数Ｐ及びＱを示す。式中、Ｐ及びＱはそれぞれ２０桁の１０進数として表し、上位の桁に数字が存在しない場合はゼロ詰めしてもよい。
【数３１】
2011180390.tif 000025
数式（ＸＸＩ）のように展開することにより、分割された整数部分同士の積である式中の各項に含まれるＰ１５Ｑ１５、Ｐ１５Ｑ１０等はいずれも倍精度型の精度の範囲にある。したがって、本実施形態におけるステップＳ７５０の展開形では、倍精度型の整数演算を正確に行うことができる。
【０１７０】
なお、数式（ＸＸＩ）と同様に、２個の素数Ａ及びＢの積であるＮを次式のように表してもよい。式中、素数Ａ及びＢはそれぞれ２０桁の１０進数として表し、上位の桁に数字が存在しない場合はゼロ詰めしてもよい。
【数３２】
2011180390.tif 000026
したがって、本実施形態においては、素数Ａ及びＢもまた、倍精度型の整数の範囲を超える２０桁の整数等から選択することができる。
【０１７１】
以上の諸段階により、整数Ｘｉから、べき剰余を用いて暗号化した整数であるＹｉが得られる。整数Ｙｉを表すために必要なワード長は、元の整数Ｘｉを表すためのワード長と同じであるが、これに限定せず、暗号化した整数Ｙｉの用途等に応じて、又は他のセキュリティ手段又は方法等を組み合わせて、桁数を増す数字等を追加してもよい。また、あるいは整数Ｙｉを文字に変換して適宜記号等を含む文字を任意に追加してもよい。
【０１７２】
次いで、ステップＳ７６０において、暗号化装置１００は、上述のように分割したそれぞれの整数部分を関連付ける情報を保持する。具体的には、暗号化装置１００は、分割前の整数に対するそれぞれの整数部分の桁の情報を保持する。例えば、暗号化装置１００は、分割前の整数Ｘに対して、整数部分であるＸ１５、Ｘ１０、Ｘ５、及びＸ０のそれぞれが、整数Ｘの２０位から１６位、１５位から１１位、１０位から６位、及び５位から１位であることの情報が保持する。
【０１７３】
本実施形態においては、積Ｎ及び展開形に含まれるそれぞれの整数部分を関連付ける情報が保持され、互いに関連付けられる。本実施形態においては、それぞれの整数部分は別個に暗号化され復号化される独立した整数ではなく、全体が１つの整数として暗号化され復号化される。したがって、本実施形態においては、第三者による解読のための手がかりを増すことなく、情報を保護することが可能になる。
【０１７４】
本実施形態においては、桁ごとに差分を算出することにより、積Ｎに対する剰余を求めてもよい。一例として、次式に、２個の整数ＰＱの積のＮに対する剰余を例示する。次式のように計算することにより、差分を表す各項は、ＰＱの積のみで表される整数部分に比較して、より小さな整数になりうるので、計算を高速化できる場合がある。
【数３３】
2011180390.tif 000027
【０１７５】
［多桁の整数の暗号化の処理］
図１２を参照して、多桁の整数の復号化を、復号化装置１１０の動作として説明する。図１（ｂ）、図８又は図１０に示した実施形態と重複する箇所は説明を省略する。
【０１７６】
ステップＳ８００において、復号化装置１１０は、変数領域を確保する。この変数領域の確保は、前述の暗号化の処理におけるステップＳ７００と同様でもよい。
【０１７７】
ステップＳ８１０において、復号化装置１１０は、整数部分を関連付ける情報を復元する。この情報は、図１１のステップＳ７６０において保持された、整数部分を関連付ける情報である。したがって、ステップＳ８１０の動作により、複数の整数部分に対して、それぞれに関連付けられた桁の情報が復元される。例えば、整数部分であるＸ１５、Ｘ１０、Ｘ５、及びＸ０のそれぞれが、任意の整数Ｘの２０位から１６位、１５位から１１位、１０位から６位、及び５位から１位であることの情報が復元され、分割前の整数Ｘの桁を正しく再現することが可能になる。
【０１７８】
次いで、ステップＳ８２０において、復号化装置１１０は、ｍを任意の整数として前述の数式（ＸＶ）を成立するＦを生成する。この処理は、ステップＳ２１０と同等である。
次いで、ステップＳ８３０において、復号化装置１１０は、数式（ＸＶＩ）を用いて暗号化されたＹｉをＸｎに復号化する。この処理は、ステップＳ２２０と同等である。
【０１７９】
このようにすることで、本実施形態においては、倍精度型の整数の範囲を超える２０桁の整数等を復号化することができる。
【０１８０】
［個人情報保護手順の形態］
図１３に、本発明の一実施形態に係る、整数を暗号化する方法を用いる個人情報保護手順のさらに別の例を示す。図１３に示す例は、図３から図５に示した例に対して、保護する個人情報を表す整数が、倍精度型の整数の範囲を超えることができることが異なる。図３から図５に示した例と共通する箇所は、説明を省略する。
【０１８１】
図１３において、暗号化装置１００は、特定の個人２０が有する識別のための数字及び／又は文字を含む識別子等を、整数型の識別子３０として受け付ける。ここで、整数型の識別子３０は、倍精度型の整数の範囲を超える、例えば２０桁の整数とすることができる。
【０１８２】
暗号化装置１００は、受け付けた整数型の識別子３０の桁を分割し、整数部分３２、３４を生成する。図１３には、整数型の識別子３０から２個の整数部分３２、３４が生成されることを示すが、これに限定されず、生成される整数部分の個数は２個以上であれば何個でもよい。好適には、それぞれの整数部分３２、３４は、倍精度型の整数の範囲内にあり、例えば、それぞれは６４ビットの２進数を用いて表すことのできる整数である。
【０１８３】
例えば、整数型の識別子３０は２０桁の１０進数の整数である場合、暗号化装置１００は、この識別子３０を、５桁ごとに４個の１０進数の整数に分割し、それぞれの整数部分の桁の情報３５を保持する。このような桁の分割のためには、例えば、数式（ＸＸ）に示した桁の分割の方法を用いられる。この分割においては、それぞれの整数部分を関連付ける、桁の情報３５が保持される。桁の情報３５は、分割前の整数Ｘに対して、数式（ＸＸ）に表される整数部分Ｘ１５、Ｘ１０、Ｘ５、及びＸ０のそれぞれが、整数Ｘの２０位から１６位、１５位から１１位、１０位から６位、及び５位から１位であることの情報である。
【０１８４】
暗号化装置１００は、このようにして生成した整数部分及び桁の情報３５に対して、図１１に示した暗号化を行い、暗号化した整数Ａ（４２）、暗号化した整数Ｂ（４４）又は暗号化した整数Ｃ（４６）を生成する。
【０１８５】
本実施形態に係る個人情報保護手順においては、上述のように桁の情報３５を保持して整数部分を暗号化することができ、多桁の整数によって表される情報を暗号化できる。したがって、本実施形態に係る暗号化装置１００においては、このような方法によらない第三者に対して、個人情報の秘匿性を極めて高く確保することができる。
【実施例】
【０１８６】
（実施例１：ワークシートの内部関数を用いる実装例）
図１４に、本発明の一実施形態に係る、暗号化及び復号化の方法の諸段階をスプレッドシート形式の計算アプリケーションパッケージを用いて実装する例を示す。
【０１８７】
図１４に示す暗号化及び復号化計算ワークシート２００は、複数の行及び列の形態に配列されるセルを含む、スプレッドシート形式の計算アプリケーションのデータファイルである。暗号化及び復号化計算ワークシート２００に含まれる個々のセルは、１組の行番号及び列番号を用いて特定される。例えば、１行１列目のセルは暗号化の入力値としての整数Ｘｉ（入力Ｘｉ）を格納するために用いられる。同様に、１１行５列目のセルには暗号化した整数Ｙｉを、１９行５列目のセルには復号化した整数Ｘｎがそれぞれ格納される。１つのセルに格納させる値又は計算式の種類、数等は適宜設定できる。また、１つのセルに配列等を定義して複数の定数、変数又は計算式を任意に含むことも可能である。
【０１８８】
図１４に示す、暗号化及び復号化計算ワークシート２００において、１行１列目のセルと１１行５列目のセルとを対角とする長方形状の領域は、図１に示したステップＳ１００からステップＳ１５０における暗号化の処理に係る計算のために用いられる。
【０１８９】
２行１列目のセル及び２行２列目のセルには、２個の素数Ａ及びＢが格納される。ここで、２つの素数Ａ及びＢは、積ＡＢと整数Ｘｉとの差が所定範囲内である条件で生成される。具体的には、２つの素数Ａ及びＢは、図２に示される処理により、積ＡＢが整数Ｘｉよりも大きい整数の中で、最も整数Ｘｉと近いもの（最小直近整数）、となるように生成される。なお、２つの素数Ａ及びＢは、積ＡＢが整数Ｘｉよりも小さい整数の中で、最も整数Ｘｉに最も近い整数（最大直近整数）となるように生成されてもよい。
２行３列目のセルは、積ＡＢと整数Ｘｉとの差が所定範囲内であることの判定のために用いられる。図１４に示す例においては、この所定範囲を整数Ｘｉの数値に対する１％以内の差として予め設定することを示している。すなわち、積ＡＢと整数Ｘｉとの差の絶対値が、Ｘｉの１％以内であるかどうかが判定される。積ＡＢ、すなわち、Ａ及びＢの積は、前述の数式（ＸＩ）におけるＮであり、Ｎは本実施形態に係る整数の暗号化に含まれる剰余計算の底である。
【０１９０】
３行１列目のセルは、（Ａ−１）と（Ｂ−１）の積であるＤ値を格納するために用いられる。
４行１列目のセルは、（Ａ−１）と（Ｂ−１）の最小公倍数であるＫ値を格納するために用いられる。
５行１列目のセルは、Ｄ又はＫと素である整数Ｅ（Ｅ値）を格納するために用いられる。
【０１９１】
６行１列目のセルは、整数ＸｉのＥ乗の値を格納するために用いられる。
６行２列目のセルは、この整数ＸｉのＥ乗がワークシートの整数演算においてオーバーフローを発生しているか否かを判定するために用いられる。例えば、当該オーバーフローが発生することは、６行１列目の値がスプレッドシート形式の計算アプリケーションパッケージにおいて取り扱い可能な範囲を超えていることを表す「エラー」等の文字等により表され、６行２列目のセルには、当該エラーに対応して論理値の偽を表す数値等が格納される。
【０１９２】
７行１列目のセルは整数Ｘｉの展開形のために用いられるが、これに限らず、整数Ｘｉを展開することを表すフラグ又はメモ等の文字でもよい。
７行２列目及び８行２列目のセルは、図１に示したステップＳ１５０又は数式（ＸＩＩＩ）、数式（ＸＩＶ）又は数式（ＸＶＩＩ）を用いて記載した、記数法の桁を分割して入力Ｘｉから生成した整数を格納するために用いられる。例えば、７行２列目は上位桁から生成した整数であり、８行２列目は下位桁から生成した整数である。
【０１９３】
９行１列目のセルには、「展開形のべき乗」という文字列が含まれ、後続の又は近傍のセルにおいて、上位桁及び下位桁から生成した整数を用いるべき乗の計算が行われることを示している。
【０１９４】
９行２列目のセルには、上位桁から生成した整数同士の積が格納される。
１０行２列目のセルには、上位桁及び下位桁の積が格納される。
１１行２列目のセルには、下位桁から生成した整数同士の積が格納される。
【０１９５】
１１行３列目のセルには、前述の９行２列目から１１行２列目に格納された積の和が格納される。この積の和は、Ａ及びＢの積である積Ｎを底とする剰余計算の剰余を含む。
１０行４列目のセルには、１１行３列目の値に対するＮの商を格納する。
１１行４列目のセルには、１１行３列目の値に対するＮの剰余を格納する。
１１行５列目のセルには、暗号化の出力である整数Ｙｉ（出力Ｙｉ）を格納する。
【０１９６】
１２行１列目のセルと１９行５列目のセルとを対角とする長方形状の領域は、図１に示したステップＳ２００からステップＳ２２０における復号化の処理に係る計算のために用いられる。
【０１９７】
１２行１列目のセルには、前述の数式（ＸＶＩ）に含まれる任意の整数ｍが格納される。
１３行１列目のセルには、前述の数式（ＸＶＩ）を成立する整数Ｆが格納される。
１４行１列目のセルには、前述の数式（ＸＶＩ）に含まれる整数ＹｉのＦ乗の値が格納される。
【０１９８】
１４行２列目のセルは、この整数ＹｉのＥ乗がワークシートの整数演算においてオーバーフローを発生しているか否かを判定するために用いられる。例えば、このオーバーフローは、スプレッドシート形式の計算アプリケーションパッケージにおいて、１４行１列目の値が取り扱い可能な範囲を超えていることを表す「エラー」等の文字等により表される。１４行２列目のセルには、当該エラーに対応して、論理値の偽を表す数値等が格納される。
【０１９９】
１５行１列目のセルは整数Ｙｉの展開形のために用いられるが、これに限らず、Ｙｉを展開することを表すフラグ又はメモ等の文字でもよい。
１５行２列目及び１６行２列目のセルには、記数法の桁を分割して整数Ｙｉから生成した整数が格納される。例えば、１５行２列目は上位桁から生成した整数であり、１６行２列目は下位桁から生成した整数とすることができる。
【０２００】
１７行１列目のセルは、上位桁及び下位桁から生成した整数を用いるべき乗の計算のために用いられる。
１７行２列目のセルには、上位桁から生成した整数同士の積が格納される。
１８行２列目のセルには、上位桁及び下位桁の積が格納される。
１９行２列目のセルには、下位桁から生成した整数同士の積が格納される。
１９行３列目のセルには、前述の１７行２列目から１９行２列目に格納された積の和が格納される。すなわち、当該積の和は、Ａ及びＢの積である積Ｎを底とする剰余計算の剰余を含む。
【０２０１】
１８行４列目のセルには、１９行３列目の値に対する積Ｎの商が格納される。
１９行４列目のセルには、１９行３列目の値に対する積Ｎの剰余が格納される。
１９行５列目のセルには、復号化の出力であるＸｎが格納される。Ｘｎは、１行１列の入力Ｘｉと同一となる。
【０２０２】
このように、本実施形態に係る整数を暗号化し復号化する方法の諸段階は、べき乗及び剰余計算を実施可能なスプレッドシート形式の計算アプリケーションパッケージに実装できる。したがって、当該スプレッドシート等の実装手段をインストールしたパーソナルコンピュータ等を用いて、本実施形態に係る整数を暗号化し復号化する方法を実施でき、スプレッドシート形式のデータとして本実施形態に係る整数を暗号化し復号化する方法の実施手段を提供できる。
【０２０３】
（実施例２：ワークシートによる暗号化及び復号化の計算例）
図１５に、本発明の一実施形態に係る、暗号化及び復号化の方法の諸段階をスプレッドシート形式の計算アプリケーションパッケージに実装して計算する例を示す。例示の計算においては、スプレッドシート形式の計算アプリケーションパッケージとしてマイクロソフト社製エクセル２００３（登録商標）を用いた。このアプリケーションソフトウェアは、−１×１０３０７〜１×１０３０７の範囲の数値を扱うことが可能であるが、内部関数等の演算結果がこの範囲にない数値を発生する場合は「＃ｎｕｍ！」等のエラーメッセージを表示する。したがって、該エラーメッセージにより、このアプリケーションソフトウェアでは取り扱えない桁あふれした数値が発生したことを知ることができる。
【０２０４】
図１５に示したスプレッドシートの各セルは、本実施形態に係る整数の暗号化及び復号化の処理を実行するために、図１４を用いて説明したワークシートの各セルに対応する計算式をそれぞれ含む。
【０２０５】
図１５に示すワークシート計算例２１０においては、１行１列目のセルと１１行５列のセルを対角とする長方形状の領域は、入力の整数を暗号化する諸段階に係る計算のために用いられる。
【０２０６】
１行１列目のセルは、入力値としての整数Ｘｉを格納するために用いられる。この例では、入力整数を１０進法の「９９９９９１２３４５」が入力されている。
【０２０７】
２行１列目のセル及び２行２列目のセルには、２個の素数Ａ及びＢが生成されて格納される。これらの素数は、前述の図１４の２行３列目に示した、積ＡＢと入力Ｘｉとの差が、入力Ｘｉの数値に対する１％以内であるという条件を満たすように、生成される。図１５に示す例においては、素数Ａとして「１３」を、素数Ｂとして「７６９２３０７６９」が生成されている。素数の生成としては、例えば、整数Ｘｉを最大値とする整数の区間に対して通常の素数判定法の計算を行うことが挙げられるが、これに限定されない。素数判定法の計算は、例えば、エクセル２００３（登録商標）等のアプリケーションが備えるマクロ言語プログラム等によって実行してもよい。
【０２０８】
２行３列目のセルには、生成された素数Ａ及びＢが、積ＡＢとＸｉとの差が所定範囲内であるという条件を満たしているという情報が示される。図１５に示す例においては、これらの２個の素数Ａ及びＢの積（Ｎ）は「９９９９９９９９９７」であり、積ＡＢと入力Ｘｉとの差の入力Ｘｉに対する比率、すなわち｜ＡＢ−Ｘｉ｜／Ｘｉの値は約８．８×１０＾（−６）であり、１％未満である。したがって、図１５に示す例において生成された素数Ａ及びＢは、本実施形態に係る整数の暗号化の方法に必要な条件を満たしている。
【０２０９】
３行１列目のセルには、（Ａ−１）及び（Ｂ−１）の積であるＤ値として「９２３０７６９２１６」が表示される。
４行１列目のセルには、最小公倍数を計算するための内部関数であるＬＣＭ関数を用いて、（Ａ−１）と（Ｂ−１）の最小公倍数であるＫ値として「７６９２３０７６８」が表示される。
５行１列目のセルには、Ｄ値又はＫ値と素である整数Ｅとして「１１１１４３２３」が表示される。整数Ｅは、予め整数Ｅとして採用されうる任意の個数の候補を適宜用意し、上記のように計算されたＤ値及びＫ値のそれぞれに対して１以外の公約数を有するかどうかを、最大の公約数を計算するための内部関数であるＧＣＭ関数を用いて判定し、この判定に基づいて選択される。なお、整数Ｅの選択は、これに限定されず、整数Ｅが、Ｄ値又はＫ値と素である条件を満たすように選択されればよく、適宜設定できる。
【０２１０】
６行１列目のセルには、整数ＸｉのＥ乗の値が表示されるが、図１５に示す例においてはアプリケーションソフトウェアでは取り扱えない桁あふれした数値が発生することにより、「＃ｎｕｍ！」というエラーメッセージが表示される。したがって、上述の手順により設定した素数Ａ、素数Ｂ、Ｄ値、Ｋ値、及び整数Ｅは、本実施形態に係る整数の暗号化の方法を用いて入力の整数Ｘｉを暗号化するための条件を満たしている。
６行２列目のセルは、６行１列目のセルにおいて桁あふれが発生したことを表示する。例えば、６行２列目のセルは、６行１列目のセルの計算結果が、計算可能な正の整数の範囲を超えることを条件として、「桁あふれ」等の所定の文字列が表示される。例えば、この所定の文字列の表示により、本実施形態に係る整数の暗号化の方法のための条件が満たされたことを、計算方法の利用者に通知してもよい。
【０２１１】
７行１列目のセルは、図１５においては整数Ｘｉを表す。
７行２列目及び８行２列目のセルは、図１５においては、整数Ｘｉの上位５桁及び下位５桁のそれぞれを表す。
【０２１２】
９行２列目のセルには整数Ｘｉの上位桁の２乗を、１０行２列目には上位桁及び下位桁の積の２倍を、１１行２列目には下位桁の２乗を、それぞれ表す。すなわち、９行２列目から１１行２列目の３つのセルは、整数Ｘｉのべき乗の最も少ない回数である２乗について、前述の数式（ＸＩＩＩ）等に示した展開形に含まれる式の値を含む。
【０２１３】
１１行３列目のセルには、この展開形に含まれる式の値を、１０進法の桁を有する１つの整数として表す。具体的には、図１５の例では、９９９９８００００１×１０１０＋２４６８９７５３１０×１０５＋１５２３９９０２５の結果である、「９９９９８２４６９０７６８３３９９０２５」が表示される。
【０２１４】
１０行４列目には、１１行３列目の値を２行３列のセルの値（積Ｎ）で除した商「９９９９８２４６９３」が表示され、１１行４列目にはこのときの剰余「７６８２８７３１０４」が表示される。なお、１０行４列目の商は、本実施形態に係る暗号化の過程においては後続の計算で用いないため、表示を省略してもよい。
【０２１５】
なお、整数Ｘｉの３乗に対する剰余の値は、１１行４列目の値と１行１列の値（整数Ｘｉ）との積を、２行３列目のセルの値（積Ｎ）で除して得ることができる。４乗以上についても同様であり、整数Ｘｉを乗ずる回数が整数Ｅに達するまで、この処理を繰り返すことで、最終的に、１１行５列のセルに、暗号化した整数Ｙｉが得られる。図１５の例では、整数「２６５５７３１９０３」が得られたことを示す。
【０２１６】
図１５に示すワークシート計算例２１０においては、１２行１列目のセルと１９行５列目のセルを対角とする長方形状の領域は、復号化の処理に係る計算のために用いられる。
【０２１７】
１２行１列目のセル、及び１３行１列目のセルには、前述の数式（ＸＶ）に含まれる任意の整数ｍ及び整数Ｆが、それぞれ表示される。これらのｍ及びＦは、数式（ＸＶ）を満たすものであればよい。図１５の例では、整数ｍとして「１２１９８６２」が、整数Ｆとして「８４４２７５７９」が表示される。例えば、整数ｍ及び整数Ｆは、予め整数Ｆとして用いうる任意の個数の候補を用意し、暗号化の段階に用いたＥ値及びＫ値に基づいて、数式（ＸＶ）を満たすように、選択することができる。
【０２１８】
１４行１列目のセルには、前述の数式（ＸＶＩ）に含まれるＹｉのＦ乗の値が表示されるが、暗号化の過程に含まれるべき乗の計算と同様に、桁あふれした数値が発生することによって、「＃ｎｕｍ！」というエラーメッセージが表示される。したがって、この例において、上述の手順により設定された整数Ｆは、本発明の実施形態に係る暗号化した整数の復号化の方法を用いて、暗号化した整数Ｙｉを復号化するための条件を満たしている。
【０２１９】
１４行２列目のセルには、１４行１列目のセルにおいて桁あふれが発生したことが表示される。これは暗号化の過程における６行２列目のセルと同様である。
１５行１列目のセルには、暗号化した整数Ｙｉが表される。
１５行２列目及び１６行２列目のセルは、暗号化した整数Ｙｉの上位５桁及び下位５桁のそれぞれが表される。
【０２２０】
１７行２列目のセルには、暗号化した整数Ｙｉの上位桁の２乗が表される。
１８行２列目のセルには、上位桁及び下位桁の積の２倍が表される。
１９行２列目のセルには、下位桁の２乗が表される。
これらの、１７行２列目から１９行２列目の３つのセルは、暗号化した整数Ｙｉのべき乗の最も少ない回数である２乗について、前述の数式（ＸＶＩ）の展開形に含まれる式の値を含む。
１９行３列目のセルには、この数式（ＸＶＩ）の展開形に含まれる式の値が、１０進法の桁を有する１つの整数として表される。具体的には、図１５の例では、７０５２７４２４９×１０１０＋１６９４４９５９４２×１０５＋１０１７８０１４０９の結果である、「７０５２９１１９４０６１２００１４０９」が表示される。
【０２２１】
１８行４列目には、１９行３列目の値を２行３列目のセルの値（積Ｎ）で除した商「７０５２９１１９４」が表示され、１９行４列目にはこのときの剰余「２７２７８７４９９１」が表示される。なお、１８行４列目の商は、本実施形態に係る暗号化の過程においては後続の計算で用いないため、表示を省略してもよい。
【０２２２】
なお、整数Ｙｉの３乗に対する剰余の値は、１９行４列目の値と１７行２列目の値（Ｙｉ）との積を、２行３列目のセルの値（Ｎ）で除して得ることができる。４乗以上についても同様であり、暗号化した整数Ｙｉを乗ずる回数が整数Ｆに達するまで、この処理を繰り返すことで、最終的に、１９行５列目のセルに、復号化した整数Ｘｎが得られる。図１５の例では、整数Ｘｎとして、「９９９９１２３４５」が得られたことが示され、これは整数Ｘｉと一致し、暗号化された整数Ｙｉから整数Ｘｉが復号化されたことを表している。
【０２２３】
したがって、本実施形態に係る整数の暗号化及び復号化の方法の諸段階を用いることにより、暗号化の処理及び復号化の処理のいずれにおいても計算過程で桁あふれが発生する条件で、入力の整数Ｘｉを暗号化して暗号化した整数Ｙｉが得られ、暗号化した整数Ｙｉから復号化した整数Ｘｎが得られる。整数Ｘｎは、整数Ｘｉと等しいので、本実施形態に係る整数の暗号化及び復号化の方法は、整数Ｘｉを暗号化し、整数Ｘｎとして正確に復号化することができる。
【０２２４】
このように、本実施形態に係る整数の暗号化及び復号化の方法は、計算過程において桁あふれを発生する条件において、元の情報を正確に復元することができる。本発明の方法を用いない計算手段等においては、正しい暗号化も復号化も実施できない。したがって、本実施形態に係る整数の暗号化及び復号化の方法及び該方法の実施手段等は、個人情報等と関連する整数の形態の情報に対して高い秘匿性を提供できる。
【０２２５】
（実施例３：べき剰余と換字式の重畳を用いる暗号化の実装例）
図１６及び図１７は、本発明の実施形態に係る、べき剰余と換字式の重畳による暗号化及び復号化の処理を、スプレッドシート形式の計算アプリケーションパッケージを用いて実装する例を示す図である。簡潔な記載のため、べき剰余と換字式の重畳の処理の実装例を主に説明し、鍵のランダムな選択、及び多桁の整数の暗号化及び復号化の処理について、該当する箇所ごとに追加的に説明する。
【０２２６】
図１６は、べき剰余と換字式の重畳を用いる暗号化の処理を、スプレッドシート形式の計算アプリケーションパッケージを用いて実装する例を示す図である。前述の実装例と重複する箇所は説明を省略する。
【０２２７】
図１６に示す暗号化計算ワークシート２２０に含まれる、２行１列目から１５行１列目の領域は、図７に示したステップＳ３００における変数領域を確保するために用いられる。２行２列目から１５行（２ｎ＋１）列の領域は、図７に示したステップＳ３１０及びステップＳ３２０の繰り返しのために用いられる。図１６には、変数Ａ、Ｂ、Ｄ、Ｋはそれぞれ同じ値が繰り返して用いられ、変数Ｅ、Ｆ、Ｔはループカウンタに依存して繰り返しの各回において変化する例を示している。
【０２２８】
２行１列目のセルは、暗号化の整数Ｘｉを格納するために用いられる。１列目の他のセルには、べき剰余を用いる復号化における素数Ａ及びＢ、（Ａ−１）と（Ｂ−１）との積Ｄ及び最小公倍数Ｋ、公開鍵及び秘密鍵の対である整数Ｅｉ及び整数Ｆｉ、換字式暗号化鍵Ｒｉ、オフセットＴｉ、ループカウンタＬ等が、それぞれ格納される。
【０２２９】
３行１列目のセル及び４行１列目のセルは、２個の素数Ａ及びＢを格納するために用いられる。また、例えば３行２列目のセル等を用いて、２つの素数Ａ及びＢの積と整数Ｘｉとの差が所定範囲であることの判定を、図１４における２行３列目のセルのように表示してもよい。
【０２３０】
７行１列目のセルは、（Ａ−１）と（Ｂ−１）の積であるＤを格納するために用いられる。
８行１列目のセルは、（Ａ−１）と（Ｂ−１）の最小公倍数であるＫを格納するために用いられる。
９行１列目のセルは、Ｄ又はＫと素である整数Ｅｉを格納するために用いられる。このときに、整数Ｅｉは、図９のステップＳ５１３のように、ランダムな規則によって選択されてもよい。
１１行１列目のセルは、前述の数式（ＸＶ）を成立する整数Ｆｉを格納するために用いられる。
１３行１列目のセルは、換字式暗号化の鍵Ｒｉを格納するために用いられる。
１４行１列目のセルは、オフセットＴｉを格納するために用いられる。
１５行１列目のセルは、ループカウンタＬを格納するために用いられる。
【０２３１】
１０行目の各セルは、整数Ｅｉによるべき乗がワークシートの整数演算においてオーバーフローを発生しているかどうかを表示するために用いられる。
１２行目の各セルは、整数Ｆｉによるべき乗がワークシートの整数演算においてオーバーフローを発生しているかどうかを表示するために用いられる。
これらのセルは、例えば、図１４における６行２列目のセルと同様にして設定できる。
【０２３２】
暗号化計算ワークシート２２０による暗号化の処理においては、これらの整数Ｅｉによるべき乗又は整数Ｆｉによるべき乗がオーバーフローを発生することを条件として、式（ＸＩ）の展開形を用いて、べき剰余により暗号化された整数Ｙｉが得られる。具体的には、１行２列目の整数Ｘｉに対して、１４行２列目のオフセットＴ１を用いてオフセットした整数から、暗号化した整数として２行２列目に整数Ｙ１を得ることができる。このときに、当該べき剰余を用いる暗号化から生じる公開鍵Ｅ１及び秘密鍵Ｆ１が、それぞれ９行２列、１１行２列に格納される。
【０２３３】
なお、添え字ｉを伴う変数は配列でもよい。すなわち、１個のセルに割り当てられるＥｉ、Ｆｉ、Ｒｉ及びＴｉのそれぞれは、｛Ｅ１，Ｅ２，…，Ｅｎ｝、｛Ｆ１，Ｆ２，…，Ｆｎ｝、｛Ｒ１，Ｒ２，…，Ｒｎ｝及び｛Ｔ１，Ｔ２，…，Ｔｎ｝等の配列又は配列の形式を用いる数列（漸化式又は任意の関数により各項を定義してもよい）でもよく、暗号化計算ワークシート２２０の行ごとにこれらの配列に含まれる個々の整数を取り出して用いてもよい。
【０２３４】
図１６に示す暗号化計算ワークシート２２０において、２列目は、１回目のべき剰余を用いる暗号化のために用いられる。
２行２列目のセルには、べき剰余を用いる暗号化を１回実施して得られた整数Ｙ１が格納される。
他の２列目のセルには、べき剰余を用いる暗号化の処理から生じた変数の値が格納される。例えば、９行２列目には公開鍵Ｅ１、１１行２列目には秘密鍵Ｆ１、１４行２列目にはオフセットＴ１がそれぞれ格納される。
【０２３５】
３列目は、１回目の換字式暗号化のために用いられる。
２行３列目のセルには、Ｙ１から換字式暗号化により得られた整数Ｚ１が格納される。
他の３列目のセルには、換字式暗号化の処理から生じた変数の値が格納される。例えば、１３行３列目には換字式暗号化の鍵Ｒ１が格納される。
また、１５行３列目のセルには、１回デクリメントされたループカウンタ（Ｌ−１）が格納される。
【０２３６】
このようにして、整数Ｘｉから、１回目のべき剰余を用いる暗号化、及び１回目の換字式暗号化が行われた結果として、２列目にはべき剰余を用いる暗号化により得られたＹ１、Ｅ１、Ｆ１、及びＴ１が格納され、３列目には換字式暗号化により得られたＺ１、Ｒ１、及びデクリメントされたループカウンタ（Ｌ−１）が格納される。
【０２３７】
デクリメントされたループカウンタ（Ｌ−１）の値がゼロ以下である場合は、暗号化の処理は終了する。デクリメントされたループカウンタ（Ｌ−１）の値がゼロより大きければ、２行３列目のＺ１の値を、２行１列目の整数Ｘｉの値のように取り扱い、べき剰余を用いる暗号化の諸段階及び換字式暗号化の諸段階を繰り返す。これにより、２行５列目にＺ２として、２回目に暗号化した整数を得られる。
【０２３８】
このようにして、暗号化計算ワークシート２２０においては、べき剰余と換字式を重畳した暗号化が繰り返される。この暗号化は、１５行目のループカウンタがゼロ以下となることを条件として終了する。２行（２ｎ＋１）列には、整数Ｚｎとして、暗号化した整数が得られる。
【０２３９】
なお、暗号化計算ワークシート２２０において、２行１列目のセルには１個の整数Ｘｉを格納することもできるが、配列の形式を用いて数列｛Ｘ１，Ｘ２，Ｘ３，…，Ｘｋ｝を格納してもよい。例えば、整数Ｘｉを複数の桁に分割し、それぞれの桁ごとの整数部分と各整数部分の桁の情報３５（図１３）とを要素とする数列を、整数Ｘｉに代えて２行１列目のセルに格納してもよい。このようにすることで、暗号化計算ワークシート２２０は、例えば２０桁の整数等の多桁の整数を入力とすることも可能である。
【０２４０】
図１７は、換字式とべき剰余の重畳を用いる復号化の処理を、スプレッドシート形式の計算アプリケーションパッケージを用いて実装する例を示す図である。前述の実装例と重複する箇所は説明を省略する。
【０２４１】
図１７に示す復号化計算ワークシート２３０において、２行１列目から１５行１列目の領域は、図８に示したステップＳ４００における変数領域の確保及びループカウンタＬの初期化のために用いられる。２行２列目から１５行（２ｎ＋１）列目の領域は、図８に示したステップＳ４１０及びステップＳ４２０の繰り返しのために用いられる。
【０２４２】
２行１列目のセルは、復号化の整数Ｚｉ（入力Ｚｉ）を格納するために用いられる。１列目の他のセルには、前述の図１６に示した暗号化における変数と同一の変数が格納される。すなわち、変数Ａ、Ｂ、Ｄ、Ｋ、Ｅｉ、Ｆｉ、Ｒｉ、Ｔｉとして、すでに用いられたそれぞれの値を再利用できる。
【０２４３】
復号化計算ワークシート２３０においては、暗号化と逆の手順により、暗号化された整数から元の整数が復号化される。例えば、べき剰余及び換字式の暗号化がこの順番の組み合わせで繰り返された場合、対応する復号化は、換字式及びべき剰余の復号化の順番で同じ回数だけ繰り返すことにより行われる。
【０２４４】
まず、１回目の換字式復号化を用いて、整数Ｚｉを変換する手順を説明する。換字式復号化においては、２行１列目に格納された整数Ｚｎが、２行２列目の整数Ｙｎに変換される。この換字式復号化の鍵は１３行２列目のＲｎであり、当該Ｒｎは対応する暗号化に用いられた、図１６の暗号化計算ワークシート２２０における１３行（２ｎ＋１）列目のＲｎである。
【０２４５】
次いで、復号化計算ワークシート２３０において、２行２列目の整数Ｙｎに対し、１回目のべき剰余による復号化を行い、さらにオフセットを消去して、２行３列目に整数Ｘｎ−１が得られる。べき剰余の指数には１１行３列目のＦｎが用いられる。数式（ＸＶ）を成立するｍは、図１０のステップＳ６２１のように、ランダムな規則によって選択されてもよい。オフセットの値としては１４行３列目のＴｎが用いられる。
【０２４６】
１回目のべき剰余による復号化により整数Ｘｎ−１が得られた後に、復号化計算ワークシート２３０においては、１５行１列目のループカウンタＬがデクリメントされ、１５行３列目に（Ｌ−１）が格納される。このデクリメントされたループカウンタ（Ｌ−１）がゼロ以下である場合は、復号化の処理は終了する。デクリメントされたループカウンタ（Ｌ−１）がゼロより大きければ、２行３列目のＸｎ−１の値を上述の２行１列目のＺｉの値のように取り扱い、換字式復号化の諸段階及びべき剰余を用いる復号化の諸段階を繰り返す。これにより、２行５列目にＸｎ−２として、２回目に復号化した整数を得られる。
【０２４７】
１０行目及び１２行目の各セルは、図１６の暗号化計算ワークシート２２０と同様に、オーバーフローが発生したかどうかを表示するために用いられる。
【０２４８】
このようにして、復号化計算ワークシート２３０においては、換字式とべき剰余を重畳する復号化が繰り返される。この復号化は、１５行目のループカウンタがゼロ以下となることを条件として終了する。２行（２ｎ＋１）列目には、整数Ｘ１として、復号化した整数が得られる。この整数Ｘ１は、図１６に示した暗号化計算ワークシート２２０の２行１列に入力された元の整数Ｘｉと等しくなる。
【０２４９】
図１６に示した暗号化計算ワークシート２２０、及び図１７に示した復号化計算ワークシート２３０は、暗号化及び復号化の計算過程において桁あふれを発生する条件の元で、正確に暗号化及び復号化を行うことができる。本発明の実施形態に係る暗号化及び復号化を用いない計算手段等においては、正しい暗号化も復号化も実施することはできない。さらに、べき剰余に加えて換字式暗号化及び復号化を重畳することにより、本発明の実施形態においては、情報の秘匿性を飛躍的に高めることができる。
【０２５０】
［複数の識別情報を保護する例］
一例として、６桁の１０進数の整数を用いて、１万人のユーザのそれぞれを識別する場合を示す。６桁の整数によって、識別子の数は１００万通りとすることが可能である。したがって、６桁の整数のうち、１万通りの整数には１万人のユーザを個々に独立して関連付けることができ、９９万通りの整数には特定のユーザとの関連付けを行わないようにすることができる。
【０２５１】
識別子は、本発明のいずれかの実施形態によって、暗号化し復号化することができる。識別子の暗号化は、所与の識別子に対して１つずつ暗号化された識別子を生成する計算を繰り返すことによって行うことができる。例えば、１万人のユーザのそれぞれに対する、このような識別子の暗号化は、識別子を生成する計算を人数と同じ回数だけ実施することにより行われる。
【０２５２】
ユーザ数が増加する場合を想定すると、まだユーザに割り当てられていない識別子についても、暗号化された識別子を予め用意することが望ましい場合がある。このような予備的な暗号化を含む暗号化された識別子の生成は、例えば、次の手順によって実行することができる。
【０２５３】
（暗号化された識別子の生成−１）最初に、１万人のユーザの暗号化前の識別子について、識別子とユーザとを対応させたテーブルを作成する。ユーザに割り当てられていない９９万通りの整数についても、特定のユーザとの関連付けのないテーブルを作成する。
（暗号化された識別子の生成−２）次いで、個々のユーザの識別子から、暗号化された識別子を生成し、生成した暗号化された識別子を前述のテーブルにおいてユーザと関連付ける。ユーザに割り当てられていない９９万通りの整数についても、暗号化された整数との関連付けが行われる。
（暗号化された識別子の生成−３）１万人のユーザの暗号化された識別子ごとに、復号化の鍵が関連付けられる。ユーザに割り当てられていない９９万通りの整数についても、復号化のための鍵との関連付けが行われる。
【０２５４】
このようにして、まだユーザに割り当てられていない整数に対しても、本発明のいずれかの実施形態に係る暗号化及び復号化の方法を適用して、暗号化された識別子と、これを復号化するための鍵とを生成することができる。したがって、ユーザ数が増加する状況においても、予め生成された暗号化された識別子及び鍵を用いて、増加したユーザの個人情報等を保護することができる。
【０２５５】
［解読のための所要時間］
本発明の実施形態に係る整数を暗号化する方法を用いて生成した整数に対して、解読の可能性を総当たりにより探索する場合の所要時間を例示する。これは、いわゆるブルート・フォース・アタック（総当たり攻撃）を用いて秘密情報を解読し、元の情報を特定するために要する計算時間である。
【０２５６】
コンピュータの計算能力が毎秒１ペタフロップス、すなわち１秒間に１０の１５乗命令数であると仮定すると、当該コンピュータは１年間に約１０の２２乗命令数を実行することが可能である。
【０２５７】
本発明の、べき剰余と換字式を重畳する実施形態に係る整数を暗号化する方法において、元の整数が６桁の１０進数であり、べき剰余を用いる暗号化及び換字式暗号化を重畳して実行する場合を考える。暗号化において、この重畳した暗号化を５回繰り返すと、当該暗号化に含まれる独立した五重の換字式暗号化のみの組み合わせの総数は、１０の３０乗（すなわち、１０の６乗の５乗）であり、前述のコンピュータによる総当たり計算の所要時間は約１０の８乗年（すなわち約１億年）と算出できる。本発明に係る暗号化の方法においては、さらに五重の独立したべき剰余を用いる暗号化が重畳され、これらの暗号化に用いる鍵は乱数発生手段によりランダムに選択することもできるので、総当たりによる解読の所要時間は１億年をはるかに超える天文学的数字の時間となりうる。
【０２５８】
このように、本発明の実施形態においては、べき剰余と換字式を重畳して複数回繰り返し暗号化を実行することにより、元の整数から、極めて秘匿性の高い暗号化した整数を生成することができる。本発明においては、第三者による解読の手間を膨大化することにより、守秘情報を参照するための識別情報等を高い秘匿性で保護することができる。
【０２５９】
以上、本発明の実施形態を用いて説明したが、本発明の技術的範囲は上記実施形態に記載の範囲には限定されない。上記実施形態に、多様な変更又は改良を加えることができる。そのような変更又は改良を加えた形態も本発明の技術的範囲に含まれうることが、特許請求の範囲の記載から明らかである。
【０２６０】
本発明に係る整数を暗号化及び復号化する方法、装置、システム等は、コンピュータネットワーク技術等の、既存の情報伝達技術等と組み合わせることができ、そのように組み合わせた技術もまた、本発明の技術範囲に含まれる。同様に、本発明の技法を含む情報記録システム、情報管理システム、情報処理システム等も、本発明の技術範囲に含まれる。さらに、本発明の技法は、暗号化及び復号化の処理を、ＦＰＧＡ（現場でプログラム可能なゲートアレイ）、ＡＳＩＣ（特定用途向け集積回路）、これらと同等のハードウェアロジック素子、プログラム可能な集積回路、又はこれらの組み合わせが格納できるプログラムの形態、すなわちプログラム製品として提供できる。具体的には、入出力、データバス、メモリバス、システムバス等を備えるカスタムＬＳＩ（大規模集積回路）の形態として、本発明に係る暗号化及び復号化装置等を提供でき、そのように集積回路に格納されたプログラム製品の形態も、本発明の技術範囲に含まれる。
【符号の説明】
【０２６１】
２０  特定の個人
３０  整数型の識別子
３７  追加の桁
４０  整数型の復号化した識別子
４２、４４、４６、５２、５４  暗号化した整数
６２、６４、６６、９２、９４  固有情報
７２、７４、７６  暗号化計算
８２、８４、１０２、１０４  情報伝達経路
１００  暗号化装置
１１０  復号化装置
１１２、１１４  復号化計算
１２２、１２４、１２６  識別用途
【図１】
2011180390.tif 000038
【図２】
2011180390.tif 000039
【図３】
2011180390.tif 000040
【図４】
2011180390.tif 000041
【図５】
2011180390.tif 000042
【図６】
2011180390.tif 000043
【図７】
2011180390.tif 000044
【図８】
2011180390.tif 000045
【図９】
2011180390.tif 000046
【図１０】
2011180390.tif 000047
【図１１】
2011180390.tif 000048
【図１２】
2011180390.tif 000049
【図１３】
2011180390.tif 000050
【図１４】
2011180390.tif 000051
【図１５】
2011180390.tif 000052
【図１６】
2011180390.tif 000053
【図１７】
2011180390.tif 000054