Skip to content

CONSENT

Retention and erasure against a sealed record

OctoDoc's post-v1.0 erasure design destroys the per-file data-encryption key so document bytes stop resolving while the hash chain still recomputes and a verification report reads erased rather than mismatch; it is not a current v1.0 capability or legal advice.

This page describes a class of document in general terms. It is not legal advice, it is not about your situation, and it is not a substitute for the advice of an attorney. Reading it creates no attorney-client relationship.

Product status

OctoDoc-specific descriptions of proof files, public verification, read links, reading logs, AATL or B-LTA trust, and Object Lock on this page describe post-v1.0 designs, not capabilities in the current product. The cited standards and primary-source facts remain educational references.

01

The tension, stated plainly

A signing record is built to be append-only, and an erasure request asks for personal data to be destroyed. Those two properties pull against each other. OctoDoc's post-v1.0 design separates document bytes from the structure intended to show that the record was never rewritten, encrypts the first under a destructible key, and leaves the second intact.

Both failure modes are unacceptable, and they are symmetrical. A record that can never be reduced has no erasure path at all, and whoever operates it has architected away the ability to carry out a deletion instruction before the first request ever arrives. A record where erasure looks identical to corruption is worthless as evidence, because any party holding an inconvenient document would have a reason to destroy it and every other party would have a reason to disbelieve any verification result.

The resolution is one design decision taken early, before a single file landed: encryption is scoped per file, and the ledger hashes ciphertext rather than plaintext.


02

What Article 17 actually says

Regulation (EU) 2016/679 Article 17(1) opens: "The data subject shall have the right to obtain from the controller the erasure of personal data concerning him or her without undue delay and the controller shall have the obligation to erase personal data without undue delay where one of the following grounds applies:", followed by six enumerated grounds covering data no longer necessary for its original purpose, withdrawn consent, objection, unlawful processing, an erasure obligation in law, and information-society services offered to a child.

Paragraph 3 is an exemption, and it is worth reading in the statute's own verb rather than a gloss. It reads: "Paragraphs 1 and 2 shall not apply to the extent that processing is necessary:", followed by five purposes. Point (e) reads "for the establishment, exercise or defence of legal claims."

The post-v1.0 compliance design names 17(3)(e) as the basis on which a ledger evidence block — full IP, coarse geo, user agent, authentication method, achieved tier and consent hashes — would be retained for the organisation's retention window and disclosed on the first signing screen.

This page describes the text of a regulation and the behaviour of a piece of software. It does not apply either one to any particular record, party or dispute.

03

The mechanism: the key is destroyed, not the object

  1. 1Every file is encrypted under its own data-encryption key. The DEK is wrapped by the organisation's KMS customer master key and stored as files.dek_wrapped.
  2. 2The scope is per file, never per organisation. One organisation-wide key would mean that erasing a single party's file destroys the whole corpus. That is not an erasure path, it is an outage.
  3. 3The planned DEK scope covers the sealed PDF, proof-file ZIP, signature assets, and encrypted half of every ledger event body (payload_ct).
  4. 4An erasure run purges the erasable classes, deletes the wrapped DEK, sets files.dek_shredded_at, and appends a retention.crypto_shredded event to the ledger in the same transaction.
  5. 5The DEK lives in KMS, never in S3. That is why the mechanism is independent of any object-storage retention setting.
  6. 6The ciphertext object may still sit in S3 under a retention period that will not permit deleting it. Without the DEK, those bytes no longer resolve to a document.
  7. 7The ledger stores payload_ct_sha256 — the digest of the ciphertext, not of the plaintext — so every hash in the chain still recomputes over data that survives the shred.
  8. 8NIST SP 800-88 Rev. 1 frames the general category: "Media sanitization refers to a process that renders access to target data on the media infeasible for a given level of effort." Destroying the key is the form of that which works on storage whose physical media is operated by someone else.

04

Why the report reads erased and not mismatch

The octodoc verify command, once it exists, will run the same procedure whether or not a shred has happened. It canonicalises each ledger event with JCS, recomputes its digest, checks that each entry's hash covers its predecessor's, and checks the periodic Merkle anchors against their archived RFC 3161 timestamp tokens. Where payload_ct is present, it verifies payload_ct_sha256.

A shredded payload passes that last step, because the digest was taken over ciphertext and the ciphertext has not changed. What changed is that nothing can decrypt it any more. The report therefore marks the file erased, cites the retention.crypto_shredded event and its sequence number, and returns success.

