Security Overview
How AcadCert protects credentials and keys.
Signing model
Every credential is signed with RSA-4096. This gives you three guarantees:
RSA-4096 provides ~140 bits of security strength, resistant to current and near-future cryptanalysis.
Key management
Each institution gets its own keypair. Private keys never leave the server unencrypted.
- Private keys encrypted at rest with AES-256-GCM and a unique salt per institution
- Decrypted only in memory during signing, never written to disk in plaintext
- Master encryption key validated on startup — system refuses to run with weak secrets
- Key rotation supported without invalidating historical credentials (old public keys are preserved)
- Keys are never exposed to issuers or students
How signing works internally
Issuers don’t touch the keys. The signing flow:
- Issuer uploads a PDF and picks a student
- System validates the issuer’s authority and the file
- Institution’s private key is decrypted in memory
- Document is hashed (SHA-256) and signed (RSA-4096)
- Key is wiped from memory, signature and metadata stored
A compromised issuer account alone cannot generate valid credentials — the signing keys are never accessible to users.
Four-layer verification
Every verification (on AcadCert or VeriCert) runs four independent checks:
Signature matches the document using the correct public key.
The institution authorised the issuer at the time of issuance.
The credential hasn’t been revoked or superseded.
An independent authority confirms when the document was signed.
If any check fails, the credential is flagged as invalid. No partial passes.
Threat model
Verification through VeriCert is public and doesn’t require a student account. Employers, institutions, and any third party can check any credential independently.