| rfc9548v3.txt | rfc9548.txt | |||
|---|---|---|---|---|
| skipping to change at line 129 ¶ | skipping to change at line 129 ¶ | |||
| capitals, as shown here. | capitals, as shown here. | |||
| 3. Basic Terms and Definitions | 3. Basic Terms and Definitions | |||
| Throughout this document, the following notations are used: | Throughout this document, the following notations are used: | |||
| P a password encoded as a Unicode UTF-8 string | P a password encoded as a Unicode UTF-8 string | |||
| S a random initializing value | S a random initializing value | |||
| V^(*) the set of all binary row vectors of finite length | V_s the set of byte strings of length s, where s >= 0; the string 𝑏 | |||
| (hereinafter referred to as vectors), including an empty string | = (b_1,...,b_s) belongs to the set V_s if b_1,...,b_s∈{0,...,255} | |||
| V_s the set of all binary row vectors of length s, where s >= 0; if | ||||
| s = 0, then the set V_s consists of an empty string of length 0 | ||||
| |A| the number of components (a length) of the vector A belonging to | |A| the number of components (a length) of the vector A belonging to | |||
| V^(*) (if A is an empty string, then |A| = 0) | V^(*) (if A is an empty string, then |A| = 0) | |||
| A||C a concatenation of two strings A, C from V^(*), i.e., a vector | A||C a concatenation of two byte strings A, C from V_s, i.e., a | |||
| from V_(|A|+|C|), where the left subvector from V_(|A|) is equal | string from V_(|A|+|C|), where the left substring from V_(|A|) is | |||
| to the vector A and the right subvector from V_(|C|) is equal to | equal to the string A and the right substring from V_(|C|) is | |||
| the vector C: A = (a_(n_1),...,a_1) in V_(n_1) and C = | equal to the string C: A = (a_(n_1),...,a_1) in V_(n_1) and C = | |||
| (c_(n_2),...,c_1) in V_(n_2), res = | (c_(n_2),...,c_1) in V_(n_2), res = | |||
| (a_(n_1),...,a_1,c_(n_2),...,c_1) in V_(n_1+n_2)) | (a_(n_1),...,a_1,c_(n_2),...,c_1) in V_(n_1+n_2)) | |||
| F_q a finite prime field represented as a set of q integers | F_q a finite prime field represented as a set of q integers | |||
| {0,1,...,q - 1}, where q > 3 - prime number | {0,1,...,q - 1}, where q > 3 - prime number | |||
| b mod q the minimum non-negative number comparable to b modulo p | b mod q the minimum non-negative number comparable to b modulo p | |||
| INT(b) integer INT(b) = b_1+b_2∙256+...+b_s∙ 256^(s-1), where b∈ V_s | ||||
| This document uses the following terms and abbreviations: | This document uses the following terms and abbreviations: | |||
| Signature one or more data elements resulting from the signature | Signature one or more data elements resulting from the signature | |||
| process (Clause 3.12 of [ISO14888-1]). Note: The terms "digital | process (Clause 3.12 of [ISO14888-1]). Note: The terms "digital | |||
| signature", "electronic signature", and "electronic digital | signature", "electronic signature", and "electronic digital | |||
| signature" are considered equivalent in this document. | signature" are considered equivalent in this document. | |||
| Signature key set of private data elements specific to an entity and | Signature key set of private data elements specific to an entity and | |||
| usable only by this entity in the signature process (Clause 3.13 | usable only by this entity in the signature process (Clause 3.13 | |||
| of [ISO14888-1]). Note: Sometimes called a private key. | of [ISO14888-1]). Note: Sometimes called a private key. | |||
| skipping to change at line 347 ¶ | skipping to change at line 346 ¶ | |||
| K = M_1^-1(...(M_(k-1)^-1(M_k^-1(K_M))...). | K = M_1^-1(...(M_(k-1)^-1(M_k^-1(K_M))...). | |||
| The masked key is represented as the sequence | The masked key is represented as the sequence | |||
| I = K_M||M_1||M_2||...||M_k. | I = K_M||M_1||M_2||...||M_k. | |||
| Let the key K be n bits in length; then, the sequence I is | Let the key K be n bits in length; then, the sequence I is | |||
| represented in memory as a sequence of (k + 1)*n bits. I is | represented in memory as a sequence of (k + 1)*n bits. I is | |||
| represented in little-endian format. It is possible to use an | represented in little-endian format. It is possible to use an | |||
| unmasked private key (i.e., k = 0, K_M = K). The masking operation | unmasked private key (i.e., k = 0, K_M = K). For GOST R 34.10-2012 | |||
| is the multiplication of the key by the inverse of the mask: K_M = K | keys, the masking operation is the multiplication of the key by the | |||
| * M^-1 mod Q, where the Q value is taken from the key parameters. | inverse of the mask: INT(K_M) = INT(K) * INT(M)^-1 mod Q, where the Q | |||
| The operation of removing the mask is the multiplication of the | value is taken from the key parameters. The operation of removing | |||
| masked key by the mask: K = K_M * M mod Q. The public key is | the mask is the multiplication of the masked key by the mask: INT(K) | |||
| specified by a pair of coordinates (x, y) as defined in GOST R | = INT(K_M) * INT(M) mod Q. The public key is specified by a pair of | |||
| 34.10-2012, presented in the following format: | coordinates (x, y) as defined in GOST R 34.10-2012, presented in the | |||
| following format: | ||||
| * a public key corresponding to the GOST R 34.10-2012 algorithm with | * a public key corresponding to the GOST R 34.10-2012 algorithm with | |||
| a key length of 256 bits has the GostR3410-2012-256-PublicKey | a key length of 256 bits has the GostR3410-2012-256-PublicKey | |||
| representation. It is specified by a 64-byte string, where the | representation. It is specified by a 64-byte string, where the | |||
| first 32 bytes contain the little-endian representation of the x | first 32 bytes contain the little-endian representation of the x | |||
| coordinate and the last 32 bytes contain the little-endian | coordinate and the last 32 bytes contain the little-endian | |||
| representation of the y coordinate. | representation of the y coordinate. | |||
| * a public key corresponding to the GOST R 34.10-2012 algorithm with | * a public key corresponding to the GOST R 34.10-2012 algorithm with | |||
| a key length of 512 bits has the GostR3410-2012-512-PublicKey | a key length of 512 bits has the GostR3410-2012-512-PublicKey | |||
| skipping to change at line 511 ¶ | skipping to change at line 511 ¶ | |||
| macData.iterations fields, respectively. The HMAC_GOSTR3411_2012_512 | macData.iterations fields, respectively. The HMAC_GOSTR3411_2012_512 | |||
| function is calculated from the content field of the authSafe | function is calculated from the content field of the authSafe | |||
| structure field. The authSafe structure field is a PFX structure | structure field. The authSafe structure field is a PFX structure | |||
| field. The value of the calculated checksum is saved in the | field. The value of the calculated checksum is saved in the | |||
| macData.mac.digest field. The macData.mac.digestAlgorithm.algorithm | macData.mac.digest field. The macData.mac.digestAlgorithm.algorithm | |||
| field contains the following algorithm identifier: | field contains the following algorithm identifier: | |||
| id-tc26-gost3411-12-512 :: = | id-tc26-gost3411-12-512 :: = | |||
| { | { | |||
| iso(1) member-body(2) ru(643) rosstandart(7) tc26(1) | iso(1) member-body(2) ru(643) rosstandart(7) tc26(1) | |||
| algorithms (1) digest(2) gost3411-2012-512(3) | algorithms(1) digest(2) gost3411-12-512(3) | |||
| } | } | |||
| The macData.mac.digestAlgorithm.parameters field isn't used and | The macData.mac.digestAlgorithm.parameters field isn't used and | |||
| should be omitted. | should be omitted. | |||
| 8. Security Considerations | 8. Security Considerations | |||
| The masked keys SHOULD be used to ensure that private keys are | The masked keys SHOULD be used to ensure that private keys are | |||
| protected from leaking through side channels when reading and | protected from leaking through side channels when reading and | |||
| performing operations with keys. Applications MUST use unique values | performing operations with keys. Applications MUST use unique values | |||
| End of changes. 5 change blocks. | ||||
| 17 lines changed or deleted | 17 lines changed or added | |||
This html diff was produced by rfcdiff 1.48. | ||||