<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE rfc [
  <!ENTITY nbsp    "&#160;">
  <!ENTITY zwsp   "&#8203;">
  <!ENTITY nbhy   "&#8209;">
  <!ENTITY wj     "&#8288;">
]>
<?xml-stylesheet type="text/xsl" href="rfc2629.xslt" ?>
<!-- generated by https://github.com/cabo/kramdown-rfc version 1.7.29 (Ruby 3.2.3) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-wang-acegf-protocol-00" category="info" submissionType="independent" version="3">
  <!-- xml2rfc v2v3 conversion 3.31.0 -->
  <front>
    <title abbrev="ACE-GF">ACE-GF: A Generative Framework for Atomic Cryptographic Entities</title>
    <seriesInfo name="Internet-Draft" value="draft-wang-acegf-protocol-00"/>
    <author fullname="Jian Sheng Wang">
      <organization>Independent Researcher</organization>
      <address>
        <email>jason@mscikdf.com</email>
      </address>
    </author>
    <date year="2025" month="December" day="25"/>
    <keyword>cryptographic identity</keyword>
    <keyword>seed-storage-free</keyword>
    <keyword>key derivation</keyword>
    <keyword>post-quantum cryptography</keyword>
    <keyword>autonomous digital entities</keyword>
    <abstract>
      <?line 30?>

<t>This document specifies the Atomic Cryptographic Entity Generative
Framework (ACE-GF), a cryptographic construction for deriving and
reconstructing stable cryptographic identities from user-held credentials
without requiring persistent storage of a master secret.</t>
      <t>ACE-GF addresses a structural limitation of existing deterministic
key-derivation and identity systems, which rely on long-lived root
secrets and rigid derivation hierarchies.  By separating identity
reconstruction from long-term secret storage, ACE-GF enables stateless
identity recovery, credential rekeying, and context-isolated derivation
across multiple cryptographic algorithms.</t>
      <t>The framework is designed to be application-agnostic and may be applied
to diverse environments such as authentication systems, distributed
identities, secure key management, and cryptographic wallets.  This
document defines the core construction, security properties, and
interoperability considerations of ACE-GF, while application-specific
profiles are defined separately.</t>
    </abstract>
  </front>
  <middle>
    <?line 51?>

<section anchor="introduction">
      <name>Introduction</name>
      <section anchor="background-and-motivation">
        <name>Background and Motivation</name>
        <t>Deterministic key management schemes, such as BIP-32 <strong>[BIP32]</strong> and BIP-39
<strong>[BIP39]</strong>, have simplified key recovery by deriving keys from a single
master seed. However, these schemes rely on the long-term persistent
storage of that seed, which constitutes a single point of failure (SPOF).
If the seed is compromised, all derived keys are irreversibly exposed.</t>
        <t>This storage-centric design is ill-suited for Autonomous Digital Entities
(ADEs), such as AI agents and IoT deployments, which require identity
continuity without centralized trust anchors <strong>[DID-Core]</strong>. ACE-GF
addresses these challenges by decoupling deterministic identity from
long-term secret storage, ensuring that the identity root exists only
ephemerally during the reconstruction process.</t>
      </section>
      <section anchor="core-contributions">
        <name>Core Contributions</name>
        <t>ACE-GF introduces a generative framework for Atomic Cryptographic
Entities (ACE) with the following properties:</t>
        <ul spacing="normal">
          <li>
            <t><strong>Seed-Storage-Free</strong>: The identity root (REV) exists only
ephemerally in memory during active operations.</t>
          </li>
          <li>
            <t><strong>Deterministic Reconstruction</strong>: The REV is reconstructed from a
sealed artifact and authorization credentials.</t>
          </li>
          <li>
            <t><strong>Context Isolation</strong>: Cryptographic keys are isolated across
algorithms (e.g., Ed25519, ML-DSA) using explicit context encoding
<strong>[RFC5869]</strong>.</t>
          </li>
        </ul>
      </section>
    </section>
    <section anchor="conventions-and-terminology">
      <name>Conventions and Terminology</name>
      <section anchor="conventions">
        <name>Conventions</name>
        <t>The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
"SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and
"OPTIONAL" in this document are to be interpreted as described in
BCP 14 <strong>[RFC2119]</strong> <strong>[RFC8174]</strong> when, and only when, they appear in
all capitals, as shown here.</t>
      </section>
      <section anchor="terminology">
        <name>Terminology</name>
        <t>The following terms are used throughout this document:</t>
        <dl>
          <dt><strong>ACE-GF</strong></dt>
          <dd>
            <t>Atomic Cryptographic Entity Generative Framework. A cryptographic
framework that enables deterministic reconstruction of digital
identities from user-held credentials without requiring persistent
storage of a master secret.</t>
          </dd>
          <dt><strong>Credential</strong></dt>
          <dd>
            <t>A user-provided secret input to ACE-GF, such as a passphrase, mnemonic,
or other high-entropy material. Credentials are supplied at the time of
identity reconstruction and are not persistently stored by the
framework.</t>
          </dd>
          <dt><strong>Identity</strong></dt>
          <dd>
            <t>A stable cryptographic identity derived via ACE-GF. An identity may
correspond to one or more public/private key pairs, addresses, or
identifiers, depending on the application context in which ACE-GF is
applied. An Identity in ACE-GF is defined by the ability to reconstruct
the underlying Root Entropy Value (REV); loss of this ability renders the
identity cryptographically unreachable.</t>
          </dd>
          <dt><strong>Context</strong></dt>
          <dd>
            <t>An explicit domain-separation parameter, as defined in the context of
Key Derivation Functions <strong>[NIST-SP800-108]</strong>, used by ACE-GF to ensure
that derived material for different purposes, algorithms, or applications
remains cryptographically isolated.</t>
          </dd>
          <dt><strong>Rekeying</strong></dt>
          <dd>
            <t>The process of updating the authorization metadata (Sealed Artifact) to
associate new credentials with an existing identity while preserving the
underlying identity semantics. Unlike traditional key rotation, ACE-GF
rekeying does not modify the underlying Root Entropy Value (REV).</t>
          </dd>
          <dt><strong>Profile</strong></dt>
          <dd>
            <t>A specification that defines how ACE-GF is applied within a specific
application domain. Profiles may impose additional constraints,
parameters, or output formats, but do not modify the core ACE-GF
construction defined in this document.</t>
          </dd>
          <dt><strong>Wallet Application Profile</strong></dt>
          <dd>
            <t>An application profile that applies ACE-GF to cryptocurrency wallet
systems, including multi-algorithm key derivation and migration from
legacy wallet formats. This profile is illustrative and does not
constrain other applications of ACE-GF.</t>
          </dd>
        </dl>
      </section>
    </section>
    <section anchor="protocol-overview">
      <name>Protocol Overview</name>
      <t>This section provides a high-level, non-normative overview of the ACE-GF
framework. It establishes the mental model for the decoupled architecture
before the detailed protocol specification in Section 4.</t>
      <section anchor="the-decoupled-identity-model">
        <name>The Decoupled Identity Model</name>
        <t>ACE-GF operates on the principle of <strong>Functional Decoupling</strong>. Unlike
traditional deterministic systems that require the persistent storage
of a master seed, ACE-GF separates the identity into two logically
independent pipelines:</t>
        <ul spacing="normal">
          <li>
            <t><strong>Authorization Pipeline (The "Lock")</strong>: Manages the transformation
between a user's volatile <strong>Credential</strong> and a persistent <strong>Sealed
Artifact (SA)</strong>. It controls <em>access</em> to the identity.</t>
          </li>
          <li>
            <t><strong>Identity Pipeline (The "Key")</strong>: Performs deterministic derivation
from the reconstructed <strong>Root Entropy Value (REV)</strong> to various
cryptographic algorithms. It defines the <em>substance</em> of the identity.</t>
          </li>
        </ul>
      </section>
      <section anchor="data-flow-and-transformation">
        <name>Data Flow and Transformation</name>
        <t>The following diagram illustrates how entropy flows from a raw state,
through the authorization lock, and into algorithm-specific keys:</t>
        <artwork><![CDATA[
Authorization Pipeline            Identity Pipeline
----------------------            -----------------
[Credential] + [Salt]
      |
      v
  Argon2id (KDF1)
      |
      v
  K_seal (Symmetric)             Derivation Context (Ctx)
      |                               |
      |                               v
AEAD-Decrypt(SA, K_seal) ----> [  REV  ] ----> HKDF-Expand (KDF2)
                                      |
                                      v
                           [ Algorithm-Specific Keys ]
]]></artwork>
      </section>
      <section anchor="atomic-entity-lifecycle-and-states">
        <name>Atomic Entity Lifecycle and States</name>
        <t>The lifecycle of an ACE is defined by the availability and reachability
of the Root Entropy Value (REV).</t>
        <section anchor="operational-states">
          <name>Operational States</name>
          <table>
            <thead>
              <tr>
                <th align="left">State</th>
                <th align="left">Description</th>
                <th align="left">Persistence</th>
              </tr>
            </thead>
            <tbody>
              <tr>
                <td align="left">
                  <strong>Sealed</strong></td>
                <td align="left">The REV is encrypted within a Sealed Artifact (SA).</td>
                <td align="left">Persistent (Disk/Storage)</td>
              </tr>
              <tr>
                <td align="left">
                  <strong>Reconstructed</strong></td>
                <td align="left">The REV is unsealed and resides in volatile memory.</td>
                <td align="left">Ephemeral (RAM only)</td>
              </tr>
              <tr>
                <td align="left">
                  <strong>Zeroized</strong></td>
                <td align="left">Sensitive material has been wiped. Identity is dormant.</td>
                <td align="left">N/A</td>
              </tr>
              <tr>
                <td align="left">
                  <strong>Unreachable</strong></td>
                <td align="left">The SA is destroyed or Credentials lost.</td>
                <td align="left">Permanent (Cryptographically Unreachable)</td>
              </tr>
            </tbody>
          </table>
        </section>
        <section anchor="lifecycle-sequence">
          <name>Lifecycle Sequence</name>
          <ol spacing="normal" type="1"><li>
              <t><strong>Generate</strong>: A 256-bit REV is sampled from a CSPRNG.</t>
            </li>
            <li>
              <t><strong>Seal</strong>: The REV is encrypted with a key derived from a Credential
and Salt, producing a <strong>Sealed Artifact (SA)</strong>. The raw REV is then zeroized.</t>
            </li>
            <li>
              <t><strong>Unseal</strong>: When an operation is required, the user provides the
