TCG - Algorithm Registry r1p32 Pub
TCG - Algorithm Registry r1p32 Pub
Family “2.0"
Contact: [email protected]
TCG PUBLISHED
TCG Copyright © TCG 2020
TCG Algorithm Registry
Change History
CONTENTS
1 Introduction .......................................................................................................................... 1
2 Conventions ......................................................................................................................... 2
2.1 Bit and Octet Numbering and Order ........................................................................... 2
2.2 Sized Buffer References ............................................................................................ 2
2.3 Numbers .................................................................................................................... 3
3 Notation ................................................................................................................................ 4
3.1 Named Constants ....................................................................................................... 4
3.2 Enumerations ............................................................................................................. 4
3.3 Bit Field Definitions .................................................................................................... 5
3.4 Name Prefix Convention ............................................................................................. 5
4 TPM_ALG_ID ....................................................................................................................... 6
5 ECC Values ........................................................................................................................ 11
5.1 Curve ID Values ....................................................................................................... 11
5.2 Curve Parameters .................................................................................................... 12
5.2.1 Introduction ..................................................................................................... 12
5.2.2 NIST P192 ...................................................................................................... 12
5.2.3 NIST P224 ...................................................................................................... 13
5.2.4 NIST P256 ...................................................................................................... 14
5.2.5 NIST P384 ...................................................................................................... 15
5.2.6 NIST P521 ...................................................................................................... 16
5.2.7 BN P256 ......................................................................................................... 17
5.2.8 BN P638 ......................................................................................................... 18
5.2.9 SM2_P256 ...................................................................................................... 19
5.2.10 BP_P256_R1 .................................................................................................. 20
5.2.11 BP_P384_R1 .................................................................................................. 21
5.2.12 BP_P512_R1 .................................................................................................. 22
5.2.13 CURVE_25519 ................................................................................................ 23
6 Hash Parameters ................................................................................................................ 24
6.1 Introduction .............................................................................................................. 24
6.2 SHA1 ....................................................................................................................... 24
6.3 SHA256 ................................................................................................................... 24
6.4 SHA384 ................................................................................................................... 24
6.5 SHA512 ................................................................................................................... 25
6.6 SM3_256.................................................................................................................. 25
6.7 SHA3_256 ................................................................................................................ 25
6.8 SHA3_384 ................................................................................................................ 25
6.9 SHA3_512 ................................................................................................................ 26
6.10 Hash Algorithms Bit Field ......................................................................................... 26
7 Symmetric Block Cipher Parameters ................................................................................... 27
7.1 Introduction .............................................................................................................. 27
7.2 AES ......................................................................................................................... 27
7.3 SM4 ......................................................................................................................... 27
7.4 Camellia ................................................................................................................... 27
7.5 TDES ....................................................................................................................... 28
Annex A — Bibliography ............................................................................................................ 29
1 Introduction
The Algorithm Registry lists each algorithm assigned an identifier, allowing it to be unambiguously
defined and referenced by other TCG specifications. This document is a compendium of data
related to the various algorithms used in specifications created by the Trusted Computing Group
(TCG). The compendium of algorithm data is intended to ensure interoperability between devices
built to be compliant with TCG specifications.
Many TCG specifications use a layered architecture where a single “library” specification on a
bottom layer may be used by numerous platform specific middle layers (e.g. PC Client or Mobile
Platform) to enable a variety of top level use cases. TCG specifications support products and
solutions for numerous markets with v aried requirements for commercial usefulness including
features, security, interoperability, globalization, performance, regulatory requirements,
compatibility, compliance, intellectual property rights, certification, etc . TCG as an organization
does not perform cryptographic analysis of algorithms. The presence of an algorithm in the registry
does not endorse its use by TCG for any specific use case or indicate an algorithm’s acceptability
for meeting any particular requirement set. The TCG endeavors to provide a variety of algorithms
of varying strength for various commercial purposes. Ultimately, the TCG adds algorithms to its
registry based on the needs of its membership.
Security is built into an increasing number of general purpose Information and Communications
Technology (ICT) products, and security standards are fundamental to the integrity and
sustainability of the global ICT infrastructure. The Trusted Computing Group (TCG) believes that
open, interoperable, and internationally vetted standards are critical for the success of trusted
computing, and that the multilateral approach to creating such standards is most effective.
TCG recognizes international standards in the field of IT security as the most appropriate method
to ensure efficacy, interoperability, adoption and user acceptance. TCG takes into consideration
international market requirements through international membership and welcomes participation
from industry, academia, and governments in a unified, worldwide Trusted Computing stan dards
development process.
Commercial implementation of TCG standards is managed by individual product and service
providers. Implementers or adopters of any solution using TCG specifications must carefully
assess the appropriateness of any algorithms or TCG specification for satisfying their goals. In
assessing algorithms, TCG recommends implementers and adopters diligently evaluate available
information such as governmental, industrial, and academic research. Solutions involving
cryptography are dependent on the solution architecture and on the properties of cryptographic
algorithms supported. Over time, cryptographic algorithms can develop deficiencies for reasons
like advances in cryptographic techniques or increased computing power. Solutions that support
a diversity of algorithms can remain durable when subsets of supported algorithms wane in
usefulness. Therefore, implementers intent on providing robust solutions are responsible for
evaluating both algorithm appropriateness and diversity.
The TCG classifies algorithms listed in this registry according to the following labels:
• TCG Standard - The algorithm is mandatory in one or more TCG specifications that
reference this registry. The TCG designates algorithms with this classification in
accordance with its goals of promoting international standards and interoperability.
• TCG Legacy – The algorithm is assigned an identifier for compatibility or historical reasons
and is unlikely to be referenced by future TCG specifications. The TCG designates an
algorithm with this classification based on the goals of the organization to discontinue
support for the algorithm and transition solutions to alternative algorithms. Stakeholders
using solutions relying on algorithms classified as TCG Legacy are strongly recommended
to reevaluate the algorithm’s appropriateness based on the current state of the art.
2 Conventions
An integer value is considered to be an array of one or more octets. The octet at offset zero within
the array is the most significant octet (MSO) of the integer. Bit number 0 of that integer is its least
significant bit and is the least significant bit in the last octet in the array.
EXAMPLE A 32-bit integer is an array of four octets; the MSO is at offset [0], and the most significant bit is bit number
31. Bit zero of this 32-bit integer is the least significant bit in the octet at offset [3] in the array .
The first listed member of a structure is at the lowest offset within the structure and the last listed
member is at the highest offset within the structure.
For a character string (letters delimited by “”), the first c haracter of the string contains the MSO.
The specification makes extensive use of a data structure called a sized buffer. A sized buffer has
a size field followed by an array of octets equal in number to the value in the size field.
The structure will have an identifying name. When the specification references the size field of the
structure, the structure name is followed by “.size” (a period followed by the word “size”). When
the specification references the octet array of the structure, the structure name is followed by
“.buffer” (a period followed by the word “buffer”).
2.3 Numbers
EXAMPLE 1 40 FF 12 34 16
Radix 2 (binary) numbers use a space separator between groups of four binary digits.
For numbers using a binary radix, the number of digits indicates the number of bits in the
representation.
EXAMPLE 3 2016 is a hexadecimal number that contains exactly 8 bits and has a decimal value of 32.
EXAMPLE 4 10 0000 2 is a binary number that contains exactly 6 bits and has a decimal value of 32.
EXAMPLE 5 0 2016 is a hexadecimal number that contains exactly 12 bits and has a decimal value of 32.
A number in a machine-readable table may use the “0x” prefix to denote a base 16 number. In this
format, the number of digits is not always indicative of the number of bits in the representation.
EXAMPLE 6 0x20 is a hexadecimal number with a value of 32, and the number of bits is determine d by the context.
3 Notation
The notations in this clause describe the representation of various data so that it is both human
readable and amenable to automated processing.
A named constant is a numeric value to which a name has been assigned. In the C language, this
is done with a #define statement. In this specification, a named constant is defined in a table
that has a title that starts with “Definition” and ends with “Con stants.”
The table title will indicate the name of the class of constants that are being defined in the table.
The title will include the data type of the constants in parentheses.
The table in Example 1 names a collection of 16-bit constants.
EXAMPLE 1
3.2 Enumerations
A table that defines an enumerated data type will start with the word “Definition” and end with
“Values.”
A value in parenthesis will denote the intrinsic data size of the value and may have the values
"INT8", "UINT8", "INT16", “UINT16”, "INT32", and “UINT 32.” If this value is not present, “UINT16”
is assumed.
The table in Example 1 shows how an enumeration would be defined in this specification.
EXAMPLE 1
CLUBS 0x0000
DIAMONDS 0x000D
HEARTS 0x001A
SPADES 0x0027
A table that defines a structure containing bit fields has a title that starts with “Definition” and ends
with “Bits.” A type identifier in parentheses in the title indicates the size of the datum that contains
the bit fields.
When the bit fields do not occupy consecutive locations, a spacer field is defined with a name of
“Reserved.” Bits in these spaces are reserved and shall be zero.
The table in Example 1 shows how a structure containing bit fields would be defined in this
specification.
When a field has more than one bit, the range is indicated by a pair of numbers separated by a
colon (“:”). The numbers will be in high:low order.
EXAMPLE1
Parameters are constants, variables, structures, unions, and structure members. Structure
members are given a name that is indicative of its use, with no special prefix. The other parameter
types are named according to their type with their name starting with “TPMx_”, where “x” is an
optional character to indicate the data type.
In some cases, additional qualifying characters will follow the underscore. These are generally
used when dealing with an enumerated data type.
4 TPM_ALG_ID
Table 3 is the list of algorithms to which the TCG has assigned an algorithm identifier along with
its numeric identifier.
An algorithm ID is often used like a tag to determine the type of a structur e in a context-sensitive
way. The values for TPM_ALG_ID shall be in the range of 00 00 16 – 7F FF 16 . Other structure tags
will be in the range 80 00 16 – FF FF 16 .
An algorithm shall not be assigned a value in the range 00 C1 16 – 00 C6 16 in order to prevent any
overlap with the command structure tags used in TPM 1.2.
The implementation of some algorithms is dependent on the presence of other algorithms. When
there is a dependency, the algorithm that is required is listed in column labeled "D ep" (Dependent)
in Table 4.
TPM_ALG_SYMCIPHER 0x0025 O S S TCG TPM 2.0 library the object type for a
specification symmetric block cipher
TPM_ALG_KWP 0x0053 S X E AES A NIST SP800-38F AES Key Wrap with Padding
(KWP)
5 ECC Values
Table 4 is the list of identifiers for TCG-registered curve ID values for elliptic curve cryptography.
5.2.1 Introduction
The tables in this section contain the curve parameter data associated with the curves listed in
Table 4.
a {24, {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, coefficient of the
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFF, 0xFF, 0xFF, linear term in the
0xFF, 0xFF, 0xFF, 0xFF, 0xFC}} curve equation
b {24, {0x64, 0x21, 0x05, 0x19, 0xE5, 0x9C, 0x80, 0xE7, 0x0F, constant term for
0xA7, 0xE9, 0xAB, 0x72, 0x24, 0x30, 0x49, 0xFE, 0xB8, 0xDE, curve equation
0xEC, 0xC1, 0x46, 0xB9, 0xB1}}
gX {24, {0x18, 0x8D, 0xA8, 0x0E, 0xB0, 0x30, 0x90, 0xF6, 0x7C, x coordinate of
0xBF, 0x20, 0xEB, 0x43, 0xA1, 0x88, 0x00, 0xF4, 0xFF, 0x0A, base point G
0xFD, 0x82, 0xFF, 0x10, 0x12}}
gY {24, {0x07, 0x19, 0x2B, 0x95, 0xFF, 0xC8, 0xDA, 0x78, 0x63, y coordinate of
0x10, 0x11, 0xED, 0x6B, 0x24, 0xCD, 0xD5, 0x73, 0xF9, 0x77, base point G
0xA1, 0x1E, 0x79, 0x48, 0x11}}
n {24, {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, order of G
0xFF, 0xFF, 0xFF, 0x99, 0xDE, 0xF8, 0x36, 0x14, 0x6B, 0xC9,
0xB1, 0xB4, 0xD2, 0x28, 0x31}}
h {1,{1}} cofactor (a size of
zero indicates a
cofactor of 1)
5.2.7 BN P256
5.2.8 BN P638
5.2.9 SM2_P256
5.2.10 BP_P256_R1
5.2.11 BP_P384_R1
5.2.12 BP_P512_R1
5.2.13 CURVE_25519
The curve parameters are defined in Montgomery form. This curve can be transformed into Twisted
Edwards form.
6 Hash Parameters
6.1 Introduction
The tables in this clause define the basic parameters associated with the TCG-registered hash
algorithms listed in Table 3.
6.2 SHA1
6.3 SHA256
6.4 SHA384
6.5 SHA512
6.6 SM3_256
6.7 SHA3_256
6.8 SHA3_384
6.9 SHA3_512
This table defines a bit field to concisely convey a set of hash algorithms. An example of where
this could be useful is a parameter returning the set of hash algorithms an interface supports.
7.1 Introduction
The tables in this section define the parameters for each of the TCG -registered block ciphers listed
in Table 3.
7.2 AES
7.3 SM4
7.4 Camellia
7.5 TDES
The following 64, 64-bit DES key values shall not be used in a TCG compliant device.
010101010101010116 FEFEFEFEFEFEFEFE16 E0E0E0E0F1F1F1F116 1F1F1F1F0E0E0E0E16
011F011F010E010E16 1F011F010E010E0116 01E001E001F101F116 E001E001F101F10116
01FE01FE01FE01FE16 FE01FE01FE01FE0116 1FE01FE00EF10EF116 E01FE01FF10EF10E16
1FFE1FFE0EFE0EFE16 FE1FFE1FFE0EFE0E16 E0FEE0FEF1FEF1FE16 FEE0FEE0FEF1FEF116
01011F1F01010E0E16 1F1F01010E0E010116 E0E01F1FF1F10E0E16 0101E0E00101F1F116
1F1FE0E00E0EF1F116 E0E0FEFEF1F1FEFE16 0101FEFE0101FEFE16 1F1FFEFE0E0EFEFE16
E0FE011FF1FE010E16 011F1F01010E0E0116 1FE001FE0EF101FE16 E0FE1F01F1FE0E0116
011FE0FE010EF1FE16 1FE0E01F0EF1F10E16 E0FEFEE0F1FEFEF116 011FFEE0010EFEF116
1FE0FE010EF1FE0116 FE0101FEFE0101FE16 01E01FFE01F10EFE16 1FFE01E00EFE01F116
FE011FE0FE010EF116 FE01E01FFE01F10E16 1FFEE0010EFEF10116 FE1F01E0FE0E01F116
01E0E00101F1F10116 1FFEFE1F0EFEFE0E16 FE1FE001FE0EF10116 01E0FE1F01F1FE0E16
E00101E0F10101F116 FE1F1FFEFE0E0EFE16 01FE1FE001FE0EF116 E0011FFEF1010EFE16
FEE0011FFEF1010E16 01FEE01F01FEF10E16 E001FE1FF101FE0E16 FEE01F01FEF10E0116
01FEFE0101FEFE0116 E01F01FEF10E01FE16 FEE0E0FEFEF1F1FE16 1F01011F0E01010E16
E01F1FE0F10E0EF116 FEFE0101FEFE010116 1F01E0FE0E01F1FE16 E01FFE01F10EFE0116
FEFE1F1FFEFE0E0E16 1F01FEE00E01FEF116 E0E00101F1F1010116 FEFEE0E0FEFEF1F116
Annex A — Bibliography
For dated references, only the edition cited applies. For undated references, the latest edition of
the referenced document (including any amendments) applies.
• FIPS 202, SHA-3 Standard: Permutation-Based Hash and Extendable-Output Functions
• GB/T 32907-2016: Information security technology—SM4 block cipher algorithm
• GB/T 32918.1-2016: Information security technology—Public key cryptographic algorithm SM2
based on elliptic curves—Part 1: General
• GB/T 32918.2-2016: Information security technology—Public key cryptographic algorithm SM2
based on elliptic curves—Part 2: Digital signature algorithm
• GB/T 32918.3-2016: Information security technology—Public key cryptographic algorithm SM2
based on elliptic curves—Part 3: Key exchange protocol
• GB/T 32918.4-2016: Information security technology—Public key cryptographic algorithm SM2
based on elliptic curves—Part 4: Public key encryption algorithm
• GB/T 32918.5-2017: Information security technology—Public key cryptographic algorithm SM2
based on elliptic curves—Part 5: Parameter definition
• IEEE Std 1363 TM -2000, Standard Specifications for Public Key Cryptography
• IEEE Std 1363a™-2004 (Amendment to IEEE Std 1363™-2000), IEEE Standard Specifications
for Public Key Cryptography- Amendment 1: Additional Techniques
• IETF RFC 8017, Public-Key Cryptography Standards (PKCS) #1: RSA Cryptography
Specifications Version 2.2
• IETF RFC 7748, Elliptic Curves for Security
• IETF RFC 8032, Edwards-Curve Digital Signature Algorithm (EdDSA)
• ISO/IEC 9797-2, Information technology — Security techniques — Message authentication
codes (MACs) — Part 2: Mechanisms using a dedicated hash-function
• ISO/IEC 10116, Information technology — Security techniques — Modes of operation for an n-
bit block cipher
• ISO/IEC 10118-3, Information technology — Security techniques — Hash-functions — Part 3:
Dedicated hash functions
• ISO/IEC 14888-3, Information technology -- Security techniques -- Digital signature with
appendix -- Part 3: Discrete logarithm based mechanisms
• ISO/IEC 15946-1, Information technology — Security techniques — Cryptographic techniques
based on elliptic curves — Part 1: General
• ISO/IEC 18033-3, Information technology — Security techniques — Encryption algorithms —
Part 3: Block ciphers
• ISO/IEC 19772, Information technology — Security techniques — Authenticated encryption
• NIST SP800-108, Recommendation for Key Derivation Using Pseudorandom Functions
(Revised)
• NIST SP800-56A, Recommendation for Pair-Wise Key Establishment Schemes Using Discrete
Logarithm Cryptography (Revised)
• NIST SP800-38C, Recommendation for Block Cipher Modes of Operation: The CCM Mode for
Authentication and Confidentiality
• NIST SP800-38D, Recommendation for Block Cipher Modes of Operation: Galois/Counter
Mode (GCM) and GMAC
• NIST SP800-38F, Recommendation for Block Cipher Modes of Operation: Methods for Key
Wrapping
• TCG Trusted Platform Module 2.0 Library Specification – Part 1: Architecture