Deptic Logo

NTIA EO14028 Compliance

Background:

US Executive Order 14028 (May 2021) requires all software sold to the US federal government to include a Software Bill of Materials. The NTIA (National Telecommunications and Information Administration) defined the minimum data fields required in every SBOM.

The 7 NTIA Minimum Elements:

#ElementNTIA DefinitionHow Deptic collects it
1Supplier NameThe name of an entity that creates, defines, and identifies componentsFor npm: package author field from registry. For Maven: groupID. For pip: PyPI maintainer. Note: often unavailable — most common reason for scores below 100.
2Component NameDesignation assigned to a unit of software defined by the originating supplierPackage name field from manifest
3Version of the ComponentIdentifier used by the supplier to specify a change in software from a previously identified versionVersion field from manifest and registry
4Other Unique IdentifiersOther identifiers that are used to identify a component, or serve as a look-up keyPackage URL (PURL) generated per component using standard pkg: scheme
5Dependency RelationshipCharacterizing the relationship that an upstream component X is included in software YDepth field: 0=direct, 1=transitive L1, 2=transitive L2. ParentName field links child to parent.
6Author of SBOM DataThe name of the entity that creates the SBOM data for this component"Deptic v1.2.0" set as SBOM author in all exports
7TimestampRecord of the date and time of the SBOM data assemblyUTC timestamp set at scan completion

Scoring algorithm:

go
score = 0

Element 1 (Supplier):
  coverage = components with non-empty supplier / total components
  if coverage == 100% → +14 points
  else → +14 * (coverage / 100)

Element 2 (Component Name):
  coverage = components with non-empty name / total
  passed = coverage == 100%
  if passed → +14 points

Element 3 (Version):
  coverage = components where version != "" AND != "unknown" AND != "latest"
  passed = coverage == 100%
  if passed → +14 points

Element 4 (Unique Identifiers / PURL):
  valid PURL = name + version + ecosystem all present
  coverage = components with valid PURL / total
  if coverage == 100% → +14 points

Element 5 (Dependency Relationships):
  count = components where depth > 0 AND parent_name != ""
  passed = count > 0
  if passed → +14 points

Element 6 (SBOM Author):
  passed = sbom_author != "" AND sbom_tool != ""
  if passed → +14 points

Element 7 (Timestamp):
  passed = generated_at is valid and within last 365 days
  if passed → +14 points

final_score = sum of all elements (max 100, 2 points rounding)

Compliance status thresholds:

ScoreStatusMeaning
95–100COMPLIANTMeets all NTIA minimum elements
75–94PARTIALLY COMPLIANTMeets most elements, minor gaps
0–74NON-COMPLIANTSignificant data gaps — not suitable for federal submission
The most common reason for scores below 100 is missing Supplier Name data. npm packages rarely include author metadata. Maven packages using groupID as supplier (e.g., org.springframework) are considered compliant for this element.