Credential to decrypt the SA, restoring the REV to RAM.</t>
            </li>
            <li>
              <t><strong>Derive</strong>: The REV is used to generate keys for specific contexts
(e.g., Ed25519, ML-DSA).</t>
            </li>
            <li>
              <t><strong>Zeroize</strong>: Once complete, the REV and all derived material are
wiped from RAM.</t>
            </li>
          </ol>
        </section>
      </section>
      <section anchor="core-operations-rekeying-and-identity-unreachability">
        <name>Core Operations: Rekeying and Identity Unreachability</name>
        <t>By decoupling authorization from identity, ACE-GF enables critical
operations without changing underlying cryptographic identifiers
(e.g., blockchain addresses):</t>
        <ul spacing="normal">
          <li>
            <t><strong>Stateless Rekeying</strong>: To change a password, the entity unseals the
REV and re-seals it using a <em>new</em> Credential and <em>new</em> Salt. The REV
remains invariant; thus, all derived public keys remain stable.</t>
          </li>
          <li>
            <t><strong>Identity Unreachability</strong>: An identity becomes unreachable if
the Sealed Artifact (SA) or required authorization inputs are lost or
destroyed. Without these, the REV is mathematically lost, rendering the
identity cryptographically unreachable without reliance on external
revocation infrastructure.</t>
          </li>
        </ul>
      </section>
      <section anchor="local-call-sequence">
        <name>Local Call Sequence</name>
        <t>The following sequence describes the typical interaction between an
application ("Caller") and an ACE-GF implementation:</t>
        <artwork><![CDATA[
Caller                         ACE-GF Implementation
  |                                     |
  |----- 1. generate_rev() ------------>| (Samples CSPRNG)
  |<------ [REV in RAM] ----------------|
  |                                     |
  |----- 2. seal_rev(REV, Cred) ------->| (Argon2id + AES-GCM-SIV)
  |<----- [Sealed Artifact (SA)] -------| (Store to disk)
  |                                     |
  |----- 3. zeroize_memory() ---------->| (Wipe RAM)
  |                                     |
  | ... later (identity usage) ...      |
  |                                     |
  |----- 4. unseal_rev(SA, Cred) ------>| (Reconstructs REV in RAM)
  |----- 5. derive_key(REV, Ctx) ------>| (HKDF-SHA256)
  |<----- [Derived Key Material] -------|
  |----- 6. zeroize_memory() ---------->| (Wipe RAM)
]]></artwork>
      </section>
    </section>
    <section anchor="architecture-and-design-principles">
      <name>Architecture and Design Principles</name>
      <t>ACE-GF separates the identity lifecycle into two distinct pipelines:</t>
      <section anchor="identity-pipeline">
        <name>Identity Pipeline</name>
        <t>The identity pipeline manages the transformation from the REV to
application-specific keys. It utilizes a deterministic, one-way
derivation function (HKDF) combined with explicit context strings.
This ensures that compromise of a specific child key (e.g., an
Ed25519 signing key) does not leak information about the REV or
other sibling keys.</t>
      </section>
      <section anchor="authorization-pipeline">
        <name>Authorization Pipeline</name>
        <t>The authorization pipeline manages the secure "sealing" and
"unsealing" of the REV. By utilizing Argon2id for memory-hard
key stretching and AES-GCM-SIV for nonce-misuse resistant
encryption, the framework ensures that the REV is only
accessible when the correct Credential is provided.</t>
      </section>
    </section>
    <section anchor="cryptographic-primitives">
      <name>Cryptographic Primitives</name>
      <t>The ACE-GF framework relies on industry-proven cryptographic primitives.
Implementations MUST strictly adhere to the selection of these primitives
to ensure deterministic consistency across different platforms and
environments.</t>
      <section anchor="kdf1-credential-hashing-argon2id">
        <name>KDF1: Credential Hashing (Argon2id)</name>
        <t>To resist offline brute-force attacks, ACE-GF utilizes the Argon2id
algorithm <strong>[RFC9106]</strong> for stretching user-provided credentials (Cred) into
a symmetric sealing key (K_seal).</t>
        <t>The specific mechanism by which <tt>auth_index</tt> is bound into the sealing
key derivation is an implementation detail, provided that distinct
values of <tt>auth_index</tt> result in cryptographically independent
sealing keys.</t>
        <ul spacing="normal">
          <li>
            <t><strong>Algorithm Selection</strong>: Implementations MUST use the Argon2id variant
(as opposed to Argon2i or Argon2d) to provide optimized protection
against both side-channel attacks and GPU-based cracking.</t>
          </li>
          <li>
            <t><strong>Parameter Negotiation</strong>: Implementations SHOULD support pre-defined
Sealing Profiles that specify memory cost (M), time iterations (T),
and parallelism (P).</t>
          </li>
          <li>
            <t><strong>Salt</strong>: Each Sealed Artifact (SA) MUST include a 128-bit random
salt sampled from a CSPRNG. For the purpose of binding the authorization
epoch, the salt input to the Argon2id function MUST be a 20-byte
sequence, constructed by concatenating the 16-byte random salt and
the 4-byte Big-Endian representation of the auth_index.</t>
          </li>
          <li>
            <t><strong>Credential Encoding</strong>: To ensure deterministic consistency across
different platforms and programming languages, the Authorization
Credential (Cred) MUST be encoded as a UTF-8 string <strong>[RFC3629]</strong> before
being provided as the password input to the Argon2id function.</t>
          </li>
        </ul>
      </section>
      <section anchor="aead-sealing-encryption-aes-gcm-siv">
        <name>AEAD: Sealing Encryption (AES-GCM-SIV)</name>
        <t>ACE-GF employs AES-GCM-SIV <strong>[RFC8452]</strong> for the authenticated encryption
of the Root Entropy Value (REV).</t>
        <t>AES-256-GCM-SIV is used exclusively for authorization sealing of the
Root Entropy Value (REV). It is not part of the Derive operation and
does not correspond to any AlgID value in the Context Identifier
Registry.</t>
        <ul spacing="normal">
          <li>
            <t><strong>Misuse Resistance</strong>: AES-GCM-SIV is selected for its Synthetic
Initialization Vector (SIV) properties. In the specific context of
ACE-GF, given that the REV is a 256-bit high-entropy random value,
using a fixed 96-bit all-zero nonce (N_fixed) is safe under the
assumption that the plaintext (REV) is a uniformly random,
high-entropy value and that the sealing key is not reused for
arbitrary plaintexts. This usage constitutes a restricted,
single-message sealing construction and MUST NOT be generalized beyond
the specific case defined in this document. This assumption holds only
for the sealing of a single, uniformly random REV per Sealed Artifact
(SA) and MUST NOT be extended to sealing arbitrary data or multiple
plaintexts under the same key.</t>
          </li>
          <li>
            <t><strong>Security Assurance</strong>: The use of AES-GCM-SIV prevents confidentiality
leaks even in cases of nonce reuse, eliminating the dependency on
high-fidelity hardware Random Number Generators (RNG) during every
sealing operation.</t>
          </li>
          <li>
            <t><strong>Data Structure</strong>: The encryption process MUST produce a 256-bit
ciphertext and a 128-bit authentication tag.</t>
          </li>
          <li>
            <t><strong>Additional Authenticated Data (AAD)</strong>: To ensure the integrity of
the authorization metadata, the AEAD encryption MUST supply the first
10 bytes of the Sealed Artifact (SA) as Additional Authenticated Data.
This AAD string consists of the Magic Number (4 bytes), Version
(1 byte), ProfileID (1 byte), and <strong>the Authorization Index (4 bytes)</strong>.
All multi-byte fields MUST be encoded in Big-Endian (Network Byte Order).</t>
          </li>
          <li>
            <t><strong>Authenticated Metadata Binding</strong>: Implementations MUST supply the
Authorization Index (<tt>auth_index</tt>) as Additional Authenticated Data
(AAD) to AES-256-GCM-SIV. This ensures that any modification of
authorization metadata results in authentication failure during
unsealing. Failure to bind <tt>auth_index</tt> via AAD constitutes a violation
of this specification.</t>
          </li>
        </ul>
      </section>
      <section anchor="kdf2-key-derivation-hkdf-sha256">
        <name>KDF2: Key Derivation (HKDF-SHA256)</name>
        <t>For deriving algorithm-specific keys from the REV, ACE-GF utilizes
HKDF <strong>[RFC5869]</strong>.</t>
        <ul spacing="normal">
          <li>
            <t><strong>Core Logic</strong>: The standard Extract-then-Expand workflow is followed.</t>
          </li>
          <li>
            <t><strong>Extract</strong>: Map the REV into a cryptographically strong
Pseudorandom Key (PRK).</t>
          </li>
          <li>
            <t><strong>Expand</strong>: Input the structured Context tuple (Ctx) as the
'info' parameter to generate target keys of specific lengths.</t>
          </li>
          <li>
            <t><strong>Hash Function</strong>: SHA-256 MUST be used.</t>
          </li>
          <li>
            <t><strong>Isolation Guarantee</strong>: By explicitly encoding AlgID, Domain, and
Index into the 'info' string, HKDF ensures that the resulting
child keys are computationally independent.</t>
          </li>
        </ul>
      </section>
    </section>
    <section anchor="protocol-specification">
      <name>Protocol Specification</name>
      <t>This section defines the operational procedures for the ACE-GF framework.
All cryptographic operations MUST follow the sequences described herein
to maintain cross-platform interoperability.</t>
      <section anchor="root-entropy-value-rev-generation">
        <name>Root Entropy Value (REV) Generation</name>
        <t>This operation generates the Root Entropy Value (REV), which serves as
the atomic foundation of an ACE identity.</t>
        <section anchor="inputs">
          <name>Inputs</name>
          <ul spacing="normal">
            <li>
              <t>None.</t>
            </li>
          </ul>
        </section>
        <section anchor="outputs">
          <name>Outputs</name>
          <ul spacing="normal">
            <li>
              <t><strong>REV</strong>: A freshly generated Root Entropy Value.</t>
            </li>
            <li>
              <t><strong>Error</strong>: On failure.</t>
            </li>
          </ul>
        </section>
        <section anchor="processing-requirements">
          <name>Processing Requirements</name>
          <ol spacing="normal" type="1"><li>
              <t>The REV MUST be a 256-bit (32-byte) value.</t>
            </li>
            <li>
              <t>The REV MUST be sampled from a cryptographically secure random number
generator (CSPRNG) with uniform distribution.</t>
            </li>
            <li>
              <t>The REV MUST NOT be stored in persistent storage in plaintext form.
