Documentation

How to set up Nota, enroll your people and work with your records. The dashboard calls a supervised person a custodian, so these guides do too.

Getting started

  1. Create your account and verify your email.
  2. Name your organization and choose Standard or Attested capture. Nota sets up your keys and capture service automatically, or you can hold your archive key yourself (see Customer-held keys).
  3. Choose how you'll manage people. In Manual mode, an admin adds custodians and invites members by hand. In Directory mode, your identity provider manages them.
  4. Add your custodians and send each one a signup link.
  5. Watch the dashboard as people enroll.

Roles

RoleWhat it can do
OwnerEverything an admin can do, plus subscription changes, cancellation, and identity provider and directory changes.
AdminManages custodians, signup links, group mappings and policy. Can't read messages or approve access.
Records OfficerApproves access requests and exports records.
Supervisory ReviewerRequests access and searches approved records.
CustodianSees their own enrollment status and linked devices.

Each access request takes at least three people: one to request and two to approve. A person may hold more than one role. Role changes take effect on their next request.

Enrolling your people

Each custodian enrolls themselves. Nota never contacts them, so your team runs the rollout.

  1. Open Signup links in the dashboard. Download the CSV or print QR sheets, then share each person's private link.
  2. The custodian opens the link and signs in.
  3. They scan the code shown on the page using their messaging app's linked-devices screen.
  4. Their status moves to Covered, and the device appears in their app's list.

Deadlines

Each custodian in Directory mode has an enrollment deadline, 7 days by default, which you can change in settings. After the deadline, Nota opens an enrollment-overdue gap until the device is covered.

Removing someone

When capture stops for someone, their page tells them to remove the linked device from their app.

Coverage and gaps

StatusWhat it means
Covered · activeThe linked device is capturing, and traffic has been observed.
Covered · idleThe device is connected and has proven it's alive, with no recent traffic.
Degraded (unproven)The device is connected, but liveness hasn't been fully proven yet.
Capture gapCapture is interrupted. Messages may exist that aren't being captured.
Pending enrollmentNo linked device is capturing for this person yet.
Account dormantThe person's messaging account has been inactive.
UnenrolledCapture has stopped for this person.
DecommissionedThe person's records are no longer active in capture.

Every gap records a start, an end or "open", a cause and a remediation reference. Check the Gaps view regularly: Nota doesn't send gap notifications yet.

For the limits of what coverage proves, see the Trust center.

Single sign-on and directory sync

  1. In Settings, prove you own your email domain.
  2. Connect your identity provider. Directory mode needs SAML.
  3. Create a Directory sync token and configure SCIM in your identity provider. The token appears only once.
  4. Map one group to custodians, and map other groups to roles.
  5. Switch to Directory mode after the first sync. Directory mode can't be switched back to Manual.

When someone leaves

When a person leaves the custodian group, capture continues for a 30-day hold. An admin can end the hold early, and then the person is unenrolled.

Requesting access Supervision

  1. A supervisory reviewer requests access with a purpose, one custodian and a date range.
  2. Two records officers approve it. Neither can be the requester.
  3. The reviewer searches within that scope until the request expires, 72 hours after it was made.
  4. Every request, approval, search and export is added to your audit trail, which is checked along with the rest of your records.

Nota doesn't keep a search index. Records are decrypted for each search, and nothing derived from them is stored. Hosted review is off for organizations that hold their own key; see Customer-held keys.

Exports and verification

A records officer exports the records covered by an approved request. Nota's team then delivers the bundle to your records officer. Self-service download is on the way Planned.

What's in a bundle

  • events.jsonl: one entry for each event, with its decrypted message.
  • attachments/: each attachment, named by its hash.
  • proof.json: the signed proof that lets anyone check the rest.

Verifying a bundle

Run Nota's verifier on the bundle's folder. It needs no network connection or Nota account, and it confirms that each exported record matches what was captured and sits where the chain says it does. A bundle proves that the records it contains are authentic. It doesn't prove that the set is complete.

Customer-held keys

