(Translated by https://www.hiragana.jp/)
ストリーム暗号 - Wikipedia コンテンツにスキップ

ストリーム暗号あんごう

出典しゅってん: フリー百科ひゃっか事典じてん『ウィキペディア(Wikipedia)』

ストリーム暗号あんごう(ストリームあんごう、stream cipher)とは、平文へいぶんビット単位たんいバイト単位たんい逐次ちくじ暗号あんごうする暗号あんごうである。平文へいぶんを64ビットや128ビットなどの固定こていちょうのブロックに分割ぶんかつして暗号あんごうするブロック暗号あんごう対比たいひしたかたりである。その構成こうせいじょう入力にゅうりょく逐次ちくじ追加ついかされるデータであった場合ばあい、ブロック暗号あんごう入力にゅうりょくがブロックサイズにたっするまでまらないと処理しょりすすめることができないのにたいし、ストリーム暗号あんごうはその必要ひつようがないのが特徴とくちょうである。

概要がいよう

[編集へんしゅう]

ストリーム暗号あんごうは、かぎストリーム(key stream)を生成せいせいするかぎストリーム生成せいせいと、かぎストリームと平文へいぶん結合けつごうする結合けつごう構成こうせいされる。典型てんけいてきには、共通きょうつうかぎ方式ほうしきにおいて、あるかぎ初期しょきとして擬似ぎじ乱数らんすうれつ生成せいせいし、平文へいぶんとの排他はいたてき論理ろんり (XOR、) によって暗号あんごうぶんつくる。復号ふくごうには、おなかぎおな初期しょき)から生成せいせいした擬似ぎじ乱数らんすうれつ暗号あんごうぶんとの排他はいたてき論理ろんりによって平文へいぶんる。

ストリーム暗号あんごうおおくは擬似ぎじ乱数らんすうをデータに先行せんこうして生成せいせいできるので時間じかんすくない。また、ブロック暗号あんごうでは平文へいぶんがブロックサイズの整数せいすうばいではない場合ばあいにパディング処理しょり必要ひつようになるが、ストリーム暗号あんごうではこれが不要ふようであり、つね平文へいぶんのサイズと暗号あんごうぶんのサイズがひとしくなる。処理しょり遅延ちえんすくないことやデータサイズが増加ぞうかしないことは通信つうしんなどに利用りようする場合ばあいにメリットとなりうる。

暗号あんごう利用りようモードのOFB, CFB, CTRなどでブロック暗号あんごう利用りようするとストリーム暗号あんごう構成こうせいできるので、ストリーム暗号あんごう専用せんようのアルゴリズムは、ブロック暗号あんごうくらべてなにかしらのてん特長とくちょう(メリット)がなければ開発かいはつする意味いみがない。たとえば、近年きんねんAES採択さいたく以降いこう)はAESを利用りようする場合ばあいよりも高速こうそくであることをアピールすることがおおい。

ソフトウェアでの、1ビットまたは1バイト単位たんいあつかうというナイーブな実装じっそうでは性能せいのうわるくなりがちになる。そのため、ある程度ていどまとめてあつかうように変形へんけいされることもおおいことから、それを前提ぜんていとして、MUGIのようにいち処理しょりで64ビットといったサイズのかぎストリームを出力しゅつりょくし、まとめて暗号あんごう処理しょりすることを考慮こうりょれたアルゴリズムが提案ていあんされている。

ストリーム暗号あんごう安全あんぜんせいについての研究けんきゅうはブロック暗号あんごうくらべておくれている。安全あんぜんせい評価ひょうか手法しゅほう研究けんきゅうにはなが時間じかんようするので、ブロック暗号あんごうもとづくストリーム暗号あんごう利用りようすべきとの意見いけんもある。ブロック暗号あんごうをCTRモードで利用りようした場合ばあい、ブロック暗号あんごう擬似ぎじランダム置換ちかんであれば、計算けいさん量的りょうてき安全あんぜんである。

構造こうぞう