It MUST exist only in volatile memory during active use.</t>
            </li>
          </ol>
        </section>
        <section anchor="error-conditions">
          <name>Error Conditions</name>
          <ul spacing="normal">
            <li>
              <t><strong>EntropyUnavailable</strong>: A suitable CSPRNG is not available or fails
to produce sufficient entropy.</t>
            </li>
          </ul>
        </section>
        <section anchor="error-handling-requirements">
          <name>Error Handling Requirements</name>
          <t>If REV generation fails, implementations MUST return an error and MUST
NOT proceed with any sealing or derivation operations.</t>
        </section>
      </section>
      <section anchor="sealing-process-seal">
        <name>Sealing Process (Seal)</name>
        <t>The Sealing process transforms a Root Entropy Value (REV) into a
persistent Sealed Artifact (SA) using an Authorization Credential.</t>
        <section anchor="inputs-1">
          <name>Inputs</name>
          <ul spacing="normal">
            <li>
              <t><strong>REV</strong>: The Root Entropy Value to be protected.</t>
            </li>
            <li>
              <t><strong>Authorization Credential (Cred)</strong>: Secret material used to derive
the sealing key.</t>
            </li>
            <li>
              <t><strong>Sealing Profile</strong>: Identifies the Argon2id parameters to be used.</t>
            </li>
            <li>
              <t><strong>Authorization Index (auth_index)</strong>: A non-negative integer
identifying the logical authorization epoch associated with this
Sealed Artifact.</t>
            </li>
          </ul>
          <t>The Authorization Index (<tt>auth_index</tt>) is not a user-supplied secret and is
intended to be managed transparently by implementations. Its value is carried
within the Sealed Artifact and SHOULD NOT require manual tracking by users.</t>
        </section>
        <section anchor="outputs-1">
          <name>Outputs</name>
          <ul spacing="normal">
            <li>
              <t><strong>Sealed Artifact (SA)</strong>: A serialized artifact containing the
encrypted REV, authorization metadata, and associated parameters.</t>
            </li>
            <li>
              <t><strong>Error</strong>: On failure.</t>
            </li>
          </ul>
        </section>
        <section anchor="processing-steps">
          <name>Processing Steps</name>
          <ol spacing="normal" type="1"><li>
              <t>Generate or select a 128-bit random Salt.</t>
            </li>
            <li>
              <t>Derive the sealing key <tt>K_seal</tt> using Argon2id. <strong>The Cred input MUST
be encoded as a UTF-8 string</strong>. The <tt>salt</tt> parameter input to Argon2id MUST
be the 20-byte concatenation: <tt>Salt (16 bytes) || auth_index
(4 bytes, Big-Endian)</tt>.</t>
            </li>
            <li>
              <t>Encrypt the REV using AES-256-GCM-SIV with <tt>K_seal</tt> and the fixed
nonce <tt>N_fixed</tt>. The AAD input MUST be the 10-byte sequence:
<tt>Magic || Version || ProfileID || auth_index</tt>, where <tt>auth_index</tt> <strong>is
serialized as a 32-bit unsigned integer in Big-Endian
(Network Byte Order)</strong>.</t>
            </li>
            <li>
              <t>Construct the Sealed Artifact (SA) by concatenating the Magic
Number, Version, ProfileID, <tt>auth_index</tt>, Salt, Ciphertext, and
Authentication Tag, as specified in Section 6.1.</t>
            </li>
            <li>
              <t>Zeroize the REV from volatile memory after successful sealing.</t>
            </li>
          </ol>
        </section>
        <section anchor="error-conditions-1">
          <name>Error Conditions</name>
          <ul spacing="normal">
            <li>
              <t><strong>InvalidREV</strong>: The supplied REV does not meet length or format
requirements.</t>
            </li>
            <li>
              <t><strong>ProfileUnsupported</strong>: The specified Sealing Profile is not supported.</t>
            </li>
            <li>
              <t><strong>InvalidAuthIndex</strong>: The provided <tt>auth_index</tt> is malformed or
unsupported.</t>
            </li>
            <li>
              <t><strong>SealingFailure</strong>: Encryption or key derivation fails.</t>
            </li>
          </ul>
        </section>
        <section anchor="error-handling-requirements-1">
          <name>Error Handling Requirements</name>
          <t>If sealing fails, implementations MUST return an error and MUST ensure
that the REV and any intermediate key material are not retained in
memory.</t>
        </section>
      </section>
      <section anchor="unsealing-process-unseal">
        <name>Unsealing Process (Unseal)</name>
        <t>The Unsealing process reconstructs the Root Entropy Value (REV) from a
provided Sealed Artifact (SA) and Authorization Credential.</t>
        <section anchor="inputs-2">
          <name>Inputs</name>
          <ul spacing="normal">
            <li>
              <t><strong>Sealed Artifact (SA)</strong>: A serialized artifact containing the
encrypted REV and associated metadata.</t>
            </li>
            <li>
              <t><strong>Authorization Credential (Cred)</strong>: User- or system-provided secret
material required to derive the sealing key.</t>
            </li>
          </ul>
        </section>
        <section anchor="outputs-2">
          <name>Outputs</name>
          <ul spacing="normal">
            <li>
              <t><strong>REV</strong>: The reconstructed Root Entropy Value, on success.</t>
            </li>
            <li>
              <t><strong>Error</strong>: On failure.</t>
            </li>
          </ul>
        </section>
        <section anchor="processing-steps-1">
          <name>Processing Steps</name>
          <ol spacing="normal" type="1"><li>
              <t><strong>Parse</strong>: Extract the Magic Number, Version, ProfileID,
<tt>auth_index</tt>, Salt, Ciphertext, and Authentication Tag from the SA.
The Magic Number and Version MUST be validated. Failure MUST result
in <tt>InvalidFormat</tt>.</t>
            </li>
            <li>
              <t><strong>Derive</strong>: Recompute the sealing key <tt>K_seal</tt> using the <strong>UTF-8
encoded</strong> Credential, extracted Salt, <tt>auth_index</tt>, and the parameters
associated with the ProfileID.</t>
            </li>
            <li>
              <t><strong>Decrypt</strong>: Execute AES-256-GCM-SIV decryption on the Ciphertext
using <tt>K_seal</tt>, the fixed nonce <tt>N_fixed</tt>, and the Authentication Tag.
The same Additional Authenticated Data (AAD) used during sealing
(<strong>constructed by concatenating Magic, Version, ProfileID, and the
Big-Endian encoded</strong> <tt>auth_index</tt>) MUST be supplied.</t>
            </li>
          </ol>
        </section>
        <section anchor="error-conditions-2">
          <name>Error Conditions</name>
          <ul spacing="normal">
            <li>
              <t><strong>AuthenticationFailure</strong>: Authentication tag verification fails.</t>
            </li>
            <li>
              <t><strong>InvalidFormat</strong>: The SA cannot be parsed or contains unsupported
version or profile identifiers.</t>
            </li>
            <li>
              <t><strong>ProfileUnsupported</strong>: The referenced ProfileID is not implemented.</t>
            </li>
            <li>
              <t><strong>AuthorizationMismatch</strong>: The derived sealing key does not match
the authorization metadata embedded in the SA.</t>
            </li>
          </ul>
        </section>
        <section anchor="error-handling-requirements-2">
          <name>Error Handling Requirements</name>
          <t>If any error occurs, implementations MUST return an error and MUST NOT
release any portion of the decrypted REV. Implementations SHOULD ensure
that error handling does not introduce observable timing differences
that could leak information about the Credential or <tt>K_seal</tt>.</t>
        </section>
      </section>
      <section anchor="key-derivation-function-derive">
        <name>Key Derivation Function (Derive)</name>
        <t>The Derive operation deterministically produces algorithm-specific
cryptographic key material from a reconstructed Root Entropy Value (REV).</t>
        <section anchor="inputs-3">
          <name>Inputs</name>
          <ul spacing="normal">
            <li>
              <t><strong>REV</strong>: The reconstructed Root Entropy Value.</t>
            </li>
            <li>
              <t><strong>Context Tuple (Ctx)</strong>: A structured context specifying algorithm,
usage domain, and key index.</t>
            </li>
            <li>
              <t><strong>Output Length</strong>: The required length of derived key material.</t>
            </li>
          </ul>
        </section>
        <section anchor="outputs-3">
          <name>Outputs</name>
          <ul spacing="normal">
            <li>
              <t><strong>DerivedKey</strong>: Algorithm-specific key material.</t>
            </li>
            <li>
              <t><strong>Error</strong>: On failure.</t>
            </li>
          </ul>
        </section>
        <section anchor="processing-steps-2">
          <name>Processing Steps</name>
          <ol spacing="normal" type="1"><li>
              <t>Perform HKDF-Extract using the REV as the input key material (IKM)
to produce a pseudorandom key (PRK). The <tt>salt</tt> parameter for
HKDF-Extract MUST be a 32-byte string of all zeros.</t>
            </li>
            <li>
              <t>Perform HKDF-Expand using the PRK and the serialized Context Tuple
(<tt>Ctx</tt>) as the <tt>info</tt> parameter to generate key material of the
requested length.</t>
            </li>
            <li>
              <t>Map the derived output to algorithm-specific key material according
to the target algorithm's requirements.</t>
            </li>
          </ol>
        </section>
        <section anchor="error-conditions-3">
          <name>Error Conditions</name>
          <ul spacing="normal">
            <li>
              <t><strong>InvalidContext</strong>: The Context Tuple is malformed or unsupported.</t>
            </li>
            <li>
              <t><strong>DerivationFailure</strong>: HKDF expansion fails or produces invalid output
for the target algorithm.</t>
            </li>
          </ul>
        </section>
        <section anchor="error-handling-requirements-3">
          <name>Error Handling Requirements</name>
          <t>On failure, implementations MUST return an error and MUST NOT release
partial or malformed key material. The REV MUST remain protected in
volatile memory and SHOULD be zeroized once derivation operations are
complete.</t>
        </section>
      </section>
    </section>
    <section anchor="data-structures-and-encodings">
      <name>Data Structures and Encodings</name>
      <section anchor="sealed-artifact-sa-binary-format-version-0x01">
        <name>Sealed Artifact (SA) Binary Format (Version 0x01)</name>
        <t>This section defines the binary encoding of the Sealed Artifact (SA)
