[要約] RFC 7801は、ロシアのブロック暗号「Kuznyechik」に関する要約と目的を提供しています。このRFCの目的は、Kuznyechik暗号の仕様とセキュリティに関する情報を提供することです。

Independent Submission                                  V. Dolmatov, Ed.
Request for Comments: 7801                  Research Computer Center MSU
Category: Informational                                       March 2016
ISSN: 2070-1721
        

GOST R 34.12-2015: Block Cipher "Kuznyechik"

GOST R 34.12-2015:ブロック暗号「Kuznyechik」

Abstract

概要

This document is intended to be a source of information about the Russian Federal standard GOST R 34.12-2015 describing the block cipher with a block length of n=128 bits and a key length of k=256 bits, which is also referred to as "Kuznyechik". This algorithm is one of the set of Russian cryptographic standard algorithms (called GOST algorithms).

このドキュメントは、ロシア連邦の標準GOST R 34.12-2015に関する情報源として、ブロック長がn = 128ビット、キー長がk = 256ビットのブロック暗号について説明しています。クズニェチク」。このアルゴリズムは、ロシアの暗号標準アルゴリズム(GOSTアルゴリズムと呼ばれる)のセットの1つです。

Status of This Memo

本文書の状態

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

このドキュメントはInternet Standards Trackの仕様ではありません。情報提供を目的として公開されています。

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エディターは、このドキュメントを独自の裁量で公開することを選択し、実装または展開に対するその価値については何も述べていません。 RFC Editorによって公開が承認されたドキュメントは、どのレベルのインターネット標準の候補にもなりません。 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/rfc7801.

このドキュメントの現在のステータス、エラータ、およびフィードバックの提供方法に関する情報は、http://www.rfc-editor.org/info/rfc7801で入手できます。

Copyright Notice

著作権表示

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

Copyright(c)2016 IETF Trustおよびドキュメントの作成者として識別された人物。全著作権所有。

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文書に関するIETFトラストの法的規定(http://trustee.ietf.org/license-info)の対象であり、この文書の発行日に有効です。これらのドキュメントは、このドキュメントに関するあなたの権利と制限を説明しているため、注意深く確認してください。

Table of Contents

目次

   1.  Scope . . . . . . . . . . . . . . . . . . . . . . . . . . . .   2
   2.  General Information . . . . . . . . . . . . . . . . . . . . .   3
   3.  Definitions and Notations . . . . . . . . . . . . . . . . . .   3
     3.1.  Definitions . . . . . . . . . . . . . . . . . . . . . . .   3
     3.2.  Notations . . . . . . . . . . . . . . . . . . . . . . . .   4
   4.  Parameter Values  . . . . . . . . . . . . . . . . . . . . . .   6
     4.1.  Nonlinear Bijection . . . . . . . . . . . . . . . . . . .   6
     4.2.  Linear Transformation . . . . . . . . . . . . . . . . . .   7
     4.3.  Transformations . . . . . . . . . . . . . . . . . . . . .   8
     4.4.  Key Schedule  . . . . . . . . . . . . . . . . . . . . . .   9
     4.5.  Basic Encryption Algorithm  . . . . . . . . . . . . . . .   9
       4.5.1.  Encryption  . . . . . . . . . . . . . . . . . . . . .   9
       4.5.2.  Decryption  . . . . . . . . . . . . . . . . . . . . .   9
   5.  Examples (Informative)  . . . . . . . . . . . . . . . . . . .  10
     5.1.  Transformation S  . . . . . . . . . . . . . . . . . . . .  10
     5.2.  Transformation R  . . . . . . . . . . . . . . . . . . . .  10
     5.3.  Transformation L  . . . . . . . . . . . . . . . . . . . .  10
     5.4.  Key Schedule  . . . . . . . . . . . . . . . . . . . . . .  11
     5.5.  Test Encryption . . . . . . . . . . . . . . . . . . . . .  12
     5.6.  Test Decryption . . . . . . . . . . . . . . . . . . . . .  13
   6.  Security Considerations . . . . . . . . . . . . . . . . . . .  13
   7.  References  . . . . . . . . . . . . . . . . . . . . . . . . .  14
     7.1.  Normative References  . . . . . . . . . . . . . . . . . .  14
     7.2.  Informative References  . . . . . . . . . . . . . . . . .  14
   Author's Address  . . . . . . . . . . . . . . . . . . . . . . . .  14
        
1. Scope
1. 範囲

The Russian Federal standard [GOST3412-2015] specifies basic block ciphers used as cryptographic techniques for information processing and information protection including the provision of confidentiality, authenticity, and integrity of information during information transmission, processing, and storage in computer-aided systems.

ロシア連邦規格[GOST3412-2015]は、情報の送信、処理、およびコンピューター支援システムでの保管中の情報の機密性、信頼性、および完全性の提供を含む、情報処理および情報保護のための暗号技術として使用される基本的なブロック暗号を指定します。

The cryptographic algorithms specified in this standard are designed both for hardware and software implementation. They comply with modern cryptographic requirements and put no restrictions on the confidentiality level of the protected information.

この標準で指定されている暗号化アルゴリズムは、ハードウェアとソフトウェアの両方の実装用に設計されています。それらは最新の暗号化要件に準拠し、保護された情報の機密性レベルに制限を課しません。

The standard applies to development, operation, and modernization of the information systems of various purposes.

この規格は、さまざまな目的の情報システムの開発、運用、最新化に適用されます。

2. General Information
2. 一般情報

The block cipher "Kuznyechik" [GOST3412-2015] was developed by the Center for Information Protection and Special Communications of the Federal Security Service of the Russian Federation with participation of the Open Joint-Stock company "Information Technologies and Communication Systems" (InfoTeCS JSC). GOST R 34.12-2015 was approved and introduced by Decree #749 of the Federal Agency on Technical Regulating and Metrology on June 19, 2015.

ブロック暗号「Kuznyechik」[GOST3412-2015]は、ロシア連邦の連邦安全保障局の情報保護および特別通信センターによって、オープン合資会社「情報技術および通信システム」(InfoTeCS JSC)の参加を得て開発されました)。 GOST R 34.12-2015は、2015年6月19日に技術規制と計量に関する連邦政府の法令#749によって承認および導入されました。