By default, Nota holds the key that protects your archive. You can hold it yourself instead. Then Nota can't read your stored records. Any change shows up when you verify, and with a retention lock nobody, Nota included, can delete them before the term ends. Capture still handles each message in memory while it archives it, under separate controls, so a customer-held key protects what's stored, not that step.

Customer-held keys are available with limits: for keys in AWS KMS, with Standard or Attested capture. With Attested capture, capture's keys open only after the environment proves it's running approved software. Your own key never opens for Nota. They aren't available with Google Cloud KMS or hardware security modules, which are coming.

Choosing a mode

You choose the mode when your organization is created. It can't be changed afterward, and organizations that already exist can't move to a customer-held key yet.

ModeWho holds the keyIf you turn the key off
Held by NotaNotaNothing for you to turn off.
KMS keyYou, as a symmetric key in your own AWS KMS account. Nota can use it only to protect new records, not to open them.Capture stops and a gap is recorded. See Pausing and resuming capture.
Public keyYou, as a private key in your own key system. Nota keeps only the public key.Capture continues, because Nota never contacts your key system. You can't read your records until you restore the key.

In either customer-held mode, withdrawing your key makes your records unreadable. A destroyed key can't be recovered by you or by Nota.

We recommend a KMS key that AWS KMS creates, with automatic rotation turned on. Rotation keeps the same key and every earlier version of it, so older records stay readable and there's no old key for you to keep. A KMS key with imported key material or in a custom key store also works, but it can't rotate automatically. Once you've proven a KMS key, it can't be changed to a different one. If you may ever need to move to a new key, choose a public key instead: each rotation there is a new key pair, and you keep every old private key.

Registering your key and proving it

Capture doesn't start until you've proven you hold the key and an Owner or Admin has confirmed it.

The quickest way, for a KMS key. In Settings, open Encryption key and choose Make a setup code. The dashboard shows a one-time code, valid for 15 minutes, and the command to run. Run records-custody create-key with your own AWS credentials. It shows your organization's name and asks you to confirm, then creates the key, adds Nota's policy statements, turns on automatic rotation, checks the key, registers it and proves it. If a step fails, it prints the key it created and how to continue. It never deletes a key. Then confirm the key in the dashboard (step 4 below).

Or step by step:

  1. In Settings, open Encryption key. For a KMS key, enter the key's full ARN and add the policy statements the dashboard shows to your key's policy. records-custody apply-policy can add them for you, from the statements file that Download statements saves: it shows the change and asks first, leaves your other statements alone, and turns on automatic rotation. The statements let Nota create data keys, encrypt a one-time challenge and read the key's health (below). They don't let Nota decrypt. For a public key, upload an RSA public key of 3072 bits or more. The dashboard refuses a private key.
  2. The dashboard issues a challenge that you can use once, within 15 minutes.
  3. Open the challenge with your own key using records-custody prove, then paste the result back into the dashboard. For a KMS key, prove first checks your key's policy and refuses if any statement could let someone in Nota's AWS account decrypt with the key, re-encrypt with it, grant access to it or change its policy.
  4. An Owner or Admin confirms the key in Settings. For a KMS key, check that the AWS account ID highlighted in the key's ARN is your own. The confirmation also accepts any warnings shown. If you don't recognize the key, choose Decline this key: that removes the registration, and you start again. Your key itself isn't touched. Once you confirm, capture can start. Enroll your custodians as usual.

The policy check runs on your computer with your credentials. It protects you from a mistake in your policy, but Nota sees only the result of the proof, not your policy, so it isn't Nota verifying your policy. You can run the same check any time with records-custody check-policy.

Key health warnings

For a KMS key, Nota reads the key's state, whether automatic rotation is on, and its grants: when you register it, when you prove it, and every six hours after that. These are read-only requests, and they appear in your AWS CloudTrail logs every six hours. Nota warns you when:

  • automatic rotation is off, or the key can't rotate automatically;
  • the key is scheduled for deletion, with the date. Cancel the deletion before then, or every record under the key becomes unreadable;
  • the key is disabled;
  • Nota can't check the key, usually because the health statement isn't in the key's policy yet. Add it and choose Check again.

You accept the current warnings when you confirm the key. A new warning after that shows in Settings. A warning doesn't pause capture by itself. A disabled or deleted key still stops capture, as described under Pausing and resuming capture.