[編集へんしゅう]

かぎストリーム生成せいせいは、128ビット程度ていど秘密ひみつかぎもちいて擬似ぎじ乱数らんすう生成せいせいする。通常つうじょうのストリーム暗号あんごう共通きょうつうかぎ方式ほうしきであるが、非対称ひたいしょうかぎ方式ほうしきのストリーム暗号あんごう提案ていあんされている。擬似ぎじ乱数らんすうではなくしん乱数らんすう利用りようする場合ばあいもある。また、一度いちど使用しようしたかぎストリームをさい使用しようしないように制御せいぎょする必要ひつようがあるので、平文へいぶんごとにことなる初期しょき (初期しょきベクトル, IV) を使用しようする。IVは乱数らんすうかカウンタでつくる。

かぎストリーム生成せいせい方法ほうほうには、専用せんようのアルゴリズムによるものと、ブロック暗号あんごうもとにした生成せいせい方法ほうほうとがある。専用せんようアルゴリズムによるかぎストリーム生成せいせいは、フィードバックシフトレジスタにもとづくものがおおい。フィードバックシフトレジスタはシフトレジスタとフィードバック関数かんすう構成こうせいされる。

フィードバックの構成こうせい方法ほうほうには、暗号あんごうぶんかぎストリームにフィードバックしない方式ほうしき同期どうきしき外部がいぶ同期どうき)と、フィードバックする方式ほうしき非同期ひどうきしき自己じこ同期どうき)がある。方式ほうしきによって、暗号あんごうぶんにビットエラーがしょうじたときのエラーの伝播でんぱことなる。

同期どうきしき (Synchronous stream cipher)
送信そうしんがわ受信じゅしんがわ両方りょうほうで、平文へいぶん暗号あんごうぶんとは独立どくりつしてかぎシーケンスを生成せいせいする。この方式ほうしきにはビットあやまりが発生はっせいしたときにのビットにあやまりが波及はきゅうしないという特長とくちょうがある。しかし、攻撃こうげきしゃ暗号あんごうぶん操作そうさ(たとえばビット反転はんてん)すると平文へいぶん変更へんこうできてしまうというデメリットでもある。場合ばあいによってはMACなどのメッセージ認証にんしょう必要ひつようとする。また、同期どうきがずれた場合ばあいにはさい同期どうき仕組しくみが別途べっと必要ひつようとなることから外部がいぶ同期どうきしきともいう。
非同期ひどうきしき (asynchronous stream cipher)
自己じこ同期どうきしき(Self-synchronising stream cipher)ともいい、同期どうきがずれたときでも自動的じどうてきさい同期どうきできるメリットがある。1ビットのあやまりがのビットにも波及はきゅうしてあやまりが拡大かくだいするというデメリットもある。しかし、ビットあやまりが発生はっせいしてもレジスタちょうだけ経過けいかすれば送信そうしんがわ受信じゅしんがわのレジスタ一致いっちし、同期どうき自動的じどうてき回復かいふくさせることができる。非同期ひどうきしきれいとして暗号あんごう利用りようモードの CFB がある。

結合けつごうは、典型てんけいてきにはXORなどで平文へいぶんかぎストリームを結合けつごうする。理論りろんてきには、暗号あんごうぶん原文げんぶんあるいはかぎストリームの痕跡こんせきあらわれず、なんらかのぎゃく関数かんすう存在そんざいするような可逆かぎゃく関数かんすうであればXOR以外いがいでもかまわないが、基本きほんてきには強度きょうど変化へんかするなどということはないのであまり意味いみはない。

かぎストリーム生成せいせい結合けつごうべつ装置そうちにした場合ばあい前者ぜんしゃ安全あんぜん保管ほかん運用うんようする必要ひつようがあるが、後者こうしゃ通信つうしん装置そうちむことが可能かのうになる。暗号あんごう装置そうち通信つうしん装置そうち結合けつごうするさいには注意ちゅうい必要ひつようなので、これを省略しょうりゃくできることはメリットとなる。

