M12 / Discovery, inventory and CBOM

Five-layer discovery: network, code, cert, dependency, runtime

PractitionerAdvisor

After this lesson you can

  • Name the five layers of a crypto discovery program (network/code/cert/dependency/runtime) and distinguish what each layer finds
  • Explain each layer's real blind spot with a concrete example (e.g. ECH hiding the hostname)

Before thisM8: Protocols

Mental model

In M11 you saw the Europol/FS-ISAC/CFDIR risk-based prioritization methodology; that methodology starts by building a crypto inventory. This lesson shows how to build that inventory, with five different discovery layers; each layer has its own strength and its own blind spot.

Five layers, five different viewpoints

Network: passively or actively analysing live network traffic to observe which TLS versions, cipher suites and key exchange methods are in use. A fast, non-intrusive method, but it only sees the traffic it can see.

Code: static analysis of source code to find which cryptography libraries are imported and which algorithms are called directly. It works at build time, but can miss an algorithm chosen dynamically at run time (for example one read from a configuration file).

Cert (certificate): using Certificate Transparency logs and direct certificate scanning to find which key types and sizes an organization’s TLS certificates use. A direct application of the certificate chain topics you saw in M7.

Dependency: scanning the libraries a piece of software uses (an SBOM, Software Bill of Materials) to find which cryptographic functions are embedded inside them. The current SBOM Minimum Elements document published on 29 July 2026 by CISA/NSA/FBI (with international partners) defines the minimum data fields an SBOM must carry (SBOM Metadata: about the document itself; Component Data: about the software’s components); it is a comprehensive update of NTIA’s 2021 version, roughly doubling the required data set. This layer is the main input to the CBOM (Cryptography Bill of Materials) you will see in the next lesson: you can think of a CBOM as a crypto-specific extension of an SBOM.

Runtime: directly observing which cryptographic operations a process actually performs while running (for example by hooking a library function). It can catch algorithms chosen dynamically at run time that the static methods (code, dependency) miss, but it adds load and complexity to the production system.

A real blind spot: ECH, which the network layer cannot see

A concrete, current example of the network layer’s limit: ECH (Encrypted Client Hello, RFC 9849, with FINAL2026-03-01 status, became a full standard in 2026 after a long time as a draft) is a TLS 1.3 extension that encrypts the contents of a client’s ClientHello message (including the SNI, the target hostname). With ECH enabled, a network observer (a passive traffic analysis tool) sees an encrypted_client_hello extension in the ClientHello but cannot see the real target hostname; only a generic “public name” belonging to the ECH provider is visible. It can be understood with a “two envelopes” analogy: the outer envelope shows a generic address, and the real address is inside the inner (encrypted) envelope. For a network-based crypto discovery program, this is a growing blind spot: as ECH spreads, answering “which service is being talked to, with which algorithm” just by looking at network traffic becomes steadily harder.

A similar blind spot applies to east-west traffic in a microservice architecture (service-to-service traffic, “east-west” rather than “north-south”): this traffic is usually encrypted (for example with mTLS) and never appears at the network boundary (the organization’s external gateway), because it never leaves. These two examples are concrete evidence of why a single layer (network) is not enough on its own; the code, dependency and runtime layers catch the real cryptography behind this traffic, which the network cannot see, from other angles.

Numbers to know

  • Five discovery layers: network (live traffic analysis), code (static source code scanning), cert (certificate and CT log scanning), dependency (SBOM and library scanning, the basis of a CBOM), runtime (the real behaviour of a running process)
  • If ECH (Encrypted Client Hello) is enabled, the network layer cannot see the SNI (target hostname); the ClientHello itself is encrypted, and only a generic 'public name' is visible

Lab: Observe a layer's blind spot in your own environment

Requires: dig (DNS lookup tool), internet access. Check your setup

shell
dig -t TYPE65 research.cloudflare.com +short
Recorded output
A raw HTTPS DNS record is returned; inside the hex you will find the substring "636C6F7564666C6172652D6563682E636F6D", which decodes in ASCII to "cloudflare-ech.com", the public name of the ECH configuration; direct evidence that the real target hostname is hidden behind an encrypted ECH configuration even at the DNS level (note: standard openssl s_client cannot handle ECH without a special build, which is why we use this DNS-level method that shows an ECH configuration exists)

At the table

How to say this in a bank meeting.

To an executive
A single discovery method (for example network scanning alone) cannot see our whole crypto inventory; each of five layers closes a different blind spot, and none is enough on its own.
To an architect
The network layer cannot see ECH or encrypted east-west (service mesh internal) traffic; the code layer can miss algorithms chosen dynamically at run time; the runtime layer catches what both miss but adds load to production. Using all five together is necessary so that the others cover each layer's blind spot.
Objection
“"We scan our network traffic. Doesn't that mean we know our crypto inventory?"”
Answer
No: on an ECH-enabled connection you cannot even see the target hostname, let alone which algorithm is used. Also, in a microservice architecture most service-to-service (east-west) traffic is encrypted and usually never appears at the network boundary. Network scanning alone shows only part of the inventory, and a shrinking part at that.

Sources

  • IETF TLS Working Group, 2026. The normative source for how ECH encrypts the ClientHello (including SNI) and why network-based discovery cannot see this traffic; this mechanism, long a draft (draft-ietf-tls-esni), became a full RFC in 2026

    overview / 10 min

  • CISA, NSA, FBI and international partners, 2026. The source of the official, current minimum data requirements for an SBOM, the output of the dependency layer; it comprehensively updated NTIA's 2021 version

    SBOM Metadata and Component Data sections / 15 min

Checkpoint

Answer first, then compare with the model answer and score yourself against the rubric. Saved in this browser only.

  1. 01Recall

    What are the five discovery layers, and what does each find?

  2. 02Recall

    What can't the network layer see when ECH is enabled?

  3. 03Scenario

    A team plans to build its crypto inventory from network scanning only. Which two real blind spots (from this lesson) do you show them to recommend widening the plan?

  4. 04Hostile

    An auditor asks 'Is your crypto inventory complete? Are you sure you're not missing anything?' Explain honestly the limit of each of the five layers.

Project linkThe direct skeleton of the discovery methodology in Project 3 (crypto inventory and prioritization); the five layers are the section headings of Project 3's own discovery plan.