Loading vLEI.wiki Fetching knowledge base...
vLEI.wiki Comprehensive knowledge base for KERI (Key Event Receipt Infrastructure) and vLEI (verifiable Legal Entity Identifier) ecosystem.
Made by Key State Capital .
© 2025 vLEI.wiki. Educational resource for KERI/vLEI ecosystem.
Back to ConceptsShort Definition Inception is the foundational operation in KERI that creates an Autonomic Identifier (AID ) by cryptographically binding it to an initial set of authoritative keypairs and configuration parameters, producing a verifiable and duplicity -evident inception event that serves as the first entry in the identifier's Key Event Log (KEL ).
Related Concepts No related concepts available
Comprehensive Explanation inception
Process Definition
Inception is the bootstrap operation that establishes a new Autonomic Identifier (AID) within the KERI protocol . This operation creates a cryptographic binding between:
A unique identifier prefix (derived from or containing public key material)
An initial set of authoritative keypairs (current signing keys and pre-rotated next keys)
Configuration parameters (witness configuration, thresholds, traits)
Supporting infrastructure specifications
The inception operation produces an inception event - a serialized data structure that becomes the immutable first entry in the identifier's Key Event Log (KEL) . This event is self-certifying and self-contained , meaning it carries all information necessary to verify the identifier's derivation and initial configuration without requiring external trust anchors.
Key Accomplishments:
Establishes cryptographic root-of-trust for the identifier
Defines initial control authority through key specifications
Commits to future key rotation through pre-rotation digests
Configures witness infrastructure for duplicity detection
Creates verifiable audit trail foundation
When Used:
Creating new identifiers for controllers, organizations, or entities
Establishing delegated identifiers under existing authority
Initializing multi-signature group identifiers
Bootstrapping witness or watcher infrastructure identifiers
Key Participants:
Controller : Entity generating keys and creating the inception event
Witnesses : Designated entities that receipt and store the inception event
Validators : Any party that will later verify the identifier's authenticity
Implementation Notes Critical Implementation Details
Identifier Derivation
Self-Addressing Identifiers:
Require two-pass generation: create event with placeholder SAID, compute digest, replace placeholder
The d and i fields must be identical for self-addressing identifiers
Use same derivation code for both fields
Placeholder must match the length of the final digest
Basic Self-Certifying Identifiers:
Simpler one-pass generation
Identifier directly derived from public key
No placeholder replacement needed
Less flexible for complex configurations
Key Management
Seed Storage:
Never transmit or expose the seed (bran)
Encrypt seed at rest using strong encryption (AES-256-GCM minimum)
Consider hardware-backed key storage (HSM, secure enclave)
Implement secure backup and recovery procedures
Key Derivation:
Use deterministic derivation for reproducibility
Support hierarchical deterministic (HD) key derivation for multiple identifiers
Maintain separation between current and next keys
Generate next keys before inception, store securely
Witness Configuration
Threshold Selection:
Minimum 2 witnesses recommended for production
Threshold should be > 50% of witness count for security
Consider Byzantine fault tolerance: threshold >= (2f + 1) where f is maximum faulty witnesses
Balance security vs. availability trade-offs
Witness Discovery:
Use OOBI (Out-Of-Band Introduction) for witness endpoint discovery
Verify witness identifiers before configuration
Test witness connectivity before inception
Maintain backup witness lists for failover
Multi-Signature Coordination
Signature Collection:
Implement timeout mechanisms for signature gathering
Use secure channels for signature transmission
Verify all signatures before event propagation
Handle partial signature scenarios gracefully
Threshold Verification:
inception - vLEI.wiki | KERI Knowledge Base - vLEI.wiki
Process Flow
Step 1: Entropy Generation and Key Derivation The inception process begins with cryptographically secure entropy generation :
Generate a random seed (bran) with minimum 128 bits of cryptographic strength
Derive the initial signing keypair from this seed using a deterministic algorithm
Generate the next (pre-rotated) keypair for future rotation
Create cryptographic digests of the next public keys
The derivation code specifies the cryptographic algorithm used (e.g., Ed25519, ECDSA secp256k1), which is prepended to the public key material to create a qualified cryptographic primitive in CESR format.
Step 2: Identifier Prefix Generation The identifier prefix is generated through one of several methods:
Basic Self-Certifying Identifier:
Prefix = derivation_code + base64(public_key)
Example: BDKrJxkcR9m5u1xs33F5pxRJP6T7hJEbhpHrUtlDdhh0
Self-Addressing Identifier:
Prefix = derivation_code + base64(digest(inception_event))
Requires two-pass generation: create event with placeholder, compute digest, replace placeholder
Example: EAco5dU5WjDrxDBK4b4HrF82_rYb6MX6xsegjq4n0Y7M
Multi-Signature Self-Addressing:
Combines multiple public keys with threshold specifications
Prefix derived from digest of the complete multi-sig configuration
Step 3: Inception Event Construction The inception event is constructed as a field map (ordered key-value structure) containing:
v: Version string (e.g., KERI10JSON000160_)
t: Event type (icp for inception)
d: Event digest (SAID - Self-Addressing Identifier)
i: Identifier prefix
s: Sequence number (always 0 for inception)
kt: Current signing threshold
k: Array of current public keys
nt: Next signing threshold
n: Array of next key digests (pre-rotation commitments)
bt: Witness threshold (backer threshold)
b: Array of witness identifiers
c: Configuration traits array
a: Anchoring seals array (typically empty for inception)
Example Inception Event Structure:
{
"v": "KERI10JSON000160_",
"t": "icp",
"d": "EAco5dU5WjDrxDBK4b4HrF82_rYb6MX6xsegjq4n0Y7M",
"i": "EAco5dU5WjDrxDBK4b4HrF82_rYb6MX6xsegjq4n0Y7M",
"s": "0",
"kt": "1",
"k": ["DKrJxkcR9m5u1xs33F5pxRJP6T7hJEbhpHrUtlDdhh0"],
"nt": "1",
"n": ["EJ4Ngh0jDrlkD774TdNbkhzVYnf-MwpHGAnqKmsCAB8A"],
"bt": "2",
"b": [
"BBilc4-L3tFUnfM_wJr4S4OJanAv_VmF_dJNN6vkf2Ha",
"BLskRTInXnMxWaGqcpSyMgo0nYbalW99cGZESrz3zapM"
],
"c": [],
"a": []
}
Step 4: Event Signing The controller signs the serialized inception event:
Serialize the event to canonical form (preserving field order)
Generate signature using the current private key
Attach signature as CESR -encoded indexed signature
For multi-sig, collect threshold-satisfying signatures from all participants
Signature Attachment Format:
-AABAAxxx... (CESR-encoded signature)
The signature creates a non-repudiable cryptographic commitment to both the identifier and its initial configuration.
Step 5: Witness Propagation The signed inception event is transmitted to designated witnesses:
Controller sends inception event to each witness via OOBI endpoints
Witnesses verify:
Event structure and field validity
Signature authenticity against public key in event
Identifier derivation correctness
Witnesses create receipt messages (key event receipts)
Witnesses return receipts to controller
Controller collects receipts meeting the witness threshold
Receipt Message Structure:
{
"v": "KERI10JSON00011c_",
"t": "rct",
"d": "EAco5dU5WjDrxDBK4b4HrF82_rYb6MX6xsegjq4n0Y7M",
"i": "EAco5dU5WjDrxDBK4b4HrF82_rYb6MX6xsegjq4n0Y7M",
"s": "0"
}
Step 6: KEL Initialization The inception event becomes the genesis entry in the KEL:
Store inception event in local database
Initialize key state with current keys and thresholds
Record pre-rotation commitments for future verification
Store witness receipts as validation evidence
Make KEL available for future event appending
Technical Requirements
Cryptographic Requirements
Minimum 128 bits of cryptographic strength for seed generation
Use cryptographically secure pseudo-random number generator (CSPRNG)
Recommended: 256 bits for post-quantum security considerations
Support for multiple signature schemes (Ed25519, ECDSA secp256k1, etc.)
Deterministic key derivation from seed
Secure storage of private keys (never transmitted)
Generation of both current and next keypairs
Blake3-256 for next key commitments (default)
SHA-256 support for compatibility
Collision-resistant hash functions only
Non-repudiable digital signatures
Support for threshold multi-signature schemes
Indexed signatures for multi-sig scenarios
Timing Considerations
Default timeout for witness receipt collection: 30 seconds
Configurable based on network conditions
Partial receipts acceptable if threshold met
Inception must be sequence number 0
No events can precede inception in the KEL
Timestamp in inception event establishes temporal reference
Next keys must be generated before inception event creation
Digests computed and included in inception event
Next keys kept secure until rotation event
Error Handling Insufficient Witness Receipts:
If witness threshold not met, inception is not considered established
Controller may retry witness propagation
Alternative: adjust witness configuration and re-incept with new identifier
Signature Verification Failure:
Invalid signatures cause event rejection
Multi-sig requires all threshold signatures to be valid
Malformed events are discarded without processing
Cryptographic strength makes collisions computationally infeasible
Self-addressing identifiers have collision resistance of hash function
Basic identifiers have collision resistance of key generation
Invalid threshold specifications (e.g., threshold > key count)
Malformed witness identifiers
Unsupported configuration traits
All cause inception event rejection
Usage Patterns
Single-Signature Identifier Inception Scenario: Individual creating personal identifier
Generate single keypair with pre-rotation
Configure 3-5 witnesses with threshold of 2-3
Create basic or self-addressing identifier
Sign and propagate to witnesses
Collect receipts and establish KEL
Use self-addressing identifiers for enhanced security
Select geographically distributed witnesses
Store seed securely (encrypted, backed up)
Document witness OOBIs for recovery
Multi-Signature Group Identifier Inception Scenario: Organization creating shared governance identifier
All participants generate individual keypairs
Agree on threshold (e.g., 3-of-5 for signing, 4-of-5 for rotation)
One participant constructs inception event with all public keys
All participants sign the inception event
Lead participant collects signatures and propagates to witnesses
All participants store the established KEL
Use weighted thresholds for complex governance
Separate signing and rotation thresholds
Establish clear signing coordination protocol
Use secure channels for signature collection
Delegated Identifier Inception Scenario: Creating identifier under existing authority
Delegate generates keypairs and constructs inception event
Inception event includes di field with delegator's identifier
Delegate signs inception event
Delegator creates interaction or rotation event with seal of delegate's inception
Delegator signs and propagates their event
Delegate propagates inception event with reference to delegator's seal
Witnesses verify delegation chain
Ensure delegator's KEL is established first
Use interaction events for delegation seals when possible
Verify delegation authorization before accepting delegate events
Maintain delegation tree documentation
Witness Identifier Inception Scenario: Establishing witness infrastructure
Witness generates keypairs (typically non-transferable)
Creates inception event with no witnesses (self-witnessing)
Publishes OOBI for discovery
Makes KEL publicly accessible
Use non-transferable identifiers for witnesses (simpler)
Publish witness OOBIs via well-known URIs
Maintain high availability infrastructure
Implement receipt storage and retrieval APIs
Integration Considerations
Issuer AID must be established before credential issuance
Inception event establishes issuer's root-of-trust
Credential registry requires separate inception
KERI inception maps to DID creation
DID document generated from inception event and key state
did:keri and did:webs methods use inception as foundation
With Key Management Systems:
HSM integration for key generation and signing
Secure enclave support for mobile implementations
Key derivation from hardware-backed seeds
Discovery via OOBI resolution
Load balancing across witness pools
Failover and redundancy strategies
Validate threshold <= key count
Support weighted thresholds for complex governance
Separate signing threshold (kt) from rotation threshold (nt)
Document threshold rationale for governance
Error Recovery
If witness threshold not met, inception is not established
Cannot retry with same identifier (would create duplicity)
Must generate new identifier and re-incept
Log failed attempts for debugging
Implement retry logic with exponential backoff
Consider partial establishment if some witnesses respond
Document witness SLA requirements
Plan for witness replacement procedures
Performance Optimization Parallel Witness Propagation:
Send inception event to all witnesses concurrently
Use connection pooling for efficiency
Implement timeout per witness, not total timeout
Collect receipts asynchronously
Index KEL by identifier prefix for fast lookup
Cache key state for frequent access
Use write-ahead logging for durability
Implement efficient serialization (CBOR for binary, JSON for debugging)
Security Considerations
Use OS-provided CSPRNG (e.g., /dev/urandom, CryptGenRandom)
Verify entropy pool initialization
Consider additional entropy sources for critical identifiers
Test random number generator quality
Use constant-time comparison for signature verification
Avoid timing-dependent branching in cryptographic operations
Implement rate limiting for inception attempts
Log suspicious timing patterns
Inception events are inherently replay-resistant (sequence 0)
Verify event hasn't been processed before
Check timestamp reasonableness
Implement event deduplication
Testing Strategies
Test key generation with known seeds
Verify identifier derivation correctness
Test threshold validation logic
Validate CESR encoding/decoding
Test witness communication and receipt collection
Verify multi-sig coordination
Test delegation workflows
Validate KEL initialization
Test with compromised witnesses
Verify duplicity detection
Test threshold boundary conditions
Validate cryptographic primitives