Deprecated: The each() function is deprecated. This message will be suppressed on further calls in /home/zhenxiangba/zhenxiangba.com/public_html/phproxy-improved-master/index.php on line 456
LFSRとは何? わかりやすく解説 Weblio辞書
[go: Go Back, main page]

LFSRとは? わかりやすく解説

線形帰還シフトレジスタ

(LFSR から転送)

出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2026/01/31 13:49 UTC 版)

線形帰還シフトレジスタ(せんけいきかんシフトレジスタ、: linear feedback shift register, LFSR)は、入力ビットが直前の状態の線形写像になっているシフトレジスタである。

値域が単一のビットとなる線形写像は、XORおよびXORの否定だけである。したがって、線形帰還シフトレジスタとは、その値を構成するビット列の一部の排他的論理和を入力ビットとするシフトレジスタである。

LFSR の初期値をシードと呼ぶ。レジスタの動作は決定的であるため、レジスタが生成する値の列はその状態によって完全に決定される。同様に、レジスタの取りうる状態は有限個であるため、最終的に周期的動作になる。しかし、帰還関数をうまく設定したLFSRは乱数のようなビット列を生成し、その周期も非常に長い。

LFSRの用途としては、擬似乱数生成、擬似ノイズ生成、高速デジタルカウンタ、白色化などがある。LFSR にはハードウェアによる実装もソフトウェアによる実装もある。

フィボナッチ LFSR

16ビットのフィボナッチLFSR。タップ番号を黒で示しており、それが多項式の項に対応する。これは最長LFSRであり、全て0の状態以外の65535個の状態遷移をする。図示されている状態 ACE1(16進)の後は 5670 となる。

LFSRで、次の入力ビットに影響を与えるビットを「タップ (tap)」と呼び、それらの位置を列挙したものをタップシーケンスと呼ぶ。図では、タップシーケンスが [16, 14, 13, 11, 0] である。タップは順次XORされ、その結果が左端にフィードバックされる。

  • 入力に影響する出力を「タップ」と呼ぶ(図では黒)。
  • 最長LFSRはM系列を生成する。最長LFSRとは、全ビットがゼロという状態以外の全てのとりうる状態(
    16ビットのガロアLFSR。黒い番号は上のフィボナッチLFSRと同じ多項式の項に対応しているが、シフト方向が逆である点に注意。このレジスタも全て0状態以外の65535個の最長の状態遷移をする。図に示されている ACE1 の状態の次は E270 となる(16進)。

    通常のLFSRと同じ出力シーケンスを得るには、ビット順序を逆にする(図参照)。そうしないとシーケンスが逆転する。なお、LFSRの内部状態は同じである必要はない。図に示したガロアLFSRは、上の図で示したフィボナッチLFSRと同じ出力となる。

    • ガロアLFSRでは、全タップの値を使って入力を生成するわけではなく、XORは個別に各タップ位置で行われる。つまり、XOR演算を並列に実行でき、高速化が可能である。
    • ソフトウェアで実装すると、ワード全体のビット演算で一度にXORできるので、さらに効率的な実装になる。

    以下は32ビットの最長ガロアLFSRをC言語およびC++で実装したものである(unsigned int は32ビットと仮定)。

            unsigned int lfsr = 1;
            unsigned int period = 0; 
            do {
                    lfsr = (lfsr >> 1) ^ (-(lfsr & 1u) & 0xd0000001u); /* taps 32 31 29 1 */
                    ++period;
            } while(lfsr != 1u);
    

    次のコードは、図にある16ビットの例である。

            unsigned short lfsr = 0xACE1u;
            unsigned int period = 0; 
            do {
                    lfsr = (lfsr >> 1) ^ (-(short)(lfsr & 1u) & 0xB400u); 
                    ++period;
            } while(lfsr != 0xACE1u);
    

    最長LFSRとなる多項式の例

    ビット数 帰還多項式 周期
    n
    4 15
    5 31
    6 63
    7 127
    8 255
    9 511
    10 1023
    11 2047
    12 4095
    13 8191
    14 16383
    15 32767
    16 65535
    17 131071
    18 262143
    19 524287
    25 to 168 [1]

    出力ストリームの特性

    • 1と0は連続して出現することがある。例えば、出力ストリーム 0110100 は5つの連続から構成されていると見ることができ、その長さは順に 1,2,1,1,2 である。最長LFSRの1周期には 個の連続が出現する(例えば、6ビットのLFSRでは32個の連続がある)。そのうち は長さが1、 は長さが2ビットで、0の最長の連続は ビットであり、1の最長の連続は ビットが1回だけある。これは真の乱数の統計的特性と全く同じである。
    • LFSRの出力ストリームは決定的である。現在の状態を知っていれば、次の状態を正確に予測できる。これは真に無作為な事象にはない特徴である。
    • 出力ストリームは両方向である。最長LFSRとなるタップシーケンスが2つある場合、両者の状態遷移は逆順序になる。

    用途

    LFSRはハードウェアでも実装できるため、高速な擬似乱数生成が必要な場面で便利である(直接シーケンス・スペクトラム拡散無線通信など)。

    レーダーは、LFSRを使って送信波と受信波の時間差を測定し、反射体までの距離を判定するものがある。グローバル・ポジショニング・システムは、LFSRを使って高精度な相対時間オフセットを示すシーケンスを高速に転送する。ファミリーコンピュータはサウンドシステムの一部としてLFSRを装備している([2])。

    カウンタとしての利用

    コンピュータのインデックスやフレーム指示位置は機械可読である必要がある。そこで順に増えていく2進数でなくてもよい場合、LFSRの周期的シーケンスを分周器やカウンタとして使うことができる。LFSRカウンタは、通常の2進カウンタやグレイコードカウンタよりもフィードバック論理回路が単純で、より高速に動作させることができる。ただし、LFSR全体が0にならないよう保証する必要があり、例えば初期状態のプリセットが必要である。上の表はLFSRの最長周期が記してある。必要な周期よりも長い周期のLFSRに状態をスキップする論理回路を付加することで、任意の周期のカウンタを得ることができる。

    暗号での利用

    LFSRは、(特に軍事用途で)ストリーム暗号擬似乱数生成器として使われてきた。これは機械式でも電子回路でも構成が簡単で、周期が長く分布が一様なためである。しかし、LFSRは線形システムであるため、暗号解読は比較的容易である。平文と対応する暗号文がわかっているとき、システムの使用するLFSRの出力を再現でき、Berlekamp–Masseyアルゴリズムを使って最小サイズのLFSRを構築でき、容易に暗号文を復号できるようになる。

    LFSRに基づく暗号におけるこのような問題への対策として、一般に以下の3つの手法がある。

    • LFSRの状態のうち、一部のビット非線形に組み合わせて使う。
    • 2つ以上のLFSRの出力を非線形に組み合わせて使う。
    • LFSRのクロックを不定間隔で進める(alternating step generator)。

    LFSRに基づくストリーム暗号としては、GSM携帯電話で使っている A5/1 や A5/2、Bluetooth で使っている E0、shrinking generator などがある。A5/2 は既に破られており、A5/1 と E0 も非常に弱いと言われている。LTEの暗号アルゴリズムUEA2,UIA2で使用されているストリーム暗号 SNOW 3Gも、LFSRを利用している。[1]

    デジタル放送/通信での利用

    0や1が連続すると、シンボルの区切りがわからなくなる危険性があるため、線形帰還シフトレジスタを使ってビットストリームを無作為化することが多い。この無作為化は受信側で復調後に除去される。LFSRと転送シンボルストリームが同じレートで動作する場合、この技法をスクランブリングと呼ぶ。LFSRの方がシンボルストリームよりずっと高速に動作し、信号送信時の帯域幅を拡張させる場合、これを直接シーケンス・スペクトラム拡散と呼ぶ。

    LFSRによるスクランブリングは暗号化ではなく、解読には、一般的な暗号において必要な困難は全く無い。

    LFSRを使っているデジタル放送システム:

    • ATSC (北米)
    • DAB (デジタルラジオ)
    • DVB-T (ヨーロッパ、オーストラリア)
    • NICAM (イギリスなどのテレビ用デジタル音声システム)

    その他のLFSRを使っているデジタル通信システム:

    脚注

    関連項目

    外部リンク


LFSR

出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2022/05/01 15:29 UTC 版)

