DeftechSenior

Cybersecurity

Cybersecurity for a defence system is the set of design decisions that keep it trustworthy against a funded, patient adversary who may hold the device itself. Ordinary application security assumes an opportunist on the far side of a network boundary and a patch that ships on Tuesday; here the boundary eventually fails completely, and the patch may take months to arrive. The page opens with the twenty-five-line survivability checklist, then covers the threat model and what it accepts, the captured device, the boot chain and the update path, the supply chain, twenty years in service, eight documented compromises, and where the practice turns into theatre.

Design assumption
The device is lost
One lost device costs
One device, not the fleet
Best target you own
The update path

The survivability checklist

Here is the whole checklist first, because it is what a design review should walk through before the architecture sets, and because almost every line is cheap on the first device and a field retrofit on the thousandth. It is numbered so a line can be cited: "we fail 3.3" is a ticket, where "the update story feels weak" is a mood. The groups follow a system through its life — the decision about what to defend, the unit itself, every boot and every update, every dependency and every build, and the years it stays in service.

  1. 1.The threat model

    1. It is written before the design, and its output is constraints the design has to meet rather than findings raised after it.
    2. It names the assets — this key material, this location history, this operator identity, this ability to command — never just "the system".
    3. It names the adversaries by what they can do: use weaknesses others found, find new ones, or plant their own in your supply chain.
    4. It states in writing what is NOT defended against, and names the person entitled to accept that risk.
    5. The design review records, in writing, what the system is for and what it must not be used for.
  2. 2.Every device

    1. Each unit has its own identity, provisioned at manufacture, scoped to what that unit may do, and revocable from the fleet in minutes without touching any other unit.
    2. Keys live in hardware that will not export them — a secure element or a — and never in a file or in the firmware image.
    3. Data at rest is encrypted with the key held apart from it; only the working set is on board, and history leaves with the first link.
    4. The production image ships with debug ports, default passwords and service accounts closed, and a test on the image that actually ships proves it.
    5. Every link — command, telemetry and video alike — is encrypted and authenticated from the first version.
  3. 3.Every boot and every update

    1. The boot chain is verified from a hardware root of trust, so replaced firmware produces a device that refuses to run.
    2. An update is signed, and the signature is checked by the bootloader — never by the application it is about to replace.
    3. The device refuses a downgrade, so nobody can reinstall last year’s signed version with last year’s hole.
    4. A new image is written beside the running one, and the device falls back automatically if it does not come up healthy.
    5. Rollout is staged, and no single credential, server or person can push code or commands to the whole fleet at once.
  4. 4.Every dependency and every build

    1. Every dependency has an owner, a recorded source and a reason to exist; adding one is a decision, not a keystroke.
    2. Dependencies are pinned and mirrored, and no build fetches anything from a public registry.
    3. Every build produces an , so "are we affected?" is answered in minutes, not in a week of grep.
    4. The build is reproducible from the source repository, and build machines are run as production.
    5. Signing keys sit in an , never on a laptop or in a variable; a release signature needs two people, and every signature is logged.
    6. Where the source, the builds and the keys physically live is checked against export control, because a repository’s region is an export decision.
  5. 5.Every year in service

    1. Algorithms sit behind an interface and can be replaced by an update, because twenty years outlives the assumptions they were chosen under.
    2. Security events are logged in a form that whoever holds the device cannot quietly edit, and leave with the first link.
    3. There is a published way to report a vulnerability, and a named person whose job is to answer it.
    4. Keys are rotated on a schedule, and a retired unit is wiped by a documented procedure, not by whoever happens to decommission it.

The threat model is written first, and it names what it accepts

In most software a threat model is a review artefact: the design exists, someone walks it, a list of findings comes out, and a few of them get fixed before release. That ordering works when the findings are small and shippable. It fails completely when a finding means the architecture is wrong, because by then the architecture is what everyone is standing on. Here the model is written before the design, and its output is a set of constraints the design has to satisfy — line 1.1.

A usable model answers four questions in writing, and the fourth is the one usually skipped. What are we protecting — not "the system", but specific assets: this key material, this location history, this operator identity, this ability to command (line 1.2). Who is trying, with what resources and what patience (1.3). What each of them gains from succeeding. And what we are NOT defending against, stated explicitly (1.4) — because a model that claims to defend against everything has made no decisions, and will be quietly abandoned the first time it is inconvenient.

"Funded and patient" needs a scale, or it stays a mood. The one this field uses most comes from the US Defense Science Board’s 2013 report on resilient military systems. It sorts adversaries into six tiers by what they can do with vulnerabilities rather than by who they are, which is exactly what line 1.3 asks a threat model to write down.