Terms and concepts in the standard comply with the following international standards:

この規格の用語と概念は、次の国際規格に準拠しています。

o ISO/IEC 10116 [ISO-IEC10116] and

o ISO / IEC 10116 [ISO-IEC10116]および

o series of standards ISO/IEC 18033 [ISO-IEC18033-1] [ISO-IEC18033-3].

o 一連の規格ISO / IEC 18033 [ISO-IEC18033-1] [ISO-IEC18033-3]。

3. Definitions and Notations
3. 定義と表記

The following terms and their corresponding definitions are used in the standard.

以下の用語とそれに対応する定義が規格で使用されています。

3.1. Definitions
3.1. 定義

Definitions

定義

encryption algorithm: process that transforms plaintext into ciphertext (Section 2.19 of [ISO-IEC18033-1]),

暗号化アルゴリズム:平文を暗号文に変換するプロセス([ISO-IEC18033-1]のセクション2.19)、

decryption algorithm: process that transforms ciphertext into plaintext (Section 2.14 of [ISO-IEC18033-1]),

復号化アルゴリズム:暗号文を平文に変換するプロセス([ISO-IEC18033-1]のセクション2.14)、

basic block cipher: block cipher that for a given key provides a single invertible mapping of the set of fixed-length plaintext blocks into ciphertext blocks of the same length,

基本ブロック暗号:特定の鍵に対して、固定長の平文ブロックのセットを同じ長さの暗号文ブロックに単一の可逆マッピングを提供するブロック暗号。

block: string of bits of a defined length (Section 2.6 of [ISO-IEC18033-1]),

ブロック:定義された長さのビットの文字列([ISO-IEC18033-1]のセクション2.6)、

block cipher: symmetric encipherment system with the property that the encryption algorithm operates on a block of plaintext, i.e., a string of bits of a defined length, to yield a block of ciphertext (Section 2.7 of [ISO-IEC18033-1]),

ブロック暗号:暗号化アルゴリズムが平文のブロック、つまり定義された長さのビットの文字列を操作して暗号文のブロックを生成するという特性を持つ対称暗号化システム([ISO-IEC18033-1]のセクション2.7)、

Note: In GOST R 34.12-2015, it is established that the terms "block cipher" and "block encryption algorithm" are synonyms.

注:GOST R 34.12-2015では、「ブロック暗号」と「ブロック暗号化アルゴリズム」という用語は同義語であると規定されています。

encryption: reversible transformation of data by a cryptographic algorithm to produce ciphertext, i.e., to hide the information content of the data (Section 2.18 of [ISO-IEC18033-1]),

暗号化:暗号化アルゴリズムによるデータの可逆変換、つまり暗号文を生成する、つまりデータの情報内容を非表示にする([ISO-IEC18033-1]のセクション2.18)、

round key: sequence of symbols that is calculated from the key and controls a transformation for one round of a block cipher,

ラウンドキー:キーから計算され、ブロック暗号の1ラウンドの変換を制御する一連のシンボル

key: sequence of symbols that controls the operation of a cryptographic transformation (e.g., encipherment and decipherment) (Section 2.21 of [ISO-IEC18033-1]),

キー:暗号化変換の操作を制御する一連のシンボル(暗号化や解読など)([ISO-IEC18033-1]のセクション2.21)、

Note: In GOST R 34.12-2015, the key must be a binary sequence.

注:GOST R 34.12-2015では、キーはバイナリシーケンスである必要があります。

plaintext: unencrypted information (Section 3.11 of [ISO-IEC10116]),

平文:暗号化されていない情報([ISO-IEC10116]のセクション3.11)、

key schedule: calculation of round keys from the key,

鍵スケジュール:鍵からのラウンド鍵の計算、

decryption: reversal of a corresponding encipherment (Section 2.13 of [ISO-IEC18033-1]),

復号化:対応する暗号化の逆転([ISO-IEC18033-1]のセクション2.13)、

symmetric cryptographic technique: cryptographic technique that uses the same secret key for both the originator's and the recipient's transformation (Section 2.32 of [ISO-IEC18033-1]),

対称暗号技術:発信者と受信者の両方の変換に同じ秘密鍵を使用する暗号技術([ISO-IEC18033-1]のセクション2.32)、

cipher: alternative term for encipherment system (Section 2.20 of [ISO-IEC18033-1]), and

暗号:暗号化システムの代替用語([ISO-IEC18033-1]のセクション2.20)、および

ciphertext: data that has been transformed to hide its information content (Section 3.3 of [ISO-IEC10116]).

暗号文:情報内容を隠すために変換されたデータ([ISO-IEC10116]のセクション3.3)。

3.2. Notations
3.2. 記法

The following notations are used in the standard:

標準では次の表記法が使用されています。

V* the set of all binary vector strings of a finite length (hereinafter referred to as the strings) including the empty string,

V *空の文字列を含む有限長のすべてのバイナリベクトル文字列(以下、文字列と呼ぶ)のセット。

V_s the set of all binary strings of length s, where s is a non-negative integer; substrings and string components are enumerated from right to left starting from zero,

V_s長さsのすべてのバイナリ文字列のセット。sは負ではない整数です。部分文字列と文字列コンポーネントは、0から始まり、右から左に列挙されます。

U[*]W direct (Cartesian) product of two sets, U and W,

U [*] W 2つのセットの直積(デカルト)積、UとW、

|A| the number of components (the length) of a string A belonging to V* (if A is an empty string, then |A| = 0),

| A | V *に属する文字列Aの構成要素の数(長さ)(Aが空の文字列の場合、| A | = 0)、