One problem can't be accepted: a grant on your key that would let someone in Nota's AWS account decrypt with it. Nota won't take the proof while one exists. If one appears later, revoke it at once. Nota shows a banner on every dashboard page until the grant is gone. Capture keeps running meanwhile. Nota's services can't use such a grant: their AWS permissions explicitly deny decrypting with any key outside Nota's account. That doesn't yet cover Nota's staff accounts, so the grant still has to go.

Nota can't see anything about a public key's private half, so a public key comes with standing warnings you accept when you confirm it: Nota can't see the key's state, rotation or deletion; you must keep every old private key, because records open only with the key that protects them; and losing a key makes its records unreadable for good.

For a public key, the private half lives in AWS KMS today. records-custody setup can create a suitable asymmetric key in your account and prints the public key and its fingerprint.

Two more places for the private half are coming, and aren't available yet:

  • Google Cloud KMS, using an RSA decryption key in your own project.
  • A hardware security module that you reach over KMIP.

Reading and verifying your records

You use records-custody, Nota's command-line tool, to prove, read and verify with your key. Only you can open your stored records, so you read them with your own key using records-custody. It signs in with a read token that you issue in Settings, under Read and verify.

Nota will publish the source for records-custody, and its signed releases, on GitHub at launch, so you can audit it and build it yourself.

  • Read. records-custody read downloads your archive and decrypts it into a new, empty folder: events.jsonl and an attachments/ folder. If it can't open some segments, such as ones protected by a key you no longer hold, it reads the rest and lists what it couldn't open.
  • Verify. records-custody verify compares the archive with Nota's ledger and signed record, and with a list of the public key fingerprints you've pinned. It can catch records that have been changed or that no longer fit the chain, a signed record issued for another customer or gone out of date, and a registered public key that isn't one of yours. That last check detects a swap. It doesn't prevent one. For each key that protects your records, verify also reports whether it still opens them, how many segments it protects and their dates, and fails if a key is no longer available.

You can download whenever your records are available, including while capture is paused. Each download is recorded in your audit trail by count and kind, with no content, and your key system's own logs show each use of your key.

To set it up:

  1. Records officers and supervisory reviewers issue a read token in Settings, under Read and verify. Give it a name and a lifetime: 1 hour, 1 day, 1 week, 1 month, 1 year or no expiry. Nota shows the token once, so copy it then.
  2. On the machine that will run the commands, run records-custody token save. It asks for the token without showing it as you type, or takes it from standard input when you pipe it in, and keeps it in a file only you can read. It refuses a folder other users can reach. read and verify use that file, or a different one named with --token-file.
  3. Copy the commands Settings shows, already filled in with your API address, customer, Region and key: records-custody read --api API --customer ID --region REGION --key-id KEY --pinned PIN-FILE --out DIR and records-custody verify --api API --customer ID --region REGION --key-id KEY --pinned PIN-FILE. Settings also shows the pin file: a kms-key line with your key's ARN (or your public key's fingerprint) and a signing-key line with the fingerprint of Nota's signing key.

A read token can read and verify your archive and nothing else. It can't issue, extend or revoke tokens. Admins and Owners see every token for the organization and can revoke any of them; anyone who issued a token can revoke their own. A token can't be renewed or edited. To replace one, sign in, issue a new token, run records-custody token save again, then revoke the old one. If a token may have leaked, revoke it first.

What verify can't tell you

records-custody verify prints its full list of limits each time it runs. These are the main ones.

  • A signature is Nota's statement, not independent proof. Nota holds its signing key, so a complete forgery signed with a key you've pinned passes unless you hold an earlier checkpoint from before it.
  • A checkpoint, which you save from each run and keep where Nota can't reach, catches a rewrite since your last run. It can't catch a rewrite from before your first one. The first time you pin Nota's signing key, you're trusting that first run. The fingerprint shown in Settings is still Nota's own word for it: pinning it makes verify fail if the key ever changes, but it doesn't confirm the key came from anyone but Nota. An independent way to confirm it is planned.
  • Events after the last record Nota signed can be withheld for a period, and a checkpoint doesn't cover them.
  • Verify checks what's in the archive, not what was sent. Messages that were never captured aren't in it, and verify doesn't check the coverage log. See Coverage and gaps.