Adversary tier (DSB, 2013)What they can doWhat the design has to assume
I–IIUse vulnerabilities somebody else found, with tools anyone can obtain.Defaults, patch speed and exposed services decide the outcome. Most real incidents happen here, including the weapon-system tests GAO reviewed in 2018.
III–IVAre funded well enough to find new vulnerabilities in your system and write their own exploits.A patch cannot help before the flaw is known. Assume one unit will be opened, and make sure it opens nothing else.
V–VIInvest billions of dollars and years to create vulnerabilities, including by planting them in your supply chain.No single control stops them. The model says so in writing, and the design limits what one compromise can reach.

Two things follow, and both surprise people. The bottom of the scale is not a formality to tick off on the way to the interesting threats: when GAO reviewed the US Department of Defense’s own weapon-system tests in 2018, the testers got in with simple tools, default passwords and unencrypted links. And the top of the scale is where line 1.4 earns its place. Nobody fully defends against an adversary who can spend years planting a weakness in a supplier. A model that pretends to has decided nothing; a model that says so can at least decide how much one such compromise is allowed to reach.

One more question belongs in the same document, and it is the one engineers most want to hand to somebody else. A great deal of this software is dual-use: the same detection pipeline serves search and rescue, wildlife surveys and border monitoring. That is a real property of the field, and it is not a licence to skip the question of what a particular system is for. Line 1.5 puts the answer in the design review, in writing, next to the threat model — partly because the intended use shapes the threat model, and partly because a decision nobody wrote down is a decision nobody made.

Assume the device ends up in somebody else’s hands

This is the assumption that separates the domain, and it is worth stating as an expectation rather than a disaster. A deployed unit is unattended, sometimes for a long time, in a place you do not control. Some proportion of units will not come back, and some of those will be examined by someone with time, tools and motivation. It is not hypothetical: in December 2011 Iran put a largely intact US RQ-170 reconnaissance drone on television, and the US government asked for it back. Designing for that is not pessimism; it is the difference between losing a device and losing a fleet.

Ordinary application security assumes the attacker is on the far side of a network boundary. Here the boundary eventually fails in the most complete way available: the hardware is physically in someone else’s possession, with unlimited time, and no request for help can be sent. Reading that as the expected third state rather than as a disaster is what makes the design tractable, because each of the four guarantees below has to be built long before the day. Keys must be bound to the device and unusable off it, so extracting them yields nothing. Data must be encrypted at rest with the key not sitting beside it. One device’s credentials must open only that device — the single decision that turns a captured unit from a foothold into a loss. And the boot chain must be verified and updates signed, so the firmware can be neither read out nor replaced with something that phones home. Every one of these is a decision made at design time. On the day itself there is nothing to decide, which is exactly the point.

The third guarantee in the diagram decides the size of the loss, and it is an architectural decision rather than a cryptographic one. If every device holds the same shared secret, or credentials that authenticate it as a general member of the network, then one device examined at leisure yields access to everything. If each device has its own identity, scoped to what that device is allowed to do, and the fleet can revoke it, then the same event costs you one device. That is line 2.1, and the diagram below draws the two outcomes side by side.

A captured device is examined at leisure, and whatever credential it holds will eventually be read out. What that costs is decided long before, by what the credential is allowed to open. If every unit carries the same fleet-wide secret, one device read out authenticates as all of them, and the loss of one unit is the loss of the fleet — the network has no way to tell the adversary’s copy from a genuine member. If each unit carries its own identity, provisioned at manufacture and scoped to what that unit may do, the same event costs exactly one device: the fleet revokes it and the other twenty-three carry on. The algorithms on both sides are the same. The difference is entirely architectural, and it has a deadline: adding per-device identity after the fact means touching every unit already in the field, which is why it is almost never added later.

The left panel is not a thought experiment. In 2016 the Mirai botnet grew to some 600,000 cameras and routers by trying a list of about sixty factory passwords, because whole product lines shipped with the same one — a fleet-wide secret in its purest form. Regulation has since caught up with the weakest version of line 2.1: since April 2024 the UK has banned universal default passwords on consumer devices. A defence system should not need a law to reach the floor that consumer cameras are now held to.

What holds after a loss

  • A per-device identity, revocable from the fleet without touching any other unit (2.1).
  • Keys held in hardware that will not export them, and erased when the enclosure is opened (2.2).
  • Data encrypted at rest, with only the working set present and history already offloaded (2.3).
  • A verified boot chain, so replacing the firmware produces a device that refuses to run (3.1).