for protocol version 0x01. The SA encapsulates the encrypted Root
Entropy Value (REV) together with all metadata required for deterministic
reconstruction.</t>
        <t>All multi-byte integer fields MUST be encoded in Big-Endian (Network
Byte Order). Implementations MUST reject any SA whose total length does
not exactly match the expected length for the indicated Version.</t>
        <section anchor="sa-binary-layout-version-0x01">
          <name>SA Binary Layout (Version 0x01)</name>
          <table>
            <thead>
              <tr>
                <th align="left">Offset</th>
                <th align="left">Length</th>
                <th align="left">Field</th>
                <th align="left">Description</th>
              </tr>
            </thead>
            <tbody>
              <tr>
                <td align="left">0</td>
                <td align="left">4</td>
                <td align="left">Magic Number</td>
                <td align="left">Fixed bytes: 0x41 0x43 0x45 0x00 ("ACE\0")</td>
              </tr>
              <tr>
                <td align="left">4</td>
                <td align="left">1</td>
                <td align="left">Version</td>
                <td align="left">Protocol version (0x01)</td>
              </tr>
              <tr>
                <td align="left">5</td>
                <td align="left">1</td>
                <td align="left">ProfileID</td>
                <td align="left">Identifier for Sealing Profile</td>
              </tr>
              <tr>
                <td align="left">6</td>
                <td align="left">4</td>
                <td align="left">auth_index</td>
                <td align="left">Authorization Index (Unsigned 32-bit)</td>
              </tr>
              <tr>
                <td align="left">10</td>
                <td align="left">16</td>
                <td align="left">Salt</td>
                <td align="left">Random salt for Argon2id</td>
              </tr>
              <tr>
                <td align="left">26</td>
                <td align="left">32</td>
                <td align="left">Ciphertext</td>
                <td align="left">AES-256-GCM-SIV encrypted REV</td>
              </tr>
              <tr>
                <td align="left">58</td>
                <td align="left">16</td>
                <td align="left">Tag</td>
                <td align="left">Authentication Tag (MAC)</td>
              </tr>
            </tbody>
          </table>
          <t><strong>Total Length: 74 bytes</strong></t>
        </section>
        <section anchor="field-semantics">
          <name>Field Semantics</name>
          <ul spacing="normal">
            <li>
              <t><strong>auth_index</strong>:
The Authorization Index represents an authorization epoch associated
with the Sealed Artifact. Different values of <tt>auth_index</tt> under the
same REV represent distinct authorization states. Implementations MUST
ensure that Sealed Artifacts generated with different <tt>auth_index</tt>
values are cryptographically independent and mutually non-decryptable.</t>
            </li>
          </ul>
        </section>
      </section>
      <section anchor="sealing-profiles">
        <name>Sealing Profiles</name>
        <t>Sealing Profiles define the cost parameters for the Argon2id function. This
allows ACE-GF to scale from resource-constrained mobile devices to
high-security server environments.</t>
        <table>
          <thead>
            <tr>
              <th align="left">Profile ID</th>
              <th align="left">Label</th>
              <th align="left">Memory (MiB)</th>
              <th align="left">Iterations (T)</th>
              <th align="left">Parallelism (P)</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">0x01</td>
              <td align="left">Mobile</td>
              <td align="left">64</td>
              <td align="left">3</td>
              <td align="left">1</td>
            </tr>
            <tr>
              <td align="left">0x02</td>
              <td align="left">Standard</td>
              <td align="left">256</td>
              <td align="left">4</td>
              <td align="left">2</td>
            </tr>
            <tr>
              <td align="left">0x03</td>
              <td align="left">Paranoid</td>
              <td align="left">1024</td>
              <td align="left">8</td>
              <td align="left">4</td>
            </tr>
          </tbody>
        </table>
        <t>Implementations MUST support at least the 'Standard' (0x02) profile. The
'Paranoid' profile is RECOMMENDED for high-value administrative identities.</t>
      </section>
      <section anchor="context-labels">
        <name>Context Labels</name>
        <t>To ensure computational independence between different cryptographic
algorithms, the <tt>AlgID</tt> field in the Context Tuple MUST use the following
initial registry. This ensures that a key derived for Ed25519 cannot
be mistakenly used or mathematically linked to a Secp256k1 key.</t>
        <t>Usage Domains describe the functional intent of derived key material
and do not override algorithm-specific restrictions defined elsewhere
in this document.</t>
        <section anchor="algorithm-identifiers-algid">
          <name>Algorithm Identifiers (AlgID)</name>
          <table>
            <thead>
              <tr>
                <th align="left">AlgID</th>
                <th align="left">Algorithm Name</th>
                <th align="left">Reference</th>
              </tr>
            </thead>
            <tbody>
              <tr>
                <td align="left">0x0001</td>
                <td align="left">Ed25519</td>
                <td align="left">
                  <strong>[RFC8032]</strong></td>
              </tr>
              <tr>
                <td align="left">0x0002</td>
                <td align="left">Secp256k1 (ECDSA)</td>
                <td align="left">
                  <strong>[SEC2]</strong></td>
              </tr>
              <tr>
                <td align="left">0x0003</td>
                <td align="left">X25519 (Diffie-Hellman)</td>
                <td align="left">
                  <strong>[RFC7748]</strong></td>
              </tr>
              <tr>
                <td align="left">0x0004</td>
                <td align="left">ML-DSA (Dilithium-PQC)</td>
                <td align="left">
                  <strong>[FIPS204]</strong></td>
              </tr>
              <tr>
                <td align="left">0x0005</td>
                <td align="left">ML-KEM (Kyber-PQC)</td>
                <td align="left">
                  <strong>[FIPS203]</strong></td>
              </tr>
            </tbody>
          </table>
        </section>
        <section anchor="usage-domains-domain">
          <name>Usage Domains (Domain)</name>
          <t>The 8-bit Domain field separates keys by their functional intent:</t>
          <ul spacing="normal">
            <li>
              <t><strong>0x01 (Signing)</strong>: Primary identity signatures.</t>
            </li>
            <li>
              <t><strong>0x02 (Encryption)</strong>: Data at rest or in transit.</t>
            </li>
            <li>
              <t><strong>0x03 (Authentication)</strong>: Challenge-response protocols.</t>
            </li>
            <li>
              <t><strong>0x04 (Key Wrapping)</strong>: Protecting other sub-keys.</t>
            </li>
          </ul>
        </section>
      </section>
      <section anchor="context-tuple-encoding">
        <name>Context Tuple Encoding</name>
        <t>The Context Tuple (Ctx) is a compact, fixed-length binary structure
used as the <tt>info</tt> parameter for HKDF expansion. All fields are
encoded in Big-Endian (Network Byte Order).</t>
        <section anchor="context-tuple-binary-layout">
          <name>Context Tuple Binary Layout</name>
          <table>
            <thead>
              <tr>
                <th align="left">Offset</th>
                <th align="left">Length</th>
                <th align="left">Field</th>
                <th align="left">Description</th>
              </tr>
            </thead>
            <tbody>
              <tr>
                <td align="left">0</td>
                <td align="left">2</td>
                <td align="left">AlgID</td>
                <td align="left">Algorithm Identifier</td>
              </tr>
              <tr>
                <td align="left">2</td>
                <td align="left">1</td>
                <td align="left">Domain</td>
                <td align="left">Usage Domain</td>
              </tr>
              <tr>
                <td align="left">3</td>
                <td align="left">4</td>
                <td align="left">Index</td>
                <td align="left">Key Index (unsigned integer)</td>
              </tr>
            </tbody>
          </table>
          <t><strong>Total Length: 7 bytes.</strong></t>
        </section>
        <section anchor="encoding-rules">
          <name>Encoding Rules</name>
          <ul spacing="normal">
            <li>
              <t>The AlgID field MUST correspond to a registered value in the
ACE-GF Context Identifier Registry.</t>
            </li>
            <li>
              <t>The Domain field MUST correspond to a registered Usage Domain.</t>
            </li>
            <li>
              <t>The Index field is an unsigned 32-bit integer and MAY be incremented
to derive multiple independent keys within the same algorithm and
domain.</t>
            </li>
          </ul>
        </section>
      </section>
    </section>
    <section anchor="operational-considerations-and-identity-lifecycle">
      <name>Operational Considerations and Identity Lifecycle</name>
      <t>This section describes operational aspects of deploying and managing
Atomic Cryptographic Entities (ACEs) using the ACE-GF framework. It
focuses on lifecycle management, authorization updates, identity
unreachability semantics, and deployment considerations. This section
is informational and does not introduce new protocol requirements
beyond those specified elsewhere in this document.</t>
      <t>One of the primary advantages of the ACE-GF framework is its ability to
manage the full identity lifecycle without requiring changes to the
underlying Root Entropy Value (REV). Authorization material may be
updated or rendered unavailable independently, while derived
cryptographic identifiers remain stable as long as the REV remains
reachable.</t>
      <section anchor="sealed-artifact-persistence-and-mobility">
        <name>Sealed Artifact Persistence and Mobility</name>
        <t>The Sealed Artifact (SA) is a persistent, encrypted authorization artifact,
not a cryptographic root. Possession of an SA alone does not enable identity
reconstruction without the corresponding Authorization Credential.</t>
        <t>Because the SA contains no plaintext secret material and reveals no information
about the Root Entropy Value (REV), it MAY be stored, replicated, and transported
using untrusted storage mechanisms, including public cloud storage or
distributed content-addressable systems.</t>
        <t>Loss of all copies of the SA renders the identity cryptographically unreachable.
Applications SHOULD treat the SA as durable authorization metadata and apply
backup and redundancy strategies appropriate to their threat model.</t>
      </section>
      <section anchor="stateless-credential-rotation">
        <name>Stateless Credential Rotation</name>
        <t>ACE-GF supports stateless credential rotation, allowing an entity to
update its Authorization Credential (e.g., changing a password or
authorization factor) without altering the underlying Root Entropy
Value (REV).</t>
        <t>Because the REV is the sole source of all derived cryptographic keys,
this process preserves identity continuity. No derived public keys,
addresses, or identifiers need to be regenerated or re-announced.</t>
        <t>The rotation process is performed as follows:</t>
        <ol spacing="normal" type="1"><li>
            <t><strong>Unseal</strong>: Use the current Authorization Credential and the existing
Sealed Artifact (SA) to reconstruct the REV in volatile memory.</t>
          </li>
          <li>
            <t><strong>Generate New Salt</strong>: Sample a new 128-bit random salt value.</t>
          </li>
          <li>
            <t><strong>Re-Seal</strong>: Perform the Sealing Process (as defined in Section 4.2)
using the new Authorization Credential and the new salt, while
maintaining the same REV.</t>
          </li>
          <li>
            <t><strong>Commit</strong>: Replace the previous SA with the newly generated SA.</t>
          </li>
        </ol>
        <t>This operation is stateless with respect to identity semantics. No