種類しゅるい

[編集へんしゅう]

ここでは、使用しようする擬似ぎじ乱数らんすうれつ生成せいせいのタイプべつ種類しゅるいけする。

擬似ぎじ乱数らんすうれつ生成せいせいとして、線形せんけい帰還きかんシフトレジスタ (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

その

[編集へんしゅう]

ストリーム暗号あんごうよう設計せっけいされたもの

[編集へんしゅう]

RC4やSEAL(en:SEAL (cipher) )、Salsa20(ChaCha20)など。

暗号あんごうろんてき擬似ぎじ乱数らんすう生成せいせい

[編集へんしゅう]

一般いっぱんてき暗号あんごうろんてき擬似ぎじ乱数らんすうれつ生成せいせい使つかうこともある(一般いっぱんてきには計算けいさんりょうてん利点りてんいが、部分ぶぶんによりおも計算けいさんがあるなど、それが問題もんだいにならない場合ばあいたとえば en:Blum–Goldwasser cryptosystem内部ないぶに、Blum-Blum-Shub利用りようするストリーム暗号あんごう、という構造こうぞうふくまれている)。

カオスもとづく擬似ぎじ乱数らんすう生成せいせい利用りよう提案ていあんされている(梅野うめのけん提案ていあんによる「Vector Stream Cipher(VSC)」など)。

用途ようと

[編集へんしゅう]

ストリーム暗号あんごうは、平文へいぶんがいつなにバイト発生はっせいするか確定かくていなアプリケーションによく採用さいようされる。たとえば、音声おんせい暗号あんごう秘話ひわ)などの秘匿ひとく通信つうしんである。

ウェブブラウザ使用しようされる暗号あんごう通信つうしんSSL暗号あんごう方式ほうしきとしてRC4が (オプションとして) 採用さいようされている。無線むせんLAN (WEP,WPA) でもRC4が使用しようされる。に、携帯けいたい電話でんわようA5/1, A5/2 などがある。

標準ひょうじゅん

[編集へんしゅう]

暗号あんごう標準ひょうじゅんとして採用さいよう(または推奨すいしょう)されているストリーム暗号あんごうにはつぎのものがある。

  • OFB, CFB, CTR - ISO/IEC_18033(ブロック暗号あんごう利用りようモード)
  • SNOW 2.0 - ISO/IEC_18033
  • MUGI - ISO/IEC_18033, CRYPTREC
  • MULTI-SO1 - ISO/IEC_18033 (MOF), CRYPTREC
  • RC4 - RFC 2246 (TLS), WEP, WPA, CRYPTREC (128bit-RC4だけ)
  • KCipher-2 - ISO/IEC 18033, CRYPTREC
  • ChaCha20 - RFC 7539

安全あんぜんせい

[編集へんしゅう]

かぎストリームの重複じゅうふく使用しよう危険きけんせい

[編集へんしゅう]

ストリーム暗号あんごうは、かぎストリームを重複じゅうふくして使用しようしないことを前提ぜんていとした暗号あんごうアルゴリズムである。そのコンセプトは、かぎストリームとして推測すいそく不可能ふかのう乱数らんすうれつ想定そうていしているバーナム暗号あんごうおなじである。ストリーム暗号あんごうは、平文へいぶんごとにことなる初期しょきベクトル (IV) を使用しようする必要ひつようがあるが、IVが重複じゅうふくして設定せっていされた場合ばあいかぎストリームも重複じゅうふくして使用しようされることとなるため、その危険きけんせい以下いかれいとしてしめす。

平文へいぶんメッセージかぎストリームから暗号あんごうぶんメッセージ生成せいせいする場合ばあいつぎしき表現ひょうげんできる。

つぎに、ことなる平文へいぶんメッセージかぎストリーム重複じゅうふくして使用しよう)から暗号あんごうぶんメッセージ生成せいせいする場合ばあいは、つぎしきとなる。