What turns one loss into all of them

  • A shared secret or a fleet-wide credential, so one unit authenticates as any unit.
  • Keys in a file on the filesystem, which makes extraction a copy operation rather than an attack.
  • A full local history of everywhere the device has been and everything it saw.
  • A debug port or a service account left enabled because it was useful during development.

The chain of trust, and the update path as the best target you own

Every device needs a way to receive new code, and that mechanism deserves to be read plainly: it is the only component with authority over the entire fleet. Whoever controls it controls every unit at once, without touching any of them. That makes the update path the most attractive target you own, and it is the reason group 3 of the checklist exists.

The defence starts at power-on, with a chain of trust. The boot ROM is code fixed in silicon at manufacture, holding the hash of the one key it trusts; no update can change it, which is exactly why it can be trusted. It checks the bootloader’s signature before running it, the bootloader checks the kernel, and the kernel checks the application. Replace any link with something unsigned and the device refuses to run, rather than running the replacement — line 3.1. The same chain decides where an update is checked: in the bootloader, below the application being replaced, because an application cannot be trusted to vet its own successor — line 3.2.

A device that verifies its own software has to start somewhere it cannot be lied to. The boot ROM is that place: code fixed in silicon at manufacture, holding the hash of the key it trusts. It checks the bootloader’s signature before running it, the bootloader checks the kernel, and the kernel checks the application. Each arrow is a signature check followed by a handover, so replacing any stage with something unsigned produces a device that refuses to run rather than one that runs the replacement. The same logic decides where an update is checked. The bootloader, not the application being replaced, asks three questions of an incoming image: is the signature valid, is the version at least the one recorded in a counter the device will not wind back, and does the new image boot healthily. The image is written to a second slot, so a failed third answer falls back to the untouched first one instead of leaving a brick. The ROM itself is the one stage no update can reach, which makes the algorithm and the key it trusts a decision for the device’s whole service life.
Property of the update pathWhat it stopsWithout it
Signature checked in the bootloader (3.2)An image nobody authorised.Whoever reaches the update server reaches every device: NotPetya went out as an ordinary M.E.Doc update.
A version counter that never goes back (3.3)Last year’s signed image, with last year’s hole.Every patch is undone by reinstalling a version the device still accepts as genuine.
A second slot and a health check (3.4)A bad image turning the unit into a brick.A failed update in the field needs a technician or a replacement unit, and in the field there is often neither.
Staged rollout, no single path to all (3.5)One mistake or one stolen credential reaching everything at once.A bad release has exactly the reach of a successful attack, and a successful attack has the reach of the fleet.

The Viasat case is worth reading slowly, because nothing in it was forged. On 24 February 2022 attackers entered the satellite network’s management segment through a misconfigured appliance. Then they used the network’s own management function to send commands to tens of thousands of modems at once; a wiper overwrote their flash, and the modems never came back. Every check that asks "is this a genuine command from us?" would have answered yes. Line 3.5 is the one that helps: no single credential, server or person should reach the whole fleet in one step, so that even a genuine channel in the wrong hands meets a stage it cannot skip.

Every dependency is a decision with an owner

A funded adversary looks for the cheapest way in, and in a well-built product the cheapest way in is rarely the product. It is a dependency nobody reviews, a build machine nobody hardened, a signing key within reach of too many people. The diagram pins a documented attack to every stage between a commit and a device, and the pattern is the point: none of the six broke the product’s cryptography.

The cheapest way into a well-built product is rarely the product. It is a stage of the pipeline with more reach and less attention, and each stage here has a documented case. Code and CI: in 2021 a leaked credential let attackers alter Codecov’s uploader script, which for two months sent customers’ CI secrets out. Dependencies: in 2024 a maintainer who had spent two years earning trust shipped a backdoor in xz Utils, found by chance before it reached the stable releases of the major Linux distributions. Build: in 2020 malware on SolarWinds’ build server inserted a backdoor into Orion, which was signed and shipped to some 18,000 customers. Signing: Stuxnet’s drivers were trusted because they carried certificates stolen from two hardware vendors. Distribution: in 2017 NotPetya went out through the update server of M.E.Doc, Ukrainian accounting software. Fleet commands: in 2022 attackers reached Viasat’s management network and used its own commands to wipe tens of thousands of modems. None of the six broke the product’s cryptography; each went around it. The green row gives the checklist line that covers each stage.
LineWhat it preventsThe case that shows it
4.1 — an owner and a source for every dependencyA trusted person becoming the attack.xz Utils, 2024: about two years of patient contributions bought maintainer rights.
4.2 — pinned and mirroredA public registry deciding what goes into your build.Dependency confusion, 2021: a researcher’s look-alike public packages were pulled into the internal builds of more than 35 companies.
4.3 — an SBOM from every buildA week of grep after every disclosure.Log4Shell, December 2021: organisations spent weeks finding out whether one logging library was inside their products.
4.4 — reproducible, and the build run as productionA clean repository producing a dirty binary.SolarWinds, 2020, and xz, whose release tarball differed from its git repository.
4.5 — keys in an HSM, two people to signA CI compromise turning into a signing service.Codecov, 2021, which sent customers’ CI secrets out for two months; Stuxnet’s stolen certificates.

