Independent Submission                                  V. Dolmatov, Ed.
Request for Comments: 5831                               Cryptocom, Ltd.
Category: Informational                                       March 2010
ISSN: 2070-1721
        
                GOST R 34.11-94: Hash Function Algorithm
        

Abstract

抽象

This document is intended to be a source of information about the Russian Federal standard hash function (GOST R 34.11-94), which is one of the Russian cryptographic standard algorithms (called GOST algorithms). Recently, Russian cryptography is being used in Internet applications, and this document has been created as information for developers and users of GOST R 34.11-94 for hash computation.

この文書は、ロシアの暗号標準アルゴリズム(GOSTと呼ばれるアルゴリズム)の一つであるロシア連邦標準ハッシュ関数(GOST R 34.11から94まで)、約情報源であることが意図されています。最近、ロシアの暗号は、インターネットアプリケーションで使用されており、この文書は、ハッシュ計算のためのGOST R 34.11から94の開発者とユーザーのための情報として作成されています。

Status of This Memo

このメモのステータス

This document is not an Internet Standards Track specification; it is published for informational purposes.

このドキュメントはインターネット標準化過程仕様ではありません。それは、情報提供の目的のために公開されています。

This is a contribution to the RFC Series, independently of any other RFC stream. The RFC Editor has chosen to publish this document at its discretion and makes no statement about its value for implementation or deployment. Documents approved for publication by the RFC Editor are not a candidate for any level of Internet Standard; see Section 2 of RFC 5741.

これは、独立して、他のRFCストリームの、RFCシリーズへの貢献です。 RFC Editorはその裁量でこの文書を公開することを選択し、実装や展開のためにその値についての声明を出すていません。 RFC編集者によって公表のために承認されたドキュメントは、インターネット標準の任意のレベルの候補ではありません。 RFC 5741のセクション2を参照してください。

Information about the current status of this document, any errata, and how to provide feedback on it may be obtained at http://www.rfc-editor.org/info/rfc5831.

このドキュメントの現在の状態、任意の正誤表、そしてどのようにフィードバックを提供するための情報がhttp://www.rfc-editor.org/info/rfc5831で取得することができます。

Copyright Notice

著作権表示

Copyright (c) 2010 IETF Trust and the persons identified as the document authors. All rights reserved.

著作権(C)2010 IETF信託とドキュメントの作成者として特定の人物。全著作権所有。

This document is subject to BCP 78 and the IETF Trust's Legal Provisions Relating to IETF Documents (http://trustee.ietf.org/license-info) in effect on the date of publication of this document. Please review these documents carefully, as they describe your rights and restrictions with respect to this document.

