Skip to content

Understanding Components

Every component in the CBOM represents a cryptographic asset.


Component Structure

Required Fields:

Field Description
type Component type
name Human-readable name
bom-ref Unique identifier

Optional Fields:

Field Description
version Component version
cryptoProperties CycloneDX CBOM-specific fields
properties Namespaced cbom:* properties
evidence File locations and hashes

Human-Readable bom-refs (v1.1+)

Starting in v1.1, bom-ref values are human-readable:

Before (v1.0):

"bom-ref": "5db9813bf30c015aaf7c729a5f84c415d6b1a90bf090f1fceb..."

After (v1.1):

"bom-ref": "cert:swisssign-gold-ca-g2"

Format by Asset Type:

Type Format Example
Certificate cert:<sanitized-cn> cert:digicert-assured-id-root-ca
Algorithm algo:<algorithm>-<keysize> algo:aes-256-gcm-256
Key key:<algorithm>-<keysize>-<hash> key:rsa-2048-a1b2c3d4
Service service:<name> service:apache-httpd
Protocol protocol:<name> protocol:tls
Cipher Suite cipher:<name> cipher:tls-ecdhe-rsa-with-aes-256-gcm-sha384
Library library:<name> library:openssl
Application app:<name> app:curl

Component Types

cryptographic-asset

Has a cryptoProperties block:

{
  "type": "cryptographic-asset",
  "name": "AES-256-GCM",
  "bom-ref": "algo:aes-256-gcm-256",
  "cryptoProperties": {
    "assetType": "algorithm",
    "algorithmProperties": {
      "primitive": "ae",
      "parameterSetIdentifier": "256",
      "mode": "gcm"
    }
  }
}

Asset Types:

assetType Description Example
algorithm Cryptographic algorithm AES-256-GCM
certificate X.509 certificate CA root cert
related-crypto-material Key material RSA-2048 key
protocol Communication protocol TLS 1.3

library

Crypto libraries tracked via package managers:

{
  "type": "library",
  "name": "OpenSSL",
  "bom-ref": "library:openssl",
  "version": "3.0.2",
  "properties": [
    { "name": "cbom:lib:soname", "value": "libssl.so.3" },
    { "name": "cbom:lib:type", "value": "crypto" }
  ]
}

operating-system

Services with network functionality:

{
  "type": "operating-system",
  "name": "Apache HTTPD",
  "bom-ref": "service:apache-httpd",
  "properties": [
    { "name": "cbom:svc:port", "value": "443" },
    { "name": "cbom:svc:config_file", "value": "/etc/apache2/sites-enabled/default-ssl.conf" }
  ]
}

application

Applications with crypto dependencies:

{
  "type": "application",
  "name": "curl",
  "bom-ref": "app:curl",
  "properties": [
    { "name": "cbom:app:role", "value": "client" },
    { "name": "cbom:app:binary_path", "value": "/usr/bin/curl" }
  ]
}

Evidence Section

Components include evidence of where they were found:

{
  "evidence": {
    "occurrences": [
      {
        "location": "/etc/ssl/certs/DigiCert_Global_Root_CA.pem"
      },
      {
        "location": "/usr/share/ca-certificates/DigiCert_Global_Root_CA.crt"
      }
    ]
  }
}

Common Queries

List All Component Types

cat cbom.json | jq '[.components[].type] | unique'

Find Components by bom-ref Prefix

cat cbom.json | jq '.components[] | select(.["bom-ref"] | startswith("cert:"))'

Count Components by Asset Type

cat cbom.json | jq '[.components[] | .cryptoProperties?.assetType] |
    group_by(.) |
    map({type: .[0], count: length})'