「Sponge function」の版間の差分

提供: tezos-wiki
移動先: 案内検索
(1版 をインポートしました)
 
1行目: 1行目:
[[Image:SpongeConstruction.svg|thumb|upright=1.35|right|alt=Illustration of the sponge construction |The sponge construction for hash functions. p<sub>i</sub> are blocks of the input string, z<sub>i</sub> are hashed output blocks.]]
+
[[Image:SpongeConstruction.svg | thumb | upright = 1.35 | right | alt =スポンジ構造のイラスト|ハッシュ関数のスポンジ構造。 p&lt; sub&gt;&lt; sub&gt;は入力ストリングのブロックであり、z <sub> i </ sub>は入力ストリングのブロックである。ハッシュされた出力ブロックです。]]
In [[cryptography]], a '''sponge function''' or '''sponge construction''' is a class of [[algorithm]]s with finite [[state (computer science)|internal state]] that take an input [[bit stream]] of any length and produce an output bit stream of any desired length. Sponge functions have both theoretical and practical uses. They can be used to model or implement many [[cryptographic primitive]]s, including [[cryptographic hash]]es, [[message authentication codes]], [[mask generation function]]s, [[stream cipher]]s, [[pseudo-random number generator]]s and [[authenticated encryption]].
+
[[暗号]]において、スポンジ関数 '' '' ''スポンジ構築 '' 'は有限[[状態(コンピュータ科学)|内部状態]を持つ[[アルゴリズム]]のクラスです。任意の長さの入力[[ビットストリーム]]を取り、任意の所望の長さの出力ビットストリームを生成する。スポンジ機能は、理論的にも実用的にも使用できます。それらは、[[暗号化ハッシュ]][[メッセージ認証コード]][[マスク生成関数]][[ストリーム暗号]]などを含む多くの[[暗号プリミティブ]]をモデル化または実装するために使用できます、[[疑似乱数発生器]][[認証された暗号化]]
  
==Construction==
+
==構成==
A sponge function is built from three components:
+
スポンジ機能は3つのコンポーネントで構成されています。
  
* a state memory, ''S,'' containing ''b'' bits,
+
* "b"ビットを含む状態メモリ、 "S"、および "
* a function, ''f'', of fixed length that permutes or transforms the state memory
+
*固定長の関数 "'' '' 'は、状態メモリを置換または変換する
* a padding function ''P''
+
*パディング関数 '' P ''
  
The state memory is divided into two sections: one of size ''r'' (the bitrate) and the other of size ''c'' (the capacity). These sections are denoted ''R'' and ''C'' respectively.
+
状態メモリは、サイズ "r"(ビットレート)とサイズ "c"(容量)の2つのセクションに分かれています。これらのセクションは、それぞれ「R」および「C」と表示されています。
  
The padding function appends enough bits to the input string so that the length of the padded input is a whole multiple of the bitrate, ''r.'' The padded input can thus be broken into ''r''-bit blocks.
+
padding関数は、入力文字列に十分なビットを追加して、padded入力の長さがビットレート "r"の倍数になるようにします。したがって、padded入力を "r"ビットブロックに分割することができます。
  
===Operation===
+
===操作===
  
The sponge function operates as follows:
+
スポンジ機能は次のように動作します。
  
*The state ''S'' is initialized to zero
+
*状態 "S"はゼロに初期化されます
*The input string is padded. This means the input p is transformed into blocks of ''r'' bits using the padding function P.
+
*入力文字列にはパディングがあります。これは、入力pがパディング関数Pを用いて「r」ビットのブロックに変換されることを意味する。
*R is XORed with the first ''r''-bit block of padded input
+
* Rはパディングされた入力の最初の '' r ''ビットブロックとXORされます
*S is replaced by ''f''(S)
+
* Sは "f"(S)に置き換えられます。
*R is XORed with the next ''r''-bit block of padded input (if any)
+
* Rは、次の '' r ' - パディングされた入力のビットブロック(存在する場合)とXORされます。
*S is replaced by ''f''(S)
+
* Sは "f"(S)に置き換えられます。
*
+
* ...
  
The process is repeated until all the blocks of the padded input string are used up ("absorbed" in the [[Sponge (material)|sponge]] metaphor).
+
パッディングされた入力文字列のすべてのブロックが使い尽くされるまで([スポンジ(マテリアル)|スポンジ]メタファーで吸収されるまで)、プロセスが繰り返されます。
  