この文書では、BCP 78と、この文書の発行日に有効なIETFドキュメント(http://trustee.ietf.org/license-info)に関連IETFトラストの法律の規定に従うものとします。彼らは、この文書に関してあなたの権利と制限を説明するように、慎重にこれらの文書を確認してください。

This document may not be modified, and derivative works of it may not be created, except to format it for publication as an RFC or to translate it into languages other than English.

RFCとして公表のためにそれをフォーマットしたり、英語以外の言語に翻訳することを除いて、このドキュメントは変更されないことがあり、それの派生作品が作成されないことがあります。

Table of Contents

目次

   1. Introduction ....................................................3
      1.1. General Information ........................................3
      1.2. The Purpose of GOST R 34.11-94 .............................3
   2. Applicability ...................................................3
   3. Conventions Used in This Document ...............................4
   4. General Statements ..............................................5
   5. Step-by-Step Hash Function ......................................5
      5.1. Key Generation .............................................5
      5.2. Encryption Transformation ..................................7
      5.3. Mixing Transformation ......................................7
   6. The Calculation Procedure for a Hash Function ...................8
   7. Test Examples (Informative) .....................................9
      7.1. Usage of the Algorithm GOST 28147-89 ......................10
      7.2. Representation of Vectors .................................11
      7.3. Examples of the Hash Value Calculation ....................11
           7.3.1. Hash Calculation for the Sample Message M ..........11
           7.3.2. Hash Calculation for the Sample Message M ..........14
   8. Security Considerations ........................................16
   9. Normative References ...........................................16
   10. Contributors ..................................................17
        
1. Introduction
1. はじめに
1.1. General Information
1.1. 一般情報

1. GOST R 34.11-94 [GOST3411] was developed by the Federal Agency for Government Communication and Information and by the All-Russia Scientific and Research Institute of Standardization.

1. GOST R 34.11から94 [GOST3411]政府コミュニケーションと情報のための連邦機関によっておよび全ロシア科学と標準化の研究所によって開発されました。

2. GOST R 34.11-94 was accepted and activated by Act 154 of 23.05.1994 issued by the Russian Federal committee for standards.

2. GOST R 34.11から94は、標準のためのロシア連邦委員会によって発行された1994年5月23日の同法154によって受け入れられ、活性化しました。

1.2. The Purpose of GOST R 34.11-94
1.2. GOST R 34.11から94の目的

Expanding the application of information technologies when creating, processing, and storing documents requires, in some cases, confidentiality of their contents, maintenance of completeness, and authenticity.

、処理を作成するときに、情報技術の適用を拡大し、文書を格納することは、いくつかのケースでは、その内容、完全性の維持、および真正性の機密性を必要とします。

Cryptography (cryptographic security) is one of the effective approaches for data security. It is widely applied in different areas of government and commercial activity.

暗号(暗号化セキュリティ)は、データセキュリティのための効果的なアプローチの一つです。これは、広く政府や商業活動のさまざまな領域に適用されます。

Cryptographic data security methods are under serious scientific research and standardization efforts at national, regional, and international levels.

暗号データ​​セキュリティ方法は、国家、地域、国際レベルでの重大な科学研究と標準化の努力の下にあります。

GOST R 34.11-94 defines a hash function calculation procedure for an arbitrary sequence of binary symbols.

GOST R 34.11から94は、バイナリシンボルの任意のシーケンスのハッシュ関数の計算手順を定義します。

The hash function maps an arbitrary set of data represented as a sequence of binary symbols onto its image of a fixed small length.

ハッシュ関数は、固定された小長さの、その画像にバイナリシンボルのシーケンスとして表されたデータの任意のセットをマッピングします。

Thus, hash functions can be used in procedures related to the electronic digital signature, resulting in considerable reduction of elapsed time for the sign and verify stages. The effect of the reduction of time is due to the fact that only a short image of initial data is actually signed.

したがって、ハッシュ関数が符号の経過時間のかなりの減少をもたらす、電子デジタル署名に関連する手順で使用され、ステージを確認することができます。時間の短縮の効果は、初期データの短い画像が実際に署名されているという事実によるものです。

2. Applicability
2.適用性

GOST R 34.11-94 defines an algorithm and procedure for the calculation of a hash function for an arbitrary sequence of binary symbols. These algorithms and procedures should be applied in cryptographic methods of data processing and securing, including digital signature procedures employed for data transfer and data storage in computer-aided systems.

GOST R 34.11から94は、バイナリシンボルの任意のシーケンスのハッシュ関数を計算するためのアルゴリズムおよび手順を定義します。これらのアルゴリズムおよび手順は、データ処理およびコンピュータ支援システムにおけるデータ転送及びデータ格納のために使用さデジタル署名手順を含む、固定の暗号方式に適用されるべきです。

The hash function, defined in GOST R 34.11-94, is used for digital signature systems based on the asymmetric cryptographic algorithm according to GOST R 34.10-2001 (see section 3).

GOST R 34.11から94で定義されたハッシュ関数は、GOST R 34.10から2001(セクション3を参照)によれば、非対称暗号化アルゴリズムに基づくデジタル署名システムのために使用されます。

3. Conventions Used in This Document
この文書で使用される3表記

The following notations are used in GOST R 34.11-94:

次の表記は、GOST R 34.11から94に使用されます。

V_all is a set of all finite words in the alphabet V = {0,1}. The words are read from right to left and the alphabet symbols are numbered from right to left (i.e., the rightmost symbol of the word has the number one, the second rightmost symbol has number two, etc.).

V_allはアルファベットV = {0,1}内のすべての有限の単語の組です。 (すなわち、単語の右端の記号はナンバーワン、右から2番目のシンボルなど、数2を有するを有する)単語が右から左に読み出され、アルファベット記号は、右から左に番号が付けられています。

Vk is a set of all words in alphabet V = {0,1} of length k bits (k=16,64,256).

VKは、長さkビット(K = 16,64,256)のアルファベットV = {0,1}におけるすべての単語の組です。

|A| is the length of a word A belonging to V_all.

| A | V_allに属する単語の長さがあります。

A||B is a concatenation of words A, B belonging to V_all. Its length is |A| + |B|, where the left |A| symbols come from the word A, and the right |B| symbols come from the word B. One can also use the notation A||B = A * B.

|| BはV_allに属する単語A、Bの連結です。 | A |その長さがあります左、| | + | B A | | B |記号は単語A、および右から来ますシンボルは一つも表記A || B = A * Bを使用することができ、ワードBから来ます

A^k is a concatenation of k copies of the word A (A belongs to V_all).

A ^ kは単語A(A V_allに属する)のk個のコピーを連結したものです。

<N>_k is a word of length k, containing a binary representation of N(mod 2^k) residue, with a non-negative integer N.

<N> _kは非負の整数NとNのバイナリ表現(MOD 2 ^ K)残基を含む、長さkのワードであります

A^$ is a non-negative integer with A as its binary representation.

A ^ $は、そのバイナリ表現として非負の整数です。

(xor) is the bitwise modulo 2 addition of the words of the same length.

(XOR)は、同じ長さのワードのビット単位のモジュロ2加算です。

(+)' is the addition according to the rule A (+)' B = <A^$+ B^$>_k, where k = |A| = |B|.

| A |(+)B = <A ^ $ + B ^ $> _ K、K = '付加は、ルールA(+)に従います' = | B |。

M is a binary sequence to be hashed, M belongs to V_all. M is a message in digital signature systems.

Mは、MがV_allに属し、ハッシュ化されるバイナリシーケンスです。 Mは、デジタル署名システムにおけるメッセージです。

h is a hash function that maps the sequence M belonging to V_all onto the word h(M) belonging to V_256.

hはV_256に属するワードH(M)にV_allに属する配列Mをマップするハッシュ関数です。

E(k,A) is a result of the encryption of the word A using key K with the encryption algorithm according to [GOST28147] in the electronic codebook (ECB) mode (K belongs to V256, A belongs to V64).

E(K、A)はワード電子コードブック(ECB)モードで[GOST28147]に記載の暗号化アルゴリズムを使用して、鍵Kの暗号化の結果である(KはV256属する、Aは、V64に属します)。

h0 is an initial hash value.

H0は、初期ハッシュ値です。

e := g is the assignment of the value g to the parameter e.

E = Gはパラメータeの値gの割り当てです。

^ is the power operator.

^パワー演算子です。

i = 1..8 is an interval with i being all the values from 1 to 8.

I = 1..8 iは1から8までのすべての値であるとの間隔です。

hUZ is the S-boxes described in [GOST28147].

hUZは[GOST28147]に記載のS-boxです。

4. General Statements
4.一般的な記述

A hash function h is the mapping h : V_all -> V256, depending on the parameter (which is the initial hash value H, H is a word from V256). To define the hash function, it is necessary to have:

> V256は、パラメータに応じて(初期ハッシュ値Hであり、Hは、V256からのワードである) - V_all:ハッシュ関数Hは、マッピングhです。ハッシュ関数を定義するには、持っていることが必要です。

- a calculation algorithm for the step-by-step hash function

- ステップ・バイ・ステップのハッシュ関数の計算アルゴリズム

chi : V256 x V256 -> V256

カイ:V256用のX V256 - > V256

- a description of an iterative procedure for calculating the hash value h

- ハッシュ値Hを算出するための反復手順の説明

A hash function h depends on two parameters, h0 and hUZ.

ハッシュ関数Hは、2つのパラメータ、H0及びhUZに依存します。

5. Step-by-Step Hash Function
5.ステップバイステップのハッシュ関数

A calculation algorithm for the step-by-step hash function contains three parts, which successively do:

ステップバイステップのハッシュ関数の計算アルゴリズムを順次行う三つの部分が含まれています

- key generation, here keys are 256-bit words;

- 鍵の生成、ここで鍵256ビットワードです。

- an encryption transformation, that is encryption of 64-bit subwords of word H using keys K[i], (i = 1, 2, 3, 4) with the algorithm according to [GOST28147] in ECB mode; and

- 暗号化変換は、それがキーを使用して単語Hの64ビットのサブワードの暗号化であるK [i]は、(I = 1、2、3、4)GOST28147] ECBモードにおいてによるアルゴリズムを有します。そして