persistent state other than the updated SA is required, and no protocol-
visible identity attributes are modified.</t>
      </section>
      <section anchor="logical-revocation-via-authorization-index">
        <name>Logical Revocation via Authorization Index</name>
        <t>ACE-GF defines <em>logical revocation</em> as the ability to render a previously
valid Sealed Artifact (SA) unusable without modifying the underlying
Root Entropy Value (REV).</t>
        <t>An ACE-GF Identity is defined by the ability to reconstruct the REV.
Logical revocation invalidates specific authorization states while
preserving the identity itself and all derived cryptographic identifiers.</t>
        <section anchor="mechanism">
          <name>Mechanism</name>
          <t>Logical revocation is achieved by updating the Authorization Index
(<tt>auth_index</tt>) and re-sealing the same REV:</t>
          <ol spacing="normal" type="1"><li>
              <t>The current SA is unsealed to reconstruct the REV in volatile memory.</t>
            </li>
            <li>
              <t>The <tt>auth_index</tt> value is incremented or otherwise updated according
to application policy.</t>
            </li>
            <li>
              <t>The REV is re-sealed under the new <tt>auth_index</tt>, producing a new SA.</t>
            </li>
            <li>
              <t>The previous SA is discarded or rendered inaccessible.</t>
            </li>
          </ol>
          <t>Because <tt>auth_index</tt> is cryptographically bound into the sealing key
derivation, any SA created under a prior authorization index becomes
undecryptable once the active index changes.</t>
        </section>
        <section anchor="properties">
          <name>Properties</name>
          <ul spacing="normal">
            <li>
              <t>Logical revocation does not require regeneration of the REV.</t>
            </li>
            <li>
              <t>Logical revocation does not require identifier rotation (e.g.,
blockchain address changes).</t>
            </li>
            <li>
              <t>Logical revocation does not rely on external revocation infrastructure
such as CRLs or OCSP.</t>
            </li>
            <li>
              <t>The effect of logical revocation is immediate and purely
cryptographic.</t>
            </li>
          </ul>
        </section>
        <section anchor="scope-and-policy">
          <name>Scope and Policy</name>
          <t>This specification defines the cryptographic mechanism required to
support logical revocation. Policies governing authorization index
management, distribution of updated Sealed Artifacts, recovery
procedures, and governance models are application-specific and out of
scope.</t>
        </section>
        <section anchor="authorization-index-synchronization">
          <name>Authorization Index Synchronization</name>
          <t>In multi-device or multi-instance deployments, applications are responsible for
ensuring that the most recent Sealed Artifact is distributed to all authorized
endpoints. Implementations SHOULD treat the Sealed Artifact as versioned
authorization state and ensure that stale artifacts are replaced when
authorization updates occur.</t>
          <t>The ACE-GF protocol does not require global state synchronization and does not
define mechanisms for resolving concurrent authorization updates.</t>
        </section>
      </section>
      <section anchor="failure-modes-and-recovery-considerations">
        <name>Failure Modes and Recovery Considerations</name>
        <t>Failure to reconstruct the REV may occur due to incorrect credentials,
corrupted Sealed Artifacts, unsupported sealing profiles, or intentional
revocation actions.</t>
        <t>Implementations SHOULD treat all unsealing failures as indistinguishable
from an external observability perspective and MUST NOT leak partial
information about the REV or derived keys in failure scenarios.</t>
        <t>Recovery is possible only if sufficient authorization material remains
available. Loss of all authorization inputs results in permanent
unreachability of the REV.</t>
      </section>
      <section anchor="storage-and-ephemeral-state-considerations">
        <name>Storage and Ephemeral State Considerations</name>
        <t>The Root Entropy Value (REV) is intended to exist only in volatile memory
during active operations and MUST NOT be persistently stored.</t>
        <t>The Sealed Artifact (SA) is the sole persistent representation required
to reconstruct an ACE identity. It MAY be stored, transmitted, or backed
up using conventional storage mechanisms, subject to application-specific
security policies.</t>
        <t>Implementations SHOULD ensure timely zeroization of all sensitive
material, including the REV, sealing keys, and intermediate buffers,
after use. Where available, hardware-backed isolation mechanisms such as
Trusted Execution Environments (TEEs) are RECOMMENDED to reduce exposure
risk during reconstruction and derivation operations.</t>
      </section>
      <section anchor="migration-considerations">
        <name>Migration Considerations</name>
        <t>Existing cryptographic identities MAY be migrated into the ACE-GF
framework by treating a legacy high-entropy private key as a Root
Entropy Value (REV) and sealing it using standard ACE-GF procedures.</t>
        <t>Such migrations are OPTIONAL and profile-dependent. Implementations
SHOULD document any deviations from native ACE-GF derivation semantics
and SHOULD clearly distinguish between natively generated ACE-GF
identities and migrated identities when relevant.</t>
      </section>
    </section>
    <section anchor="security-considerations">
      <name>Security Considerations</name>
      <t>The security of the ACE-GF framework depends on the strength of the underlying
cryptographic primitives and the rigor of the implementation environment.</t>
      <section anchor="entropy-requirements-for-credentials">
        <name>Entropy Requirements for Credentials</name>
        <t>The security of the Sealed Artifact (SA) is directly proportional to the
entropy of the Authorization Credential (Cred).</t>
        <ol spacing="normal" type="1"><li>
            <t><strong>Minimum Entropy</strong>: Human-provided credentials SHOULD be long, randomly
generated passphrases managed by password managers. Machine-generated
credentials MUST provide at least 128 bits of entropy.</t>
          </li>
          <li>
            <t><strong>Entropy Stretching</strong>: While Argon2id provides significant resistance
against brute-force, it cannot compensate for extremely weak secrets
(e.g., short, common passwords).</t>
          </li>
          <li>
            <t><strong>Machine-Generated Credentials</strong>: For Autonomous Digital Entities (ADEs),
credentials MUST be generated using a CSPRNG.</t>
          </li>
        </ol>
      </section>
      <section anchor="protection-of-volatile-memory-and-memory-management">
        <name>Protection of Volatile Memory and Memory Management</name>
        <t>Since the Root Entropy Value (REV) serves as the atomic foundation for all
derived identities, its exposure in volatile memory constitutes a single
point of failure. An attacker capable of observing the memory space of an
active ACE-GF implementation could compromise the entire identity
hierarchy derived from that REV.</t>
        <section anchor="isolated-execution-environments-iee">
          <name>Isolated Execution Environments (IEE)</name>
          <t>It is STRONGLY RECOMMENDED that implementations perform the Unsealing
(Section 4.3) and Derivation (Section 4.4) operations within an Isolated
Execution Environment (IEE). An IEE is a platform-provided security
boundary that ensures:</t>
          <ul spacing="normal">
            <li>
              <t><strong>Memory Confidentiality</strong>: Sensitive material, including the REV,
Authorization Credentials, and the Sealing Key (K_seal), MUST NOT be
observable by the host operating system, hypervisor, or other
unauthorized processes.</t>
            </li>
            <li>
              <t><strong>Execution Integrity</strong>: The cryptographic logic of ACE-GF MUST be
protected from unauthorized modification during runtime.</t>
            </li>
            <li>
              <t><strong>Isolation Guarantee</strong>: Even in the event of a total compromise of the
Host OS, the secrets within the IEE remain protected.</t>
            </li>
          </ul>
          <t>Implementations SHOULD leverage hardware-backed technologies to satisfy
these requirements. Examples of such environments include, but are not
limited to:
* <strong>Hardware Enclaves</strong>: Intel SGX, RISC-V Keystone.
* <strong>Trust Zones</strong>: ARM TrustZone.
* <strong>Virtualization-based Security</strong>: AWS Nitro Enclaves, Azure
Confidential Computing (SNP/TDX).</t>
        </section>
        <section anchor="memory-hardening-and-zeroization">
          <name>Memory Hardening and Zeroization</name>
          <t>When a hardware-isolated IEE is unavailable, or as a defense-in-depth
measure within an IEE, implementations MUST adhere to the following
memory management principles to mitigate "cold boot" attacks or memory
forensics:</t>
          <ol spacing="normal" type="1"><li>
              <t><strong>Zeroization</strong>: All volatile memory buffers containing the REV,
K_seal, or raw Authorization Credentials MUST be overwritten with
zeros (Zeroized) immediately following the conclusion of an operation
or upon process termination. Implementations MUST use platform-specific
mechanisms (e.g., <tt>memset_s</tt> in C, <tt>Zeroize</tt> trait in Rust) to ensure
that compilers do not optimize away these routines.</t>
            </li>
            <li>
              <t><strong>Anti-Swapping</strong>: Memory regions used for sensitive material SHOULD
be marked as non-swappable to prevent them from being written to
persistent storage (e.g., using <tt>mlock()</tt> on POSIX or <tt>VirtualLock()</tt>
on Windows). This prevents secrets from being leaked via swap files,
core dumps, or hibernation images.</t>
            </li>
            <li>
              <t><strong>Side-Channel Mitigation</strong>: Implementations MUST ensure that the
transformation logic, especially the handling of <tt>K_seal</tt> and <tt>REV</tt>,
is resistant to timing attacks and other micro-architectural
side-channels. The use of constant-time cryptographic primitives is
REQUIRED.</t>
            </li>
            <li>
              <t><strong>Process Isolation</strong>: ACE-GF operations SHOULD be executed in a
dedicated process with minimal privileges (least privilege principle)
to reduce the attack surface from other resident applications.</t>
            </li>
          </ol>
        </section>
      </section>
      <section anchor="resistance-to-brute-force-attacks">
        <name>Resistance to Brute-Force Attacks</name>
        <t>The use of Argon2id allows ACE-GF to scale its defense according to the
threat model. The following table provides a theoretical analysis of
attack costs across different Profiles:</t>
        <table>
          <thead>
            <tr>
              <th align="left">Profile</th>
              <th align="left">Target Device</th>
              <th align="left">Attacker Cost Assumption (Memory-Hardness)</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">Mobile</td>
              <td align="left">Low-Power IoT</td>
              <td align="left">Balanced for battery life; vulnerable to high-end GPU clusters.</td>
            </tr>
            <tr>
              <td align="left">Standard</td>
              <td align="left">Desktop/Web</td>
              <td align="left">Resistant to mid-scale commodity GPU attacks.</td>
            </tr>
            <tr>
              <td align="left">Paranoid</td>
              <td align="left">Server/HSM</td>
              <td align="left">Prohibitively expensive for all but state-actor level adversaries due to high memory bandwidth requirements (1GB+ per attempt).</td>
            </tr>
          </tbody>
        </table>
      </section>
      <section anchor="post-quantum-transition-and-hybrid-security">
        <name>Post-Quantum Transition and Hybrid Security</name>
        <t>ACE-GF is designed with "Algorithm Agility" to survive the transition to
