diff --git a/crypto-algorithms-list-properties-description.md b/crypto-algorithms-list-properties-description.md index 22093ce..7fba782 100644 --- a/crypto-algorithms-list-properties-description.md +++ b/crypto-algorithms-list-properties-description.md @@ -37,26 +37,33 @@ ## cryptoClass -* Description: cryptographic algorithms are categorized in classes. The classes are defined by the number of cryptographic keys that are used in conjunction with the algorithm. - * Cryptographic hash functions do not require keys for their basic operation. - * Symmetric-key algorithms transform data in a way that is fundamentally difficult to undo without knowledge of a secret key. The key is “symmetric” because the same key is used for a cryptographic operation and its inverse - * Asymmetric-key algorithms, commonly known as public-key algorithms, use two related keys (i.e., a key pair) to perform their functions: a public key and a private key. The public key may be known by anyone; the private key should be under the sole control of the entity that “owns” the key pair. Even though the public and private keys of a key pair are related, knowledge of the public key cannot be used to determine the private key. +* Description: cryptographic algorithms are categorized in classes. The classes are defined by the number of cryptographic keys that are used in conjunction with the algorithm, their functional nature, or their resistance to specific computational threats. + * Cryptographic-Hash-Function: cryptographic hash functions do not require keys for their basic operation. + * Symmetric-Key-Algorithm: symmetric-key algorithms transform data in a way that is fundamentally difficult to undo without knowledge of a secret key. The key is “symmetric” because the same key is used for a cryptographic operation and its inverse. + * Asymmetric-Key-Algorithm: asymmetric-key algorithms, commonly known as public-key algorithms, use two related keys (i.e., a key pair) to perform their functions: a public key and a private key. The public key may be known by anyone; the private key should be under the sole control of the entity that “owns” the key pair. Even though the public and private keys of a key pair are related, knowledge of the public key cannot be used to determine the private key. + * Message-Authentication-Code: these algorithms provide data origin authentication and integrity protection by requiring a shared secret key between the sender and receiver to generate a tag. Unlike simple hash functions, they ensure that a message cannot be tampered with by an attacker who does not possess the secret key. + * Key-Derivation-Function: these functions derive one or more secret keys from a master secret, password, or other entropy source through a process of stretching or compression. They are essential for transforming human-readable passwords or raw keying material into secure, fixed-length keys suitable for other cryptographic operations. + * Random-Number-Generator: these mechanisms produce sequences of bits or numbers that lack any predictable pattern and are used to ensure the unpredictability of cryptographic keys and nonce. They include both hardware-based true random number generators and deterministic algorithms that expand a small entropy seed into a larger sequence. * Cardinality: [1] -* Values: "Cryptographic-Hash-Function" , "Symetric-Key-Algorithm" or "Asymmetric-Key-Algorithm" +* Values: "Cryptographic-Hash-Function", "Symmetric-Key-Algorithm", "Asymmetric-Key-Algorithm", "Message-Authentication-Code", "Key-Derivation-Function", or "Random-Number-Generator" ### cryptoSubClass -* Description: each class of algorithms is categorised in subclasses. These subclasses are based/inspired on: - * NIST Special Publication (SP) [800-57](https://nvlpubs.nist.gov/nistpubs/SpecialPublications/NIST.SP.800-57pt1r4.pdf) Part 1, Rev. 4, January - * Input from the SPDX Cryptographic Algorithms List Group members +* Description: each class of algorithms is categorised in subclasses. * Cardinality: [0..1] * Values: * cryptoClass "Cryptographic-Hash-Function" - * cryptoSubClass values: "Hash-Function" , "Password-Hashing" , "Message-Authentication-Code" , "Checksum" + * cryptoSubClass values: "Hash-Function" , "Password-Hashing" or "Checksum" * cryptoClass "Symetric-Key-Algorithm" - * cryptoSubClass values: "Block-Cipher" , "Stream-Cipher" , "Encoding" , "Random-Number-Generator" , "Key-Derivation" + * cryptoSubClass values: "Block-Cipher" , "Stream-Cipher" or "Encoding" * cryptoClass "Asymmetric-Key-Algorithm" - * cryptoSubClass values: "Public-Key-Encryption" , "Public-Key-Cipher" , "Elliptic-Curve-Cryptography" , "Digital-Signature" , "Post-Quantum-Cryptography" , "Protocol", "Hybrid-Cipher" or "Key-Exchange-Mechanism" + * cryptoSubClass values: "Public-Key-Encryption" , "Public-Key-Cipher" , "Elliptic-Curve-Cryptography" , "Digital-Signature" , "Protocol", "Hybrid-Cipher" or "Key-Exchange-Mechanism" + * cryptoClass "Message-Authentication-Code" + * cryptoSubClass values: + * cryptoClass "Key-Derivation-Function" + * cryptoSubClass values: + * cryptoClass "Random-Number-Generator" + * cryptoSubClass values: Notes: 1. the subclasses has been added to the cryptoClass property, separated by a "/" character from the class. This specific way to structure the subclasses is WIP. diff --git a/yaml/CMAC.yaml b/yaml/CMAC.yaml index 62cbabd..fda133e 100644 --- a/yaml/CMAC.yaml +++ b/yaml/CMAC.yaml @@ -2,5 +2,5 @@ id: CMAC oid: 1.2.840.113549.1.9.16.3.25 name: Cipher-based Message Authentication Code -cryptoClass: Cryptographic-Hash-Function/Message-Authentication-Code +cryptoClass: Message-Authentication-Code commonkeySize: '128' diff --git a/yaml/argon2.yaml b/yaml/argon2.yaml index 3c8862a..4d54425 100644 --- a/yaml/argon2.yaml +++ b/yaml/argon2.yaml @@ -1,7 +1,7 @@ # SPDX-License-Identifier: CC0-1.0 -id: 'argon2' +id: argon2 oid: -name: 'Argon2' -cryptoClass: 'Key-Derivation-Function' +name: Argon2 +cryptoClass: Key-Derivation-Function commonkeySize: '256' specifiedkeySize: {min: '128', max: '512'} diff --git a/yaml/fortuna.yaml b/yaml/fortuna.yaml index ec98bca..8bd2d00 100644 --- a/yaml/fortuna.yaml +++ b/yaml/fortuna.yaml @@ -1,5 +1,5 @@ # SPDX-License-Identifier: CC0-1.0 id: fortuna name: Fortuna Random Number Generator -cryptoClass: Symmetric-Key-Algorithm/Random-Number-Generator +cryptoClass: Random-Number-Generator commonkeySize: '64' diff --git a/yaml/isaac.yaml b/yaml/isaac.yaml index c1f2668..8da3879 100644 --- a/yaml/isaac.yaml +++ b/yaml/isaac.yaml @@ -1,5 +1,5 @@ # SPDX-License-Identifier: CC0-1.0 id: isaac name: ISAAC Random Number Generator -cryptoClass: Symmetric-Key-Algorithm/Random-Number-Generator +cryptoClass: Random-Number-Generator commonkeySize: '256' diff --git a/yaml/pbe.yaml b/yaml/pbe.yaml index a791abc..95d0d7b 100644 --- a/yaml/pbe.yaml +++ b/yaml/pbe.yaml @@ -1,5 +1,5 @@ # SPDX-License-Identifier: CC0-1.0 id: pbe name: Password-Based Encryption -cryptoClass: Symmetric-Key-Algorithm/Key-Derivation +cryptoClass: Key-Derivation-Function commonkeySize: '128' diff --git a/yaml/pbes1.yaml b/yaml/pbes1.yaml index 5c34fe8..c547f5d 100644 --- a/yaml/pbes1.yaml +++ b/yaml/pbes1.yaml @@ -1,5 +1,5 @@ # SPDX-License-Identifier: CC0-1.0 id: pbes1 name: Password-Based Encryption Scheme 1 -cryptoClass: Symmetric-Key-Algorithm/Key-Derivation +cryptoClass: Key-Derivation-Function commonkeySize: '128' diff --git a/yaml/pbes2.yaml b/yaml/pbes2.yaml index ec351fe..3afde86 100644 --- a/yaml/pbes2.yaml +++ b/yaml/pbes2.yaml @@ -1,5 +1,5 @@ # SPDX-License-Identifier: CC0-1.0 id: pbes2 name: Password-Based Encryption Scheme 2 -cryptoClass: Symmetric-Key-Algorithm/Key-Derivation +cryptoClass: Key-Derivation-Function commonkeySize: '256' diff --git a/yaml/pbkdf1.yaml b/yaml/pbkdf1.yaml index b8585e9..2939c1d 100644 --- a/yaml/pbkdf1.yaml +++ b/yaml/pbkdf1.yaml @@ -1,5 +1,5 @@ # SPDX-License-Identifier: CC0-1.0 id: pbkdf1 name: Password-Based Key Derivation Function 1 -cryptoClass: Cryptographic-Hash-Function/Key-Derivation +cryptoClass: Key-Derivation-Function commonkeySize: '128' diff --git a/yaml/pbkdf2.yaml b/yaml/pbkdf2.yaml index 51d066d..77235ba 100644 --- a/yaml/pbkdf2.yaml +++ b/yaml/pbkdf2.yaml @@ -2,5 +2,5 @@ id: pbkdf2 oid: 1.2.840.113549.1.5.12 name: Password-Based Key Derivation Function 2 -cryptoClass: Cryptographic-Hash-Function/Key-Derivation +cryptoClass: Key-Derivation-Function commonkeySize: '128' diff --git a/yaml/yarrow.yaml b/yaml/yarrow.yaml index 56f061f..f264736 100644 --- a/yaml/yarrow.yaml +++ b/yaml/yarrow.yaml @@ -1,5 +1,5 @@ # SPDX-License-Identifier: CC0-1.0 id: yarrow name: Yarrow Random Number Generator -cryptoClass: Symmetric-Key-Algorithm/Random-Number-Generator +cryptoClass: Random-Number-Generator commonkeySize: '160'