Content Certification Cryptography
Content Certification uses public-key cryptography (RSA-2048) to create tamper-proof certificates that prove content was verified at a specific time.
Certificate Structure
{ "certificate_id": "cert-abc123", "content_hash": "sha256:def456...", "trust_score": 92, "verified_at": "2024-01-15T10:30:45Z", "expires_at": "2024-04-15T10:30:45Z", "claims_verified": [ { "claim": "Founded in 2023", "status": "verified", "confidence": 0.99 } ], "signature": "rsa2048:signature_here", "public_key_id": "pk-789"}Signing Process
1. Hash Content
Create SHA-256 hash of content:
Content: "TruthVouch was founded in 2023..."SHA-256 Hash: def456789abcdef...2. Sign Hash
Sign hash with private key (RSA-2048):
Hash: def456789abcdef...Private Key: [kept secret on HSM]Signature: rsa2048:abcdefg...3. Issue Certificate
Package all components:
Certificate = { content_hash, trust_score, verified_claims, timestamp, signature, public_key_id}Verification Process
Anyone can verify certificate authenticity:
# Verify certificateresult = client.certification.verify_certificate("cert-abc123")
if result.valid: print(f"Certificate authentic") print(f"Trust Score: {result.trust_score}") print(f"Content matches hash: {result.content_match}")else: print(f"Certificate invalid: {result.reason}") # Possible: wrong signature, content modified, expiredTampering Detection
Scenario 1: Content Modified
Original content hash: def456...Modified content hash: xyz789...
Verification: Hashes don't match → Certificate revokedScenario 2: Score Modified
Original signature computed from: hash + score92Modified signature attempt on: hash + score95
Verification: Signature doesn't verify → Certificate invalidScenario 3: Fake Certificate
Attacker creates certificate with different private keyVerification: Public key ID doesn't match TruthVouch keys → InvalidKey Management
TruthVouch private keys stored in AWS CloudHSM:
- Hardware Security Module: Keys never leave HSM
- Automatic Rotation: Keys rotated monthly
- Backup Keys: Geographically distributed
- Access Control: MFA required for any key access
- Audit Trail: All key operations logged
Certificate Expiry
Certificates automatically expire to encourage regular re-verification:
- Default: 90 days
- Customizable: 30, 60, 90 days, or 1 year
- After Expiry: Badge shows “expired” status
- Renewal: Re-certify content for new certificate
Revocation
Certificates can be revoked:
# Manual revocationclient.certification.revoke_certificate( certificate_id="cert-abc123", reason="facts_changed")
# Auto-revocation (if enabled)# Triggered when underlying facts changeRevoked certificates are published in revocation list.
Public Verification
Anyone (not logged in) can verify:
https://truthvouch.com/verify?cert=cert-abc123Shows:
- Certificate is valid/revoked/expired
- Trust Score
- Verified claims
- Verification timestamp
- Content authenticity
Performance
- Certificate Generation: <500ms
- Verification: <10ms (local verification)
- Public Verification: <100ms (cached)
No performance penalty for security.
Standards Compliance
- Cryptography: FIPS 140-2 Level 3 (HSM)
- Signing: PKCS#1 v2.2 (RSA-OAEP)
- Hashing: SHA-256 (NIST standard)
- Key Size: RSA-2048 (2048-bit keys)
Next Steps
- Embedding: How to embed verification in your site
- Monitoring: Track certificate validity
- Custom Keys: Use your own signing keys (Enterprise)