Post-Quantum Cryptography (PQC).</t>
        <ol spacing="normal" type="1"><li>
            <t><strong>Context-Isolated PQC</strong>: As defined in Section 5.3, the framework
allows the derivation of PQC keys (e.g., ML-DSA) alongside classical
keys (e.g., Ed25519) from the same REV.</t>
          </li>
          <li>
            <t><strong>Hybrid Derivation</strong>: For maximum security during the transition
period, implementations MAY use a hybrid approach where a classical
signature and a PQC signature are required to authorize a single
action.</t>
          </li>
          <li>
            <t><strong>Future-Proofing REV</strong>: Because the REV is a high-entropy (256-bit)
random value, it provides an effective 128-bit preimage security margin
against generic quantum search attacks (e.g., Grover-style algorithms
[Grover1996]), under standard complexity assumptions.</t>
          </li>
        </ol>
      </section>
      <section anchor="note-on-aes-gcm-siv-and-fixed-nonce">
        <name>Note on AES-GCM-SIV and Fixed Nonce</name>
        <t>The use of a fixed all-zero nonce (N_fixed) in Section 4.2.2 is safe
specifically because the plaintext being encrypted (the REV) is
guaranteed to be a unique, high-entropy 256-bit value for every
Sealed Artifact. Therefore, the SIV (Synthetic Initialization Vector)
derivation will inherently produce unique sub-keys for the underlying
CTR mode, preventing the catastrophic key-stream reuse associated
with standard AES-GCM.</t>
      </section>
    </section>
    <section anchor="iana-considerations">
      <name>IANA Considerations</name>
      <t>This section describes a proposed registry structure. Creation of IANA
registries is contingent on the publication status of this document.</t>
      <t>This document requests IANA to create three new registries for the Atomic
Cryptographic Entity Generative Framework (ACE-GF).</t>
      <t>The following registries are defined for future extensibility of the
ACE-GF framework.</t>
      <section anchor="ace-gf-sealing-profile-registry">
        <name>ACE-GF Sealing Profile Registry</name>
        <t>IANA is requested to create a new registry entitled "ACE-GF Sealing
Profiles". This registry manages the parameter sets for the credential
hashing function (Argon2id).</t>
        <t>The registration policy for this registry is "Specification Required"
as defined in <strong>[RFC8126]</strong>.</t>
        <t>Initial entries for this registry are as follows:</t>
        <table>
          <thead>
            <tr>
              <th align="left">Profile ID</th>
              <th align="left">Label</th>
              <th align="left">Memory (MiB)</th>
              <th align="left">Iterations (T)</th>
              <th align="left">Parallelism (P)</th>
              <th align="left">Reference</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">0x01</td>
              <td align="left">Mobile</td>
              <td align="left">64</td>
              <td align="left">3</td>
              <td align="left">1</td>
              <td align="left">[This RFC]</td>
            </tr>
            <tr>
              <td align="left">0x02</td>
              <td align="left">Standard</td>
              <td align="left">256</td>
              <td align="left">4</td>
              <td align="left">2</td>
              <td align="left">[This RFC]</td>
            </tr>
            <tr>
              <td align="left">0x03</td>
              <td align="left">Paranoid</td>
              <td align="left">1024</td>
              <td align="left">8</td>
              <td align="left">4</td>
              <td align="left">[This RFC]</td>
            </tr>
            <tr>
              <td align="left">0x04-0xFF</td>
              <td align="left">Unassigned</td>
              <td align="left"> </td>
              <td align="left"> </td>
              <td align="left"> </td>
              <td align="left"> </td>
            </tr>
          </tbody>
        </table>
      </section>
      <section anchor="ace-gf-context-identifier-registry">
        <name>ACE-GF Context Identifier Registry</name>
        <t>IANA is requested to create a new registry entitled "ACE-GF Context
Identifiers". This registry manages the Algorithm Identifiers (AlgID)
used in the key derivation context string.</t>
        <t>The registration policy for this registry is "Expert Review" as defined
in <strong>[RFC8126]</strong>.</t>
        <t>Initial entries for this registry are as follows:</t>
        <table>
          <thead>
            <tr>
              <th align="left">AlgID</th>
              <th align="left">Algorithm Name</th>
              <th align="left">Reference</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">0x0001</td>
              <td align="left">Ed25519</td>
              <td align="left">[RFC8032]</td>
            </tr>
            <tr>
              <td align="left">0x0002</td>
              <td align="left">Secp256k1</td>
              <td align="left">[SEC2]</td>
            </tr>
            <tr>
              <td align="left">0x0003</td>
              <td align="left">X25519</td>
              <td align="left">[RFC7748]</td>
            </tr>
            <tr>
              <td align="left">0x0004</td>
              <td align="left">ML-DSA (Dilithium)</td>
              <td align="left">[FIPS204]</td>
            </tr>
            <tr>
              <td align="left">0x0005</td>
              <td align="left">ML-KEM (Kyber)</td>
              <td align="left">[FIPS203]</td>
            </tr>
            <tr>
              <td align="left">0x0006-0xFFFF</td>
              <td align="left">Unassigned</td>
              <td align="left"> </td>
            </tr>
          </tbody>
        </table>
      </section>
      <section anchor="ace-gf-usage-domain-registry">
        <name>ACE-GF Usage Domain Registry</name>
        <t>IANA is requested to create a new registry entitled "ACE-GF Usage Domains".
This registry manages the 8-bit Domain field.</t>
        <table>
          <thead>
            <tr>
              <th align="left">Domain ID</th>
              <th align="left">Description</th>
              <th align="left">Reference</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">0x01</td>
              <td align="left">Signing</td>
              <td align="left">[This RFC]</td>
            </tr>
            <tr>
              <td align="left">0x02</td>
              <td align="left">Encryption</td>
              <td align="left">[This RFC]</td>
            </tr>
            <tr>
              <td align="left">0x03</td>
              <td align="left">Authentication</td>
              <td align="left">[This RFC]</td>
            </tr>
            <tr>
              <td align="left">0x04</td>
              <td align="left">Key Wrapping</td>
              <td align="left">[This RFC]</td>
            </tr>
            <tr>
              <td align="left">0x05-0xFF</td>
              <td align="left">Unassigned</td>
              <td align="left"> </td>
            </tr>
          </tbody>
        </table>
      </section>
    </section>
    <section anchor="test-vectors">
      <name>Test Vectors</name>
      <t>This section defines test vectors intended to verify the correctness
and interoperability of ACE-GF implementations.</t>
      <t>The test vectors in Sections 10.1 through 10.3 define normative behavior
with respect to input handling, parameter binding, and deterministic
reconstruction. Ciphertext values are illustrative and not required to
match across implementations unless explicitly specified.</t>
      <t>Certain encrypted outputs are omitted in this version and marked as
TBD. These vectors validate structure, parameter selection, and
deterministic REV reconstruction rather than ciphertext equality.</t>
      <section anchor="basic-protocol-test-vectors">
        <name>Basic Protocol Test Vectors</name>
        <section anchor="standard-sealing-profile">
          <name>Standard Sealing Profile</name>
          <t>This test case uses the "Standard" Sealing Profile (0x02).</t>
          <ul spacing="normal">
            <li>
              <t><strong>Credential</strong>: "password123"</t>
            </li>
            <li>
              <t><strong>Salt</strong>: 0102030405060708090a0b0c0d0e0f10</t>
            </li>
            <li>
              <t><strong>Argon2id Parameters</strong>: M=256MiB, T=4, P=2</t>
            </li>
            <li>
              <t><strong>REV</strong>:
f0e1d2c3b4a5968778695a4b3c2d1e0f00112233445566778899aabbccddeeff</t>
            </li>
          </ul>
          <t><strong>Output - Sealed Artifact (SA)</strong>:
41434500 (Magic)
01       (Version)
02       (ProfileID)
00000001 (auth_index)
0102030405060708090a0b0c0d0e0f10 (Salt)
[Insert 32-byte Hex Ciphertext here]
[Insert 16-byte Hex Tag here]</t>
        </section>
      </section>
      <section anchor="cross-platform-and-encoding-consistency">
        <name>Cross-Platform and Encoding Consistency</name>
        <section anchor="utf-8-credential-handling">
          <name>UTF-8 Credential Handling</name>
          <t>This test case ensures that non-ASCII credentials are handled
consistently using UTF-8 encoding before the Argon2id process.</t>
          <ul spacing="normal">
            <li>
              <t><strong>Credential</strong>: "密码123" (UTF-8: e5af86e7a081313233)</t>
            </li>
            <li>
              <t><strong>Salt</strong>: f0f1f2f3f4f5f6f7f8f9fafbfcfdfeff</t>
            </li>
            <li>
              <t><strong>ProfileID</strong>: 0x01 (Mobile)</t>
            </li>
          </ul>
          <t><strong>Output - Reconstructed REV</strong>:
[Insert 32-byte Hex REV here]</t>
        </section>
      </section>
      <section anchor="multi-algorithm-and-post-quantum-derivation">
        <name>Multi-Algorithm and Post-Quantum Derivation</name>
        <section anchor="classical-pqc-key-derivation-from-a-single-rev">
          <name>Classical + PQC Key Derivation from a Single REV</name>
          <t>This test case demonstrates the generative nature of the framework by
deriving keys for both classical and post-quantum algorithms from
the same REV.</t>
          <ul spacing="normal">
            <li>
              <t><strong>REV</strong>:
603deb1015ca71be2b73aef0857d77811f352c073b6108d72d9810a30914dff4</t>
            </li>
          </ul>
        </section>
        <section anchor="case-a-ed25519-signing-key">
          <name>Case A: Ed25519 Signing Key</name>
          <ul spacing="normal">
            <li>
              <t><strong>AlgID</strong>: 0x0001</t>
            </li>
            <li>
              <t><strong>Domain</strong>: 0x01</t>
            </li>
            <li>
              <t><strong>Index</strong>: 0</t>
            </li>
            <li>
              <t><strong>Context Info (Hex)</strong>: 00010100000000</t>
            </li>
            <li>
              <t><strong>Derived Key (32 bytes)</strong>:
[Insert Hex Key here]</t>
            </li>
          </ul>
        </section>
        <section anchor="case-b-ml-kem-kyber-key">
          <name>Case B: ML-KEM (Kyber) Key</name>
          <ul spacing="normal">
            <li>
              <t><strong>AlgID</strong>: 0x0005</t>
            </li>
            <li>
              <t><strong>Domain</strong>: 0x02</t>
            </li>
            <li>
              <t><strong>Index</strong>: 0</t>
            </li>
            <li>
              <t><strong>Context Info (Hex)</strong>: 00050200000000</t>
            </li>
            <li>
              <t><strong>Derived Key (64 bytes)</strong>:
[Insert Hex Key here]</t>
            </li>
          </ul>
        </section>
      </section>
      <section anchor="application-profile-test-vectors-informational">
        <name>Application Profile Test Vectors (Informational)</name>
        <section anchor="cryptocurrency-wallet-application-profile">
          <name>Cryptocurrency Wallet Application Profile</name>
          <t>This section defines test vectors for the <strong>ACE-GF Cryptocurrency Wallet
Application Profile</strong>.</t>
          <t>These test vectors are intended to demonstrate the deterministic behavior
of ACE-GF when applied to a multi-chain cryptocurrency wallet context,
including mnemonic generation, passphrase-based rekeying, identity
reconstruction ("view"), and migration from legacy wallet mnemonics.</t>
          <t>These vectors <strong>DO NOT</strong> validate the ACE-GF protocol encoding, wire format,
or generic file representations defined elsewhere in this document.
Instead, they apply exclusively to implementations that claim conformance
to the wallet application profile.</t>
          <t>Implementations that do not support this application profile are not
required to produce identical results.</t>
          <t>The following test vectors are expressed in JSON format for readability
and ease of cross-platform testing.</t>
          <sourcecode type="json"><![CDATA[
{
"description": "ACE-GF Deterministic Identity Test Vectors V1.0",
"project_version": "2025.12.23",
"test_cases": [
{
"case_id": "TEST_CASE_001",
"name": "Initial_Generation_ASCII_Passphrase",
"description": "Generate a new ACE-GF identity using ASCII passphrase 'abc'. Establishes Identity #1.",
"command": "./acegf generate abc",
"input": {
"passphrase": "abc"
},
"expected_output": {
"mnemonic": "vintage crash medal recycle item pigeon error real join december image into toe bag coffee pyramid gorilla tank scrub drift pencil clap vacant unlock",
"solana": "5yFK8sUGK6Ng5TqENvnLhwHRPDzyTMzLLp5ViUyx2ppk",
"evm": "0x1aCDA9f78D27e433317de8b14F50bb333df5055e",
"bitcoin": "bc1pnjptwsfjpukkj4xcw20fm5ddjrfqqquahj34q4lkd6jemxnvs84s5wgs2u",
"cosmos": "cosmos1kzuju6s08kacthf45vd3raexjfuggrx2n9y6aq",
"polkadot": "16VnAyYpbPgnVzS2TEHeZK7LMegJ8dTDez68KUbrsS3D2thU",
"xidentity": "ZgjpfHPPDtpT0vHezh5inQW/ruBmDQTDuNMyrCWLzhw="
}
},
{
"case_id": "TEST_CASE_002",
"name": "View_Deterministic_Restore_ASCII",
"description": "Restore Identity #1 using the original mnemonic and passphrase 'abc'. Must deterministically match TEST_CASE_001.",
"command": "./acegf view abc [mnemonic]",
"input": {
"passphrase": "abc",
"mnemonic": "vintage crash medal recycle item pigeon error real join december image into toe bag coffee pyramid gorilla tank scrub drift pencil clap vacant unlock"
},
"expected_output_ref": "TEST_CASE_001"
},
{
"case_id": "TEST_CASE_003",
"name": "Rekey_ASCII_to_ASCII",
"description": "Rekey Identity #1 by changing passphrase from 'abc' to 'cde'.",
"command": "./acegf rekey abc cde [mnemonic]",
"input": {
"old_passphrase": "abc",
"new_passphrase": "cde",
"old_mnemonic": "vintage crash medal recycle item pigeon error real join december image into toe bag coffee pyramid gorilla tank scrub drift pencil clap vacant unlock"
},
"expected_output": {
"new_mnemonic": "stuff roast enable clown casual crazy swing sun spoil home derive ocean screen frog shoot devote memory fall chuckle float canvas blue sudden quick"
}
},
{
"case_id": "TEST_CASE_004",
"name": "View_After_Rekey_ASCII",
"description": "Restore Identity #1 using new mnemonic and new passphrase 'cde'. Addresses must match TEST_CASE_001.",
"command": "./acegf view cde [new_mnemonic]",
"input": {
"passphrase": "cde",
"mnemonic": "stuff roast enable clown casual crazy swing sun spoil home derive ocean screen frog shoot devote memory fall chuckle float canvas blue sudden quick"
},
"expected_output_ref": "TEST_CASE_001"
},
{
"case_id": "TEST_CASE_005",
"name": "Legacy_12_Word_Aceize",
"description": "Convert a legacy 12-word mnemonic into an ACE-GF identity using passphrase 'abc'.",
"command": "./acegf aceize abc [12-word mnemonic]",
"input": {
"passphrase": "abc",
"legacy_mnemonic": "figure pony hour transfer toilet blush easy sorry taste write swing neck"
},
"expected_output": {
"mnemonic": "language issue crash subject warm when step shadow two live fantasy cake crush key calm cabbage ready error sure idea dish rotate drama balance",
"solana": "p9vabuSUkrntQwDNiA7X2xaiaBkwFn2SxJdmAFdHgKd",
"evm": "0xe21AA588aEFA0AE391798A122f0994E9eD9406E5",
"bitcoin": "bc1pet90lyvvca05c4zhme6925zr2kgdwjj564nm8kqhf758gvgp9fvs6px5g7",
"cosmos": "cosmos1zvtxtz5vh500rh0k0n3laeh6z0t263yp8krl80",
"polkadot": "132SUNr7yrVqTMYYACtHQSz9RCR1Pkw126BkF5PGdW892LoV",
"xidentity": "DUZt+nGZE1ZpGJhW0MYdtibPQcEBKXMHYkZW5phnoTo="
}
},
{
"case_id": "TEST_CASE_006",
"name": "Unicode_Passphrase_Emoji",
"description": "Rekey identity using emoji passphrase. Tests UTF-8 and non-ASCII passphrase handling.",
"command": "./acegf rekey cde 🔥🔥 [mnemonic]",
"input": {
"old_passphrase": "cde",
"new_passphrase": "🔥🔥",
"old_mnemonic": "mushroom unusual extend belt torch sketch limb symbol invest fury dinner fly capital you love school logic banana mention wrist buffalo spike finger elite"
},
"expected_output": {
"new_mnemonic": "rabbit thing indoor flower brass blush distance sauce swear ramp guard decorate news girl belt kid embody spoil skate alone suit record park wisdom"
}
},
{
"case_id": "TEST_CASE_007",
"name": "Unicode_Passphrase_Chinese",
"description": "Rekey identity using Chinese UTF-8 passphrase '测试'.",
"command": "./acegf rekey 🔥🔥 测试 [mnemonic]",
"input": {
"old_passphrase": "🔥🔥",
"new_passphrase": "测试",
"old_mnemonic": "rabbit thing indoor flower brass blush distance sauce swear ramp guard decorate news girl belt kid embody spoil skate alone suit record park wisdom"
},
"expected_output": {
"new_mnemonic": "deliver truck spread mask fetch connect cute credit cigar garlic student forest decade exchange swap issue wage gauge eagle soup squirrel cash dog whale"
}
},
{
"case_id": "TEST_CASE_008",
"name": "View_After_Multi_Rekey_Unicode",
"description": "Restore identity after multiple rekey operations with Unicode passphrases. Addresses must remain invariant.",
"command": "./acegf view 测试 [mnemonic]",
"input": {
"passphrase": "测试",
"mnemonic": "deliver truck spread mask fetch connect cute credit cigar garlic student forest decade exchange swap issue wage gauge eagle soup squirrel cash dog whale"
},
"expected_output_ref": "TEST_CASE_005"
}
]
}

]]></sourcecode>
        </section>
      </section>
      <section anchor="interoperability-verification-guidance">
        <name>10.5. Interoperability Verification Guidance</name>
        <t>An implementation claiming conformance to this specification SHOULD
verify interoperability as follows:</t>
        <ol spacing="normal" type="1"><li>
            <t>Using the test vectors in Sections 10.1 and 10.2, confirm that:
- The reconstructed REV exactly matches the expected value.
- The serialized Sealed Artifact (SA) fields match the specified
binary layout and contents.</t>
          </li>
          <li>
            <t>Using the vectors in Section 10.3, confirm that:
- Derived key material for different algorithms and domains is
deterministic and context-isolated.
- Classical and post-quantum derivations can coexist under the same REV.</t>
          </li>
          <li>
            <t>Implementations supporting the Cryptocurrency Wallet Application
Profile SHOULD additionally verify conformance using the vectors
defined in Section 10.4.</t>
          </li>
        </ol>
        <t>Successful verification across independent implementations indicates