- a mixing transformation for the result of the encryption.

- 暗号化の結果のために混合転換。

5.1 Key Generation
5.1キーの生成

Consider X = (b[256], b[255], ..., b[1]) belongs to V256.

V256属する([1] B、...、B [256]、B [255])X =を考えます。

Let:

してみましょう:

X = x[4]||x[3]||x[2]||x[1] = eta[16]||[eta15]||...||eta[1]

X = X [4] || X [3] || X [2] || X [1] =及び[16] || ... || [15] ||と[1]

= xi[32]||xi[31]||...||xi[1], where x[i] = (b[i*64],...,b[(i-1)*64+1]) belongs to V64, i = 1..4,

= XI [32] || XI [31] || ... || XI [1]、ここで、x [I] =(B [iが64 *]、...、Bの[(I-1)* 64 +1])V64に属し、I = 1..4、

eta[j] = (b[j*16],...,b[(j-1)*16+1]) belongs to V16, j = 1..16,

ETA [J] =(B [J * 16]、...、Bの[(J-1)* 16 + 1])V16に属し、J = 1..16、

xi[k] = (b[k*8],..., b[(k-1)*8+1]) belongs to V8, k = 1..32.

XI [K] =(B [K * 8]、...、Bの[(K-1)* 8 + 1])V8、K = 1..32に属します。

Yet, another notation: A(X) = (x[1](xor)x[2])||x[4]||x[3]||x[2].

しかし、別の表記:A(X)=(X [1](XOR)X [2])|| X [4] || X [3] || X [2]。

The transformation P : V256 -> V256 maps the word xi32||...||xi1 onto the word xi[phi(32)] || ... || xi[phi(1)],

変換P:V256 - > V256は、ワードXI [PHI(32)]にワードxi32 || ... || XI1をマップ|| ... || XI [PHI(1)]、

where phi(i + 1 + 4 ( k - 1) ) = 8i + k , i = 0..3, k = 1..8.

ここで、PHI(+ 4 I + 1(k - 1))8I + K、I = 0..3、K = 1..8 =。

For the key generation, one should use the following initial data:

鍵生成のために、一つは以下の初期データを使用する必要があります。

- words H, M belonging to V256,

- 言葉H、Mは、V256に属します、

- parameters: words C[i] (i = 2, 3, 4), with values:

- パラメータ:ワードC [I](i = 2、3、4)の値を持ちます。

C[2] = C[4] = 0^256;

C [2] = C [4] = 0 ^ 256。

C[3] = 1^8||0^8||1^16||0^24||1^16||0^8||(0^8||1^8)^2||1^8||0^8 ||(0^8||1^8)^4||(1^8||0^8 )^4.

C [3] = 1 ^ 8 || 0 ^ 8 || 1 ^ 16 || 0 ^ 24 || 1 ^ 16 || 0 ^ 8 ||(0 ^ 8 || 1 ^ 8)^ 2 || 1 ^ 8 || 0 ^ 8 ||(0 ^ 8 || 1 ^ 8)^ 4 ||(1 ^ 8 || 0 ^ 8)^ 4。

The following algorithm is used for the key calculation:

次のアルゴリズムは、キーの計算に使用されます。

1. Assign values:
1.値を割り当てます:

i := 1, U := H , V := M.

I = 1、U:= H、V:= M.

2. Calculate:
2.計算:

W = U (xor) V , K[i] = P(W).

W = U(XOR)V、K [I] = P(W)。

3. Assign:
3.割り当て:

i := i + 1.

I:= I + 1。

4. Verify condition:
4.条件を確認します。

i = 5.

私は5を=。

If it is true, go to step 7. If not, go to step 5.

それが本当であれば、そうでない場合は、手順5に進みます7.に進みます。

5. Calculate:
5.計算:

U := A(U)(xor)C[i], V := A(A(V)), W := U(xor)V, K[i] = P(W).

U:= A(U)(XOR)C [i]は、V:= A((V))、W:= U(XOR)V、K [I] = P(W)。

6. Go to step 3.
6. Goが3に進みます。
7. End.
7.終了。
5.2. Encryption Transformation
5.2. 暗号化変換

At this stage, 64-bit subwords of the word H are encrypted using keys K[i] (i = 1, 2, 3, 4).

この段階で、ワードHの64ビットのサブワードは、鍵Kを用いて暗号化されている[I](i = 1、2、3、4)。

For the encryption transformation, one should use the following initial data:

暗号化形質転換のために、一つは以下の初期データを使用する必要があります。

H = h[4]||h[3]||h[2]||h[1],

Hは= hの[4] || H [3] || H [2] || H [1]、

where h[i] belongs to V64, i = 1,2,3,4, and a key set is K[1], K[2], K[3], K[4].

H [i]はV64に属している場合、I = 1,2,3,4、およびキーセットはKである[1]、K [2]、K [3]、K [4]。

The encryption algorithm is applied and the following words are obtained:

暗号化アルゴリズムが適用され、次の単語が得られます。

s[i] = E(K[i],h[i]), where: i = 1,2,3,4

S [I] = E(K [i]が、H [i])と、I = 1,2,3,4

As a result of the stage, the following sequence is formed:

ステージの結果として、以下の配列が形成されます。

S = s[4]||s[3]||s[2]||s[1].

S = Sで[4] || S [3] || S [2] || S [1]。

5.3. Mixing Transformation
5.3. ミキシング変容