The sponge function output is now ready to be produced ("squeezed out") as follows:
+
これでスポンジ機能の出力は次のように生成されます(「スクイーズアウト」)。
*The R portion of the state memory is the first ''r'' bits of output
+
*状態メモリのR部分は出力の最初の「r」ビットです
* If more output bits are desired, S is replaced by ''f''(S)
+
*より多くの出力ビットが必要な場合、Sは "f"(S)に置き換えられます。
*The R portion of the state memory is the next ''r'' bits of output
+
*状態メモリのR部分は出力の次の「r」ビットです
*
+
* ...
  
The process is repeated until the desired number of output bits are produced. If the output length is not a multiple of ''r'' bits, it will be truncated.
+
このプロセスは、所望の数の出力ビットが生成されるまで繰り返される。出力の長さが '' r ''ビットの倍数でない場合は、切り捨てられます。
  
Another metaphor describes the state memory as an "[[entropy pool]]", with input "poured into" the pool, and the transformation function referred to as "stirring the entropy pool".
+
もう1つのメタファーは、入力メモリがプールに注ぎ込まれ、変換関数が「エントロピープールを攪拌する」と呼ばれる状態メモリを "[[エントロピープール]]"として記述します。
  
Note that input bits are never XORed into the C portion of the state memory, nor are any bits of C ever output directly. The extent to which C is altered by the input depends entirely on the transformation function ''f.'' In hash applications, resistance to [[Collision attack|collision]] or [[preimage attack]]s depends on C, and its size, the "capacity" ''c,'' is typically twice the desired resistance level.
+
入力ビットは決して状態メモリのC部分にXORされず、Cのビットも直接出力されないことに注意してください。ハッシュ・アプリケーションでは、[[Collision attack | collision]]または[[preimage attack]]に対する耐性はCに依存し、その値はCに依存します。 「容量」「c」は、典型的には所望の抵抗レベルの2倍である。
  
===Duplex construction===
+
===デュプレックス構成===
  
It is also possible to absorb and squeeze in an alternating fashion. This operation is called the duplex construction or duplexing. It can be the basis of a single pass authenticated encryption system.
+
交互に吸収し、絞ることも可能である。この操作は、二重化構成または二重化と呼ばれます。これは、シングルパスで認証された暗号化システムの基礎となることができます。
  
*The state ''S'' is initialized to zero
+
*状態 "S"はゼロに初期化されます
*R is XORed with the first ''r''-bit block of the input
+
* Rは入力の最初の '' r ''ビットブロックとXORされます
*S is replaced by ''f''(S)
+
* Sは "f"(S)に置き換えられます。
*R is now the first ''r'' bits of the output.
+
* Rは出力の最初の「r」ビットになりました。
*R is XORed with the next ''r''-bit block of the input
+
* Rは次の '' r '' - 入力のビットブロックとXORされます
*S is replaced by ''f''(S)
+
* Sは "f"(S)に置き換えられます。
*R is now the next ''r'' bits of the output.
+
* Rは出力の次の「r」ビットになりました。
*
+
* ...
  
===Overwrite mode===
+
===上書きモード===
  
It is possible to omit the xor operations during absorption, while still maintaining the chosen [[security level]].
+
選択した[セキュリティレベル]を維持しながら、吸収中のxor演算を省略することは可能です。
  