interoperability of the ACE-GF construction.</t>
      </section>
    </section>
    <section anchor="references">
      <name>References</name>
      <section anchor="normative-references">
        <name>Normative References</name>
        <t><strong>[RFC2119]</strong> Bradner, S., "Key words for use in RFCs to Indicate Requirement Levels", BCP 14, RFC 2119, DOI 10.17487/RFC2119, March 1997.</t>
        <t><strong>[RFC3629]</strong> Yergeau, F., "UTF-8, a transformation format of ISO 10646", STD 63, RFC 3629, DOI 10.17487/RFC3629, November 2003.</t>
        <t><strong>[RFC5869]</strong> Krawczyk, H. and P. Eronen, "HMAC-based Extract-and-Expand Key Derivation Function (HKDF)", RFC 5869, DOI 10.17487/RFC5869, May 2010.</t>
        <t><strong>[RFC8126]</strong> Cotton, M., Leiba, B., and T. Narten, "Guidelines for Writing an IANA Considerations Section in RFCs", BCP 26, RFC 8126, DOI 10.17487/RFC8126, June 2017.</t>
        <t><strong>[RFC8174]</strong> Leiba, B., "Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words", BCP 14, RFC 8174, DOI 10.17487/RFC8174, May 2017.</t>
        <t><strong>[RFC8452]</strong> Gueron, S., Langley, A., and Y. Lindell, "AES-GCM-SIV: Nonce-Misuse-Resistant Authenticated Encryption", RFC 8452, DOI 10.17487/RFC8452, April 2018.</t>
        <t><strong>[RFC9106]</strong> Biryukov, A., Dinu, D., and D. Khovratovich, "Argon2 Memory-Hard Function for Password Hashing and Proof-of-Work Applications", RFC 9106, DOI 10.17487/RFC9106, September 2021.</t>
        <t><strong>[FIPS203]</strong> NIST, "Module-Lattice-Based Key-Encapsulation Mechanism Standard", FIPS PUB 203, August 2024.</t>
        <t><strong>[FIPS204]</strong> NIST, "Module-Lattice-Based Digital Signature Standard", FIPS PUB 204, August 2024.</t>
        <t><strong>[NIST-SP800-108]</strong> Chen, L., "Recommendation for Key Derivation Using Pseudorandom Functions", NIST Special Publication 800-108, October 2009.</t>
      </section>
      <section anchor="informative-references">
        <name>Informative References</name>
        <t><strong>[BIP32]</strong> Wuille, P., "Hierarchical Deterministic Wallets", February 2012.</t>
        <t><strong>[BIP39]</strong> Palatinus, M., et al., "Mnemonic code for generating deterministic keys", 2013.</t>
        <t><strong>[RFC8032]</strong> Josefsson, S. and I. Liusvaara, "Edwards-Curve Digital Signature Algorithm (EdDSA)", RFC 8032, DOI 10.17487/RFC8032, January 2017.</t>
        <t><strong>[RFC7748]</strong> Langley, A., Hamburg, M., and S. Turner, "Elliptic Curves for Security", RFC 7748, DOI 10.17487/RFC7748, January 2016.</t>
        <t><strong>[SEC2]</strong> Certicom Research, "SEC 2: Recommended Elliptic Curve Domain Parameters", Version 2.0, January 2010.</t>
        <t><strong>[DID-Core]</strong> Drummond, R., et al., "Decentralized Identifiers (DIDs) v1.0", W3C Recommendation, July 2022.</t>
        <t><strong>[Grover1996]</strong> Grover, L., "A Fast Quantum Mechanical Algorithm for Database Search", 1996.</t>
      </section>
    </section>
  </middle>
  <back>
    <?line 1259?>

<section anchor="implementation-considerations-for-resource-constrained-devices">
      <name>Implementation Considerations for Resource-Constrained Devices</name>
      <t>For IoT devices with limited RAM that cannot support the 'Standard' Argon2id
profile (256 MiB), the following optimizations are RECOMMENDED:</t>
      <ol spacing="normal" type="1"><li>
          <t><strong>Offloading Sealing</strong>: The Sealing process can be performed on a
provisioning terminal. The device only needs to store the resulting
Sealed Artifact (SA).</t>
        </li>
        <li>
          <t><strong>Unsealing via TEE</strong>: If the device features a Secure Element (SE) or
TEE, the K_seal derivation SHOULD be pinned to the hardware UID to
provide an additional layer of security even if the Credential is weak.</t>
        </li>
      </ol>
    </section>
    <section anchor="illustrative-python-pseudocode">
      <name>Illustrative Python Pseudocode</name>
      <t>An illustrative pseudocode representation of the ACE-GF derivation logic:</t>
      <section anchor="note">
        <name>Note</name>
        <ul empty="true">
          <li>
            <t><strong>Note:</strong>
The following pseudocode is provided for explanatory purposes only.
It omits error handling, memory zeroization, and side-channel
protections, and MUST NOT be used as a reference implementation.
Conforming implementations MUST adhere to the normative requirements
specified elsewhere in this document.</t>
          </li>
        </ul>
        <artwork><![CDATA[
import struct
from cryptography.hazmat.primitives.ciphers.aead import AESGCMSIV
from cryptography.hazmat.primitives.kdf.hkdf import HKDF
from cryptography.hazmat.primitives import hashes

# --------------------------------------------------------------------
# Pseudocode placeholder for Argon2id
# --------------------------------------------------------------------
def argon2id_kdf(password_bytes, salt_bytes, memory_mib, iterations, parallelism, out_len):
    """
    Pseudocode representation of Argon2id.
    Implementations MUST use RFC 9106–compliant Argon2id.
    """
    # This function is a placeholder.
    # A real implementation must call an Argon2id library.
    raise NotImplementedError("Argon2id KDF placeholder")


# --------------------------------------------------------------------
# ACE-GF: Seal REV
# --------------------------------------------------------------------
def ace_seal_rev(
    rev: bytes,
    credential: str,
    salt_16: bytes,
    auth_index: int,
    profile_id: int = 0x02,
):
    """
    Seal a 32-byte Root Entropy Value (REV) into a Sealed Artifact (SA).
    """

    assert len(rev) == 32
    assert len(salt_16) == 16

    # --- Extend salt with auth_index (Big-Endian) ---
    extended_salt = salt_16 + struct.pack(">I", auth_index)

# --- Select Argon2id parameters by profile ---
    if profile_id == 0x01:      # Mobile
        m, t, p = 64, 3, 1
    elif profile_id == 0x02:    # Standard
        m, t, p = 256, 4, 2
    elif profile_id == 0x03:    # Paranoid
        m, t, p = 1024, 8, 4
    else:
        raise ValueError("Unsupported Sealing Profile")

    # --- Derive sealing key using Argon2id ---
    k_seal = argon2id_kdf(
        password_bytes=credential.encode("utf-8"),
        salt_bytes=extended_salt,
        memory_mib=m,
        iterations=t,
        parallelism=p,
        out_len=32,  # 256-bit AES key
    )

    # --- Construct Additional Authenticated Data (AAD) ---
    # AAD = Magic || Version || ProfileID || auth_index
    aad = b"ACE\x00" + struct.pack(">BBI", 0x01, profile_id, auth_index)

    # --- Encrypt REV using AES-256-GCM-SIV ---
    nonce = b"\x00" * 12  # Fixed nonce (restricted single-message usage)
    aead = AESGCMSIV(k_seal)

    ciphertext = aead.encrypt(nonce, rev, aad)

    return ciphertext  # Ciphertext || Tag (library-defined layout)


# --------------------------------------------------------------------
# ACE-GF: Derive Algorithm-Specific Key Material
# --------------------------------------------------------------------
def ace_derive_key(
    rev: bytes,
    alg_id: int,
    domain: int,
    index: int,
    length: int,
):
    """
    Derive context-isolated key material from REV using HKDF-SHA256.
    """

    assert len(rev) == 32

    # --- Context Tuple encoding ---
    info = struct.pack(">HBI", alg_id, domain, index)

    # --- HKDF Extract + Expand ---
    hkdf = HKDF(
        algorithm=hashes.SHA256(),
        length=length,
        salt=b"\x00" * 32,
        info=info,
    )

    derived_key = hkdf.derive(rev)
    return derived_key
]]></artwork>
      </section>
    </section>
    <section anchor="example-use-cases-informational">
      <name>Example Use Cases (Informational)</name>
      <t>This appendix provides illustrative, non-normative examples of how
the ACE-GF framework may be applied in different deployment contexts.
These examples are intended to aid understanding and do not impose
additional protocol requirements.</t>
      <section anchor="autonomous-digital-entities-ades">
        <name>Autonomous Digital Entities (ADEs)</name>
        <t>Autonomous Digital Entities such as AI agents may require a stable
cryptographic identity that can be deterministically reconstructed
across restarts without persistent secret storage.</t>
        <t>In such deployments:
- The Sealed Artifact (SA) may be stored in local or remote storage.
- Authorization Credentials may be supplied at runtime by a controller
or policy engine.
- Derived keys may be used for signing, authentication, or secure
communication between agents.</t>
      </section>
      <section anchor="iot-and-embedded-devices">
        <name>IoT and Embedded Devices</name>
        <t>IoT devices often operate under memory and storage constraints and may
lack secure persistent storage for long-lived secrets.</t>
        <t>ACE-GF allows:
- Off-device provisioning of Sealed Artifacts.
- On-device reconstruction of identity only when required.
- Integration with Secure Elements or TEEs where available.</t>
      </section>
      <section anchor="blockchain-and-cryptographic-wallet-identities">
        <name>Blockchain and Cryptographic Wallet Identities</name>
        <t>Cryptographic wallets may use ACE-GF to derive multiple algorithm-
specific keys (e.g., Ed25519, secp256k1, PQC) from a single REV.</t>
        <t>Stateless rekeying allows credential updates without changing public
addresses, while identity unreachability provides a recovery and
lockout mechanism without reliance on external revocation
infrastructure such as CRLs.</t>
      </section>
    </section>
    <section anchor="security-boundaries-and-trust-assumptions-informational">
      <name>Security Boundaries and Trust Assumptions (Informational)</name>
      <t>This appendix summarizes the security boundaries and trust assumptions
implicit in the ACE-GF framework. It is informational and complements
the Security Considerations section.</t>
      <section anchor="trust-boundaries">
        <name>Trust Boundaries</name>
        <t>ACE-GF assumes a clear separation between:
- Authorization inputs (Credentials, salts, policy-controlled inputs)
- Identity material (REV and derived keys)
- Persistent storage (Sealed Artifacts)</t>
        <t>The compromise of persistent storage alone does not reveal the REV or
derived keys.</t>
      </section>
      <section anchor="authorization-boundary">
        <name>Authorization Boundary</name>
        <t>Authorization Credentials are assumed to be protected by the
application or deployment environment. Weak credentials reduce the
effective security of the Sealing Process but do not compromise the
cryptographic soundness of the framework.</t>
      </section>
      <section anchor="execution-environment-assumptions">
        <name>Execution Environment Assumptions</name>
        <t>During unsealing and derivation, the execution environment is assumed
to provide basic process isolation. Where stronger guarantees are
required, hardware-backed isolation (e.g., TEEs) is RECOMMENDED.</t>
      </section>
      <section anchor="non-goals">
        <name>Non-Goals</name>
        <t>ACE-GF does not attempt to:
- Protect against fully compromised execution environments.
- Provide anonymity or unlinkability guarantees.
- Replace application-level access control or policy enforcement.</t>
        <?line 1463?>

</section>
    </section>
    <section numbered="false" anchor="acknowledgments">
      <name>Acknowledgments</name>
      <t>The author would like to thank the members of the IETF Security Area
for their initial feedback and review of this generative framework.</t>
    </section>
  </back>
  <!-- ##markdown-source:
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
wwXC/x+Rqfi7HOsAAA==

-->

</rfc>
