You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: schema/bom-1.6.proto
+257Lines changed: 257 additions & 0 deletions
Original file line number
Diff line number
Diff line change
@@ -71,6 +71,8 @@ enum Classification {
71
71
CLASSIFICATION_MACHINE_LEARNING_MODEL=11;
72
72
// A collection of discrete values that convey information.
73
73
CLASSIFICATION_DATA=12;
74
+
// Cryptographic asset including algorithms, protocols, certificates, keys, tokens, and secrets.
75
+
CLASSIFICATION_CRYPTOGRAPHIC_ASSET=13;
74
76
}
75
77
76
78
messageCommit {
@@ -137,6 +139,8 @@ message Component {
137
139
optionalModelCardmodelCard=25;
138
140
// This object SHOULD be specified for any component of type `data` and MUST NOT be specified for other component types.
139
141
optionalComponentDatadata=26;
142
+
// Cryptographic assets have properties that uniquely define them and that make them actionable for further reasoning. As an example, it makes a difference if one knows the algorithm family (e.g. AES) or the specific variant or instantiation (e.g. AES-128-GCM). This is because the security level and the algorithm primitive (authenticated encryption) is only defined by the definition of the algorithm variant. The presence of a weak cryptographic algorithm like SHA1 vs. HMAC-SHA1 also makes a difference.
143
+
optionalCryptoPropertiescryptoProperties=27;
140
144
}
141
145
142
146
// Specifies the data flow.
@@ -169,7 +173,10 @@ enum DataFlowDirection {
169
173
messageDependency {
170
174
// References a component or service by the its bom-ref attribute
171
175
stringref=1;
176
+
// The bom-ref identifiers of the components or services that are dependencies of this dependency object.
172
177
repeatedDependencydependencies=2;
178
+
// The bom-ref identifiers of the components or services that define a given specification or standard, which are provided or implemented by this dependency object.
// Cryptographic building blocks used in higher-level cryptographic systems and protocols. Primitives represent different cryptographic routines: deterministic random bit generators (drbg, e.g. CTR_DRBG from NIST SP800-90A-r1), message authentication codes (mac, e.g. HMAC-SHA-256), blockciphers (e.g. AES), streamciphers (e.g. Salsa20), signatures (e.g. ECDSA), hash functions (e.g. SHA-256), public-key encryption schemes (pke, e.g. RSA), extended output functions (xof, e.g. SHAKE256), key derivation functions (e.g. pbkdf2), key agreement algorithms (e.g. ECDH), key encapsulation mechanisms (e.g. ML-KEM), authenticated encryption (ae, e.g. AES-GCM) and the combination of multiple algorithms (combiner, e.g. SP800-56Cr2).
1789
+
optionalCryptoPrimitiveprimitive=1;
1790
+
// An identifier for the parameter set of the cryptographic algorithm. Examples: in AES128, '128' identifies the key length in bits, in SHA256, '256' identifies the digest length, '128' in SHAKE128 identifies its maximum security level in bits, and 'SHA2-128s' identifies a parameter set used in SLH-DSA (FIPS205).
1791
+
optionalstringparameterSetIdentifier=2;
1792
+
// The specific underlying Elliptic Curve (EC) definition employed which is an indicator of the level of security strength, performance and complexity. Absent an authoritative source of curve names, CycloneDX recommends use of curve names as defined at [https://neuromancer.sk/std/](https://neuromancer.sk/std/), the source from which can be found at [https://github.com/J08nY/std-curves](https://github.com/J08nY/std-curves).
1793
+
optionalstringcurve=3;
1794
+
// The target and execution environment in which the algorithm is implemented in.
// The target platform for which the algorithm is implemented. The implementation can be 'generic', running on any platform or for a specific platform.
// The certification that the implementation of the cryptographic algorithm has received, if any. Certifications include revisions and levels of FIPS 140 or Common Criteria of different Extended Assurance Levels (CC-EAL).
1799
+
repeatedstringcertificationLevel=6;
1800
+
// The mode of operation in which the cryptographic algorithm (block cipher) is used.
1801
+
optionalCryptoAlgorithmModemode=7;
1802
+
// The padding scheme that is used for the cryptographic algorithm.
1803
+
optionalCryptoAlgorithmPaddingpadding=8;
1804
+
// The cryptographic functions implemented by the cryptographic algorithm.
1805
+
repeatedCryptoAlgorithmFunctioncryptoFunctions=9;
1806
+
// The classical security level that a cryptographic algorithm provides (in bits).
1807
+
optionalint32classicalSecurityLevel=10;
1808
+
// The NIST security strength category as defined in https://csrc.nist.gov/projects/post-quantum-cryptography/post-quantum-cryptography-standardization/evaluation-criteria/security-(evaluation-criteria). A value of 0 indicates that none of the categories are met.
1809
+
optionalint32nistQuantumSecurityLevel=11;
1810
+
} // end of AlgorithmProperties
1811
+
messageCertificateProperties {
1812
+
// The subject name for the certificate
1813
+
optionalstringsubjectName=1;
1814
+
// The issuer name for the certificate
1815
+
optionalstringissuerName=2;
1816
+
// The date and time according to ISO-8601 standard from which the certificate is valid
// The associated value of the cryptographic material.
1882
+
optionalstringvalue=9;
1883
+
// The size of the cryptographic asset (in bits).
1884
+
optionalint64size=10;
1885
+
// The format of the related cryptographic material (e.g. P8, PEM, DER).
1886
+
optionalstringformat=11;
1887
+
// The mechanism by which the cryptographic asset is secured by.
1888
+
optionalCryptoRelatedSecuredBysecuredBy=12;
1889
+
} // end of RelatedCryptoMaterialProperties
1890
+
messageProtocolProperties {
1891
+
enumCryptoProtocolType {
1892
+
CRYPTO_PROTOCOL_TYPE_TLS=0;
1893
+
CRYPTO_PROTOCOL_TYPE_SSH=1;
1894
+
CRYPTO_PROTOCOL_TYPE_IPSEC=2;
1895
+
CRYPTO_PROTOCOL_TYPE_IKE=3;
1896
+
CRYPTO_PROTOCOL_TYPE_SSTP=4;
1897
+
CRYPTO_PROTOCOL_TYPE_WPA=5;
1898
+
CRYPTO_PROTOCOL_TYPE_OTHER=6;
1899
+
CRYPTO_PROTOCOL_TYPE_UNKNOWN=7;
1900
+
}
1901
+
messageCryptoProtocolCipherSuite {
1902
+
// A common name for the cipher suite. For example: TLS_DHE_RSA_WITH_AES_128_CCM
1903
+
optionalstringname=1;
1904
+
// A list of algorithms related to the cipher suite. Use the bom-ref to the algorithm cryptographic asset.
1905
+
repeatedstringalgorithms=2;
1906
+
// A list of common identifiers for the cipher suite. For example: 0xC0 and 0x9E
1907
+
repeatedstringidentifiers=3;
1908
+
}
1909
+
messageIkev2TransformTypes {
1910
+
// Transform Type 1: encryption algorithms
1911
+
repeatedstringencr=1;
1912
+
// Transform Type 2: pseudorandom functions
1913
+
repeatedstringprf=2;
1914
+
// Transform Type 3: integrity algorithms
1915
+
repeatedstringinteg=3;
1916
+
// Transform Type 4: Key Exchange Method (KE) per RFC9370, formerly called Diffie-Hellman Group (D-H)
1917
+
repeatedstringke=4;
1918
+
// Specifies if an Extended Sequence Number (ESN) is used.
1919
+
optionalboolesn=5;
1920
+
// IKEv2 Authentication method
1921
+
repeatedstringauth=6;
1922
+
}
1923
+
// The concrete protocol type.
1924
+
optionalCryptoProtocolTypetype=1;
1925
+
// The version of the protocol. Examples include 1.0, 1.2, and 1.99.
1926
+
optionalstringversion=2;
1927
+
// A list of cipher suites related to the protocol.
1928
+
repeatedCryptoProtocolCipherSuitecipherSuites=3;
1929
+
// The IKEv2 transform types supported (types 1-4), defined in RFC7296 section 3.3.2, and additional properties.
1930
+
optionalIkev2TransformTypesikev2TransformTypes=4;
1931
+
} // end of ProtocolProperties
1932
+
// Cryptographic assets occur in several forms. Algorithms and protocols are most commonly implemented in specialized cryptographic libraries. They may however also be 'hardcoded' in software components. Certificates and related cryptographic material like keys, tokens, secrets or passwords are other cryptographic assets to be modelled.
1933
+
optionalCryptoAssetTypeassetType=1;
1934
+
// Additional properties specific to a cryptographic algorithm.
1935
+
optionalAlgorithmPropertiesalgorithmProperties=2;
1936
+
// Properties for cryptographic assets of asset type 'certificate'
0 commit comments