The sponge construction can also be used to build practical cryptographic primitives. For example, [[Keccak]] is a cryptographic sponge with a 1600-bit state. It has been selected by [[NIST]] as the winner in the [[SHA-3 competition]]. The strength of Keccak derives from the intricate, multi-round permutation ''f'' that its authors developed. The [[RC4]]-redesign called [[Spritz (cipher)|Spritz]] refers to the sponge-construct to define the algorithm.
+
スポンジ構造はまた、実用的な暗号プリミティブを構築するために使用することができる。たとえば[[Keccak]]は1600ビットの状態の暗号スポンジです。 [[SHA-3大会]]の勝者として[[NIST]]によって選ばれました。 Keccakの強みは、著者が開発した複雑で多元的なパーミュテーション "f"に由来しています。 [[Spritz(cipher)| Spritz]と呼ばれる[[RC4]] - 再設計とは、アルゴリズムを定義するスポンジ構造を指します。
  
For another example, a sponge function can be used to build [[authenticated encryption]] with associated data (AEAD).&lt;ref name="Rivest2014"/&gt;
+
別の例として、スポンジ機能を使用して関連するデータ(AEAD)で[[認証された暗号化]]を構築することができます。&lt; ref name = "Rivest2014" /&gt;
  
==Source==
+
==ソース==
  
 
[http://wikipedia.org/ http://wikipedia.org/]
 
[http://wikipedia.org/ http://wikipedia.org/]

2018年4月13日 (金) 12:47時点における最新版

thumb | upright = 1.35 | right | alt =スポンジ構造のイラスト|ハッシュ関数のスポンジ構造。 p&lt; sub&gt;&lt; sub&gt;は入力ストリングのブロックであり、z i </ sub>は入力ストリングのブロックである。ハッシュされた出力ブロックです。 暗号において、スポンジ関数 スポンジ構築 'は有限[[状態(コンピュータ科学)|内部状態]を持つアルゴリズムのクラスです。任意の長さの入力ビットストリームを取り、任意の所望の長さの出力ビットストリームを生成する。スポンジ機能は、理論的にも実用的にも使用できます。それらは、暗号化ハッシュメッセージ認証コードマスク生成関数ストリーム暗号などを含む多くの暗号プリミティブをモデル化または実装するために使用できます、疑似乱数発生器認証された暗号化

構成[編集]

スポンジ機能は3つのコンポーネントで構成されています。

  • "b"ビットを含む状態メモリ、 "S"、および "
  • 固定長の関数 " 'は、状態メモリを置換または変換する
  • パディング関数 P

状態メモリは、サイズ "r"(ビットレート)とサイズ "c"(容量)の2つのセクションに分かれています。これらのセクションは、それぞれ「R」および「C」と表示されています。

padding関数は、入力文字列に十分なビットを追加して、padded入力の長さがビットレート "r"の倍数になるようにします。したがって、padded入力を "r"ビットブロックに分割することができます。

操作[編集]

スポンジ機能は次のように動作します。

  • 状態 "S"はゼロに初期化されます
  • 入力文字列にはパディングがあります。これは、入力pがパディング関数Pを用いて「r」ビットのブロックに変換されることを意味する。
  • Rはパディングされた入力の最初の r ビットブロックとXORされます
  • Sは "f"(S)に置き換えられます。
  • Rは、次の r ' - パディングされた入力のビットブロック(存在する場合)とXORされます。
  • Sは "f"(S)に置き換えられます。
  • ...

パッディングされた入力文字列のすべてのブロックが使い尽くされるまで([スポンジ(マテリアル)|スポンジ]メタファーで吸収されるまで)、プロセスが繰り返されます。

これでスポンジ機能の出力は次のように生成されます(「スクイーズアウト」)。

  • 状態メモリのR部分は出力の最初の「r」ビットです
  • より多くの出力ビットが必要な場合、Sは "f"(S)に置き換えられます。
  • 状態メモリのR部分は出力の次の「r」ビットです
  • ...

このプロセスは、所望の数の出力ビットが生成されるまで繰り返される。出力の長さが r ビットの倍数でない場合は、切り捨てられます。

もう1つのメタファーは、入力メモリがプールに注ぎ込まれ、変換関数が「エントロピープールを攪拌する」と呼ばれる状態メモリを "エントロピープール"として記述します。

入力ビットは決して状態メモリのC部分にXORされず、Cのビットも直接出力されないことに注意してください。ハッシュ・アプリケーションでは、 collisionまたはpreimage attackに対する耐性はCに依存し、その値はCに依存します。 「容量」「c」は、典型的には所望の抵抗レベルの2倍である。

デュプレックス構成[編集]

交互に吸収し、絞ることも可能である。この操作は、二重化構成または二重化と呼ばれます。これは、シングルパスで認証された暗号化システムの基礎となることができます。

  • 状態 "S"はゼロに初期化されます
  • Rは入力の最初の r ビットブロックとXORされます
  • Sは "f"(S)に置き換えられます。
  • Rは出力の最初の「r」ビットになりました。
  • Rは次の r - 入力のビットブロックとXORされます
  • Sは "f"(S)に置き換えられます。
  • Rは出力の次の「r」ビットになりました。
  • ...

上書きモード[編集]

選択した[セキュリティレベル]を維持しながら、吸収中のxor演算を省略することは可能です。

スポンジ構造はまた、実用的な暗号プリミティブを構築するために使用することができる。たとえばKeccakは1600ビットの状態の暗号スポンジです。 SHA-3大会の勝者としてNISTによって選ばれました。 Keccakの強みは、著者が開発した複雑で多元的なパーミュテーション "f"に由来しています。 [[Spritz(cipher)| Spritz]と呼ばれるRC4 - 再設計とは、アルゴリズムを定義するスポンジ構造を指します。

別の例として、スポンジ機能を使用して関連するデータ(AEAD)で認証された暗号化を構築することができます。&lt; ref name = "Rivest2014" /&gt;

ソース[編集]

http://wikipedia.org/