Ed25519 Signatures: Why Ackify Uses Modern Cryptography for Your Proof of Reading
Published on November 18, 2025
When you ask an employee to confirm reading a document, that proof must be unfalsifiable. No question of a malicious admin creating fake confirmations, or an employee disputing having validated their reading.
That's why Ackify uses Ed25519 cryptographic signatures—the same algorithm used by Signal, WireGuard, and OpenSSH.
What is Ed25519?
Ed25519 is a digital signature algorithm based on elliptic curves (EdDSA). Designed by Daniel J. Bernstein, it offers:
- High security: 128 bits of security, equivalent to RSA-3072
- Performance: ultra-fast signing and verification
- Compact keys: 32 bytes for public key, 64 for signature
- Attack resistance: no known vulnerabilities since 2011
How Ackify uses Ed25519
For each read confirmation, Ackify generates a cryptographic signature:
Payload = {
doc_id: "it-charter-2025",
user_sub: "oauth2|123456",
user_email: "john.doe@company.com",
signed_at_utc: "2025-11-18T14:32:00Z",
nonce: "a1b2c3d4e5f6..."
}
Hash = SHA-256(Payload)
Signature = Ed25519_Sign(PrivateKey, Hash)
This signature is stored in the database with the payload. It guarantees:
- Integrity: any modification to the payload invalidates the signature
- Non-repudiation: only the Ackify server can generate this signature
- Authenticity: the public key allows signature verification
Why not RSA or ECDSA?
Ed25519 outperforms alternatives on several criteria:
| Criteria | RSA-2048 | ECDSA P-256 | Ed25519 |
|---|---|---|---|
| Signature size | 256 bytes | 64 bytes | 64 bytes |
| Signing speed | Slow | Medium | Very fast |
| Security | 112 bits | 128 bits | 128 bits |
| Known vulnerabilities | Padding attacks | Nonce reuse | None |
Ed25519 is also deterministic: the same input always produces the same signature, eliminating risks related to faulty random generators.
The role of the anti-replay nonce
Each signature includes a nonce (number used once)—a unique random value. This prevents replay attacks: impossible to reuse an old signature to simulate a new confirmation.
Signature verification
At any time, you can verify the authenticity of a confirmation:
# Export public key
curl https://your-instance.com/api/public-key
# Verify a signature
curl https://your-instance.com/api/verify?doc=charter-2025&user=john.doe@company.com
If the payload has been modified (date, user, document), verification fails. Integrity proof guaranteed.
Implications for audit
During an ISO 27001 or GDPR audit, this architecture provides:
- Cryptographic proofs: not just a modifiable database entry
- Verifiability: the auditor can verify each signature
- Immutability: PostgreSQL trigger protects timestamps
- Traceability: SHA-256 hash of the original document
Private key security
The Ed25519 private key is Ackify's most sensitive secret. Recommendations:
- Store it in an environment variable or secret manager
- Never commit it to Git
- Make a secure backup (loss = invalidation of all signatures)
- Rotation possible with key history preservation
Conclusion
Cryptography isn't a gimmick—it's the foundation of reliable proof of reading. Ed25519 offers the best trade-off between security, performance, and simplicity.
Ackify natively integrates these cryptographic guarantees, without complex configuration. Your proofs of reading are unfalsifiable by design.
➡️ Discover Ackify — proof of reading with cryptographic integrity.