ストリーム暗号」の記事における「LFSR」の解説

擬似乱数列生成器として、線形帰還シフトレジスタ (LFSR; Linear Feedback Shift Register) を用いた方法知られている。LFSRはハードウェア用いて容易に実装することができる。しかし、LFSRは数学的に容易に解析可能であるため、そのまま暗号使用することは推奨されない相関攻撃 (Correlation attack) の餌食となる。非線形FSRを使うものもある(NFSR; Nonlinear Feedback Shift Register)。 コンバイナ型:複数のLFSRを非線形関数結合した方式 フィルタ型:LFSRの全状態をFilter入れ方式。 例:よく研究対象にされている方式としてTOYOCRYPTがある。 クロック制御型:LFSRを非連続的動作させる方式一つのLFSRを他のLFSRのクロック制御する。 例:ベス&パイパーによる stop-and-go generator (Beth and Piper, 1984)、GSM音声暗号化使っているA5/1

※この「LFSR」の解説は、「ストリーム暗号」の解説の一部です。
「LFSR」を含む「ストリーム暗号」の記事については、「ストリーム暗号」の概要を参照ください。

ウィキペディア小見出し辞書の「LFSR」の項目はプログラムで機械的に意味や本文を生成しているため、不適切な項目が含まれていることもあります。ご了承くださいませ。 お問い合わせ


英和和英テキスト翻訳>> Weblio翻訳
英語⇒日本語日本語⇒英語
  

辞書ショートカット

すべての辞書の索引

「LFSR」の関連用語

LFSRのお隣キーワード
検索ランキング

   

英語⇒日本語
日本語⇒英語
   



LFSRのページの著作権
Weblio 辞書 情報提供元は 参加元一覧 にて確認できます。

   
ウィキペディアウィキペディア
All text is available under the terms of the GNU Free Documentation License.
この記事は、ウィキペディアの線形帰還シフトレジスタ (改訂履歴)の記事を複製、再配布したものにあたり、GNU Free Documentation Licenseというライセンスの下で提供されています。 Weblio辞書に掲載されているウィキペディアの記事も、全てGNU Free Documentation Licenseの元に提供されております。
ウィキペディアウィキペディア
Text is available under GNU Free Documentation License (GFDL).
Weblio辞書に掲載されている「ウィキペディア小見出し辞書」の記事は、Wikipediaのストリーム暗号 (改訂履歴)の記事を複製、再配布したものにあたり、GNU Free Documentation Licenseというライセンスの下で提供されています。

©2026 GRAS Group, Inc.RSS