A||B concatenation of strings A and B both belonging to V*, i.e., a string from V_(|A|+|B|), where the left substring from V_|A| is equal to A, and the right substring from V_|B| is equal to B,

A || Bは、どちらもV *に属する文字列AとBの連結です。つまり、V_(| A | + | B |)の文字列で、V_ | A |の左側の部分文字列です。はAに等しく、V_ | B |の右部分文字列Bに等しい、

Z_(2^n) ring of residues modulo 2^n,

Z ^(2 ^ n)2 ^ nを法とする剰余の環

Q finite field GF(2)[x]/p(x), where p(x)=x^8+x^7+x^6+x+1 belongs to GF(2)[x]; elements of field Q are represented by integers in such way that element z_0+z_1*theta+...+z_7*theta^7 belonging to Q corresponds to integer z_0+2*z_1+...+2^7*z_7, where z_i=0 or z_i=1, i=0,1,...,7 and theta denotes a residue class modulo p(x) containing x,

Q有限体GF(2)[x] / p(x)、ここでp(x)= x ^ 8 + x ^ 7 + x ^ 6 + x + 1はGF(2)[x]に属します。フィールドQの要素は、Qに属する要素z_0 + z_1 * theta + ... + z_7 * theta ^ 7が整数z_0 + 2 * z_1 + ... + 2 ^ 7 * z_7に対応するように整数で表されます。ここで、z_i = 0またはz_i = 1、i = 0,1、...、7であり、thetaはxを含むp(x)を法とする剰余クラスを示します。

(xor) exclusive-or of the two binary strings of the same length,

(xor)同じ長さの2つのバイナリ文字列の排他的論理和、

Vec_s: Z_(2^s) -> V_s bijective mapping that maps an element from ring Z_(2^s) into its binary representation, i.e., for an element z of the ring Z_(2^s), represented by the residue z_0 + (2*z_1) + ... + (2^(s-1)*z_(s-1)), where z_i in {0, 1}, i = 0, ..., n-1, the equality Vec_s(z) = z_(s-1)||...||z_1||z_0 holds,

Vec_s:Z_(2 ^ s)->リングZ_(2 ^ s)の要素をそのバイナリ表現にマッピングするV_s全単射マッピング。つまり、残差によって表されるリングZ_(2 ^ s)の要素zのz_0 +(2 * z_1)+ ... +(2 ^(s-1)* z_(s-1))、ただし、z_iは{0、1}で、i = 0、...、n-1等式Vec_s(z)= z_(s-1)|| ... || z_1 || z_0が成り立つ、

Int_s: V_s -> Z_(2^s) the mapping inverse to the mapping Vec_s, i.e., Int_s = Vec_s^(-1),

Int_s:V_s-> Z_(2 ^ s)マッピングVec_sの逆マッピング、つまり、Int_s = Vec_s ^(-1)、

delta: V_8 -> Q bijective mapping that maps a binary string from V_8 into an element from field Q as follows: string z_7||...||z_1||z_0, where z_i in {0, 1}, i = 0, ..., 7, corresponds to the element z_0+(z_1*theta)+...+(z_7*theta^7) belonging to Z,

delta:V_8-> Qバイジェクティブマッピング。V_8のバイナリ文字列を次のようにフィールドQの要素にマッピングします:string z_7 || ... || z_1 || z_0、where z_i in {0、1}、i = 0 、...、7、Zに属する要素z_0 +(z_1 * theta)+ ... +(z_7 * theta ^ 7)に対応​​し、

nabla: Q -> V8 the mapping inverse to the mapping delta, i.e., delta = nabla^(-1),

nabla:Q-> V8マッピングデルタの逆マッピング、つまり、delta = nabla ^(-1)、

PS composition of mappings, where the mapping S applies first, and

PSマッピングの構成。マッピングSが最初に適用されます。

P^s composition of mappings P^(s-1) and P, where P^1=P.

マッピングP ^(s-1)およびPのP ^ s構成。ここで、P ^ 1 = Pです。

4. Parameter Values
4. パラメータ値
4.1. Nonlinear Bijection
4.1. 非線形バイジェクション