At this stage, the obtained sequence is mixed using a shift register.

この段階で、得られた配列は、シフトレジスタを用いて混合されます。

The initial data includes words H, M belonging to V256 and a word S belonging to V256 .

初期データは、H、MはV256に属する単語およびV256に属するワードSを含みます。

Let a mapping PSI(X) : V256(2) -> V256(2) transform the word:

マッピングPSI(X)をしてみましょう:V256(2) - > V256(2)単語を変換します:

eta[16]||eta[15]||...||eta[1], eta[i] belongs to V16, i = 1..16

そして[16] ||及び[15] || ... ||と[1]及び[I] V16に属し、I = 1..16

into the word:

ワードに:

eta[1](xor)eta[2](xor)eta[3](xor)eta[4](xor)eta[13](xor)eta[16] ||eta[16]||...||eta[2].

そして[1](XOR)および[2](XOR)、および[3](XOR)と[4](XOR)および[13](XOR)および[16] ||及び[16] || ... ||及び[2]。

Then, the value of the step-by-step hash function value is the word:

次に、ステップバイステップのハッシュ関数値の値は、単語です。

chi(M, H) = PSI^61(H(xor)PSI(M(xor)PSI^12(S))),

(M、H)= ^ 61 PSI(Hコーラス(コーラス)(M(PSI)PSI ^ 12(C)))

where PSI^i(X) is the transformation PSI applied i times to X.

PSIは、^ I(X)変換PSIはXにI回適用されます

6. The Calculation Procedure for a Hash Function
6.ハッシュ関数の計算手順

The calculation procedure for a hash function h is assumed to be applied to a sequence M belonging to V_all. Its parameter is an initial hash value h0, which is an arbitrarily fixed word from V256.

ハッシュ関数hの計算手順はV_allに属するシーケンスMに適用されるものとします。そのパラメータは、V256から任意に固定された単語である初期ハッシュ値H0、です。

The calculation procedure for the function h uses the following quantities at each step of iteration:

関数hの計算手順は、反復の各ステップで以下の量を使用します。

_M_ belonging to V_all - a part of the sequence M, which was not hashed at previous iterations;

_M_ V_allに属する - 前の反復でハッシュされなかった配列Mの一部。

H belonging to V256 - the current hash value;

V256に属するH - 現在のハッシュ値。

SIGMA belonging to V256 - the current check sum value;

V256に属するSIGMA - 現在のチェックサム値。

L belonging to V256 - the length of the partial sequence M processed at the previous iteration step.

V256に属するL - 前の反復ステップで処理された部分配列Mの長さ。

The calculation algorithm for function h consists of the following steps:

関数hの計算アルゴリズムは、次のステップから成ります。

Step 1. Assign initial values to current quantities:

ステップ1.現在の量に初期値を割り当てます。

1.1 _M_ := M.
1.1 _M_:= M.
1.2 H := h0.
1.2 H:= H0。
1.3 SIGMA := 0^256.
1.3 SIGMA:= 0 ^ 256。
1.4 L := 0^256.
1.4 L:= 0 ^ 256。
1.5 Go to step 2.
1.5ステップ2に進みます。

Step 2.

ステップ2。

2.1 Verify the condition |_M_|>256.
_M_ | |> 256 2.1の条件を確認してください。

If it is true, go to step 3.

それが本当であれば、ステップ3に進みます。

Else, make the following calculations:

そうでなければ、以下の計算を行います。

