Responsible Disclosure

Security at VettID

If you've found a vulnerability, please tell us before you tell the world.

Please do not file public GitHub issues for security findings. Public disclosure of a confidentiality, integrity, or attestation defect can compromise live users. Use the encrypted channel below.

How to report

Email us at the address below. Encrypt with the PGP key further down if your report contains exploit details, user identifiers, or anything you wouldn't want in a mailbox compromise.

Email
security@vettid.org

Acknowledgement target: 72 hours. Triage + fix timeline depends on severity — see below.

What to include

Scope

In scope for disclosure:

Out of scope:

Severity and response

We will keep you in the loop through triage, fix, and deploy. If you want public credit on a published advisory, say so in your report.

Safe harbor

We will not pursue legal action against researchers who:

If you're not sure whether something you want to try falls within these guidelines, email us first.

PGP key

The fingerprint and full ASCII-armored block are below. The same key is published to keys.openpgp.org for verification.

Fingerprint
E23A 83D6 7828 2CD7 9E95 E5F7 1523 8C03 B404 DAEB
Algorithm
Ed25519 (signing) + Curve25519 (encryption)

Copy the block below and import with gpg --import. The same key is also published to the Proton key directory (auto-fetched by gpg --auto-key-locate wkd security@vettid.org) for cross-verification.

-----BEGIN PGP PUBLIC KEY BLOCK-----
Version: ProtonMail

xjMEahS+BxYJKwYBBAHaRw8BAQdABGU4csmGUZsEkB11Y3anH1Hnn0YoQsPC
7J4F3VUKX2TNKVNlY3VyaXR5QHZldHRpZC5vcmcgPFNlY3VyaXR5QHZldHRp
ZC5vcmc+wsARBBMWCgCDBYJqFL4HAwsJBwkQFSOMA7QE2utFFAAAAAAAHAAg
c2FsdEBub3RhdGlvbnMub3BlbnBncGpzLm9yZ75OD21JsyGQ2ZExpa44dE+V
TKTQnElEsbCdVhKRI4ziAxUKCAQWAAIBAhkBApsDAh4BFiEE4jqD1ngoLNee
leX3FSOMA7QE2usAAJQ6AP9IdAUyA104D7TMmChgR6PyopWHjjnE5E7TA81P
fkrLPAEArrnwYBLo75n5wvUZijDFotiQYtcqhEtfd2dW+/VktwjCwB4EEBYI
AJAFgmoUvkMFgwDtTgAJENgGwa9ZeOjHNRQAAAAAABwAEHNhbHRAbm90YXRp
b25zLm9wZW5wZ3Bqcy5vcmcOkqeC8y8+0pMk2wm0RnKSLBxvcGVucGdwLWNh
QHByb3Rvbi5tZSA8b3BlbnBncC1jYUBwcm90b24ubWU+FiEECoZS/l1TOGBX
iZ/p2AbBr1l46McAAGDEAQCtUWPkQVWsQrBRRGGyBICUr+6tSW11TcyVoJh1
Ylyp8QD9EI5YT7Au2h0bcpkmWYFek4qVEiESqdtiDrHJObGqKgjOOARqFL4H
EgorBgEEAZdVAQUBAQdAGmt3mrBESbspOJCVKm0wyU4iwPdO7YDBfr8wc9zE
TjIDAQgHwr4EGBYKAHAFgmoUvgcJEBUjjAO0BNrrRRQAAAAAABwAIHNhbHRA
bm90YXRpb25zLm9wZW5wZ3Bqcy5vcmcjbF1qe03HyUX8l5gXCaW+qZmA6HWp
KyIuXBYJv9anCQKbDBYhBOI6g9Z4KCzXnpXl9xUjjAO0BNrrAABGcgD/Tm0K
dfUPJp1chfcTSDeC7O4JCyaDLFrTpBgfNxobpSgBALaLBd69bz7GrelAbCQa
4NmY7qOgnCF9OITO5oZgl98F
=9vw7
-----END PGP PUBLIC KEY BLOCK-----

What we log

Honest disclosure of what the operator side can see:

What the operator cannot see: any decrypted payload, your vault contents, your session keys, your credential values. The enclave's attestation chain is what makes this enforceable rather than a promise.