The mismatch status is reserved for something else entirely: a payload that no longer hashes to its stored digest, or a chain link that no longer covers its predecessor. In that case verification names the exact sequence number where the chain broke and shows the anchor token proving the head predated the edit.

Keeping those two outcomes distinguishable is the point of the whole arrangement. Erasure is an event inside the record, not a hole in it. The end-to-end test that will pin this shreds a data encryption key and then asserts the full verification procedure still passes; neither the key hierarchy nor that test has been built.

05

Object Lock retention modes

ModeWhat AWS documents it doesHow OctoDoc uses it
GOVERNANCE"In governance mode, users can't overwrite or delete an object version or alter its lock settings unless they have special permissions." Overriding it requires the s3:BypassGovernanceRetention permission and an explicit x-amz-bypass-governance-retention:true request header.The default on every bucket from the first PutObject, with retain_until derived from the organisation's retention window. The bypass permission sits on one break-glass role, MFA required, assumable only through a request that records a second named approver, and the ledger receives retention.bypassed in the same transaction.
COMPLIANCE"In compliance mode, a protected object version can't be overwritten or deleted by any user, including the root user in your AWS account." The retention mode cannot be changed and the retention period cannot be shortened.Never a default. Set only on a tenant's election against a named regulatory obligation, recorded in compliance_lock_basis, with object_lock_mode constrained to GOVERNANCE or COMPLIANCE at the column level.
Legal hold"Like a retention period, a legal hold prevents an object version from being overwritten or deleted." AWS adds: "However, a legal hold doesn't have an associated fixed amount of time and remains in effect until removed."Not a default retention control. It is an incident instrument, applied per object version and removed by the same dual-controlled path.

06

Why GOVERNANCE is the default and COMPLIANCE is an election

The two modes differ in one respect: whether any principal at all can remove the stored object before its retention date. AWS is direct about the answer for compliance mode — "The only way to delete an object under the compliance mode before its retention date expires is to delete the associated AWS account."

That property would not block the planned erasure mechanism. In the post-v1.0 design, the data-encryption key would be held in KMS and never in S3, so destroying it would work identically under either retention mode. Compliance mode removes the second path: deleting the ciphertext object before its retention period. The design keeps both paths open because the choice is one-way at the bucket level — "After you enable Object Lock on a bucket, you can't disable Object Lock or suspend versioning for that bucket."

Object Lock retention defaults are configured per bucket, not per account. The post-v1.0 OctoDoc design therefore chooses governance mode rather than imposing compliance mode on organisations with no elected regulatory retention obligation. This is an architecture reference, not a claim about v1.0 storage, which uses private Supabase Storage without Object Lock.

AWS also documents the seam that crypto-shredding depends on: "While Object Lock can help prevent Amazon S3 objects from being deleted or overwritten, it does not protect against losing access to the encryption keys or encryption keys being deleted." In most architectures that sentence is a warning about accidental data loss. In the post-v1.0 design it would become a deliberate, recorded, dual-controlled erasure mechanism.

07

What is destroyed and what remains

ItemAfter the DEK is destroyed
Sealed PDF bytesCiphertext with no key. Unrecoverable.
Planned proof-file ZIPCiphertext with no key. Unrecoverable.
Signature assets, drawn and typedCiphertext with no key. Unrecoverable.
Ledger payload_ct — party names, contact details, the evidence blockCiphertext with no key. Unrecoverable.
Ledger payload — event type, sequence number, prior hash, timestampsIntact. This half was never encrypted, and it holds no party names, no contact details and no evidence-block fields; every one of those is written into payload_ct instead, which is why the split exists.
Hash chain, Merkle anchors, archived RFC 3161 tokensIntact, and they still verify.
users rows that confirmed a markNot deleted. Tombstoned via users.tombstoned_at with personal fields shredded, because marks.confirmed_by_user_id is NOT NULL and is the record that a human approved each placement.
The fact of the erasureAdded rather than removed. retention.crypto_shredded is appended to the chain and is itself hashed into it.

08

Machine values