2.2 L := <L^$ + |M|>_256
2.2 L:= <L ^ $ + | M |> _256
2.3 M' := 0^(256 -|M|)||M
2.3 M」:= 0 ^(256 - | M |)|| M
2.4 SIGMA := SIGMA (+)' M'
2.4 SIGMA = SIGMA(+) 'M'
2.5 H := chi (M', H)
2.5 H:=カイ(M」、H)
2.6 H := chi (L, H)
2.6 H:=カイ(L、H)
2.7 H := chi (SIGMA, H)
2.7 H:=カイ(SIGMA、H)
2.8 End.
2.8終了。

Step 3.

ステップ3。

3.1 Calculate a subword M_s belonging to V256 of the word _M_ (_M_ = M_p||M_s). Then make the following calculations:

3.1ワード_M_(_M_ = M_p || M_S)のV256に属するサブワードM_Sを計算します。そして、以下の計算を行います。

3.2 H := chi (M_s, H)
3.2 H:=カイ(M_S、H)
3.3 L := <L^$ + 256>_256
3.3 L:= <L ^ $ + 256> _256
3.4 SIGMA := SIGMA (+)' M[s]
3.4 SIGMA = SIGMA(+)M [S]
3.5 _M_ = M_p
3.5 _M_ = M_p
3.6 Go to step 2.
3.6ステップ2に進みます。

The quantity H obtained at step 2.7 is the value of the hash function h(M).

Hは、ステップ2.7で得られた量は、ハッシュ関数h(M)の値です。

7. Test Examples (Informative)
7.試験例(参考)

It is recommended to use the values for substitution units pi[1], pi[2],..., pi[8] and the initial hash value H described in this appendix for the GOST R 34.11-94 test examples only.

置換ユニットPI [1]、PIの値を使用することが推奨される[2]、...、PI [8]のみGOST R 34.11から94試験例については、この付録で説明初期ハッシュ値H。

7.1. Usage of the Algorithm GOST 28147-89
7.1. アルゴリズムGOST 28147から89の使い方

The algorithm GOST 28147-89 [GOST28147] in ECB mode is used as an encryption transformation in the following examples. The following values of the substitution units pi[1], pi[2],..., pi[8] have been chosen:

ECBモードでアルゴリズムGOST 28147から89 [GOST28147]以下の実施例における暗号化変換として使用されます。置換ユニットPIの次の値[1]、PI [2]、...、PI [8]が選択されています。

8 7 6 5 4 3 2 1

8 7 6 5 4 3 2 1

0 1 D 4 6 7 5 E 4

0 1 D 4 6 7 5 E 4

1 F B B C D 8 B A

1 F B B C D 8 B A

2 D 4 A 7 A 1 4 9

2 D 4 A 7 A 1 4 9

3 0 1 0 1 1 D C 2

3 0 1 0 1 1 DのC 2

4 5 3 7 5 0 A 6 D

4 3 7 5 0 A 6 D

5 7 F 2 F 8 3 D 8

5 7 F 2 F 8 3 D 8

6 A 5 1 D 9 4 F 0

6 5 1 D 9 4 F 0

7 4 9 D 8 F 2 A E

7 4~9 D 8 F 2 A E

8 9 0 3 4 E E 2 6

8 9 0 3 4 E E 2 6

9 2 A 6 A 4 F 3 B

9 2 A 6 4 F 3 B

10 3 E 8 9 6 C 8 1

10 3 E 8 9 6 C 8 1

11 E 7 5 E C 7 1 C

11 E 7、E 5 C 7〜C

12 6 6 9 0 B 6 0 7

12 6 6 9 0 B 6 0 7

13 B 8 C 3 2 0 7 F

13 B 8 C 3 2 0 7 F

14 8 2 F B 5 9 5 5

14 8 2 F B 5 9 5

15 C C E 2 3 B 9 3

15 C C E 2 3 B 9 3

The hexadecimal value of pi[j](i) is given in a column number j,

PI [J](I)の16進数の値は、列番号jに与えられています

j = 1..8, and in a row number i, i = 0..15.

J = 1..8、及び行番号i、i = 0..15です。

7.2. Representation of Vectors
7.2. ベクターの表現

We will put down binary symbol sequences as hexadecimal digits strings, where each digit corresponds to four signs of its binary representation.

我々は、各桁は、そのバイナリ表現の4つの兆候に対応する16進数の文字列としてバイナリシンボルシーケンスを置くであろう。

7.3 Examples of the Hash Value Calculation
ハッシュ値の計算の例7.3

A zero vector, for example, can be taken as an initial hash value:

ゼロベクトルは、例えば、最初のハッシュ値とすることができます。

h0 = 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000

H0 = 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000

7.3.1. Hash Calculation for the Sample Message M
7.3.1. サンプルメッセージMのハッシュ計算

M = 73657479 62203233 3D687467 6E656C20 2C656761 7373656D 20736920 73696854

M = 73657479 62203233 3D687467 6E656C20 2C656761 7373656D 20736920 73696854

Initial values are assigned for the text:

初期値は、テキストのために割り当てられています。

_M_ = 73657479 62203233 3D687467 6E656C20 2C656761 7373656D 20736920 73696854

_M_ = 73657479 62203233 3D687467 6E656C20 2C656761 7373656D 20736920 73696854

for the hash function:

ハッシュ関数のために:

H = 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000

H = 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000

for the sum of text blocks:

テキストブロックの合計のために:

SIGMA = 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000

SIGMA = 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000

for the length of the text:

テキストの長さのために:

L = 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000

L = 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000

If the length of the message to be hashed equals 256 bits (32 bytes), then:

ハッシュされるメッセージの長さは256ビット(32バイト)に等しい場合、その後:

L = 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000100

L = 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000100

M' = _M_ = 73657479 62203233 3D687467 6E656C20 2C656761 7373656D 20736920 73696854

M」= _M_ = 73657479 62203233 3D687467 6E656C20 2C656761 7373656D 20736920 73696854

and there is no need to pad the current block with zeroes:

パッドゼロで現在のブロックの必要はありません。

SIGMA=M' = 73657479 62203233 3D687467 6E656C20 2C656761 7373656D 20736920 73696854

SIGMA = M」= 73657479 62203233 3D687467 6E656C20 2C656761 7373656D 20736920 73696854

The step-by-step hash function chi(M, N) values are calculated.

ステップバイステップのハッシュ関数カイ(M、N)の値が算出されます。

The keys are generated:

キーが生成されます。

K[1] = 733D2C20 65686573 74746769 326C6568 626E7373 20657369 79676120 33206D54

K [1] = 733D2C20 65686573 74746769 326C6568 626E7373 20657369 79676120 33206D54

K[2] = 110C733D 0D166568 130E7474 06417967 1D00626E 161A2065 090D326C 4D393320

K [2] = 110C733D 0D166568 130E7474 06417967 1D00626E 161A2065 090D326C 4D393320

K[3] = 80B111F3 730DF216 850013F1 C7E1F941 620C1DFF 3ABAE91A 3FA109F2 F513B239

K [3] = 80B111F3 730DF216 850013F1 C7E1F941 620C1DFF 3ABAE91A 3FA109F2 F513B239

K[4] = A0E2804E FF1B73F2 ECE27A00 E7B8C7E1 EE1D620C AC0CC5BA A804C05E A18B0AEC

Kyuchsch = A0E2804E FF1B73F2 ESE27A00 E7B8SschE1 EE1Dsh20Ts AK0SK5VA A804K05E A18B0AETS

The 64-bit subwords of block H are encrypted by the algorithm according to GOST 28147.

ブロックHの64ビットのサブワードは、GOST 28147に係るアルゴリズムによって暗号化されます。

Block h[1] = 00000000 00000000 is encrypted using key K[1] and s[1] = 42ABBCCE 32BC0B1B is obtained.

ブロックH [1] = 00000000 00000000 [1] = 42ABBCCE 32BC0B1Bが得られた[1]とsキーKを用いて暗号化されます。

Block h[2] = 00000000 00000000 is encrypted using key K[2] and s[2] = 5203EBC8 5D9BCFFD is obtained.

ブロックH [2] = 00000000 00000000 [2] = 5203EBC8 5D9BCFFDが得られる[2]及びS鍵Kを用いて暗号化されます。

Block h[3] = 00000000 00000000 is encrypted using key K[3] and s[3] = 8D345899 00FF0E28 is obtained.

ブロックH [3] = 00000000 00000000 [3] = 8D345899 00FF0E28が得られた[3]とsキーKを用いて暗号化されます。

Block h[4] = 00000000 00000000 is encrypted using key K[4] and s[4] = E7860419 0D2A562D is obtained.

ブロックH [4] = 00000000 00000000 [4] E7860419 0D2A562Dが得られ= [4]とsキーKを用いて暗号化されます。

So S = E7860419 0D2A562D 8D345899 00FF0E28 5203EBC8 5D9BCFFD 42ABBCCE 32BC0B1B

だから、S = E7860419 0D2A562D 8D345899 00FF0E28 5203EBC8 5D9BCFFD 42ABBCCE 32BC0B1B

is obtained.

得られます。

The mixing transformation using a shift register is performed and

シフトレジスタを使用して混合変換が行われると

KSI = chi(M, H) = CF9A8C65 505967A4 68A03B8C 42DE7624 D99C4124 883DA687 561C7DE3 3315C034

KSI =カイ(M、H)= CF9A8C65 505967A4 68A03B8C 42DE7624 D99C4124 883DA687 561C7DE3 3315C034

is obtained.

得られます。

Assign H = KSI and calculate chi(L, H):

H = KSIを割り当て、カイ(L、H)を算出します。

K[1] = CF68D956 9AA09C1C 8C3B417D 658C24E3 50428833 59DE3D15 6776A6C1 A4248734

K [1] = CF68D956 9AA09C1C 8C3B417D 658C24E3 50428833 59DE3D15 6776A6C1 A4248734

K[2] = 8FCF68D9 809AA09C 3C8C3B41 C7658C24 BB504288 2859DE3D 666676A6 B3A42487

K [2] = 8FCF68D9 809AA09C 3C8C3B41 C7658C24 BB504288 2859DE3D 666676A6 B3A42487

K[3] = 4E70CF97 3C8065A0 853C8CC4 57389A8C CABB50BD E3D7A6DE D1996788 5CB35B24

K [3] = 4E70CF97 3C8065A0 853C8CC4 57389A8C CABB50BD E3D7A6DE D1996788 5CB35B24

K[4] = 584E70CF C53C8065 48853C8C 1657389A EDCABB50 78E3D7A6 EED19867 7F5CB35B

K [4] = 584E70CF C53C8065 48853C8C 1657389A EDCABB50 78E3D7A6 EED19867 7F5CB35B

S = 66B70F5E F163F461 468A9528 61D60593 E5EC8A37 3FD42279 3CD1602D DD783E86

S = 66B70F5E F163F461 468A9528 61D60593 E5EC8A37 3FD42279 3CD1602D DD783E86

KSI = 2B6EC233 C7BC89E4 2ABC2692 5FEA7285 DD3848D1 C6AC997A 24F74E2B 09A3AEF7

KSI = 2B6EC233 C7BC89E4 2ABC2692 5FEA7285 DD3848D1 C6AC997A 24F74E2B 09A3AEF7

Now assign H = KSI again and calculate chi( SIGMA, H):

今再びH = KSIを割り当て、カイ(SIGMA、H)を算出します。

K[1] = 5817F104 0BD45D84 B6522F27 4AF5B00B A531B57A 9C8FDFCA BB1EFCC6 D7A517A3

K [1] = 5817F104 0BD45D84 B6522F27 4AF5B00B A531B57A 9C8FDFCA BB1EFCC6 D7A517A3

K[2] = E82759E0 C278D950 15CC523C FC72EBB6 D2C73DA8 19A6CAC9 3E8440F5 C0DDB65A

K [2] = E82759E0 C278D950 15CC523C FC72EBB6 D2C73DA8 19A6CAC9 3E8440F5 C0DDB65A

K[3] = 77483AD9 F7C29CAA EB06D1D7 841BCAD3 FBC3DAA0 7CB555F0 D4968080 0A9E56BC

K [3] = 77483AD9 F7C29CAA EB06D1D7 841BCAD3 FBC3DAA0 7CB555F0 D4968080 0A9E56BC

K[4] = A1157965 2D9FBC9C 088C7CC2 46FB3DD2 7684ADCB FA4ACA06 53EFF7D7 C0748708

K [4] = A1157965 2D9FBC9C 088C7CC2 46FB3DD2 7684ADCB FA4ACA06 53EFF7D7 C0748708

S = 2AEBFA76 A85FB57D 6F164DE9 2951A581 C31E7435 4930FD05 1F8A4942 550A582D

S = 2AEBFA76 A85FB57D 6F164DE9 2951A581 C31E7435 4930FD05 1F8A4942 550A582D

KSI = FAFF37A6 15A81669 1CFF3EF8 B68CA247 E09525F3 9F811983 2EB81975 D366C4B1

KSI = FAFF37A6 15A81669 1CFF3EF8 B68CA247 E09525F3 9F811983 2EB81975のD366C4B1

Then, the hash result is:

次に、ハッシュ結果は次のとおりです。

H = FAFF37A6 15A81669 1CFF3EF8 B68CA247 E09525F3 9F811983 2EB81975 D366C4B1

H = FAFF37A6 15A81669 1CFF3EF8 B68CA247 E09525F3 9F811983 2EB81975のD366C4B1

7.3.2. Hash Calculation for the Sample Message M
7.3.2. サンプルメッセージMのハッシュ計算

Let M = 7365 74796220 3035203D 20687467 6E656C20 73616820 65676173 73656D20 6C616E69 6769726F 20656874 2065736F 70707553

M = 7365 74796220 3035203D 20687467 6E656C20 73616820 65676173 73656D20 6C616E69 6769726F 20656874 2065736F 70707553みよう

As the length of the message to be hashed equals 400 bits (50 bytes), the message is divided into two blocks, and the second (high-order) one is padded with zeroes. During the calculations the following numbers are obtained:

ハッシュされるメッセージの長さは400ビット(50バイト)に等しいように、メッセージは2つのブロックに分割され、及び第二(上位)一方がゼロで埋められます。計算中に次の番号が得られます。

STEP 1.

ステップ1。

H = 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000

H = 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000

M_s = 73616820 65676173 73656D20 6C616E69 6769726F 20656874 2065736F 70707553

M_S = 73616820 65676173 73656D20 6C616E69 6769726F 20656874 2065736F 70707553

K[1] = 73736720 61656965 686D7273 20206F6F 656C2070 67616570 616E6875 73697453

K [1] 73736720 61656965 686D7273 20206F6F 656C2070 67616570 616E6875 73697453を=

K[2] = 14477373 0C0C6165 1F01686D 4F002020 4C50656C 04156761 061D616E 1D277369

Kyu2sch = 14477373 0CH0S6165 1F01686D 4F002020 CHK50656K 04156761 061D616E 1D277369

K[3] = CBFF14B8 6D04F30C 96051FFE DFFFB000 35094CAF 72F9FB15 7CF006E2 AB1AE227

K [3] = CBFF14B8 6D04F30C 96051FFE DFFFB000 35094CAF 72F9FB15 7CF006E2 AB1AE227

K[4] = EBACCB00 F7006DFB E5E16905 B0B0DFFF BA1C3509 FD118DF9 F61B830F F8C554E5

Kyuchsch = EBATSTSB00 F7006DFB E5E16905 B0B0DFFF BA1TS3509 FD118DF9 F61B830F F8S554E5

S = FF41797C EEAADAC2 43C9B1DF 2E14681C EDDC2210 1EE1ADF9 FA67E757 DAFE3AD9

S = FF41797C EEAADAC2 43C9B1DF 2E14681C EDDC2210 1EE1ADF9 FA67E757 DAFE3AD9

KSI = F0CEEA4E 368B5A60 C63D96C1 E5B51CD2 A93BEFBD 2634F0AD CBBB69CE ED2D5D9A

KSI = F0CEEA4E 368B5A60 C63D96C1 E5B51CD2 A93BEFBD 2634F0AD CBBB69CE ED2D5D9A

STEP 2.

ステップ2。

H = F0CEEA4E 368B5A60 C63D96C1 E5B51CD2 A93BEFBD 2634F0AD CBBB69CE ED2D5D9A

H = F0CEEA4E 368B5A60 C63D96C1 E5B51CD2 A93BEFBD 2634F0AD CBBB69CE ED2D5D9A

M' = 00000000 00000000 00000000 00007365 74796220 3035203D 20687467 6E656C20

M」= 00000000 00000000 00000000 00007365 74796220 20687467 3035203D 6E656C20

K[1] = F0C6DDEB CE3D42D3 EA968D1D 4EC19DA9 36E51683 8BB50148 5A6FD031 60B790BA

K [1] = F0C6DDEB CE3D42D3 EA968D1D 4EC19DA9 36E51683 8BB50148 5A6FD031 60B790BA

K[2] = 16A4C6A9 F9DF3D3B E4FC96EF 5309C1BD FB68E526 2CDBB534 FE161C83 6F7DD2C8

K [2] = 16A4C6A9 F9DF3D3B E4FC96EF 5309C1BD FB68E526 2CDBB534 FE161C83 6F7DD2C8

K[3] = C49D846D 1780482C 9086887F C48C9186 9DCB0644 D1E641E5 A02109AF 9D52C7CF

K [3] = C49D846D 1780482C 9086887F C48C9186 9DCB0644 D1E641E5 A02109AF 9D52C7CF

K[4] = BDB0C9F0 756E9131 E1F290EA 50E4CBB1 1CAD9536 F4E4B674 99F31E29 70C52AFA

K [4] = BDB0C9F0 756E9131 E1F290EA 50E4CBB1 1CAD9536 F4E4B674 99F31E29 70C52AFA

S = 62A07EA5 EF3C3309 2CE1B076 173D48CC 6881EB66 F5C7959F 63FCA1F1 D33C31B8

S = 62A07EA5 EF3C3309 2CE1B076 173D48CC 6881EB66 F5C7959F 63FCA1F1のD33C31B8

KSI = 95BEA0BE 88D5AA02 FE3C9D45 436CE821 B8287CB6 2CBC135B 3E339EFE F6576CA9

KSI = 95BEA0BE 88D5AA02 FE3C9D45 436CE821 B8287CB6 2CBC135B 3E339EFE F6576CA9

STEP 3.

STEP 3。

H = 95BEA0BE 88D5AA02 FE3C9D45 436CE821 B8287CB6 2CBC135B 3E339EFE F6576CA9

H = 95BEA0BE 88D5AA02 FE3C9D45 436CE821 B8287CB6 2CBC135B 3E339EFE F6576CA9

L = 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000190

L = 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000190

K[1] = 95FEB83E BE3C2833 A09D7C9E BE45B6FE 88432CF6 D56CBC57 AAE8136D 02215B39

Kyu1sch = 95FEB83E BEzK2833 A09D7TS9E BE45B6FE 88432KF6 D56KBCH57 AAE8136D 02215B39

K[2] = 8695FEB8 1BBE3C28 E2A09D7C 48BE45B6 DA88432C EBD56CBC 7FABE813 F292215B

K [2] = 8695FEB8 1BBE3C28 E2A09D7C 48BE45B6 DA88432C EBD56CBC 7FABE813 F292215B

K[2] = 8695FEB8 1BBE3C28 E2A09D7C 48BE45B6 DA88432C EBD56CBC 7FABE813 F292215B

K [2] = 8695FEB8 1BBE3C28 E2A09D7C 48BE45B6 DA88432C EBD56CBC 7FABE813 F292215B

K[3] = B9799501 141B413C 1EE2A062 0CB74145 6FDA88BC D0142A6C FA80AA16 15F2FDB1

K [3] = B9799501 141B413C 1EE2A062 0CB74145 6FDA88BC D0142A6C FA80AA16 15F2FDB1

K[4] = 94B97995 7D141B41 C21EE2A0 040CB741 346FDA88 46D0142A BDFA81AA DC1562FD

K [4] = 94B97995 7D141B41 C21EE2A0 040CB741 346FDA88 46D0142A BDFA81AA DC1562FD

S = D42336E0 2A0A6998 6C65478A 3D08A1B9 9FDDFF20 4808E863 94FD9D6D F776A7AD

S = D42336E0 2A0A6998 6C65478A 3D08A1B9 9FDDFF20 4808E863 94FD9D6D F776A7AD

KSI = 47E26AFD 3E7278A1 7D473785 06140773 A3D97E7E A744CB43 08AA4C24 3352C745

KSI = 47E26AFD 3E7278A1 7D473785 06140773 A3D97E7E A744CB43 08AA4C24 3352C745

STEP 4.

STEP 4。

H = 47E26AFD 3E7278A1 7D473785 06140773 A3D97E7E A744CB43 08AA4C24 3352C745

H = 47E26AFD 3E7278A1 7D473785 06140773 A3D97E7E A744CB43 08AA4C24 3352C745

SIGMA = 73616820 65676173 73656D20 6C61E1CE DBE2D48F 509A88B1 40CDE7D6 DED5E173

SIGMA = 73616820 65676173 73656D20 6C61E1CE DBE2D48F 509A88B1 40CDE7D6 DED5E173

K[1] = 340E7848 83223B67 025AAAAB DDA5F1F2 5B6AF7ED 1575DE87 19E64326 D2BDF236

K [1] = 340E7848 83223B67 025AAAAB DDA5F1F2 5B6AF7ED 1575DE87 19E64326 D2BDF236

K[2] = 03DC0ED0 F4CD26BC 8B595F13 F5A4A55E A8B063CB ED3D7325 6511662A 7963008D

K [2] = 03DC0ED0 F4CD26BC 8B595F13 F5A4A55E A8B063CB ED3D7325 6511662A 7963008D

K[3] = C954EF19 D0779A68 ED37D3FB 7DA5ADDC 4A9D0277 78EF765B C4731191 7EBB21B1

K [3] = C954EF19 D0779A68 ED37D3FB 7DA5ADDC 4A9D0277 78EF765B C4731191 7EBB21B1

K[4] = 6D12BC47 D9363D19 1E3C696F 28F2DC02 F2137F37 64E4C18B 69CCFBF8 EF72B7E3

K [4] = 6D12BC47 D9363D19 1E3C696F 28F2DC02 F2137F37 64E4C18B 69CCFBF8 EF72B7E3

S = 790DD7A1 066544EA 2829563C 3C39D781 25EF9645 EE2C05DD A5ECAD92 2511A4D1

S = 790DD7A1 066544EA 2829563C 3C39D781 25EF9645 EE2C05DD A5ECAD92 2511A4D1

KSI = 0852F562 3B89DD57 AEB4781F E54DF14E EAFBC135 0613763A 0D770AA6 57BA1A47

KSI = 0852F562 3B89DD57 AEB4781F E54DF14E EAFBC135 0613763A 0D770AA6 57BA1A47

Then, the hash result is:

次に、ハッシュ結果は次のとおりです。

H = 0852F562 3B89DD57 AEB4781F E54DF14E EAFBC135 0613763A 0D770AA6 57BA1A47

H = 0852F562 3B89DD57 AEB4781F E54DF14E EAFBC135 0613763A 0D770AA6 57BA1A47

8. Security Considerations
8.セキュリティの考慮事項

This entire document is about security considerations.

この全体のドキュメントは、セキュリティ上の考慮事項についてです。

Current cryptographic resistance of GOST R 34.11-94 hash algorithm is estimated as 2^128 operations of computations of step hash functions. (There is a known method to reduce this estimate to 2^105 operations, but it demands padding the colliding message with 1024 random bit blocks each of 256-bit length; thus, it cannot be used in any practical implementation).

GOST R 34.11から94のハッシュアルゴリズムの現在の暗号抵抗はステップハッシュ関数の計算の2 ^ 128の操作として推定されます。 (そこ2 ^ 105の操作にこの推定値を低減することが知られている方法であるが、それは、1024のランダムビットブロック256ビット長の各衝突メッセージをパディング要求するので、これは、任意の実用的な実装では使用できません)。

9. Normative References
9.引用規格

[GOST28147] "Cryptographic Protection for Data Processing System", GOST 28147-89, Gosudarstvennyi Standard of USSR, Government Committee of the USSR for Standards, 1989. (In Russian)

、GOST 28147から89、ソ連、(ロシア語で)基準のソ連の政府委員会、1989年のGosudarstvennyi規格[GOST28147]「データ処理システムのための暗号化保護」

[GOST3411] "Information technology. Cryptographic Data Security. Hashing function.", GOST R 34.10-94, Gosudarstvennyi Standard of Russian Federation, Government Committee of the Russia for Standards, 1994. (In Russian)

[GOST3411]「情報技術。暗号データ​​セキュリティ。ハッシュ関数。」、GOST R 34.10から94、(ロシア)ロシア連邦、規格のためのロシアの政府委員会、1994年のGosudarstvennyi標準

10. Contributors
10.協力者

Dmitry Kabelev Cryptocom, Ltd. 14 Kedrova St., Bldg. 2 Moscow, 117218 Russian Federation

ドミトリーKabelev Cryptocom、(株)14 Kedrovaセント、ビル。 2モスクワ、117218ロシア連邦

EMail: kdb@cryptocom.ru

メールアドレス:kdb@cryptocom.ru

Igor Ustinov Cryptocom, Ltd. 14 Kedrova St., Bldg. 2 Moscow, 117218 Russian Federation

イゴール・ユスティノフCryptocom、(株)14 Kedrovaセント、ビル。 2モスクワ、117218ロシア連邦

EMail: igus@cryptocom.ru

メールアドレス:igus@cryptocom.ru

Sergey Vyshensky Moscow State University Leninskie gory, 1 Moscow, 119991 Russian Federation

セルゲイ条Vyshenskiiモスクワ大学のレーニンヒルズ、1モスクワ119991ロシア連邦

EMail: svysh@pn.sinp.msu.ru

メールアドレス:svysh@pn.sinp.msu.ru

Author's Address

著者のアドレス

Vasily Dolmatov, Ed. Cryptocom, Ltd. 14 Kedrova St., Bldg. 2 Moscow, 117218 Russian Federation

ワシーリーDolmatov、エド。 Cryptocom、(株)14 Kedrovaセント、ビル。 2モスクワ、117218ロシア連邦

EMail: dol@cryptocom.ru

メールアドレス:dol@cryptocom.ru