Release status
What is tested: unit tests for derivation, envelopes, tags, encryption, padding, proofs and OHTTP encapsulation; a browser test of the key worker; and on-chain tests on Tiramisu covering the full write and read paths, misbehaving relayers, failover, blind tokens, issuer equivocation, the linkage experiment and a 27-check edge-case suite. See the edge-case register.Report a vulnerability
Report privately through GitHub’s private vulnerability reporting, not a public issue. Include steps to reproduce and the commit you tested. In scope: anything that lets someone- link records to each other or to a wallet;
- read an encrypted payload;
- forge a record or an ownership proof;
- spend a rate-limit token twice;
- make a relayer write something its owner did not sign;
- make an OHTTP relay forward somewhere it should not.
Keys and secrets
Nothing secret, and nothing personal, is ever written to Arkiv: only one-time addresses, encrypted
tags, random token ids, the app’s own data and public issuer keys.
Rules for operators
- One wallet per process. Never run two relayers (or a relayer and a test) on the same wallet. Their transactions and key predictions collide.
- Separate wallets for relay-1, relay-2 and the issuer.
- No logs of IPs or bodies. The services log batch summaries only. Configure any reverse proxy the same way, especially in front of an OHTTP relay.
- HTTPS everywhere public. Clients and OHTTP relays use only https relayers.
- Run the OHTTP relay under a different operator than the relayers, or it protects nothing.
- Keep
OHTTP_ALLOW_LOCALoff on any public relay. - Watch balances. A relayer out of gas stops writing;
/healthzreportsbalanceGlm. - Keep the issuer seed stable within a day. A changed seed publishes a second key, and every client then refuses the issuer as equivocating.
Rules for app builders
- Load no third-party analytics, session replay or error reporters on pages that use Arkognito. They can read the wallet and everything the page sees.
- Keep attributes coarse and put personal content in encrypted payloads.
- Treat a hostile frontend as out of scope: the key worker stops leaks and arbitrary signing, but a page you do not trust can still request Arkognito signatures and ownership proofs.