JP5918884B1 - 復号装置、復号方法、およびプログラム - Google Patents
復号装置、復号方法、およびプログラム Download PDFInfo
- Publication number
- JP5918884B1 JP5918884B1 JP2015097276A JP2015097276A JP5918884B1 JP 5918884 B1 JP5918884 B1 JP 5918884B1 JP 2015097276 A JP2015097276 A JP 2015097276A JP 2015097276 A JP2015097276 A JP 2015097276A JP 5918884 B1 JP5918884 B1 JP 5918884B1
- Authority
- JP
- Japan
- Prior art keywords
- vector
- matrix
- inverse matrix
- order
- elements
- 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.)
- Active
Links
Images
Classifications
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M13/00—Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
- H03M13/03—Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
- H03M13/05—Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits
- H03M13/13—Linear codes
- H03M13/15—Cyclic codes, i.e. cyclic shifts of codewords produce other codewords, e.g. codes defined by a generator polynomial, Bose-Chaudhuri-Hocquenghem [BCH] codes
- H03M13/151—Cyclic codes, i.e. cyclic shifts of codewords produce other codewords, e.g. codes defined by a generator polynomial, Bose-Chaudhuri-Hocquenghem [BCH] codes using error location or error correction polynomials
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11B—INFORMATION STORAGE BASED ON RELATIVE MOVEMENT BETWEEN RECORD CARRIER AND TRANSDUCER
- G11B20/00—Signal processing not specific to the method of recording or reproducing; Circuits therefor
- G11B20/10—Digital recording or reproducing
- G11B20/18—Error detection or correction; Testing, e.g. of drop-outs
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M13/00—Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
- H03M13/03—Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
- H03M13/05—Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits
- H03M13/13—Linear codes
- H03M13/15—Cyclic codes, i.e. cyclic shifts of codewords produce other codewords, e.g. codes defined by a generator polynomial, Bose-Chaudhuri-Hocquenghem [BCH] codes
- H03M13/151—Cyclic codes, i.e. cyclic shifts of codewords produce other codewords, e.g. codes defined by a generator polynomial, Bose-Chaudhuri-Hocquenghem [BCH] codes using error location or error correction polynomials
- H03M13/1515—Reed-Solomon codes
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M13/00—Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
- H03M13/03—Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
- H03M13/05—Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits
- H03M13/13—Linear codes
- H03M13/15—Cyclic codes, i.e. cyclic shifts of codewords produce other codewords, e.g. codes defined by a generator polynomial, Bose-Chaudhuri-Hocquenghem [BCH] codes
- H03M13/151—Cyclic codes, i.e. cyclic shifts of codewords produce other codewords, e.g. codes defined by a generator polynomial, Bose-Chaudhuri-Hocquenghem [BCH] codes using error location or error correction polynomials
- H03M13/158—Finite field arithmetic processing
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M13/00—Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
- H03M13/37—Decoding methods or techniques, not specific to the particular type of coding provided for in groups H03M13/03 - H03M13/35
- H03M13/373—Decoding methods or techniques, not specific to the particular type of coding provided for in groups H03M13/03 - H03M13/35 with erasure correction and erasure determination, e.g. for packet loss recovery or setting of erasures for the decoding of Reed-Solomon codes
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M13/00—Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
- H03M13/61—Aspects and characteristics of methods and arrangements for error correction or error detection, not provided for otherwise
- H03M13/615—Use of computational or mathematical techniques
- H03M13/616—Matrix operations, especially for generator matrices or check matrices, e.g. column or row permutations
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M13/00—Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
- H03M13/65—Purpose and implementation aspects
- H03M13/6502—Reduction of hardware complexity or efficient processing
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M13/00—Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
- H03M13/65—Purpose and implementation aspects
- H03M13/6561—Parallelized implementations
Abstract
【課題】体乗算の処理量を低減する。【解決手段】aはa0, …, ak-1∈GF(xq)を要素とするk次ベクトルである。Aは単位行列とファンデルモンデ行列を縦に連結したn行k列の行列である。bはb0, …, bn-1∈GF(xq)を要素としベクトルaと行列Aを乗じて得たn次ベクトルである。ベクトル変換部11は、ベクトルbのφ個の要素bp0, …, bpφ-1を用いてφ次のベクトルb'を生成する。逆行列生成部12は、φ行φ列の逆行列A'-1を生成する。平文計算部13は、ベクトルb'と逆行列A'-1とを乗ずることでベクトルaの要素ae0, …, aeφ-1を計算する。【選択図】図2
Description
この発明は、符号化技術に関し、特に、復号処理を効率的に行う技術に関する。
従来の誤り訂正符号技術にリード・ソロモン符号(Reed-Solomon Codes)がある。リード・ソロモン符号については、例えば非特許文献1に記載されている。
誤り訂正符号の符号化処理は、平文の入力ベクトルaに線形変換(つまり行列)Aを乗じて出力ベクトルbを得る処理として、式(1)により表現できる。すなわち、行列Aのi番目の行は、出力ベクトルbのi番目の要素biを生成するために入力ベクトルaの各要素に乗じる係数を表す。
b = Aa …(1)
b = Aa …(1)
誤り訂正符号の復号処理も線形変換と見ることができる。A', b'をA, bのうち復号に利用するk個の要素に対応する行だけを抜き出した行列もしくはベクトルとして、式(2)により表現できる。
b' = A'a …(2)
b' = A'a …(2)
したがって、行列Aに逆行列が存在すれば、式(3)により復号できる。
a = A'-1b' …(3)
a = A'-1b' …(3)
誤り訂正符号の符号化では、入力ベクトルaは式(4)で表されるk次のベクトルとする。ただし、kは2以上の整数である。
出力ベクトルbは式(5)で表されるn次のベクトルとする。ただし、nは2以上の整数であり、n≧2k-1である。
行列Aは、式(6)で表されるk行k列の単位行列とm行k列のファンデルモンデ行列(Vandermonde matrix)を縦に連結した行列である。ただし、m=n-kである。ファンデルモンデ行列とは、行または列の行列要素に等比数列の各項が順番にならんでいる特別な構成の行列である。
つまり、行列Aは式(7)のようなn行k列の行列である。
行列Aは、k行目までは単位行列であるため、出力ベクトルbのk番目までの要素b0, …, bk-1は入力ベクトルaの要素a0, …, ak-1と一致する。出力ベクトルbにおいて入力ベクトルaの要素と一致する要素をデータシェアと呼び、それ以外の要素をパリティシェアと呼ぶ。
バァナード・スカラー著、「ディジタル通信 基本と応用」、ピアソン・エデュケーション、2006年
従来の誤り訂正符号技術では処理量が大きいという課題がある。特に、復号処理において行われる体乗算の処理量が大きい。
この発明の目的は、このような点を鑑みて、符号化技術における体乗算の処理量を低減することができる復号技術を提供することである。
上記の課題を解決するために、この発明の復号装置は、xは拡大体GF(xq)を生成する既約多項式f[X]の元Xであり、n, kは2以上の整数であり、n≧2k-1であり、mは1以上の整数であり、m=n-kであり、aはa0, …, ak-1∈GF(xq)を要素とするk次ベクトルであり、Aは次式で定義されるn行k列の行列であり、
bはb0, …, bn-1∈GF(xq)を要素としベクトルaと行列Aを乗じて得たn次ベクトルであり、φは1以上m以下の整数であり、d0, …, dk-φ-1は0以上k未満の相異なる整数であり、e0, …, eφ-1は0以上k未満かつd0, …, dk-φ-1と重複しない相異なる整数であり、p0, …, pφ-1はk以上n未満の相異なる整数であり、ベクトルbのφ個の要素bp0, …, bpφ-1を用いて、次式によりφ次のベクトルb'を生成するベクトル変換部と、
次式によりφ行φ列の逆行列A'-1を生成する逆行列生成部と、
ベクトルb'と逆行列A'-1とを乗ずることでベクトルaの要素ae0, …, aeφ-1を計算する平文計算部と、を含む。
この発明によれば、符号化技術における体乗算の処理量を低減することができる。
実施形態の説明に先立ち、この発明の原理について説明する。
前提として、以下の説明では、xは既約多項式をf[X]=X64+X4+X3+X2+X+1とする拡大体GF(264)の元Xである。xを整数表現すると2である。
GF(264)は多項式を、mod 2整数を係数とする64次多項式f[X]で割った(多項式としての割り算)余りの集合である。体であり四則演算を行うことができる。特殊な演算をもつビットの64次ベクトルと考えてもよい。GF(264)は64ビット整数で表現でき、項xiを2iで表現する。例えば、1+x+x3は、20+21+23=11と表現できる。
a, b∈GF(264)の乗算は、2つの63次多項式a, b(式(8))を掛けてから64次多項式fで割る操作である(式(9))。このとき、λ次の項の係数は式(10)となる。
式(9)において、126次多項式をmod fして63次多項式にする処理をリダクションと呼ぶ。リダクションは、式(11)の同値関係を用いて処理する。
f=x64+x4+x3+x+1=0 mod f …(11)
f=x64+x4+x3+x+1=0 mod f …(11)
式(11)を変形すると、式(12)に示すように64次項を4次式に落とす関係となる。
x64=x4+x3+x+1 mod f …(12)
x64=x4+x3+x+1 mod f …(12)
式(13)に示すように、64次以上の項もすべて60次次数を下げられる。
x64+n=xn(x4+x3+x+1) mod f …(13)
x64+n=xn(x4+x3+x+1) mod f …(13)
126次多項式を、63次多項式gと62次多項式hを用いて、式(14)のように表すことができる。
g+x64h=g+(x4+x3+x+1)h mod f …(14)
g+x64h=g+(x4+x3+x+1)h mod f …(14)
ある任意の要素aとx+1との乗算(x+1)aは、式(15)で表すことができる。
また、xnaはaの各項がn次高い項となるので、整数表現における2n倍、もしくはnビット左シフトと等価である。したがって、式(16)のように表すことができる。
hは62次多項式であるため、式(16)の
は64次以上の多項式となり、再度次数を下げる必要がある。64次以上の部分は式(17)のようになる。
64ビット整数内では64ビットを超えたビットは切り捨てられることを考慮すると、式(18)を計算すればよい。
乗算の際、片方が61ビット以内のとき(より正確には両方のビット数を足して125以下のとき)、式(19)が成り立つため、リダクションを効率化できる。
したがって、リダクションまで含めて考えると、61ビット数で1ビットだけが立っている数、つまり0≦i≦60の範囲での2iとの乗算は高速である。
上述のとおり、誤り訂正符号の復号処理では、復号に利用するベクトルbの要素を抜き出したベクトルb'と、符号化処理に用いた行列Aのうちベクトルb'の要素に対応する行を抜き出した行列A'の逆行列とを乗算することで平文のベクトルaを復号する。データシェアb0, …, bk-1がすべて利用可能な場合、データシェアは入力ベクトルの各要素そのものであるため、入力をそのまま出力すればよい。一方、利用不能なデータシェアが1つでもある場合、利用可能なデータシェアとパリティシェアとから平文を復元する必要がある。
平文の復元は以下のように行う。利用不能なデータシェアがφ個存在するとする。ただし、φ≦mである。概念的には、逆行列のうちφ行を抜き出して利用可能なシェアと掛ければよい。しかし、逆行列の要素は一般的に、xの60までのべきとはならないため、逆行列のうちφ行と掛けた場合の処理量は、式(20)で示す通りである。なお、MULはキャリー無し乗算の回数であり、REDはリダクションの回数である。キャリー無し乗算はIntel(登録商標)社Sandy-bridge以降、AMD(登録商標)社のBulldozer以降のCPUであればPCLMUL命令1回で処理できる。
φ(kMUL+RED) …(20)
φ(kMUL+RED) …(20)
逆行列をそのまま掛けるかわりに、データシェアが1つの入力ベクトルの要素しか持たないことを利用して、最初にパリティシェアからデータシェアに対応する入力ベクトルの要素を除去する。例えば、式(21)のようにして、データシェアb0を用いて、パリティシェアbp(ただし、pはいずれかのパリティシェアに対応する番号)から0番目の平文の要素を除去することができる。
b0=(1 0 0 … 0)a,
bp=(1 xp-k x(p-k)2 … x(p-k)(k-1))a より、
bp-b0=(0 xp-k x(p-k)2 … x(p-k)(k-1))a …(21)
b0=(1 0 0 … 0)a,
bp=(1 xp-k x(p-k)2 … x(p-k)(k-1))a より、
bp-b0=(0 xp-k x(p-k)2 … x(p-k)(k-1))a …(21)
このような変形を使うと、復元すべきベクトルaの要素ae0, …, aeφ-1をk次よりも低次のφ次平方行列を用いて表現することができる。
ただし、d0, …, dk-φ-1は利用可能なデータシェアの番号、e0, …, eφ-1は利用不能なデータシェアの番号、p0, …, pφ-1は復元に用いるパリティシェアの番号である。すなわち、d0, …, dk-φ-1は0以上k未満の相異なる整数、e0, …, eφ-1は0以上k未満かつd0, …, dk-φ-1と重複しない相異なる整数、p0, …, pφ-1はk以上n未満の相異なる整数である。
式(22)の左辺をベクトルb'として、式(23)のように、φ次平方行列の逆行列を掛ければ平文が復元できる。
ベクトルb'を生成するために必要な処理量は、式(24)となる。なお、BMULは一方が単項式である乗算の回数、BREDは最高次項の次数の合計が2q-d-1以下である乗算におけるリダクションの回数である。
(k-φ)φBMUL+φBRED …(24)
(k-φ)φBMUL+φBRED …(24)
ベクトルb'とφ次の逆行列との乗算に必要な処理量は、式(25)となる。
φ2MUL+φRED …(25)
φ2MUL+φRED …(25)
したがって、全体の処理量は、式(24)と式(25)を合計した式(26)となる。
φ((k-φ)BMUL+φMUL+BRED+RED) …(26)
φ((k-φ)BMUL+φMUL+BRED+RED) …(26)
利用不能なデータシェアが1個の場合、すなわちφ=1の場合、式(23)は式(27)のようになる。したがって、xp0e0の逆元をあらかじめ計算しておき、b'0に掛ければよい。
利用不能なデータシェアが2個以上4個以下の場合、すなわち2≦φ≦4の場合、さらに1つ次数を削減することができる。φ≧2のとき式(22)のφ次正方行列は要素がすべてxのべきであるため、p0 < p1< … <pφ-1と並べ替えておけば、式(28)のようにBMUL, BREDでもう1つ次数を下げることができる。
残るae0は、式(28)で求めたae1, …, aeφ-1を用いて、式(29)により計算する。
この場合の処理量は、式(30)となる。
(k-φ)φBMUL+φBRED+(φ-1)BMUL+(φ-1)BRED
+(φ-1)2MUL+(φ-1)RED+(φ-1)BMUL+BRED+MUL+RED
=φ((k-φ+2)BMUL+(φ-2)MUL+2BRED+RED)+2(-BMUL+MUL) …(30)
(k-φ)φBMUL+φBRED+(φ-1)BMUL+(φ-1)BRED
+(φ-1)2MUL+(φ-1)RED+(φ-1)BMUL+BRED+MUL+RED
=φ((k-φ+2)BMUL+(φ-2)MUL+2BRED+RED)+2(-BMUL+MUL) …(30)
式(30)で処理量が減少していることを説明する。まず、BMULとMULの合計数は式(20)(26)(30)ですべて等しくkφ回となっている。次に、MULの回数が減っていることを確かめる。式(20)ではkφ回、式(26)では2φ回、式(30)ではφ2-2φ+2であり、φ≧2のとき、式(30)<式(26)<式(20)である。REDの数は式(30)=式(26)<式(20)である。BREDの数は式(20)で0、式(26)でφ、式(30)で2φと増加しているが、φ≧2では増分はMULの減少分以下である。そのため、BRED+BMUL<MULが成り立つ場合、全体では処理量は低下している。なお、φ≧5では、各iでb'iとb'i-x(pi-p0)e0b'0の両方を保持することができずロード/ストアのオーバーヘッドとなるため、この次数削減は行わない。
利用不能なデータシェアが2個の場合、φ-1=1であるため、式(28)はφ=1の場合と同様、式(31)のように簡単な式となる。したがって、xp1e1-xp0e1+(p1-p0)e0の逆元をあらかじめ計算しておき、b'1に掛ければよい。あとは、式(29)を用いてae0を復元する。
利用不能なデータシェアが3個以上の場合、逆行列を掛けたときの処理量は、式(32)となる。
φ2MUL+φRED …(32)
φ2MUL+φRED …(32)
ここで、ae0, …, aeφ-1のうち、1個(例えばae0)だけ復元してみる。すると必要な処理量は式(33)となる。
φMUL+RED …(33)
φMUL+RED …(33)
するとデータシェア成分を除去したときと同じ方法により、式(34)の処理量で次数を1次削減できる。
(φ-1)(BMUL+BRED) …(34)
(φ-1)(BMUL+BRED) …(34)
この次数削減を繰り返した場合、処理量は式(35)となる。
φ(φ+1)/2MUL+φ(φ-1)/2BMUL+φRED+φ(φ-1)/2BRED …(35)
φ(φ+1)/2MUL+φ(φ-1)/2BMUL+φRED+φ(φ-1)/2BRED …(35)
式(26)と比較してMULとBMULの総数は等しく、MULの比率が約半分に軽減している。BREDだけが増加しているが、増分がMULの減少分と等しいため、BUL+BRED<MULならば全体として処理量は低下する。
絶対的な計算量は式(35)が最小となるが、1個ずつデータシェアを復元して、他のパリティシェアからその成分を除去することを繰り返す方法ではMULとREDの並列性が低下する問題がある。並列性の高い逆行列との乗算と比較して、順番にしか実行できない処理が増えてしまうため、CPUのMUL, REDの並列実行可能数によっては性能が低下してしまう。そのため、最終的に、CPUのMUL, REDの並列実行可能数分ずつ逆行列によって復元し、パリティシェアからその復元した成分を除去することを繰り返す方法が最速となる。なお、MULの並列実行可能数は、Intel社のIvy-Bridgeでは1、Haswellでは2であり、REDの並列実行可能数は、Ivy-Bridge, Haswellとも2である。
上述した誤り訂正符号の復号処理を実装したアルゴリズムの例を次表に示す。
補助入力である係数行列Ciおよび係数c0, c1はφの値に応じて以下のように設定される。
φ=1の場合、係数は次式のc0のみである。c0はxのべきの逆元であるためテーブル参照のみで計算できる。
φ=2の場合、上記のc0に加えて、次式のc1である。
φ=3の場合、上記のc0, c1に加えて、式(28)左辺のφ-1次正方行列の逆行列である。
φ=4の場合、上記のc0, c1と、式(28)左辺のφ-1次正方行列の逆行列のうち1行目(番号は0スタート)と2行目である。逆行列の1つの行は1つの平文シェアを復元するための係数列に等しい。上述したCPUのMUL, REDの並列実行可能数を考慮して、平文シェアを後方から2つずつ復元すると効率がよいため、後ろから2行だけが必要になる。
φ=5の場合、φ=4の場合と同様に、後方から2つずつ復元していくため、φ次正方行列の逆行列の後ろから2行がまず必要になる。次に、残りのφ-2次正方行列の逆行列の後ろから2行が必要になる。このように、φ次正方行列のうち、φ-2i<3を満たす各iに対して左上部φ-2i次正方行列の逆行列の後ろから2行ずつが必要となる。逆行列をφ/2回求める必要はなく、一度の三角化でよい。三角化、後退代入とも、左上部分はより右下の部分に影響されないため、右2列下2行を除いた行列の三角行列は全体の三角行列から右2列下2行を除いたものと同じだからである。
以下、この発明の実施の形態について詳細に説明する。なお、図面中において同じ機能を有する構成部には同じ番号を付し、重複説明を省略する。
実施形態の復号装置1は、図1に例示するように、ベクトル入力部10、ベクトル変換部11、逆行列生成部12、平文計算部13、およびベクトル出力部14を含む。この復号装置1が、図2に例示する各ステップの処理を行うことにより実施形態の復号方法が実現される。
復号装置1は、例えば、中央演算処理装置(CPU: Central Processing Unit)、主記憶装置(RAM: Random Access Memory)などを有する公知又は専用のコンピュータに特別なプログラムが読み込まれて構成された特別な装置である。復号装置1は、例えば、中央演算処理装置の制御のもとで各処理を実行する。復号装置1に入力されたデータや各処理で得られたデータは、例えば、主記憶装置に格納され、主記憶装置に格納されたデータは必要に応じて中央演算処理装置へ読み出されて他の処理に利用される。復号装置1の各処理部は、少なくとも一部が集積回路等のハードウェアによって構成されていてもよい。
図2を参照して、実施形態の復号方法の処理手続きを説明する。
ステップS10において、ベクトル入力部10へ、n次ベクトルbが入力される。n次ベクトルbのパリティシェアのうち利用可能なφ個の要素bp0, …, bpφ-1∈GF(xq)はベクトル変換部11へ送られる。また、ベクトルbのデータシェアのうち利用可能なk-φ個の要素bd0, …, bdk-φ-1はベクトル出力部14へ送られる。ベクトルbは、式(36)で定義されるk次ベクトルaと、式(37)で定義されるn行k列の行列Aとを乗じて得たn次ベクトルである。
ステップS11において、ベクトル変換部11は、bp0, …, bpφ-1を用いて、式(38)によりφ次のベクトルb'を生成する。ベクトルb'は平文計算部13へ送られる。
ステップS12において、逆行列生成部12は、式(39)によりφ行φ列の逆行列A'-1を生成する。逆行列A'-1は平文計算部13へ送られる。逆行列A'-1はk個のパリティシェアのうちどのφ個を用いて復元するかが定まれば生成可能であるため、すべてのφ個の組み合わせについてあらかじめ逆行列A'-1を計算しておいてもよい。その場合、逆行列生成部12は、あらかじめ生成した逆行列から適切なものを選択するだけでよい。
ステップS13において、平文計算部13は、式(40)に示すように、ベクトルb'と逆行列A'-1とを乗ずることでベクトルaの要素ae0, …, aeφ-1を計算する。要素ae0, …, aeφ-1はベクトル出力部14へ送られる。
ステップS14において、ベクトル出力部14は、ベクトル入力部10から受け取ったk-φ個の要素bd0, …, bdk-φ-1と、平文計算部13により計算されたφ個の要素ae0, …, aeφ-1とを要素としてk次ベクトルaを復元し、そのベクトルaを出力する。
上記のように構成することにより、実施形態の復号装置によれば、k次正方行列である行列A'をφ次正方行列に次数削減してから逆行列A'-1を作用させて復号を行う。これにより、φk個の多項式乗算のうち、φ(k-φ)個分が項の移動のみで済む軽量な多項式乗算となるため、効率的である。一般の多項式乗算は拡大次数qに対してq2の計算量となる。これに対して、項の移動による計算量は、実際に移動した場合はqの計算量、移動量のフラグを持つだけとした場合は計算量が1となる。
この発明の復号技術は、計算量的秘密分散に適用することが可能である。計算量型秘密分散は、計算量的安全性に基づき一定個数未満の分散値からは元のデータを一切復元できなくする秘密分散方式である。計算量型秘密分散は、例えば、下記参考文献1に記載されたものがある。
〔参考文献1〕H.Krawczyk, “Secret sharing made short.”, CRYPTO 1993, pp. 136-146, 1993.
〔参考文献1〕H.Krawczyk, “Secret sharing made short.”, CRYPTO 1993, pp. 136-146, 1993.
この発明は上述の実施形態に限定されるものではなく、この発明の趣旨を逸脱しない範囲で適宜変更が可能であることはいうまでもない。上記実施形態において説明した各種の処理は、記載の順に従って時系列に実行されるのみならず、処理を実行する装置の処理能力あるいは必要に応じて並列的にあるいは個別に実行されてもよい。
[プログラム、記録媒体]
上記実施形態で説明した各装置における各種の処理機能をコンピュータによって実現する場合、各装置が有すべき機能の処理内容はプログラムによって記述される。そして、このプログラムをコンピュータで実行することにより、上記各装置における各種の処理機能がコンピュータ上で実現される。
上記実施形態で説明した各装置における各種の処理機能をコンピュータによって実現する場合、各装置が有すべき機能の処理内容はプログラムによって記述される。そして、このプログラムをコンピュータで実行することにより、上記各装置における各種の処理機能がコンピュータ上で実現される。
この処理内容を記述したプログラムは、コンピュータで読み取り可能な記録媒体に記録しておくことができる。コンピュータで読み取り可能な記録媒体としては、例えば、磁気記録装置、光ディスク、光磁気記録媒体、半導体メモリ等どのようなものでもよい。
また、このプログラムの流通は、例えば、そのプログラムを記録したDVD、CD-ROM、USBメモリ等の可搬型記録媒体を販売、譲渡、貸与等することによって行う。さらに、このプログラムをサーバコンピュータの記憶装置に格納しておき、ネットワークを介して、サーバコンピュータから他のコンピュータにそのプログラムを転送することにより、このプログラムを流通させる構成としてもよい。
このようなプログラムを実行するコンピュータは、例えば、まず、可搬型記録媒体に記録されたプログラムもしくはサーバコンピュータから転送されたプログラムを、一旦、自己の記憶装置に格納する。そして、処理の実行時、このコンピュータは、自己の記録媒体に格納されたプログラムを読み取り、読み取ったプログラムに従った処理を実行する。また、このプログラムの別の実行形態として、コンピュータが可搬型記録媒体から直接プログラムを読み取り、そのプログラムに従った処理を実行することとしてもよく、さらに、このコンピュータにサーバコンピュータからプログラムが転送されるたびに、逐次、受け取ったプログラムに従った処理を実行することとしてもよい。また、サーバコンピュータから、このコンピュータへのプログラムの転送は行わず、その実行指示と結果取得のみによって処理機能を実現する、いわゆるASP(Application Service Provider)型のサービスによって、上述の処理を実行する構成としてもよい。なお、本形態におけるプログラムには、電子計算機による処理の用に供する情報であってプログラムに準ずるもの(コンピュータに対する直接の指令ではないがコンピュータの処理を規定する性質を有するデータ等)を含むものとする。
また、この形態では、コンピュータ上で所定のプログラムを実行させることにより、本装置を構成することとしたが、これらの処理内容の少なくとも一部をハードウェア的に実現することとしてもよい。
1 復号装置
10 ベクトル入力部
11 ベクトル変換部
12 逆行列生成部
13 平文計算部
14 ベクトル出力部
10 ベクトル入力部
11 ベクトル変換部
12 逆行列生成部
13 平文計算部
14 ベクトル出力部
Claims (6)
- xは拡大体GF(xq)を生成する既約多項式f[X]の元Xであり、n, kは2以上の整数であり、n≧2k-1であり、mは1以上の整数であり、m=n-kであり、aはa0, …, ak-1∈GF(xq)を要素とするk次ベクトルであり、Aは次式で定義されるn行k列の行列であり、
bはb0, …, bn-1∈GF(xq)を要素とし上記ベクトルaと上記行列Aを乗じて得たn次ベクトルであり、φは1以上m以下の整数であり、d0, …, dk-φ-1は0以上k未満の相異なる整数であり、e0, …, eφ-1は0以上k未満かつd0, …, dk-φ-1と重複しない相異なる整数であり、p0, …, pφ-1はk以上n未満の相異なる整数であり、
上記ベクトルbのφ個の要素bp0, …, bpφ-1を用いて、次式によりφ次のベクトルb'を生成するベクトル変換部と、
次式によりφ行φ列の逆行列A'-1を生成する逆行列生成部と、
上記ベクトルb'と上記逆行列A'-1とを乗ずることで上記ベクトルaの要素ae0, …, aeφ-1を計算する平文計算部と、
を含む復号装置。 - 請求項1から3のいずれかに記載の復号装置であって、
x=2であり、
上記ベクトル変換部、上記逆行列生成部、および上記平文計算部は、加算を排他的論理和演算とし、多項式乗算をビットシフト演算として計算するものである、
復号装置。 - xは拡大体GF(xq)を生成する既約多項式f[X]の元Xであり、n, kは2以上の整数であり、n≧2k-1であり、mは1以上の整数であり、m=n-kであり、aはa0, …, ak-1∈GF(xq)を要素とするk次ベクトルであり、Aは次式で定義されるn行k列の行列であり、
bはb0, …, bn-1∈GF(xq)を要素とし上記ベクトルaと上記行列Aを乗じて得たn次ベクトルであり、φは1以上m以下の整数であり、d0, …, dk-φ-1は0以上k未満の相異なる整数であり、e0, …, eφ-1は0以上k未満かつd0, …, dk-φ-1と重複しない相異なる整数であり、p0, …, pφ-1はk以上n未満の相異なる整数であり、
ベクトル変換部が、上記ベクトルbのφ個の要素bp0, …, bpφ-1を用いて、次式によりφ次のベクトルb'を生成するベクトル変換ステップと、
逆行列生成部が、次式によりφ行φ列の逆行列A'-1を生成する逆行列生成ステップと、
平文計算部が、上記ベクトルb'と上記逆行列A'-1とを乗ずることで上記ベクトルaの要素ae0, …, aeφ-1を計算する平文計算ステップと、
を含む復号方法。 - 請求項1から4のいずれかに記載の復号装置としてコンピュータを機能させるためのプログラム。
Priority Applications (5)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2015097276A JP5918884B1 (ja) | 2015-05-12 | 2015-05-12 | 復号装置、復号方法、およびプログラム |
PCT/JP2016/063996 WO2016181992A1 (ja) | 2015-05-12 | 2016-05-11 | 復号装置、復号方法、およびプログラム |
CN201680026019.0A CN107534449B (zh) | 2015-05-12 | 2016-05-11 | 解码装置、解码方法、及程序 |
US15/572,050 US10511330B2 (en) | 2015-05-12 | 2016-05-11 | Decoding apparatus, decoding method and program |
EP16792717.7A EP3297171B1 (en) | 2015-05-12 | 2016-05-11 | Efficient erasure decoding for mds codes |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2015097276A JP5918884B1 (ja) | 2015-05-12 | 2015-05-12 | 復号装置、復号方法、およびプログラム |
Publications (2)
Publication Number | Publication Date |
---|---|
JP5918884B1 true JP5918884B1 (ja) | 2016-05-18 |
JP2016213730A JP2016213730A (ja) | 2016-12-15 |
Family
ID=55974058
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2015097276A Active JP5918884B1 (ja) | 2015-05-12 | 2015-05-12 | 復号装置、復号方法、およびプログラム |
Country Status (5)
Country | Link |
---|---|
US (1) | US10511330B2 (ja) |
EP (1) | EP3297171B1 (ja) |
JP (1) | JP5918884B1 (ja) |
CN (1) | CN107534449B (ja) |
WO (1) | WO2016181992A1 (ja) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP5957120B1 (ja) * | 2015-05-12 | 2016-07-27 | 日本電信電話株式会社 | 秘密分散方法、秘密分散システム、分散装置、およびプログラム |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP5918884B1 (ja) * | 2015-05-12 | 2016-05-18 | 日本電信電話株式会社 | 復号装置、復号方法、およびプログラム |
JP2018093325A (ja) * | 2016-12-01 | 2018-06-14 | ソニーセミコンダクタソリューションズ株式会社 | 情報処理装置、情報処理方法、及びプログラム |
CN116028260B (zh) * | 2023-01-09 | 2024-02-27 | 海光信息技术股份有限公司 | 数据的处理方法、处理装置以及存储系统 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH02303221A (ja) * | 1989-05-17 | 1990-12-17 | Toshiba Corp | リード・ソロモン符号の復号装置 |
JPH07202716A (ja) * | 1994-01-05 | 1995-08-04 | Fujitsu Ltd | 誤り訂正復号方法及び誤り訂正復号回路 |
JP2000114984A (ja) * | 1998-09-22 | 2000-04-21 | Internatl Business Mach Corp <Ibm> | リード・ソロモン符号の復号回路 |
JP2008242034A (ja) * | 2007-03-27 | 2008-10-09 | Japan Aerospace Exploration Agency | データ圧縮/伸張と暗号化/復号と誤り制御とを行う統合符号化及び復号装置、並びに方法 |
JP2014078945A (ja) * | 2012-10-10 | 2014-05-01 | Hgst Netherlands B V | 縮退故障を有するメモリセルに対応するためのデータ符号化及び復号化 |
Family Cites Families (16)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6631172B1 (en) * | 2000-05-01 | 2003-10-07 | Lucent Technologies Inc. | Efficient list decoding of Reed-Solomon codes for message recovery in the presence of high noise levels |
US6937727B2 (en) * | 2001-06-08 | 2005-08-30 | Corrent Corporation | Circuit and method for implementing the advanced encryption standard block cipher algorithm in a system having a plurality of channels |
FR2860360B1 (fr) * | 2003-09-29 | 2005-12-09 | Canon Kk | Dispositif de codage /decodage utilisant un codeur/decodeur de reed-solomon |
US7644335B2 (en) * | 2005-06-10 | 2010-01-05 | Qualcomm Incorporated | In-place transformations with applications to encoding and decoding various classes of codes |
US9270414B2 (en) * | 2006-02-21 | 2016-02-23 | Digital Fountain, Inc. | Multiple-field based code generator and decoder for communications systems |
US7685503B2 (en) * | 2006-06-21 | 2010-03-23 | Intel Corporation | Fast decoding of Reed-Solomon code |
KR100890789B1 (ko) * | 2007-12-19 | 2009-03-31 | 한국전자통신연구원 | 다중입력 다중출력 시스템의 수신 장치 및 그 방법 |
KR101307070B1 (ko) * | 2009-12-15 | 2013-09-26 | 한국전자통신연구원 | 효율적인 스크램블링 또는 디스크램블링 방법 및 시스템 |
CN102307076A (zh) * | 2010-09-16 | 2012-01-04 | 清华大学 | 无冗余的抗干扰编码方法 |
US8498410B2 (en) * | 2011-03-14 | 2013-07-30 | Motorola Solutions, Inc. | Methods for customizing a Rijndael block cipher |
JP5587514B2 (ja) * | 2012-03-29 | 2014-09-10 | パナソニック株式会社 | 復号装置及び復号方法 |
CN103151078B (zh) * | 2013-03-19 | 2015-08-12 | 中国科学院微电子研究所 | 一种存储器检错纠错码生成方法 |
US9425961B2 (en) * | 2014-03-24 | 2016-08-23 | Stmicroelectronics S.R.L. | Method for performing an encryption of an AES type, and corresponding system and computer program product |
JP5957120B1 (ja) * | 2015-05-12 | 2016-07-27 | 日本電信電話株式会社 | 秘密分散方法、秘密分散システム、分散装置、およびプログラム |
JP5927323B1 (ja) * | 2015-05-12 | 2016-06-01 | 日本電信電話株式会社 | 行列作用装置、行列作用方法、およびプログラム |
JP5918884B1 (ja) * | 2015-05-12 | 2016-05-18 | 日本電信電話株式会社 | 復号装置、復号方法、およびプログラム |
-
2015
- 2015-05-12 JP JP2015097276A patent/JP5918884B1/ja active Active
-
2016
- 2016-05-11 EP EP16792717.7A patent/EP3297171B1/en active Active
- 2016-05-11 WO PCT/JP2016/063996 patent/WO2016181992A1/ja active Application Filing
- 2016-05-11 CN CN201680026019.0A patent/CN107534449B/zh active Active
- 2016-05-11 US US15/572,050 patent/US10511330B2/en active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH02303221A (ja) * | 1989-05-17 | 1990-12-17 | Toshiba Corp | リード・ソロモン符号の復号装置 |
JPH07202716A (ja) * | 1994-01-05 | 1995-08-04 | Fujitsu Ltd | 誤り訂正復号方法及び誤り訂正復号回路 |
JP2000114984A (ja) * | 1998-09-22 | 2000-04-21 | Internatl Business Mach Corp <Ibm> | リード・ソロモン符号の復号回路 |
JP2008242034A (ja) * | 2007-03-27 | 2008-10-09 | Japan Aerospace Exploration Agency | データ圧縮/伸張と暗号化/復号と誤り制御とを行う統合符号化及び復号装置、並びに方法 |
JP2014078945A (ja) * | 2012-10-10 | 2014-05-01 | Hgst Netherlands B V | 縮退故障を有するメモリセルに対応するためのデータ符号化及び復号化 |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP5957120B1 (ja) * | 2015-05-12 | 2016-07-27 | 日本電信電話株式会社 | 秘密分散方法、秘密分散システム、分散装置、およびプログラム |
Also Published As
Publication number | Publication date |
---|---|
US10511330B2 (en) | 2019-12-17 |
EP3297171A4 (en) | 2018-12-19 |
WO2016181992A1 (ja) | 2016-11-17 |
CN107534449A (zh) | 2018-01-02 |
JP2016213730A (ja) | 2016-12-15 |
US20180138925A1 (en) | 2018-05-17 |
EP3297171B1 (en) | 2020-05-13 |
CN107534449B (zh) | 2020-11-24 |
EP3297171A1 (en) | 2018-03-21 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP5957120B1 (ja) | 秘密分散方法、秘密分散システム、分散装置、およびプログラム | |
JP5918884B1 (ja) | 復号装置、復号方法、およびプログラム | |
JP5872085B1 (ja) | 分散値変換システム、分散値変換装置、分散値変換方法、およびプログラム | |
Banegas et al. | DAGS: Key encapsulation using dyadic GS codes | |
KR102075848B1 (ko) | 다항식 연산 최적화 처리 장치, 다항식 연산 최적화 처리 방법 및 기록매체 | |
JP5269936B2 (ja) | 符号化器及び記憶装置 | |
WO2016050323A1 (en) | Method and device for calculating a crc code in parallel | |
US20190146878A1 (en) | Converting a data chunk into a ring algebraic structure for fast erasure coding | |
US10110258B2 (en) | Accelerated erasure coding for storage systems | |
JP5927323B1 (ja) | 行列作用装置、行列作用方法、およびプログラム | |
CN106796765B (zh) | 非减序列判定装置、非减序列判定方法以及记录介质 | |
WO2019214266A1 (zh) | 计算crc编码的方法和装置 | |
KR20230078510A (ko) | 동형 암호 연산 장치 및 방법 | |
CN110990776B (zh) | 编码分布式计算方法、装置、计算机设备及存储介质 | |
KR101923116B1 (ko) | 분산 저장 시스템에서 부분접속 복구 부호를 이용하는 부호화/복호화 장치 및 방법 | |
Raviv | Asymptotically optimal regenerating codes over any field | |
US10171109B2 (en) | Fast encoding method and device for Reed-Solomon codes with a small number of redundancies | |
JP2014021237A (ja) | 縮約装置、縮約方法、およびプログラム | |
KR101626743B1 (ko) | 유한체상의 몽고메리 알고리즘을 이용한 곱셉기 및 곱셈 방법 | |
Hafeez et al. | TMVP-based Polynomial Convolution for Saber and Sable on GPU using CUDA-cores and Tensor-cores | |
CN116301710A (zh) | 数据处理方法及装置 | |
JP5755609B2 (ja) | 演算装置、その方法およびプログラム | |
Rian et al. | An Investigation of Quaternary [5, 3] Error Correcting Codes and their Implementation with Binary Devices. |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
TRDD | Decision of grant or rejection written | ||
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20160329 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20160408 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 5918884 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 |