The bijective nonlinear mapping is a substitution: Pi = (Vec_8)Pi'(Int_8): V_8 -> V_8, where Pi': Z_(2^8) -> Z_(2^8). The values of the substitution Pi' are specified below as an array Pi' = (Pi'(0), Pi'(1), ... , Pi'(255)):

全単射非線形マッピングは置換です:Pi =(Vec_8)Pi '(Int_8):V_8-> V_8、ここでPi':Z_(2 ^ 8)-> Z_(2 ^ 8)。置換Pi 'の値は、配列Pi' =(Pi '(0)、Pi'(1)、...、Pi '(255))として以下に指定されています。

Pi' = ( 252, 238, 221, 17, 207, 110, 49, 22, 251, 196, 250, 218, 35, 197, 4, 77, 233, 119, 240, 219, 147, 46, 153, 186, 23, 54, 241, 187, 20, 205, 95, 193, 249, 24, 101, 90, 226, 92, 239, 33, 129, 28, 60, 66, 139, 1, 142, 79, 5, 132, 2, 174, 227, 106, 143, 160, 6, 11, 237, 152, 127, 212, 211, 31, 235, 52, 44, 81, 234, 200, 72, 171, 242, 42, 104, 162, 253, 58, 206, 204, 181, 112, 14, 86, 8, 12, 118, 18, 191, 114, 19, 71, 156, 183, 93, 135, 21, 161, 150, 41, 16, 123, 154, 199, 243, 145, 120, 111, 157, 158, 178, 177, 50, 117, 25, 61, 255, 53, 138, 126, 109, 84, 198, 128, 195, 189, 13, 87, 223, 245, 36, 169, 62, 168, 67, 201, 215, 121, 214, 246, 124, 34, 185, 3, 224, 15, 236, 222, 122, 148, 176, 188, 220, 232, 40, 80, 78, 51, 10, 74, 167, 151, 96, 115, 30, 0, 98, 68, 26, 184, 56, 130, 100, 159, 38, 65, 173, 69, 70, 146, 39, 94, 85, 47, 140, 163, 165, 125, 105, 213, 149, 59, 7, 88, 179, 64, 134, 172, 29, 247, 48, 55, 107, 228, 136, 217, 231, 137, 225, 27, 131, 73, 76, 63, 248, 254, 141, 83, 170, 144, 202, 216, 133, 97, 32, 113, 103, 164, 45, 43, 9, 91, 203, 155, 37, 208, 190, 229, 108, 82, 89, 166, 116, 210, 230, 244, 180, 192, 209, 102, 175, 194, 57, 75, 99, 182).

Pi '=(252、238、221、17、207、110、49、22、251、196、250、218、35、197、4、77、233、119、240、219、147、46、153、 186、23、54、241、187、20、205、95、193、249、24、101、90、226、92、239、33、129、28、60、66、139、1、142、79、 5、132、2、174、227、106、143、160、6、11、237、152、127、212、211、31、235、52、44、81、234、200、72、171、242、 42、104、162、253、58、206、204、181、112、14、86、8、12、118、18、191、114、19、71、156、183、93、135、21、161、 150、41、16、123、154、199、243、145、120、111、157、158、178、177、50、117、25、61、255、53、138、126、109、84、198、 128、195、189、13、87、223、245、36、169、62、168、67、201、215、121、214、246、124、34、185、3、224、15、236、222、 122、148、176、188、220、232、40、80、78、51、10、74、167、151、96、115、30、0、98、68、26、184、56、130、100、 159、38、65、173、69、70、146、39、94、85、47、140、163、165、125、105、213、149、59、7、88、179、64、134、172、 29、247、48、55、107、228、136、217、231、137、225、27、131、73、76、63、248、254、141、83、 170、144、202、216、133、97、32、113、103、164、45、43、9、91、203、155、37、208、190、229、108、82、89、166、116、 210、230、244、180、192、209、102、175、194、57、75、99、182)。

   Pi^(-1) is the inverse of Pi; the values of the substitution Pi^(-1)'
   are specified below as an array Pi^(-1)' = (Pi^(-1)'(0), Pi^(-1)'(1),
   ... , Pi^(-1)'(255)):
        

Pi^(-1)' = ( 165, 45, 50, 143, 14, 48, 56, 192, 84, 230, 158, 57, 85, 126, 82, 145, 100, 3, 87, 90, 28, 96, 7, 24, 33, 114, 168, 209, 41, 198, 164, 63, 224, 39, 141, 12, 130, 234, 174, 180, 154, 99, 73, 229, 66, 228, 21, 183, 200, 6, 112, 157, 65, 117, 25, 201, 170, 252, 77, 191, 42, 115, 132, 213, 195, 175, 43, 134, 167, 177, 178, 91, 70, 211, 159, 253, 212, 15, 156, 47, 155, 67, 239, 217, 121, 182, 83, 127, 193, 240, 35, 231, 37, 94, 181, 30, 162, 223, 166, 254, 172, 34, 249, 226, 74, 188, 53, 202, 238, 120, 5, 107, 81, 225, 89, 163, 242, 113, 86, 17, 106, 137, 148, 101, 140, 187, 119, 60, 123, 40, 171, 210, 49, 222, 196, 95, 204, 207, 118, 44, 184, 216, 46, 54, 219, 105, 179, 20, 149, 190, 98, 161, 59, 22, 102, 233, 92, 108, 109, 173, 55, 97, 75, 185, 227, 186, 241, 160, 133, 131, 218, 71, 197, 176, 51, 250, 150, 111, 110, 194, 246, 80, 255, 93, 169, 142, 23, 27, 151, 125, 236, 88, 247, 31, 251, 124, 9, 13, 122, 103, 69, 135, 220, 232, 79, 29, 78, 4, 235, 248, 243, 62, 61, 189, 138, 136, 221, 205, 11, 19, 152, 2, 147, 128, 144, 208, 36, 52, 203, 237, 244, 206, 153, 16, 68, 64, 146, 58, 1, 38, 18, 26, 72, 104, 245, 129, 139, 199, 214, 32, 10, 8, 0, 76, 215, 116 ).

Pi ^(-1) '=(165、45、50、143、14、48、56、192、84、230、158、57、85、126、82、145、100、3、87、90、28 、96、7、24、33、114、168、209、41、198、164、63、224、39、141、12、130、234、174、180、154、99、73、229、66、228 、21、183、200、6、112、157、65、117、25、201、170、252、77、191、42、115、132、213、195、175、43、134、167、177、178 、91、70、211、159、253、212、15、156、47、155、67、239、217、121、182、83、127、193、240、35、231、37、94、181、30 、162、223、166、254、172、34、249、226、74、188、53、202、238、120、5、107、81、225、89、163、242、113、86、17、106 、137、148、101、140、187、119、60、123、40、171、210、49、222、196、95、204、207、118、44、184、216、46、54、219、105 、179、20、149、190、98、161、59、22、102、233、92、108、109、173、55、97、75、185、227、186、241、160、133、131、218 、71、197、176、51、250、150、111、110、194、246、80、255、93、169、142、23、27、151、125、236、88、247、31、251、124 、9、13、122、103、69、135、220、232、79、29、78、4、235、248、243、62、61、189、138、 136、221、205、11、19、152、2、147、128、144、208、36、52、203、237、244、206、153、16、68、64、146、58、1、38、 18、26、72、104、245、129、139、199、214、32、10、8、0、76、215、116)。

4.2. Linear Transformation
4.2. 線形変換

The linear transformation is denoted by l: (V_8)^16 -> V_8, and defined as:

線形変換はl:(V_8)^ 16-> V_8で表され、次のように定義されます。

l(a_15,...,a_0) = nabla(148*delta(a_15) + 32*delta(a_15) + 133*delta(a_13) + 16*delta(a_12) + 194*delta(a_11) + 192*delta(a_10) + 1*delta(a_9) + 251*delta(a_8) + 1*delta(a_7) + 192*delta(a_6) + 194*delta(a_5) + 16*delta(a_4) + 133*delta(a_3) + 32*delta(a_2) + 148*delta(a_1) +1*delta(a_0)),

l(a_15、...、a_0)= nabla(148 * delta(a_15)+ 32 * delta(a_15)+ 133 * delta(a_13)+ 16 * delta(a_12)+ 194 * delta(a_11)+ 192 * delta(a_10)+ 1 * delta(a_9)+ 251 * delta(a_8)+ 1 * delta(a_7)+ 192 * delta(a_6)+ 194 * delta(a_5)+ 16 * delta(a_4)+ 133 * delta (a_3)+ 32 * delta(a_2)+ 148 * delta(a_1)+ 1 * delta(a_0))、

for all a_i belonging to V_8, i = 0, 1, ..., 15, where the addition and multiplication operations are in the field Q, and constants are elements of the field as defined above.

V_8に属するすべてのa_iの場合、i = 0、1、...、15で、加算および乗算演算はフィールドQにあり、定数は上記で定義したフィールドの要素です。

4.3. Transformations
4.3. 変革

The following transformations are applicable for encryption and decryption algorithms:

次の変換は、暗号化および復号化アルゴリズムに適用できます。

X[x]:V_128->V_128 X[k](a)=k(xor)a, where k, a belong to V_128,

X [x]:V_128-> V_128 X [k](a)= k(xor)a、ここでk、aはV_128に属し、

S:V_128-> V_128 S(a)=(a_15||...||a_0)=pi(a_15)||...||pi(a_0), where a_15||...||a_0 belongs to V_128, a_i belongs to V_8, i=0,1,...,15,

S:V_128-> V_128 S(a)=(a_15 || ... || a_0)= pi(a_15)|| ... || pi(a_0)、ここでa_15 || ... || a_0は所属V_128に、a_iはV_8に属し、i = 0,1、...、15、

S^(-1):V_128-> V_128 the inverse transformation of S, which may be calculated, for example, as follows: S^(-1)(a_15||...||a_0)=pi^(-1) (a_15)||...||pi^(-1)(a_0), where a_15||...||a_0 belongs to V_128, a_i belongs to V_8, i=0,1,...,15,

S ^(-1):V_128-> V_128 Sの逆変換。たとえば、次のように計算できます:S ^(-1)(a_15 || ... || a_0)= pi ^(- 1)(a_15)|| ... || pi ^(-1)(a_0)、ここでa_15 || ... || a_0はV_128に属し、a_iはV_8に属し、i = 0,1、... 、15、

R:V_128-> V_128 R(a_15||...||a_0)=l(a_15,...,a_0)||a_15||...||a_1, where a_15||...||a_0 belongs to V_128, a_i belongs to V_8, i=0,1,...,15,

R:V_128-> V_128 R(a_15 || ... || a_0)= l(a_15、...、a_0)|| a_15 || ... || a_1、ここでa_15 || ... || a_0はV_128に属し、a_iはV_8に属し、i = 0,1、...、15、

L:V_128-> V_128 L(a)=R^(16)(a), where a belongs to V_128,

L:V_128-> V_128 L(a)= R ^(16)(a)、ここでaはV_128に属し、

R^(-1):V_128-> V_128 the inverse transformation of R, which may be calculated, for example, as follows: R^(-1)(a_15||...||a_0)=a_14|| a_13||...||a_0||l(a_14,a_13,...,a_0,a_15), where a_15||...||a_0 belongs to V_128, a_i belongs to V_8, i=0,1,...,15,

R ^(-1):V_128-> V_128 Rの逆変換。たとえば、次のように計算できます。R ^(-1)(a_15 || ... || a_0)= a_14 || a_13 || ... || a_0 || l(a_14、a_13、...、a_0、a_15)、a_15 || ... || a_0はV_128に属し、a_iはV_8に属し、i = 0,1 、...、15、

   L^(-1):V_128-> V_128  L^(-1)(a)=(R^(-1))(16)(a), where a belongs to
      V_128, and
        

F[k]:V_128[*]V_128 -> V_128[*]V_128 F[k](a_1,a_0)=(LSX[k](a_1)(xor)a_0,a_1), where k, a_0, a_1 belong to V_128.

F [k]:V_128 [*] V_128-> V_128 [*] V_128 F [k](a_1、a_0)=(LSX [k](a_1)(xor)a_0、a_1)、ここでk、a_0、a_1は属するV_128に。

4.4. Key Schedule
4.4. 主要スケジュール

Key schedule uses round constants C_i belonging to V_128, i=1, 2, ..., 32, defined as

キースケジュールは、V_128、i = 1、2、...、32に属するラウンド定数C_iを使用します。

C_i=L(Vec_128(i)), i=1,2,...,32.

C_i = L(Vec_128(i))、i = 1,2、...、32。

Round keys K_i, i=1, 2, ..., 10 are derived from key K=k_255||...||k_0 belonging to V_256, k_i belongs to V_1, i=0, 1, ..., 255, as follows:

ラウンドキーK_i、i = 1、2、...、10は、キーK = k_255 || ... || k_0からV_256に属し、k_iはV_1に属し、i = 0、1、...、255 、 次のように:

   K_1=k_255||...||k_128;
   K_2=k_127||...||k_0;
   (K_(2i+1),K_(2i+2))=F[C_(8(i-1)+8)]...
    F[C_(8(i-1)+1)](K_(2i-1),K_(2i)), i=1,2,3,4.
        
4.5. Basic Encryption Algorithm
4.5. 基本的な暗号化アルゴリズム
4.5.1. Encryption
4.5.1. 暗号化

Depending on the values of round keys K_1,...,K_10, the encryption algorithm is a substitution E_(K_1,...,K_10) defined as follows:

ラウンドキーK_1、...、K_10の値に応じて、暗号化アルゴリズムは次のように定義された置換E_(K_1、...、K_10)です。

E_(K_1,...,K_10)(a)=X[K_10]LSX[K_9]...LSX[K_2]LSX[K_1](a),

E_(K_1、...、K_10)(a)= X [K_10] LSX [K_9] ... LSX [K_2] LSX [K_1](a)、

where a belongs to V_128.

ここで、aはV_128に属しています。

4.5.2. Decryption
4.5.2. 解読

Depending on the values of round keys K_1,...,K_10, the decryption algorithm is a substitution D_(K_1,...,K_10) defined as follows:

ラウンドキーK_1、...、K_10の値に応じて、復号化アルゴリズムは次のように定義される置換D_(K_1、...、K_10)です。

D_(K_1,...,K_10)(a)=X[K_1]L^(-1)S^(-1)X[K_2]... L^(-1)S^(-1)X[K_9] L^(-1)S^(-1)X[K_10](a),

D_(K_1、...、K_10)(a)= X [K_1] L ^(-1)S ^(-1)X [K_2] ... L ^(-1)S ^(-1)X [K_9] L ^(-1)S ^(-1)X [K_10](a)、

where a belongs to V_128.

ここで、aはV_128に属しています。

5. Examples (Informative)
5. 例(参考)

This section is for information only and is not a normative part of the standard.

このセクションは情報提供のみを目的としており、標準の標準的な部分ではありません。

5.1. Transformation S
5.1. 変身S

S(ffeeddccbbaa99881122334455667700) = b66cd8887d38e8d77765aeea0c9a7efc, S(b66cd8887d38e8d77765aeea0c9a7efc) = 559d8dd7bd06cbfe7e7b262523280d39, S(559d8dd7bd06cbfe7e7b262523280d39) = 0c3322fed531e4630d80ef5c5a81c50b, S(0c3322fed531e4630d80ef5c5a81c50b) = 23ae65633f842d29c5df529c13f5acda.

S(ffeeddccbbaa99881122334455667700)= b66cd8887d38e8d77765aeea0c9a7efc、S(b66cd8887d38e8d77765aeea0c9a7efc)= 559d8dd7bd06cbfe7e7b262523280d39、S(559d8dd7bd06cbfe7e7b262523280d39)= 0c3322fed531e4630d80ef5c5a81c50b、S(0c3322fed531e4630d80ef5c5a81c50b)= 23ae65633f842d29c5df529c13f5acda。

5.2. Transformation R
5.2. 変身R

R(00000000000000000000000000000100) = 94000000000000000000000000000001, R(94000000000000000000000000000001) = a5940000000000000000000000000000, R(a5940000000000000000000000000000) = 64a59400000000000000000000000000, R(64a59400000000000000000000000000) = 0d64a594000000000000000000000000.

R(000000000000000000000000000000000100)= 94000000000000000000000000000001、R(94000000000000000000000000000001)= a5940000000000000000000000000000、R(a59400000000000000000000000000000000)= 64a59400000000000000000000000000、R(64a5940000000000000000000000000000)= 0d6400000000000000。

5.3. Transformation L
5.3. 変身L

L(64a59400000000000000000000000000) = d456584dd0e3e84cc3166e4b7fa2890d, L(d456584dd0e3e84cc3166e4b7fa2890d) = 79d26221b87b584cd42fbc4ffea5de9a, L(79d26221b87b584cd42fbc4ffea5de9a) = 0e93691a0cfc60408b7b68f66b513c13, L(0e93691a0cfc60408b7b68f66b513c13) = e6a8094fee0aa204fd97bcb0b44b8580.

L(64a59400000000000000000000000000)= d456584dd0e3e84cc3166e4b7fa2890d、L(d456584dd0e3e84cc3166e4b7fa2890d)= 79d26221b87b584cd42fbc4ffea5de9a、L(79d26221b87b584cd42fbc4ffea5de9a)= 0e93691a0cfc60408b7b68f66b513c13、L(0e93691a0cfc60408b7b68f66b513c13)= e6a8094fee0aa204fd97bcb0b44b8580。

5.4. Key Schedule
5.4. 主要スケジュール

In this test example, the key is equal to:

このテスト例では、キーは次のようになります。

K = 8899aabbccddeeff0011223344556677fedcba9876543210012345678 9abcdef.

K = 8899aabbccddeeff0011223344556677fedcba9876543210012345678 9abcdef。

K_1 = 8899aabbccddeeff0011223344556677, K_2 = fedcba98765432100123456789abcdef.

K_1 = 8899aabbccddeeff0011223344556677、K_2 = fedcba98765432100123456789abcdef。

   C_1 = 6ea276726c487ab85d27bd10dd849401,
   X[C_1](K_1) = e63bdcc9a09594475d369f2399d1f276,
   SX[C_1](K_1) = 0998ca37a7947aabb78f4a5ae81b748a,
   LSX[C_1](K_1) = 3d0940999db75d6a9257071d5e6144a6,
   F[C_1](K_1, K_2) = = (c3d5fa01ebe36f7a9374427ad7ca8949,
          8899aabbccddeeff0011223344556677).
        
   C_2 = dc87ece4d890f4b3ba4eb92079cbeb02,
   F [C_2]F [C_1](K_1, K_2) = (37777748e56453377d5e262d90903f87,
          c3d5fa01ebe36f7a9374427ad7ca8949).
        
   C_3 = b2259a96b4d88e0be7690430a44f7f03,
   F[C_3]...F[C_1](K_1, K_2) = (f9eae5f29b2815e31f11ac5d9c29fb01,
          37777748e56453377d5e262d90903f87).
        
   C_4 = 7bcd1b0b73e32ba5b79cb140f2551504,
   F[C_4]...F[C_1](K_1, K_2) = (e980089683d00d4be37dd3434699b98f,
          f9eae5f29b2815e31f11ac5d9c29fb01).
        
   C_5 = 156f6d791fab511deabb0c502fd18105,
   F[C_5]...F[C_1](K_1, K_2) = (b7bd70acea4460714f4ebe13835cf004,
          e980089683d00d4be37dd3434699b98f).
        
   C_6 = a74af7efab73df160dd208608b9efe06,
   F[C_6]...F[C_1](K_1, K_2) = (1a46ea1cf6ccd236467287df93fdf974,
          b7bd70acea4460714f4ebe13835cf004).
        
   C_7 = c9e8819dc73ba5ae50f5b570561a6a07,
   F[C_7]...F [C_1](K_1, K_2) = (3d4553d8e9cfec6815ebadc40a9ffd04,
          1a46ea1cf6ccd236467287df93fdf974).
        

C_8 = f6593616e6055689adfba18027aa2a08, (K_3, K_4) = F [C_8]...F [C_1](K_1, K_2) = (db31485315694343228d6aef8cc78c44, 3d4553d8e9cfec6815ebadc40a9ffd04).

C_8 = f6593616e6055689adfba18027aa2a08、(K_3、K_4)= F [C_8] ... F [C_1](K_1、K_2)=(db31485315694343228d6aef8cc78c44、3d4553d8e9cfec6815ebadc40a9ffd04)

The round keys K_i, i = 1, 2, ..., 10, take the following values:

ラウンドキーK_i、i = 1、2、...、10は次の値を取ります。

K_1 = 8899aabbccddeeff0011223344556677, K_2 = fedcba98765432100123456789abcdef, K_3 = db31485315694343228d6aef8cc78c44, K_4 = 3d4553d8e9cfec6815ebadc40a9ffd04, K_5 = 57646468c44a5e28d3e59246f429f1ac, K_6 = bd079435165c6432b532e82834da581b, K_7 = 51e640757e8745de705727265a0098b1, K_8 = 5a7925017b9fdd3ed72a91a22286f984, K_9 = bb44e25378c73123a5f32f73cdb6e517, K_10 = 72e9dd7416bcf45b755dbaa88e4a4043.

K_1 = 8899aabbccddeeff0011223344556677、K_2 = fedcba98765432100123456789abcdef、K_3 = db31485315694343228d6aef8cc78c44、K_4 = 3d4553d8e9cfec6815ebadc40a9ffd04、K_5 = 57646468c44a5e28d3e59246f429f1ac、K_6 = bd079435165c6432b532e82834da581b、K_7 = 51e640757e8745de705727265a0098b1、K_8 = 5a7925017b9fdd3ed72a91a22286f984、K_9 = bb44e25378c73123a5f32f73cdb6e517、K_10 = 72e9dd7416bcf45b755dbaa88e4a4043。

5.5. Test Encryption
5.5. 暗号化をテストする

In this test example, encryption is performed on the round keys specified in Section 5.4. Let the plaintext be

このテスト例では、暗号化はセクション5.4で指定されたラウンドキーで実行されます。平文を

a = 1122334455667700ffeeddccbbaa9988,

a = 1122334455667700ffeeddccbbaa9988、

then

その後

X[K_1](a) = 99bb99ff99bb99ffffffffffffffffff, SX[K_1](a) = e87de8b6e87de8b6b6b6b6b6b6b6b6b6, LSX[K_1](a) = e297b686e355b0a1cf4a2f9249140830, LSX[K_2]LSX[K_1](a) = 285e497a0862d596b36f4258a1c69072, LSX[K_3]...LSX[K_1](a) = 0187a3a429b567841ad50d29207cc34e, LSX[K_4]...LSX[K_1](a) = ec9bdba057d4f4d77c5d70619dcad206, LSX[K_5]...LSX[K_1](a) = 1357fd11de9257290c2a1473eb6bcde1, LSX[K_6]...LSX[K_1](a) = 28ae31e7d4c2354261027ef0b32897df, LSX[K_7]...LSX[K_1](a) = 07e223d56002c013d3f5e6f714b86d2d, LSX[K_8]...LSX[K_1](a) = cd8ef6cd97e0e092a8e4cca61b38bf65, LSX[K_9]...LSX[K_1](a) = 0d8e40e4a800d06b2f1b37ea379ead8e.

X [K_1](a)= 99bb99ff99bb99ffffffffffffffffff、SX [K_1](a)= e87de8b6e87de8b6b6b6b6b6b6b6b6b6、LSX [K_1](a)= e297b686e355b0a [K] K4KK4K6K6K4KK4K2K6K6K6KXK4K2K6K6K2K4K2K9K6KXK4K2KK [K] K4K4K4K2K2K4KK [K] .LSX [K_1](a)= 0187a3a429b567841ad50d29207cc34e、LSX [K_4] ... LSX [K_1](a)= ec9bdba057d4f4d77c5d70619dcad206、LSX [K_5] ... LSX [K_1](a)= 1357fcddea1147fcddea1347fddde1925fd11c9dec2c1c1c1c7dec1c1c9dec1c1c2c1c1c1c1c2c1c1c1c1e4c1c1c1c1c7dec6dec1de2 ..LSX [K_1]()= 28ae31e7d4c2354261027ef0b32897df、LSX [K_7] ... LSX [K_1]()= 07e223d56002c013d3f5e6f714b86d2d、LSX [K_8] ... LSX [K_1]()= cd8ef6cd97e0e092a8e4cca61b38bf65、LSX [K_9] ... LSX [K_1](a)= 0d8e40e4a800d06b2f1b37ea379ead8e。

Then the ciphertext is

次に、暗号文は

b = X[K_10]LSX[K_9]...LSX[K_1](a) = 7f679d90bebc24305a468d42b9d4edcd.

b = X [K_10] LSX [K_9] ... LSX [K_1](a)= 7f679d90bebc24305a468d42b9d4edcd。

5.6. Test Decryption
5.6. 復号化をテストする

In this test example, decryption is performed on the round keys specified in Section 5.4. Let the ciphertext be

このテスト例では、セクション5.4で指定されたラウンドキーに対して復号化が実行されます。暗号文を

b = 7f679d90bebc24305a468d42b9d4edcd,

b = 7f679d90bebc24305a468d42b9d4edcd、

then

その後

X[K_10](b) = 0d8e40e4a800d06b2f1b37ea379ead8e, L^(-1)X[K_10](b) = 8a6b930a52211b45c5baa43ff8b91319, S^(-1)L^(-1)X[K_10](b) = 76ca149eef27d1b10d17e3d5d68e5a72, S^(-1)L^(-1)X[K_9]S^(-1)L^(-1)X[K_10](b) = 5d9b06d41b9d1d2d04df7755363e94a9, S^(-1)L^(-1)X[K_8]...S^(-1)L^(-1)X[K_10](b) = 79487192aa45709c115559d6e9280f6e, S^(-1)L^(-1)X[K_7]...S^(-1)L^(-1)X[K_10](b) = ae506924c8ce331bb918fc5bdfb195fa, S^(-1)L^(-1)X[K_6]...S^(-1)L^(-1)X[K_10](b) = bbffbfc8939eaaffafb8e22769e323aa, S^(-1)L^(-1)X[K_5]...S^(-1)L^(-1)X[K_10](b) = 3cc2f07cc07a8bec0f3ea0ed2ae33e4a, S^(-1)L^(-1)X[K_4]...S^(-1)L^(-1)X[K_10](b) = f36f01291d0b96d591e228b72d011c36, S^(-1)L^(-1)X[K_3]...S^(-1)L^(-1)X[K_10](b) = 1c4b0c1e950182b1ce696af5c0bfc5df, S^(-1)L^(-1)X[K_2]...S^(-1)L^(-1)X[K_10](b) = 99bb99ff99bb99ffffffffffffffffff.

X [K_10](b)= 0d8e40e4a800d06b2f1b37ea379ead8e、L ^(-1)X [K_10](b)= 8a6b930a52211b45c5baa43ff8b91319、S ^(-1)L ^(-1)X [K_10](b)= 76ca149deedd27edd5edd3d5edd3d3edd3d3edd3d5edd3d3edd3d3d3e5d5e7d7e7d7ed27ed27eddd (-1)L ^(-1)X [K_9] S ^(-1)L ^(-1)X [K_10](b)= 5d9b06d41b9d1d2d04df7755363e94a9、S ^(-1)L ^(-1)X [ K_8] ... S ^(-1)L ^(-1)X [K_10](b)= 79487192aa45709c115559d6e9280f6e、S ^(-1)L ^(-1)X [K_7] ... S ^(- 1)L ^(-1)X [K_10](b)= ae506924c8ce331bb918fc5bdfb195fa、S ^(-1)L ^(-1)X [K_6] ... S ^(-1)L ^(-1)X [K_10](b)= bbffbfc8939eaaffafb8e22769e323aa、S ^(-1)L ^(-1)X [K_5] ... S ^(-1)L ^(-1)X [K_10](b)= 3cc2f07cc07a8bec0f3ea0ed2ae33e4a、 S ^(-1)L ^(-1)X [K_4] ... S ^(-1)L ^(-1)X [K_10](b)= f36f01291d0b96d591e228b72d011c36、S ^(-1)L ^( -1)X [K_3] ... S ^(-1)L ^(-1)X [K_10](b)= 1c4b0c1e950182b1ce696af5c0bfc5df、S ^(-1)L ^(-1)X [K_2] .. .S ^(-1)L ^(-1)X [K_10](b)= 99bb99ff99bb99ffffffffffffffffff。

Then the plaintext is

次に、平文は

a = X[K_1]S^(-1)L^(-1)X[K_2]...S^(-1)L^(-1)X[K_10](b) = 1122334455667700ffeeddccbbaa9988.

a = X [K_1] S ^(-1)L ^(-1)X [K_2] ... S ^(-1)L ^(-1)X [K_10](b)= 1122334455667700ffeeddccbbaa9988。

6. Security Considerations
6. セキュリティに関する考慮事項

This entire document is about security considerations.

このドキュメント全体は、セキュリティの考慮事項に関するものです。

7. References
7. 参考文献
7.1. Normative References
7.1. 引用文献

[GOST3412-2015] "Information technology. Cryptographic data security. Block ciphers", GOST R 34.12-2015, Federal Agency on Technical Regulating and Metrology, 2015.

[GOST3412-2015]「情報技術。暗号化データセキュリティ。ブロック暗号」、GOST R 34.12-2015、技術規制と計量に関する連邦政府、2015。

7.2. Informative References
7.2. 参考引用

[ISO-IEC10116] ISO/IEC, "Information technology -- Security techniques -- Modes of operation for an n-bit block cipher", ISO/ IEC 10116, 2006.

[ISO-IEC10116] ISO / IEC、「情報技術-セキュリティ技術-nビットブロック暗号の動作モード」、ISO / IEC 10116、2006。

[ISO-IEC18033-1] ISO/IEC, "Information technology -- Security techniques -- Encryption algorithms -- Part 1: General", ISO/ IEC 18033-1, 2015.

[ISO-IEC18033-1] ISO / IEC、「情報技術-セキュリティ技術-暗号化アルゴリズム-パート1:一般」、ISO / IEC 18033-1、2015年。

[ISO-IEC18033-3] ISO/IEC, "Information technology -- Security techniques -- Encryption algorithms -- Part 3: Block ciphers", ISO/ IEC 18033-3, 2010.

[ISO-IEC18033-3] ISO / IEC、「情報技術-セキュリティ技術-暗号化アルゴリズム-パート3:ブロック暗号」、ISO / IEC 18033-3、2010。

Author's Address

著者のアドレス

Vasily Dolmatov (editor) Research Computer Center MSU Leninskiye Gory, 1, Building 4, MGU NIVC Moscow 119991 Russian Federation

Vasily Dolmatov(editor)Research Computer Center MSU Leninskiye Gory、1、Building 4、MGU NIVC Moscow 119991ロシア連邦

   Email: dol@srcc.msu.ru