05 — The honest part
Seven risks with no technical fix
Everything above is what the system does well. This section is the opposite: the places where
something bad can happen and no amount of engineering closes it — because the
closure would cost more protection than it buys.
Each one says what actually happens, what we do about it, and what is left with you. If a supplier
tells you their encryption has none of these, they have either not thought about it or are hoping
you will not.
1 · The deployment key is lost or deleted — everything is gone
What happens: the key file is deleted, the disk fails, the server is rebuilt without it, or
the one person who knew where it was has left. Every clinical document in the system
becomes permanently unreadable. Not difficult to recover — impossible. The database is
intact and worthless.
Why we do not fix it: the only fixes are a vendor-held copy or a recovery back door. Both
destroy the property the whole design exists for. If we held a copy, then "a stolen database is not
a breach" stops being true, and every promise on this page about what we cannot see becomes false.
A recoverable key is a key somebody else can use.
What we do: the system refuses to start if the key is missing, rather than quietly running
and letting you discover the problem when a document will not open. The startup check also refuses
if the key file is readable by anyone but its owner, or owned by the wrong account.
What is yours: back the key up, separately from the data, and test that you can restore it.
Two people should know where it is. This is the single highest-consequence operational duty in the
entire platform, and it takes about ten minutes to get right.
2 · The key is copied to someone who should not have it
What happens: an administrator emails the key file to a colleague, pastes it into a ticket,
copies it to a laptop, or a departing engineer keeps a copy. Anyone holding both
that file and a copy of the database can decrypt every document, offline, with no login, and
nothing is written to your access log — because the log records reads through the
application, and this bypasses the application entirely.
Why we do not fix it: the key must be readable by the software that uses it. Any process
that can read it can copy it. Hardware security modules move this problem rather than solving it —
the software still has to be able to ask the module to unwrap keys, so an attacker with that
software's privileges still gets plaintext.
What we do: the file permissions are enforced at startup, so a key readable by everyone
stops the system rather than passing unnoticed. And because you self-host, we never have the
file at all — the population of people who could copy it is your staff, not your staff plus
ours.
What is yours: treat the key like a controlled physical object. Restrict who can log in to
the server, use individual admin accounts rather than a shared one, and rotate the key when
somebody with server access leaves — section 06 explains why rotation is cheap.
3 · The key ends up in the same backup as the data
What happens: the quietest and commonest failure. Somebody sets up a backup that sweeps the
whole server, and the key file is inside the same archive as the database. Now one stolen backup
tape contains both halves, the encryption protects nothing, and — worse — you would still be
claiming the encryption exemption in a breach report, because on paper everything was
encrypted.
Why it is hard: nothing about the running system looks different. It works perfectly. The
problem exists only in the backup, and only matters on the day the backup is stolen.
What we do: this is the one in this list we partly did engineer against. You
declare your backup directories in the configuration, and the system refuses to start if
the key file sits inside one of them. If you declare no backup paths at all, it warns
that the exemption cannot be verified — because an unchecked claim is the dangerous kind.
What is yours: declare the backup roots honestly, and check what your backup tool actually
includes rather than what you think it includes.
4 · A person with legitimate access reads something they should not
What happens: a therapist opens the file of a client who is also their neighbour. A
receptionist looks up a local celebrity. Every rule was satisfied — the person had a valid care
relationship, or valid grounds, and simply misused it. Encryption is irrelevant here.
So is access control, because access was granted.
Why no system fixes it: software cannot read intent. A system that tried — blocking access
because a name looks local — would block genuine clinical work in an emergency, which is its own
harm and, in the UK, its own compliance failure.
What we do: make it visible rather than impossible. Every opening is recorded
before content appears, in a log nobody can edit — including your administrators and including us.
Care relationships end, and access ends with them after a short grace period, so the window is
narrow. Emergency access is a separate, deliberate, reviewed act rather than a quiet capability.
What is yours: somebody must actually read the log. The governance module gives the
review a home — cadence, named reviewer, findings trail — but a log nobody looks at deters nobody.
This is the control that most often exists on paper and never happens.
5 · Someone with root on the server reads a document while it is open
What happens: to show a document to an authorised clinician, the software must decrypt it.
For that moment it exists in the server's memory as readable text. Somebody with full control of
the operating system can, in principle, read it there — or modify the software to keep copies.
Why no system fixes it: this is true of every system that ever displays anything to anyone.
If the machine can show the document, the machine's owner can obtain the document. Encryption
protects data at rest and in transit; it cannot protect data from the computer that is lawfully
processing it.
What we do: minimise the window — decryption happens in memory for the moment of the read
and the plaintext is never written to disk. And self-hosting means you are the party with
root, not us.
What is yours: server administration is the highest-privilege role you have. Few people,
named individually, keys not passwords, and a record of who holds access. It belongs on the
joiners-and-leavers checklist next to the clinical accounts.
6 · A document is disposed of and should not have been
What happens: a retention rule is configured wrongly, or a shred is run on the wrong
selection. The keys are overwritten and the documents are unreadable. There is no undo,
and restoring last night's backup does not help — the backup contains the same
ciphertext, and its key is gone.
Why we do not fix it: a reversible disposal is not a disposal. The entire value of
crypto-shredding to a regulator is that it cannot be walked back. A "recycle bin" for destroyed
keys would mean the data was never really destroyed, and every erasure claim you made would be
false.
What we do: keys cannot be deleted through any ordinary path — the delete operation is
blocked outright and disposal happens only through the shredding route, which writes an audit entry
as it goes. Legal holds suspend disposal entirely. Retention counts from stored anchor dates rather
than file age, so the commonest cause of wrong-date disposal does not arise.
What is yours: check the retention configuration before go-live, not after the first
disposal run. And confirm the scheduled jobs are actually running — a retention job that stopped
silently is a different problem, but it is discovered the same way, which is to say too late.
7 · Today's encryption will not be strong forever
What happens: mental-health records are kept for twenty years and sometimes longer.
AES-256 is not currently considered breakable, including by the quantum computers people speculate
about — but no honest engineer promises anything about 2046 with a straight face.
Why nobody fixes it: you cannot buy protection against a mathematical result that has not
happened yet. Anyone selling "quantum-proof" storage for clinical records is selling a story.
What we do: make the algorithm and the keys replaceable without touching your data. Key
rotation re-wraps every data key under a new deployment key without rewriting a single byte
of ciphertext, so it is a background task rather than a migration project. The
cryptography is isolated in one small reviewable component precisely so it can be replaced when the
time comes.
What is yours: rotate periodically rather than never, and expect to re-encrypt once in the
lifetime of a twenty-year record. Plan for it as maintenance, not as a crisis.
The pattern across all seven
Look at what the seven have in common. In every case the "fix" that would close the risk —
a recoverable key, a reversible disposal, a system that reads intent, protection against your own
administrators — would destroy something more valuable than it protects. The
design choice is not that these risks were overlooked. It is that closing them would make the
remaining guarantees untrue.
What is left for you is small, specific and mostly procedural: back up the key separately, control
who can reach the server, declare your backup paths, read the access log, and check the retention
settings once. That list fits on one page and it is the whole of it.