<?xml version="1.0" encoding="UTF-8"?>
<rfc
    xmlns:xi="http://www.w3.org/2001/XInclude"
    docName="draft-juwan-ars-00"
    category="info"
    ipr="trust200902"
    submissionType="independent"
    xml:lang="en"
>
  <front>
    <title abbrev="ARS-1">ARS-1 -- Generic Archival Reference System</title>
    <seriesInfo name="Internet-Draft" value="draft-juwan-ars-00"/>
    <author fullname="Juwan Hwang" initials="J." surname="Hwang">
      <address>
        <email>juwan.hwang@proton.me</email>
      </address>
    </author>
    <date year="2026" month="August" day="22"/>
    <area>Applications</area>
    <workgroup>Independent Submission</workgroup>
    <keyword>archival reference</keyword>
    <keyword>deterministic identifier</keyword>
    <keyword>cryptographic reference</keyword>
    <keyword>permalink</keyword>
    <keyword>Base32</keyword>
    <keyword>HKDF</keyword>
    <abstract>
      <t>ARS-1 defines a deterministic, human-oriented, cryptographically derived reference protocol for assigning stable public References to durable digital entities. Typical references look like NX-174932, CJ3-106, MR-X4928, or KX4-7B19Q2.</t>
      <t>ARS-1 defines cryptographic identity, deterministic derivation, namespace management, canonical serialization, variable-length encoding, checksum, optional hardware input, optional digital signature, cryptographic agility, versioning, portability, reference resolution, reference reproduction, and cryptographic migration.</t>
      <t>The core interoperability property is: identical canonical inputs, identical applicable cryptographic Profile, identical Reference Key material, and identical Hardware Profile output MUST produce exactly the same canonical Reference in every conforming implementation.</t>
      <t>ARS-1 is designed so that changes in cryptographic algorithms, security parameters, signature schemes, or hardware mechanisms can be introduced through versioned Profiles without requiring the reassignment of historical References.</t>
    </abstract>
  </front>

  <middle>
      <section anchor="introduction" numbered="true" toc="default" title="Introduction">
        <t><strong>Status:</strong> v1.0-rc2 (Frozen) <strong>Protocol class:</strong> Generic archival reference and permalink protocol</t>
        <t><strong>Revision:</strong> v1.0-rc2 introduces the formal ARS Profile Registry model, separates Profile Identifier from Profile Version to eliminate semantic redundancy (Identifier <tt>ARS1-REF</tt> + Version <tt>1</tt> instead of <tt>ARS1-REF-1</tt>), and adds IANA Considerations. The normative Profile v1 test vector (Section 79) has been regenerated to reflect the split Identifier. All prior rc1 vectors are superseded. <strong>The specification is frozen as of v1.0-rc2.</strong></t>
        <t><strong>Conformance:</strong> The normative test vector (Section 79) has been regenerated for v1.0-rc2 following the Profile Identifier split (<tt>ARS1-REF</tt> + Version <tt>1</tt>). The values have been cross-verified by 23 independent implementations producing identical output. This does NOT constitute a cryptographic security audit.</t>
      </section>
      <section anchor="s-1-" numbered="true" toc="default" title="Abstract">
        <t>ARS-1 defines a deterministic, human-oriented, cryptographically derived reference protocol for assigning stable public References to durable digital entities.</t>
        <t>Typical visual forms include:</t>
        <figure>
          <artwork type="example"><![CDATA[
    NX-174932
    CJ3-106
    MR-X4928
    KX4-7B19Q2
    ]]></artwork>
        </figure>
        <t>ARS does not assign business meaning to Prefixes.</t>
        <t>For example:</t>
        <figure>
          <artwork type="example"><![CDATA[
    NX -> Project
    ]]></artwork>
        </figure>
        <t>is an Application Profile decision, not an ARS-1 rule.</t>
        <t>ARS-1 defines:</t>
        <figure>
          <artwork type="example"><![CDATA[
    Cryptographic Identity
    Deterministic Derivation
    Namespace
    Prefix Registry
    Canonical Serialization
    Variable-Length Encoding
    Checksum
    Optional Hardware Input
    Optional Digital Signature
    Cryptographic Agility
    Versioning
    Portability
    Reference Resolution
    Reference Reproduction
    Cryptographic Migration
    ]]></artwork>
        </figure>
        <t>The core interoperability property is:</t>
        <t>Identical canonical inputs, identical applicable cryptographic Profile, identical Reference Key material, and identical Hardware Profile output MUST produce exactly the same canonical Reference in every conforming implementation.</t>
        <t>ARS-1 is designed so that changes in cryptographic algorithms, security parameters, signature schemes, or hardware mechanisms can be introduced through versioned Profiles without requiring the reassignment of historical References.</t>
      </section>
      <section anchor="s-2-" numbered="true" toc="default" title="Normative Language">
        <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 <xref target="RFC2119"/> and <xref target="RFC8174"/>.</t>
        <t>A conforming implementation MUST treat all normative serialization, derivation, encoding, verification, migration, and versioning rules as exact protocol requirements.</t>
      </section>
      <section anchor="s-3-" numbered="true" toc="default" title="Protocol / Application Separation">
        <t>ARS-1 defines the protocol.</t>
        <figure>
          <artwork type="example"><![CDATA[
    ARS-1
    |
    +-- Reference Grammar
    +-- Cryptographic Derivation Interface
    +-- Canonical Serialization
    +-- Encoding
    +-- Checksum
    +-- Hardware Input Interface
    +-- Cryptographic Profile Interface
    +-- Signature Profile Interface
    +-- Verification
    +-- Resolution Semantics
    +-- Reproduction Semantics
    +-- Migration Semantics
    +-- Protocol Versioning
            |
            [U+25BC]
    Application Profile
    |
    +-- Namespace
    +-- Prefix Registry
    +-- Entity Identity Format
    +-- Reference Cryptographic Profile
    +-- Reference Key Policy
    +-- Data Bit Length
    +-- Maximum Payload Length
    +-- Checksum Policy
    +-- Hardware Profile
    +-- Signature Profile
    +-- Collision Policy
    +-- URL Policy
    ]]></artwork>
        </figure>
        <t>ARS-1 MUST NOT require any specific:</t>
        <figure>
          <artwork type="example"><![CDATA[
    Namespace
    Prefix
    database
    hardware vendor
    URL structure
    entity model
    UI convention
    cryptographic signature algorithm
    ]]></artwork>
        </figure>
      </section>
      <section anchor="s-4-" numbered="true" toc="default" title="Core Identity Architecture">
        <t>ARS separates the following mechanisms:</t>
        <figure>
          <artwork type="example"><![CDATA[
    Root Secret
         v
    Reference Cryptographic Profile
         v
    Reference Key
         v
    Reference Material
         v
    Public Reference
    ]]></artwork>
        </figure>
        <t>Optional:</t>
        <figure>
          <artwork type="example"><![CDATA[
    Hardware Secret
         v
    Hardware Profile
         v
    Canonical Challenge
         v
    Deterministic Hardware Response
         v
    Canonical Hardware Input
    ]]></artwork>
        </figure>
        <t>Independent:</t>
        <figure>
          <artwork type="example"><![CDATA[
    Signing Key
         v
    Signature Profile
         v
    Digital Signature
    ]]></artwork>
        </figure>
        <t>Independent:</t>
        <figure>
          <artwork type="example"><![CDATA[
    State Root / Content Hash
         v
    Historical Content Integrity
    ]]></artwork>
        </figure>
        <t>These mechanisms MUST NOT be treated as interchangeable.</t>
      </section>
      <section anchor="s-5-" numbered="true" toc="default" title="Determinism Invariant">
        <t>Let:</t>
        <figure>
          <artwork type="example"><![CDATA[
    T = CanonicalReferenceRecord
    K = Reference Key
    P = Reference Cryptographic Profile
    ]]></artwork>
        </figure>
        <t>Then:</t>
        <figure>
          <artwork type="example"><![CDATA[
    R = F(T, K, P)
    ]]></artwork>
        </figure>
        <t>MUST satisfy:</t>
        <figure>
          <artwork type="example"><![CDATA[
    T1 = T2
    K1 = K2
    P1 = P2
        v
    F(T1, K1, P1) = F(T2, K2, P2)
    ]]></artwork>
        </figure>
        <t>Reference derivation MUST NOT depend on hidden runtime state.</t>
        <t>The following MUST NOT affect Reference derivation unless explicitly included in a canonical protocol field:</t>
        <figure>
          <artwork type="example"><![CDATA[
    random()
    nonce
    current time
    database sequence
    process ID
    machine ID
    MAC address
    thread state
    memory address
    filesystem ordering
    network state
    runtime entropy
    ]]></artwork>
        </figure>
      </section>
      <section anchor="s-6-" numbered="true" toc="default" title="Root Secret">
        <t>The ARS Root Secret is the root symmetric secret from which Reference Keys are deterministically derived.</t>
        <t>A Reference Cryptographic Profile defines the required Root Secret security level.</t>
        <t>The ARS-1 Default Reference Cryptographic Profile Version 1 requires:</t>
        <figure>
          <artwork type="example"><![CDATA[
    Root Secret = 256 bits
    ]]></artwork>
        </figure>
        <t>Root Secret material MUST be generated using a cryptographically secure random number generator.</t>
        <t>A human password MUST NOT be used directly as a Root Secret or Reference Key.</t>
        <t>Future Reference Cryptographic Profiles MAY define larger Root Secrets or different approved secret-generation requirements.</t>
      </section>
      <section anchor="s-7-" numbered="true" toc="default" title="Root Secret Protection">
        <t>Root Secret:</t>
        <ul spacing="normal">
          <li>MUST NOT be stored in plaintext in ordinary configuration files.</li>
          <li>MUST NOT be committed to source control.</li>
          <li>MUST NOT be embedded in frontend code.</li>
          <li>MUST NOT appear in ordinary logs.</li>
          <li>MUST NOT be exposed through ordinary application exports.</li>
        </ul>
        <t>Implementations SHOULD use protected storage such as:</t>
        <figure>
          <artwork type="example"><![CDATA[
    OS Key Store
    Encrypted Keystore
    HSM
    Secure Element
    TPM-backed storage
    ]]></artwork>
        </figure>
        <t>Encrypted backups SHOULD use authenticated encryption.</t>
        <t>If a password protects an encrypted backup, the backup key SHOULD be derived using an appropriate memory-hard password KDF.</t>
        <t>The password itself MUST NOT become the Reference Key.</t>
      </section>
      <section anchor="s-8-" numbered="true" toc="default" title="Cryptographic Key Separation">
        <t>Root Secret MUST NOT be reused directly for unrelated cryptographic purposes.</t>
        <t>Reference derivation MUST use its own domain-separated cryptographic context.</t>
        <t>Signing keys MUST be independently defined.</t>
        <t>Conceptually:</t>
        <figure>
          <artwork type="example"><![CDATA[
    Root Secret
       |
       +-- reference-root
       +-- export
       +-- future purpose-specific domains
    ]]></artwork>
        </figure>
        <t>A Signing Private Key MUST NOT be treated as the Root Secret.</t>
        <t>A Hardware Response Secret MUST NOT be treated as the Root Secret.</t>
      </section>
      <section anchor="s-9-" numbered="true" toc="default" title="Reference Cryptographic Profile">
        <t>A Reference Cryptographic Profile defines the cryptographic construction used to derive a Reference.</t>
        <t>A Profile MUST define at least:</t>
        <figure>
          <artwork type="example"><![CDATA[
    profile identifier
    profile version
    security target
    root secret requirements
    key derivation algorithm
    hash or PRF algorithm
    Reference Key construction
    Reference Material construction
    Reference Material length
    domain separation rules
    security assumptions
    deprecation status
    ]]></artwork>
        </figure>
        <t>The Profile is part of the ARS Reference context.</t>
        <t>A Profile's cryptographic identity is the ordered pair:</t>
        <figure>
          <artwork type="example"><![CDATA[
    profile identifier
    profile version
    ]]></artwork>
        </figure>
        <t>The Profile Identifier MUST be explicit, immutable for that Profile definition, and unique within the applicable ARS protocol ecosystem. The Profile Version MUST be explicit. A Profile MUST NOT reuse an existing Identifier + Version pair for a different construction.</t>
        <t>ARS-1 Default Reference Cryptographic Profile Version 1 is:</t>
        <figure>
          <artwork type="example"><![CDATA[
    Profile Identifier:
        ARS1-REF

    Profile Version:
        1

    Security Target:
        approximately 128-bit classical symmetric security
        under the security assumptions of the selected primitives

    Root Secret:
        256 bits

    Reference Key:
        256 bits

    KDF:
        HKDF-SHA-256

    Reference Material:
        256 bits
    ]]></artwork>
        </figure>
        <t>The Profile Identifier (<tt>ARS1-REF</tt>) and Profile Version (<tt>1</tt>) together form the Profile Identity as defined in Section 9. The Identifier MUST NOT include a version suffix; version is always a separate field.</t>
        <t>The Security Target is an engineering target, not a permanent cryptographic guarantee.</t>
        <t>A future Profile MAY define a different Security Target and different cryptographic parameters.</t>
        <t>The exact construction of Profile Version 1 is specified by later normative sections.</t>
      </section>
      <section anchor="s-10-" numbered="true" toc="default" title="Cryptographic Agility">
        <t>ARS-1 is designed for cryptographic agility.</t>
        <t>Cryptographic agility means that a conforming deployment can replace or add cryptographic mechanisms while preserving the identity, storage, and operational continuity of previously issued References.</t>
        <t>A future Reference Cryptographic Profile MAY change:</t>
        <figure>
          <artwork type="example"><![CDATA[
    hash function
    KDF
    PRF construction
    Root Secret size
    Reference Key size
    Reference Material size
    domain separation construction
    security target
    ]]></artwork>
        </figure>
        <t>provided the new Profile is explicitly versioned.</t>
        <t>A future Signature Profile MAY change:</t>
        <figure>
          <artwork type="example"><![CDATA[
    signature algorithm
    public-key representation
    signature encoding
    certificate representation
    security target
    ]]></artwork>
        </figure>
        <t>without altering the associated Public Reference.</t>
        <t>A future Hardware Profile MAY change:</t>
        <figure>
          <artwork type="example"><![CDATA[
    challenge construction
    hardware operation
    response algorithm
    truncation
    encoding
    hardware credential mechanism
    security target
    ]]></artwork>
        </figure>
        <t>without altering already issued References.</t>
        <t>An implementation MUST NOT silently substitute a new cryptographic construction under an existing Profile Version.</t>
        <t>Cryptographic agility does NOT require two different Cryptographic Profiles to derive the same Reference from otherwise identical inputs.</t>
        <t>Each historical Reference remains bound to the Cryptographic Profile under which it was issued.</t>
      </section>
      <section anchor="s-11-" numbered="true" toc="default" title="Reference Key Derivation">
        <t>For Reference Cryptographic Profile <tt>profile_id</tt>, version <tt>profile_version</tt>, and Reference Key Version <tt>v</tt>:</t>
        <figure>
          <artwork type="example"><![CDATA[
    PRK =
    HKDF-Extract(
        salt = UTF8("ARS-1/reference-root-salt"),
        IKM  = RootSecret
    )
    ]]></artwork>
        </figure>
        <t>Then:</t>
        <figure>
          <artwork type="example"><![CDATA[
    ReferenceKey(v) =
    HKDF-Expand(
        PRK,
        info = UTF8("ARS-1/reference-root/v") ||
               UINT8(length(PROFILE_ID_BYTES)) ||
               PROFILE_ID_BYTES ||
               UINT16_BE(profile_version) ||
               UINT32_BE(v),
        L = 32
    )
    ]]></artwork>
        </figure>
        <t><tt>PROFILE_ID_BYTES</tt> is the exact canonical UTF-8 byte representation of the Reference Cryptographic Profile Identifier.</t>
        <t>The Profile Identifier and Profile Version are cryptographically bound to Reference Key derivation.</t>
        <t>The result is exactly:</t>
        <figure>
          <artwork type="example"><![CDATA[
    32 bytes
    256 bits
    ]]></artwork>
        </figure>
        <t>ARS-1 Reference Cryptographic Profile Version 1 uses HKDF-SHA-256 <xref target="RFC5869"/>.</t>
        <t>Future Profiles MAY define a different key derivation construction.</t>
      </section>
      <section anchor="s-12-" numbered="true" toc="default" title="Reference Key Version">
        <t>Every Reference Key has an explicit version:</t>
        <figure>
          <artwork type="example"><![CDATA[
    1
    2
    3
    ...
    ]]></artwork>
        </figure>
        <t>Reference Key Version MUST be part of the canonical Reference context.</t>
        <t>Changing Reference Key Version MUST NOT rewrite historical References.</t>
        <t>Example:</t>
        <figure>
          <artwork type="example"><![CDATA[
    v1
    -> historical References

    v2
    -> References issued under the new key context
    ]]></artwork>
        </figure>
        <t>Reference Key Version and Reference Cryptographic Profile Version are distinct dimensions.</t>
        <t>A Profile Version identifies the cryptographic construction.</t>
        <t>A Reference Key Version identifies the key-generation context within that construction.</t>
        <t>Reference Key Version is a public derivation-domain identifier. It does not itself provide forward secrecy or recovery from Root Secret compromise; see Section 84.1.</t>
      </section>
      <section anchor="s-13-" numbered="true" toc="default" title="Protocol and Profile Version Separation">
        <t>ARS distinguishes at least:</t>
        <figure>
          <artwork type="example"><![CDATA[
    protocol_version
    application_profile_id
    application_profile_version
    reference_cryptographic_profile_id
    reference_cryptographic_profile_version
    reference_key_version
    hardware_profile_id
    hardware_profile_version
    ]]></artwork>
        </figure>
        <t>These values MUST NOT be collapsed into one generic version field.</t>
        <t><tt>Application Profile ID + Application Profile Version</tt> defines application-specific semantics.</t>
        <t><tt>Reference Cryptographic Profile ID + Reference Cryptographic Profile Version</tt> defines cryptographic Reference derivation.</t>
        <t><tt>Reference Key Version</tt> identifies the Reference key context within the selected cryptographic Profile.</t>
        <t><tt>Hardware Profile ID + Hardware Profile Version</tt> defines hardware-derived input construction.</t>
        <t>Only fields explicitly defined as derivation inputs SHALL affect Reference derivation.</t>
        <t>Signature Profile Version MUST NOT affect Reference derivation.</t>
        <t>A conforming implementation MUST NOT infer a Profile solely from a numeric version.</t>
      </section>
      <section anchor="s-14-" numbered="true" toc="default" title="Identity Generation">
        <t>An Application Profile MAY define an Identity Generation value.</t>
        <t>Default type:</t>
        <figure>
          <artwork type="example"><![CDATA[
    uint32
    ]]></artwork>
        </figure>
        <t>Identity Generation distinguishes different long-lived cryptographic identity contexts.</t>
        <t>It is NOT:</t>
        <figure>
          <artwork type="example"><![CDATA[
    entity number
    creation sequence
    revision number
    ]]></artwork>
        </figure>
        <t>Example:</t>
        <figure>
          <artwork type="example"><![CDATA[
    Identity Generation = 1
    ]]></artwork>
        </figure>
        <t>After an explicit identity-generation transition:</t>
        <figure>
          <artwork type="example"><![CDATA[
    Identity Generation = 2
    ]]></artwork>
        </figure>
      </section>
      <section anchor="s-15-" numbered="true" toc="default" title="Stable Entity Identity">
        <t>Every Referenceable Entity MUST have an immutable Entity Identity.</t>
        <t>Permitted forms MAY include:</t>
        <figure>
          <artwork type="example"><![CDATA[
    UUID
    UUIDv7
    ULID
    application-defined immutable identifier
    ]]></artwork>
        </figure>
        <t>Entity Identity is the durable identity of the entity.</t>
        <t>It does not need to resemble the Public Reference.</t>
        <t>A database primary key MUST NOT automatically be assumed to be an ARS Public Reference.</t>
      </section>
      <section anchor="s-16-" numbered="true" toc="default" title="First Creation Time">
        <t><tt>First Creation Time</tt> is archival metadata describing:</t>
        <t>the first time an entity became a durable entity in the ARS-enabled system.</t>
        <t>It MAY be used by the Application Profile as immutable archival metadata.</t>
        <t>Default representation:</t>
        <figure>
          <artwork type="example"><![CDATA[
    UTC
    milliseconds since Unix Epoch
    uint64
    ]]></artwork>
        </figure>
        <t>Example:</t>
        <figure>
          <artwork type="example"><![CDATA[
    2026-08-20T12:34:56.789Z
    ]]></artwork>
        </figure>
        <t>is represented by its corresponding unsigned 64-bit Unix-millisecond value.</t>
        <t><tt>First Creation Time</tt> is NOT a canonical Reference derivation input in ARS-1 v1.</t>
        <t>This prevents Reference instability caused by later correction of archival metadata.</t>
        <t>Therefore:</t>
        <figure>
          <artwork type="example"><![CDATA[
    Entity Identity
    +
    Reference Context
    ]]></artwork>
        </figure>
        <t>defines the cryptographic identity of the Reference, while:</t>
        <figure>
          <artwork type="example"><![CDATA[
    First Creation Time
    ]]></artwork>
        </figure>
        <t>remains immutable archival metadata associated with the entity.</t>
      </section>
      <section anchor="s-17-" numbered="true" toc="default" title="No Permanent Sequence Number">
        <t>ARS-1 does not use:</t>
        <figure>
          <artwork type="example"><![CDATA[
    entity #1
    entity #2
    entity #3
    ]]></artwork>
        </figure>
        <t>as permanent cryptographic identity.</t>
        <t>An implementation MAY use database sequences internally.</t>
        <t>Such sequences MUST NOT become canonical Reference inputs unless explicitly defined by an Application Profile.</t>
      </section>
      <section anchor="s-18-" numbered="true" toc="default" title="Namespace">
        <t>Namespace defines the interpretation scope of a Reference.</t>
        <t>A Namespace MAY represent:</t>
        <figure>
          <artwork type="example"><![CDATA[
    website
    application
    organization
    repository
    tenant
    dataset
    archive
    ]]></artwork>
        </figure>
        <t>Namespace semantics are application-defined.</t>
      </section>
      <section anchor="s-19-" numbered="true" toc="default" title="Prefix">
        <t>Prefix is a Namespace-local semantic series identifier.</t>
        <t>ARS-1 syntax:</t>
        <figure>
          <artwork type="example"><![CDATA[
    one uppercase letter followed by 1-3 uppercase alphanumeric
    total length: 2 to 4 characters
    ]]></artwork>
        </figure>
        <t>Recommended length:</t>
        <figure>
          <artwork type="example"><![CDATA[
    2-4 characters
    ]]></artwork>
        </figure>
        <t>ARS-1 does not define global Prefix semantics.</t>
        <t>Example:</t>
        <figure>
          <artwork type="example"><![CDATA[
    NX -> Project
    CJ3 -> Writing
    MR -> Media
    ]]></artwork>
        </figure>
        <t>is valid only when the corresponding Application Profile defines those meanings.</t>
      </section>
      <section anchor="s-20-" numbered="true" toc="default" title="Prefix Registry">
        <t>Every deployment SHOULD maintain a Prefix Registry.</t>
        <t>Within a Namespace:</t>
        <ul spacing="normal">
          <li>Prefixes MUST be unique.</li>
          <li>A Prefix's semantic meaning MUST remain stable.</li>
          <li>A Prefix MUST NOT be silently reassigned.</li>
          <li>A retired Prefix MUST NOT be reused for an unrelated meaning.</li>
          <li>Historical Prefix meanings MUST remain interpretable.</li>
        </ul>
        <t>ARS does not maintain a global registry of business meanings.</t>
      </section>
      <section anchor="s-21-" numbered="true" toc="default" title="Local Reference Grammar">
        <t>A Local Reference has the form:</t>
        <figure>
          <artwork type="example"><![CDATA[
    <PREFIX>-<PAYLOAD>
    ]]></artwork>
        </figure>
        <t>Example:</t>
        <figure>
          <artwork type="example"><![CDATA[
    NX-17A492Q
    ]]></artwork>
        </figure>
        <t>A Local Reference MAY be embedded directly in a URL:</t>
        <figure>
          <artwork type="example"><![CDATA[
    https://example.com/NX-17A492Q
    ]]></artwork>
        </figure>
      </section>
      <section anchor="s-22-" numbered="true" toc="default" title="Qualified Reference">
        <t>A system operating across multiple Namespaces MAY use a qualified form:</t>
        <figure>
          <artwork type="example"><![CDATA[
    AEV:NX-17A492Q
    ]]></artwork>
        </figure>
        <t>An implementation MAY represent an ARS reference using a URI-like notation such as:</t>
        <figure>
          <artwork type="example"><![CDATA[
    ars://AEV/NX-17A492Q
    ]]></artwork>
        </figure>
        <t>This notation is defined by <xref target="ARSURI"/>, which formally registers the <tt>ars</tt> URI scheme and defines its complete ABNF grammar <xref target="RFC5234"/>, encoding rules, case sensitivity, authority/path semantics, and IANA provisional registration.</t>
        <t>A Local URL does not need to contain the Namespace if the application context already uniquely identifies it.</t>
      </section>
      <section anchor="s-23-" numbered="true" toc="default" title="Canonical Payload Alphabet">
        <t>The normative ARS-1 alphabet is:</t>
        <figure>
          <artwork type="example"><![CDATA[
    0123456789ABCDEFGHJKMNPQRSTVWXYZ
    ]]></artwork>
        </figure>
        <t>Alphabet indices are:</t>
        <figure>
          <artwork type="example"><![CDATA[
    0  -> 0
    1  -> 1
    2  -> 2
    3  -> 3
    4  -> 4
    5  -> 5
    6  -> 6
    7  -> 7
    8  -> 8
    9  -> 9
    10 -> A
    11 -> B
    12 -> C
    13 -> D
    14 -> E
    15 -> F
    16 -> G
    17 -> H
    18 -> J
    19 -> K
    20 -> M
    21 -> N
    22 -> P
    23 -> Q
    24 -> R
    25 -> S
    26 -> T
    27 -> V
    28 -> W
    29 -> X
    30 -> Y
    31 -> Z
    ]]></artwork>
        </figure>
        <t>The alphabet contains exactly:</t>
        <figure>
          <artwork type="example"><![CDATA[
    32 symbols
    5 bits per symbol
    ]]></artwork>
        </figure>
        <t>The following characters are excluded:</t>
        <figure>
          <artwork type="example"><![CDATA[
    I
    L
    O
    U
    ]]></artwork>
        </figure>
        <t>The alphabet is:</t>
        <figure>
          <artwork type="example"><![CDATA[
    ASCII-only
    alphanumeric-only
    canonically uppercase
    URL-safe
    ]]></artwork>
        </figure>
        <t>Only uppercase letters are permitted in canonical output.</t>
      </section>
      <section anchor="s-24-" numbered="true" toc="default" title="Human Readability">
        <t>The alphabet intentionally excludes the visually ambiguous letters:</t>
        <figure>
          <artwork type="example"><![CDATA[
    I
    L
    O
    U
    ]]></artwork>
        </figure>
        <t>The characters:</t>
        <figure>
          <artwork type="example"><![CDATA[
    0
    1
    ]]></artwork>
        </figure>
        <t>remain part of the canonical alphabet because ARS-1 requires a pure alphanumeric 32-symbol alphabet.</t>
        <t>Human-facing interfaces SHOULD use a font with clear differentiation between:</t>
        <figure>
          <artwork type="example"><![CDATA[
    0 / O
    1 / I / L
    ]]></artwork>
        </figure>
        <t>even though <tt>O</tt>, <tt>I</tt>, and <tt>L</tt> are not valid ARS-1 characters.</t>
        <t>Canonical References MUST remain uppercase.</t>
        <t>User-interface input normalization MAY accept lowercase for convenience, but lowercase MUST NOT constitute a canonical Reference representation.</t>
      </section>
      <section anchor="s-25-" numbered="true" toc="default" title="Variable-Length Payload">
        <t>Variable-length encoding is a core ARS-1 property.</t>
        <t>ARS-1 does NOT require every Reference to have the same visible Payload length.</t>
        <t>Examples MAY include:</t>
        <figure>
          <artwork type="example"><![CDATA[
    CJ3-106
    MR-X4928
    NX-17A492Q
    KX4-7B19Q2
    ]]></artwork>
        </figure>
        <t>Length MUST emerge from canonical encoding.</t>
        <t>Implementations MUST NOT introduce random length.</t>
        <t>Implementations MUST NOT introduce non-canonical visual padding.</t>
        <t>Application Profiles define the maximum Payload length and public data domain appropriate to their deployment.</t>
      </section>
      <section anchor="s-26-" numbered="true" toc="default" title="Public Data Domain">
        <t>An Application Profile defines:</t>
        <figure>
          <artwork type="example"><![CDATA[
    data_bits
    ]]></artwork>
        </figure>
        <t>The selected Reference Cryptographic Profile MUST provide at least that many Reference Material bits.</t>
        <t>An Application Profile MUST NOT request more public data bits than its selected Reference Cryptographic Profile can produce.</t>
        <t>A future Reference Cryptographic Profile MAY provide a larger Reference Material domain.</t>
        <t>The public data domain is independent from the Root Secret security level.</t>
      </section>
      <section anchor="s-27-" numbered="true" toc="default" title="Natural Variable-Length Encoding">
        <t>Let the fixed-width Public Data value be <tt>D</tt>.</t>
        <t>The data value is encoded using the ARS-1 Base32 alphabet.</t>
        <t>Leading zero-valued Base32 symbols MUST be omitted.</t>
        <t>The canonical rule is:</t>
        <figure>
          <artwork type="example"><![CDATA[
    remove every leading symbol whose alphabet index = 0
    retain at least one symbol
    ]]></artwork>
        </figure>
        <t>Because alphabet index <tt>0</tt> maps to:</t>
        <figure>
          <artwork type="example"><![CDATA[
    0
    ]]></artwork>
        </figure>
        <t>leading <tt>0</tt> symbols are omitted from the canonical representation.</t>
        <t>The all-zero data value is encoded as:</t>
        <figure>
          <artwork type="example"><![CDATA[
    0
    ]]></artwork>
        </figure>
        <t>and never as an empty string.</t>
      </section>
      <section anchor="s-28-" numbered="true" toc="default" title="Canonical Encode / Decode Invariants">
        <t>Let:</t>
        <figure>
          <artwork type="example"><![CDATA[
    Encode(x) = canonical payload
    Decode(s) = underlying data value
    ]]></artwork>
        </figure>
        <t>A conforming implementation MUST satisfy:</t>
        <figure>
          <artwork type="example"><![CDATA[
    Decode(Encode(x)) = x
    ]]></artwork>
        </figure>
        <t>and:</t>
        <figure>
          <artwork type="example"><![CDATA[
    Encode(Decode(s)) = s
    ]]></artwork>
        </figure>
        <t>for every accepted canonical string.</t>
        <t>A decoder MUST reject non-canonical encodings.</t>
        <t>For example, if:</t>
        <figure>
          <artwork type="example"><![CDATA[
    ABC
    ]]></artwork>
        </figure>
        <t>is canonical, then:</t>
        <figure>
          <artwork type="example"><![CDATA[
    0ABC
    ]]></artwork>
        </figure>
        <t>MUST NOT be accepted as an alternative canonical representation.</t>
      </section>
      <section anchor="s-29-" numbered="true" toc="default" title="Canonical Reference Record">
        <t>The canonical Reference record is:</t>
        <figure>
          <artwork type="example"><![CDATA[
    protocol_version
    application_profile_id
    application_profile_version
    reference_cryptographic_profile_id
    reference_cryptographic_profile_version
    namespace
    prefix
    entity_identity
    identity_generation
    reference_key_version
    hardware_profile_id
    hardware_profile_version
    hardware_input
    ]]></artwork>
        </figure>
        <t>The field order is normative.</t>
        <t><tt>First Creation Time</tt> is intentionally excluded from this record in ARS-1 v1.</t>
        <t>For all cryptographic operations that reference <tt>CanonicalReferenceRecord</tt>, the term means the exact binary serialization defined in Section 30.</t>
        <t>An implementation MUST NOT substitute a JSON, textual, implementation-defined, or otherwise non-normative representation.</t>
      </section>
      <section anchor="s-30-" numbered="true" toc="default" title="Binary Serialization">
        <t>All integer values use unsigned big-endian encoding.</t>
        <t>Canonical field types:</t>
        <figure>
          <artwork type="example"><![CDATA[
    protocol_version
        uint16

    application_profile_id
        uint8 length + UTF-8 bytes

    application_profile_version
        uint16

    reference_cryptographic_profile_id
        uint8 length + UTF-8 bytes

    reference_cryptographic_profile_version
        uint16

    namespace
        uint16 length + UTF-8 bytes

    prefix
        uint8 length + UTF-8 bytes

    entity_identity
        uint16 length + UTF-8 bytes

    identity_generation
        uint32

    reference_key_version
        uint32

    hardware_profile_id
        uint8 length + UTF-8 bytes

    hardware_profile_version
        uint16

    hardware_input
        uint16 length + raw bytes
    ]]></artwork>
        </figure>
        <t>Variable-length fields MUST contain explicit lengths.</t>
        <t>Implementations MUST NOT concatenate variable-length fields without explicit boundaries.</t>
        <t>The resulting byte sequence is the normative <tt>CanonicalReferenceRecord</tt>.</t>
      </section>
      <section anchor="s-31-" numbered="true" toc="default" title="String Normalization and Identifier Encoding">
        <t>The following textual fields MUST be normalized before serialization:</t>
        <figure>
          <artwork type="example"><![CDATA[
    application_profile_id
    reference_cryptographic_profile_id
    namespace
    prefix
    entity_identity
    hardware_profile_id
    ]]></artwork>
        </figure>
        <t>For ARS-1 core identifiers, the following fields MUST use ASCII bytes only:</t>
        <figure>
          <artwork type="example"><![CDATA[
    application_profile_id
    reference_cryptographic_profile_id
    hardware_profile_id
    ]]></artwork>
        </figure>
        <t><tt>Prefix</tt> is already restricted by the ARS-1 grammar to ASCII uppercase letters and digits.</t>
        <t>For <tt>Namespace</tt>, an Application Profile MUST choose exactly one of:</t>
        <figure>
          <artwork type="example"><![CDATA[
    ASCII-only
    Unicode NFC with an explicitly fixed Unicode version
    ]]></artwork>
        </figure>
        <t>For <tt>Entity Identity</tt>, the Application Profile MUST define its exact canonical encoding. If Unicode is permitted, the Profile MUST specify the normalization form and Unicode version.</t>
        <t>Where Unicode NFC is used, the Unicode version is part of the canonical Application Profile definition and MUST NOT change without a new Application Profile Version.</t>
        <t>Prefix MUST be canonical uppercase after normalization.</t>
        <t>No implementation may apply locale-dependent case conversion, locale-dependent normalization, or implementation-specific Unicode processing to a canonical field.</t>
      </section>
      <section anchor="s-32-" numbered="true" toc="default" title="Entity Identity Encoding">
        <t>Entity Identity serialization MUST be fixed by the Application Profile.</t>
        <t>If UUID or UUIDv7 is represented as canonical text, the exact textual form MUST be fixed.</t>
        <t>For example, only one of the following may be canonical:</t>
        <figure>
          <artwork type="example"><![CDATA[
    0198f3c7-7e8d-7c12-a5e1-000000000001
    ]]></artwork>
        </figure>
        <t>or:</t>
        <figure>
          <artwork type="example"><![CDATA[
    0198F3C7-7E8D-7C12-A5E1-000000000001
    ]]></artwork>
        </figure>
        <t>The Profile MUST NOT permit both as canonical encodings.</t>
      </section>
      <section anchor="s-33-" numbered="true" toc="default" title="Reference Salt">
        <t>Define:</t>
        <figure>
          <artwork type="example"><![CDATA[
    APP_PROFILE_ID_BYTES  = UTF8(application_profile_id)
    PROFILE_ID_BYTES      = UTF8(reference_cryptographic_profile_id)
    NAMESPACE_BYTES       = UTF8(namespace)
    PREFIX_BYTES          = UTF8(prefix)
    ]]></artwork>
        </figure>
        <t>Then:</t>
        <figure>
          <artwork type="example"><![CDATA[
    SALT_INPUT =
        UTF8("ARS-1/reference-salt") ||
        UINT8(length(APP_PROFILE_ID_BYTES)) ||
        APP_PROFILE_ID_BYTES ||
        UINT16_BE(application_profile_version) ||
        UINT8(length(PROFILE_ID_BYTES)) ||
        PROFILE_ID_BYTES ||
        UINT16_BE(reference_cryptographic_profile_version) ||
        UINT32_BE(reference_key_version) ||
        UINT16_BE(length(NAMESPACE_BYTES)) ||
        NAMESPACE_BYTES ||
        UINT8(length(PREFIX_BYTES)) ||
        PREFIX_BYTES
    ]]></artwork>
        </figure>
        <t>Then:</t>
        <figure>
          <artwork type="example"><![CDATA[
    SALT =
    SHA256(SALT_INPUT)
    ]]></artwork>
        </figure>
        <t>For Reference Cryptographic Profile Version 1, the resulting 32-byte digest is the HKDF extraction salt for Reference Material derivation.</t>
        <t>All variable-length fields in <tt>SALT_INPUT</tt> MUST use the lengths defined above.</t>
        <t>The Application Profile Identifier and Application Profile Version are cryptographically bound to the Reference Salt, ensuring that distinct Application Profiles produce distinct salt domains even when they share the same Reference Cryptographic Profile, Namespace, and Prefix.</t>
        <t>A future Reference Cryptographic Profile MAY define a different salt construction, but MUST use a new Profile Version.</t>
      </section>
      <section anchor="s-34-" numbered="true" toc="default" title="Reference Material Derivation">
        <t>For Reference Cryptographic Profile Version 1, first derive the Reference Key using the exact Reference Cryptographic Profile Identifier and Version:</t>
        <figure>
          <artwork type="example"><![CDATA[
    PRK =
    HKDF-Extract(
        salt = UTF8("ARS-1/reference-root-salt"),
        IKM  = RootSecret
    )

    RK =
    HKDF-Expand(
        PRK,
        info = UTF8("ARS-1/reference-root/v") ||
               UINT8(length(PROFILE_ID_BYTES)) ||
               PROFILE_ID_BYTES ||
               UINT16_BE(reference_cryptographic_profile_version) ||
               UINT32_BE(reference_key_version),
        L = 32
    )
    ]]></artwork>
        </figure>
        <t>Then:</t>
        <figure>
          <artwork type="example"><![CDATA[
    PRK2 =
    HKDF-Extract(
        salt = SALT,
        IKM  = RK
    )
    ]]></artwork>
        </figure>
        <t>Then:</t>
        <figure>
          <artwork type="example"><![CDATA[
    ReferenceMaterial =
    HKDF-Expand(
        PRK2,
        info = UTF8("ARS-1/public-reference") ||
               CanonicalReferenceRecord,
        L = 32
    )
    ]]></artwork>
        </figure>
        <t>For this operation, <tt>CanonicalReferenceRecord</tt> MUST mean the exact binary serialization defined in Section 30.</t>
        <t>All operations are deterministic.</t>
        <t>No random nonce or hidden runtime entropy is permitted.</t>
        <t>Future Reference Cryptographic Profiles MUST define their own complete derivation construction.</t>
      </section>
      <section anchor="s-35-" numbered="true" toc="default" title="Reference Material Domain Separation">
        <t>The following domain strings are normative for Reference Cryptographic Profile Version 1:</t>
        <figure>
          <artwork type="example"><![CDATA[
    ARS-1/reference-root-salt
    ARS-1/reference-root/v
    ARS-1/reference-salt
    ARS-1/public-reference
    ARS-1/checksum
    ARS-1/signature/v1
    ]]></artwork>
        </figure>
        <t>A new cryptographic purpose MUST use a distinct domain-separated label.</t>
        <t>Profile identifiers and versions are cryptographic context, not substitutes for domain labels. Both MUST be bound exactly where specified by the Profile construction.</t>
        <t>A future Profile MUST NOT silently reinterpret an existing domain string under the same Profile Version.</t>
      </section>
      <section anchor="s-36-" numbered="true" toc="default" title="Public Data Extraction">
        <t>The Application Profile defines <tt>data_bits</tt>.</t>
        <t>The Public Data value is the first <tt>data_bits</tt> of ReferenceMaterial, interpreted in big-endian bit order.</t>
        <t>An Application Profile MUST specify:</t>
        <figure>
          <artwork type="example"><![CDATA[
    data_bits
    maximum_payload_length
    ]]></artwork>
        </figure>
        <t>The checksum is 1 symbol (5 bits) as defined by the protocol.</t>
        <t>The Public Data domain is exactly:</t>
        <figure>
          <artwork type="example"><![CDATA[
    2^data_bits
    ]]></artwork>
        </figure>
        <t>possible values.</t>
        <t>Increasing the cryptographic strength of the underlying Reference derivation does not automatically increase the public collision domain.</t>
      </section>
      <section anchor="s-37-" numbered="true" toc="default" title="Base32 Encoding">
        <t>For each 5-bit group:</t>
        <figure>
          <artwork type="example"><![CDATA[
    0 -> 0
    1 -> 1
    2 -> 2
    ...
    9 -> 9
    10 -> A
    11 -> B
    12 -> C
    13 -> D
    14 -> E
    15 -> F
    16 -> G
    17 -> H
    18 -> J
    19 -> K
    20 -> M
    21 -> N
    22 -> P
    23 -> Q
    24 -> R
    25 -> S
    26 -> T
    27 -> V
    28 -> W
    29 -> X
    30 -> Y
    31 -> Z
    ]]></artwork>
        </figure>
        <t>Groups are processed from the most significant bit toward the least significant bit.</t>
        <t>If the data-bit length is not divisible by 5, the final partial group is padded on the right with zero bits for encoding.</t>
        <t>A decoder MUST verify that all unused padding bits are zero.</t>
      </section>
      <section anchor="s-38-" numbered="true" toc="default" title="Payload Length">
        <t>An Application Profile MUST specify:</t>
        <figure>
          <artwork type="example"><![CDATA[
    data_bits
    maximum_payload_length
    ]]></artwork>
        </figure>
        <t>The ARS-1 checksum is fixed at 1 symbol (5 bits) as defined in Section 42.</t>
        <t>The maximum Payload length MUST accommodate the profile's full data domain plus 1 checksum symbol.</t>
        <t>ARS-1 does not define a universal Payload length.</t>
        <t>A deployment MAY select a short visual Profile, a larger Profile, or another Profile appropriate to its expected issuance volume and identifier requirements.</t>
        <t>An Application Profile SHOULD prefer <tt>data_bits</tt> values divisible by 5 for representation efficiency. Non-multiples of 5 are fully valid and MUST use zero padding as specified in Section 37.</t>
      </section>
      <section anchor="s-39-" numbered="true" toc="default" title="Collision Guidance">
        <t>For approximately <tt>n</tt> independently distributed issued values, the birthday-bound approximation is:</t>
        <figure>
          <artwork type="example"><![CDATA[
    p ~= n^2 / 2^(data_bits + 1)
    ]]></artwork>
        </figure>
        <t>for sufficiently small probabilities.</t>
        <t>An Application Profile MUST evaluate its expected lifetime issuance volume against its selected public data domain.</t>
        <t>The public collision domain is independent from:</t>
        <figure>
          <artwork type="example"><![CDATA[
    Root Secret entropy
    Reference Key size
    Reference Material size
    checksum size
    ]]></artwork>
        </figure>
        <t>Increasing any of those values does not increase <tt>data_bits</tt> unless the Application Profile actually exposes additional derived bits.</t>
        <t>The exact collision probability for <tt>n</tt> issued References with <tt>b = data_bits</tt> is:</t>
        <figure>
          <artwork type="example"><![CDATA[
    P(collision) = 1 - e^(-n(n-1) / (2 * 2^b))
    ]]></artwork>
        </figure>
        <t>For small probabilities, this simplifies to:</t>
        <figure>
          <artwork type="example"><![CDATA[
    P ~= n^2 / (2 * 2^b)
    ]]></artwork>
        </figure>
        <t>To determine the required <tt>data_bits</tt> for a target collision probability <tt>P_target</tt> and expected lifetime issuance volume <tt>n</tt>:</t>
        <figure>
          <artwork type="example"><![CDATA[
    b >= log2(n^2 / (2 * P_target))
    ]]></artwork>
        </figure>
        <t>For example, for <tt>P_target = 0.5</tt> (50% birthday bound), the exact threshold is:</t>
        <figure>
          <artwork type="example"><![CDATA[
    n ~= sqrt(2 * 2^b * ln 2) ~= 1.1774 * 2^(b/2)
    ]]></artwork>
        </figure>
        <t>For <tt>data_bits = 40</tt>, this yields:</t>
        <figure>
          <artwork type="example"><![CDATA[
    n ~= 1.1774 * 2^20 ~= 1.234 * 10^6
    ]]></artwork>
        </figure>
        <t>meaning approximately 1.234 million independently distributed issued References are needed to reach a 50% collision probability in a 40-bit public data domain.</t>
        <t>An Application Profile SHOULD use these formulas to select <tt>data_bits</tt> based on its expected lifetime issuance volume and acceptable collision probability, rather than relying on fixed thresholds.</t>
      </section>
      <section anchor="s-40-" numbered="true" toc="default" title="Predictability and Enumeration Resistance">
        <t>Reference derivation is deterministic but MUST NOT be publicly predictable solely from public entity metadata.</t>
        <t>Without the required secret cryptographic material, observing existing References MUST NOT provide a practical method for predicting Reference Material of unrelated entities under the same Profile.</t>
        <t>Therefore:</t>
        <figure>
          <artwork type="example"><![CDATA[
    Determinism != Public Predictability
    ]]></artwork>
        </figure>
        <t>Collision resistance and enumeration resistance are separate security properties.</t>
        <t>A larger public data domain does not by itself provide authentication or authorization.</t>
      </section>
      <section anchor="s-41-" numbered="true" toc="default" title="Collision Handling">
        <t>A collision between two issued References is an <strong>issuance failure</strong>.</t>
        <t>Collision handling is an Application-level issuance invariant.</t>
        <t>An implementation MUST NOT silently resolve a collision using:</t>
        <figure>
          <artwork type="example"><![CDATA[
    random salt
    retry nonce
    database sequence
    current timestamp
    machine identifier
    runtime entropy
    ]]></artwork>
        </figure>
        <t>A collision MAY be resolved only by an explicit change of canonical profile inputs, such as:</t>
        <figure>
          <artwork type="example"><![CDATA[
    Namespace
    Prefix
    Application Profile Version
    Entity Identity
    Identity Generation
    Reference Cryptographic Profile Version
    Reference Key Version
    ]]></artwork>
        </figure>
        <t>Such a change creates a distinct canonical Reference context.</t>
        <t>Applications SHOULD detect collisions before committing a Reference as issued.</t>
      </section>
      <section anchor="s-42-" numbered="true" toc="default" title="Checksum">
        <t>ARS-1 defines a deterministic 5-bit hash-derived checksum.</t>
        <t>For:</t>
        <figure>
          <artwork type="example"><![CDATA[
    canonical_body = PREFIX + "-" + canonical_data
    ]]></artwork>
        </figure>
        <t>calculate:</t>
        <figure>
          <artwork type="example"><![CDATA[
    digest =
    SHA256(
        UTF8("ARS-1/checksum") ||
        UTF8(canonical_body)
    )
    ]]></artwork>
        </figure>
        <t>Take the first 5 bits of <tt>digest</tt>.</t>
        <t>Interpret them as an integer from <tt>0</tt> to <tt>31</tt>, then map through the ARS-1 alphabet.</t>
        <t>A future Protocol Version MAY define a checksum mechanism with more symbols or a different construction. Such a change requires a new Protocol Version and MUST NOT be introduced under the same Application Profile Version.</t>
      </section>
      <section anchor="s-43-" numbered="true" toc="default" title="Checksum Placement">
        <t>The checksum is the final Payload symbol.</t>
        <t>The canonical structure is:</t>
        <figure>
          <artwork type="example"><![CDATA[
    <PREFIX>-<DATA><CHECKSUM>
    ]]></artwork>
        </figure>
        <t>The checksum is part of the Public Reference but is not part of <tt>canonical_data</tt> when computing itself.</t>
      </section>
      <section anchor="s-44-" numbered="true" toc="default" title="Checksum Verification">
        <t>A verifier performs:</t>
        <figure>
          <artwork type="example"><![CDATA[
    1. Parse Prefix.
    2. Parse Payload.
    3. Separate the final Payload symbol as checksum.
    4. Treat preceding symbols as canonical data.
    5. Reconstruct PREFIX + "-" + DATA.
    6. Compute SHA256("ARS-1/checksum" || body).
    7. Take the first 5 bits.
    8. Map through the ARS-1 alphabet.
    9. Compare against the supplied checksum.
    ]]></artwork>
        </figure>
        <t>Checksum verification does not require database access.</t>
      </section>
      <section anchor="s-45-" numbered="true" toc="default" title="Checksum Security Boundary">
        <t>The checksum provides a 32-state checksum space. Its random collision probability is <tt>1/32</tt>.</t>
        <t>This value MUST NOT be interpreted as an authentication or cryptographic integrity bound.</t>
        <t>The ARS-1 checksum is a hash-truncation checksum: it takes the first 5 bits of a SHA-256 digest. This is fundamentally different from algebraic checksums (such as Luhn, ISBN-10, or China ID checksums), which use modular arithmetic to structurally guarantee detection of specific error classes.</t>
        <t>Because the checksum is hash-derived, it has NO deterministic detection guarantee for any specific error class:</t>
        <ul>
          <li>Single-symbol substitution: expected miss probability 1/32, no guarantee</li>
          <li>Adjacent-symbol transposition: expected miss probability 1/32, no guarantee</li>
          <li>Arbitrary transposition: expected miss probability 1/32, no guarantee</li>
        </ul>
        <t>Under the standard pseudorandom-function / random-oracle model for SHA-256, a truncated 5-bit checksum of a non-identical input is expected to behave as a uniformly random 5-bit value, yielding an expected collision probability of <tt>1/32</tt> for all error classes. This is a probabilistic expectation, not a proven equality for every specific error transformation. The key distinction is: the checksum has no algebraic structure that would provide deterministic detection of any error class, nor is there evidence of systematic bias toward or against any particular error type.</t>
        <t>An Application Profile that requires guaranteed detection of specific error classes (e.g., all adjacent transpositions) MUST NOT rely on the ARS-1 checksum alone. Such Profiles SHOULD define additional application-layer validation or select a future Protocol Version with an algebraic checksum mechanism.</t>
        <t>Therefore the checksum is a:</t>
        <figure>
          <artwork type="example"><![CDATA[
    human-error detector
    ]]></artwork>
        </figure>
        <t>and NOT:</t>
        <figure>
          <artwork type="example"><![CDATA[
    authentication
    authorization
    signature
    MAC
    proof of provenance
    cryptographic identity
    ]]></artwork>
        </figure>
        <t>An attacker who knows the algorithm can recompute it.</t>
        <t>These properties are restated as Hard Invariants 81 and 82 (Section 85). In case of any perceived discrepancy, the Hard Invariants and this Section are intended to be semantically identical.</t>
      </section>
      <section anchor="s-46-" numbered="true" toc="default" title="Hardware Profile Semantics">
        <t>A Hardware Profile is identified by:</t>
        <figure>
          <artwork type="example"><![CDATA[
    hardware_profile_id
    hardware_profile_version
    ]]></artwork>
        </figure>
        <t>A Hardware Profile MUST define an exact deterministic <tt>Canonical Challenge</tt> construction. The challenge construction MUST be a deterministic function of the canonical Reference context available before <tt>hardware_input</tt> is produced, together with the Hardware Profile definition.</t>
        <t>The protocol-visible challenge context MUST include at least:</t>
        <figure>
          <artwork type="example"><![CDATA[
    protocol_version
    application_profile_id
    application_profile_version
    reference_cryptographic_profile_id
    reference_cryptographic_profile_version
    namespace
    prefix
    entity_identity
    identity_generation
    reference_key_version
    hardware_profile_id
    hardware_profile_version
    ]]></artwork>
        </figure>
        <t>It MUST NOT include <tt>hardware_input</tt>, because <tt>hardware_input</tt> is the response-derived output of the Hardware Profile.</t>
        <t>A Hardware Profile MUST specify the exact byte encoding of its challenge context, challenge derivation algorithm, response algorithm, output truncation rule, and output encoding.</t>
        <t>A Hardware Profile definition SHOULD provide conformance vectors covering representative equivalent credentials, so that implementers have verifiable behavioral standards for Hardware Credential Equivalence Class claims.</t>
        <t>A <tt>Hardware Credential Equivalence Class</tt> MAY be defined by a Hardware Profile. Two hardware credentials MUST be treated as equivalent for ARS reproduction only when the Profile explicitly guarantees that they produce the same deterministic response for every valid canonical challenge.</t>
        <t>Possessing a physically different device is not, by itself, evidence of hardware credential equivalence.</t>
      </section>
      <section anchor="s-47-" numbered="true" toc="default" title="Hardware Input Architecture">
        <t>Hardware is OPTIONAL.</t>
        <t>ARS-1 defines:</t>
        <figure>
          <artwork type="example"><![CDATA[
    Hardware Profile
          v
    Canonical Challenge
          v
    Hardware Operation
          v
    Deterministic Hardware Response
          v
    Canonical Hardware Input
    ]]></artwork>
        </figure>
        <t>Possible implementations include:</t>
        <figure>
          <artwork type="example"><![CDATA[
    YubiKey
    TPM
    HSM
    Smart Card
    Secure Enclave
    Secure Element
    other secure hardware
    ]]></artwork>
        </figure>
        <t>ARS-1 does not depend on any vendor.</t>
      </section>
      <section anchor="s-48-" numbered="true" toc="default" title="Hardware Profile Contract">
        <t>A Hardware Profile MUST define:</t>
        <figure>
          <artwork type="example"><![CDATA[
    profile identifier
    profile version
    challenge construction
    hardware operation
    response algorithm
    input encoding
    output encoding
    security assumptions
    recovery procedure
    cryptographic status
    security target
    ]]></artwork>
        </figure>
        <t>For Reference derivation, a conforming Hardware Profile MUST guarantee:</t>
        <figure>
          <artwork type="example"><![CDATA[
    same profile
    +
    same canonical challenge
    +
    same hardware secret
    =
    same deterministic response
    ]]></artwork>
        </figure>
        <t>Uncontrolled randomness MUST NOT affect the Reference-derived hardware output.</t>
      </section>
      <section anchor="s-49-" numbered="true" toc="default" title="Canonical Hardware Input">
        <t>ARS does not interpret vendor-specific hardware internals.</t>
        <t>Instead:</t>
        <figure>
          <artwork type="example"><![CDATA[
    Hardware Profile
        v
    deterministic hardware response
        v
    Profile-defined canonical byte representation
        v
    hardware_input
    ]]></artwork>
        </figure>
        <t>The <tt>hardware_input</tt> field in the ARS canonical record is exactly that canonical Profile-defined byte representation.</t>
        <t>The same Hardware Profile Version MUST assign exactly one canonical byte representation to each valid response.</t>
      </section>
      <section anchor="s-50-" numbered="true" toc="default" title="Hardware Profile Versioning and Agility">
        <t>Hardware Profile Version MUST be explicit.</t>
        <t>A future incompatible construction MUST use a new version.</t>
        <t>A Profile MUST NOT silently change:</t>
        <figure>
          <artwork type="example"><![CDATA[
    challenge construction
    response derivation
    truncation
    output encoding
    hardware algorithm
    ]]></artwork>
        </figure>
        <t>while retaining the same version.</t>
        <t>A deprecated or compromised Hardware Profile MUST NOT invalidate already issued References.</t>
        <t>A deployment MAY stop issuing new References under the deprecated Profile while retaining the Profile for historical reproduction and verification.</t>
        <t>A Hardware Profile migration MAY change the Hardware Input used by future Reference contexts.</t>
        <t>It MUST NOT rewrite a historical Reference.</t>
      </section>
      <section anchor="s-51-" numbered="true" toc="default" title="Hardware Is an Issuance Input, Not a Runtime Resolution Dependency">
        <t>This is a hard ARS-1 invariant.</t>
        <t>If hardware participates in Reference generation:</t>
        <figure>
          <artwork type="example"><![CDATA[
    Reference =
    F(
        canonical entity inputs,
        ReferenceKey,
        hardware_input
    )
    ]]></artwork>
        </figure>
        <t>hardware MAY be required for:</t>
        <figure>
          <artwork type="example"><![CDATA[
    issuance
    reproduction
    migration
    recovery verification
    ]]></artwork>
        </figure>
        <t>but ordinary Reference Resolution MUST NOT require the hardware to be present after issuance when the application already maintains the Reference -&gt; Entity association.</t>
        <t>Therefore:</t>
        <figure>
          <artwork type="example"><![CDATA[
    /NX-17A492Q
    ]]></artwork>
        </figure>
        <t>MUST remain resolvable without an attached hardware device.</t>
        <t>Loss of issuance hardware MUST NOT invalidate an already issued Reference.</t>
      </section>
      <section anchor="s-52-" numbered="true" toc="default" title="Hardware Reproduction Modes">
        <t>A deployment MAY preserve <tt>hardware_input</tt> as part of the historical Reference record.</t>
        <t>When <tt>hardware_input</tt> is retained:</t>
        <figure>
          <artwork type="example"><![CDATA[
    Reference Reproduction
    ]]></artwork>
        </figure>
        <t>MAY be performed without physical access to the original hardware, provided all other required canonical inputs, Profile information, and key material are available.</t>
        <t>When <tt>hardware_input</tt> is not retained, reproduction MAY require the original hardware credential or an explicitly defined recoverable equivalent.</t>
        <t>An Application Profile using hardware-bound References MUST explicitly document which reproduction mode it uses.</t>
      </section>
      <section anchor="s-53-" numbered="true" toc="default" title="YubiKey Compatibility">
        <t>A YubiKey MAY implement an ARS Hardware Profile.</t>
        <t>A vendor-specific Challenge-Response output becomes the Hardware Profile's deterministic response.</t>
        <t>ARS cryptographic derivation then incorporates the canonical hardware response through the applicable Reference Cryptographic Profile.</t>
        <t>ARS-1 does not use vendor-specific hardware cryptography as a replacement for its own Reference derivation architecture.</t>
      </section>
      <section anchor="s-54-" numbered="true" toc="default" title="User Presence">
        <t>A Hardware Profile MAY require:</t>
        <figure>
          <artwork type="example"><![CDATA[
    touch
    PIN
    local user approval
    ]]></artwork>
        </figure>
        <t>These controls determine whether the hardware operation is allowed.</t>
        <t>They MUST NOT themselves become uncontrolled entropy in Reference derivation.</t>
        <t>A deterministic Hardware Profile MUST produce the same response for the same canonical challenge and the same hardware secret.</t>
      </section>
      <section anchor="s-55-" numbered="true" toc="default" title="Hardware Recovery">
        <t>An Application Profile using Hardware-Bound References MUST define a recovery strategy.</t>
        <t>Permitted strategies MAY include:</t>
        <figure>
          <artwork type="example"><![CDATA[
    secondary hardware
    recovery key
    secure duplicate hardware
    pre-issued immutable Reference mapping
    stored canonical hardware_input
    ]]></artwork>
        </figure>
        <t>Loss of the original hardware MUST NOT mutate an already issued Reference.</t>
        <t>If reproduction is required after hardware loss, the Application Profile MUST define how the necessary reproduction material is recovered.</t>
      </section>
      <section anchor="s-56-" numbered="true" toc="default" title="Digital Signatures">
        <t>Digital Signatures are independent from Reference derivation.</t>
        <t>A signature establishes that a holder of a specific Signing Private Key authorized or signed a specified record.</t>
        <t>Signatures:</t>
        <ul spacing="normal">
          <li>MUST NOT determine the Reference.</li>
          <li>MUST NOT alter the Reference.</li>
          <li>MAY exist in multiple versions.</li>
          <li>MAY use hardware-backed keys.</li>
          <li>MAY use classical, post-quantum, or hybrid cryptographic constructions.</li>
        </ul>
        <t>The cryptographic status of a Signature Profile MUST NOT determine whether an already issued Reference remains valid.</t>
      </section>
      <section anchor="s-57-" numbered="true" toc="default" title="Signature Key Separation">
        <t>Signing Private Keys MUST be separate from:</t>
        <figure>
          <artwork type="example"><![CDATA[
    Root Secret
    Reference Key
    Hardware response secret
    ]]></artwork>
        </figure>
        <t>A signing implementation SHOULD generate its signing key independently.</t>
        <t>A hardware-backed signing key MAY be stored in:</t>
        <figure>
          <artwork type="example"><![CDATA[
    YubiKey PIV
    TPM
    HSM
    Smart Card
    Secure Enclave
    ]]></artwork>
        </figure>
      </section>
      <section anchor="s-58-" numbered="true" toc="default" title="Signature Profile">
        <t>A Signature Profile MUST define:</t>
        <figure>
          <artwork type="example"><![CDATA[
    profile identifier
    profile version
    algorithm
    hash function, if applicable
    key type
    public-key encoding
    signature encoding
    certificate format, if applicable
    canonical message format
    security assumptions
    cryptographic status
    security target
    ]]></artwork>
        </figure>
        <t>ARS-1 does not prescribe one permanent signature algorithm.</t>
        <t>Signature Profiles MAY be classified as:</t>
        <figure>
          <artwork type="example"><![CDATA[
    Classical
    Post-Quantum
    Hybrid
    ]]></artwork>
        </figure>
        <t>A deployment requiring long-term resistance to quantum attacks SHOULD select an approved and currently appropriate post-quantum or hybrid Signature Profile.</t>
        <t>A future Signature Profile MAY replace an older Profile without changing any associated Public Reference.</t>
      </section>
      <section anchor="s-59-" numbered="true" toc="default" title="Signature Migration">
        <t>A Signature Profile MAY be deprecated, superseded, or retired.</t>
        <t>Deprecating a Signature Profile MUST NOT invalidate:</t>
        <figure>
          <artwork type="example"><![CDATA[
    Entity Identity
    Public Reference
    historical record
    historical content association
    ]]></artwork>
        </figure>
        <t>A deployment MAY attach a newer signature to the same Reference and state while retaining historical signatures for archival purposes.</t>
        <t>A migration MAY therefore produce:</t>
        <figure>
          <artwork type="example"><![CDATA[
    Reference
        +-- historical signature
        +-- current signature
    ]]></artwork>
        </figure>
        <t>without changing the Reference.</t>
        <t>A cryptographic signature MUST NOT be treated as the permanent identity of the entity.</t>
      </section>
      <section anchor="s-60-" numbered="true" toc="default" title="Signature Message">
        <t>A recommended signing context is:</t>
        <figure>
          <artwork type="example"><![CDATA[
    ARS-1/signature/v1
    +
    Namespace
    +
    Reference
    +
    State Root / Record Hash
    ]]></artwork>
        </figure>
        <t>Signature serialization MUST be specified independently from Reference derivation serialization.</t>
        <t>A signature MUST NOT be added to the Reference derivation merely to increase perceived security.</t>
        <t>A change in Signature Profile MUST NOT alter the Public Reference.</t>
      </section>
      <section anchor="s-61-" numbered="true" toc="default" title="Content Integrity">
        <t>A Reference does not prove the exact historical contents of an entity.</t>
        <t>Applications requiring historical integrity SHOULD use:</t>
        <figure>
          <artwork type="example"><![CDATA[
    Content Hash
    State Root
    Merkle Root
    Immutable Object Graph
    ]]></artwork>
        </figure>
        <t>Conceptually:</t>
        <figure>
          <artwork type="example"><![CDATA[
    Reference
        -> Which durable entity?

    State Root
        -> Which exact historical state?

    Signature
        -> Who authorized the record?

    Authorization
        -> Who is allowed to access or modify it?
    ]]></artwork>
        </figure>
        <t>These are independent properties.</t>
      </section>
      <section anchor="s-62-" numbered="true" toc="default" title="Post-Quantum Security Position">
        <t>ARS-1 is designed so that its core Reference architecture does not depend on classical public-key primitives such as integer-factorization or elliptic-curve discrete-logarithm systems.</t>
        <t>The ARS-1 Reference Cryptographic Profile Version 1 uses:</t>
        <figure>
          <artwork type="example"><![CDATA[
    256-bit Root Secret
    HKDF-SHA-256
    SHA-256
    256-bit Reference Material
    ]]></artwork>
        </figure>
        <t>This construction is not based on the classical public-key assumptions targeted by Shor-style attacks.</t>
        <t>However, ARS-1 MUST NOT claim that any specific cryptographic algorithm is permanently immune to all future quantum or classical cryptanalytic advances.</t>
        <t>The security target of each Cryptographic Profile is an engineering designation describing the intended security level under the assumptions of the specified primitives.</t>
        <t>ARS-1 therefore treats the following as separate properties:</t>
        <figure>
          <artwork type="example"><![CDATA[
    classical security
    quantum resistance under current understanding
    long-term cryptographic agility
    archival identity stability
    ]]></artwork>
        </figure>
        <t>A Profile MAY be cryptographically suitable for current deployment without being treated as permanently safe against all future cryptanalytic advances.</t>
      </section>
      <section anchor="s-63-" numbered="true" toc="default" title="Post-Quantum Migration Principle">
        <t>Post-quantum migration MUST occur at the cryptographic Profile layer wherever possible.</t>
        <t>A deployment MUST prefer:</t>
        <figure>
          <artwork type="example"><![CDATA[
    new cryptographic Profile
            v
    new cryptographic mechanism
            v
    same Entity Identity semantics
            v
    historical References preserved
    ]]></artwork>
        </figure>
        <t>rather than:</t>
        <figure>
          <artwork type="example"><![CDATA[
    new cryptographic algorithm
            v
    reissue every historical Reference
    ]]></artwork>
        </figure>
        <t>A Cryptographic Profile migration preserves historical References, but different Cryptographic Profiles are NOT required to derive the same Reference from the same entity context.</t>
        <t>Historical References remain cryptographically bound to the Profile and key context under which they were originally issued.</t>
        <t>For example:</t>
        <figure>
          <artwork type="example"><![CDATA[
    Entity E
    Profile v1
    Key v1
        v
    Reference R1
    ]]></artwork>
        </figure>
        <t>and later:</t>
        <figure>
          <artwork type="example"><![CDATA[
    Entity E
    Profile v2
    Key v2
        v
    Reference R2
    ]]></artwork>
        </figure>
        <t>MAY produce different References.</t>
        <t>This does not constitute mutation of <tt>R1</tt>.</t>
        <t><tt>R1</tt> remains the canonical historical Reference for the original Reference context.</t>
        <t>A deployment SHOULD distinguish:</t>
        <figure>
          <artwork type="example"><![CDATA[
    historical Reference preservation
    ]]></artwork>
        </figure>
        <t>from:</t>
        <figure>
          <artwork type="example"><![CDATA[
    future Reference issuance
    ]]></artwork>
        </figure>
        <t>When a Cryptographic Profile becomes deprecated or unsafe, the deployment SHOULD:</t>
        <figure>
          <artwork type="example"><![CDATA[
    stop issuing new References under the affected Profile
    preserve historical Profile metadata
    preserve historical References
    introduce a replacement Profile
    migrate signatures or supporting credentials
    ]]></artwork>
        </figure>
        <t>A cryptographic transition MUST NOT silently reinterpret an existing Reference as though it had been issued under a different Profile.</t>
      </section>
      <section anchor="s-64-" numbered="true" toc="default" title="Reference Resolution">
        <t>Reference Resolution means:</t>
        <figure>
          <artwork type="example"><![CDATA[
    Reference -> Entity
    ]]></artwork>
        </figure>
        <t>Resolution is an application-state operation.</t>
        <t>A system MAY resolve a syntactically valid and checksum-valid Reference to:</t>
        <figure>
          <artwork type="example"><![CDATA[
    existing entity
    retired entity
    tombstone
    missing entity
    ]]></artwork>
        </figure>
        <t>depending on application policy.</t>
        <t>Checksum validity alone does NOT establish that an entity exists.</t>
        <t>Reference Resolution MUST NOT require a particular cryptographic Profile unless the application explicitly needs cryptographic reproduction or verification.</t>
      </section>
      <section anchor="s-65-" numbered="true" toc="default" title="Reference Reproduction">
        <t>Reference Reproduction means:</t>
        <figure>
          <artwork type="example"><![CDATA[
    Canonical Reference Inputs
    +
    Reference Cryptographic Profile
    +
    Reference Key
    +
    Hardware Input, if required
            v
    Reference
    ]]></artwork>
        </figure>
        <t>A conforming implementation MUST reproduce the exact canonical Reference.</t>
        <t>Reproduction is cryptographic.</t>
        <t>Resolution is application-state based.</t>
        <t>The two operations MUST NOT be conflated.</t>
      </section>
      <section anchor="s-66-" numbered="true" toc="default" title="Reference Verification Levels">
        <t>A verifier MAY operate at multiple levels.</t>
          <section anchor="level-1-syntax" numbered="true" toc="default" title="Level 1 -- Syntax">
        <t>Verify:</t>
        <figure>
          <artwork type="example"><![CDATA[
    Prefix syntax
    Payload alphabet
    separator
    canonical casing
    maximum length
    ]]></artwork>
        </figure>
          </section>
          <section anchor="level-2-checksum" numbered="true" toc="default" title="Level 2 -- Checksum">
        <t>Verify:</t>
        <figure>
          <artwork type="example"><![CDATA[
    checksum
    ]]></artwork>
        </figure>
          </section>
          <section anchor="level-3-canonicality" numbered="true" toc="default" title="Level 3 -- Canonicality">
        <t>Verify:</t>
        <figure>
          <artwork type="example"><![CDATA[
    canonical Base32 representation
    canonical Prefix
    canonical Payload form
    ]]></artwork>
        </figure>
          </section>
          <section anchor="level-4-cryptographic-reproduction" numbered="true" toc="default" title="Level 4 -- Cryptographic Reproduction">
        <t>Given:</t>
        <figure>
          <artwork type="example"><![CDATA[
    Root Secret
    Reference Cryptographic Profile
    Application Profile
    canonical entity inputs
    Hardware Input, where required
    ]]></artwork>
        </figure>
        <t>reproduce the Reference and compare character-for-character.</t>
          </section>
          <section anchor="level-5-resolution" numbered="true" toc="default" title="Level 5 -- Resolution">
        <t>Use application state:</t>
        <figure>
          <artwork type="example"><![CDATA[
    Reference -> Entity
    ]]></artwork>
        </figure>
        <t>No lower verification level implicitly proves a higher one.</t>
          </section>
      </section>
      <section anchor="s-67-" numbered="true" toc="default" title="Public Reference vs Authorization">
        <t>A valid Reference MUST NOT imply:</t>
        <figure>
          <artwork type="example"><![CDATA[
    permission
    ownership
    authentication
    authorization
    ]]></artwork>
        </figure>
        <t>Applications MUST enforce authorization independently.</t>
        <t>Knowledge of a Reference MUST NOT itself grant privileged access.</t>
      </section>
      <section anchor="s-68-" numbered="true" toc="default" title="Permanent Non-Reuse">
        <t>Once an ARS Reference has been issued:</t>
        <figure>
          <artwork type="example"><![CDATA[
    delete entity
    trash purge
    import
    migration
    restore
    rename
    move
    reparent
    cryptographic Profile migration
    signature migration
    hardware Profile migration
    ]]></artwork>
        </figure>
        <t>MUST NOT release the Reference for reassignment.</t>
        <t>A retired Reference MUST NOT be reassigned to an unrelated entity.</t>
      </section>
      <section anchor="s-69-" numbered="true" toc="default" title="Semantic URL Independence">
        <t>Semantic routes MAY change:</t>
        <figure>
          <artwork type="example"><![CDATA[
    /lab/zephyr
        v
    /zephyr
        v
    projects/zephyr
        v
    zephyr.example.com
    ]]></artwork>
        </figure>
        <t>The ARS Reference remains stable:</t>
        <figure>
          <artwork type="example"><![CDATA[
    NX-17A492Q
    ]]></artwork>
        </figure>
        <t>Therefore:</t>
        <t>Semantic URL = current information architecture. ARS Reference = durable identity locator.</t>
      </section>
      <section anchor="s-70-" numbered="true" toc="default" title="Canonical URL">
        <t>When an ARS Reference is embedded in a canonical URL:</t>
        <ul spacing="normal">
          <li>Prefix MUST be canonical uppercase.</li>
          <li>Payload MUST use the canonical ARS-1 alphabet.</li>
          <li>The separator MUST be exactly one ASCII hyphen.</li>
          <li>The Reference itself MUST NOT require percent-encoding.</li>
          <li>Lowercase representations MUST NOT constitute a separate canonical identity.</li>
        </ul>
        <t>Example:</t>
        <figure>
          <artwork type="example"><![CDATA[
    https://example.com/NX-FC5RT0TC0
    ]]></artwork>
        </figure>
        <t>A future cryptographic Profile MUST NOT require changing the canonical URL representation of an already issued Reference.</t>
      </section>
      <section anchor="s-71-" numbered="true" toc="default" title="Export / Import">
        <t>A complete portable export MUST preserve all information necessary to reproduce existing References.</t>
        <t>At minimum:</t>
        <figure>
          <artwork type="example"><![CDATA[
    Root Secret secure backup
    Identity Generation
    Namespace
    Prefix Registry
    Entity Identity
    First Creation Time
    Application Profile Version
    Reference Cryptographic Profile Version
    Reference Key Version
    Hardware Profile and Version, if used
    stored canonical hardware_input, if retained by policy
    Application Profile
    Public Reference
    ]]></artwork>
        </figure>
        <t>A complete archival export SHOULD also preserve:</t>
        <figure>
          <artwork type="example"><![CDATA[
    historical Signature Profiles
    historical signatures
    Signature Profile Versions
    cryptographic Profile metadata
    Profile security targets
    Profile status history
    ]]></artwork>
        </figure>
        <t>Where a Hardware Profile requires an external hardware credential for reproduction, the export policy MUST document how that credential is preserved, duplicated, escrowed, or otherwise recovered.</t>
        <t>Imports MUST preserve historical References.</t>
        <t>A correct export/import cycle MUST satisfy:</t>
        <figure>
          <artwork type="example"><![CDATA[
    Original Reference
    =
    Imported Reference
    ]]></artwork>
        </figure>
        <t>for identical canonical identity context, applicable Profile definitions, and required key material.</t>
      </section>
      <section anchor="s-72-" numbered="true" toc="default" title="Key Rotation">
        <t>Key rotation MUST NOT rewrite historical References.</t>
        <t>Example:</t>
        <figure>
          <artwork type="example"><![CDATA[
    Reference Key v1
        v
    historical References

    Reference Key v2
        v
    new References
    ]]></artwork>
        </figure>
        <t>Historical References MUST retain their Reference Key Version.</t>
        <t>Old key material SHOULD remain protected for as long as cryptographic reproduction of historical References is required.</t>
        <t>Changing Reference Key Version MAY affect newly issued References, but MUST NOT silently alter historical ones.</t>
      </section>
      <section anchor="s-73-" numbered="true" toc="default" title="Cryptographic Downgrade Resistance">
        <t>Cryptographic Profile selection for new Reference issuance MUST be governed by authenticated local deployment policy.</t>
        <t>An untrusted caller, request field, import record, or network input MUST NOT be able to select a Deprecated or Retired Cryptographic Profile when the deployment policy requires a stronger Active Profile.</t>
        <t>A deployment MUST define a minimum acceptable Cryptographic Profile for new issuance. The effective issuance policy MUST be evaluated before Reference derivation.</t>
        <t>Historical reproduction is a distinct operation and MAY use the historical Cryptographic Profile and Reference Key Version originally bound to the Reference, provided the required historical material is available and the deployment explicitly permits such reproduction.</t>
        <t>Therefore:</t>
        <figure>
          <artwork type="example"><![CDATA[
    new issuance
        v
    current authenticated policy
        v
    minimum acceptable Profile

    vs.

    historical reproduction
        v
    historical Profile context
        v
    exact historical Reference
    ]]></artwork>
        </figure>
        <t>A cryptographic migration MUST NOT be interpreted as permission for an untrusted caller to request a weaker Profile.</t>
        <t>A conforming implementation MUST fail closed when a requested Profile is unknown, unsupported, below the configured issuance security floor, or otherwise disallowed by policy.</t>
      </section>
      <section anchor="s-74-" numbered="true" toc="default" title="Cryptographic Profile Deprecation">
        <t>Every Reference Cryptographic Profile SHOULD have an explicit lifecycle status:</t>
        <figure>
          <artwork type="example"><![CDATA[
    Active
    Deprecated
    Retired
    ]]></artwork>
        </figure>
        <t>A Profile MAY become:</t>
        <figure>
          <artwork type="example"><![CDATA[
    Deprecated
    ]]></artwork>
        </figure>
        <t>when a stronger or more appropriate Profile is available.</t>
        <t>A Profile MAY become:</t>
        <figure>
          <artwork type="example"><![CDATA[
    Retired
    ]]></artwork>
        </figure>
        <t>when continued issuance under that Profile is no longer acceptable.</t>
        <t>Retirement MUST NOT invalidate historical References.</t>
        <t>Historical Profiles MUST remain identifiable to conforming archival software for as long as historical Reference reproduction is required.</t>
        <t>A deployment MAY prohibit creation of new References under a Deprecated or Retired Profile while retaining the Profile for historical verification.</t>
        <t>A Deprecated or Retired Profile MUST NOT be silently substituted with another Profile.</t>
      </section>
      <section anchor="s-75-" numbered="true" toc="default" title="Cryptographic Profile Migration">
        <t>A cryptographic migration is the controlled introduction of a new Cryptographic Profile for future issuance or reproduction.</t>
        <t>A migration MUST identify:</t>
        <figure>
          <artwork type="example"><![CDATA[
    source Profile
    target Profile
    migration status
    effective issuance boundary
    historical preservation policy
    reproduction policy
    signature migration policy, if applicable
    hardware migration policy, if applicable
    ]]></artwork>
        </figure>
        <t>A migration MUST preserve:</t>
        <figure>
          <artwork type="example"><![CDATA[
    Entity Identity
    historical Reference
    historical Profile Version
    historical Reference Key Version
    historical Reference mapping
    ]]></artwork>
        </figure>
        <t>A migration MAY issue a new Reference for the same durable Entity when the Application Profile explicitly permits multiple Reference contexts.</t>
        <t>If multiple References exist for one Entity, the Application Profile MUST define which Reference is:</t>
        <figure>
          <artwork type="example"><![CDATA[
    current canonical Reference
    historical Reference
    alias
    migration successor
    ]]></artwork>
        </figure>
        <t>No migration process may silently replace an existing historical Reference.</t>
      </section>
      <section anchor="s-76-" numbered="true" toc="default" title="Protocol Versioning">
        <t>Protocol Version MUST identify the exact ARS construction.</t>
        <t>For example:</t>
        <figure>
          <artwork type="example"><![CDATA[
    ARS-1
    ]]></artwork>
        </figure>
        <t>defines this specification.</t>
        <t>A future:</t>
        <figure>
          <artwork type="example"><![CDATA[
    ARS-2
    ]]></artwork>
        </figure>
        <t>MAY change:</t>
        <figure>
          <artwork type="example"><![CDATA[
    serialization
    KDF architecture
    encoding
    checksum architecture
    Profile architecture
    Reference grammar
    ]]></artwork>
        </figure>
        <t>ARS-2 MUST NOT silently reinterpret an ARS-1 Reference.</t>
        <t>Historical ARS-1 References remain ARS-1 References.</t>
        <t>Cryptographic Profile changes that preserve the ARS-1 protocol architecture SHOULD use Profile Versioning rather than forcing a protocol-version change.</t>
      </section>
      <section anchor="s-77-" numbered="true" toc="default" title="Application Profile Requirements">
        <t>Every deployment SHOULD define:</t>
        <figure>
          <artwork type="example"><![CDATA[
    Namespace
    Application Profile ID
    Prefix Registry
    Entity Identity format
    First Creation Time policy
    Reference Cryptographic Profile ID
    Reference Cryptographic Profile Version
    Reference Key Version policy
    Application Profile Version
    data_bits
    maximum_payload_length
    Checksum policy
    Hardware Profile
    Signature Profile
    URL policy
    backup policy
    key rotation policy
    export/import policy
    collision policy
    hardware recovery policy, if applicable
    cryptographic migration policy
    ]]></artwork>
        </figure>
        <t>An Application Profile MAY be stricter than ARS-1.</t>
        <t>It MUST NOT weaken ARS-1 deterministic or canonical requirements.</t>
      </section>
      <section anchor="s-78-" numbered="true" toc="default" title="Example Application Profile">
        <t>ARS-1 does not mandate any specific real-world Application Profile.</t>
        <t>An illustrative Profile MAY define:</t>
        <figure>
          <artwork type="example"><![CDATA[
    Namespace:
        EXAMPLE

    Application Profile ID:
        PersonalArchive

    Application Profile Version:
        1

    Reference Cryptographic Profile ID:
        ARS1-REF

    Reference Cryptographic Profile Version:
        1

    data_bits:
        40

    maximum_payload_length:
        9
    ]]></artwork>
        </figure>
        <t>The checksum is 1 symbol (5 bits) as fixed by the protocol.</t>
        <t>Example Prefix Registry:</t>
        <figure>
          <artwork type="example"><![CDATA[
    NX:
        Project

    CJ3:
        Writing

    MR:
        Media

    KX4:
        Experience
    ]]></artwork>
        </figure>
        <t>The above is illustrative only.</t>
        <t>ARS-1 itself does not require 40-bit data, nine-symbol maximum Payloads, or any particular Prefix Registry.</t>
      </section>
      <section anchor="s-79-" numbered="true" toc="default" title="Formal Test Vector">
        <t>The following vector is normative.</t>
        <t>It uses a test-only Application Profile and the ARS-1 Default Reference Cryptographic Profile Version 1.</t>
        <t>All values below use the final ARS-1 alphabet:</t>
        <figure>
          <artwork type="example"><![CDATA[
    0123456789ABCDEFGHJKMNPQRSTVWXYZ
    ]]></artwork>
        </figure>
        <section anchor="inputs" numbered="true" toc="default" title="Inputs">
        <figure>
          <artwork type="example"><![CDATA[
    Protocol Version:
    1

    Application Profile ID:
    Example-40

    Application Profile Version:
    1

    Reference Cryptographic Profile ID:
    ARS1-REF

    Reference Cryptographic Profile Version:
    1

    Namespace:
    AEV

    Prefix:
    NX

    Entity Identity:
    0198f3c7-7e8d-7c12-a5e1-000000000001

    Identity Generation:
    1

    Reference Key Version:
    1

    Hardware Profile ID:
    NONE

    Hardware Profile Version:
    1

    Hardware Input:
    empty

    Root Secret:
    00112233445566778899aabbccddeeff
    00112233445566778899aabbccddeeff
    ]]></artwork>
        </figure>
        <t><tt>First Creation Time</tt> exists in the entity record but is deliberately NOT part of the Reference derivation vector.</t>
        <t>The test Application Profile defines:</t>
        <figure>
          <artwork type="example"><![CDATA[
    data_bits:
        40

    maximum_payload_length:
        9
    ]]></artwork>
        </figure>
        <t>The checksum is 1 symbol (5 bits) as fixed by the protocol.</t>
        <t>The following values were generated using the exact inputs above and the construction defined in Section 11, Section 30, Section 33, Section 34, Section 42, and Section 43. They have been cross-verified by 23 independent implementations (Python, Rust, Go, TypeScript, JavaScript, C, C++, C#, Java, PowerShell, Dart, Bash, AWK, Perl, sed, LaTeX, SQL, m4, bc, Make, troff, Assembly, FFmpeg) producing identical output.</t>
        </section>
        <section anchor="canonical-reference-record" numbered="true" toc="default" title="Canonical Reference Record">
        <t>Hexadecimal:</t>
        <figure>
          <artwork type="example"><![CDATA[
    00010a4578616d706c652d3430000108415253312d524546
    00010003414556024e58002430313938663363372d376538642d
    376331322d613565312d30303030303030303030303100000001
    00000001044e4f4e4500010000
    ]]></artwork>
        </figure>
        </section>
        <section anchor="reference-key" numbered="true" toc="default" title="Reference Key">
        <figure>
          <artwork type="example"><![CDATA[
    d017c2784b7727608283929f06497086cdbd680c9d7ffa73260ecbe68ed1a34f
    ]]></artwork>
        </figure>
        </section>
        <section anchor="reference-salt-input" numbered="true" toc="default" title="Reference Salt Input">
        <figure>
          <artwork type="example"><![CDATA[
    4152532d312f7265666572656e63652d73616c740a4578616d706c
    652d3430000108415253312d5245460001000000010003414556024e58
    ]]></artwork>
        </figure>
        </section>
        <section anchor="reference-salt" numbered="true" toc="default" title="Reference Salt">
        <figure>
          <artwork type="example"><![CDATA[
    4a75371f00fffe18a072faaaae941c18905cab120649a37a6106974243ca1aad
    ]]></artwork>
        </figure>
        </section>
        <section anchor="reference-material" numbered="true" toc="default" title="Reference Material">
        <figure>
          <artwork type="example"><![CDATA[
    6ddcc2caeddf82ea5f843ec7b48c145b4de5ee1a64f1bc0cd96d19579529f052
    ]]></artwork>
        </figure>
        </section>
        <section anchor="public-data" numbered="true" toc="default" title="Public Data">
        <t>First 40 bits:</t>
        <figure>
          <artwork type="example"><![CDATA[
    6ddcc2caed
    ]]></artwork>
        </figure>
        </section>
        <section anchor="canonical-data" numbered="true" toc="default" title="Canonical Data">
        <figure>
          <artwork type="example"><![CDATA[
    DQEC5JQD
    ]]></artwork>
        </figure>
        </section>
        <section anchor="checksum-body" numbered="true" toc="default" title="Checksum Body">
        <figure>
          <artwork type="example"><![CDATA[
    NX-DQEC5JQD
    ]]></artwork>
        </figure>
        </section>
        <section anchor="checksum-digest" numbered="true" toc="default" title="Checksum Digest">
        <figure>
          <artwork type="example"><![CDATA[
    e66740721579883487c3e7afd8d2525f8aed5c04e7152f37868929579dc44661
    ]]></artwork>
        </figure>
        </section>
        <section anchor="final-canonical-reference" numbered="true" toc="default" title="Final Canonical Reference">
        <figure>
          <artwork type="example"><![CDATA[
    NX-DQEC5JQDW
    ]]></artwork>
        </figure>
        <t>Any conforming ARS-1 implementation receiving exactly these inputs MUST produce the regenerated Final Canonical Reference character-for-character.</t>
        </section>
      </section>
      <section anchor="s-80-" numbered="true" toc="default" title="Negative Verification Vector">
        <t>The following Reference is derived from the Section 79 final Reference (<tt>NX-DQEC5JQDW</tt>) by corrupting the checksum symbol from <tt>W</tt> to <tt>X</tt>.</t>
        <t>The following Reference MUST fail checksum verification:</t>
        <figure>
          <artwork type="example"><![CDATA[
    NX-DQEC5JQDX
    ]]></artwork>
        </figure>
        <t>because the normative checksum does not match the supplied checksum symbol.</t>
        <t>A decoder MUST also reject non-canonical Base32 representations containing unnecessary leading zero-valued symbols.</t>
        <t>For example, a data value canonically represented as:</t>
        <figure>
          <artwork type="example"><![CDATA[
    ABC
    ]]></artwork>
        </figure>
        <t>MUST NOT accept:</t>
        <figure>
          <artwork type="example"><![CDATA[
    0ABC
    ]]></artwork>
        </figure>
        <t>as an equivalent canonical Reference payload.</t>
      </section>
      <section anchor="s-81-" numbered="true" toc="default" title="Independent Implementation Requirement">
        <t>A conforming implementation SHOULD pass:</t>
        <figure>
          <artwork type="example"><![CDATA[
    canonical serialization vectors
    Reference Cryptographic Profile vectors
    Reference Key vectors
    Reference Salt vectors
    Reference Material vectors
    Base32 vectors
    variable-length encoding vectors
    checksum vectors
    negative verification vectors
    Hardware Profile vectors
    Signature Profile vectors
    Profile migration vectors
    Profile identity separation vectors
    Cryptographic downgrade rejection vectors
    Hardware challenge construction vectors
    Hardware credential equivalence vectors
    ]]></artwork>
        </figure>
        <t>At least two independently implemented implementations SHOULD be cross-tested.</t>
        <t>Recommended implementation languages include:</t>
        <figure>
          <artwork type="example"><![CDATA[
    Rust
    TypeScript / JavaScript
    Go
    Python
    ]]></artwork>
        </figure>
        <t>Cross-language outputs MUST match exactly.</t>
        <t>Independent implementations SHOULD test at least one implementation in a memory-safe systems language and one implementation in a separate runtime or language ecosystem.</t>
      </section>
      <section anchor="s-82-" numbered="true" toc="default" title="Reference Implementation">
        <t>A production deployment SHOULD maintain a minimal reference implementation whose purpose is:</t>
        <figure>
          <artwork type="example"><![CDATA[
    canonical serialization
    Reference Cryptographic Profile handling
    key derivation
    Reference Material derivation
    Base32 encoding / decoding
    checksum generation / verification
    Reference reproduction
    Profile verification
    test-vector generation
    ]]></artwork>
        </figure>
        <t>The test-vector generator SHOULD be treated as a build-time or verification tool, not as part of the runtime trust model.</t>
        <t>Normative vectors SHOULD be generated from the reference implementation and independently verified before every protocol release.</t>
        <t>A reference implementation MUST NOT silently fall back to a different cryptographic Profile when a requested Profile is unavailable.</t>
      </section>
      <section anchor="s-83-" numbered="true" toc="default" title="Encoder / Decoder Property Tests">
        <t>A conforming implementation SHOULD test at least:</t>
        <figure>
          <artwork type="example"><![CDATA[
    Decode(Encode(x)) = x
    Encode(Decode(s)) = s
    ]]></artwork>
        </figure>
        <t>for a large corpus of generated values.</t>
        <t>The corpus SHOULD include:</t>
        <figure>
          <artwork type="example"><![CDATA[
    all-zero values
    single-bit values
    boundary values
    values with leading zero Base32 groups
    maximum profile values
    random values
    ]]></artwork>
        </figure>
        <t>Decoders SHOULD reject:</t>
        <figure>
          <artwork type="example"><![CDATA[
    invalid alphabet characters
    lowercase output when canonical uppercase is required
    non-canonical leading-zero encodings
    invalid padding bits
    empty payloads
    payloads exceeding profile limits
    unknown checksum profiles
    unknown cryptographic Profiles
    unknown Profile Identifier + Version pairs
    malformed version fields
    unsupported Unicode version declarations
    invalid Hardware Profile challenge constructions
    ]]></artwork>
        </figure>
        <t>Implementations SHOULD test that historical References remain reproducible after introducing a new Cryptographic Profile or Signature Profile.</t>
      </section>
      <section anchor="security-considerations" numbered="true" toc="default" title="Security Considerations">
        <t>A Secure ARS deployment MUST:</t>
        <ul>
          <li>use a CSPRNG for Root Secret generation</li>
          <li>use the minimum entropy required by the selected Reference Cryptographic Profile</li>
          <li>protect Root Secret material</li>
          <li>use an explicitly selected Reference Cryptographic Profile ID and Version</li>
          <li>use explicit Profile Versioning</li>
          <li>separate cryptographic purposes</li>
          <li>canonicalize all serialized inputs</li>
          <li>fail closed on malformed input</li>
          <li>preserve Reference Key Versions</li>
          <li>preserve Reference Cryptographic Profile Versions</li>
          <li>preserve historical References</li>
          <li>avoid hidden runtime entropy</li>
          <li>avoid silent collision fallback</li>
          <li>avoid silent cryptographic algorithm substitution</li>
          <li>enforce an authenticated minimum Profile policy for new issuance</li>
          <li>reject cryptographic downgrades for new issuance</li>
          <li>preserve Profile metadata required for historical reproduction</li>
        </ul>
        <t>For Reference Cryptographic Profile Version 1, implementations MUST:</t>
        <ul>
          <li>use a 256-bit Root Secret</li>
          <li>use HKDF-SHA-256 as specified <xref target="RFC5869"/></li>
          <li>produce a 256-bit Reference Key</li>
          <li>produce a 256-bit Reference Material value</li>
        </ul>
        <t>Implementations SHOULD also:</t>
        <ul>
          <li>zeroize sensitive intermediate material where practical</li>
          <li>minimize secret lifetime in memory</li>
          <li>avoid secret exposure in diagnostics</li>
          <li>protect encrypted backups</li>
          <li>audit key rotation</li>
          <li>audit cryptographic Profile migration</li>
          <li>test import/export reproducibility</li>
          <li>test historical Reference reproduction</li>
        </ul>
      </section>
      <section anchor="s-84-1-" numbered="true" toc="default" title="Root Secret Compromise Response">
        <t>A Root Secret compromise is a critical security incident. It affects the enumeration resistance property (Section 40) but does NOT affect Reference identity stability.</t>
        <t>Historical References remain canonical and MUST NOT be invalidated, reassigned, or reissued. The compromise is a confidentiality failure of the derivation secret, not an integrity failure of the Reference.</t>
        <section anchor="s-84-1-1-" numbered="true" toc="default" title="Derivation Structure and Compromise Scope">
        <t>Under Reference Cryptographic Profile Version 1, all Reference Key Versions are deterministically derived from the same Root Secret via HKDF-Expand (Section 11). The Reference Key Version is bound to the derivation context through the <tt>info</tt> parameter, but the Root Secret is the sole source of secret entropy for every Key Version.</t>
        <t>Therefore, an attacker who obtains the Root Secret can reconstruct the full derivation chain for ALL Reference Key Versions under that Root Secret, provided the Profile identifiers, Profile versions, and Key Version numbers are known (which they are, since they form part of the canonical Reference context):</t>
        <t>The derivation chain is: Root Secret -&gt; HKDF-Extract -&gt; PRK (pseudorandom key) -&gt; HKDF-Expand(info = ... || profile_id || profile_version || key_version || ...) -&gt; ReferenceKey(v) for every v.</t>
        <t>This means: Root Secret compromise = compromise of ALL Reference Key Versions derived from that Root Secret.</t>
        <t>A deployment that uses a single Root Secret across multiple Namespaces or Prefixes MUST treat the compromise as affecting the entire Root Secret domain. The Reference Salt (Section 33) provides domain separation between Application Profiles, Namespaces, and Prefixes, but the Salt is a public value derived from public inputs -- it does NOT provide additional secret entropy. Therefore, Salt-based domain separation does NOT limit the scope of a Root Secret compromise.</t>
        </section>
        <section anchor="s-84-1-2-" numbered="true" toc="default" title="Security Properties After Compromise">
        <t>A Root Secret compromise affects the following security properties:</t>
        <ul>
<li>Reference identity stability: PRESERVED. Historical References remain canonical, unchanged, and valid. The compromise does not alter or invalidate any issued Reference.</li>
<li>Enumeration resistance (compromised key context): LOST. The attacker can reproduce all existing References and predict Reference Material for entities whose canonical inputs are known, for ALL Key Keys under the compromised Root Secret. This loss is IRRECOVERABLE for the compromised Root Secret domain. No Key Version rotation under the same Root Secret can restore it, because the attacker can derive every future Key Version as well.</li>
<li>New issuance security: RESTORABLE ONLY by replacing the Root Secret. A new Reference Key Version under the SAME Root Secret does NOT restore enumeration resistance, because the attacker can derive the new Key Version from the compromised Root Secret. To restore enumeration resistance for new issuance, the deployment MUST generate and deploy a NEW, independent Root Secret. Key Version rotation under the same Root Secret is NOT sufficient.</li>
</ul>
        <t>The critical distinction is:</t>
        <ul>
          <li>Key Version rotation under the SAME Root Secret: changes the derivation context for new issuance; does NOT prevent the attacker from deriving the new Key Version; enumeration resistance remains LOST.</li>
          <li>New, independent Root Secret: attacker cannot derive keys from the new Root Secret; new issuance regains enumeration resistance; historical References under the OLD Root Secret remain canonical but their enumeration resistance is permanently lost.</li>
        </ul>
        </section>
        <section anchor="s-84-1-3-" numbered="true" toc="default" title="Compromise Response Procedure">
        <t>A deployment that detects or suspects Root Secret compromise MUST:</t>
        <ol>
          <li>Immediately generate a NEW, independent Root Secret using a CSPRNG. Do NOT derive the new Root Secret from the compromised Root Secret.</li>
          <li>Introduce a new Reference Key Version bound to the new Root Secret, or introduce a new Reference Cryptographic Profile if the compromise suggests structural weakness.</li>
          <li>Cease all new Reference issuance under the compromised Root Secret and ALL Reference Key Versions derived from it. New issuance MUST use the new Root Secret and new Key Version.</li>
          <li>Audit the scope of potential exposure:
            <ul>
              <li>identify all Reference Key Versions derived from the compromised Root Secret</li>
              <li>identify all Namespaces and Prefixes affected</li>
              <li>assess whether canonical entity inputs for affected References are publicly known</li>
              <li>evaluate the enumeration risk for each affected Namespace and Prefix</li>
            </ul>
          </li>
          <li>Preserve all historical References and their associated Profile metadata. Historical References MUST NOT be invalidated or reassigned. Historical References do NOT need to be reissued.</li>
          <li>Document the compromise incident, affected Root Secret, affected key versions, and remediation actions as part of the archival record.</li>
        </ol>
        </section>
        <section anchor="s-84-1-4-" numbered="true" toc="default" title="Post-Rotation Security Property Summary">
        <t>After deploying a new, independent Root Secret:</t>
        <ul>
<li>compromised Root Secret domain: historical References remain canonical and unchanged; identity stability: PRESERVED; enumeration resistance: PERMANENTLY LOST; cannot be restored by any means.</li>
<li>new Root Secret domain: new References regain full enumeration resistance; identity stability: PRESERVED (new References are canonical); new issuance security: RESTORED.</li>
</ul>
        <t>Root Secret compromise does NOT constitute a Reference identity failure. Historical References remain canonical identifiers for their original entities and do NOT need to be reissued. The failure is in the confidentiality of the derivation secret: the attacker can predict and reproduce References, but cannot alter or invalidate them.</t>
        </section>
        <section anchor="s-84-1-5-" numbered="true" toc="default" title="High-Security Deployment Guidance">
        <t>A deployment that requires stronger isolation against Root Secret compromise MAY adopt a per-Namespace or per-Prefix Root Secret strategy: Namespace A -&gt; Root Secret A, Namespace B -&gt; Root Secret B, Namespace C -&gt; Root Secret C.</t>
        <t>Under this model, compromise of Root Secret A does NOT affect the enumeration resistance of Namespaces B or C. Each Root Secret domain is cryptographically independent.</t>
        <t>This is a deployment-level decision. ARS-1 v1 does NOT mandate a single-Root-Secret model. The protocol's HKDF construction supports multiple independent Root Secrets without modification -- each Root Secret simply produces its own independent derivation chain.</t>
        <t>A deployment SHOULD document its Root Secret strategy as part of its Application Profile security policy, including:</t>
        <ul>
          <li>detection mechanisms</li>
          <li>escalation procedures</li>
          <li>Root Secret rotation procedure (new independent Root Secret, NOT key version rotation)</li>
          <li>communication plan for affected stakeholders</li>
          <li>forensic preservation requirements</li>
          <li>Root Secret isolation strategy (single vs. per-Namespace vs. per-Prefix)</li>
        </ul>
        </section>
      </section>
      <section anchor="s-84-2-" numbered="true" toc="default" title="Profile Identifier Uniqueness">
        <t>Profile Identifier uniqueness is scoped to the applicable ARS Profile Registry (Section 84.3). Within a Registry, each Identifier MUST be unique and permanent.</t>
        <t>The following Profile Identifiers are defined by this specification and registered in the ARS Canonical Profile Registries (Section 84.3):</t>
        <ul>
<li>ARS1-REF: Reference Cryptographic Profile Identifier (Version 1 defined in Section 9)</li>
<li>NONE: Hardware Profile Identifier (no hardware)</li>
</ul>
        <t>These protocol-defined identifiers are reserved and MUST NOT be redefined by Application Profiles or deployments.</t>
        <t>A deployment MAY define its own Profile Identifiers. When two independent deployments need to interoperate, they SHOULD exchange and verify complete Profile definitions before interoperation. Cross-deployment reproduction or verification requires explicit Profile alignment.</t>
        <t>A deployment SHOULD maintain an internal registry of all Profile Identifiers it uses. The internal registry SHOULD follow the same field model as the ARS Canonical Profile Registries (Section 84.3).</t>
      </section>
      <section anchor="s-84-3-" numbered="true" toc="default" title="ARS Profile Registry Model">
        <t>ARS-1 defines a formal Profile Registry architecture consisting of three Canonical Profile Registries, each governing a distinct Profile type:</t>
        <figure>
          <artwork type="example"><![CDATA[
    ARS-1
    |
    +-- ARS Reference Cryptographic Profile Registry
    |     Governs: Reference Cryptographic Profiles (Section 9)
    |
    +-- ARS Signature Profile Registry
    |     Governs: Signature Profiles (Section 58)
    |
    +-- ARS Hardware Profile Registry
          Governs: Hardware Profiles (Section 46-50)
    ]]></artwork>
        </figure>
        <t>Application Profile Identifiers are deployment-scoped and are NOT governed by a Canonical Registry. Cross-deployment Application Profile alignment is the responsibility of the interoperating deployments (Section 84.2).</t>
        <section anchor="s-84-3-1-" numbered="true" toc="default" title="Registry Required Fields">
        <t>Every entry in a Canonical Profile Registry MUST include:</t>
        <ul>
<li>Identifier: The permanent, unique Profile Identifier (ASCII-only, no version suffix).</li>
<li>Version: The Profile Version (positive integer).</li>
<li>Name: Human-readable name of the Profile.</li>
<li>Status: Lifecycle status: Active / Deprecated / Retired / Reserved.</li>
<li>Specification: Reference to the defining specification or document.</li>
<li>Security Target: Engineering security designation for the Profile.</li>
<li>Change Controller: The entity responsible for approving changes to this Registry entry.</li>
</ul>
        <t>The ordered pair <tt>(Identifier, Version)</tt> is permanent and MUST NOT be reused for a different Profile definition.</t>
        <t>A <tt>Reserved</tt> status indicates that an Identifier (or Identifier + Version pair) is set aside for future or experimental use. A Reserved entry MUST NOT be used in production Reference derivation until its status changes to <tt>Active</tt>.</t>
        </section>
        <section anchor="s-84-3-2-" numbered="true" toc="default" title="Registry Lifecycle Status Values">
        <ul>
<li>Active: The Profile is approved for new issuance.</li>
<li>Deprecated: The Profile is superseded but remains valid for historical reproduction. New issuance is discouraged but not prohibited unless deployment policy forbids it.</li>
<li>Retired: The Profile is no longer approved for new issuance. Historical References remain canonical. The Profile MUST remain identifiable for historical reproduction.</li>
<li>Reserved: The Identifier or Identifier + Version pair is set aside and MUST NOT be used in production until the status changes to Active.</li>
</ul>
        <t>Status transitions:</t>
        <ul>
<li>Reserved -&gt; Active: Permitted when the Profile definition is finalized.</li>
<li>Active -&gt; Deprecated: Permitted when a successor Profile is available.</li>
<li>Active -&gt; Retired: Permitted when continued issuance is no longer acceptable.</li>
<li>Deprecated -&gt; Retired: Permitted.</li>
<li>Retired -&gt; Active: NOT permitted. A Retired Profile MUST NOT be reactivated.</li>
<li>Any -&gt; Reserved: NOT permitted after initial registration.</li>
</ul>
        <t>Once an <tt>(Identifier, Version)</tt> pair has been registered with any status other than <tt>Reserved</tt>, it MUST NOT be reused for a different Profile definition, even if the status becomes <tt>Retired</tt>.</t>
        </section>
        <section anchor="s-84-3-3-" numbered="true" toc="default" title="Identifier Allocation Rules">
        <t>Profile Identifiers are allocated on a first-come, first-served basis within each Registry, subject to review by the Change Controller.</t>
        <t>Identifier allocation rules:</t>
        <ol>
          <li>An Identifier MUST be unique within its Registry.</li>
          <li>An Identifier MUST NOT include a version suffix. Version is always a separate field.</li>
          <li>An Identifier MUST be ASCII-only (Section 31).</li>
          <li>An Identifier MUST be between 3 and 32 characters.</li>
          <li>An Identifier SHOULD be mnemonic of the Profile's purpose.</li>
          <li>The Identifier prefix "ARS1-" is a protocol-defined namespace reservation. Identifiers beginning with "ARS1-" are reserved for protocol-defined Profiles and MUST NOT be allocated by deployments without explicit protocol authorization. Third-party Identifiers MAY use other prefixes (e.g., "ACME-REF", "FOO-HW").</li>
          <li>The Identifier "NONE" is reserved for the no-hardware Hardware Profile.</li>
          <li>Once allocated, an Identifier is permanent and MUST NOT be renamed.</li>
        </ol>
        </section>
        <section anchor="s-84-3-4-" numbered="true" toc="default" title="Version Allocation Rules">
        <ol>
          <li>Versions are positive integers starting from 1.</li>
          <li>A new Version of an existing Profile Identifier MAY be registered when the Profile definition changes in a way that affects cryptographic output, challenge construction, signature format, or other interoperability-relevant properties.</li>
          <li>An existing (Identifier, Version) pair MUST NOT be reused for a different Profile definition.</li>
          <li>Version numbers SHOULD normally be monotonically increasing within an Identifier. Gaps MAY exist due to reservation, withdrawal, or other documented registry operations. Version numbers MUST NOT be reused.</li>
          <li>A Version that has been registered as Active, Deprecated, or Retired MUST NOT be silently redefined.</li>
        </ol>
        </section>
        <section anchor="s-84-3-5-" numbered="true" toc="default" title="Change Controller">
        <t>The Change Controller for the ARS Canonical Profile Registries is the ARS-1 specification maintainer, currently the ARS-1 GitHub repository:</t>
        <figure>
          <artwork type="example"><![CDATA[
    https://github.com/Juwan-Hwang/ARS-1
    ]]></artwork>
        </figure>
        <t>The Change Controller is responsible for:</t>
        <ul>
          <li>Reviewing registration requests</li>
          <li>Approving or rejecting Identifier / Version allocations</li>
          <li>Publishing the canonical Registry contents</li>
          <li>Maintaining the historical Registry record</li>
        </ul>
        <t>A change to a Registry entry (other than status transitions) MUST NOT alter any already-registered <tt>(Identifier, Version)</tt> pair. New entries and status transitions are published as amendments to the Registry tables in Section 84.4.</t>
        </section>
        <section anchor="s-84-3-6-" numbered="true" toc="default" title="Canonical Registry Publication">
        <t>The Canonical Profile Registries are published and maintained in the ARS-1 specification repository. The Registry contents are normatively defined by the tables in Section 84.4 of this specification.</t>
        <t>Deployments SHOULD consult the Canonical Profile Registries when validating Profile Identifiers received from external sources. However, the Canonical Registries do NOT override deployment-local policy for Profile selection (Section 73).</t>
        </section>
      </section>
      <section anchor="s-84-4-" numbered="true" toc="default" title="Canonical Profile Registry -- Initial Entries">
        <section anchor="s-84-4-1-" numbered="true" toc="default" title="ARS Reference Cryptographic Profile Registry">
        <ul>
<li>Identifier: ARS1-REF</li>
<li>Version: 1</li>
<li>Name: ARS-1 Default Reference Cryptographic Profile</li>
<li>Status: Active</li>
<li>Specification: ARS-1 Section 9, 11, 33, 34</li>
<li>Security Target: ~128-bit classical</li>
<li>Change Controller: GitHub</li>
</ul>
        </section>
        <section anchor="s-84-4-2-" numbered="true" toc="default" title="ARS Hardware Profile Registry">
        <ul>
<li>Identifier: NONE</li>
<li>Version: 1</li>
<li>Name: No Hardware Profile</li>
<li>Status: Active</li>
<li>Specification: ARS-1 Section 47</li>
<li>Security Target: N/A (no hardware)</li>
<li>Change Controller: GitHub</li>
</ul>
        </section>
        <section anchor="s-84-4-3-" numbered="true" toc="default" title="ARS Signature Profile Registry">
        <t>The ARS Signature Profile Registry is empty as of ARS-1 v1.0-rc2. ARS-1 does not define a default Signature Profile. Deployments requiring digital signatures SHOULD register their Signature Profile in their internal registry and MAY request registration in the Canonical Registry.</t>
        </section>
      </section>
      <section anchor="s-84-5-" numbered="true" toc="default" title="IANA Considerations">
        <t>ARS-1 v1.0 does NOT request IANA to create any new registries.</t>
        <t>The ARS Canonical Profile Registries (Section 84.3, 84.4) are maintained as GitHub-maintained canonical registries within the ARS-1 specification repository.</t>
        <t>If future protocol evolution requires IANA-managed registries, the following migration path is defined:</t>
        <figure>
          <artwork type="example"><![CDATA[
    GitHub Canonical Registry
        v
    Internet-Draft (IETF or independent submission)
        v
    IANA Registry creation request
    ]]></artwork>
        </figure>
        <t>At that point, the IANA-managed Registry would succeed the GitHub Canonical Registry as the authoritative source. Existing GitHub Registry entries would be migrated as initial IANA Registry entries. The <tt>(Identifier, Version)</tt> permanence rules (Section 84.3.1, 84.3.4) would carry over to the IANA Registry without modification.</t>
        <t>This section is informative for v1.0. A future ARS specification version MAY make IANA-related sections normative.</t>
      </section>
      <section anchor="s-85-" numbered="true" toc="default" title="Hard Invariants">
        <t>ARS-1 MUST satisfy all of the following:</t>
        <ol>
          <li>Identical canonical inputs under the same Reference Cryptographic Profile ID and Version produce identical References.</li>
          <li>Reference derivation contains no hidden randomness.</li>
          <li>Root Secrets are generated with a CSPRNG.</li>
          <li>The selected Cryptographic Profile defines the required Root Secret security level.</li>
          <li>Reference derivation uses an explicit Cryptographic Profile ID and Version.</li>
          <li>Cryptographic purposes use independent derivation domains.</li>
          <li>Entity Identity is immutable.</li>
          <li>First Creation Time is immutable archival metadata when used by the Application Profile.</li>
          <li>First Creation Time is not a Reference derivation input in ARS-1 v1.</li>
          <li>Permanent identity does not depend on mutable titles or content.</li>
          <li>Sequence numbers are not permanent identity unless explicitly profiled.</li>
          <li>Payload length may naturally vary.</li>
          <li>ARS-1 does not prescribe one universal Payload length.</li>
          <li>Application Profiles define their own data-bit and length policies.</li>
          <li>The ARS-1 alphabet contains exactly 32 ASCII alphanumeric symbols.</li>
          <li>The ARS-1 alphabet contains no punctuation or other symbols.</li>
          <li>Hardware is optional.</li>
          <li>Hardware Profiles are vendor-neutral.</li>
          <li>Hardware-derived Reference inputs are deterministic.</li>
          <li>Hardware input is explicit canonical input.</li>
          <li>Digital signatures do not determine the Reference.</li>
          <li>Signature Profiles are independent from Reference derivation.</li>
          <li>Signature Profiles are replaceable without rewriting historical References.</li>
          <li>Checksum is deterministic.</li>
          <li>Checksum is not cryptographic authentication.</li>
          <li>Reference validity is not authorization.</li>
          <li>Reference validity is not content integrity.</li>
          <li>Historical References never change.</li>
          <li>Historical References are never reused.</li>
          <li>Export/import preserves References.</li>
          <li>Key rotation does not rewrite historical References.</li>
          <li>Prefix semantics are Namespace-local.</li>
          <li>Prefix meanings cannot be silently reassigned.</li>
          <li>Collision fallback cannot introduce hidden randomness.</li>
          <li>A detected collision is an issuance failure unless canonical inputs are deliberately changed.</li>
          <li>Canonical URLs are deterministic.</li>
          <li>Canonical Base32 representations are unique.</li>
          <li>Independent conforming implementations produce identical References.</li>
          <li>Cryptographic algorithms are public.</li>
          <li>Secret cryptographic material is never embedded in source code.</li>
          <li>Protocol Version, Application Profile ID/Version, Reference Cryptographic Profile ID/Version, Reference Key Version and Hardware Profile ID/Version are distinct identity/version dimensions.</li>
          <li>Signature Profile Version does not affect Reference derivation.</li>
          <li>Cryptographic Profile changes MUST be explicit.</li>
          <li>A deprecated Cryptographic Profile MUST NOT silently reinterpret historical References.</li>
          <li>Historical References remain valid after Cryptographic Profile migration.</li>
          <li>A Signature Profile may be migrated without changing the associated Reference.</li>
          <li>Canonical References use uppercase output.</li>
          <li>The ARS-1 alphabet excludes I, L, O and U.</li>
          <li>The ARS-1 alphabet is exactly: 0123456789ABCDEFGHJKMNPQRSTVWXYZ</li>
          <li>An empty canonical Payload is never valid.</li>
          <li>Leading zero-valued Base32 symbols MUST be omitted in canonical encoding.</li>
          <li>Variable-length canonical fields MUST use explicit length encoding.</li>
          <li>Reference Salt construction MUST use the normative length-delimited serialization, including Application Profile Identifier and Version.</li>
          <li>CanonicalReferenceRecord in cryptographic operations MUST mean the exact binary serialization defined in Section 30.</li>
          <li>Hardware loss MUST NOT mutate an already issued Reference.</li>
          <li>Stored canonical hardware_input MAY permit reproduction without physical access to the original hardware.</li>
          <li>Reference derivation MUST NOT depend on a signature.</li>
          <li>A future Cryptographic Profile MUST NOT silently alter an existing Profile Version.</li>
          <li>A future Signature Profile MUST NOT silently alter an existing Signature Profile Version.</li>
          <li>A future Hardware Profile MUST NOT silently alter an existing Hardware Profile Version.</li>
          <li>Cryptographic migration MUST preserve historical Reference identity.</li>
          <li>Reference Resolution and Reference Reproduction are distinct operations.</li>
          <li>Protocol evolution SHOULD prefer Profile Versioning when the existing ARS architecture remains semantically valid.</li>
          <li>ARS-1 MUST NOT require a particular classical public-key algorithm for its core Reference construction.</li>
          <li>ARS-1 MUST preserve cryptographic agility as a protocol design property.</li>
          <li>Different Reference Cryptographic Profiles are not required to derive the same Reference from the same entity context.</li>
          <li>Historical References remain bound to their original Reference Cryptographic Profile and Reference Key context.</li>
          <li>Cryptographic Profile migration MUST NOT silently replace a historical Reference.</li>
          <li>Cryptographic Profile security targets are engineering designations, not permanent guarantees of future security.</li>
          <li>A cryptographic Profile MUST NOT be treated as permanently immune to future quantum or classical cryptanalysis solely because it is designated as active.</li>
          <li>A Profile Identity is the exact ordered pair of Profile Identifier and Profile Version.</li>
          <li>Application Profile Identity is explicitly represented in the canonical Reference context and cryptographically bound to Reference Salt derivation.</li>
          <li>Reference Cryptographic Profile Identity is explicitly represented in the canonical Reference context and cryptographically bound to key derivation.</li>
          <li>New Reference issuance MUST obey the deployment's authenticated minimum Cryptographic Profile policy.</li>
          <li>Historical reproduction MAY use the historical Cryptographic Profile context and MUST NOT silently substitute a different Profile.</li>
          <li>ARS-1 core Profile identifiers are ASCII-only.</li>
          <li>Unicode-enabled canonical fields MUST have a Profile-defined normalization form and fixed Unicode version.</li>
          <li>Hardware Profile challenge construction MUST be deterministic and fully specified.</li>
          <li>Hardware credential equivalence MUST be explicitly defined by the Hardware Profile when equivalence is claimed.</li>
          <li>Hardware Profile output truncation and encoding MUST be explicitly versioned.</li>
          <li>The checksum provides a 32-state checksum space. Its random collision probability is 1/32. This MUST NOT be interpreted as authentication or cryptographic integrity.</li>
          <li>The ARS-1 checksum is a hash-truncation checksum. It has NO deterministic detection guarantee for any specific error class. Under the pseudorandom-function / random-oracle model, the expected miss probability for all error classes is 1/32.</li>
          <li>Root Secret compromise does NOT invalidate historical References. Historical References remain canonical and do NOT need to be reissued. Reference identity stability is preserved.</li>
          <li>Root Secret compromise causes loss of enumeration resistance for the compromised Root Secret domain, including ALL Reference Key Versions derived from that Root Secret. This loss is permanent and irrecoverable. To restore enumeration resistance for new issuance, the deployment MUST generate a NEW, independent Root Secret. Key Version rotation under the SAME Root Secret is NOT sufficient.</li>
          <li>Reference Salt (Section 33) provides domain separation for public inputs but does NOT provide additional secret entropy. Salt-based domain separation does NOT limit the scope of a Root Secret compromise.</li>
          <li>A deployment MAY adopt per-Namespace or per-Prefix Root Secrets for stronger isolation. ARS-1 v1 does NOT mandate a single-Root-Secret model.</li>
          <li>Hardware Profile field order in canonical serialization is hardware_profile_id before hardware_profile_version, consistent with all other Profile field ordering.</li>
          <li>A Profile Identifier MUST NOT include a version suffix. Version is always a separate field.</li>
          <li>The ordered pair (Identifier, Version) is permanent and MUST NOT be reused for a different Profile definition.</li>
          <li>ARS-1 defines three Canonical Profile Registries: Reference Cryptographic Profile Registry, Signature Profile Registry, and Hardware Profile Registry.</li>
          <li>A Retired Profile MUST NOT be reactivated to Active status.</li>
          <li>The Identifier prefix "ARS1-" is reserved for protocol-defined Profiles. Third-party Identifiers MAY use other prefixes. Deployments MUST NOT allocate Identifiers beginning with "ARS1-" without explicit protocol authorization.</li>
        </ol>
      </section>
      <section anchor="s-86-" numbered="true" toc="default" title="Long-Term Security Position">
        <t>ARS-1 separates:</t>
        <figure>
          <artwork type="example"><![CDATA[
    stable archival identity
    ]]></artwork>
        </figure>
        <t>from:</t>
        <figure>
          <artwork type="example"><![CDATA[
    current cryptographic assumptions
    ]]></artwork>
        </figure>
        <t>The intended long-term model is:</t>
        <figure>
          <artwork type="example"><![CDATA[
                    Stable Reference
                           |
            +--------------[U+253C]--------------+
            |              |              |
       Reference       Signature      Hardware
       Cryptography      Profile        Profile
            |              |              |
            v              v              v
         Versioned      Versioned      Versioned
         Profile        Profile        Profile
    ]]></artwork>
        </figure>
        <t>Therefore:</t>
        <figure>
          <artwork type="example"><![CDATA[
    Reference
        v
    does not need to change
    ]]></artwork>
        </figure>
        <t>when:</t>
        <figure>
          <artwork type="example"><![CDATA[
    current hash/KDF construction
          v
    future stronger construction
    ]]></artwork>
        </figure>
        <t>or:</t>
        <figure>
          <artwork type="example"><![CDATA[
    Classical Signature
          v
    Post-Quantum Signature
    ]]></artwork>
        </figure>
        <t>or:</t>
        <figure>
          <artwork type="example"><![CDATA[
    Hardware Profile v1
          v
    Hardware Profile v2
    ]]></artwork>
        </figure>
        <t>The purpose of cryptographic agility is not to predict the future algorithm.</t>
        <t>The purpose is to ensure that ARS does not need to predict it.</t>
        <t>A Cryptographic Profile migration may produce a different Reference for a newly derived Reference context. This is expected and does not constitute mutation of the historical Reference.</t>
      </section>
      <section anchor="s-87-" numbered="true" toc="default" title="Security Model">
        <t>ARS should be understood as four independent layers:</t>
        <figure>
          <artwork type="example"><![CDATA[
    Layer 1 -- Identity
        Entity Identity
        Identity Generation

    Layer 2 -- Reference
        Reference Cryptographic Profile ID / Version
        Root Secret
        Reference Key
        Reference Material
        Public Reference

    Layer 3 -- Integrity / Provenance
        State Root
        Content Hash
        Digital Signature
        Signature Profile

    Layer 4 -- Access Control
        Authentication
        Authorization
        Policy
    ]]></artwork>
        </figure>
        <t>No layer may implicitly replace another.</t>
        <t>Cryptographic algorithm migration SHOULD occur within the relevant layer and SHOULD NOT require cross-layer identity mutation.</t>
      </section>
      <section anchor="s-88-" numbered="true" toc="default" title="Final Architecture">
        <figure>
          <artwork type="example"><![CDATA[
                             ARS-1
                               |
                       Application Profile ID/Version
                               |
                 +-------------[U+2534]-------------+
                 |                           |
           Canonical Entity            Optional Hardware
               Context                     Input
                 |                           |
                 +-------------[U+252C]-------------+
                               v
                  Reference Cryptographic
                  Profile ID/Version
                               v
                        Reference Key
                               v
                        Reference Material
                               v
                        Public Data Bits
                               v
                     Canonical Base32 Encoding
                               v
                           Checksum
                               v
                        Public Reference
                               |
                               v
                               URL
    ]]></artwork>
        </figure>
        <t>Separately:</t>
        <figure>
          <artwork type="example"><![CDATA[
    Signature Profile
            v
    Digital Signature
            v
    Reference + State Root
    ]]></artwork>
        </figure>
        <t>Separately:</t>
        <figure>
          <artwork type="example"><![CDATA[
    State Root
        v
    Historical Content Integrity
    ]]></artwork>
        </figure>
      </section>
      <section anchor="s-89-" numbered="true" toc="default" title="Final Principle">
        <t>ARS-1 is not a prettier UUID <xref target="RFC4122"/>.</t>
        <t>It is a:</t>
        <t><strong>deterministic archival reference language for durable digital entities.</strong></t>
        <t>Its defining visual property is:</t>
        <t><strong>Prefix + naturally variable-length cryptographic Payload.</strong></t>
        <t>It deliberately does not mandate one universal Payload length.</t>
        <t>Its defining technical property is:</t>
        <t><strong>The same complete canonical conditions, applicable Cryptographic Profile, and same key material always produce exactly the same Reference across independent implementations.</strong></t>
        <t>Its defining security property is:</t>
        <t><strong>The algorithms are explicit and versioned. Security derives from high-entropy protected secret material and standardized cryptographic constructions rather than from obscurity.</strong></t>
        <t>Its defining long-term property is:</t>
        <t><strong>Cryptographic assumptions may evolve without requiring the reassignment of historical References.</strong></t>
        <t>Its defining extensibility property is:</t>
        <t><strong>Reference Cryptographic Profiles, Signature Profiles, and Hardware Profiles are independently versioned and replaceable.</strong></t>
        <t>A future cryptographic transition SHOULD therefore look like:</t>
        <figure>
          <artwork type="example"><![CDATA[
    Old Profile
        v
    Historical References remain unchanged

    New Profile
        v
    Future Reference contexts / signatures / hardware mechanisms
    ]]></artwork>
        </figure>
        <t>rather than:</t>
        <figure>
          <artwork type="example"><![CDATA[
    Old cryptography
        v
    Reissue every historical Reference
    ]]></artwork>
        </figure>
        <t>The protocol is designed not to predict which cryptographic assumptions will remain valid forever.</t>
        <t>It is designed so that ARS can survive when those assumptions change.</t>
        <t>For ARS-1:</t>
        <figure>
          <artwork type="example"><![CDATA[
    Stable Identity
            +
    Cryptographic Agility
            +
    Canonical Serialization
            +
    Variable-Length Encoding
            +
    Permanent Non-Reuse
            +
    Portable Reproduction
            +
    Independent Verification
    ]]></artwork>
        </figure>
        <t>constitute the protocol's long-term archival model.</t>
        <t>Profiles MAY define external lifecycle metadata such as expiration, revocation, or tombstone state. Such metadata MUST NOT alter the canonical Reference unless explicitly defined by a new protocol version.</t>
        <t>ARS-1 itself remains general-purpose and does not mandate any particular application-level Payload length or cryptographic signature algorithm.</t>
      </section>
      <section anchor="s-Appendix A" numbered="false" toc="default" title="ARS URI Scheme">
        <t>The <tt>ars</tt> URI scheme is formally specified by <xref target="ARSURI"/> -- ARS URI Scheme -- A URI Scheme for ARS-1 References, v1.0-rc2, available at &lt;https://github.com/Juwan-Hwang/ARS-1/blob/main/spec/ARS-URI.md&gt;.</t>
        <t>The <tt>ars</tt> URI scheme is registered as a provisional URI scheme in the IANA URI Schemes Registry (&lt;https://www.iana.org/assignments/uri-schemes&gt;), following the registration guidelines of <xref target="RFC7595"/> and the URI syntax of <xref target="RFC3986"/>.</t>
        <t>The <tt>ars</tt> URI scheme defines the syntax <tt>ars://&lt;namespace&gt;/&lt;local-reference&gt;</tt> for representing ARS-1 References as URIs. It includes the complete ABNF grammar, authority/path semantics, case sensitivity rules, percent-encoding rules, canonicalization, resolution semantics, and IANA provisional registration template.</t>
        <t>Conforming ARS-1 implementations are NOT required to support the <tt>ars</tt> URI form. The canonical ARS-1 Reference representation is always the Local Reference form defined in Section 21. Internationalized Resource Identifiers <xref target="RFC3987"/> are out of scope for ARS-1 References, which use a restricted ASCII-compatible character set.</t>
      </section>
  </middle>

  <back>
    <references anchor="normative-references" title="Normative References">
      <reference anchor="RFC2119" target="https://www.rfc-editor.org/info/rfc2119">
        <front>
          <title>Key words for use in RFCs to Indicate Requirement Levels</title>
          <author fullname="S. Bradner" initials="S." surname="Bradner"/>
          <date year="1997" month="March"/>
        </front>
        <seriesInfo name="BCP" value="14"/>
        <seriesInfo name="RFC" value="2119"/>
      </reference>
      <reference anchor="RFC8174" target="https://www.rfc-editor.org/info/rfc8174">
        <front>
          <title>Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words</title>
          <author fullname="B. Leiba" initials="B." surname="Leiba"/>
          <date year="2017" month="May"/>
        </front>
        <seriesInfo name="BCP" value="14"/>
        <seriesInfo name="RFC" value="8174"/>
      </reference>
      <reference anchor="RFC3986" target="https://www.rfc-editor.org/info/rfc3986">
        <front>
          <title>Uniform Resource Identifier (URI): Generic Syntax</title>
          <author fullname="T. Berners-Lee" initials="T." surname="Berners-Lee"/>
          <author fullname="R. Fielding" initials="R." surname="Fielding"/>
          <author fullname="L. Masinter" initials="L." surname="Masinter"/>
          <date year="2005" month="January"/>
        </front>
        <seriesInfo name="RFC" value="3986"/>
        <seriesInfo name="STD" value="66"/>
      </reference>
      <reference anchor="RFC5234" target="https://www.rfc-editor.org/info/rfc5234">
        <front>
          <title>Augmented BNF for Syntax Specifications: ABNF</title>
          <author fullname="D. Crocker" initials="D." surname="Crocker"/>
          <author fullname="P. Overell" initials="P." surname="Overell"/>
          <date year="2008" month="January"/>
        </front>
        <seriesInfo name="STD" value="68"/>
        <seriesInfo name="RFC" value="5234"/>
      </reference>
      <reference anchor="RFC5869" target="https://www.rfc-editor.org/info/rfc5869">
        <front>
          <title>HMAC-based Extract-and-Expand Key Derivation Function (HKDF)</title>
          <author fullname="H. Krawczyk" initials="H." surname="Krawczyk"/>
          <author fullname="P. Eronen" initials="P." surname="Eronen"/>
          <date year="2010" month="May"/>
        </front>
        <seriesInfo name="RFC" value="5869"/>
      </reference>
      <reference anchor="RFC7595" target="https://www.rfc-editor.org/info/rfc7595">
        <front>
          <title>Guidelines and Registration Procedures for URI Schemes</title>
          <author fullname="D. Thaler" initials="D." surname="Thaler" role="editor"/>
          <author fullname="T. Hansen" initials="T." surname="Hansen"/>
          <author fullname="T. Hardie" initials="T." surname="Hardie"/>
          <date year="2015" month="December"/>
        </front>
        <seriesInfo name="RFC" value="7595"/>
      </reference>
    </references>
    <references anchor="informative-references" title="Informative References">
      <reference anchor="RFC4122" target="https://www.rfc-editor.org/info/rfc4122">
        <front>
          <title>A Universally Unique Identifier (UUID) URN Namespace</title>
          <author fullname="P. Leach" initials="P." surname="Leach"/>
          <author fullname="M. Mealling" initials="M." surname="Mealling"/>
          <author fullname="R. Salz" initials="R." surname="Salz"/>
          <date year="2005" month="July"/>
        </front>
        <seriesInfo name="RFC" value="4122"/>
      </reference>
      <reference anchor="RFC3987" target="https://www.rfc-editor.org/info/rfc3987">
        <front>
          <title>Internationalized Resource Identifiers (IRIs)</title>
          <author fullname="M. Duerst" initials="M." surname="Duerst"/>
          <author fullname="M. Suignard" initials="M." surname="Suignard"/>
          <date year="2005" month="January"/>
        </front>
        <seriesInfo name="RFC" value="3987"/>
      </reference>
      <reference anchor="ARSURI" target="https://github.com/Juwan-Hwang/ARS-1/blob/main/spec/ARS-URI.md">
        <front>
          <title>ARS URI Scheme: A URI Scheme for ARS-1 References</title>
          <author fullname="Juwan Hwang" initials="J." surname="Hwang"/>
          <date year="2026" month="August"/>
        </front>
        <seriesInfo name="Internet-Draft" value="draft-juwan-ars-uri-00"/>
      </reference>
    </references>

    <section anchor="acknowledgments" numbered="false" toc="default" title="Acknowledgments">
      <t>The ARS-1 protocol and its 23 independent implementations provided the foundation for this specification.</t>
    </section>
  </back>
</rfc>
