The Origin of SBOM Minimum Elements
In July 2021, the National Telecommunications and Information Administration (NTIA) published "The Minimum Elements for a Software Bill of Materials (SBOM)" — a foundational document that defined the baseline data fields that any SBOM must contain to be considered complete and useful.
This document was a direct response to Executive Order 14028 (May 2021), which required the Department of Commerce and NTIA to publish guidance on the minimum elements of an SBOM. The goal was not to define the most comprehensive possible SBOM — it was to define the minimum that would enable meaningful security and compliance activities.
Since then, CISA has released additional guidance including "Framing Software Component Transparency" (September 2024) and a draft "2025 Minimum Elements for SBOM" that refines and expands on the original NTIA document. In early 2026, these updated guidelines represent the current authoritative standard.
The Seven NTIA Minimum Elements
The NTIA defined seven data fields that every component entry in an SBOM must include. These map to specific fields in both SPDX and CycloneDX formats.
| # | Element | Description | SPDX Field | CycloneDX Field |
|---|---|---|---|---|
| 1 | Supplier Name | Name of the organization that created or maintains the component | PackageSupplier | component.supplier |
| 2 | Component Name | The name of the library, package, or module | PackageName | component.name |
| 3 | Version | The specific version of the component in use | PackageVersion | component.version |
| 4 | Unique Identifier | A unique identifier to enable cross-referencing with vulnerability databases. PURL (Package URL) or CPE recommended. | ExternalRef (PURL/CPE) | component.purl |
| 5 | Dependency Relationships | Which components depend on which others — enables graph analysis of the full dependency tree | Relationship: DEPENDS_ON | dependencies |
| 6 | SBOM Author | Who created the SBOM (person, tool, or organization) | Creator | metadata.tools / metadata.authors |
| 7 | Timestamp | When the SBOM was created — enables time-based analysis and audit trails | Created | metadata.timestamp |
Deep Dive: Each Minimum Element
1. Supplier Name
The Supplier Name identifies who created or distributes the component. For well-known open source projects, this is often the project's maintaining organization (e.g., "Apache Software Foundation" for Log4j). For packages distributed via package managers, the supplier is typically the package author or the organization listed in the package metadata.
Important: "Supplier" is not the same as "Originator" in SPDX terminology. The supplier is the entity from whom you received the component — which could be a package registry, a vendor, or the open source project directly.
2. Component Name
The Component Name is the canonical name of the library or package. For package manager-sourced
components, this should be the exact package name as listed in the registry
(e.g., log4j-core, not Apache Log4j). Consistency with package manager
naming enables accurate matching against vulnerability databases.
3. Version
The Version must be a specific, exact version — not a range. 2.14.1 is valid;
>=2.0.0 is not. Version is the most critical field for vulnerability matching:
CVEs are almost always tied to specific version ranges, and an imprecise version renders
vulnerability scanning inaccurate.
Many build systems store dependency version constraints (^1.2.0, ~1.2) rather than the resolved version. Your SBOM generator must resolve these to the exact installed version, not the constraint. Always scan lock files or build artifacts, not just package manifests.
4. Unique Identifier
The NTIA recommends a Unique Identifier to enable reliable cross-referencing across systems. Two standards are accepted:
- PURL (Package URL) — The de facto standard for package-manager-sourced components. A PURL encodes the package type, namespace, name, and version in a standardized format. Example:
pkg:maven/org.apache.logging.log4j/log4j-core@2.14.1 - CPE (Common Platform Enumeration) — The NIST standard for identifying software products. More verbose than PURLs, but required for matching against the NVD database. Example:
cpe:2.3:a:apache:log4j:2.14.1:*:*:*:*:*:*:*
Best practice is to include both PURL and CPE when possible, as different vulnerability databases use different identifiers.
npm: pkg:npm/lodash@4.17.21
PyPI: pkg:pypi/requests@2.31.0
Maven: pkg:maven/org.springframework/spring-core@6.1.0
NuGet: pkg:nuget/Newtonsoft.Json@13.0.3
Go: pkg:golang/github.com/gorilla/mux@v1.8.0
Cargo: pkg:cargo/serde@1.0.193
5. Dependency Relationships
Dependency relationships define how components are connected — which depends on which. This graph structure is essential for understanding the blast radius of a vulnerability: if Component A is vulnerable and Component B depends on Component A, then any application using Component B is also affected.
SPDX uses relationship types (DEPENDS_ON, CONTAINS, DYNAMIC_LINK, etc.) to capture these connections.
CycloneDX uses a dedicated dependencies array. Both should represent the full transitive
graph, not just direct dependencies.
6. SBOM Author
The SBOM Author field records who — or what tool — generated the SBOM. In automated pipelines,
this is typically the tool name and version (e.g., Tool: syft-1.0.1). For manually
curated SBOMs, it may include a person's name and organization.
This field matters for audit trails. When a regulator asks about an SBOM from two years ago, knowing the tool and version that generated it helps assess its completeness and reliability.
7. Timestamp
The Timestamp records when the SBOM was created, in ISO 8601 format (e.g., 2026-01-15T09:32:00Z).
It enables time-based analysis — you can compare SBOMs across release versions, determine how
current a given SBOM is, and correlate SBOMs with CVE publication dates.
CISA 2025/2026 Updates: What Changed
CISA's September 2024 guidance ("Framing Software Component Transparency") and the 2025 draft updates expanded on the NTIA minimum elements in several ways:
- Recommended additional fields — License information, hash values for component integrity verification, and copyright holders are now recommended (though not mandatory).
- VEX integration — CISA recommends that SBOMs be paired with VEX (Vulnerability Exploitability eXchange) documents to communicate whether specific CVEs are actually exploitable in a given product configuration.
- Machine readability emphasis — CISA strengthened guidance that SBOMs must be machine-readable (SPDX or CycloneDX), not just human-readable PDFs or Word documents.
- Completeness tiers — CISA introduced a tiered model distinguishing "minimum viable" SBOMs (meeting the seven NTIA fields) from "comprehensive" SBOMs that include additional metadata for richer security analysis.
Verifying Your SBOM Meets the Requirements
Before submitting an SBOM to a federal customer, regulator, or auditor, verify it against the minimum elements:
- Open the SBOM file and check that every component entry has all seven fields populated — not just the document header.
- Verify that versions are exact (not ranges or "unknown").
- Confirm that PURLs or CPEs are present for all components to enable vulnerability matching.
- Check that dependency relationships form a graph — not just a flat list of components.
- Validate the file against the SPDX or CycloneDX schema using a validator tool.
- Verify the timestamp is present and current (generated at build time, not a stale document).
Generate NTIA-Compliant SBOMs Automatically with Fossity
Fossity generates SBOMs that meet NTIA minimum element requirements — and go beyond them. Every SBOM generated by Fossity includes all seven mandatory fields for every component, plus enriched metadata (license data, hash values, VEX statements) recommended by CISA's 2025/2026 guidance. Fossity's continuous monitoring means your SBOMs stay current — you always have an accurate, up-to-date component inventory ready for any regulatory inquiry.
Generate Compliant SBOMs →Practical Checklist for Federal Contractors
- ☐ Identify all software products you deliver to federal customers
- ☐ Implement automated SBOM generation for each product on every release build
- ☐ Verify SBOM format is SPDX or CycloneDX (machine-readable)
- ☐ Confirm all seven NTIA minimum elements are present for every component
- ☐ Ensure version fields contain exact resolved versions, not ranges
- ☐ Include PURL identifiers for all components for vulnerability matching
- ☐ Store SBOMs with version history — you may be asked for SBOMs from past releases
- ☐ Establish a process to provide SBOMs to agencies upon request within your response SLA
- ☐ Implement continuous monitoring to detect new CVEs in your SBOM components
- ☐ Establish a vulnerability disclosure process for notifying agencies of newly discovered issues