Line 4.4 carries more weight than it looks. In both SolarWinds and xz the source repository was clean: the malicious code existed only in what the build produced or in the archive the release shipped. A reproducible build — one where anyone can rebuild the artefact from the repository and get the same bytes — turns "the binary matches the source" from a belief into a check, and it is the only check on this page that would have caught either of them before release.

Line 4.6 is legal rather than technical, and worth knowing before taking the work rather than after. Much of this software is export-controlled, which restricts who may hold the source, where it may be built and who may be told what it does — a rule that reaches into decisions as ordinary as which cloud region a repository lives in. The rule binds your suppliers as much as you. In 2017 the Australian Signals Directorate described an intruder who spent months inside a 50-person aerospace subcontractor and took about 30 GB of data, including export-controlled material on the F-35 and the P-8 Poseidon. Internet-facing services there still had their default passwords: admin and guest.

Twenty years in service

Ten to twenty years in service is normal here, and it changes decisions that look settled. Every dependency will outlive its maintainers’ interest in it. Every algorithm will outlive the assumptions it was chosen under. And "we will rewrite it later" becomes a claim somebody will hold you to. Group 5 of the checklist is what keeps a system defensible in year fifteen, when nobody who designed it is still on the team.

Cryptography is where this is most concrete. NIST published its first post-quantum standards, FIPS 203, 204 and 205, in August 2024, and the NSA’s CNSA 2.0 guidance asks national security systems to prefer quantum-resistant signatures for software and firmware by 2025 and to use them exclusively by 2030. A device fielded today with one signature scheme fixed in its boot ROM will still be in service after that date. Line 5.1 is the answer — algorithms behind an interface, replaceable by an update — with one hard exception worth planning for: the ROM’s own check cannot be updated, so the choice made there has to anticipate the whole service life, for example by picking a chip that holds several root keys and can revoke one.

  • Crypto you can replace (5.1)

    Algorithms behind an interface and negotiated rather than hardcoded, so an update can move the fleet to a new one. Everything above the ROM should be replaceable this way.

  • Logs that survive the device (5.2)

    Security-relevant events offloaded when there is a link, and appended locally in a form that cannot be quietly edited by whoever holds the device afterwards.

  • A way to receive bad news (5.3)

    A published contact, a policy for reports from outside, and a named person who answers. Researchers find things; the only question is whether they can tell you or have to tell somebody else.

  • Retirement is a procedure (5.4)

    A unit leaving service still holds keys and data. Wiping it is a documented step with a record, and its identity is revoked in the fleet the same day, not whenever somebody notices.

Eight compromises, and the line that covers each

Defence programmes rarely publish their compromises, so most of these are civilian, and the page says so openly: the mechanisms transfer exactly. Two come from defence itself — the Predator video feeds and GAO’s review of weapon-system tests — and one hit military communications on the first day of a war. Each carries the checklist line that would have covered it.

