(57)【要約】【課題】現実的なプログラムサイズで入力における誤りと出力における誤りとを統計的に無相関にすることのできるシンボル変換手法を得る。【解決手段】入力シンボル列を線形変換して入力シンボル列よりも要素数の少ない出力シンボル列を出力する装置であって、入力シンボル列と変換行列の積を出力する線形変換部と、変換行列を線形変換部に提供するフィルタ生成部１２０と、を備え、フィルタ生成部１２０は、変換行列の少なくとも１つ以上の列ベクトルが、少なくとも２つ以上の０でない要素をもつ行列を提供する。【選択図】図１
2010128083.tif 000002
【特許請求の範囲】
【請求項１】
入力シンボル列を線形変換して前記入力シンボル列よりも要素数の少ない出力シンボル列を出力する装置であって、
入力シンボル列と変換行列の積を出力する線形変換部と、
前記変換行列を前記線形変換部に提供するフィルタ生成部と、
を備え、
前記フィルタ生成部は、
前記変換行列の少なくとも１つ以上の列ベクトルが、少なくとも２つ以上の０でない要素をもつ行列を提供する
ことを特徴とするシンボル線形変換装置。
【請求項２】
前記フィルタ生成部は、前記変換行列の第１列の要素を巡回シフトして他列を生成する
ことを特徴とする請求項１記載のシンボル線形変換装置。
【請求項３】
前記線形変換部は、
前記入力シンボル列のうち１つのシンボルを前記出力シンボル列の要素数と同数複製して第１ベクトルを生成する入力拡張部と、
前記第１ベクトルと前記変換行列の１つの列の論理積を求める論理積演算部と、
前記論理積演算部が求めた論理積とその直前に前記論理積演算部が求めた論理積との排他的論理和を求める排他的論理和演算部と、
前記排他的論理和演算部の演算結果を少なくとも１回分記憶する一時記憶部と、
を備え、
前記入力拡張部、前記論理積演算部、および前記排他的論理和演算部の処理を、
前記入力シンボル列の全てのシンボルについて実行する
ことを特徴とする請求項１または請求項２記載のシンボル線形変換装置。
【請求項４】
前記フィルタ生成部は、
前記変換行列の列ベクトルの初期値を保持する初期ベクトル保持部と、
前記初期値の要素を巡回シフトさせて他列を生成するシフト部と、
を備えることを特徴とする請求項１ないし請求項３のいずれかに記載のシンボル線形変換装置。
【請求項５】
前記初期ベクトル保持部は、前記初期値の候補を複数保持しており、
前記フィルタ生成部は、
前記初期ベクトル保持部が保持している複数の前記候補のうち１つを前記変換行列の第１列として選択する初期ベクトル管理部と、
を備え、
前記初期ベクトル管理部は、
前記シフト部が前記初期値の要素を１巡分シフトさせると、
前記初期ベクトル保持部が保持している他の前記候補を用いて前記シフト部の巡回シフトを初期化する初期化部を有する
ことを特徴とする請求項４記載のシンボル線形変換装置。
【請求項６】
請求項１ないし請求項５のいずれかに記載のシンボル線形変換装置を用いて共有鍵を生成することを特徴とする共有鍵生成装置。
【請求項７】
入力シンボル列を線形変換して前記入力シンボル列よりも要素数の少ない出力シンボル列を出力する方法であって、
入力シンボル列と変換行列の積を出力する線形変換ステップと、
前記変換行列を前記線形変換ステップに提供するフィルタ生成ステップと、
を有し、
前記フィルタ生成ステップは、
前記変換行列の少なくとも１つ以上の列ベクトルを、少なくとも２つ以上の０でない要素をもつベクトルから生成する
ことを特徴とするシンボル線形変換方法。
【請求項８】
前記フィルタ生成ステップでは、
前記変換行列の第１列の要素を巡回シフトして他列を生成する
ことを特徴とする請求項７記載のシンボル線形変換方法。
【請求項９】
前記線形変換ステップは、
前記入力シンボル列のうち１つのシンボルを前記出力シンボル列の要素数と同数複製して第１ベクトルを生成する入力拡張ステップと、
前記第１ベクトルと前記変換行列の１つの列の論理積を求める論理積演算ステップと、
前記論理積演算ステップで求めた論理積とその直前に前記論理積演算ステップで求めた論理積との排他的論理和を求める排他的論理和演算ステップと、
前記排他的論理和演算ステップの演算結果を少なくとも１回分記憶する一時記憶ステップと、
を有し、
前記入力拡張ステップ、前記論理積演算ステップ、および前記排他的論理和演算ステップの処理を、
前記入力シンボル列の全てのシンボルについて実行する
ことを特徴とする請求項７または請求項８記載のシンボル線形変換方法。
【請求項１０】
前記フィルタ生成ステップは、
前記変換行列の列ベクトルの初期値を保持する初期ベクトル保持ステップと、
前記初期値の要素を巡回シフトさせて他列を生成するシフトステップとを有する
ことを特徴とする請求項７ないし請求項９のいずれかに記載のシンボル線形変換方法。
【請求項１１】
前記初期ベクトル保持手段ステップでは、前記初期値の候補を複数保持しており、
前記フィルタ生成ステップは、
前記初期ベクトル保持手段が保持している複数の前記候補のうち１つを前記変換行列の第１列として選択する初期ベクトル管理ステップを有し、
前記初期ベクトル管理ステップは、
前記シフトステップにおいて前記初期値の要素が１巡分シフトさせられると、
前記初期ベクトル保持ステップで保持した他の前記候補を用いて前記シフトステップの巡回シフトを初期化する
ことを特徴とする請求項１０記載のシンボル線形変換方法。
【請求項１２】
請求項７ないし請求項１１のいずれかに記載のシンボル線形変換方法を用いて共有鍵を生成することを特徴とする共有鍵生成方法。
【請求項１３】
請求項７ないし請求項１１のいずれかに記載のシンボル線形変換方法をコンピュータに実行させることを特徴とするシンボル線形変換プログラム。
【請求項１４】
請求項１２記載の共有鍵生成方法をコンピュータに実行させることを特徴とする共有鍵生成プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、現実的なプログラムサイズで入力における誤りと出力における誤りとを統計的に無相関にすることのできるシンボル変換手法に関する。更に詳述すると、本発明は、入力シンボル列を通信路を介して受信した後に、縮小変換して出力シンボル列を出力する手法に関し、特に出力シンボル列における誤りの箇所および個数を特定困難にする技術に関する。
【背景技術】
【０００２】
ＰＫＩが利用できない環境での鍵共有では、予め何らの共有情報も持たない機器同士が、第３者に盗聴を難しくしつつ通信をおこなう必要がある。通常、鍵情報は、平文もしくはそれを符号化等のスクランブルしたものとして送られる。
一般的な例として、管理者がはがきにパスワードを書いてユーザに送付する等して、ユーザは紙に書かれたパスワードをキーパッド等を用いて機器を設定する。キーバッドで入力された情報はハードウェア回路の電気回路を流れるから、盗聴するためには機器に直接アクセスするか、キーロガー等のいわゆるスパイウェアを機器に感染させるなどしなければならず、一般には困難である。
【０００３】
これに比べて無線通信路を流れる鍵情報は電波を拾うことができれば盗聴できてしまう。ここでは、送信端末が、無線通信路を用いて秘密情報を平文で送信する場合を想定する。この時、盗聴端末は、任意のビット誤り率でもって秘密情報を受信できるとする。
また、盗聴端末は、正しい秘密情報を総当り的に探索する手段を持っているとする。例えば、盗聴端末は、正しい秘密情報を鍵として用いたときの、平文と暗号文との組を入手できるとする。
【０００４】
いま、送信端末はＮビットの鍵情報を送信しようとしているものとする。
盗聴端末は、無線通信路を盗聴して送信端末が送信した鍵情報を受信し、受信したＮビットの鍵情報の中に、Ａ個のビット誤りがあると想定して、総当たり的に正しい鍵情報の特定を試みるとする。
この場合、盗聴端末が総当たり探索をしなければならない空間の大きさは、下記（式１）となる。
Ａ＝Ｎ！／Ａ！（Ｎ−Ａ）！  ・・・（式１）
この値が十分に大きいとき、盗聴端末による鍵情報の特定が計算量的に困難となり、結果として、無線平文での秘密情報の配送が安全なものとなると考えられる。
【０００５】
盗聴端末による総当たり探索の空間の大きさを増やすための方法のーつとして、配送するビット列の長さを増やす方法がある。
例えば、送信端末と受信端末がＮビットの鍵情報を共有しようとしている場合を想定する。共有手順は以下の通りであるとする。
【０００６】
（１）送信端末は、Ｍビット（Ｍ＞Ｎ）のビット列を受信端末に送信する。
（２）送信端末と受信端末は、そのビット列に所定の演算規則を適用してＮビットの鍵情報を生成する。
（３）送信端末と受信端末が同じ演算規則を同じＭビットのビット列に適用することにより、送信端末と受信端末の双方で、Ｎビットの鍵情報が共有される。
【０００７】
この場合、盗聴端末による総当たり探索の空間の大きさは、MＣA通りとなる。
盗聴端末が特定すべきビット列はＮビットの鍵情報であるのに対し、実際に無線通信路を流れるのはＭビット（Ｍ＞Ｎ）であるため、盗聴端末はより大きな探索空間を探索しなければならず、盗聴を困難にすることができる。
【０００８】
ただし、上記手順において、Ｍビットのビット列をＮビット列に変換する演算規則によっては、送信ビット列（Ｍビット）を実際に共有したいビット列（Ｎビット）よりも大きくする効果が十分に出ないことがある。
【０００９】
例えば、簡単な演算規則（変換規則）としては、ＮがＭを割り切れることを仮定し、Ｍビットのビット列をＮビットずつ、Ｍ／Ｎ個のブロックに分割し、全ブロックを排他的論理和で足し合わせる方法がある。
この変換方法だと、変換後に継承されるビット誤りの数は、最大でＡ個となる。
このとき、盗聴端末が正しい鍵情報を総当り的に求めるための探索空間は、NＣAとなってＮに依拠するので、配送するビット列の長さをＭビットに増やすことのメリットを十分に出せない。
【００１０】
変換後の探索空間を最大にするためには、入力ビット列中の誤り数と、出力ビット列中の誤り数およびパターンが、統計的に見て無相関にするとよい。このとき総当りによる探索空聞の大きさは、下記（式２）で与えられる。
【数１】
2010128083.tif 000003
【００１１】
上述のような性質を満たす変換関数として、一方向性関数がある。
一方向性関数は、出力のビット列から入力ビット列を予測するのが困難となるようにするために、入力ビット列と出力ビット列が無相関であるように設計されている。
したがって、入力ビット列の変化（誤りビット）が出力ビット列の変化（誤りビット）に及ぼす影響も無相関となる。
一方向関数の一例として、下記非特許文献１に記載されているハッシュ関数がある。
【００１２】
【非特許文献１】”Ｓｅｃｕｒｅ  Ｈａｓｈ  Ｓｔａｎｄａｒｄ”，Ｕｎｉｔｅｄ  Ｓｔａｔｅｓ  ｏｆ  Ａｍｅｒｉｃａ，Ｎａｔｉｏｎａｌ  Ｉｎｓｔｉｔｕｔｅ  ｏｆ  Ｓｃｉｅｎｃｅ  ａｎｄ  Ｔｅｃｈｎｏｌｏｇｙ，Ｆｅｄｅｒａｌ  Ｉｎｆｏｒｍａｔｉｏｎ  Ｐｒｏｃｅｓｓｉｎｇ  Ｓｔａｎｄａｒｄ（ＦＩＰＳ）１８０−１，１９９３年４月
【発明の開示】
【発明が解決しようとする課題】
【００１３】
上述の一方向性関数の例として、暗号ハッシュ関数が挙げられる。
しかし、これらハッシュ関数は、衝突耐性等の条件を満たすために非線形演算を利用している。その結果、低リソースの計算機に実装したときのプログラムサイズが、計算機からみて非実用的なサイズのプログラム量となる。
【００１４】
そのため、現実的なプログラムサイズで入力における誤りと出力における誤りとを統計的に無相関にすることのできるシンボル変換手法が望まれていた。
【課題を解決するための手段】
【００１５】
本発明に係るシンボル線形変換装置は、入力シンボル列を線形変換して前記入力シンボル列よりも要素数の少ない出力シンボル列を出力する装置であって、入力シンボル列と変換行列の積を出力する線形変換部と、前記変換行列を前記線形変換部に提供するフィルタ生成部と、を備え、前記フィルタ生成部は、前記変換行列の少なくとも１つ以上の列ベクトルが、少なくとも２つ以上の０でない要素をもつ行列を提供するものである。
【発明の効果】
【００１６】
本発明に係るシンボル線形変換装置によれば、現実的なプログラムサイズで入力における誤りと出力における誤りとを統計的に無相関にすることができる。
特に変換行列そのものを記憶するのではなく、シードとなる１つ又は少数の初期ベクトルから他の（列）ベクトルを生成するので、プログラムサイズを小さく抑えることができる。
また、変換行列の列ベクトルの重みを２つ以上としてあるため、入力シンボル列に誤りが含まれている場合には、この性質により出力シンボル列において誤りが増幅されるケースが存在する。
即ち、受信先との間で共有しようとしている真のシンボル列よりも送信するシンボル列を長くすることの効果を十分に発揮することができる。
【発明を実施するための最良の形態】
【００１７】
実施の形態１．
図１は、本発明の実施の形態１に係るシンボル線形変換装置１００の機能ブロック図である。シンボル線形変換装置１００は、入力シンボル列を線形変換して出力シンボル列を出力する装置である。以下では、０または１のビットを「シンボル」として用いる例を説明するが、シンボルの例はこれに限られるものではない。
以下、いずれの場合も、数字の大小は、Ｍ＞Ｎ＞１、ｍ＞ｎ＞１を意味するものとする。
【００１８】
シンボル線形変換装置１００は、例えば送信端末と受信端末が鍵を共有する際に、以下のように用いることができる。
【００１９】
（１）送信端末は、受信端末との間でＮビットの鍵を共有したいものとする。このＮビットのビット列は任意のビット列でよい。
（２）送信端末は、Ｍビットのランダムな入力ビット列ｍを生成し、図１のシンボル線形変換装置１００に入力する。
（３）送信端末は、シンボル線形変換装置１００が出力するＮビットの出力ビット列ｎを、受信端末との間で共有するＮビットの鍵として用いる。
（４）上記Ｍビットのランダムな入力ビット列ｍを、受信端末に送信する。
【００２０】
（５）受信端末は、送信端末が送信した入力ビット列ｍを受信する。
（６）受信端末は、入力ビット列ｍを、図１のシンボル線形変換装置１００と同様の構成を備える装置に入力する。
（７）受信端末は、シンボル線形変換装置１００が出力する出力ビット列ｎを、送信端末との間で共有するＮビットの鍵として用いる。
（８）以上の手順により、送信端末と受信端末の間でＮビットの鍵（出力ビット列ｎ）が共有されることになる。
【００２１】
上記手順を無線通信路上で行う場合、送信端末と受信端末は互いに入出力信号が届く比較的近い距離内に存在していると思われるため、入力ビット列ｍを送受信する過程でビット誤りが発生する可能性は少ない。
一方、盗聴端末が入力ビット列ｍを盗聴しようとする場合、一般には比較的遠い距離からこれを盗聴しようとするものと考えられる。したがって、盗聴端末が受信する入力ビット列ｍには、ビット誤りが含まれる可能性が高まる。
【００２２】
仮に、盗聴端末が図１と同様のシンボル線形変換装置を備え、盗聴したＥ個ビット誤りを含む入力ビット列ｍをこのシンボル線形変換装置に入力するものと仮定する。
攻撃者の目的は正しいビット列ｎ（＝鍵情報）であり、このために正しい入力ビット列ｍを総当り的に探す攻撃するケースが多い。たとえばエラービットがＥ＝３個までならビット列ｍのビット長が長くても、現実的な時間内で総当り攻撃ができると期待できる。しかし今ビット列ｍは十分に長く、したがってＥの数も十分大きいと仮定する。すなわち、最大総当り数MＣEは十分大きい数値である。しかしながら、盗聴端末側のシンボル線形変換装置が出力する出力ビット列ｎにＥ個のビット誤りがそのまま受け継がれたとすると、最大総当り数はNＣEとなり、探索対象の空間が小さくなる。
【００２３】
上記に鑑み、本発明に係るシンボル線形変換装置１００は、入力ビット列ｍにビット誤りが含まれている場合に、そのビット誤り以上のビット誤りが出力ビット列ｎ内に含まれるようなケースが存在するように構成されている。
以下、図１に示すシンボル線形変換装置１００の構成について説明する。
【００２４】
シンボル線形変換装置１００は、入力拡張部１１０、拡張フィルタ生成部１２０、論理積演算部１３０、排他的論理和演算部１４０、一時記憶部１５０を備える。
【００２５】
入力拡張部１１０は、入力ビット列ｍの任意のｉ番目のビット値ａiをＮ個複製して作る、下記（式３）のべクトルαiを生成する。
【数２】
2010128083.tif 000004
【００２６】
拡散フィルタ生成部１２０は、動作回数またはインデックスｉに依存したＮ次元のフィルタべクトルｔi∈｛０，１｝Nを生成する機能部である。拡散フィルタ生成部１２０は、後述の図２で説明する構成を備える。
【００２７】
論理積演算部１３０は、拡張フィルタベクトルｔiと入力拡張部１１０の出力との論理積を求めて排他的論理和演算部１４０に出力する。
排他的論理和演算部１４０は、一時記憶部１５０が記億しているＮビットのビット列と論理積演算部１３０が出力したビット列との排他的論理和を求め、一時記憶部１５０に出力する。
【００２８】
一時記憶部１５０は、排他的論理和演算部１４０の演算結果を一時的に（例えば、１回分）記憶して次回演算時にこれを排他的論理和演算部１４０へ戻す。排他的論理和演算部１４０は、一時記憶部１５０が記億している演算結果と、論理積演算部１３０から出力されてきた次の演算結果との排他的論理和を求める。この繰り返しにより、出力ビット列ｎが連鎖暗号的に生成される。
なお、一時記憶部１５０の初期値は、全ビット０とする。
【００２９】
図２は、拡散フィルタ生成部１２０の機能ブロック図である。
拡散フィルタ生成部１２０は、初期ベクトル保持部１２１、巡回シフト演算部１２２、シフト量指定部１２３を備える。
【００３０】
初期べクトル保持部１２１は、Ｎビットの記憶領域からなる記憶手段であり、重みｋの初期べクトルＶを保持する。
ここでの重みｋのべクトルとは、０と１からなるＮ次元べクトルのうち、１の数がｋ個であるようなべクトルのことである。
本実施例では、初期べクトルＶと、その初期べクトルを１ビットずつ巡回シフトして作ったＮ−１個のべクトルを併せたべクトルの集合が、Ｎ／ｋ個の互いに排他的べクトルを含むように決定する。ここで、排他的ベクトルとは、例えばある２つの２値ベクトルの１となるビットの位置を比較して互いに１の位置が重ならない場合、この２つのベクトルは互いに排他的なベクトルであると定義する。
初期ベクトルＶの決定方法は任意でよいが、入力ビット列ｍと出力ビット列ｎの間に統計的に見て相関関係が少なくなるようなべクトルを選ぶことが望ましい。
【００３１】
巡回シフト演算部１２２は、初期ベクトル保持部１２１が保持している初期ベクトルの巡回シフトを行い、フィルタベクトルｔiを生成して出力する。
シフト量指定部１２３は、巡回シフト演算部１２２がビット列をシフトする量を決定する。
【００３２】
初期べクトル保持部１２１が保持している初期ベクトルに対して直接巡回シフト演算を実行してもよいが、ここでは巡回シフト演算部１２２が一旦そのコピーを受け取ってからシフト演算を行う構成を用いる。
なお、シフト量指定部１２３が指定するシフト量がＮ以上である場合、実質のシフト量は、シフト量指定部１２３が指定したシフト量をＮで割った余りとなる。
【００３３】
図１〜図２で説明した各構成部は、これらの機能を実現する回路デバイスなどのハードウェアを用いて構成してもよいし、マイコンやＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）のような演算装置とその動作を規定するソフトウェアで構成してもよい。
入力拡張部１１０と一時記憶部１５０は、適当な入出力インターフェースを備える。
ビット列などを保持する各機能部は、必要なメモリなどの記憶装置を備えていてもよいし、これらが共通に使用する単一の記憶装置を備えていてもよい。
【００３４】
本実施の形態１における「線形変換部」は、入力拡張部１１０、論理積演算部１３０、排他的論理和演算部１４０、一時記憶部１５０がこれに相当する。
また、「変換行列」は、入力拡張部１１０、論理積演算部１３０、排他的論理和演算部１４０、一時記憶部１５０が行う線形変換を行列で表したものがこれに相当する。
【００３５】
以上、本実施の形態１に係るシンボル線形変換装置１００の構成について説明した。
次に、本実施の形態１に係るシンボル線形変換装置１００の動作について、以下のステップ（１）〜（７）で説明する。
【００３６】
（１）入力拡張部１１０は、入力ビット列ｍを１ビットずつ受け取り、上記（式３）で説明したベクトルａiを出力する。インデックスｉは、ここではｉ＝１，２，・・・，Ｍの順番とするが、必ずしもこの順番でなくともよい。
（２）シフト量指定部１２３は、初期状態から見たシフト量としてｉ−１を指定する。
【００３７】
（３）拡散フィルタ生成部１２０の巡回シフト演算部１２２は、指定されたシフト量だけ初期ベクトルＶを巡回シフトさせて、ベクトルｔiを出力する。
ただし、初期ベクトルＶはＮビットであるのに対し、インデックスｉの取りうる範囲は１〜Ｍ（Ｍ＞Ｎ）なので、シフト量がＮ以上になる場合がある。この場合は、シフト量指定部１２３が指定したシフト量をＮで除算した剰余を実際のシフト量とする。
したがって、ベクトルｔiには、下記（式４）の関係が成立する。
【数３】
2010128083.tif 000005
【００３８】
（４）論理積演算部１３０は、ベクトルαiとフィルタベクトルｔiの、ビットごとの論理積ｄiを求めて排他的論理和演算部１４０に出力する。
【数４】
2010128083.tif 000006
【００３９】
（５）排他的論理和演算部１４０は、一時記憶部１５０が保存している、排他的論理和演算部１４０の前回の演算結果と、論理積演算部１３０から出力されてきた演算結果との排他的論理和を求め、一時記憶部１５０に出力する。
一時記憶部１５０は、排他的論理和演算部１４０の演算結果を出力ビット列ｎとして出力するとともに、その演算結果を一時的に（例えば、１回分）記憶する。
【００４０】
（６）即ち、インデックスｉにおいて一時記憶部１５０が記憶しているビット列は、以下の（式６）で表される。
【数５】
2010128083.tif 000007
【００４１】
（７）以上の手順を、入力ビット列ｍの全てのビットについて実行する。
【００４２】
以上、本実施の形態１に係るシンボル線形変換装置１００の動作について説明した。
次に、本実施の形態１に係るシンボル線形変換装置１００による効果を説明する。
【００４３】
入力ビット列ｍのうち、後述の排他的ベクトルの集合ｓに含まれる任意のべクトルｔiと同じインデックスｉを持つ入力ビットａi（１≦ｉ≦Ｎ）においてのみ誤りが発生したとき、その誤りビットは必ずｋ倍されるケースを例示する。
例えば、入力ビット列ｍに１個のビット誤りがあるとき、出力ビット列ｎにはｋ個のビット誤りが含まれる。このことについて、以下の（証明ステップ１）〜（証明ステップ５）で証明する。
【００４４】
（証明ステップ１）
拡散フィルタ生成部１２２が、Ｎ回動作して作るフィルタべクトルｔiの集合Ｆ＝｛ｔi｜ｉ＝１，２，・・・，Ｎ｝は、前述の通りその中にＮ／ｋ個の互いに直交するべクトルを含む。この互いに直交するべクトルの集合を、特に集合ｓで表す。
【数６】
2010128083.tif 000008
【００４５】
（証明ステップ２）
誤りのない入力ビット列ｍに対して、無線通信路上でビット誤り（ビットの反転）が起こる。これは、誤りが生じた位置のビットを１とし、そうでないビットを０としたビット列を排他的論理和演算したモデルとして表現することができる。
即ち、前述の誤りビット列をべクトルｅとすると、誤りを含んだ入力ビット列ｍ’は、下記（式８）で表される。
【数７】
2010128083.tif 000009
【００４６】
（証明ステップ３）
シンボル線形変換装置１００が行うシンボル変換処理は線形変換であるから、その変換を変換行列Ｈで表すことができる。その準同型性から、誤りを含んだ入力ビット列ｍ’をシンボル線形変換装置１００で変換した結果は、下記（式９）で表すことができる。
【数８】
2010128083.tif 000010
【００４７】
（証明ステップ４）
上記（式９）により、出力ビット列ｎにおける誤りはＨｅで表されることが分かる。
【００４８】
（証明ステップ５）
このとき、排他的べクトルの集合ｓに含まれる任意のべクトルｔi（１≦ｉ≦Ｎ）に対応する、べクトルｅの要素のビット値が１となる場合、出力における誤りＨｅは、以下の通りとなる。
即ち、ビット拡散フィルタ集合ｓに含まれる重みｋのべクトルｔiの相互排他的性質と、集合ｓの要素数がＮ／ｋより、ベクトルｅに含まれる１の数をｙ個とすると、出力に含まれる誤りの個数はｋ×ｙ個となる。
【００４９】
以上のように、本実施の形態１によれば、１≦Ａ≦Ｎ／ｋの範囲内で上記（証明ステップ５）記載の事項が成立するため、盗聴端末が誤りビットを含む入力ビット列ｍを盗聴しても、その誤りが最大でｋ倍され、得られた出力ビット列から真の出力ビット列を探すための総当り攻撃を困難にすることができる。
これにより、入力ビット列ｍの長さを真に共有したいビット列よりも長くした効果が十分に発揮される。
【００５０】
また、本実施の形態１に係るシンボル線形変換装置１００が行う変換は、線形変換であるため、暗号用途のハッシュ関数のような非線形変換よりも大幅に小さなプログラムサイズで実装することができる。
【００５１】
実施の形態２．
実施の形態１において、拡散フィルタ生成部１２０は、フィルタベクトル集合Ｆを繰り返し生成する。繰り返しの過程で、インデックスｉはフィルタベクトルｔiの長さＮよりも大きい値（Ｎ＜ｉ≦Ｍ）を取る。
したがって、フィルタベクトルｔiについて下記（式１０）の関係が成立する。
【数９】
2010128083.tif 000011
【００５２】
例えば、上記（式７）で説明した集合ｓにｔ5が含まれていたとき、べクトルｅの対応する要素のインデックスは、｛５，５＋Ｎ，５＋２Ｎ，・・・｝ということになる。
このとき、もしもべクトルｅのインデックス５および５＋Ｎの箇所にビット１が立っていた場合、図１の構成より、同じパターンの拡散フィルタ同士が打ち消しあい、その結果として出力にビット誤りは反映されないことになる。
このような事象を、ここでは競合と呼ぶことにする。一般化すると、偶数個の競合では出力ビット列ｎに反映されるビット数は０（出力にビット誤りが反映されない）であり、奇数個の競合ではｋ個（重みｋと等しい）の誤りが出力ビット列ｎに反映される。
【００５３】
本発明では、入力ビット列ｍにおけるビット誤りが出力ビット列ｎに多く反映されることが望ましい。
そこで、本発明の実施の形態２では、競合の発生によって、出力ビット列ｎに反映されるビット誤り率が減少する問題への解決法を説明する。
【００５４】
図３は、本実施の形態２における拡散フィルタ生成部１２０の機能ブロック図である。
本実施の形態２において、拡散フィルタ生成部１２０は、実施の形態１の図２で説明した構成に加え、新たに周期記憶部１２４、初期ベクトル管理部１２５を備える。その他の構成は実施の形態１の図１〜図２と同様である。
【００５５】
周期記憶部１２４は、巡回シフト演算部１２２が生成する拡散フィルタｔiの周期を記憶する手段である。
初期べクトル管理部１２５は、シフト量指定部１２３が指定するシフト量と周期記憶部１２４に記憶されている使用中の初期べクトルの周期情報から、巡回シフト演算部１２２が１周期分の巡回シフトを実行したことを判断するとともに、初期べクトルＶを、初期べクトル保持部１２１が保持している他の初期ベクトルに切り替える。
【００５６】
図３の各構成部は、これらの機能を実現する回路デバイスなどのハードウェアを用いて構成してもよいし、マイコンやＣＰＵのような演算装置とその動作を規定するソフトウェアで構成してもよい。
ビット列などを保持する各機能部は、必要なメモリなどの記憶装置を備えていてもよいし、これらが共通に使用する単一の記憶装置を備えていてもよい。
【００５７】
以上、本実施の形態２に係るシンボル線形変換装置１００の構成について説明した。
次に、本実施の形態２に係るシンボル線形変換装置１００の動作について説明する。
【００５８】
巡回シフト演算部１２２が初期ベクトルＶを巡回シフトさせる処理を繰り返すと、巡回が初期ベクトルの先頭まで戻ってきて巡回が１巡する。
そのまま同一の初期ベクトルＶについて巡回シフトを継続すると、上述の通り同一の拡散フィルタが生じて、互いに打ち消しあい、入力ビット列ｍの誤りが出力ビット列ｎに反映されない状態が発生する場合がある。
【００５９】
そこで、初期べクトル管理部１２５は、初期ベクトルＶの巡回が１巡すると、初期べクトルＶを、初期べクトル保持部１２１が保持している他の初期ベクトルに切り替える。
これにより、巡回シフト演算部１２２の巡回シフトが初期化され、拡散ビットフィルタが互いに打ち消しあうことがなくなる。
【００６０】
例えば、ＮはＭを割り切れるとして、初期べクトルＶをＭ／Ｎ個用意した場合を例に説明する。
各初期べクトルＶが、他の初期べクトルＶのシフトによって生成されるパターンのどれとも異なるならば、その初期べクトルＶをシフトして作る拡散フィルタと同一のパターンのフィルタが生起されることはない。
即ち、同一のフィルタパターンが互いに打ち消しあって上述のような不都合が生じることがなくなり、入力ビット列ｍに含まれるビット誤りが出力ビット列ｎにおいて相殺される問題が回避される。
【００６１】
もっとも、初期ベクトルを切り替えたとしても、複数のフィルタの線形結合によっては偶然同一のフィルタパターンが生起されて打ち消しあいが生じてしまう、ということも考えられる。
あるフィルタと同じパターンが生起するフィルタの個数は、用意する複数の初期べクトルのパターンに依存するため、一概に特定することはできないので、これについての詳細は特段言及しない。
【００６２】
以上のように、本実施の形態２によれば、巡回シフト演算部１２２のシフト演算によって初期ベクトルＶの巡回が１巡した時点で、初期ベクトル管理部１２５は、新たな初期ベクトルＶを用いて、巡回シフト演算部１２２の巡回シフト演算を初期化する。
これにより、巡回シフト演算部１２２のシフト演算にともなって同じパターンの拡散フィルタ同士が打ち消しあい、出力に反映されるビット誤りの数が減少する可能性を低減できる。
【００６３】
実施の形態３．
以上説明した実施の形態１〜２に係るシンボル線形変換装置１００は、端末間で鍵を共有する際に使用することができる。
例えば、無線送信端末と無線受信端末がともにシンボル線形変換装置１００を備え、適当な入力ビット列ｍをシンボル線形変換装置１００が変換して得られる出力ビット列ｎを秘密鍵として両者の間で共有することができる。
【実施例】
【００６４】
本発明の実施例では、Ｍ＝２０、ｎ＝１０、Ａ＝２の場合において、出力の１０ビットのビット列に２Ａ＝４ビット誤りが生じる場合について説明する。なお、以下の説明では実施の形態１で説明した構成を用いるが、実施の形態２の構成でも動作は同様である。
【００６５】
各ビット列を以下のように仮定する。
（１）真の入力ビット列：１１００００００００００００００００００（２０ビット）
（２）対応する出力ビット列：１０１０００００００（１０ビット）
（３）誤りを含む入力ビット列：０１１０００００００００００００００００
（４）対応する出力ビット列：０１０１００００００
【００６６】
この例では、１ビット目と３ビット目に生じた誤りが、出力において２倍の４ビットの誤りになる。その理由については、実施の形態１で説明した通りである。
誤りを含む入力ビット列を入力したときのシンボル線形変換装置１００の動作を、以下の図４〜図６で説明する。
【００６７】
図４は、誤りを含む入力ビット列ｍ’の第１ビットを変換する処理を説明する図である。以下、ステップを追って説明する。
【００６８】
（１）一時記憶部１５０には、初期値としてｎ0＝００００００００００（１０ビット）が記憶されている。また、初期べクトル保持部１２１には、初期べクトルとしてＶ＝１１００００００００（１０ビット）が記憶されている。
【００６９】
（２）入力拡張部１１０に、誤りを含む入力ビット列ｍ’の１ビット目の値「０」が入力される。入力拡張部１１０は、ビット「０」をＮ倍し、１０個の「０」からなるベクトルａ1＝００００００００００を出力する。
【００７０】
（３）拡散フィルタ生成部１２０は、ｔ1＝１１００００００００（初回なので初期ベクトルＶに等しい）を論理積演算部１３０に出力する。
（４）論理積演算部１３０は、ａ1とｔ1の論理積演算を行い、ビット列「００００００００００」（１０ビット）を排他的論理和演算部１４０に出力する。
【００７１】
（５）排他的論理和演算部１４０は、論理積演算部１３０からの出力と、一時記憶部１５０が記憶しているｎ0＝００００００００００とのビットごとの排他的論理和演算を行い、その結果得られるビット列「００００００００００」を一時記憶部１５０に出力する。
（６）一時記憶部１５０は、その出力をｎ1として記憶する。
【００７２】
図５は、誤りを含む入力ビット列ｍ’の第２ビットを変換する処理を説明する図である。以下、ステップを追って説明する。
【００７３】
（７）入力拡張部１１０に、誤りを含む入力ビット列ｍ’の２ビット目の値「１」が入力される。入力拡張部１１０は、ビット「１」をＮ倍し、１０個の「１」からなるベクトルａ2＝１１１１１１１１１１を出力する。
（８）拡散フィルタ生成部１２０は、ｔ2＝０１１０００００００（ｔ1を１ビットシフトしたもの）を論理積演算部１３０に出力する。
【００７４】
（９）論理積演算部１３０は、ａ2とｔ2の論理積演算を行い、ビット列「０１１０００００００」（１０ビット）を排他的論理和演算部１４０に出力する。
（１０）排他的論理和演算部１４０は、論理積演算部１３０からの出力と、一時記憶部１５０が記憶しているｎ1＝００００００００００とのビットごとの排他的論理和演算を行い、その結果得られるビット列「０１１０００００００」を一時記憶部１５０に出力する。
（１１）一時記憶部１５０は、その出力をｎ2として記憶する。
【００７５】
図６は、誤りを含む入力ビット列ｍ’の第３ビットを変換する処理を説明する図である。以下、ステップを追って説明する。
【００７６】
（１２）入力拡張部１１０に、誤りを含む入力ビット列ｍ’の３ビット目の値「１」が入力される。入力拡張部１１０は、ビット「１」をＮ倍し、１０個の「１」からなるベクトルａ2＝１１１１１１１１１１を出力する。
（１３）拡散フィルタ生成部１２０は、ｔ3＝００１１００００００（ｔ2を１ビットシフトしたもの）を論理積演算部１３０に出力する。
【００７７】
（１４）論理積演算部１３０は、ａ3とｔ3の論理積演算を行い、ビット列「００１１００００００」（１０ビット）を排他的論理和演算部１４０に出力する。
（１５）排他的論理和演算部１４０は、論理積演算部１３０からの出力と、一時記憶部１５０が記憶しているｎ2＝０１１０００００００とのビットごとの排他的論理和演算を行い、その結果得られるビット列「０１０１００００００」を一時記憶部１５０に出力する。
（１６）一時記憶部１５０は、その出力をｎ3として記憶する。
【００７８】
（１７）以降、入力ビット値は全て０であり、このとき明らかに、論理積演算部１３０から００００００００００（１０ビット）のビット列が出力され、一時記憶部１５０の保持する値は変わらない。
（１８）よって最終的な出力ビット列は、０１０１００００００となる。
【００７９】
（１９）以上の処理を行列で表すと、下記（式１４）のようになる。以下では（式１４）を導出する過程を（式１１）〜（式１３）を用いて説明する。
【００８０】
本線形変換装置においては、変換行列を最初の列ベクトルｔ1を巡回シフトさせて他の列ベクトルｔ2〜ｔ20を生成する。入力ビット列をベクトルｍ、最終的な出力ビット列をベクトルｎ20で表す。
【数１０】
2010128083.tif 000012
【００８１】
ただしベクトルｔi （ｉ＝１，２，・・・，２０）はそれぞれ次元数１０のベクトルであり、ベクトルｍ＝（ａ1，ａ2，・・・，ａ20）は次元数２０のベクトルである。最終的な出力ベクトルｎ20は次元数１０のベクトルである。
【数１１】
2010128083.tif 000013
【００８２】
上記（式１２）を記号で置き換えると下記（式１３）のようになる。
【数１２】
2010128083.tif 000014
【００８３】
ベクトルｍ、ベクトルｎ、およびフィルタベクトルｔiの各要素は、０または１のビット値で構成されている。したがって、上記（式１３）は、ビットごとのａｎｄ演算と排他的論理和演算を用いて、下記（式１４）のように表せる。
【数１３】
2010128083.tif 000015
【００８４】
上記（式１４）は、下記（式１５）のように表すこともできる。
【数１４】
2010128083.tif 000016
【００８５】
なお、本演算装置でｒ回の反復処理後の出力レジスタの状態を行列で表現すると、下記（式１６）のようになる。
【数１５】
2010128083.tif 000017
【００８６】
（２０）誤りのないビット列を入力した場合の出力ビット列は１０１０００００００であったので、出力ビット列ｎでは、第１ビット目から第４ビット目までの４ビットに誤りが生じたことになる。
【００８７】
以上、本発明に係るシンボル線形変換装置１００の動作例を説明した。
【図面の簡単な説明】
【００８８】
【図１】実施の形態１に係るシンボル線形変換装置１００の機能ブロック図である。
【図２】拡散フィルタ生成部１２０の機能ブロック図である。
【図３】実施の形態２における拡散フィルタ生成部１２０の機能ブロック図である。
【図４】誤りを含む入力ビット列ｍ’の第１ビットを変換する処理を説明する図である。
【図５】誤りを含む入力ビット列ｍ’の第２ビットを変換する処理を説明する図である。
【図６】誤りを含む入力ビット列ｍ’の第３ビットを変換する処理を説明する図である。
【符号の説明】
【００８９】
１００  シンボル線形変換装置、１１０  入力拡張部、１２０  拡張フィルタ生成部、１２１  初期ベクトル保持部、１２２  巡回シフト演算部、１２３  シフト量指定部、１２４  周期記憶部、１２５  初期ベクトル管理部、１３０  論理積演算部、１４０  排他的論理和演算部、１５０  一時記憶部。
【図１】
2010128083.tif 000018
【図２】
2010128083.tif 000019
【図３】
2010128083.tif 000020
【図４】
2010128083.tif 000021
【図５】
2010128083.tif 000022
【図６】
2010128083.tif 000023