A read token can be saved on a machine that runs verify on a schedule. Give such a token a lifetime that fits and revoke it when the job ends.

Rotating a key

  • KMS key. Turn on automatic rotation for a key that AWS KMS created. records-custody turns it on when it sets up the key. AWS keeps the same key and every earlier version, so older records stay readable and nothing changes in Nota. A key with imported key material rotates only on demand, and you must keep every key material you import. A key in a custom key store can't rotate. After proof, you can't move to a different KMS key.
  • Public key. Each rotation is a new key pair. Register the new public key in Settings and prove it as before. Your current key stays in use until the new one is proven. Capture then moves to the new key, which usually takes about ten minutes, and Settings shows the move. Capture keeps running during the move, but the coverage log can record a short gap at the handover. Until it finishes, new records can still use the previous key, so records from just after the proof may open only with that key. Records already stored stay under the key that protects them, and each record names that key. If the move doesn't finish, Settings says so and Resume capture starts it again. Keep every private key you have used. Records protected by a key open only with that key. Add the new fingerprint to your pinned list and keep the old one.

If a key is compromised. Records already stored stay under the key that protects them, and you still need that key to read them. New records can go to a new key only in public key mode. Nota doesn't re-protect stored records under a new key. Nota can't open them to do it, and with a retention lock the original locked version stays until its term ends anyway, so re-protecting wouldn't remove the exposure.

Protecting your key from loss

Nota can't stop you from destroying your own key, because that is also how you make your records unreadable on purpose. These steps make an accident unlikely and give you time to notice one:

  • When a KMS key's deletion is scheduled, AWS waits 7 to 30 days first, and the deletion can be canceled until then. Use the full 30 days.
  • Set an alarm in AWS CloudTrail for anyone disabling the key or scheduling its deletion.
  • Let only a break-glass role, one nobody uses day to day, disable the key or schedule its deletion.
  • For a public key, back up the private key as your key system allows, and keep every old one.
  • Run records-custody verify regularly. It fails if a key that protects your records no longer opens them.

Pausing and resuming capture

This applies to the KMS key mode. In public key mode, Nota never contacts your key system, so capture isn't affected when you turn it off.

  • If your key is disabled or can't be found, capture stops the next time Nota needs your key to protect a message. If no messages are arriving, the stop can wait until one does.
  • If AWS refuses Nota access to the key, or reports the key in a state that can't be used, Nota retries for a few minutes first and then stops.
  • When capture stops, Nota records a gap and pauses capture for your organization. Your custodians' linked devices stay linked. The dashboard shows that capture is paused and what to fix, and Nota's team is alerted. Customers don't get an email yet, so check the dashboard.
  • To resume, restore your key and choose Resume capture in Settings. Capture restarts and Nota checks your key again. The gap closes only after capture is running again. If the key is still unavailable, capture pauses again.

Messages sent during a gap may not be captured. The messaging service may redeliver some that weren't acknowledged, but Nota can't promise that, so treat anything sent during a gap as possibly lost.

What changes

  • Hosted review is off. Nota can't read your stored records, so it can't search them for you. Supervision reviews use the decrypted export you make with your key, and Nota doesn't enforce grants or two-approver review on those reads.
  • Disposal runs differently. A Nota employee still approves disposal, but Nota can't destroy your key. Disposal doesn't delete your stored records yet. They stay in the archive, and only your key can open them. You can make your records unreadable at any time by withdrawing your key, though Nota can't see or confirm that you did.

Retention and leaving

Retention lock

In Settings, turn on the retention add-on and choose a term from 1 to 30 years. Choose Backfill existing records to lock what's already archived too. Turning it off stops locking new records, and existing locks stay until their term ends.

Canceling

Canceling stops capture. Without locked records, you have 30 days to export and can reactivate during that time. After a Nota employee approves disposal, your key is destroyed and your archive becomes permanently unreadable. Locked records, and the keys that open them, stay until the last term ends. If you hold your own key, disposal works differently; see Customer-held keys.