CaseWhat happenedThe line that covers it
Predator video feeds, Iraq, 2009US officials confirmed that insurgents had been watching the video downlinks of Predator drones with SkyGrabber, $26 off-the-shelf software meant for pulling files off satellite internet; the files turned up in July 2009 on a captured militant’s laptop. The weakness had been known since the 1990s, on the assumption that nobody would know how to use it, and fixing it meant retrofitting a fleet already flying.2.5. The link was treated as private because it was obscure.
Stuxnet, found 2010Malware built to damage centrifuges at Natanz crossed into an isolated network on removable media. Its drivers installed on Windows without a warning because they were signed with genuine certificates stolen from two Taiwanese hardware vendors, Realtek and JMicron.4.5 and 1.3. A signing key is worth exactly as much as its protection, and a tier V–VI adversary plans years ahead.
Mirai, October 2016A botnet grew to some 600,000 cameras, routers and recorders by logging in with a list of about sixty factory usernames and passwords. On 21 October 2016 it knocked the DNS provider Dyn offline, and with it much of the web for users on the US East Coast. From April 2024 the UK made the fix law: no universal default passwords.2.1 and 2.4. One credential shared across a product line is one credential for all of it.
NotPetya via M.E.Doc, June 2017Attackers who controlled the update server of M.E.Doc, accounting software used across Ukraine, sent its clients a backdoored update and on 27 June 2017 released a wiper through it. It spread from those networks around the world, Maersk and Merck among the victims, with damage in the billions of dollars. Every client installed it because it came through the vendor’s own update channel.3.2 and 3.5. Whoever held the update server held every client, all at once.
US weapon-system tests, GAO, October 2018Reviewing the Department of Defense’s own test reports, GAO found that testers took control of weapon systems in development with simple tools and largely went unnoticed. One team gained initial access in an hour and full control in a day; another guessed an administrator password in nine seconds; several systems ran commercial software with its default password unchanged. Programme officials believed their systems were secure and discounted some results as unrealistic.2.4 and 1.1. Security was a review after the design, and the review was argued with.
SolarWinds Orion, December 2020Malware on SolarWinds’ build server swapped a source file during compilation, so Orion builds carried a backdoor the repository did not contain. The result was signed with the company’s real certificate and shipped as a normal update; up to 18,000 customers installed it, US federal agencies among them.4.4. The repository was clean; only a rebuild compared against the release would have shown the difference.
Viasat KA-SAT, February 2022On the morning the full-scale invasion of Ukraine began, attackers who had entered Viasat’s management network through a misconfigured VPN appliance sent legitimate management commands to tens of thousands of satellite modems at once, and a wiper erased their flash. Ukrainian military communications were affected; in Germany 5,800 wind turbines lost remote monitoring. Viasat shipped about 30,000 replacement modems.3.5. The destructive commands were the network’s own, and one path reached the whole fleet.
xz Utils, March 2024A contributor who had spent about two years earning maintainer rights on a compression library used across Linux shipped a backdoor aimed at SSH logins. The malicious build step was in the release tarballs, not in the git repository. Andres Freund, an engineer at Microsoft, found it on 29 March 2024 because logins had become about half a second slower — before it reached the stable releases of the major distributions.4.1 and 4.4. The trusted person was the attack, and the artefact differed from the source.

Where it turns into theatre

The honest limit is the top of the adversary scale and the person already inside. An adversary who can spend years planting a weakness in your supply chain, or an insider with legitimate signing rights, will get past controls designed for everyone else. Hardware that refuses to export a key raises the cost of extracting it without making that cost infinite for someone with a laboratory and time. No builder-side decision removes those threats. What the decisions on this page do is bound them: per-device identity limits what one extracted key opens, limits what one bad release reaches, and logs that survive the device make a compromise something you can find afterwards. The page stops there on purpose. How a fielded system is monitored, patched and defended day to day is operations, a different discipline with its own literature.

  • A threat model that defends against everything and accepts nothing, so nobody consults it after the first deadline.
  • A security review scheduled after the architecture freezes, where findings are argued with rather than fixed.
  • "Air-gapped" in the design document, and a USB stick in the ground station.
  • An SBOM generated on every build and read by nobody.
  • "Encrypted at rest", with the key in the same flash as the data.
  • Signed releases, signed by a key that lives in a CI variable.
  • A penetration test before the first delivery, and never again across twenty years.
  • A staged rollout whose stages all start within the same hour.
  • A vulnerability inbox that nobody reads, so researchers report somewhere else.

When to use it

Use it when

  • As a design review before the architecture sets — the twenty-five lines at the top — because a finding that late is a rewrite rather than a fix.
  • For any device that will be unattended in a place you do not control, which is the capture assumption.
  • When designing the build, signing and update path — the components with authority over the whole fleet.
  • For long-lived systems, where replaceable crypto and a dependency inventory pay for themselves several times over.

Avoid it when

  • As a substitute for a threat model specific to your system, which no page can supply.
  • As a reason to defend against everything, which produces a document nobody uses and no decisions.
  • As operational security guidance — this page is about what a builder decides, not about how a system is run.
  • Where the device is never out of physical control and the fleet is small enough to update in a day.

Sources and method

What this page stands on

  • 17 sources
  • 10 documented failures
  • Checked October 13, 2026

Researched with Claude. Finding and cross-checking the primary sources was done with Claude (Anthropic). Selection, writing and fact-checking: the Anatomy of IT Product editors.

Found this useful?

Share it with someone who is working on the same problem.