Security
How we protect the record
If the product is evidence, the handling of it is the product. This page describes what actually happens to a submission, who can reach it, and the things we deliberately do not do.
On submission
What happens when a worker sends a photo
The link opens the phone’s rear camera directly. There is no gallery step in the flow, so the photo is taken live rather than chosen afterwards.
When the submission arrives, our server writes the time. It does not read the time from the phone, so a device clock cannot decide what a record says. The image bytes, that server-set time, the coordinates when the worker shares location, and the storage path are then sealed together under a single SHA-256 fingerprint. Change any one of those afterwards and the fingerprint stops matching, which is what makes a later edit detectable.
The wording is exact on purpose, and it is the same wording we use on our About page: the record is tamper-evident, not tamper-proof. A fingerprint shows that a record was not altered after it was captured. It cannot speak to whether the world was honest in the instant the shutter fired, and we will not claim it does.
Access
Who can reach a record
- One company’s data stays with that company. Row Level Security is enabled on the tenant tables in the database itself, so isolation does not depend on the application remembering to filter.
- Worker links expire. The link in a worker’s text is a short random code that stops resolving once its window closes. Opening it mints a second, signed, short-lived token for the submit page itself, and that token is stored only as a SHA-256 hash. The code in the text message is stored as it is written, so treat it the way you would treat any link that opens something: it works for whoever holds it, until it expires.
- Evidence pages are kept out of search. Proof, portal, packet and worker submit paths are disallowed in robots.txt, and the display surfaces additionally return a
noindexheader, so a shared link cannot quietly end up in an index. - Signed-in pages are served no-store. The app’s authenticated routes are sent with caching switched off, so a logged-out browser cannot page back into a stale copy of somebody’s dashboard.
- The browser is told what the site may use. Camera and location are permitted only to LockProof itself, because the submit flow needs them; microphone, payment and USB access are switched off outright. Connections are HSTS-pinned to HTTPS.
By omission
What we deliberately don’t do
No third-party trackers on these pages. The only analytics on the marketing site is Vercel’s own, first-party, and it is wired to an allowlist rather than an exclusion list: a page earns a pageview by being named, instead of somebody remembering to leave it out.
That distinction is load-bearing. On a worker or client link, the address itself is the credential. An analytics beacon mounted everywhere would have posted live submit and portal links into a dashboard as a matter of routine. It is not mounted everywhere, and a test in our suite covers that allowlist and has to pass before we ship.
Workers never get an account. There is no app to install and no password to create or leak, because there is nothing for a worker to sign in to.
Plainly
What we don’t claim
A security page that only lists wins is marketing. These are the honest gaps, and we would rather you read them here than discover them.
- We hold no SOC 2 report and no ISO certification. We are a small company and have not been through either audit. If you need one to buy, we are not there yet.
- Our Content Security Policy reports, it does not block. It is deployed in report-only mode so we can see what a stricter policy would break before it breaks a worker mid-submission. Enforcing it is a real decision we have not yet made.
- There is no public page where an outsider can re-check a fingerprint. The seal is computed and stored on our side. Anyone you share a record with is, at that point, trusting us that it matches.
- Our AI review flags; it never decides. A flag asks a person to look closer. It is not a verdict on a worker and it never blocks a submission.
A film in six steps
Watch what AI review does
One photo, from the camera to the advisory mark, and how to search what the AI wrote. Use the chapter buttons to jump to a step.
This film is an illustration. The people, buildings and companies in it are invented, and so are the photos, messages and numbers on its screens. The screens are drawn to follow the app. The labels and pictures around them are the film’s.
Read the transcript
Opening 0:00
Two hundred photos came in this week. Nobody can open every one. AI review flags the ones worth a second look.
The photo 0:08
The photo arrives the usual way. Live from the camera, through the link LockProof texted. It is sealed when it arrives. Our server sets the time, and a fingerprint covers the record. The location comes from the worker’s phone when they share it, and you can require it.
The review 0:27
Then the AI looks at the photo. It marks it plausible, unclear, or suspicious. It is told to flag things like a black screen, a blur, or a photo of another screen.
The search 0:38
You can search what the AI wrote. Say you remember broken glass in a photo, but not which building or which day. Type it, and the list narrows to the records whose AI text contains it.
The reason 0:51
Open a record to read its reasoning. The review is advisory. It never changes a record’s status, and it never blocks a photo.
Your rules 1:00
You decide what a good photo should show. Or keep the default for your industry.
The brief 1:06
The dashboard opens with a written brief. It is an advisory summary. The counts under it come from the records. LockProof. Know the work got done, without calling anyone. See it for your own team at lockproof.com.
Reporting a problem
If you think you have found a security issue, email hello@lockproof.com and put “security” in the subject line. It reaches the founder directly. Tell us what you found and how to reproduce it, and please give us a chance to fix it before you publish it.
We do not run a paid bug-bounty programme, so we cannot promise a reward. We can promise that a real report gets read by a person and answered.
See how a record is put together
Open a finished sample record and look at what it carries, or book a 15-minute demo on your own sites.