BitBootcampBitBootcamp ← all explainers 🔄 Review ⚙ Settings

PAPERS-12-002 · Paper — Reflections on Trusting Trust

The paper

The paper “Reflections on Trusting Trust” was presented by Ken Thompson in 1984 at the ACM SIGPLAN Conference on Programming Language Design and Implementation (PLDI). It is a landmark because it revealed a fundamental weakness in trusting software tools, showing that even clean source code can hide malicious behavior.

Before this paper

Before this work, security reviews assumed that reading clean‑looking source code was enough to trust a program. The compiler that turned that source into an executable was taken on faith, and no one questioned whether the compilation tool itself could be compromised. This created a hidden trust gap in the software supply chain.

The key idea

Thompson’s key insight is that you cannot fully trust any code you did not build yourself, because a compiler can be taught to insert a backdoor into a target program and also to embed that same teaching into any future compiler it builds. The malicious behavior therefore survives even after every trace is removed from the source.

How it works

He described a three‑stage trick. First, a modified compiler recognizes when it is compiling the login program and silently adds a backdoor. Second, the compiler is taught to recognize when it is compiling its own source code and to re‑insert both the login‑backdoor trick and the self‑replicating trick. Third, the modified compiler is used once to produce a clean‑looking binary, and then the added source code is deleted. The resulting compiler binary looks innocent but continues to propagate the backdoor forever, with nothing visible in any source file.

See it — the self-hiding backdoor

flowchart TD
  A["Clean source<br/>looks safe"] --> B["Compiler binary<br/>(already trojaned)"]
  B --> C["Inserts backdoor<br/>+ re-inserts itself"]
  C --> D["Backdoor invisible<br/>in all source"]

What they showed

The lecture proved that trust must extend below the source code to every tool in the build chain – the compiler, the linker, and even the hardware. Inspecting source alone is not enough, and the result was a clear demonstration that a self‑replicating compiler can hide malicious behavior indefinitely.

What it changed

The paper introduced the concept of a trusted computing base and became the founding argument for supply‑chain security, reproducible builds, and diverse double‑compilation. It reshaped how the community thinks about trust in software tools and sparked decades of research into verifying the entire build process. Next: The Byzantine Generals Problem.

The one-line takeaway

Even a perfectly clean source can be compromised by an untrusted compiler.

Read it / meet it

Reading the original lecture is a short but eye‑opening experience that shows why supply‑chain security matters. Its legacy lives on in modern reproducible‑build efforts and in every discussion of SolarWinds‑style attacks.

Related evidence