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. |