(57)【要約】【課題】  平文データの暗号化及び復号に用いる鍵を安全に共有し、該鍵を第三者に知られないようにする。【解決手段】  受信側又は再生側の装置３が、ファイルＨＦと、これから生成されるＯＦ及びその生成用の非正則行列ＴＣを有する。送信元又は記録側の装置２は、ファイルＢＦを有し、これとＯＦ及びＴＣから鍵ＫＦを生成するとともに、ＢＦ及びＴＣからファイルＬＦを生成する。ＫＦを用いて作成される暗号文Ｎを、ＬＦとともに送信又は記録する。受信側又は再生側の装置３において、Ｎ及びＬＦを受信し又は再生した場合に、ＬＦ、ＨＦ、ＴＣから鍵ＫＦ′を生成し、この鍵を用いてＮを復号化する。【選択図】        図１
2005269587.tif 000002
【特許請求の範囲】
【請求項１】
セキュリティ用の鍵を共有する鍵共有システムにおいて、
第一ファイルのデータを要素とする行列と、予め決められた正則でない行列との演算によって生成される第二ファイルを用いること、
第三ファイルのデータを要素とする行列と上記第二ファイルのデータを要素とする行列との演算又は第三ファイルのデータを要素とする行列と上記予め決められた正則でない行列との演算によって上記鍵を生成する
ことを特徴とする鍵共有システム。
【請求項２】
共有鍵を用いて暗号化及び復号化を行う暗号システムにおいて、
（あ）第一ファイルのデータを要素とする行列と、予め決められた正則でない行列との演算によって生成される第二ファイルを用いること、
（い）下記に示すいずれかの演算によって上記共有鍵を生成すること、
（いの１）第三ファイルのデータを要素とする行列と、上記第二ファイルのデータを要素とする行列との演算
（いの２）第三ファイルのデータを要素とする行列と、平文データを要素とする行列と、上記第二ファイルのデータを要素とする行列との演算
（いの３）第三ファイルのデータを要素とする行列と、上記正則でない行列との演算
（いの４）第三ファイルのデータを要素とする行列と、平文データを要素とする行列と、上記正則でない行列との演算
（う）上記共有鍵を用いて平文データの暗号化処理及び暗号文データの復号化処理を行う  ことを特徴とする暗号システム。
【請求項３】
ファイル認証システムにおいて、
（あ）第一のファイルのデータを要素とする行列と、予め決められた正則でない行列と、検証対象となるファイルのデータを要素とする行列との演算によって生成される署名ファイルを用いるとともに、上記予め決められた正則でない行列と、上記第一のファイルのデータを要素とする行列との演算によって第二のファイルを生成して受信側で該第二のファイルを取得可能にすること、
（い）検証対象となるファイルのデータ及び上記署名ファイルを送信すること、
（う）上記検証対象となるファイル及び上記署名ファイルを受け取る受信側では、上記第二のファイルのデータを要素とする行列と、上記予め決められた正則でない行列と、検証対象となるファイルのデータを要素とする行列との演算によって第三のファイルを生成すること及び上記予め決められた正則でない行列と、上記署名ファイルのデータを要素とする行列との演算によって第四のファイルを生成すること、
（え）上記第三のファイルのデータと第四のファイルのデータが一致するか否かを検証すること、
を特徴とするファイル認証システム。
【発明の詳細な説明】
【技術分野】
【０００１】  本発明は、データ通信、特に暗号化技術を用いた鍵共有、秘匿情報の伝送又は記録再生の技術、ファイルやメッセージの認証、電子署名技術に関する。
【背景技術】
【０００２】  秘匿すべきデータを特定の相手だけに伝送するには、例えば、Ａがファイルにパスワードを設定して該パスワードを知る相手Ｂに送信する形態や、互いの共通鍵で暗号化したファイルを相手に送信する形態が知られている。また、公開鍵暗号方式（例えば、ＲＳＡやＥｌＧａｍａｌ等）では、Ａが相手Ｂの公開鍵で暗号化したデータを送信し、受信相手Ｂが自分の秘密鍵で復号することができる。【０００３】  一般に、パスワードのデータ長（ビット数）や暗号鍵の鍵長が短い場合には、組み合わせの数が少ない（鍵空間が狭い）ため解読が容易であり、暗号文攻撃に対して脆弱性を露呈する。【０００４】  そこで、使い捨てパッド（Ｏｎｅ−Ｔｉｍｅ  Ｐａｄ）を互いに秘蔵し合い、該データを用いて暗号化及び復号化を行う方法が知られている。ＡとＢは共有データ（パッド）を用いて所望のデータを暗号化したり復号化することができ、必要に応じてパッドを更新したり変更することができる。
【発明の開示】
【発明が解決しようとする課題】
【０００５】  しかしながら、使い捨てパッドを用いる方法は、共有鍵の配送問題、即ち、鍵の配送が容易でないことが問題となる（つまり、鍵配送を安全に行えるならば、それと同じ方法で情報を送信し合えば済む。）。また、鍵の生成等に処理時間が費やされてしまうことが問題である。
大半の公開鍵暗号システムは、暗号化及び復号化の速度の点で問題を抱えており、また、従来の行列演算を使ったアプローチでは、そのような困難性を解決できる程の進展がみられない。【０００６】  そこで、本発明は、暗号化及び復号化に用いる鍵データを第三者に知られないようにすること及び鍵生成やファイル認証等の高速化を課題とする。
【課題を解決するための手段】
【０００７】  第１の本発明は、セキュリティ用の鍵を共有する鍵共有システムにおいて、第一ファイルのデータを要素とする行列と、予め決められた正則でない行列との演算によって生成される第二ファイルを用いるとともに、第三ファイルのデータを要素とする行列と上記第二ファイルのデータを要素とする行列との演算又は第三ファイルのデータを要素とする行列と上記予め決められた正則でない行列との演算によって鍵を生成するものである。
そして、第２の発明は、共有鍵を用いて平文データに暗号化処理を施したり、暗号文データの復号を行うものである。
この共有鍵については、下記に示すいずれかの演算により生成することができる。
（その１）第三ファイルのデータを要素とする行列「Ｔ３」と、第二ファイルのデータを要素とする行列との演算「Ｔ２」
（その２）第三ファイルのデータを要素とする行列「Ｔ３」と、平文データを要素とする行列「Ｔｍ」と、第二ファイルのデータを要素とする行列「Ｔ２」との演算
（その３）第三ファイルのデータを要素とする行列「Ｔ３」と、上記正則でない行列「ＴＣ」との演算
（その４）第三ファイルのデータを要素とする行列「Ｔ３」と、平文データを要素とする行列「Ｔｍ」と、上記正則でない行列「ＴＣ」との演算
結局のところ、Ｔ３とＴＣ又はＴ２との演算、あるいはＴ３及びＴＣ又はＴ３及びＴ２とＴｍを組み合わせた演算を行えば良い。【０００８】  尚、暗号システムは例えば、下記の構成を有する。
・平文データを暗号化する第一の情報処理装置と、暗号文データから元の平文データを復号する第二の情報処理装置を備えていること。【０００９】  ・第二の情報処理装置が、第一ファイルと、予め決められた正則でない行列、第二ファイルを有していること。【００１０】  ・第一の情報処理装置が第三ファイルを有しており、鍵と第四ファイルを生成すること（行列Ｔ３及びＴ２の積演算、あるいは行列Ｔ３及びＴＣの積演算により鍵を生成するとともに、行列Ｔ３とＴＣとの積演算又は行列Ｔ３とＴ２、さらにはＴｍとの積演算によって第四ファイルを生成する。）。
・第一の情報処理装置は、鍵を使って平文から暗号文へのコンバート機能を有し、変換後の暗号文を伝送したり記録する機能を有すること。【００１１】  ・第二の情報処理装置は、鍵生成の機能と、暗号文から平文へのコンバート機能を有しており、暗号文の受信や再生時に、第四ファイルのデータを要素する行列と、第一ファイルのデータを要素とする行列との積演算により鍵を生成し、この鍵を用いて暗号文を復号化すること。【００１２】  本発明に係る方法、つまり、平文から暗号文を生成した後、該暗号文から元の平文に復号する場合の手順を箇条書きで記載すると以下にようになる。
（１）第一ファイルのデータを要素とする行列Ｔ１及び予め決められた正則でない行列ＴＣとの演算により第二ファイルを生成するステップ
（２）行列Ｔ３及び行列Ｔ２との積演算から鍵を生成するステップ
（３）行列Ｔ３とＴＣあるいはＴ３とＴ２の積演算により第四ファイルを生成し、上記（２）の鍵を用いて平文を暗号化するステップ
（４）暗号文と上記（３）の第四ファイルを伝送し又は記録するステップ
（５）暗号文を受信し又は再生した場合に、上記第四ファイルのデータを要素とする行列Ｔ４と上記行列Ｔ１との積演算により鍵を生成するステップ
（６）上記（５）の鍵を用いて暗号文を復号化するステップ。
従って、本発明によれば、暗号化処理時に用いた鍵と同じ鍵を生成するためには、第一ファイルが必要となるが、第一ファイルは情報処理装置の間で受け渡しが行われない。つまり、第一ファイルを第三者に知られないように秘蔵することによって、鍵を用いた暗号文データの秘密保持が保証される。また、第一の情報処理装置において鍵生成に用いた第三ファイルを第二の情報処理装置の使用者及び第三者に知られることがない。そして、鍵データを行列の積演算で高速に生成できる。【００１３】  また、本発明に係るファイル認証システムでは、以下の手順で処理が行われる。
（１）第一ファイルのデータを要素とする行列と、予め決められた正則でない行列ＴＣと、検証対象となるファイルのデータを要素とする行列Ｔｇとの演算によって生成される署名ファイルを用いること（尚、検証対象となるファイルＴｇについてはメッセージダイジェスト関数のデータやハッシュデータからなるファイルでも良い。）
（２）上記ＴＣと、第一ファイルのデータを要素とする行列との演算によって第二ファイルを生成して受信側で該ファイルを取得できるようにするか又は公開すること、
（３）検証対象となるファイル及び上記署名ファイルを送信すること、
（４）受信側では、３つの行列、つまり、上記第二ファイルのデータを要素とする行列と、上記ＴＣと、Ｔｇとの演算によって第三のファイルを生成すること及び上記ＴＣと上記署名ファイルのデータを要素とする行列との演算によって第四のファイルを生成すること、（５）受信側では、上記第三のファイルのデータと上記第四のファイルのデータが一致するか否かを検証すること。
そして、上記署名ファイルを、上記鍵の生成に必要な伝送ファイルとして共用することができる。
【発明の効果】
【００１４】  本発明によれば、受信又は再生側の装置において第一ファイルを第三者に知られないように秘蔵することによって、共有鍵を安全に配送することができ、該共有鍵を用いた暗号文データの秘密保持が保証される。これにより秘匿化データを安全に伝送することができる。そして、ファイルのデータを要素とする行列の積演算により鍵を高速に生成することができるとともに、行列計算を用いて高速にファイル認証を行うことができる。
【発明を実施するための最良の形態】
【００１５】  本発明は広範な適用範囲をもち、例えば、コンピュータ等の情報処理装置を使ったネットワークシステムへの適用に好適であるが、このような情報伝送システムに限らず、携帯電話等の移動体通信システムや、著作権保護を目的として音楽や画像データを秘匿化するシステム、ロボット間通信システム、ＩＣタグを用いたアイテム管理といった、各種の暗号システムへの適用が可能である。尚、暗号文伝送には、暗号鍵の共有が重要である。
図１は、本発明に係るシステムの基本構成を示す機能ブロック図であり、情報伝送システムへの適用を想定している。【００１６】  本発明を適用したシステム１は、第一の情報処理装置２と第二の情報処理装置３を備えている。本例において、第一の情報処理装置２は平文Ｍを暗号化して伝送する情報送信装置、また、第二の情報処理装置３は暗号文Ｎから平文Ｍを復号化する情報受信装置である。尚、各装置には、例えば電気的な通信手段を備えたコンピュータ機器等が用いられる。【００１７】  情報処理装置３は、下記に示す行列とファイルを有する。
・第一ファイル「ＨＦ」
・第二ファイルＯＦの生成用行列「ＴＣ」
・ＨＦとＴＣから生成される第二ファイル「ＯＦ」
尚、ＨＦは、どのようなファイルでも構わないが、送信相手や第三者に知られないようにすべき秘蔵ファイルである。ＯＦは公開ファイルであり、誰にでも知られることが前提とされる。ＴＣをＯＦに含める場合には、ＯＦからＴＣを除いた部分が第二ファイルに相当する。行列ＴＣは正則でない行列（つまり、行列式がゼロ）である。非正則生成行列ＣはＥメールアドレスやＩＤコード等から予め決められた関数で自動生成するのが簡単である。【００１８】  情報処理装置２は第三ファイル「ＢＦ」を有しており、これは鍵「ＫＦ」の生成に用いる。ＫＦは平文Ｍの暗号化や暗号文Ｎの復号に用いるものであり、そのデータ長はＭのデータ長さ以上でも以下でも良い。尚、ＢＦのデータ長に限定はなく、ＫＦのデータ列を生成できれば良い。【００１９】  また、ＢＦに係るファイルタイプの種類や形式等の如何を問わない。例えば、テキストファイルや画像ファイル等を使用できる。乱数生成関数を用いて生成したデータファイルや、複数のデータファイルをもとに所定の演算（例えば、加算や減算、平均演算等）を施したり、特定の関数で変換したデータファイル等を用いても良い。ＢＦはＫＦの生成及び後述するＬＦの生成に必要なファイルであるが、送信者が故意、過失等によりＢＦを漏らさない限り送信相手や第三者に知られる虞はない。即ち、ＫＦを知り得るのは送信相手のみであり、ＫＦからＢＦは知り得ない。また、Ｍの暗号化の度に異なるＢＦを指定したり又は選定することでＢＦを使い捨てパッドとして使用できる（ＢＦの変更に伴ってＫＦも変化する。）。【００２０】  情報処理装置２は上記行列ＴＣを予め有しており、ＢＦ、ＯＦからＫＦを生成するとともに、ＢＦ及びＴＣから第四ファイル「ＬＦ」を生成するファイル生成手段２ａを備えている。そして、装置２はＫＦを用いてＭを暗号化する暗号化処理手段２ｂを有しており、ＫＦを用いてＭから暗号文データＮを作成する。つまり、任意の暗号化処理を関数「Ｆ（）」で表すとき、「Ｎ＝Ｆ（Ｍ，ＫＦ）」により暗号化する。【００２１】  例えば、任意の演算記号を「＊」で表し、Ｍに係るデータ長又はファイルサイズよりもＫＦのデータ長又はファイルサイズの方が長いものとして（このことは、ＫＦの要素データを周期的に繰り返したものや所定の演算規則に従ってデータを付加してサイズ拡張したものを改めてＫＦとして採用することにより常に保証される。）、自然数変数「ｉ」を導入し、Ｍを構成する個々の要素データを「Ｍｉ」、ＫＦを構成する個々の要素データを「ＫＦｉ」と記すとき、Ｎを構成する個々の要素データ「Ｎｉ」を、演算式「Ｎｉ＝Ｍｉ＊ＫＦｉ」で計算すれば良い（「＊」として、例えば、排他的論理和演算や論理和、減算等が挙げられる。）。あるいは、ＫＦを鍵データとして、既知の暗号化法を用いることも可能である。【００２２】  情報処理装置２は送信手段２ｃを有していて、Ｎ及びＬＦは送信手段２ｃを介して情報処理装置３に送られ、その受信手段３ａにより受信される。【００２３】  情報処理装置３は、Ｎを含むファイル及びＬＦを受信した場合に、ＬＦ、ＨＦから鍵ファイル「ＫＦ′」を生成する鍵生成手段３ｂを備えている。ＫＦ′が正しく生成された場合には、「ＫＦ′＝ＫＦ」であるが、ＨＦを知らない相手がＨＦとは異なるファイルを用いてＫＦ′を生成した場合には「ＫＦ′≠ＫＦ」である。【００２４】  復号化処理手段３ｃはＫＦ′を用いてＮを復号化するものであり、暗号化時のＫＦと同じ内容のＫＦ′を用いない限りＮを復号化できない。つまり、Ｎの復号化処理を関数「Ｇ（Ｎ，ＫＦ′）」で表すとき、「Ｍ＝Ｇ（Ｆ（Ｍ，ＫＦ），ＫＦ′）」として正しく復号化されるための条件は「ＫＦ′＝ＫＦ」である。【００２５】  以上のように、ＯＦが装置３から装置２に提供され、ＬＦとＮが装置２から装置３に送信される。また、ＨＦ、ＢＦが各装置においてそれぞれ秘蔵され、ＴＣ、ＫＦ（＝ＫＦ′）が両装置間で共有される。尚、ＫＦはＢＦ、ＯＦを用いて生成されるので、ＢＦが同じでも送信相手に応じてＫＦが異なる。即ち、送信先に応じてＢＦを変更したり選択する必要がないので、送信者は１つのＢＦを常用できるが、勿論、状況や必要に応じてＢＦを変えても良い。また上記の例に限らずＬＦを公開しておけば、これをＮと一緒に送信したり記録する必要がなくなる。【００２６】  図２は、送受信処理例の説明図であり、送信者Ａから受信者Ｂへのデータ伝送を示している。【００２７】  但し、受信者ＢのファイルＯＦは公開されるものとする。尚、行列ＴＣは正則でない（つまり、行列式の値がゼロである。）。また、ファイル「Ｘ」に対して「Ｔ（Ｘ）」はファイルＸのデータを要素として構成される行列（群）であって、ＴＣと同次元の行列を意味する。「・」は行列の積演算を示す。【００２８】  処理手順は下記の通りである。【００２９】  （１）Ｂは、ＴＣと秘密ファイルＨＦを用いてＯＦを生成してＯＦを公開する。計算式は「Ｔ（ＯＦ）＝ＴＣ・Ｔ（ＨＦ）」
（２）Ａは、ＢＦと相手ＢのＯＦを用いて鍵ＫＦを生成する。計算式は、「Ｔ（ＫＦ）＝Ｔ（ＢＦ）・Ｔ（ＯＦ）」
（３）Ａは、ＫＦを使って平文Ｍを暗号化してＮを生成する（例えば、演算「Ｍ＊ＫＦ」）。そして、ＢＦ、ＴＣからＬＦを生成する。計算式は「Ｔ（ＬＦ）＝Ｔ（ＢＦ）・ＴＣ」
（４）Ａは、ＬＦとＮを相手Ｂに送る（又はＬＦを公開済みであれば、ＮだけをＢに送る）
（５）Ｂは、ＬＦとＨＦを用いてＫＦ′を生成する。計算式は、「Ｔ（ＫＦ′）＝Ｔ（ＬＦ）・Ｔ（ＨＦ）」
（６）Ｂが正しい相手であれば、「Ｔ（ＫＦ′）＝Ｔ（ＫＦ）」となるので、ＫＦ′を使ってＮをＭに復号する（演算「Ｎ＊ＫＦ′」）。
本例では、上記した「（その１）」において、第二ファイルがＯＦで、第三ファイルがＢＦであるが、上記「（その２）」の場合には、Ｍのデータに基づく行列Ｔｍ＝Ｔ（Ｍ）を用いて、「Ｔ（ＫＦ）＝Ｔ（ＢＦ）・Ｔ（Ｍ）・Ｔ（ＯＦ）」から鍵を計算すれば良い（鍵がＭの内容に依存して変化する。）。【００３０】  Ａ、Ｂ間の伝送経路から第三者が取得できる情報は、ＯＦ、ＬＦ、Ｎであるが、これらからＫＦを生成することはできない。また、ＢＦ、ＨＦはＡ、Ｂ間で伝送されないので、第三者は知り得ない。尚、多人数の間で通信を行う場合には、行列ＴＣとして全員で同じものを使うか、あるいは所属するグループ毎に異なる行列（正則でない行列）を用いれば良い。また、送信者と受信者で異なる非正則行列を使用する等、各種の実施態様が可能である。【００３１】  正則でない行列ＴＣを用いることにより、ＯＦからＨＦを、ＬＦからＢＦが求められないので安全である。また、行列の積演算を用いて各ファイルを高速に生成できる。例えば、行列ＴＣｉｊが２行２列の場合、３数ａ、ｂ、ｃを用いて、ＴＣ１１＝ａ、ＴＣ１２＝ｂ、ＴＣ２１＝ｃ・ａ、ＴＣ２２＝ｃ・ｂとすればよく、ファイル「Ｘ」の構成データを要素とする行列を「［Ｘ］ｊｋ」と記すとき、「［ＴＣ・Ｘ］ｉｋ＝ＴＣｉｊ・Ｘｊｋ」により計算できる（ｉ，ｊ，ｋはいずれも自然数を示し、アインシュタインの規約で表している。）。また、この表記法によれば、例えば、上記の「Ｔ（ＯＦ）＝ＴＣ・Ｔ（ＨＦ）」は「［ＯＦ］ｉｋ＝ＴＣｉｊ・［ＨＦ］ｊｋ」であり、「Ｔ（ＫＦ）＝Ｔ（ＢＦ）・Ｔ（ＯＦ）」は「［ＫＦ］ｉｋ＝［ＢＦ］ｉｊ・［ＯＦ］ｊｋ」である。演算結果である行列要素をデータ列として時系列に並べた数値により各ファイルが構成される（行列の積演算には、行数×列数のデータが必要であり、ファイルのデータ数がその倍数でないために、必要なデータが不足する場合には、予め決められた値（ゼロやダミー値等）を付加して計算すれば良い。）。【００３２】  尚、上記の例では説明の便宜上、装置２の使用者Ａから装置３の使用者Ｂへの一方向性伝送を想定したが、双方向性伝送を行う場合には、勿論、装置２、３の両機能を備えた装置構成を用いれば良い。この場合、Ａは、ＢＦと異なる秘蔵ファイル「ＨＦ′」とＴＣを用いてファイルＯＦ′を生成して公開しておけば良い（処理は上記の説明と同様である。）。あるいはＨＦ′としてＢＦを用いても良い。この場合に、「Ｘａ＝Ｔ（ＢＦ）」と記すと、「Ｙ１ａ＝Ｔ（ＯＦ′）＝ＴＣ・Ｘａ」を計算して、ＯＦ′を公開すれば良い。「Ｙ２ａ＝Ｔ（ＬＦ）＝Ｘａ・ＴＣ」として、ＬＦをＯＦ′とともに公開する場合には、ＡはＹ１ａ、Ｙ２ａを計算して公開する。他方、「Ｘｂ＝Ｔ（ＨＦ）」、「Ｙ１ｂ＝Ｔ（ＯＦ）＝ＴＣ・Ｘｂ」と記すとき、Ｂは「Ｙ２ｂ、＝Ｘｂ・ＴＣ」を計算して、これをＹ１ｂとともに公開すれば良い。ＡからＢへのＭの暗号化に用いるＫＦを「ＫＦ１」と記し、ＢからＡへのＭの暗号化に用いるＫＦを「ＫＦ２」と記すと、一般に両ファイルが異なる。つまり、「ＫＦ１＝Ｘａ・Ｙ１ｂ＝Ｘａ・ＴＣ・Ｘｂ」、「ＫＦ２＝Ｘｂ・Ｙ１ａ＝Ｘｂ・ＴＣ・Ｘａ」である。よって、Ａ、Ｂの間で２種類の鍵ファイルを共有でき���ので、用途や状況に応じて各鍵ファイルを使い分けることができる。例えば、一方の鍵ファイルがＡ、Ｂ間で共有された後に、該鍵ファイルを使ってＹ２ａ又はＹ２ｂを暗号化して受け渡すことにより、他方の鍵ファイルを安全に共有できる。よって、仮に一方の鍵ファイルが第三者に発覚しても、他方の鍵ファイルが残っている（鍵ファイルが一つの場合にはＨＦやＢＦを変更する必要が生じる。）。【００３３】  あるいは、両方の鍵ファイルを使うことによって２重鍵を実現することができ、例えば、１回目の暗号化を第一の鍵ファイルで行った後、２回目の暗号化を第二の鍵ファイルで行えるので、さらに強度が増す。
尚、上記では、積演算と加算演算の組み合わせからなる行列演算を例示したが、これに限らず、例えば、論理積演算と排他的論理和演算の組み合わせによって行列演算を定義する形態（積演算を論理積演算に、加算演算を排他的論理和演算にそれぞれ置換すれば良い。）。
本発明に係る鍵共有方法によれば、３者以上の間で鍵ファイルを共用することができ（例えば、３人の場合には、ＫＦ＝Ｘｃ・ＴＣ・Ｘｂ・ＴＣ・Ｘａ等。）、一般にＮ人ではＮ！通りの鍵ファイルを利用することが可能である。
この他には、上記ＢＦとＴＣとの積、あるいは、ＢＦ、Ｍ、ＴＣの積を計算して鍵ファイルを生成する形態も可能である。但し、この場合にはＨＦのデータに基づく行列が正則行列である必要があり、該行列の逆行列が求まることが要点となる。
例えば、上記した「（その３）」の場合には、Ａが「Ｔ（ＫＦ）＝Ｔ（ＢＦ）・ＴＣ」を計算し、「Ｔ（ＢＦ）・（ＴＣ・Ｔ（ＨＦ））」をＮと一緒にＢに送る。Ｂは、Ｔ（ＨＦ）の逆行列「ＩＴ（ＨＦ）」を用いて、「Ｔ（ＢＦ）・（ＴＣ・Ｔ（ＨＦ））・ＩＴ（ＨＦ）＝Ｔ（ＢＦ）・ＴＣ」から鍵を得ることができる。
また、上記した「（その４）」の場合には、Ａが「Ｔ（ＫＦ）＝Ｔ（ＢＦ）・Ｔ（Ｍ）・ＴＣ」を計算し、Ａが「Ｔ（ＢＦ）・Ｔ（Ｍ）・（ＴＣ・Ｔ（ＨＦ））」をＮと一緒にＢに送る。Ｂは、Ｔ（ＨＦ）の逆行列「ＩＴ（ＨＦ）」を用いて、「Ｔ（ＢＦ）・Ｔ（Ｍ）・（ＴＣ・Ｔ（ＨＦ））・ＩＴ（ＨＦ）＝Ｔ（ＢＦ）・Ｔ（Ｍ）・ＴＣ”から鍵を得ることができる。
以上に説明した内容は、ｍ×ｍの正方行列による演算に限らず、ｍ×ｎ行列（ｍとｎが異なる行列）にも適用可能である。例えば、行列ＴＣがｍ×ｎ行列であり、ＨＦ、ＢＦのデータで構成される行列Ｔ（ＨＦ）、Ｔ（ＢＦ）がｎ×ｍ行列である場合に、Ｂはｍ×ｎ行列ＴＣと、自分のＨＦに基づく行列Ｔ（ＨＦ）との積を求め、ｍ×ｍ行列から得られるファイルを公開する。Ａは、このｍ×ｍの行列と、自分のＢＦに基づく行列Ｔ（ＢＦ）との積を求め、ｎ×ｍ行列から鍵を生成する。そして、この鍵を使って暗号化する。Ｔ（ＢＦ）とｍ×ｎ行列ＴＣとの積を求め、このｎ×ｎ行列から得られるファイルを、ＮとともにＢに送る。Ｂは受けとったファイルに基づくｎ×ｎ行列と、自分のＴ（ＨＦ）との積からｎ×ｍ行列を求めて、鍵を生成して、これを使ってＮを復号化することができる。
尚、ｍ×ｎ行列において、ｍとｎが異なる行列は、特定の行又は列の要素が全てゼロである正方行列とみなすことができるので、本質的には上記内容と同じであることが理解される。従って、正方行列において、Ｎ個の列又は行のうち独立なものをｎ個とした場合に全体の「ｎ／Ｎ」のデータを交換すれば良く、これにより送信量を低減できる。【００３４】  次に、平文Ｍのファイル認証について説明する。
Ａが平文Ｍに署名してＢが検証する場合、下記の手順をとる。ここでは、Ｙ１ａが公開されているとして、Ｍに関する署名ファイルを「Ｓ」と記す。【００３５】  （１）Ａは、「Ｔ（Ｓ）＝Ｘａ・ＴＣ・Ｔ（Ｍ）」を計算してＳを生成する
（２）Ａは、ＭとＳをＢに送る
（３）Ｂは、Ｍ、ＴＣ、Ｙ１ａから、「Ｚ１＝Ｙ１ａ・ＴＣ・Ｔ（Ｍ）＝ＴＣ・Ｘａ・ＴＣ・Ｔ（Ｍ）」を求め、ＴＣ、Ｓから「Ｚ２＝ＴＣ・Ｔ（Ｓ）＝ＴＣ・Ｘａ・ＴＣ・Ｔ（Ｍ）」を求める
（４）Ｂは、「Ｚ１＝Ｚ２」であるか否かを調べる
（５）「Ｚ１＝Ｚ２」ならばＡの署名が正しく検証されるが、「Ｚ１≠Ｚ２」ならばＡ以外の署名、Ｍの改竄の可能性がある。【００３６】  ＳがＭに関するＡの署名でない場合には、Ｚ２においてＸａが違い、また、Ｍが改竄された場合には、Ｚ１においてＴ（Ｍ）が違うので、いずれの場合も「Ｚ１≠Ｚ２」となる。
尚、本例では、「Ｔ（Ｓ）＝Ｘａ・ＴＣ・Ｔ（Ｍ）」を計算してＳを生成したが、「Ｔ（Ｓ）＝Ｘａ・Ｔ（Ｍ）・ＴＣ」を計算してＳを生成しても構わない。【００３７】  このような署名法を用いることで、平文や暗号文あるいは鍵生成のための上記Ｙ２ａやＹ２ｂ等を互いに検証し合えるようになる。尚、Ｍのデータ長が長い場合には、Ｔ（Ｍ）の代わりに、メッセージダイジェスト関数やＭのハッシュ値を要素とする行列を用いれば良い。
図３に示すように、Ｓは装置２のファイル生成手段２ｄで作成され、受信されたＭやＳの検証は装置３の署名検証手段３ｄにより行われる。
署名ファイルとして、鍵ファイルの生成に必要なファイルを用いるのが、伝送情報量の削減及び時間の節約に有効である。
例えば、送信者Ａが署名「Ｔ（Ｓ）＝Ｘａ・Ｔ（Ｍ）・ＴＣ」を検証者Ｂに送る場合には、「Ｔ（ＫＦ）＝Ｘａ・Ｔ（Ｍ）・ＴＣ・Ｘｂ」によってお互いに鍵ファイルを共有できる。
処理手順は下記の通りである。
（１）Ａは、「Ｔ（Ｓ）＝Ｘａ・Ｔ（Ｍ）・ＴＣ」を計算してＳを生成するとともに、「Ｔ（ＫＦ）＝Ｘａ・Ｔ（Ｍ）・ＴＣ・Ｘｂ」から鍵を生成してＭを暗号化する（Ｎの生成）
（２）Ａは、ＮとＳをＢに送る
（３）Ｂは、ＳとＸｂから「Ｔ（Ｓ）・Ｘｂ＝（Ｘａ・Ｔ（Ｍ）・ＴＣ）・Ｘｂ」を計算して鍵を得て、Ｎを復号化してＭを得る。Ｍ、ＴＣ、Ｙ１ａから、「Ｚ１＝Ｙ１ａ・Ｔ（Ｍ）・ＴＣ＝ＴＣ・Ｘａ・Ｔ（Ｍ）・ＴＣ」を求め、ＴＣ、Ｓから「Ｚ２＝ＴＣ・Ｔ（Ｓ）＝ＴＣ・Ｘａ・Ｔ（Ｍ）・ＴＣ」を求める
（４）Ｂは、「Ｚ１＝Ｚ２」であるか否かを調べる
（５）「Ｚ１＝Ｚ２」ならばＡの署名が正しく検証されるが、「Ｚ１≠Ｚ２」ならばＡ以外の署名、Ｎ、Ｍに改竄の可能性がある。
あるいは、別例として、Ａが署名「Ｔ（Ｓ）＝Ｘａ・Ｔ（Ｍ）・ＴＣ・Ｘｂ」を検証者Ｂに送る場合（但し、「Ｘｂ」は正則行列とする。）には、「Ｔ（ＫＦ）＝Ｘａ・Ｔ（Ｍ）・ＴＣ」によってお互いに鍵を共有できる。
本例において、上記した処理手順との相違点は、下記の通りである。
（１’）Ａは、「Ｔ（Ｓ）＝Ｘａ・Ｔ（Ｍ）・（ＴＣ・Ｘｂ）」を計算してＳを生成するとともに、「Ｔ（ＫＦ）＝Ｘａ・Ｔ（Ｍ）・ＴＣ」から鍵を生成してＭを暗号化する（Ｎの生成）
（３’）Ｂは、Ｓと、Ｘｂの逆行列ＮＸａから「Ｔ（Ｓ）・Ｎ・Ｘｂ＝Ｘａ・Ｔ（Ｍ）・ＴＣ」を計算して鍵ファイルを得て、Ｎを復号化してＭを得る。Ｍ、ＴＣ、Ｙ１ａ、Ｘｂから、「Ｚ１＝Ｙ１ａ・Ｔ（Ｍ）・ＴＣ・Ｘｂ＝ＴＣ・Ｘａ・Ｔ（Ｍ）・ＴＣ・Ｘｂ」を求め、ＴＣ、Ｓから「Ｚ２＝ＴＣ・Ｔ（Ｓ）＝ＴＣ・Ｘａ・Ｔ（Ｍ）・ＴＣ・Ｘｂ」を求める。
ステップ（２）、（４）、（５）については上記と同じである。【００３８】  ＫＦを用いたＭの暗号化には如何なる方法を使用しても良い。例えば、ＫＦのうち所定の鍵長をもつデータを生成してこれを鍵データとして既知の共通鍵暗号を使用する方法や、Ｍに対して所定の演算処理を施す方法（減算や排他的論理和等）、Ｍを複数の成分データからなる構成ファイル（又は成分ファイル）に分割してから、ＫＦを用いて各構成ファイルをそれぞれに暗号化する方法、上記した鍵ファイルを乱数表として利用する方法等を用いることができる。【００３９】  尚、情報処理装置３において、Ｎを受信した場合には予め設定されたパスワードの入力により特定され又は選択されるＨＦや既存のＫＦが読み出されて、Ｎが復号化されるように構成する。このパスワードは互いの装置間で伝送されないので安全であり、該パスワードを用いてＨＦを暗号化しておくことが好ましい。【００４０】  また、データ記録再生系の処理装置への適用においては、図１に示す情報処理装置２を記録装置とし、情報処理装置３を再生装置とすれば良い。つまり、情報処理装置２において送信手段２ｃを記録手段に置換することで、Ｎ又はＮ及びＬＦを記憶媒体（半導体メモリ等）又は記録媒体（光学式ディスク状媒体や磁気式テープ状媒体等）に記録する。そして、装置３において受信手段３ａを再生手段に置換し、記憶媒体又は記録媒体からＮ又はＮ及びＬＦを再生してＫＦを生成する。そして、ＫＦでＮを復号化してＭを得る。記憶媒体又は記録媒体を第三者が取得しても、ＫＦが得られない限りＮを復号できないので、不正なコピー等が制限される。
以上に説明した、本発明に係る鍵共有の一般的条件は以下の通りである。
（１）元「ＴＣ」が逆元をもたないこと
（２）演算規則として結合律が成立すること（つまり、元Ｘ、ＴＣ、Ｙにおいて、「Ｙ・（ＴＣ・Ｘ）＝（Ｙ・ＴＣ）・Ｘ」が成立すること）。
【図面の簡単な説明】
【００４１】
【図１】  本発明に係る鍵共有及び暗号システムの基本構成例を示す機能ブロック図。
【図２】  本発明に係る処理例の説明図。
【図３】  本発明に係るファイル認証システムの基本構成例を示す機能ブロック図。
【符号の説明】
【００４２】  １…システム、２…第一の情報処理装置、２ａ…ファイル生成手段、２ｂ…暗号化処理手段、３…第二の情報処理装置、３ｂ…鍵生成手段、３ｃ…復号化処理手段、３ｄ…署名検証手段３ｄ
【図１】
2005269587.tif 000003
【図２】
2005269587.tif 000004
【図３】
2005269587.tif 000005