Core Concepts
Revocation

Revocation

Revocation allows you to invalidate warrants before their natural expiration. This is essential for handling compromised agents, changed permissions, or emergency access removal.

Why Revocation?

Even with short-lived warrants, you may need to revoke access immediately:

  • An agent is compromised
  • An employee leaves the company
  • A permission was granted in error
  • A security incident requires lockdown

How Revocation Works

Tenuo uses a Signed Revocation List (SRL) approach:

β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”      β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”      β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚   Admin     β”‚      β”‚ Tenuo Cloud  β”‚      β”‚ Authorizer  β”‚
β””β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”˜      β””β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”˜      β””β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”˜
       β”‚                    β”‚                     β”‚
       β”‚ Add Revocation     β”‚                     β”‚
       │───────────────────>β”‚                     β”‚
       β”‚                    β”‚                     β”‚
       β”‚ Regenerate SRL     β”‚                     β”‚
       │───────────────────>β”‚                     β”‚
       β”‚                    β”‚                     β”‚
       β”‚                    β”‚   Fetch SRL         β”‚
       β”‚                    β”‚<────────────────────│
       β”‚                    β”‚                     β”‚
       β”‚                    β”‚   Signed List       β”‚
       β”‚                    │────────────────────>β”‚
       β”‚                    β”‚                     β”‚
       β”‚                    β”‚                     β”‚  Check warrant
       β”‚                    β”‚                     β”‚  against list
  1. Admin creates a revocation for a warrant ID
  2. Admin regenerates the SRL
  3. Authorizers fetch the new SRL
  4. Authorizers check warrants against the list

The Signed Revocation List (SRL)

The SRL is a cryptographically signed document containing:

{
  "version": 42,
  "issued_at": "2024-01-15T10:00:00Z",
  "expires_at": "2024-01-15T11:00:00Z",
  "revoked_ids": [
    "tnu_wrt_abc123",
    "tnu_wrt_def456",
    "tnu_wrt_ghi789"
  ],
  "signature": "base64-encoded-ed25519-signature"
}

Why Signed?

The signature ensures:

  • The SRL came from Tenuo Cloud (not an attacker)
  • The SRL hasn't been modified
  • Authorizers can trust the revocation data

SRL Versioning

Each SRL has a version number. Authorizers only accept SRLs with a version greater than or equal to their current version, preventing replay attacks with old lists.

Revocation Scope

Individual Warrant

Revoke a specific warrant by its ID. Only this warrant is invalid.

Transitive Revocation

Revoking a parent warrant revokes all children:

tnu_wrt_parent (revoked)
    β”‚
    β”œβ”€β”€ tnu_wrt_child1 ← Invalid
    β”‚
    └── tnu_wrt_child2 ← Invalid
            β”‚
            └── tnu_wrt_grandchild ← Invalid

Key Revocation

Revoking an issuer key revokes all warrants signed by that key.

Authorizer Behavior

Authorizers check the SRL before allowing any action:

def authorize(warrant, action):
    # 1. Check SRL
    if warrant.id in current_srl.revoked_ids:
        return DENIED("warrant revoked")
    
    # 2. Check expiration
    if warrant.expires_at < now():
        return DENIED("warrant expired")
    
    # 3. Verify signature
    if not verify(warrant):
        return DENIED("invalid signature")
    
    # 4. Check action is allowed
    if action not in warrant.actions:
        return DENIED("action not permitted")
    
    return ALLOWED()

SRL Caching

Authorizers cache the SRL to avoid fetching it on every request:

SettingTypical Value
Cache TTL5-60 seconds
Refresh interval30 seconds
Max staleness5 minutes

There may be a short delay (seconds to minutes) between regenerating the SRL and all authorizers enforcing the revocation.

Best Practices

Use short expiration times

Short-lived warrants (minutes to hours) reduce the need for revocation.

Monitor SRL fetch errors

If authorizers can't fetch the SRL, they may fail open or closed depending on configuration.

Document revocation reasons

Always provide clear reasons for audit trail.

Test revocation flow

Regularly test that revocations actually take effect in your authorizers.

Related Topics