JP3773226B2 - 暗号化装置 - Google Patents
暗号化装置 Download PDFInfo
- Publication number
- JP3773226B2 JP3773226B2 JP27273897A JP27273897A JP3773226B2 JP 3773226 B2 JP3773226 B2 JP 3773226B2 JP 27273897 A JP27273897 A JP 27273897A JP 27273897 A JP27273897 A JP 27273897A JP 3773226 B2 JP3773226 B2 JP 3773226B2
- Authority
- JP
- Japan
- Prior art keywords
- data
- function
- vector
- encryption
- password
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Lifetime
Links
Images
Description
【発明の属する技術分野】
本発明は、例えば暗号通信を行うシステムに用いられる暗号化装置に係り、特に多次元ベクトルを用いて原文データを暗号化する暗号化装置に関する。
【0002】
【従来の技術】
計算機やネットワークをはじめとする情報システムでは、不特定多数のユーザが使用する環境下にあって、悪意のユーザによる情報の盗聴や改竄などが大きな問題となっており、その対策として暗号化技術を利用する場合が多い。
【0003】
暗号化技術として一般的に知られている手法として、下記の文献に示されているものが詳しい。
文献「Communications of the ACM Vol.21,No.2(1978)p120.A Method for Obtaining Digital Signatures and Public−KeyCryptosystems:R.L.Rivest,A.Shamir,and L.Adleman,MIT Laboratory for Cmputer Science and Department of Mathmatics.」
この文献で発表された暗号化手法は、一般からかなり強力なものとして受入れられ、RSA(Rivest−Shamir−Adleman)法と呼ばれている。また、このRSA法から派生させられた手法が電子商取引における「著名」の認証手段として開発され、実用化されつつある。
【0004】
RSA法は、素因数分解の困難さを利用した公開鍵(非対称)暗号方式であり、データを累乗した結果を大きな整数で割った余り(剰余)を暗号文にする。このRSA法の特徴は、2つの素数(pおよびq)の積から元の2つの素数を見つけ出すのが困難で、たとえ、2つの素数の積か知られたとしても、pおよびq、更には解読演算を推定することが困難であるということにある。
【0005】
【発明が解決しようとする課題】
前述したRSA法自体はそれなりに実用的であり、信頼性も、暗号鍵としてのデータのビット長が十分である場合には、かなり高いものになることが保証されている。この信頼性を確保するために、現在は256ビット長の暗号鍵データを使うのが主流となっているが、ときとしてこれでは短かすぎ、さらに512ビットや1024ビットのデータ長の暗号鍵の必要性が論じられている。
【0006】
しかしながら、データ長は計算機の演算精度と演算速度で事実上制限されるため、やたらにビット長を長くすることは、長期的に見たとき、必ずしも得策とは言えない。
【0007】
つまり、RSA法およびRSA法から派生させられた暗号化手法は、計算機の性能によって、その信頼性が制約されといった問題点があった。
また、暗号鍵のビット長の変更に起因する認証システムの信頼性試験等にも大幅な変更が必要となるといった問題点もある。
【0008】
本発明はこのような点に鑑みなされたもので、高精度の演算能力を必要とせずに暗号化を行うことができ、しかも、信頼性が高く、アプリケーションの追加、変更が容易な暗号化を実現することのできる暗号化装置を提供することを目的とする。
【0009】
【課題を解決するための手段】
本発明の暗号化装置は、暗号化の対象となる原文データを記憶するデータ記憶手段と、複数の暗号化キーを記憶する暗号化キー記憶手段と、閉空間領域内でベクトルを回転させる関数であって、生成したベクトルに依存して次の回転角θを決定する関数を前記暗号化キー記憶手段に記憶された複数の暗号化キーにより決定し、当該関数により、各成分が所定ビット数からなる多次元ベクトルを逐次的に生成するベクトル生成手段と、前記データ記憶手段に記憶された暗号化の対象となるデータと前記ベクトル生成手段によって生成されたベクトルの成分との排他的論理和演算を行ってデータを暗号化する論理演算手段とを具備したことを特徴とする。
【0012】
【発明の実施の形態】
以下、図面を参照して本発明の一実施形態を説明する。
本発明は、あるグループの人が共通のセキュリティデバイス(暗号化装置)を持ってデータ通信する場合での暗号化処理に関するものである。
【0013】
図1は暗号通信を行うシステムの構成を示す概念図である。
図中11a,11bはパーソナルコンピュータ(以下、PCと称す)、12a,12bはセキュリティデバイスであり、ここではユーザAが所有するPC11aとユーザBが所有するPC11bとの間でデータ通信を行う場合を想定している。
【0014】
PC11a,11bは汎用コンピュータであり、それぞれにセキュリティデバイス12a,12bの接続が可能である。
セキュリティデバイス12a,12bは、ICカードからなる。このセキュリティデバイス12a,12bには、工場出荷時にある程度の情報が書き込まれている。ある程度の情報とは、当該ICカードの製造番号、グループの各メンバーのユーザID、暗号化キー(秘密キーP1 ,P2 )に関する情報である。これらの情報は、グループの各メンバーに共通の情報であり、非公開である。
【0015】
図2は前記PC11aおよびセキュリティデバイス12aの回路構成を示すブロック図である。なお、PC11bおよびセキュリティデバイス12bの構成についても同様である。
【0016】
PC11aは汎用コンピュータからなり、CPU21を備え、主プログラムの起動によりデータ処理を実行する。このCPU21には、システムバスを介して記憶装置22、RAM23、キーボード24、表示部25、カードI/F(インタフェース)26が接続されている。
【0017】
記憶装置22は、例えばハードディスク装置やフロッピーディスク装置、CD−ROM装置などからなり、各種のデータやプログラム等を記憶するものであり、ここでは暗号化の対象となる原文データや、後述する認証ファイルなどを記憶している。また、この記憶装置22には、記録媒体(ディスク等)に記憶されたプログラムがインストールされる。CPU21は、この記憶装置22にインストールされたプログラムを読み込み、同プログラムに従った処理を実行する。
【0018】
RAM23は、本装置のメインメモリとして機能し、本装置の処理に必要な各種データを記憶するものである。キーボード24は、データの入力や各種ファンクションの指示を行うための入力装置である。表示部25は、例えばCRT (Cathode Ray Tube) やLCD (Liquid Crystal Display) などからなり、データの表示を行うための表示装置である。
【0019】
また、カードI/F26は、コネクタ27を介してセキュリティデバイス12aを接続し、そのセキュリティデバイス12aとの間でデータの入出力制御を行う。
【0020】
一方、セキュリティデバイス12aはICカードからなり、CPU31を備え、副プログラムの起動によりデータ処理を実行する。このCPU31には、システムバスを介してROM32、RAM33、フラッシュメモリ36が接続されている。
【0021】
ROM32には、セキュリティデバイス12aとしての機能を実現するための副プログラムを記憶している。RAM33は、セキュリティデバイス12aの処理に必要な各種データを記憶するものであり、ここではPC11aから送信されたデータを一時格納しておくための入力バッファ34と、PC11aに送信するデータを一時格納しておくための出力バッファ35を有する。
【0022】
フラッシュメモリ36は、図3に示すデータベース41を記憶しておくための記憶装置として用いられる。
図3に示すように、このデータベース41は、前述した各メンバー共通の情報(非公開情報)と各メンバー毎に固有の情報(公開情報)とで構成される。各メンバー共通の情報(非公開情報)とは、製造番号、グループの各メンバーのユーザID、暗号化鍵データ(秘密キーP1 ,P2 )である。各メンバー毎に固有の情報(公開情報)とは、暗号化鍵データ(公開キーP3 ,P4 )とパスワードである。なお、パスワードは、公開キーの一部として用いられる。
【0023】
また、コネクタ37は、セキュリティデバイス12aをPC11aに電気的に接続するためのものである。
ここで、図1のシステムにおいて、暗号通信を行う場合の動作を簡単に説明しておく。
【0024】
まず、ICカードとして用いられるセキュリティデバイス12a,12bをグループの各メンバーに渡す。このセキュリティデバイス12a,12bにはデータベース41が設けられており、そのデータベース41には、予め製造番号、グループの各メンバーのユーザID、暗号化鍵データ(秘密キーP1 ,P2 )が登録されている。
【0025】
各メンバーは、このセキュリティデバイス12a,12bに暗号化キー(公開キーP3 ,P4 )とパスワードを書き込む。ここで書き込まれた情報は、データベース41の公開部分に格納される。
【0026】
ここで、例えばPC11aからPC11bに暗号通信する場合には、各メンバー(ユーザA,B)はセキュリティデバイス12a,12bをPC11a,11bにそれぞれ差し込んで暗号化を行う。この場合、本発明において、暗号化のアルゴリズムは、後述するベクトル発生による。
【0027】
このときのベクトルを発生させる関数、あるいは用いられる定数を暗号化キー(秘密・公開キー)で決定する。暗号化された文書は公開キーと共に相手方に送信される。受信側では、受け取った公開キーと自分が持っている秘密キーで、その暗号化文書を復号化する。
【0028】
次に、同実施形態の動作について説明する。
ここでは、図1に示すPC11aとセキュリティデバイス12aに着目して、(a)ユーザ登録、(b)データ暗号化の2つのモードに分けて、それぞれの処理動作について説明する。
【0029】
(a)ユーザ登録
まず、ユーザはセキュリティデバイス12aを用いた暗号通信を行うに際し、ユーザ登録を行う。これは、セキュリティデバイス12a(ICカード)を貰ったメンバーが自分のPC11aに前記図3の公開部分に関する情報を登録することである。
【0030】
図4(a),(b)はユーザ登録時のPC11aとセキュリティデバイス12aの処理動作を示すフローチャートである。
ユーザはPC11a上の主プログラムを通し、ユーザ認証データをPC11aに入力する(ステップA11)。この場合、ユーザ認証データとは、ユーザIDとする。主プログラムは、ここで入力されたユーザIDをセキュリティデバイス12aの入力バッファ34に転送する(ステップA12)。そして、制御をセキュリティデバイス12a上の副プログラムに渡す。
【0031】
セキュリティデバイス12a側では、副プログラムが入力バッファ34にデータが存在することを確認すると、それを読み込む(ステップB11)。そして、副プログラムは、セキュリティデバイス12a上のフラッシュメモリ36をアクセスし、このフラッシュメモリ36に設けられたデータベース41の中に、ユーザ認証データとして入力されたユーザIDが登録されているか否かをチェックする(ステップB12)。
【0032】
その結果、データベース41に当該ユーザIDが登録されていない場合には(ステップB12のNo)、グループのメンバーでないと判断され、以後の処理は中断される(ステップB13)。
【0033】
一方、データベース41に当該ユーザIDが登録されている場合には(ステップB12のYes)、グループのメンバーであると判断され、パスワードおよび暗号化キー(公開キー)の要求がPC11aに対して行われる(ステップB14)。
【0034】
ユーザは、この要求に従ってパスワードおよび暗号化キー(公開キー)を入力する(ステップA13)。PC11a上の主プログラムは、ここで入力されたパスワードおよび暗号化キー(公開キー)をセキュリティデバイス12aの入力バッファ34に転送する(ステップA14)。なお、パスワードは公開キーの一部として用いられる。
【0035】
このようにして、グループメンバーとして認められたユーザからパスワードおよび暗号化キー(公開キー)が入力されると、セキュリティデバイス12aの副プログラムはそれらの入力情報を読み込み、必要に応じて暗号化した上で、フラッシュメモリ36に設けられたデータベース41の公開部分に書き込む(ステップB15)。
【0036】
この時点で、ユーザが暗号化に使用する数学関数が決定される。この数学関数の中で使われる複数の定数は、固定化されている。なお、本発明では、この数学関数として多次元ベクトルを用いていることが特徴であるが、それについては後に説明する。
【0037】
これらの情報処理の後、副プログラムはデータベース41のレポートを作成し(ステップB16)、これをセキュリティデバイス12a上の出力バッファ35に格納した後、制御をPC11a上の主プログラムに渡す(ステップB17)。
【0038】
ここで、前記レポートには、主プログラムがユーザ認証に使用するデータが暗号化された上で書き込まれている。
PC11a側では、主プログラムがセキュリティデバイス12a上の出力バッファ35にデータがあることを確認した上でそれを読み込み、記憶装置22にファイルデータとして書き込む(ステップA15)。ここで書き込まれたファイルデータは認証ファイルとなり、以降の暗号通信を実行する際のユーザ認証に使用される(ステップA16)。
【0039】
(b)データ暗号化
ここで言うデータ暗号化とは、実際に作成文書を暗号化して送信することを指す。
【0040】
図5(a),(b)はデータ暗号化時のPC11aとセキュリティデバイス12aの処理動作を示すフローチャートである。
ユーザはセキュリティデバイス12a(ICカード)をPC11aに装着した状態で、自分のユーザIDとパスワードを入力する(ステップC11)。このユーザIDとパスワードの入力により、PC11a上の主プログラムは、記憶装置22に格納された認証ファイルを参照して、ユーザ認証を行う(ステップC12)。
【0041】
この認証結果により(ステップC121)、ユーザが登録ユーザでない場合(C121のNo)、主プログラムは終了手続きに入る(ステップC16)。ユーザが登録ユーザであることを確認した場合(C121のYes)、主プログラムは、このとき入力されたユーザIDとパスワードをセキュリティデバイス12aに送る(ステップC13)。
【0042】
セキュリティデバイス12a側では、副プログラムが前記ユーザIDとパスワードを読み込む(ステップD11)。そして、副プログラムは、それらの情報とフラッシュメモリ36に設けられたデータベース41の内容とを比較して、ユーザが正当な使用者であることを認証する(ステップD12)。
【0043】
このユーザ認証の結果、副プログラムはユーザがセキュリティシステムの登録者であるか否かを記述した認証レポートを作成し、この認証レポートをセキュリティデバイス12aに転送して、制御をPC11a上の主プログラムに渡す(ステップD13)。
【0044】
PC11a側では、主プログラムがセキュリティデバイス12aから送られてきた認証レポートを読み込み、セキュリティデバイス12a側にてユーザ認証が行われたことを確認する(ステップC14)。
【0045】
ここで、前記ユーザ認証で登録ユーザであることが否定された場合、つまり、認証レポートに非登録者である旨が記述されていた場合には(ステップC15のNo)、PC11aの主プログラムはユーザにその旨を通知し、処理を中断する(ステップC16)。
【0046】
また、前記ユーザ認証で登録ユーザであることが確認された場合、つまり、認証レポートに登録者である旨が記述されていた場合には(ステップC15のYes)、PC11aの主プログラムは以下のような暗号通信を実行することになる。
【0047】
すなわち、主プログラムは、記憶装置22の中から暗号化の対象となる原文データ(作成文書)を読み出し、これに前記認証レポートを添付してセキュリティデバイス12aの入力バッファ34に転送し、制御をセキュリティデバイス12a上の副プログラムに渡す(ステップC17)。
【0048】
なお、原文書に認証レポートを添付するのは、セキュリティデバイス12aが認証した登録者からの文書であることを、セキュリティデバイス12aに確認させるためである。
【0049】
セキュリティデバイス12a側では、副プログラムがPC11aから送られてきた原文データを読み込む(ステップD14)。その際、原文データに認証レポートが添付されていなければ(ステップD15のNo)、登録者からの文書でないと判断され、以後の処理は中断される(ステップD16)。
【0050】
一方、原文データに認証レポートが添付されていれば(ステップD15のYes)、登録者からの文書であると判断され、副プログラムは後述する多次元ベクトルを用いた暗号化方式により当該原文データを暗号化する(ステップD17)。そして、副プログラムは、復号キー(公開キー)と共に暗号文データ(暗号化文書)をセキュリティデバイス12aの出力バッファ35に格納して、これらをPC11aに送信する(ステップD18)。
【0051】
PC11a上の主プログラムは、セキュリティデバイス12aから復号キーおよび暗号文データ(暗号化文書)を受け取ることにより(ステップC18)、これをPC11aの記憶装置22上のファイルとして出力するか、あるいは、電子メール等の通信用ソフトウエアに制御を渡して、外部(図1のPC11b)に送信する(ステップC19)。
【0052】
次に、セキュリティデバイス12aで実行される暗号化の処理動作について説明する。
図6(a)は暗号化の処理動作を示すフローチャートである。
【0053】
暗号化の対象となる原文データ(メッセージデータ)をMとする(ステップE11)。このデータMは、バイナリデータである。セキュリティデバイス12a上の副プログラムは、まず、このデータMに対してbit単位でスクランブル1をかける(ステップE12)。こうして得られたデータをM´とする(ステップE13)。
【0054】
ここで、副プログラムは、このデータM´に数学的に順次生成される乱数をXOR(排他的論理和)して暗号化を行う(ステップE14)。このとき、乱数の発生の関数に多次元ベクトルrを用いることが本発明の特徴である。この場合、多次元ベクトルrを発生させる関数、あるいは、その関数に用いられる定数は暗号化キー(秘密・公開キー)で決定される。
【0055】
すなわち、副プログラムは、暗号化に際し、データベース41から秘密キー(P1 ,P2 )および公開キー(P3 ,P4 )を読み出し、それらの暗号化キーを定数として用いた関数に従って多次元ベクトルrを生成し、M´XOR rといった論理演算を行ってデータMを暗号化する。こうして得られた暗号文データをCとする(ステップE15)。
【0056】
具体的に説明すると、例えば図7に示すように、rが3次元ベクトル(x,y,z)であり、そのベクトル成分x,y,zの計算精度が16bitであるとする。この3次元ベクトルr(x,y,z)を後述する式(1)に従ってr0 ,r1 ,r2 ,r3 …といったように順次発生する。
【0057】
今、データMが8bitデータの並びとして、m0 m1 m2 m3 m4 m5 m6 …と与えられたとき(1文字8bitの文字列)、Mは前記計算精度(16bit)に基づいて、その要素の2つ(8bit)ずつに分解される。そして、3次元ベクトルがr0 である場合には、データMとr0 (x0 ,y0 ,z0 )とのXOR(排他的論理和)により、(xXOR m0 m1 )(yXOR m2 m3 )(zXOR m4 m5 )…といった計算が行われ、この計算結果として、C0 C1 C2 C3 C4 C5 …といった暗号文データCが得られる。
【0058】
副プログラムは、このようにして得られたデータCに対して、さらにbit単位でスクランブル2をかける(ステップE16)。こうして得られたデータをC´とし、最終的な暗号文データとして出力する(ステップE17)。
【0059】
なお、前記の処理で、C´を改めてM´と見なして前記同様の暗号化を繰り返すことによって、復号化の困難さのレベルを上げることができる。また、このときの多次元ベクトルrを生成する関数の形を変えれば、復号化の困難さはさらに増すことになる。
【0060】
次に、セキュリティデバイス12aで実行される復号化の処理動作について説明する。
図6(b)は復号化の処理動作を示すフローチャートである。
【0061】
復号化は、基本的には前記暗号化処理の逆の処理を行えば良い。
すなわち、暗号文データをC´とすると(ステップF11)、セキュリティデバイス12a上の副プログラムは、まず、このデータCに対してbit単位で前記暗号化時に行ったスクランブル2とは逆のスクランブル2をかける(ステップF12)。これにより、スクランブル2をかける前のデータCが得られる(ステップF13)。
【0062】
次に、副プログラムは、CXOR rといった計算を行ってデータCを復号化する(ステップF14)。これにより、暗号化を行う前のデータM´が得られる(ステップF15)。
【0063】
そして、副プログラムは、このデータM´に対してもbit単位で前記暗号化時に行ったスクランブル1とは逆のスクランブル1をかける(ステップF12)。これにより、スクランブル1をかける前のデータつまり原文データMが得られる(ステップF17)。
【0064】
なお、暗号化の処理で、C´を改めてM´と見なして暗号化を繰り返したり、多次元ベクトルrを生成する関数の形を変えたりする処理が加わっていれば、その処理に対応させて復号化の処理を行うものとする。
【0065】
ところで、本発明では、多次元ベクトルrを用いた暗号化において、多次元ベクトルrを扱う関数を決定するパラメータ(定数)の集合Pを2つの部分に分けて、
P={Ps ,Pp }
と表わす。ここで、Ps は秘密パラメータであり、データベース41の非公開部分に格納される暗号化キー(秘密キーP1 ,P2 )に相当する。Pp は公開パラメータであり、データベース41の公開部分に格納される暗号化キー(公開キーP3 ,P4 )に相当する。Pp はPs と共にユーザ認証とデータの暗号化と復号化に使用される。
【0066】
なお、本実施形態では、Ps を2つ、Pp を2つとしているが、パラメータの数はこれに限られないことは明らかである。
次に、本発明の暗号化の方法について、さらに詳しく説明する。
【0067】
n(n≧1)次元の空間を張るベクトルをrとし、その初期値r0 から逐次的に新しいベクトルri (i=0,1,2,3…)を発生する関数をRとする。このとき、ri は以下のような式(1)で表わされる。
【0068】
ri =A・R(P,ri-1 )ri-1 +c …(1)
ここで、Aは適当な定数係数である。Pは関数に使用される定数の集合であり、データベース41の非公開部分に格納される暗号化キー(秘密キーP1 ,P2 )と、データベース41の公開部分に格納される暗号化キー(公開キーP3 ,P4 )が使用される。cはベクトルを並進移動する定数ベクトルである。
【0069】
前記式(1)において、係数Aは関数Rに適当な制約(例えば|R|≦1)を設けたときに、各ベクトルが多次元空間の閉空間領域内に存在するための条件を与える。定数ベクトルcはベクトルri が収斂するとき、「トリビアル」な点(例えばr=0のような無意味な点)にならないことを保証する(勿論c=0も許される)。
【0070】
n次元空間では、ベクトルrはn個の要素を持つ。r=(x1 ,x2 …xn )。計算機上では、数値データ一般に、コンパイラが定義するビット長(m)の精度(例えば8バイト又は64ビット)で表現されている。したがって、ベクトルの逐次生成法のある瞬間にn×mのデータの精度でベクトルrを再現できないと、それに続くベクトルrは正確には再現できない(あるいはそうなるような関数Rを定義する)。これは、ベクトルrの初期値r0 についても同様で、初期値r0 をn×mのデータの精度で再現したときにのみ、それに続くベクトルr1 ,r2 ,r3 …の再現性が保証される。
【0071】
本発明の暗号化は、前記式(1)を用いて得られたベクトルrの成分を、そのデータ定義長に応じて1個乃至複数個並べて、その総ビット長に対応した文字列(1文字あたり8ビットが普通)とビット毎の排他論理演算(XOR)を行う。これを第1暗号化とする。これについは、前記図7で述べた通りある。
【0072】
この手続きは暗号解読への対策となる。この場合、再度式(1)、関数Rを変えてて新しいベクトルを発生させ、第1暗号化と同じ手法により暗号化を行っても良い。これを第2暗号化とする。
【0073】
具体的な例として、n=2の場合を考える。
まず、ri-1 をこの平面に立てた法線の周りにθだけが回転する演算として、Rを定義すれば、Rは2×2のマトリックスとなり、次のように表わされる。
【0074】
【数1】
【0075】
この場合、θは一種の媒介変数となっている。すなわち、媒介変数がri-1 の関数として与えられ、
θ(r)=f(P,r) …(3)
で表わされるとき、前記式(2)で表わされる変換は、形式的に前記式(1)で表わされる。
【0076】
なお、前記式(3)において、Pは関数fに使われる定数の集合として定義されるものであり、データベース41の非公開部分に格納される暗号化キー(秘密キーP1 ,P2 )と、データベース41の公開部分に格納される暗号化キー(公開キーP3 ,P4 )が使用される。
【0077】
このように、逐次的に発生させた多次元空間を張るベクトルrを暗号化に使うことで、RSAのような暗号化に比べ、計算機の処理精度や処理能力に依存しない暗号化を実現できる。
【0078】
また、アプリの追加、変更も容易に行うことができる。
さらに、暗号の解読には、前記式(1)の定数係数A,定数P(秘密・公開キー),定数ベクトルc、そしてベクトルの初期値r0 を正確に与える必要があるため、これは殆ど不可能に近い。
【0079】
例えば3次元ベクトルを考え、Pが5個の定数を含むとすれば、初期値r0 として与えられるべき数値の数は、
1(A)+5(P)+3(r0 )+3(c)=12
となり、その各々が8桁の実数である場合には、10-96 の確率で、全てのベクトルが再現される。この確率は殆ど0に近く、暗号解読は不可能に近いことを意味する。
【0080】
さらに、この発明で用いられる方法では、回転R(θ)のθを与える関数fを明示的に与える必要があり、このことが暗号の復号化をより複雑にしていることを意味する。
【0081】
なお、前記実施形態では、秘密キーおよび公開キーを定数として決定される関数を用いてベクトルを生成したが、少なくとも公開キーを定数として決定される関数を用いてベクトルを生成するようにしても良い。
【0082】
また、ベクトル発生の関数を決定する各定数(A,P,C)は使用開始時に決めたものを固定的に使い、関数型も固定としたが、例えば関数を決定する定数にパスワード(公開キーの一部として使用される暗号化キー)の依存性を持たせるなどの応用も可能である。以下にその応用例を示す。
【0083】
(第2の実施形態)
n(n≧1)次元の空間の閉領域内に定義されたベクトルを逐次的に生成し、その生成された各ベクトルが一致しないような関数を用いた暗号化において、その関数を決定する各定数にパスワードの依存性を持たせる。なお、パスワードは、公開キーの一部として用いられるものである。また、関数型は固定とする。すなわち、前記式(1)において、
A→A(K)
P→P(K)
c→c(K)
とする。ここで、Aは定数係数、Pは関数に使用される定数の集合(秘密・公開キー)、cはベクトルを並進移動する定数ベクトル、そして、Kはパスワードである。
【0084】
パスワードKはユーザによって入力され、データベース41の公開部分に格納されている。副プログラムは、このデータベース41からパスワードKを読み出し、そのパスワードKに基づいて前記式(1)の各定数(A,P,C)を決定する。そして、これらの定数を用いた関数によって、多次元ベクトルを生成して、データの暗号化を行う。
【0085】
このように、関数を決定する各定数にパスワードの依存性を持たせることにより、各定数が固定的であった場合に比べ、暗号の安全性をさらに向上させることができる。
【0086】
(第3の実施形態)
n(n≧1)次元の空間の閉領域内に定義されたベクトルを逐次的に生成し、その生成された各ベクトルが一致しないような関数を用いた暗号化において、その関数を決定する各定数にパスワードおよび実時間の依存性を持たせる。なお、パスワードは、公開キーの一部として用いられるものである。また、関数型は固定とする。すなわち、前記式(1)において、
A→A(K,t)
P→P(K,t)
c→c(K,t)
とする。ここで、Aは定数係数、Pは関数に使用される定数の集合(秘密・公開キー)、cはベクトルを並進移動する定数ベクトル、そして、Kはパスワード、tは実時間である。
【0087】
パスワードKはユーザによって入力され、データベース41の公開部分に格納されている。副プログラムは、このデータベース41からパスワードKを読み出し、そのパスワードKと実時間tに基づいて前記式(1)の各定数(A,P,C)を決定する。そして、これらの定数を用いた関数によって、多次元ベクトルを生成して、データの暗号化を行う。
【0088】
このように、関数を決定する各定数にパスワードの依存性を持たせ、さらに、各定数に実時間の依存性を持たせることにより、各定数がパスワードだけでなく、実時間によっても変化することになり、暗号の安全性をさらに向上させることができる。
【0089】
(第4の実施形態)
n(n≧1)次元の空間の閉領域内に定義されたベクトルを逐次的に生成し、その生成された各ベクトルが一致しないような関数を用いた暗号化において、その関数を決定する各定数にパスワードおよび実時間の依存性を持たせる。なお、パスワードは、公開キーの一部として用いられるものである。また、関数型の選択にパスワード依存性を持たせる。すなわち、前記式(1)において、
A→A(K,t)
P→P(K,t)
c→c(K,t)
とし、且つ、
R→Rk
とする。ここで、Aは定数係数、Pは関数に使用される定数の集合(秘密・公開キー)、cはベクトルを並進移動する定数ベクトル、そして、Kはパスワード、tは実時間、Rは関数である。
【0090】
パスワードKはユーザによって入力され、データベース41の公開部分に格納されている。副プログラムは、このデータベース41からパスワードKを読み出し、そのパスワードKと実時間tに基づいて前記式(1)の各定数(A,P,C)を決定する。
【0091】
また、副プログラムは、これらの定数を用いる関数RをパスワードKに応じて選択する。そして、この選択された関数Rによって、多次元ベクトルを生成して、データの暗号化を行う。
【0092】
このように、関数を決定する各定数にパスワードの依存性を持たせ、さらに、各定数に実時間の依存性を持たせ、かつ、関数をパスワードに応じて選択することにより、各定数がパスワードだけでなく、実時間によっても変化し、しかも、それらの定数を用いる関数自体がパスワードにて選択されるため、暗号化の精度をさらに向上させることができる。
【0093】
(第5の実施形態)
n(n≧1)次元の空間の閉領域内に定義されたベクトルを逐次的に生成し、その生成された各ベクトルが一致しないような関数を用いた暗号化において、その関数を決定する各定数にパスワードおよび実時間の依存性を持たせる。なお、パスワードは、公開キーの一部として用いられるものである。また、関数型の選択にパスワードおよび実時間の依存性を持たせる。すなわち、前記式(1)において、
A→A(K,t)
P→P(K,t)
c→c(K,t)
とし、且つ
R→Rk,t
とする。ここで、Aは定数係数、Pは関数に使用される定数の集合(秘密・公開キー)、cはベクトルを並進移動する定数ベクトル、そして、Kはパスワード、tは実時間、Rは関数である。
【0094】
パスワードKはユーザによって入力され、データベース41の公開部分に格納されている。副プログラムは、このデータベース41からパスワードKを読み出し、そのパスワードKと実時間tに基づいて前記式(1)の各定数(A,P,C)を決定する。
【0095】
また、副プログラムは、これらの定数を用いる関数RをパスワードKおよび実時間tに応じて選択する。そして、この選択された関数Rによって、多次元ベクトルを生成して、データの暗号化を行う。
【0096】
このように、関数を決定する各定数にパスワードの依存性を持たせ、さらに、各定数に実時間の依存性を持たせ、かつ、関数をパスワードと実時間に応じて選択することにより、各定数がパスワードだけでなく、実時間によっても変化し、しかも、それらの定数を用いる関数自体がパスワードと実時間に応じてにて選択されるため、暗号の安全性をさらに向上させることができる。
【0097】
(第6の実施形態)
n(n≧1)次元の空間の閉領域内に定義されたベクトルを逐次的に生成し、その生成された各ベクトルが一致しないような複数の関数を線形結合して新たな関数を定義するものであり、その結合される各々の関数に対し、関数を決定する定数にパスワードおよび実時間の依存性を持たせる。なお、パスワードは、公開キーの一部として用いられるものである。また、関数型の選択にパスワードおよび実時間依存性を持たせる。さらに、線形結合係数にパスワードおよび実時間の依存性を持たせる。
【0098】
すなわち、n(n≧1)次元の空間を張るベクトルをrとし、その初期値r0 から逐次的に新しいベクトルri (i=0,1,2,3…)を発生する関数をRj (j=0,1,2,3…)としたとき、
ri =Σj Wj (K,t){Aj (K,t)Rj,k,t (Pj (K,t),ri-1 )+cj } …(4)
によって、新しいベクトルを発生させる。
【0099】
ここで、Aは定数係数、Pは関数に使用される定数の集合(秘密・公開キー)、cはベクトルを並進移動する定数ベクトル、そして、Kはパスワード、tは実時間、Rは関数である。また、Wは線形結合係数である。
【0100】
パスワードKはユーザによって入力され、データベース41の公開部分に格納されている。副プログラムは、このデータベース41からパスワードKを読み出し、そのパスワードKと実時間tに基づいて前記式(4)の各定数(A,P,C)を決定する。副プログラムは、複数の関数を線形結した関数Rj をパスワードKおよび実時間tに応じて選択する。
【0101】
また、この関数Rj に用いられる線形結合係数Wj をパスワードKおよび実時間tによって決定する。そして、この選択された関数Rj によって、多次元ベクトルを生成して、データの暗号化を行う。
【0102】
このように、複数の関数の線形結合した新たな関数を用い、各々の関数に対し、関数を決定する定数にパスワードおよび実時間の依存性を持たせると共に、関数の選択にパスワードおよび実時間依存性を持たせ、さらに、線形結合係数にパスワードおよび実時間の依存性を持たせることで、暗号の安全性をさらに向上させることができる。
【0103】
(第7の実施形態)
n(n≧1)次元の空間の閉領域内に定義されたベクトルを逐次的に生成し、その生成された各ベクトルが一致しないような関数を用いた暗号化において、関数型は使用者が任意に定義し、本体暗号化アルゴリズムに使用時にダイナミックに結合して使えるようにする。
【0104】
すなわち、すでにコンパイル済みの暗号化の「基本プログラム」に、多次元ベクトルを逐次発生させるためにユーザが定義した関数をコンパイルしたものを、全プログラム実行時にダイナミックにリンクして使うようにする。
このようにすれば、ハッカー等の悪意あるユーザによる解読を殆ど不可能にするという効果が期待される。
【0105】
【発明の効果】
以上のように本発明によれば、閉空間領域内でベクトルを回転させる関数であって、生成したベクトルに依存して次の回転角θを決定する関数を複数の暗号化キーにより決定し、当該関数により、各成分が所定ビット数からなる多次元ベクトルを逐次的に生成し、暗号化の対象となる原文データと前記ベクトルの成分との排他的論理和演算により、データを暗号化するようにしたため、RSA法のような高精度の演算能力を必要とせずに暗号化を行うことができ、しかも、信頼性が高く、アプリケーションの追加、変更が容易な暗号化を実現することができる。
【図面の簡単な説明】
【図1】本発明の一実施形態に係る暗号通信を行うシステムの構成を示す概念図。
【図2】前記システムに用いられるPCおよびセキュリティデバイスの回路構成を示すブロック図。
【図3】前記セキュリティデバイス上のデータベースの構成を示す図。
【図4】同実施形態におけるユーザ登録時のPCとセキュリティデバイスの処理動作を示すフローチャート。
【図5】同実施形態におけるデータ暗号化時のPCとセキュリティデバイスの処理動作を示すフローチャート。
【図6】同実施形態における暗号化および復号化の処理動作を示すフローチャート。
【図7】本発明による多次元ベクトルを用いた暗号化の演算方法を説明するための図。
【符号の説明】
11a,11b…PC
12a,12b…セキュリティデバイス
21…CPU
22…記憶装置
23…RAM
24…キーボード
25…表示部
26…カードI/F
27…コネクタ
31…CPU
32…ROM
33…RAM
34…入力バッファ
35…出力バッファ
36…フラッシュメモリ
37…コネクタ
41…データベース
Claims (1)
- 暗号化の対象となる原文データを記憶するデータ記憶手段と、
複数の暗号化キーを記憶する暗号化キー記憶手段と、
閉空間領域内でベクトルを回転させる関数であって、生成したベクトルに依存して次の回転角θを決定する関数を前記暗号化キー記憶手段に記憶された複数の暗号化キーにより決定し、当該関数により、各成分が所定ビット数からなる多次元ベクトルを逐次的に生成するベクトル生成手段と、
前記データ記憶手段に記憶された暗号化の対象となるデータと前記ベクトル生成手段によって生成されたベクトルの成分との排他的論理和演算を行ってデータを暗号化する論理演算手段と
を具備したことを特徴とする暗号化装置。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP27273897A JP3773226B2 (ja) | 1997-10-06 | 1997-10-06 | 暗号化装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP27273897A JP3773226B2 (ja) | 1997-10-06 | 1997-10-06 | 暗号化装置 |
Related Child Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2003144894A Division JP2003348074A (ja) | 2003-05-22 | 2003-05-22 | 暗号化装置及び暗号化方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
JPH11109855A JPH11109855A (ja) | 1999-04-23 |
JP3773226B2 true JP3773226B2 (ja) | 2006-05-10 |
Family
ID=17518095
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP27273897A Expired - Lifetime JP3773226B2 (ja) | 1997-10-06 | 1997-10-06 | 暗号化装置 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP3773226B2 (ja) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP3921892B2 (ja) * | 1999-09-30 | 2007-05-30 | カシオ計算機株式会社 | データベース管理装置、データベースシステム及び記録媒体 |
JP6035459B2 (ja) * | 2012-04-02 | 2016-11-30 | 株式会社クリプト・ベーシック | 暗号化装置、復号化装置、及びプログラム |
JP6019453B2 (ja) * | 2012-07-05 | 2016-11-02 | 株式会社クリプト・ベーシック | 暗号化装置、復号化装置、及びプログラム |
-
1997
- 1997-10-06 JP JP27273897A patent/JP3773226B2/ja not_active Expired - Lifetime
Also Published As
Publication number | Publication date |
---|---|
JPH11109855A (ja) | 1999-04-23 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
EP1089194B1 (en) | Database management apparatus and encrypting/decrypting system | |
US7688973B2 (en) | Encryption apparatus, decryption apparatus, key generation apparatus, program, and method | |
KR100406754B1 (ko) | 피케이아이 기반의 상업용 키위탁 방법 및 시스템 | |
US6628786B1 (en) | Distributed state random number generator and method for utilizing same | |
US7730315B2 (en) | Cryptosystem based on a Jacobian of a curve | |
US20060251247A1 (en) | Encryption apparatus, decryption apparatus, key generation apparatus, program and method therefor | |
US7162032B2 (en) | Encryption of programs represented as polynomial mappings and their computations | |
US8195951B2 (en) | Data processing system for providing authorization keys | |
US6477254B1 (en) | Network system using a threshold secret sharing method | |
JP3794457B2 (ja) | データの暗号化復号化方法 | |
WO2006126668A1 (ja) | 擬似ランダム関数計算装置及び方法、並びに回数制限匿名認証システム及び方法 | |
JP2004512570A (ja) | 非安全な暗号加速器を用いる方法と装置 | |
CN116866029B (zh) | 随机数加密数据传输方法、装置、计算机设备及存储介质 | |
Veeraragavan et al. | Enhanced encryption algorithm (EEA) for protecting users' credentials in public cloud | |
JP3773226B2 (ja) | 暗号化装置 | |
JP2003152716A (ja) | 可変認証情報を用いる資格認証方法 | |
TWI701931B (zh) | 具分級機制的數位簽章方法及適用該方法的硬體錢包裝置 | |
AbdElminaam et al. | FHE-Chaos NHCP: Developing a Novel Secure Framework for Cloud Computing Environment | |
JP2002063139A (ja) | 端末装置、サーバ装置および端末認証方法 | |
JP2003348074A (ja) | 暗号化装置及び暗号化方法 | |
CN115442102B (zh) | 一种基于sm9算法的等式测试方法 | |
Jahan et al. | Securely distributing files in cloud environment by dispensing asymmetric key management system applying hashing | |
WO2023181134A1 (ja) | 鍵配送システム、鍵配送方法及びプログラム | |
WO2023276740A1 (ja) | 第三者装置、秘匿計算システム、及びプログラム | |
RU2774807C2 (ru) | Гомоморфное шифрование для проверки подлинности с помощью пароля |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20051228 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20060213 |
|
R150 | Certificate of patent or registration of utility model |
Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20090224 Year of fee payment: 3 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20100224 Year of fee payment: 4 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20110224 Year of fee payment: 5 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20110224 Year of fee payment: 5 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20120224 Year of fee payment: 6 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20120224 Year of fee payment: 6 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20130224 Year of fee payment: 7 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20130224 Year of fee payment: 7 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20140224 Year of fee payment: 8 |
|
EXPY | Cancellation because of completion of term |