1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
|
Independent Submission P. Yang
Request for Comments: 8998 Ant Group
Category: Informational March 2021
ISSN: 2070-1721
ShangMi (SM) Cipher Suites for TLS 1.3
Abstract
This document specifies how to use the ShangMi (SM) cryptographic
algorithms with Transport Layer Security (TLS) protocol version 1.3.
The use of these algorithms with TLS 1.3 is not endorsed by the IETF.
The SM algorithms are becoming mandatory in China, so this document
provides a description of how to use the SM algorithms with TLS 1.3
and specifies a profile of TLS 1.3 so that implementers can produce
interworking implementations.
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 candidates for any level of Internet Standard;
see Section 2 of RFC 7841.
Information about the current status of this document, any errata,
and how to provide feedback on it may be obtained at
https://www.rfc-editor.org/info/rfc8998.
Copyright Notice
Copyright (c) 2021 IETF Trust and the persons identified as the
document authors. All rights reserved.
This document is subject to BCP 78 and the IETF Trust's Legal
Provisions Relating to IETF Documents
(https://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.
Table of Contents
1. Introduction
1.1. The SM Algorithms
1.2. Terminology
2. Algorithm Identifiers
3. Algorithm Definitions
3.1. TLS Versions
3.2. Authentication
3.2.1. SM2 Signature Scheme
3.3. Key Exchange
3.3.1. Hello Messages
3.3.2. CertificateRequest
3.3.3. Certificate
3.3.4. CertificateVerify
3.4. Key Scheduling
3.5. Cipher
3.5.1. AEAD_SM4_GCM
3.5.2. AEAD_SM4_CCM
4. IANA Considerations
5. Security Considerations
6. References
6.1. Normative References
6.2. Informative References
Appendix A. Test Vectors
A.1. SM4-GCM Test Vectors
A.2. SM4-CCM Test Vectors
Contributors
Author's Address
1. Introduction
This document describes two new cipher suites, a signature algorithm
and a key exchange mechanism for the Transport Layer Security (TLS)
protocol version 1.3 (TLS 1.3) ([RFC8446]). These all utilize
several ShangMi (SM) cryptographic algorithms to fulfill the
authentication and confidentiality requirements of TLS 1.3. The new
cipher suites are as follows (see also Section 2):
CipherSuite TLS_SM4_GCM_SM3 = { 0x00, 0xC6 };
CipherSuite TLS_SM4_CCM_SM3 = { 0x00, 0xC7 };
For a more detailed introduction to SM cryptographic algorithms,
please see Section 1.1. These cipher suites follow the TLS 1.3
requirements. Specifically, all the cipher suites use SM4 in either
Galois/Counter (GCM) mode or Counter with CBC-MAC (CCM) mode to meet
the needs of TLS 1.3 to have an encryption algorithm that is
Authenticated Encryption with Associated Data (AEAD) capable. The
key exchange mechanism utilizes Elliptic Curve Diffie-Hellman
Ephemeral (ECDHE) over the SM2 elliptic curve, and the signature
algorithm combines the SM3 hash function and the SM2 elliptic curve
signature scheme.
For details about how these mechanisms negotiate shared encryption
keys, authenticate the peer(s), and protect the record structure,
please see Section 3.
The cipher suites, signature algorithm, and key exchange mechanism
defined in this document are not recommended by the IETF. The SM
algorithms are becoming mandatory in China, so this document provides
a description of how to use them with TLS 1.3 and specifies a profile
of TLS 1.3 so that implementers can produce interworking
implementations.
1.1. The SM Algorithms
Several different SM cryptographic algorithms are used to integrate
with TLS 1.3, including SM2 for authentication, SM4 for encryption,
and SM3 as the hash function.
SM2 is a set of cryptographic algorithms based on elliptic curve
cryptography, including a digital signature, public key encryption
and key exchange scheme. In this document, only the SM2 digital
signature algorithm and basic key exchange scheme are involved, which
have already been added to ISO/IEC 14888-3:2018 [ISO-SM2] (as well as
to [GBT.32918.2-2016]). SM4 is a block cipher defined in
[GBT.32907-2016] and now is being standardized by ISO to ISO/IEC
18033-3:2010 [ISO-SM4]. SM3 is a hash function that produces an
output of 256 bits. SM3 has already been accepted by ISO in ISO/IEC
10118-3:2018 [ISO-SM3] and has also been described by
[GBT.32905-2016].
1.2. Terminology
The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
"SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and
"OPTIONAL" in this document are to be interpreted as described in
BCP 14 [RFC2119] [RFC8174] when, and only when, they appear in all
capitals, as shown here.
Although this document is not an IETF Standards Track publication, it
adopts the conventions for normative language to provide clarity of
instruction to the implementer and to indicate requirement levels for
compliant TLS 1.3 implementations.
2. Algorithm Identifiers
The cipher suites defined here have the following identifiers:
CipherSuite TLS_SM4_GCM_SM3 = { 0x00, 0xC6 };
CipherSuite TLS_SM4_CCM_SM3 = { 0x00, 0xC7 };
To accomplish a TLS 1.3 handshake, additional objects have been
introduced along with the cipher suites as follows:
* The combination of the SM2 signature algorithm and SM3 hash
function used in the Signature Algorithm extension is defined in
Appendix B.3.1.3 of [RFC8446]:
SignatureScheme sm2sig_sm3 = { 0x0708 };
* The SM2 elliptic curve ID used in the Supported Groups extension
is defined in Appendix B.3.1.4 of [RFC8446]:
NamedGroup curveSM2 = { 41 };
3. Algorithm Definitions
3.1. TLS Versions
The new cipher suites defined in this document are only applicable to
TLS 1.3. Implementations of this document MUST NOT apply these
cipher suites to any older versions of TLS.
3.2. Authentication
3.2.1. SM2 Signature Scheme
The Chinese government requires the use of the SM2 signature
algorithm. This section specifies the use of the SM2 signature
algorithm as the authentication method for a TLS 1.3 handshake.
The SM2 signature algorithm is defined in [ISO-SM2]. The SM2
signature algorithm is based on elliptic curves. The SM2 signature
algorithm uses a fixed elliptic curve parameter set defined in
[GBT.32918.5-2017]. This curve is named "curveSM2" and has been
assigned the value 41, as shown in Section 2. Unlike other public
key algorithms based on elliptic curve cryptography like the Elliptic
Curve Digital Signature Algorithm (ECDSA), SM2 MUST NOT select other
elliptic curves. But it is acceptable to write test cases that use
other elliptic curve parameter sets for SM2; see Annex F.14 of
[ISO-SM2] as a reference.
Implementations of the signature scheme and key exchange mechanism
defined in this document MUST conform to what [GBT.32918.5-2017]
requires; that is to say, the only valid elliptic curve parameter set
for the SM2 signature algorithm (a.k.a. curveSM2) is defined as
follows:
curveSM2: A prime field of 256 bits.
y^(2) = x^(3) + ax + b
p = FFFFFFFE FFFFFFFF FFFFFFFF FFFFFFFF
FFFFFFFF 00000000 FFFFFFFF FFFFFFFF
a = FFFFFFFE FFFFFFFF FFFFFFFF FFFFFFFF
FFFFFFFF 00000000 FFFFFFFF FFFFFFFC
b = 28E9FA9E 9D9F5E34 4D5A9E4B CF6509A7
F39789F5 15AB8F92 DDBCBD41 4D940E93
n = FFFFFFFE FFFFFFFF FFFFFFFF FFFFFFFF
7203DF6B 21C6052B 53BBF409 39D54123
Gx = 32C4AE2C 1F198119 5F990446 6A39C994
8FE30BBF F2660BE1 715A4589 334C74C7
Gy = BC3736A2 F4F6779C 59BDCEE3 6B692153
D0A9877C C62A4740 02DF32E5 2139F0A0
The SM2 signature algorithm requests an identifier value when
generating or verifying a signature. In all uses except when a
client of a server needs to verify a peer's SM2 certificate in the
Certificate message, an implementation of this document MUST use the
following ASCII string value as the SM2 identifier when doing a TLS
1.3 key exchange:
TLSv1.3+GM+Cipher+Suite
If either a client or a server needs to verify the peer's SM2
certificate contained in the Certificate message, then the following
ASCII string value MUST be used as the SM2 identifier according to
[GMT.0009-2012]:
1234567812345678
Expressed as octets, this is:
0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38,
0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38
In practice, the SM2 identifier used in a certificate signature
depends on the certificate authority (CA) who signs that certificate.
CAs may choose values other than the ones mentioned above.
Implementations of this document SHOULD confirm this information by
themselves.
3.3. Key Exchange
3.3.1. Hello Messages
The use of the algorithms defined by this document is negotiated
during the TLS handshake with information exchanged in the Hello
messages.
3.3.1.1. ClientHello
To use the cipher suites defined by this document, a TLS 1.3 client
includes the new cipher suites in the "cipher_suites" array of the
ClientHello structure defined in Section 4.1.2 of [RFC8446].
Other requirements of this TLS 1.3 profile on the extensions of
ClientHello message are as follows:
* For the supported_groups extension, "curveSM2" MUST be included.
* For the signature_algorithms extension, "sm2sig_sm3" MUST be
included.
* For the signature_algorithms_cert extension (if present),
"sm2sig_sm3" MUST be included.
* For the key_share extension, a KeyShareEntry for the "curveSM2"
group MUST be included.
3.3.1.2. ServerHello
If a TLS 1.3 server receives a ClientHello message containing the
algorithms defined in this document, it MAY choose to use them. If
so, then the server MUST put one of the new cipher suites defined in
this document into its ServerHello's "cipher_suites" array and
eventually send it to the client side.
A TLS 1.3 server's choice of what cipher suite to use depends on the
configuration of the server. For instance, a TLS 1.3 server may or
not be configured to include the new cipher suites defined in this
document. Typical TLS 1.3 server applications also provide a
mechanism that configures the cipher suite preference on the server
side. If a server is not configured to use the cipher suites defined
in this document, it SHOULD choose another cipher suite in the list
that the TLS 1.3 client provides; otherwise, the server MUST abort
the handshake with an "illegal_parameter" alert.
The following extension MUST conform to the new requirements:
* For the key_share extension, a KeyShareEntry with SM2-related
values MUST be added if the server wants to conform to this
profile.
3.3.2. CertificateRequest
If a CertificateRequest message is sent by the server to require the
client to send its certificate for authentication purposes, for
conformance to this profile, the following is REQUIRED:
* The only valid signature algorithm present in
"signature_algorithms" extension MUST be "sm2sig_sm3". That is to
say, if the server chooses to conform to this profile, the
signature algorithm for the client's certificate MUST use the SM2/
SM3 procedure specified by this document.
3.3.3. Certificate
When a server sends the Certificate message containing the server
certificate to the client side, several new rules are added that will
affect the certificate selection:
* The public key in the certificate MUST be a valid SM2 public key.
* The signature algorithm used by the CA to sign the current
certificate MUST be "sm2sig_sm3".
* The certificate MUST be capable of signing; e.g., the
digitalSignature bit of X.509's Key Usage extension is set.
3.3.4. CertificateVerify
In the CertificateVerify message, the signature algorithm MUST be
"sm2sig_sm3", indicating that the hash function MUST be SM3 and the
signature algorithm MUST be SM2.
3.4. Key Scheduling
As described in Section 1.1, SM2 is actually a set of cryptographic
algorithms, including one key exchange protocol that defines methods
such as key derivation function, etc. This document does not define
an SM2 key exchange protocol, and an SM2 key exchange protocol SHALL
NOT be used in the key exchange steps defined in Section 3.3.
Implementations of this document MUST always conform to what TLS 1.3
[RFC8446] and its successors require regarding the key derivation and
related methods.
3.5. Cipher
The new cipher suites introduced in this document add two new AEAD
encryption algorithms, AEAD_SM4_GCM and AEAD_SM4_CCM, which stand for
SM4 cipher in Galois/Counter mode and SM4 cipher [GBT.32907-2016] in
Counter with CBC-MAC mode, respectively. The hash function for both
cipher suites is SM3 ([ISO-SM3]).
This section defines the AEAD_SM4_GCM and AEAD_SM4_CCM AEAD
algorithms in a style similar to what [RFC5116] used to define AEAD
ciphers based on the AES cipher.
3.5.1. AEAD_SM4_GCM
The AEAD_SM4_GCM authenticated encryption algorithm works as
specified in [GCM], using SM4 as the block cipher, by providing the
key, nonce, plaintext, and associated data to that mode of operation.
An authentication tag conforming to the requirements of TLS 1.3 as
specified in Section 5.2 of [RFC8446] MUST be constructed using the
details in the TLS record header. The additional data input that
forms the authentication tag MUST be the TLS record header. The
AEAD_SM4_GCM ciphertext is formed by appending the authentication tag
provided as an output to the GCM encryption operation to the
ciphertext that is output by that operation. AEAD_SM4_GCM has four
inputs: an SM4 key, an initialization vector (IV), a plaintext
content, and optional additional authenticated data (AAD).
AEAD_SM4_GCM generates two outputs: a ciphertext and message
authentication code (also called an authentication tag). To have a
common set of terms for AEAD_SM4_GCM and AEAD_SM4_CCM, the
AEAD_SM4_GCM IV is referred to as a nonce in the remainder of this
document. A simple test vector of AEAD_SM4_GCM and AEAD_SM4_CCM is
given in Appendix A of this document.
The nonce is generated by the party performing the authenticated
encryption operation. Within the scope of any authenticated
encryption key, the nonce value MUST be unique. That is, the set of
nonce values used with any given key MUST NOT contain any duplicates.
Using the same nonce for two different messages encrypted with the
same key destroys the security properties of GCM mode. To generate
the nonce, implementations of this document MUST conform to TLS 1.3
(see [RFC8446], Section 5.3).
The input and output lengths are as follows:
The SM4 key length is 16 octets.
The max plaintext length is 2^(36) - 31 octets.
The max AAD length is 2^(61) - 1 octets.
The nonce length is 12 octets.
The authentication tag length is 16 octets.
The max ciphertext length is 2^(36) - 15 octets.
A security analysis of GCM is available in [MV04].
3.5.2. AEAD_SM4_CCM
The AEAD_SM4_CCM authenticated encryption algorithm works as
specified in [CCM] using SM4 as the block cipher. AEAD_SM4_CCM has
four inputs: an SM4 key, a nonce, a plaintext, and optional
additional authenticated data (AAD). AEAD_SM4_CCM generates two
outputs: a ciphertext and a message authentication code (also called
an authentication tag). The formatting and counter generation
functions are as specified in Appendix A of [CCM], and the values of
the parameters identified in that appendix are as follows:
The nonce length n is 12.
The tag length t is 16.
The value of q is 3.
An authentication tag is also used in AEAD_SM4_CCM. The generation
of the authentication tag MUST conform to TLS 1.3 (See [RFC8446],
Section 5.2). The AEAD_SM4_CCM ciphertext is formed by appending the
authentication tag provided as an output to the CCM encryption
operation to the ciphertext that is output by that operation. The
input and output lengths are as follows:
The SM4 key length is 16 octets.
The max plaintext length is 2^(24) - 1 octets.
The max AAD length is 2^(64) - 1 octets.
The max ciphertext length is 2^(24) + 15 octets.
To generate the nonce, implementations of this document MUST conform
to TLS 1.3 (see [RFC8446], Section 5.3).
A security analysis of CCM is available in [J02].
4. IANA Considerations
IANA has assigned the values {0x00,0xC6} and {0x00,0xC7} with the
names "TLS_SM4_GCM_SM3" and "TLS_SM4_CCM_SM3" to the "TLS Cipher
Suites" registry with this document as reference:
+===========+=================+=========+=============+===========+
| Value | Description | DTLS-OK | Recommended | Reference |
+===========+=================+=========+=============+===========+
| 0x00,0xC6 | TLS_SM4_GCM_SM3 | No | No | RFC 8998 |
+-----------+-----------------+---------+-------------+-----------+
| 0x00,0xC7 | TLS_SM4_CCM_SM3 | No | No | RFC 8998 |
+-----------+-----------------+---------+-------------+-----------+
Table 1
IANA has assigned the value 0x0708 with the name "sm2sig_sm3" to the
"TLS SignatureScheme" registry:
+========+=============+=============+===========+
| Value | Description | Recommended | Reference |
+========+=============+=============+===========+
| 0x0708 | sm2sig_sm3 | No | RFC 8998 |
+--------+-------------+-------------+-----------+
Table 2
IANA has assigned the value 41 with the name "curveSM2" to the "TLS
Supported Groups" registry:
+=======+=============+=========+=============+===========+
| Value | Description | DTLS-OK | Recommended | Reference |
+=======+=============+=========+=============+===========+
| 41 | curveSM2 | No | No | RFC 8998 |
+-------+-------------+---------+-------------+-----------+
Table 3
5. Security Considerations
At the time of writing, there are no known weak keys for SM
cryptographic algorithms SM2, SM3 and SM4, and no security issues
have been found for these algorithms.
A security analysis of GCM is available in [MV04].
A security analysis of CCM is available in [J02].
6. References
6.1. Normative References
[CCM] Dworkin, M., "Recommendation for Block Cipher Modes of
Operation: the CCM Mode for Authentication and
Confidentiality", Special Publication 800-38C,
DOI 10.6028/NIST.SP.800-38C, May 2004,
<http://csrc.nist.gov/publications/nistpubs/800-38C/
SP800-38C.pdf>.
[GCM] Dworkin, M., "Recommendation for Block Cipher Modes of
Operation: Galois/Counter Mode (GCM) and GMAC", Special
Publication 800-38D, DOI 10.6028/NIST.SP.800-38D, November
2007, <http://csrc.nist.gov/publications/nistpubs/800-38D/
SP-800-38D.pdf>.
[ISO-SM2] International Organization for Standardization, "IT
Security techniques -- Digital signatures with appendix --
Part 3: Discrete logarithm based mechanisms", ISO/
IEC 14888-3:2018, November 2018,
<https://www.iso.org/standard/76382.html>.
[ISO-SM3] International Organization for Standardization, "IT
Security techniques -- Hash-functions -- Part 3: Dedicated
hash-functions", ISO/IEC 10118-3:2018, October 2018,
<https://www.iso.org/standard/67116.html>.
[ISO-SM4] International Organization for Standardization,
"Information technology -- Security techniques --
Encryption algorithms -- Part 3: Block ciphers", ISO/
IEC 18033-3:2010, December 2010,
<https://www.iso.org/standard/54531.html>.
[RFC2119] Bradner, S., "Key words for use in RFCs to Indicate
Requirement Levels", BCP 14, RFC 2119,
DOI 10.17487/RFC2119, March 1997,
<https://www.rfc-editor.org/info/rfc2119>.
[RFC5116] McGrew, D., "An Interface and Algorithms for Authenticated
Encryption", RFC 5116, DOI 10.17487/RFC5116, January 2008,
<https://www.rfc-editor.org/info/rfc5116>.
[RFC8174] Leiba, B., "Ambiguity of Uppercase vs Lowercase in RFC
2119 Key Words", BCP 14, RFC 8174, DOI 10.17487/RFC8174,
May 2017, <https://www.rfc-editor.org/info/rfc8174>.
[RFC8446] Rescorla, E., "The Transport Layer Security (TLS) Protocol
Version 1.3", RFC 8446, DOI 10.17487/RFC8446, August 2018,
<https://www.rfc-editor.org/info/rfc8446>.
6.2. Informative References
[GBT.32905-2016]
Standardization Administration of China, "Information
security technology --- SM3 cryptographic hash algorithm",
GB/T 32905-2016, March 2017, <http://www.gmbz.org.cn/
upload/2018-07-24/1532401392982079739.pdf>.
[GBT.32907-2016]
Standardization Administration of the People's Republic of
China, "Information security technology -- SM4 block
cipher algorithm", GB/T 32907-2016, March 2017,
<http://www.gmbz.org.cn/
upload/2018-04-04/1522788048733065051.pdf>.
[GBT.32918.2-2016]
Standardization Administration of the People's Republic of
China, "Information security technology --- Public key
cryptographic algorithm SM2 based on elliptic curves ---
Part 2: Digital signature algorithm", GB/T 32918.2-2016,
March 2017, <http://www.gmbz.org.cn/
upload/2018-07-24/1532401673138056311.pdf>.
[GBT.32918.5-2017]
Standardization Administration of the People's Republic of
China, "Information security technology --- Public key
cryptographic algorithm SM2 based on elliptic curves ---
Part 5: Parameter definition", GB/T 32918.5-2017, December
2017, <http://www.gmbz.org.cn/
upload/2018-07-24/1532401863206085511.pdf>.
[GMT.0009-2012]
State Cryptography Administration, "SM2 cryptography
algorithm application specification", GM/T 0009-2012,
November 2012, <http://www.gmbz.org.cn/main/
viewfile/2018011001400692565.html>.
[J02] Jonsson, J., "On the Security of CTR + CBC-MAC",
DOI 10.1007/3-540-36492-7_7, February 2003,
<https://link.springer.com/
chapter/10.1007%2F3-540-36492-7_7>.
[MV04] McGrew, D. and J. Viega, "The Security and Performance of
the Galois/Counter Mode of Operation",
DOI 10.1007/978-3-540-30556-9_27, December 2004,
<http://eprint.iacr.org/2004/193>.
Appendix A. Test Vectors
All values are in hexadecimal and are in network byte order (big
endian).
A.1. SM4-GCM Test Vectors
Initialization Vector: 00001234567800000000ABCD
Key: 0123456789ABCDEFFEDCBA9876543210
Plaintext: AAAAAAAAAAAAAAAABBBBBBBBBBBBBBBB
CCCCCCCCCCCCCCCCDDDDDDDDDDDDDDDD
EEEEEEEEEEEEEEEEFFFFFFFFFFFFFFFF
EEEEEEEEEEEEEEEEAAAAAAAAAAAAAAAA
Associated Data: FEEDFACEDEADBEEFFEEDFACEDEADBEEFABADDAD2
CipherText: 17F399F08C67D5EE19D0DC9969C4BB7D
5FD46FD3756489069157B282BB200735
D82710CA5C22F0CCFA7CBF93D496AC15
A56834CBCF98C397B4024A2691233B8D
Authentication Tag: 83DE3541E4C2B58177E065A9BF7B62EC
A.2. SM4-CCM Test Vectors
Initialization Vector: 00001234567800000000ABCD
Key: 0123456789ABCDEFFEDCBA9876543210
Plaintext: AAAAAAAAAAAAAAAABBBBBBBBBBBBBBBB
CCCCCCCCCCCCCCCCDDDDDDDDDDDDDDDD
EEEEEEEEEEEEEEEEFFFFFFFFFFFFFFFF
EEEEEEEEEEEEEEEEAAAAAAAAAAAAAAAA
Associated Data: FEEDFACEDEADBEEFFEEDFACEDEADBEEFABADDAD2
CipherText: 48AF93501FA62ADBCD414CCE6034D895
DDA1BF8F132F042098661572E7483094
FD12E518CE062C98ACEE28D95DF4416B
ED31A2F04476C18BB40C84A74B97DC5B
Authentication Tag: 16842D4FA186F56AB33256971FA110F4
Contributors
Qin Long
Ant Group
Email: zhuolong.lq@antfin.com
Kepeng Li
Ant Group
Email: kepeng.lkp@antfin.com
Ke Zeng
Ant Group
Email: william.zk@antfin.com
Han Xiao
Ant Group
Email: han.xiao@antfin.com
Zhi Guan
Peking University
Email: guan@pku.edu.cn
Author's Address
Paul Yang
Ant Group
No. 77 Xueyuan Road
Hangzhou
310000
China
Phone: +86-571-2688-8888
Email: kaishen.yy@antfin.com
|