(57)【要約】【課題】ＤＥＳの暗号方式を適用して、所定の桁数に固定された１０進数の暗号データを生成する。【解決手段】１０進数データを暗号化する暗号処理装置１であって、同じ値を用いて２回変換すると元の数値に戻る数字の組み合わせからなる演算テーブル６と、偶数桁の１０進数データの右ブロックと鍵とを関数に入力して関数演算を行う関数演算手段３１と、１０進数データの左ブロックを関数演算手段３１の出力データと演算テーブル６とを用いて変換し、当該変換データと前記右ブロックとを転置して前記偶数桁と同じ桁数の１０進数データを暗号データとして出力する変換手段３２と、を有する。【選択図】図１
2008096871.tif 000002
【特許請求の範囲】
【請求項１】
１０進数データを暗号化する暗号処理装置であって、
同じ値を用いて２回変換すると元の数値に戻る数字の組み合わせからなる演算テーブルと、
偶数桁の１０進数データの右ブロックと鍵とを関数に入力して関数演算を行う関数演算手段と、
前記１０進数データの左ブロックを、前記関数演算手段の出力データと前記演算テーブルとを用いて変換し、当該変換データと前記右ブロックとを転置して前記偶数桁と同じ桁数の１０進数データを暗号データとして出力する変換手段と、を有すること
を特徴とする暗号処理装置。
【請求項２】
請求項１記載の暗号処理装置であって、
前記関数演算手段は、前記変換手段が出力した暗号データを入力し、前記関数演算を所定の回数繰り返し行い、
前記変換手段は、前記関数演算手段の出力データを、前記関数演算手段に入力された暗号データの左ブロックと前記演算テーブルと用いて所定の回数繰り返し変換すること
を特徴とする暗号処理装置。
【請求項３】
暗号処理装置が行う１０進数データの暗号処理方法であって、
前記暗号処理装置は、演算処理部と、同じ値を用いて２回変換すると元の数値に戻る数字の組み合わせからなる演算テーブルと、を有し、
前記演算処理部は、
偶数桁の１０進数データを入力する入力ステップと、
前記１０進数データの右ブロックと鍵とを関数に入力して関数演算を行う関数演算ステップと、
前記１０進数データの左ブロックを、前記関数演算ステップの出力データと前記演算テーブルとを用いて変換する変換ステップと、
前記変換ステップで変換した変換データと前記右ブロックとを転置して、前記入力ステップで入力された１０進数データの桁数と同じ１０進数データを暗号データとして出力する転置ステップと、を行うこと
を特徴とする暗号処理方法。
【請求項４】
暗号処理装置が実行する１０進数データの暗号処理プログラムであって、
前記暗号処理装置は、演算処理部と、同じ値を用いて２回変換すると元の数値に戻る数字の組み合わせからなる演算テーブルと、を有し、
前記演算処理部に、
偶数桁の１０進数データを入力する入力ステップと、
前記１０進数データの右ブロックと鍵とを関数に入力して関数演算を行う関数演算ステップと、
前記１０進数データの左ブロックを、前記関数演算ステップの出力データと前記演算テーブルとを用いて変換する変換ステップと、
前記変換ステップで変換した変換データと前記右ブロックとを転置して、前記入力ステップで入力された１０進数データの桁数と同じ１０進数データを暗号データとして出力する転置ステップと、を実行させること
を特徴とする暗号処理プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、暗号処理技術に関し、特に、１０進数データを暗号化する暗号処理装置、暗号処理方法および暗号処理プログラムに関する。
【背景技術】
【０００２】
暗号方式には、大別して共通鍵暗号方式と公開鍵暗号方式とが存在する。共通鍵暗号方式は、暗号化と複合化に同じ鍵を用いる暗号方式である。公開鍵暗号方式は、対になる２つの鍵を使って暗号化および複号化を行う暗号方式である。また、代表的な共通鍵暗号方式としては、データを６４ビット長のブロックに分割し、各ブロックを所定のビット長の鍵で暗号化するＤＥＳ（Data Encryption Standard）が知られている。なお、特許文献１および非特許文献１には、ＤＥＳに関する技術が記載されている。
【特許文献１】特開平７−１９１６０３
【非特許文献１】“暗号の話”、[online]、［平成１８年８月１０日検索］、インターネット＜ＵＲＬ：http://mailsrv.nara-edu.ac.jp/~asait/crypt.htm＞
【発明の開示】
【発明が解決しようとする課題】
【０００３】
ＤＥＳを用いた暗号化処理では、ビット列による２進数の演算処理を行い、２進数の暗号データを出力する。そのため、暗号化するデータ（平文）が１０進数の場合、当該１０進数のデータを２進数に変換してから、ＤＥＳによる暗号化処理を行う必要がある。また、ＤＥＳにより出力される暗号データも２進数であるため、１０進数の暗号データを使用したい場合は、２進数の暗号データを１０進数に再度変換する必要がある。また、暗号データの桁数を統一したい場合は、２進数の暗号データを１０進数に変換する際に、桁数を揃える処理を別途行う必要がある。
【０００４】
すなわち、ＤＥＳは２進数での演算処理が前提となっているため、１０進数のデータを入力して、所定の桁数に固定された１０進数の暗号データを出力することは考慮されていない。このため、１０進数から２進数への変換処理および２進数から１０進数への変換処理などが必要となり、暗号化処理の複雑化や、性能上の問題が発生する。
【０００５】
本発明は上記事情に鑑みてなされたものであり、本発明の目的は、ＤＥＳの暗号方式を適用して、所定の桁数に固定された１０進数の暗号データを生成することにある。
【課題を解決するための手段】
【０００６】
上記課題を解決するために、本発明は、１０進数データを暗号化する暗号処理装置であって、同じ値を用いて２回変換すると元の数値に戻る数字の組み合わせからなる演算テーブルと、偶数桁の１０進数データの右ブロックと鍵とを関数に入力して関数演算を行う関数演算手段と、前記１０進数データの左ブロックを、前記関数演算手段の出力データと前記演算テーブルとを用いて変換し、当該変換データと前記右ブロックとを転置して前記偶数桁と同じ桁数の１０進数データを暗号データとして出力する変換手段と、を有する。
【０００７】
また、本発明は、暗号処理装置が行う１０進数データの暗号処理方法であって、前記暗号処理装置は、演算処理部と、同じ値を用いて２回変換すると元の数値に戻る数字の組み合わせからなる演算テーブルと、を有し、前記演算処理部は、偶数桁の１０進数データを入力する入力ステップと、前記１０進数データの右ブロックと鍵とを関数に入力して関数演算を行う関数演算ステップと、前記１０進数データの左ブロックを、前記関数演算ステップの出力データと前記演算テーブルとを用いて変換する変換ステップと、前記変換ステップで変換した変換データと前記右ブロックとを転置して、前記入力ステップで入力された１０進数データの桁数と同じ１０進数データを暗号データとして出力する転置ステップと、を行う。
【０００８】
また、本発明は、暗号処理装置が実行する１０進数データの暗号処理プログラムであって、前記暗号処理装置は、演算処理部と、同じ値を用いて２回変換すると元の数値に戻る数字の組み合わせからなる演算テーブルと、を有し、前記演算処理部に、偶数桁の１０進数データを入力する入力ステップと、前記１０進数データの右ブロックと鍵とを関数に入力して関数演算を行う関数演算ステップと、前記１０進数データの左ブロックを、前記関数演算ステップの出力データと前記演算テーブルとを用いて変換する変換ステップと、前記変換ステップで変換した変換データと前記右ブロックとを転置して、前記入力ステップで入力された１０進数データの桁数と同じ１０進数データを暗号データとして出力する転置ステップと、を実行させる。
【発明の効果】
【０００９】
本発明では、ＤＥＳの暗号方式を適用して、所定の桁数に固定された１０進数の暗号データを生成することができる。
【発明を実施するための最良の形態】
【００１０】
以下、本発明の実施の形態について説明する。本実施形態の暗号処理装置は、ＤＥＳ（Data Encryption Standard）の暗号方式を１０進数のデータに拡張し、所定の桁数の１０進数データ（平文）から、同じ桁数の暗号化された１０進数データ（暗号文）を生成する。
【００１１】
図１は、本発明の一実施形態が適用された暗号処理装置１の構成図である。図示する暗号処理装置１は、入力部２と、暗号処理部３と、出力部４と、演算テーブル６と、入力データ記憶部７と、暗号データ記憶部８と、を有する。
【００１２】
入力部２は、入力データ記憶部８に記憶された入力データ（平文）を読み出し、暗号処理部３に入力する。なお、本実施形態の入力データは、偶数桁の１０進数のデータである。入力データ記憶部７には、少なくとも１つの入力データがあらかじめ記憶されているものとする。
【００１３】
暗号処理部３は、関数演算部３１と変換部３２とを有し、入力部２が入力した入力データを暗号化する。関数演算部３１は、後述する関数演算を行う。変換部３２は、演算テーブル６を用いてデータを変換する。出力部４は、暗号処理部３が出力した暗号データを暗号データ記憶部８に記憶する。また、暗号処理部３は、入力部２が入力した暗号データを復号する。演算テーブル６は、ＤＥＳの暗号処理で用いられる排他的論理和を、１０進数に適用するためのテーブルである。なお、演算テーブル６については、後述する。
【００１４】
上記説明した暗号処理装置１は、例えば図２に示すようなＣＰＵ９０１と、メモリ９０２と、ＨＤＤ等の外部記憶装置９０３と、キーボードやマウスなどの入力装置９０４と、ディスプレイやプリンタなどの出力装置９０５と、ネットワークと接続するための通信制御装置９０６と、を備えた汎用的なコンピュータシステムを用いることができる。このコンピュータシステムにおいて、ＣＰＵ９０１がメモリ９０２上にロードされた所定のプログラムを実行することにより、暗号処理装置１の各機能が実現される。
【００１５】
次に、本実施形態の暗号処理について説明する。
【００１６】
図３は、暗号処理装置１が行う暗号処理のフローチャートである。
【００１７】
本実施形態の暗号処理は、１６桁の１０進数データを入力データ（平文）とし、１６段の関数演算および変換処理を行うものとする。また、４８ビットの鍵を、段数分だけ（本実施形態では１６個）、メモリまたは外部記憶装置にあらかじめ記憶しておくものとする。
【００１８】
なお、入力データの桁数は１６桁に限定されず、偶数桁であれば何桁でもよい。また、段数についても１６段に限定されず、必要とされる暗号の強度に応じて任意の段数を設定することができる。
【００１９】
まず、暗号処理装置１の入力部２は、入力データ記憶部７から所定の入力データ（平文）を読み出し、暗号処理部３に入力する（Ｓ１１）。暗号処理部３の関数演算部３１は、入力された入力データを、上８桁の左ブロック（Ｌ０）と、下８桁の右ブロック（Ｒ０）とに分割する（Ｓ１２）。そして、関数処理部３１は、メモリ等に記憶された４８ビットの１段目の鍵（Ｋ１）と、右ブロック（Ｒ０）とを非線形の一方向関数（Ｆ（Ｒ０，Ｋ１））に入力し、当該関数の演算処理を行う（Ｓ１３）。
【００２０】
なお、一方向関数は、関数の演算結果から入力パラメータを類推できない性質を有する関数である。一方向関数を用いることにより、暗号文から平文を類推することが困難になる。一方向関数としては、例えば、ハッシュ関数のＭＤ５（Message Digest 5）またはＳＨＡ−１（Secure Hash Algorithm 1）などが挙げられる。ＭＤ５は１２８ビット、ＳＨＡ−１は１６０ビットのダイジェストコード（ハッシュ値）を生成・出力する。
【００２１】
本実施形態の一方向関数については、関数演算部３１は、１段目の鍵（Ｋ１）と、右ブロック（Ｒ０）とを、それぞれ１６進数のデータに変換する。そして、関数演算部３１は、変換後の右ブロック（Ｒ０）の後ろに変換後の１段目の鍵（Ｋ１）を連結した１６進数のデータを生成し、生成したデータを入力としてＭＤ５演算を行う。
【００２２】
そして、関数演算部３１は、ＭＤ５の演算結果である１２８ビットのビット列を１６進数３２桁のデータとみなし、当該３２桁の下７桁を取り出す。そして、関数演算部３１は、取り出した１６進数の下７桁の数字を１０進数へ変換し、変換後の１０進数の下８桁を出力する。
【００２３】
そして、変換部３２は、Ｓ１２で分割した１０進数８桁の左ブロック（Ｌ０）を、関数演算部３１が出力した１０進数８桁の数字と演算テーブル６とを用いて変換する（Ｓ１４）。
【００２４】
ここで、一般的なＤＥＳの暗号方式で用いられる排他的論理和（ＸＯＲ）について説明する。排他的論理和は、２進数演算であって、２つの入力値が異なる値の場合、出力値は「１」となる。具体的には、ＸＯＲ（０，０）＝０、ＸＯＲ（０，１）＝１、ＸＯＲ（１，０）＝１、ＸＯＲ（１，１）＝０となる。そして、排他的論理和は、ある数に対して同じ数を２回演算すると、元の数に戻るという性質がある。例えば、「０」に対して「１」を２回排他的論理和の演算を行うと、以下に示すように１回目の演算結果が「１」となり、当該「１」に対して２回目の演算を行うと２回目の演算結果は元の「０」になる。
【００２５】
１回目：ＸＯＲ（０，１）＝１
２回目：ＸＯＲ（１，１）＝０
本実施形態は、１０進数データを暗号化するため、２進数の演算である排他的論理和を適用することはできない。そのため、本実施形態では、排他的論理和の「同じ数を用いて２回演算すると元の数に戻る」性質を有する演算テーブル６をあらかじめ備え、当該演算テーブル６を用いて排他論理和に替わる変換処理（Ｓ１４）を行うものとする。
【００２６】
図４は、演算テーブル６の一例を示す図である。
【００２７】
演算テーブル６は、同じ値を用いて２回変換すると元の数値に戻る数字の組み合わせからなるものである。図示する演算テーブル６には、各入力値（ｘ,ｙ）に対応する出力値が設定されている。そして、出力値には、ｘに設定された所定の数値に、ｙに設定された数値を用いて２回演算すると、元のｘの数値に変換される値が設定されている。例えば、ｘ＝７でｙ＝３の場合、以下のように変換される。
【００２８】
１回目：入力値（７，３）＝出力値（４）・・・符号４１
２回目：入力値（４，３）＝出力値（７）・・・符号４２
すなわち、１回目の出力値（４）に対して再びｙ＝３を用いると、２回目の出力値は、元のｘ＝７に戻る。なお、演算テーブル６は、「同じ数を２回演算すると元の数に戻る」性質を有するテーブルであれば、図４に示す演算テーブルに限定されない。
【００２９】
そして、変換部３２は、Ｓ１４で変換した変換データを１段目の右ブロック（Ｒ１）に、またＳ１２の右ブロック（Ｒ０）を１段目の左ブロック（Ｌ１）に転置する（Ｓ１５）。
【００３０】
そして、暗号処理部３は、２段目の処理を１段目と同様に行う。すなわち、関数演算部３１は、Ｓ１３と同様に、メモリ等に記憶された２段目の鍵（Ｋ２）と、１段目の右ブロック（Ｒ１）とを前述の一方向関数（Ｆ（Ｒ１，Ｋ２））に入力し、当該関数の演算処理を行う（Ｓ１６）。そして、変換部３２は、Ｓ１４と同様に、１段目の左ブロック（Ｌ１）を、Ｓ１６の出力結果と演算テーブル６とを用いて変換する（Ｓ１７）。そして、変換部３２は、Ｓ１７の変換データを２段目の右ブロック（Ｒ２）に、またＳ１５の１段目の右ブロック（Ｒ１）を２段目の左ブロック（Ｌ２）に転置する（Ｓ１８）。
【００３１】
そして、暗号処理部３は、１段目と同様に、３段目から１６段目の処理を繰り返し行う（Ｓ１９、Ｓ２０）。そして、出力部４は、１６段目の左ブロック（Ｌ１６）と、１６段目の右ブロック（Ｒ１６）とを統合した１６桁１０進数の暗号データを、暗号データ記憶部８に出力する（Ｓ２１）。
【００３２】
図５は、図３に示すフローチャートの１段目の処理の具体例である。図示する例では、入力データを「１２３４５６７８９０１２３４５６」、１段目の鍵を「１２３４５６７８９ＡＢＣ」とした場合の各処理での値を示している。
【００３３】
図６（ａ）は、入力データと暗号データの一例を示す図である。入力データは１から１５までの連番であって、各入力データを図３に示す暗号処理により同じ条件で暗号化したものである。なお、関数演算で使用する鍵は、図６（ｂ）に示すとおりである。
【００３４】
次に、本実施形態の復号処理について説明する。
【００３５】
なお、前述のとおり本実施形態の暗号処理（図３参照）では、ある数に対して同じ数を２回演算すると元の数に戻る演算テーブル６を用いて１０進数の入力データを暗号化している。したがって、本実施形態の暗号処理装置１では、暗号処理を行う暗号処理部３を流用して復号処理を行うことができる。すなわち、本実施形態では、一般的なＤＥＳと同様に暗号処理と復号処理とを同一のソフトウェア部品を用いて行うことができる。
【００３６】
図７は、暗号処理装置１が実行する復号処理のフローチャートである。図示するフローチャートは、図３の暗号処理で暗号化された１６桁の１０進数データを復号する処理である。
【００３７】
まず、暗号処理装置１の入力部２は、暗号データを暗号処理部３に入力する（Ｓ３１）。暗号処理部３の関数演算部３１は、入力された暗号データを、上８桁の左ブロック（Ｌ１６）と、下８桁の右ブロック（Ｒ１６）とに分割する（Ｓ３２）。そして、関数演算部３１は、１６段目の処理として、メモリ等に記憶された４８ビットの１６段目の鍵（Ｋ１６）と、１６段目の左ブロック（Ｌ１６）とを一方向関数（Ｆ（Ｌ１６，Ｋ１６））に入力し、当該関数の演算処理を行う（Ｓ３３）。なお、一方向関数は、暗号処理の一方向関数（図４：Ｓ１３）と同じ関数を用いる。
【００３８】
そして、変換部３２は、Ｓ３２で分割した１０進数８桁の右ブロック（Ｒ１６）を、関数演算部３１が出力した１０進数８桁の数字と演算テーブル６とを用いて変換する（Ｓ３４）。なお、演算テーブル６を用いた変換処理は、暗号処理の変換処理（図４：Ｓ１４）と同様である。
【００３９】
そして、変換部３２は、Ｓ３４で変換した変換データを１５段目の左ブロック（Ｌ１５）に、またＳ３２の左ブロック（Ｌ１６）を１５段目の右ブロック（Ｒ１５）に出力する（Ｓ３５）。
【００４０】
そして、暗号処理部３は、１５段目の処理を１６段目と同様に行う。すなわち、関数演算部３１は、Ｓ３３と同様に、メモリ等に記憶された１５段目の鍵（Ｋ１５）と、左ブロック（Ｌ１５）とを一方向関数（Ｆ（Ｌ１５，Ｋ１５））に入力し、当該関数の演算処理を行う（Ｓ３６）。そして、変換部３２は、Ｓ３４と同様に、１５段目の右ブロック（Ｒ１５）を、Ｓ３６の出力結果と演算テーブル６とを用いて変換する（Ｓ３７）。そして、変換部３２は、Ｓ３７の変換データを１４段目の左ブロック（Ｌ１４）に、またＳ３５の１５段目の左ブロック（Ｌ１５）を１４段目の右ブロック（Ｒ１４）に出力する（Ｓ３８）。
【００４１】
そして、暗号処理部３は、１６段目と同様に、１４段目から１段目の処理を繰り返し行う（Ｓ３９、Ｓ４０）。そして、出力部４は、Ｓ４０で出力された左ブロック（Ｌ０）と右ブロック（Ｒ０）とを統合した１６桁１０進数の復号データ（平文）を出力する（Ｓ４１）。
【００４２】
本実施形態では、ＤＥＳの暗号方式を適用して、所定の桁数に固定された１０進数の暗号データを生成することができる。すなわち、ＤＥＳの暗号方式を１０進数のデータに拡張し、所定の桁数の１０進数データ（平文）から、同じ桁数の暗号化された１０進数データ（暗号文）を生成することができる。
【００４３】
また、本実施形態では、ある数に対して同じ数を２回演算すると元の数に戻る演算テーブル６を用いて、１０進数の入力データを暗号化している。これにより、暗号処理を行う暗号処理部３を流用して復号処理を行うことができる。すなわち、本実施形態では、一般的なＤＥＳと同様に暗号処理と復号処理を同一のソフトウェア部品を用いて行うことができる。
【００４４】
また、本実施形態は、所定の数字が印字されたキャンペーンシール（応募シール）を商品に貼付して販売促進を図る販売手法に適用することができる。この販売手法では、商品を購入したユーザは、当該商品のキャンペーンシールに印字された数字をＷｅｂサイトなどに入力して応募する。このような販売手法において、本実施形態により生成された暗号データをキャンペーンシールに印字する場合、以下のメリットがある。まず、キャンペーンシールに印字される暗号データは、１０進数の数字データであるため、ユーザは容易にパソコンや携帯電話から入力することができる。また、キャンペーンシールに印字される暗号データは、桁数が固定されたデータであるため、デザイン的に統一感がある。また、図６の入力データと暗号データの対応表に示すように、大量の入力データを容易に生成することができ、かつ、他の暗号データを類推することが困難である。したがって、１個の商品しか購入していないユーザが何回も応募することを防止することができる。
【００４５】
なお、本発明は上記の実施形態に限定されるものではなく、その要旨の範囲内で数々の変形が可能である。
【図面の簡単な説明】
【００４６】
【図１】本発明の一実施形態が適用された暗号処理装置の構成図である。
【図２】暗号処理装置のハードウェア構成例を示す図である。
【図３】暗号処理のフローチャートである。
【図４】演算テーブルの一例を示す図である。
【図５】暗号処理の具体例を示す図である。
【図６】入力データと暗号データの一例を示す図である。
【図７】復号処理のフローチャートである。
【符号の説明】
【００４７】
１：暗号処理装置、２：入力部、３：暗号処理部、３１：関数演算部、３２：変換部、４：出力部、６：演算テーブル、７：入力データ記憶部、８：暗号データ記憶部
【図１】
2008096871.tif 000003
【図２】
2008096871.tif 000004
【図３】
2008096871.tif 000005
【図４】
2008096871.tif 000006
【図５】
2008096871.tif 000007
【図６】
2008096871.tif 000008
【図７】
2008096871.tif 000009