ここで、暗号あんごう解読かいどくしゃ暗号あんごうぶんメッセージ暗号あんごうぶんメッセージ入手にゅうしゅしたという前提ぜんていとする。このとき

となるため、暗号あんごう解読かいどくしゃ暗号あんごうぶんメッセージ排他はいたてき論理ろんりをとったもとめると、平文へいぶんメッセージ排他はいたてき論理ろんりることができる。

かりに、平文へいぶんメッセージ全部ぜんぶまた一部いちぶ暗号あんごう解読かいどくしゃられていた場合ばあいたとえば、文末ぶんまつかならず「ハイルヒトラー」が記載きさいされているひとし)、暗号あんごう解読かいどくしゃ平文へいぶんメッセージ内容ないよう推定すいていするためのがかりをあたえることになる。

なお、ブロック暗号あんごう場合ばあいも、暗号あんごう利用りようモードのOFB, CFB, CTRを利用りようするとストリーム暗号あんごう構成こうせいできるので、同様どうよう危険きけんせいしょうじる。

ストリーム暗号あんごう安全あんぜんせい条件じょうけん

[編集へんしゅう]

ストリーム暗号あんごう安全あんぜんせい条件じょうけんとして、つぎの5項目こうもくがあげられる。

  • 統計とうけいてき乱数らんすうせい
  • 非線形ひせんけいせい
  • 相関そうかんせい
  • ちょう周期しゅうきせい
  • 線形せんけい複雑ふくざつ(linear complexity)

かぎストリーム生成せいせいは、通常つうじょう内部ないぶ状態じょうたい記憶きおくするレジスタがあり、レジスタちょう安全あんぜんせい上限じょうげんひとつとなる。レジスタの初期しょきめる秘密ひみつかぎながさも安全あんぜんせい上限じょうげんめる。(これらのながさは安全あんぜんせい上限じょうげんめるのであって下限かげんではない。)

安全あんぜんせい根拠こんきょ

  • かぎストリームとして、擬似ぎじ乱数らんすうではなくいわゆるしん乱数らんすう使用しようし、一度いちど使用しようした乱数らんすうれつ絶対ぜったいさい使用しようしないワンタイムパッドとして運用うんようした場合ばあい情報じょうほう理論りろんてき安全あんぜんせいをもつ。しかし、平文へいぶんおなながさの乱数らんすうれつ事前じぜん生成せいせいして共有きょうゆうしておく必要ひつようがあるなど、運用うんようてき高価こうかでありひろくは採用さいようされていない。
  • かぎストリーム生成せいせいにブロック暗号あんごう部品ぶひんとして使用しようし、ストリーム暗号あんごう安全あんぜんせいをブロック暗号あんごう安全あんぜんせい帰着きちゃくさせるものがある。
  • ブロック暗号あんごうのCTRモードは、ブロック暗号あんごう擬似ぎじランダム関数かんすうとみなせるのならば計算けいさん量的りょうてき安全あんぜんせいをもつが、誕生たんじょうのパラドックスからブロックちょう nたいして ブロック程度ていど出力しゅつりょく自然しぜん乱数らんすう識別しきべつ可能かのうである。

歴史れきし

[編集へんしゅう]

排他はいたてき論理ろんりXOR)をとる、という構造こうぞうバーナム暗号あんごうそのものとえるが、バーナム暗号あんごう情報じょうほう理論りろん発達はったつ以前いぜんということもあり(一般いっぱんにバーナム暗号あんごうげん文献ぶんけんとされる特許とっきょ明細めいさいでは)乱数らんすうれつ生成せいせいほうについて、明確めいかく定義ていぎされていない。

自己じこ同期どうきしきのストリーム暗号あんごうは、ブレーズ・ド・ヴィジュネルが考案こうあんしている。

参考さんこう文献ぶんけん

[編集へんしゅう]
  • Thomas Beth, Fred Piper, "The Stop-and-Go Generator", EUROCRYPT'1984, pp. 88-92.

関連かんれん項目こうもく

[編集へんしゅう]