Instrument
Regulation (EU) 2016/679
Articles
Art. 17(1), Art. 17(3)(e)
Grounds enumerated in Art. 17(1)
six
Purposes enumerated in Art. 17(3)
five
Post-v1.0 Object Lock default
GOVERNANCE
Compliance mode
tenant election only, compliance_lock_basis required
Post-v1.0 Object Lock scope
per bucket
Key scope
one DEK per file
Key location
KMS, never S3
Wrapped key column
files.dek_wrapped
Erasure timestamp
files.dek_shredded_at
Ledger event, erasure
retention.crypto_shredded
Ledger event, bypass
retention.bypassed
Bypass permission
s3:BypassGovernanceRetention
Bypass request header
x-amz-bypass-governance-retention:true
Ledger digest scope
payload_ct_sha256 (ciphertext)
octodoc verify after a shred
pass, status erased
octodoc verify on a rewritten payload
fail, status mismatch

SOURCES

Where each figure came from

  1. 1. The data subject shall have the right to obtain from the controller the erasure of personal data concerning him or her without undue delay and the controller shall have the obligation to erase personal data without undue delay where one of the following grounds applies:

    GDPR-info.eu (consolidated text of Regulation (EU) 2016/679) · https://gdpr-info.eu/art-17-gdpr/ · checked 2026-07-27

  2. 2. Paragraphs 1 and 2 shall not apply to the extent that processing is necessary:

    GDPR-info.eu (consolidated text of Regulation (EU) 2016/679), Art. 17(3) chapeau · https://gdpr-info.eu/art-17-gdpr/ · checked 2026-07-27

  3. 3. for the establishment, exercise or defence of legal claims.

    GDPR-info.eu (consolidated text of Regulation (EU) 2016/679), Art. 17(3)(e) · https://gdpr-info.eu/art-17-gdpr/ · checked 2026-07-27

  4. 4. In compliance mode, a protected object version can't be overwritten or deleted by any user, including the root user in your AWS account.

    Amazon Web Services, Amazon S3 User Guide · https://docs.aws.amazon.com/AmazonS3/latest/userguide/object-lock-overview.html · checked 2026-07-27

  5. 5. In governance mode, users can't overwrite or delete an object version or alter its lock settings unless they have special permissions.

    Amazon Web Services, Amazon S3 User Guide, Retention modes · https://docs.aws.amazon.com/AmazonS3/latest/userguide/object-lock-overview.html · checked 2026-07-27

  6. 6. The only way to delete an object under the compliance mode before its retention date expires is to delete the associated AWS account.

    Amazon Web Services, Amazon S3 User Guide, Retention modes note · https://docs.aws.amazon.com/AmazonS3/latest/userguide/object-lock-overview.html · checked 2026-07-27

  7. 7. Like a retention period, a legal hold prevents an object version from being overwritten or deleted.

    Amazon Web Services, Amazon S3 User Guide, Legal holds · https://docs.aws.amazon.com/AmazonS3/latest/userguide/object-lock-overview.html · checked 2026-07-27

  8. 8. However, a legal hold doesn't have an associated fixed amount of time and remains in effect until removed.

    Amazon Web Services, Amazon S3 User Guide, Legal holds · https://docs.aws.amazon.com/AmazonS3/latest/userguide/object-lock-overview.html · checked 2026-07-27

  9. 9. While Object Lock can help prevent Amazon S3 objects from being deleted or overwritten, it does not protect against losing access to the encryption keys or encryption keys being deleted.

    Amazon Web Services, Amazon S3 User Guide, Using Object Lock with encryption · https://docs.aws.amazon.com/AmazonS3/latest/userguide/object-lock-managing.html · checked 2026-07-27

  10. 10. After you enable Object Lock on a bucket, you can't disable Object Lock or suspend versioning for that bucket.

    Amazon Web Services, Amazon S3 User Guide, Object Lock considerations · https://docs.aws.amazon.com/AmazonS3/latest/userguide/object-lock-managing.html · checked 2026-07-27

  11. 11. Media sanitization refers to a process that renders access to target data on the media infeasible for a given level of effort.

    NIST Computer Security Resource Center, SP 800-88 Rev. 1 · https://csrc.nist.gov/pubs/sp/800/88/r1/final · checked 2026-07-27

NEXT

OctoDoc, the signing system of record

Nobody wants to read the contract. OctoDoc is being built so you do not have to: write a document from a prompt, ask plain-language questions about the one you were sent, and keep every one of them in a single place instead of four accounts and an inbox.

Anyone can check a sealed file with no account.

Unlimited human sends on the paid tier.