(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2023120858
(43)【公開日】2023-08-30
(54)【発明の名称】ネットワーク符号化に基づく秘匿通信システム及び方法
(51)【国際特許分類】
H03M 13/15 20060101AFI20230823BHJP
H03M 13/37 20060101ALI20230823BHJP
【FI】
H03M13/15
H03M13/37
【審査請求】未請求
【請求項の数】6
【出願形態】OL
(21)【出願番号】P 2022023960
(22)【出願日】2022-02-18
【国等の委託研究の成果に係る記載事項】(出願人による申告)令和3年度 総務省、情報通信技術の研究開発「グローバル量子暗号通信網構築のための研究開発」に係る委託研究、産業技術力強化法第17条の適用を受ける特許出願
(71)【出願人】
【識別番号】301022471
【氏名又は名称】国立研究開発法人情報通信研究機構
(71)【出願人】
【識別番号】509241085
【氏名又は名称】株式会社シグリード
(74)【代理人】
【識別番号】100099623
【弁理士】
【氏名又は名称】奥山 尚一
(74)【代理人】
【識別番号】100125380
【弁理士】
【氏名又は名称】中村 綾子
(74)【代理人】
【識別番号】100142996
【弁理士】
【氏名又は名称】森本 聡二
(74)【代理人】
【識別番号】100166268
【弁理士】
【氏名又は名称】田中 祐
(74)【代理人】
【氏名又は名称】有原 幸一
(72)【発明者】
【氏名】佐々木 雅英
(72)【発明者】
【氏名】江角 淳
(72)【発明者】
【氏名】李 凱
(72)【発明者】
【氏名】オリバー・ハワード・ハンブリー
【テーマコード(参考)】
5J065
【Fターム(参考)】
5J065AB01
5J065AC02
5J065AD11
5J065AE06
5J065AF03
5J065AG01
(57)【要約】
【課題】MRD符号を用いる場合の計算量を削減する。
【解決手段】有限体GF(q
N)上のMRD符号によって符号化がなされた信号の復号を行う復号器2は、前記有限体GF(q
N)の基底を、前記有限体GF(q
N)の部分体GF(q
n)の基底へ変換する基底変換ユニット21を備える。qは素数のべき乗であり、nはNの約数である。前記復号は、前記基底変換ユニットによる変換前の前記有限体GF(q
N)の基底を用いた計算と、前記基底変換ユニットによる変換後の前記部分体GF(q
n)の基底を用いた計算とを含む。
【選択図】
図5
【特許請求の範囲】
【請求項1】
有限体GF(qN)上のMRD符号によって符号化がなされた信号の復号を行う復号器であって、
前記有限体GF(qN)の基底を、前記有限体GF(qN)の部分体GF(qn)の基底へ変換する基底変換ユニットを備え、qは素数のべき乗であり、nはNの約数であり、
前記復号は、前記基底変換ユニットによる変換前の前記有限体GF(qN)の基底を用いた計算と、前記基底変換ユニットによる変換後の前記部分体GF(qn)の基底を用いた計算とを含む、
復号器。
【請求項2】
前記有限体GF(qN)上の乗算を実行するためのN×Nの乗算表と、前記部分体GF(qn)上の乗算を実行するためのn×nの乗算表とを有し、
前記基底変換ユニットによる変換前の乗算は、前記N×Nの乗算表を用いて行われ、
前記基底変換ユニットによる変換後の乗算は、前記n×nの乗算表を用いて行われる、
請求項1に記載の復号器。
【請求項3】
前記部分体GF(qn)の基底を前記有限体GF(qN)の基底に逆変換する基底逆変換ユニットをさらに備え、
前記復号はさらに、前記基底逆変換ユニットによる逆変換後の前記有限体GF(qN)の基底を用いた計算を含む、
請求項1又は2に記載の復号器。
【請求項4】
前記信号からシンドロームを計算するシンドローム計算ユニットと、
前記シンドロームを用いて誤りロケータ多項式を求める誤りロケータ多項式計算ユニットと、
前記誤りロケータ多項式の根を計算する根計算ユニットと、
前記根からエラー係数を計算するエラー係数計算ユニットと、
前記根からエラースパンを計算するエラースパン計算ユニットと、
前記エラー係数と前記エラースパンからエラーベクトルを推定するエラーベクトル推定ユニットと、
前記エラーベクトルから符号語を推定する符号語推定ユニットと
をさらに備え、
前記シンドローム計算ユニットと、前記誤りロケータ多項式計算ユニットとは、前記基底変換ユニットによる変換前の前記有限体GF(qN)の基底を用いて計算を行い、
前記根計算ユニットは、前記基底変換ユニットによる変換後の前記部分体GF(qn)の基底を用いて計算を行い、
前記エラー係数計算ユニットは、前記基底変換ユニットによる変換前の前記有限体GF(qN)の基底と、前記基底変換ユニットによる変換後の前記部分体GF(qn)の基底とのいずれかを用いて計算を行い、
前記エラースパン計算ユニットと、前記エラーベクトル推定ユニットと、前記符号語推定ユニットとは、前記基底逆変換ユニットによる逆変換後の前記有限体GF(qN)の基底を用いて計算を行う、
請求項3に記載の復号器。
【請求項5】
前記基底変換ユニットによる変換が正しく実行できなかった場合に、訂正不能と判断される、請求項1~4のいずれか一項に記載の復号器。
【請求項6】
複数のノードを有し、ネットワーク符号化により通信が行われる通信ネットワークであって、前記複数のノードのうちの少なくとも1つのノードが請求項1~5のいずれか一項に記載の復号器を備えている、通信ネットワーク。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、盗聴や誤りや改ざんが起こるネットワーク上で、情報を高い秘匿性を保ちながら通信する方法に関する。
【背景技術】
【0002】
クラウドサービスや高速移動通信技術の進展により、インターネットの通信トラフィックは急速な増大を続けている。大容量の光ファイバーをはじめとするネットワーク設備の増強も進んでいるが、端末数や新たなサービス・アプリケーションは今後も増加の一途をたどると予想されることから、現在の延長線上でのインフラ強化では間に合わず、通信の方法そのものをより効率的なものへ変える必要がある。
また、機密性の高い情報の量も増えていることから、情報セキュリティの確保がますます求められている。通信効率の改善とともに、正規ユーザ以外の第3者への情報漏洩や不正なデータ改竄を防ぐ仕組みも求められる。
【0003】
ネットワーク上で効率よくマルチキャスト通信を行う方法として、中継ノードに集まった複数の情報を合成して別の情報に変換(符号化)してから転送する、いわゆるネットワーク符号化が知られている。ネットワーク符号化は、通信トラフィックの急増を支える新たな技術として実用化が始まりつつある。
【0004】
ネットワークで発生する誤りを訂正する対策として、一般に誤り訂正符号が用いられる。
非特許文献1には、MRD符号が紹介され、従来のリードソロモン符号に似た、ランク基準による符号化及び復号のアルゴリズムが初めて提案されている。著者名がGabidulin符号の由来である。なお、ランクとは行列の階数である。
非特許文献2には、ブロック符号(block codes)や、畳み込み符号(convolutional codes)など、ランク基準による複数の符号が紹介され、Gabidulin符号が中心に記載されている。
非特許文献3には、ランダムネットワーク符号化における誤り訂正について記載されている。ランダムネットワーク符号システムにて発生した消失(Erasure)や、偏差(Deviation)などのエラーに対し、Gabidulin符号で対応できるような符号化及び復号のアルゴリズムが提案されている。
非特許文献4には、ランク基準によるMRD符号が中心に記載され、新しいGabidulin符号の符号化及び復号のアルゴリズムが提案されている。
【先行技術文献】
【非特許文献】
【0005】
【非特許文献1】Gabidulin, E.M.: Theory of Codes with Maximum Rank Distance. Probl. Peredachi Inf. 21(1), 3-16 (1985)
【非特許文献2】A.Wachter-Zeh: “Decoding of Block and Convolutional Codes in Rank Metric” Ph.D dissertation, Ulm University, Germany
【非特許文献3】D. Silva, F. R. Kschischang, and R. K¨otter, “A rank-metric approach to error control in random network coding,” IEEE Trans. Inf. Theory, vol. 54, no. 9, pp. 3951-3967, 2008.
【非特許文献4】D. Silva, “Error control for network coding,” Ph.D. dissertation, University of Toronto, Toronto, Canada, 2009
【発明の概要】
【発明が解決しようとする課題】
【0006】
Gabidulin符号を含むMRD符号を用いる場合、計算量の大きさが問題となる。本発明は、MRD符号を用いる場合に、計算量を削減することを目的とする。
【課題を解決するための手段】
【0007】
上記目的を達成するために、一実施形態に係る復号器は、有限体GF(qN)上のMRD符号によって符号化がなされた信号の復号を行う復号器であって、前記有限体GF(qN)の基底を、前記有限体GF(qN)の部分体GF(qn)の基底へ変換する基底変換ユニットを備える。qは素数のべき乗であり、nはNの約数である。前記復号は、前記基底変換ユニットによる変換前の前記有限体GF(qN)の基底を用いた計算と、前記基底変換ユニットによる変換後の前記部分体GF(qn)の基底を用いた計算とを含む。
【発明の効果】
【0008】
本発明によれば、MRD符号を用いる場合に、計算量を削減することができる。
【図面の簡単な説明】
【0009】
【
図1】通信ネットワーク構成の例を示す説明図である。
【
図2】通信ネットワーク構成の別の例を示す説明図である。
【
図3】LNCに誤り訂正符号を導入する際の符号化及び復号の手順を示す説明図である。
【
図4】Gabidulin符号の復号手順の一例を示す説明図である。
【
図5】Gabidulin符号の復号手順の別の例を示す説明図である。
【
図6】復号器のコンピュータハードウェア構成例を示す説明図である。
【発明を実施するための形態】
【0010】
以下、本発明を図示の実施の形態に基づいて説明する。ただし、本発明は、以下に説明する実施の形態によって限定されるものではない。
【0011】
まず、本発明の発明者は以下に述べるとおり、線形ネットワーク符号化とGabidulin符号について鋭意検討を行った。
なお、後述する本発明の一実施形態に係る短縮Gabidulin符号は、線形ネットワーク符号化とともに用いてもよいし、線形ネットワーク符号化とは無関係に用いることも可能である。
【0012】
[1 線形ネットワーク符号化]
近年話題になっている線形ネットワーク符号化(Linear network coding, LNC)は、複数の隣接ノードから受け取ったデータを一括して線形結合し、隣接ノードに送る手法である。データ伝送速度の向上など、従来方式よりも優れた特徴を持つため、注目を集めている。
【0013】
図1に示す通信ネットワークNW1において、ソースノードsに対し、中継ノードs
0~s
3がリンクにより接続されている。さらに、中継ノードs
0~s
3の各々に対し、中継ノードv
0~v
3がリンクにより接続されている。加えて、中継ノードv
0~v
3の各々に対し、ターミナルノードt
0~t
3がリンクにより接続されている。
【0014】
中継ノードs0~s3の各々の上に示されている“[1]”は、線形結合の係数が「1」であることを意味する。つまり、中継ノードs0は、ソースノードsから受信したパケットx0を中継ノードv0~v3に送信する。同様に、中継ノードs1は、ソースノードsから受信したパケットx1を中継ノードv0~v3に送信し、中継ノードs2は、ソースノードsから受信したパケットx2を中継ノードv0~v3に送信し、中継ノードs3は、ソースノードsから受信したパケットx3を中継ノードv0~v3に送信する。
【0015】
中継ノードv0~v3の各々は、中継ノードs0からパケットx0を受信し、中継ノードs1からパケットx1を受信し、中継ノードs2からパケットx2を受信し、中継ノードs3からパケットx3を受信する。
【0016】
続いて中継ノードv0は、線形ネットワーク符号行列の要素A00、A01、A02及びA03と、受信したパケットx0~x3とによる線形結合処理を行う。すなわち、中継ノードv0は以下の計算を行い、パケットy0を得る。
y0=A00*x0+A01*x1+A02*x2+A03*x3
中継ノードv0は、ターミナルノードt0~t3の各々へパケットy0を送信する。
【0017】
中継ノードv1~v3も、線形ネットワーク符号行列の要素と、受信したパケットx0~x3とによる線形結合処理を行う。線形結合処理の際、中継ノードv1は、線形ネットワーク符号行列の要素A10、A11、A12及びA13を用い、中継ノードv2は、線形ネットワーク符号行列の要素A20、A21、A22及びA23を用い、中継ノードv3は、線形ネットワーク符号行列の要素A30、A31、A32及びA33を用いる。中継ノードv1~v3はそれぞれ、線形結合処理によりパケットy1~y3を得る。中継ノードv1は、ターミナルノードt0~t3の各々へパケットy1を送信し、中継ノードv2は、ターミナルノードt0~t3の各々へパケットy2を送信し、中継ノードv3は、ターミナルノードt0~t3の各々へパケットy3を送信する。
【0018】
[A00 A01 A02 A03]と[A10 A11 A12 A13]と[A20 A21 A22 A23]と[A30 A31 A32 A33]とで構成される4×4の行列Aが、本例における線形ネットワーク符号行列である。線形ネットワーク符号行列の要素は、同行列がフルランク行列となるように生成されることが多いが、一般にはランダムに生成することができる。
【0019】
ターミナルノードt0~t3の各々は、中継ノードv0からパケットy0を受信し、中継ノードv1からパケットy1を受信し、中継ノードv2からパケットy2を受信し、中継ノードv3からパケットy3を受信する。続いて、ターミナルノードt0~t3の各々は、線形ネットワーク符号行列Aの逆行列A-1と、受信したパケットy0~y3からなるベクトルとの積を計算して、元のメッセージx0~x3を得る。
【0020】
通信ネットワークNW1において、ソースノードsから転送するデータをx=(x
0 x
1 x
2 x
3)
Tとし、ターミナルノードt
0~t
3が受け取るデータをy=(y
0 y
1 y
2 y
3)
Tとする。各中継ノードにおいて、転送されてきたデータが線形結合され隣接ノードに送られるため、ターミナルノードが受け取るデータは下記のようになる。
【数1】
【0021】
すなわち、xとyは下記の関係を有している。
【数2】
【0022】
この関係式を用いて、y=(y
0 y
1 y
2 y
3)
Tからx=(x
0 x
1 x
2 x
3)
Tを算出するのが、LNCの復号である。LNCの復号は線形ネットワーク符号行列Aの逆行列
【数3】
を用いて行う。
【数4】
【0023】
その一方で、LNCには、エラーが伝搬してしまう問題がある。例えば、
図2において破線で示す、中継ノードs
1から中継ノードv
1へ至るリンクにエラーe
1を注入すると、同リンクを通るデータはx
1+e
1になる。ターミナルノードが受け取るパケットは、下記のようになる。
【数5】
この場合、LNCの復号結果x´=(x
0´ x
1´ x
2´ x
3´)
Tは次のようになる。
【数6】
【0024】
上式から分かるように、ネットワーク上の1か所でエラーが注入されただけで、復号後の全シンボルがエラーの影響を受けることになる。これをエラー伝搬(あるいは誤り伝搬)と呼ぶ。
【0025】
LNCによるエラー伝搬は、誤り訂正符号を導入する際に致命的になる。一般に、LNCに誤り訂正符号を導入する際の符号化・復号手順を
図3に示す。
まず、ステップST11において、ソースノードsは、ユーザーデータの誤り訂正符号化を行う。
ステップST12において、通信ネットワークNW1の各リンクにおいて送信を行うノードは、LNC符号化を行ったのち送信を行う。
ステップST13において、通信ネットワークNW1の各リンクにおいて受信を行ったノードは、LNC復号を行う。
ステップST14において、ターミナルノードt
0~t
3は、誤り訂正復号を行う。
【0026】
誤り訂正の復号(ステップST14)の前にエラーが伝搬しており、復号時に多くのシンボルがエラーとなる。リードソロモン符号、BCH符号などの従来の誤り訂正符号(ECC, error correction code)は、シンボル単位での訂正を行う。したがって、多くのシンボルでエラーが発生している状況には対応できず、LNCと従来の誤り訂正符号は相性が悪い。
【0027】
その一方で、エラーの伝搬の仕方を考察すると、そのエラーはランクエラーとして表現できることが分かる。1つのリンクでエラーが注入された場合は1ランクエラー、n個のリンクでエラーが注入された場合は最大nランクエラーになる。ランクエラーを訂正する符号として、最大ランク距離符号(Maximum rank distance code、MRD符号)がある。MRD符号の一形態としてGabidulin符号がある。
後述する実施形態は、LNCに適しているGabidulin符号の構築方法、特に、短縮Gabidulin符号に関するものである。
【0028】
[2 Gabidulin符号]
[2.1 Gabidulin符号の基礎]
雑音(エラーだけでなく改竄なども含む)に強いネットワーク符号化を構成するには、Gabidulin符号を導入すればよい。そのために、次の条件を満たす集合Fを構成する。
【0029】
条件:「任意のX∈Fとランクがt以下の行列Eに対し、X+Eとのランク距離がt以下のFの元はXに一意に定まる」
【0030】
但し、ランク距離は次のように定義される。すなわち、同じサイズの行列aとbに対し、a,b間のランク距離は、aとbの差のランクと定義される。
【数7】
【0031】
条件を満たすFの元を情報として送信すれば、t個以下のリンクでエラーが発生した場合にエラーを訂正できる。そこで、このような集合Fはランク誤り訂正符号(ランク符号)と呼ばれる。これは、Ernst Mukhamedovich Gabidulin によって提案されたものであり、Gabidulin符号とも呼ばれる。
【0032】
Gabidulin符号の条件を満たすには、任意のa,b∈F(a≠b)に対して次式を満たせばよい。
【数8】
左辺の最小値は符号の最少距離と呼ばれ、符号理論では良く知られた概念である。
【0033】
Gabidulin符号は、以下のような特徴を有する。
・有限体GF(q
N)上の符号であり、q=p
s(pは素数)の関係を有する。例えば、p=2,s=4,N=7の場合、有限体GF(16
7)上の符号になり、元の数が2.6億以上の超高次有限体上の符号になる。なお、有限体をガロア体(Galois Field)とも呼ぶ。
・ランク符号の構築で用いられるフローベニウスq-乗べきは、次のように定義される。
【数9】
・フローベニウスq-乗べきを含む計算では、正規基底を用いて有限体の元を表現することにより、計算をする上で様々なメリットがある。
・ランク符号の符号化は、典型的な誤り訂正符号であるリードソロモン符号と類似している。
・ランク符号の復号は、リードソロモン符号と似ているが、フローベニウスq-乗べきを含む高次多項式の係数を求める必要があるなど違いも多い。また、乗算や逆数、逆行列の計算が必要であり、超高次有限体上の計算方法を確立することが重要である。
【0034】
Gabidulin符号をGab(n,k)と表記する。n(n≦N)は符号長、kは情報記号数である。Gab(n,k) で訂正可能なランクエラー数は、
【数10】
である。なお、n<Nの場合の符号を、短縮Gabidulin符号という。
【0035】
次に、Gabidulin符号の符号化について説明する。符号化方法は、短縮Gabidulin符号にもそのまま適用できる。さらに、Gabidulin符号の復号についても説明する。なお、復号方法は、短縮Gabidulin符号にそのまま適用することはできない。すなわち、以下に述べる復号の説明は、n=Nの場合に限定したものである。
【0036】
[2.2 Gabidulin符号の符号化]
Gabidulin符号の符号化は、リードソロモン符号などの一般的な誤り訂正符号と同様の手法で実装できる。すなわち、生成行列を構築し、行列演算を行う。
Gab(n,k)の生成行列Gは、次式で与えられる。
【数11】
Gab(n,k) の検査行列Hは、次式で与えられる。検査行列は復号の際に使われるが、生成行列との比較のため、ここで示す。
【数12】
【0037】
n=Nの場合、g
0,・・・,g
n-1∈GF(q
N)及びh
0,・・・,h
n-1∈GF(q
N)は、有限体GF(q
N)上の正規基底(原始根βで構築)とする場合が多い。但し、短縮Gabidulin符号の場合は、h
0,・・・,h
n-1∈GF(q
N)は、部分体GF(q
n)上の正規基底(原始根αで構築)とすることになる。
符号化は、生成行列Gを用いてGF(q
N)上の行列演算により実施する。情報データUは、GF(q
N)上のkシンボルベクトルである。生成行列Gと情報データUの積により符号化を行い、符号語xを求める。
【数13】
【0038】
[2.3 Gabidulin符号の復号]
続いてGabidulin符号の復号について説明する。上述したように、ここでの説明はn=Nの場合に限定する。
復号とは、受信語x´からGabidulin符号の符号語xを復元することである。Gabidulin符号の符号語(符号長n)に、τランクエラーeが加わったとする。
【数14】
【0039】
エラーベクトルeは次のように分解できる。
【数15】
【0040】
aは、GF(qN)上のτランクエラーのエラースパン(Error Span)と呼ばれ、エラー空間の基底の1つである。また、Θはエラー係数と呼ばれ、リードソロモン符号のError Locator(誤りロケータ)に相当する。復号はシンドローム計算からスタートし、エラースパンaとエラー係数Θを求め、エラーベクトルeを推定する。
【0041】
Gabidulin符号は、e=Θaで表現されるエラーを訂正できるのが特徴である。LNCにおいてリンクでエラーが注入された場合、Gabidulin符号にとってはe=Θaで表現されるエラーが加わったように見える。したがって、Gabidulin符号は、LNCとの相性が非常に良い。
【0042】
図4に、Gabidulin符号の復号器1を示す。復号器1は、ターミナルノードt
0~t
3の各々が備えている。復号器1は、シンドローム計算ユニット11と、ELP計算ユニット12と、ELPの根計算ユニット13と、エラー係数計算ユニット14と、エラースパン計算ユニット15と、エラーベクトル推定ユニット16と、符号語推定ユニット17とを備えている。復号の手順を以下に述べる。
【0043】
手順1:シンドロームの計算
シンドローム計算ユニット11は、受信語x´と検査行列Hからシンドロームを計算する。シンドローム
【数16】
は次のように定義される。
【数17】
【0044】
手順2:ELPの計算
ELP計算ユニット12は、バーレカンプ・マッシィ法(Berlekamp-Massey法)を用いて、シンドロームS
lからError Locator Polynomial(誤りロケータ多項式、ELP)の係数γと推定ランクエラー数τを計算する。ELPを次式に示す。
【数18】
【0045】
手順3:ELPの根(d)の計算
ELPの根計算ユニット13は、ガウスの消去法を用いて、ELPの根(d)を求める。次式をxについて解けば次式の根dが求まる。
【数19】
【0046】
手順4:エラー係数(Θ)の計算
エラー係数計算ユニット14は、根dからエラー係数Θを求める。次式の関係を用いて、dからΘを求めることができる。
【数20】
【0047】
手順5:エラースパン(a)の計算
エラースパン計算ユニット15は、dからエラースパンaを求める。次式の関係を用いて、dからaを求めることができる。
【数21】
【0048】
手順6:エラーベクトルの推定
エラーベクトル推定ユニット16は、エラースパンaとエラー係数Θからエラーベクトルを推定する。
【数22】
【0049】
手順7:符号語の推定
符号語推定ユニット17は、推定したエラーベクトルをx´から引くことで、推定符号語を求める。
【数23】
【0050】
[2.4 検討]
Gabidulin符号の符号化と復号は、GF(q
N)上の正規基底による演算で実施される。最大符号長はNシンボルであり、Gab(N,k)は符号長Nシンボル、情報記号数kシンボルの符号である。Gab(N,k) は、最大で
【数24】
ランクエラーを訂正することができる。
【0051】
実際の応用では、誤り訂正符号を効率的に導入するため、符号長を選択できることが重要なケースが多い。すなわち、短縮Gabidulin符号 Gab(n,k)が有用である(nはNの約数)。しかし、従来、最大符号長である Gab(N,k)、すなわち、n=Nの場合について検討されており、短縮符号Gab(n,k)の詳細な復号方法については検討されていない。そこで、短縮Gabidulin符号 Gab(n,k)の復号において、課題となる事項について考える。
【0052】
はじめに、前述の手順3で求められる根dについて考察する。根dは有限体GF(qN)の元である。その一方で、手順4で根dからエラー係数Θが求められるが、エラー係数Θは部分体GF(qn)の元で表現されるため、そのままでは計算できない。dを有限体GF(qN)の元から、部分体GF(qn)の元に変換する必要がある。あるいは、dの計算方法を工夫することで、dを部分体GF(qn)の元として求める必要がある。
【0053】
次に、前述の手順5において根dから計算されるエラースパンaについて考察する。エラースパンaは有限体GF(qN)の元である。その一方で、根dの計算方法を工夫して根dを部分体GF(qn)の元として求めた場合、そのままでは計算できない。根dを部分体GF(qn)の元から、有限体GF(qN)の元に逆変換する必要がある。
【0054】
また、Gabidulin符号の復号においては、計算量の大きさが問題となる。特に、乗算の計算量が非常に大きく、計算量削減のために乗算表(Multiplication Table)を用いる方法が提案されている。しかし、Nを大きく設定した場合、依然として乗算の計算量の大きさが問題となり、改善が望まれる。
【0055】
[3 本発明の一実施形態]
図5に、本実施形態における短縮Gabidulin符号の復号器2を示す。復号器2は、復号器1と同様、シンドローム計算ユニット11と、ELP計算ユニット12と、ELPの根計算ユニット13と、エラー係数計算ユニット14と、エラースパン計算ユニット15と、エラーベクトル推定ユニット16と、符号語推定ユニット17とを備えている。復号器2は、基底変換ユニット21及び基底逆変換ユニット22をも備えている。復号の手順を以下に述べる。
【0056】
手順1:シンドロームの計算
シンドローム計算ユニット11は、受信語x´と検査行列Hからシンドロームを計算する。シンドローム
【数25】
は次のように定義される。
【数26】
【0057】
手順2:ELPの計算
ELP計算ユニット12は、バーレカンプ・マッシィ法(Berlekamp-Massey法)を用いて、シンドロームS
lからError Locator Polynomial(誤りロケータ多項式、ELP)の係数γと推定ランクエラー数τを計算する。ELPを次式に示す。
【数27】
【0058】
手順3:基底の変換
後述する手順4で根dを部分体GF(qn)の元として求めるために、手順3において基底変換ユニット21は基底変換を行う。手順4では、根dを求めるためにγを係数とする方程式を解く。γは手順2で有限体GF(qN)の元として求められているため、手順3において基底変換ユニット21はγを部分体GF(qn)の元に変換する。また、γを係数とする方程式を解くときに検査行列を用いるが、検査行列の要素は有限体GF(qN)の元であるので、手順3において基底変換ユニット21は検査行列の要素も部分体GF(qn)の元に変換する。これにより、有限体GF(qN)上の計算が部分体GF(qn)上の計算に置き換わるので、計算量の削減が実現できる。特に、乗算の計算量削減効果は非常に大きい。
【0059】
基底の変換についてさらに説明する。
β∈GF(qN)は、有限体GF(qN)の正規基底要素であるとする。つまり、有限体GF(qN)の正規基底は、[β[0],β[1],・・・,β[N-1]]で構成されるとする。また、nはNの約数であるとする。
有限体GF(qN)の部分体GF(qn)の正規基底要素はαとする。つまり、有限体GF(qn)の正規基底は、[α[0],α[1],・・・,α[n-1]]で構成されるとする。その一方で、αは有限体GF(qN)の元でもあり、有限体GF(qN)上の正規基底要素βによる表現は、以下のとおりであるとする。
α=α0β[0]+α1β[1]+・・・+αn-1β[n-1]
+α0β[n]+α1β[n+1]+・・・+αn-1β[2n-1]
+・・・αn-1β[N-1]
αを求める様々な方法が考えられる。例えば、ランダムサーチによりαを求めることができる。
【0060】
手順3において、基底変換ユニット21は、以下のγを部分体GF(qn)の元に変換する。
γ=γ0β[0]+γ1β[1]+・・・+γn-1β[n-1]
+γ0β[n]+γ1β[n+1]+・・・+γn-1β[2n-1]
+・・・γn-1β[N-1]
【0061】
基底変換ユニット21が行う計算式は、以下のとおりである。
【数28】
【0062】
つまり、有限体GF(qN)の元のN個のシンボルの内、n個のシンボルだけがピックアップされる。例えば、有限体GF(qN)の元であるγを正規基底要素βにより表現したときに周期的に出現するn個の係数γ0、γ1、・・・、γn-1がピックアップされる。さらに、有限体GF(qN)の元であるαを正規基底要素βにより表現したときに周期的に出現するn個の係数α0、α1、・・・、αn-1がピックアップされる。続いて、γに関してピックアップされたn個のシンボルと、αに関してピックアップされたn個のシンボルで構成された行列Pの逆行列P-1との乗算が行われる。この乗算を行うことが基底変換である。基底変換後のγ´は、n個のシンボルを持つことになる。
【0063】
なお、GF(qn)は有限体GF(qN)の部分体であるので、有限体GF(qN)の元が部分体GF(qn)の元に必ず変換できるとは限らない。このことを利用して、Gabidulin符号の訂正不能の判断を早い段階(本手順)で実施することができる。すなわち、本手順で基底変換されるγは必ず部分体GF(qn)の元に変換できるはずだが、もし変換できない場合は訂正不能と判断して復号を中止する。早い段階で復号を中止することで、無駄な計算を減らすことができる。なお、検査行列の要素が部分体GF(qn)の元であることは事前に確保されている。
【0064】
手順4:ELPの根(d)の計算
ELPの根計算ユニット13は、ガウスの消去法を用いて、ELPの根(d)を求める。次式をxについて解けば次式の根dが求まる。
【数29】
【0065】
この式にはフローベニウスq-乗べきが含まれており、解きやすい線形システムの形にする。ここで、αは、部分体GF(q
n)の正規基底要素であり、N個のシンボルを持つ。
【数30】
【0066】
Ψのj列目はELPにα
[j]を代入することで、簡単に求めることができる。
【数31】
【0067】
有限体GF(16
16)上のGab(4,2)符号(つまり、q=16,N=16,n=4)を例に、基底変換を行わなかった場合と行った場合に分けて説明する。基底変換しない場合、γ、αは有限体GF(q
N)の元であり、16個のシンボルを持つ。そうすると、下記式で計算されるΨ
0~Ψ
3(行列Ψの列ベクトル)は、同じく有限体GF(q
N)の元であり、16個のシンボルを持つ。
【数32】
【0068】
このように、基底変換を行わない場合は、乗算及びフローベニウスq-乗べきを用いて、16個のシンボルを持つ列ベクトルΨ0、Ψ1、Ψ2及びΨ3が計算される。
【0069】
ΨX=0の解空間の基底を、ガウス消去法を用いて求めると、以下のようになる。
【数33】
【0070】
これに対し、基底変換が行われる本実施形態によれば、まず、γとαは、基底変換により(基底変換後のものを
【数34】
及び
【数35】
で表す)、16個のシンボルの元(有限体GF(q
N)の元)から、4個のシンボルの元(部分体GF(q
n)の元)になる。下式から分かるように、部分体GF(q
n)同士の計算になり、簡単になる。例えば、式中の
【数36】
と
【数37】
との乗算は、N×Nの乗算表ではなく、n×nの乗算表を用いることになる。これにより、計算される
【数38】
も部分体GF(q
n)の元であり、4個のシンボルを持つ。
【数39】
【0071】
このように、基底変換を行った場合は、乗算及びフローベニウスq-乗べきを用いて、4個のシンボルを持つ列ベクトル
【数40】
が計算される。この計算は、基底変換が行われない場合の、乗算及びフローベニウスq-乗べきを用いた、16個のシンボルを持つ列ベクトルΨ
0、Ψ
1、Ψ
2及びΨ
3の計算に比べて簡単である。
【0072】
【数41】
の解空間の基底を、ガウス消去法を用いて求める。その結果は以下のとおりである。
【数42】
【0073】
対象となる行列
【数43】
のサイズが4×4であるのに対し、行列Ψのサイズは16×4であるため、ΨX=0を解く場合に比べて、計算が簡単になる。
【0074】
Gab(4,2)符号を例にこれまで述べたように、基底変換を行わない場合の列ベクトルΨ
0、Ψ
1、Ψ
2及びΨ
3の計算に比べ、基底変換を行った場合の
【数44】
の計算は簡単である。また、基底変換を行わない場合にΨX=0を解くための計算に比べ、基底変換を行った場合に
【数45】
を解くための計算は簡単である。このように、基底変換を行うことで計算量が削減され、コンピュータ資源を効率的に利用することができる。
【0075】
基底変換について改めて以下に説明する。
根dを求める過程で乗算が必要である。仮に手順3の基底変換を行っていない場合、手順4は有限体GF(qN)上の乗算となる。有限体GF(qN)上の乗算は複雑であるため、計算量削減のために乗算表を用いる方法が提案されている。乗算表はN×Nの行列であり、行列演算で乗算を実行する。しかし、Nが大きいときには、乗算の計算量は依然として大きい。
本実施形態では、手順3にて基底変換が行われるため、手順4は部分体GF(qn)上の乗算となる。乗算表はn×nの行列であり、乗算の計算量を大幅に低減することができる。
Gabidulin符号のLNCへの応用では、Nは大きい値にすることが望ましく、nはNよりもかなり小さい値になることが多い。例えば、N=4000,n=4とする。この場合、有限体GF(qN)上の乗算のための乗算表は4000×4000の行列である一方、部分体GF(qn)上の乗算のための乗算表は4×4の行列である。部分体GF(qn)上の行列演算は、有限体GF(qN)上の行列演算に比べて計算量が明らかに少ない。
また、加算やフローベニウスq-乗べきなどの他の計算も簡単化されることは自明である。
【0076】
手順5:エラー係数(Θ)の計算
エラー係数計算ユニット14は、根dからエラー係数Θを求める。次式の関係を用いて、dからΘを求めることができる。
【数46】
【0077】
手順6:基底の逆変換
後述する手順7でエラースパンaを求める計算は有限体GF(qN)上で行われる。そのため、手順6において基底逆変換ユニット22は、基底の逆変換を行い根dを有限体GF(qN)の元に変換する。
【0078】
手順7:エラースパンaの計算
エラースパン計算ユニット15は、根dからエラースパンaを求める。次式の関係を用いて、dからaを求めることができる。
【数47】
【0079】
なお、エラースパンaは、有限体GF(qN)上の元であるため、当該有限体上で求める必要がある。本実施形態のように基底変換(手順3)を実施した場合、エラースパンaの計算(手順7)は、基底の逆変換(手順6)の後に行う必要がある。
エラー係数Θの計算(手順5)は、基底の逆変換(手順6)の前後どちらにおいても行うことができる。
エラー係数Θの計算(手順5)を、基底の逆変換(手順6)の後に行う場合、エラースパンaの計算(手順7)と同時に行ってもよい。
【0080】
手順8:エラーベクトルの推定
エラーベクトル推定ユニット16は、エラースパンaとエラー係数Θからエラーベクトルを推定する。
【数48】
【0081】
手順9:符号語の推定
符号語推定ユニット17は、推定されたエラーベクトルを受信語x´から引くことで、推定符号語を求める。
【数49】
【0082】
[4 利用例]
次のような諸元を持つ短縮Gabidulin符号Gab(4,2)を考える。
・p=2
・s=4
・q=ps=24=16
・N=16
・有限体:GF(1616)
・符号長:n=4(n<Nであるので短縮符号となる)
・情報記号数:k=2
・最大訂正ランクエラー数:τ=1
・原始多項式:x16+x3+8x+3
・GF(1616)上の正規基底を構築するための原始元:β=x15+9x2+10x+15
・GF(164)上の正規基底を構築するための原始元:α=0001000100010001
【0083】
ソースノードによる符号化は、生成行列Gを用いてGF(16
16)上の行列演算により実施する。情報データUは、GF(16
16)上の2シンボルベクトルであり、次式に示す。
【数50】
【0084】
ソースノードは、生成行列Gと情報データUの積により符号化を行い、符号語xを求める。
【数51】
【0085】
符号語xに次のような1ランクエラーeが注入されたとし、受信語をx'とする。
【数52】
【0086】
ターミナルノード内の復号器2における復号は、シンドローム計算からスタートし、エラースパンaとエラー係数Θを求め、エラーベクトルeを推定することにより実施する。
【0087】
手順1:シンドロームの計算
シンドローム計算ユニット11は、受信語x'と検査行列HからシンドロームS
0,S
1を計算する。
【数53】
【0088】
手順2:ELPの計算
ELP計算ユニット12は、バーレカンプ・マッシィ法を用いて、シンドロームS
0,S
1から誤りロケータ多項式(ELP)の係数γ
0,γ
1と推定ランクエラー数τを計算する。
【数54】
【0089】
【0090】
手順3:基底の変換
基底変換ユニット21は、有限体GF(16
16)上の元であるγ
0,γ
1と検査行列の要素αを、部分体GF(16
4)上の元に変換する。この変換の方法は先に述べたとおりである。なお、検査行列の全要素はαから計算することができる。
【数56】
【0091】
手順4:ELPの根(d)の計算
ELPの根計算ユニット13は、Γ(x)=0の根を求めることで、dを求める。
【数57】
【0092】
ここで、τ=1であるので、dの要素は1個であり、d
0と表し、次式に示す。
【数58】
【0093】
d0を求める過程では、乗算が必要である。手順3において、計算で使用する数値は全て 部分体GF(164)の元に変換されており、乗算は4×4の乗算表を用いた行列演算で実施できる。仮に、基底変換をしていなければ、乗算は16×16の乗算表を用いた行列演算となる。基底の変換を行うことで、乗算の計算量が大幅に削減されていることが分かる。また、加算やフローベニウスq-乗べきなどの他の計算も簡単化されることは自明である。
【0094】
手順5:エラー係数の(Θ)計算
エラー係数計算ユニット14は、d
0からエラー係数Θ
0を求める。
【数59】
【0095】
手順6:基底の逆変換
基底逆変換ユニット22は、部分体GF(16
4)上の元であるd
0を、有限体GF(16
16)上の元に変換する。
【数60】
【0096】
手順7:エラースパンaの計算
エラースパン計算ユニット15は、d
0からエラースパンaを求める。τ=1であるので、aの要素は1個であり、a
0と表し、次式に示す。
【数61】
【0097】
手順8:エラーベクトルの推定
エラーベクトル推定ユニット16は、エラースパンa
0とエラー係数Θ
0からエラーベクトルを推定する。
【数62】
【0098】
手順9:符号語の推定
符号語推定ユニット17は、推定されたエラーベクトルを受信語x'から引くことで、推定符号語を求める。
【数63】
【0099】
推定符号語
【数64】
は、元の符号語xと一致している。1ランクエラーが注入されたにもかかわらず正しい符号語が復元された、すなわち、1ランクエラーが訂正されたことが分かる。
【0100】
上記実施形態によれば、線形ネットワーク符号化が行われる通信ネットワークにおいて生じやすいランクエラーを訂正するための計算量を削減することができる。
【0101】
[別の実施形態]
手順3の基底変換ユニット21を持たずに、手順4でd0を有限体GF(1616)の元として求めてもよい。その場合、手順6の基底逆変換も必要なく、求めたd0をそのまま用いて手順7でa0を求めることができる。
その一方で、手順5では、求めたd0をそのまま用いてΘ0を求めることができなくなるため、事前にd0を部分体GF(164)の元に変換しておく必要がある。
但し、この実施形態の場合、多くの乗算が必要となる手順4(ELPの根(d)計算ユニット)における全ての演算がGF(1616)上の演算となるため、計算量削減効果は小さくなる。
【0102】
なお、上記の実施形態は、Gabidulin符号に限られずMRD符号を用いて実施することができる。上記実施形態に係る短縮Gabidulin符号と短縮MRD符号とは、線形ネットワーク符号化とは無関係に用いることも可能である。
また、復号器は、
図5に示した複数のユニットのうち、少なくとも基底変換ユニット21を備えていればよい。そして、当該復号器は、基底変換ユニットによる変換前の有限体GF(q
N)の基底を用いた計算と、基底変換ユニットによる変換後の部分体GF(q
n)の基底を用いた計算とを含む復号処理を行う。斯かる復号器によれば、MRD符号を用いる場合の計算量を削減することができる。
【0103】
図6に、ターミナルノードt
0のコンピュータハードウェア構成例を示す。ターミナルノードt
0は、CPU351と、インタフェース装置352と、表示装置353と、入力装置354と、ドライブ装置355と、補助記憶装置356と、メモリ装置357とを備えており、これらがバス358により相互に接続されている。
【0104】
ターミナルノードt0の機能を実現するプログラムは、CD-ROM等の記録媒体359によって提供される。プログラムを記録した記録媒体359がドライブ装置355にセットされると、プログラムが記録媒体359からドライブ装置355を介して補助記憶装置356にインストールされる。あるいは、プログラムのインストールは必ずしも記録媒体359により行う必要はなく、ネットワーク経由で行うこともできる。補助記憶装置356は、インストールされたプログラムを格納すると共に、必要なファイルやデータ等を格納する。
【0105】
メモリ装置357は、プログラムの起動指示があった場合に、補助記憶装置356からプログラムを読み出して格納する。CPU351は、メモリ装置357に格納されたプログラムにしたがってターミナルノードt0の機能を実現する。インタフェース装置352は、ネットワークを通して他のコンピュータに接続するためのインタフェースとして用いられる。表示装置353はプログラムによるGUI(Graphical User Interface)等を表示する。入力装置354はキーボード及びマウス等である。
【0106】
なお、ターミナルノードt0と同様のコンピュータハードウェア構成を、通信ネットワーク内の他のノードも有する。
【0107】
これまでに説明した実施形態は、装置としての側面だけではなく、方法としての側面及びコンピュータプログラムとしての側面をも有している。
【0108】
これまでに説明した実施形態に関し、以下の付記を開示する。
[付記1]
有限体GF(qN)上のMRD符号によって符号化がなされた信号の復号を行う復号器であって、
前記有限体GF(qN)の基底を、前記有限体GF(qN)の部分体GF(qn)の基底へ変換する基底変換ユニットを備え、qは素数のべき乗であり、nはNの約数であり、
前記復号は、前記基底変換ユニットによる変換前の前記有限体GF(qN)の基底を用いた計算と、前記基底変換ユニットによる変換後の前記部分体GF(qn)の基底を用いた計算とを含む、
復号器。
[付記2]
前記有限体GF(qN)上の乗算を実行するためのN×Nの乗算表と、前記部分体GF(qn)上の乗算を実行するためのn×nの乗算表とを有し、
前記基底変換ユニットによる変換前の乗算は、前記N×Nの乗算表を用いて行われ、
前記基底変換ユニットによる変換後の乗算は、前記n×nの乗算表を用いて行われる、
付記1に記載の復号器。
[付記3]
前記部分体GF(qn)の基底を前記有限体GF(qN)の基底に逆変換する基底逆変換ユニットをさらに備え、
前記復号はさらに、前記基底逆変換ユニットによる逆変換後の前記有限体GF(qN)の基底を用いた計算を含む、
付記1又は2に記載の復号器。
[付記4]
前記信号からシンドロームを計算するシンドローム計算ユニットと、
前記シンドロームを用いて誤りロケータ多項式を求める誤りロケータ多項式計算ユニットと、
前記誤りロケータ多項式の根を計算する根計算ユニットと、
前記根からエラー係数を計算するエラー係数計算ユニットと、
前記根からエラースパンを計算するエラースパン計算ユニットと、
前記エラー係数と前記エラースパンからエラーベクトルを推定するエラーベクトル推定ユニットと、
前記エラーベクトルから符号語を推定する符号語推定ユニットと
をさらに備え、
前記シンドローム計算ユニットと、前記誤りロケータ多項式計算ユニットとは、前記基底変換ユニットによる変換前の前記有限体GF(qN)の基底を用いて計算を行い、
前記根計算ユニットは、前記基底変換ユニットによる変換後の前記部分体GF(qn)の基底を用いて計算を行い、
前記エラー係数計算ユニットは、前記基底変換ユニットによる変換前の前記有限体GF(qN)の基底と、前記基底変換ユニットによる変換後の前記部分体GF(qn)の基底とのいずれかを用いて計算を行い、
前記エラースパン計算ユニットと、前記エラーベクトル推定ユニットと、前記符号語推定ユニットとは、前記基底逆変換ユニットによる逆変換後の前記有限体GF(qN)の基底を用いて計算を行う、
付記3に記載の復号器。
[付記5]
前記基底変換ユニットによる変換が正しく実行できなかった場合に、訂正不能と判断される、付記1~4のいずれか一項に記載の復号器。
[付記6]
複数のノードを有し、ネットワーク符号化により通信が行われる通信ネットワークであって、前記複数のノードのうちの少なくとも1つのノードが付記1~5のいずれか一項に記載の復号器を備えている、通信ネットワーク。
【0109】
以上、本発明の実施の形態につき述べたが、本発明は既述の実施の形態に限定されるものではなく、本発明の技術的思想に基づいて各種の変形及び変更が可能である。
【符号の説明】
【0110】
NW1 通信ネットワーク
1,2 復号器
11 シンドローム計算ユニット
12 ELP計算ユニット
13 ELPの根計算ユニット
14 エラー係数計算ユニット
15 エラースパン計算ユニット
16 エラーベクトル推定ユニット
17 符号語推定ユニット
21 基底変換ユニット
22 基底逆変換ユニット