Chapter 7: Open Questions
This chapter lists the open problems that the current protocol layer leaves undecided, to be resolved by implementation specs, future protocol versions, or standalone ADRs. Each item maps to the same entry in Section 10 of design.md and may be refined further when open-questions.md is archived in the upcoming Task 8.
These items are not flaws in the FayID protocol; they are extension points that have been intentionally left open. Their common trait is that deciding them prematurely at the protocol layer would either constrain implementation freedom or require revision as the ecosystem evolves.
1. Specific Hash / Signature / KDF Algorithms
Issue: the protocol layer only lists candidates (Ed25519 / HKDF-SHA256 / BIP-39); the final choice is left to the implementation spec.
Scope: cross-implementation interoperability, cryptographic audit
Direction: pin the algorithms in the implementation spec, alongside versioning (e.g., the v1 suffix in fayid/dyn/v1, fayid/gmc/v1). Future algorithm upgrades can coexist via new version numbers.
2. Dynamic Code Time Window Length
Issue: the protocol layer requires only that a Dynamic Code have an expiresAt; the specific length (minutes, hours) is an implementation policy decision.
Scope: user experience, privacy strength, rotation frequency
Direction: implementations tailor it to the scenario. High-security scenarios use a short window (e.g., 5 minutes); ordinary scenarios may relax to hour-scale.
3. Verification Code Failure Rate-Limit Thresholds
Issue: the window width, failure-count threshold, and back-off strategy for VERIFICATION_RATE_LIMITED are all implementation decisions.
Scope: brute-force resistance, user experience
Direction: follow industry norms (e.g., exponential back-off); the implementation spec defines defaults.
4. Default TTL and Renewal Model for Authorization Grants
Issue: the protocol layer requires only that expiresAt be explicit; concrete models such as renewal, sliding expiration, or short TTL plus refresh tokens are left to the implementation spec.
Scope: user experience, security, interoperability with legacy auth sources
Direction: implementation specs may introduce a RefreshGrant type or apply differentiated TTLs per legacySourceKind.
5. Human ID Revocation Semantics
Issue: at the current protocol layer, Human IDs do not enter the REVOKED state. The recovery path after Mnemonic compromise (Human ID re-issue, reputation migration, etc.) is out of scope for this specification.
Scope: disaster recovery, reputation continuity
Direction: may evolve toward:
- A higher-layer "reputation migration" mechanism (an on-chain declaration mapping old opaqueRef → new opaqueRef)
- Or a constrained Human ID revocation plus successor mechanism in protocol v2
6. resourceRef Namespace Specification
Issue: this specification only suggests the <scheme>://<authority>/<path> form; the formal grammar may evolve into a standalone spec or align with an existing URI standard.
Scope: cross-implementation interoperability
Direction: may form a separate "FayID Resource Identifier" specification or directly adopt the RFC 3986 URI standard.
7. Interoperability Across FayID System Instances
Issue: when multiple FayID System deployments coexist (run by different operators), the global uniqueness of Human ID / iFay ID / Organization ID requires a global namespace or prefix-partitioning mechanism.
Scope: multi-operator ecosystems, cross-chain interoperability
Direction: may become a core topic of FayID v2. Candidate schemes include:
- Namespace prefixes (e.g.,
hid_us_xxxvshid_eu_xxx) - A DNSSEC-style root naming authority
- An on-chain registry
8. Key Rotation for the GMC opaqueRef
Issue: rotating gmc_namespace_secret breaks long-term reputation continuity — the same Human ID derives different opaqueRefs under the old and new keys.
Scope: reputation continuity, key security
Direction:
- Design a coexistence window for old and new namespace secrets
- Or establish equivalence between old and new references through an on-chain "opaqueRef migration declaration"
- This item requires a standalone ADR
9. Enforcement Mechanism for Property P9
Issue: the protocol layer specifies the behavior "Human IDs never leave the system and never appear in logs"; the enforcement mechanisms on the implementation side (type-system tags, serialization redact, CI static scans) are chosen by the implementation spec.
Scope: implementation quality, security audit
Direction:
- At the type-system level: use newtypes / branded types to distinguish Human IDs from other entities
- At the serialization level: redact by default, with explicit whitelist toggles
- At the CI level: static scans of outbound payload paths and log paths
10. Trust-Tier Classification of Legacy Auth Sources
Issue: should every traditional credential exchange equally for an Authorization Grant? Should SMART_CONTRACT and PASSWORD apply different TTL caps?
Scope: security policy, risk control
Direction:
- Introduce a
legacySourceKind-to-TTL-cap mapping - Apply shorter TTLs to lower-trust sources (e.g., simple PASSWORD)
- Relax limits for higher-trust sources (e.g., SMART_CONTRACT)
Archival and Tracking
The 10 items above will be archived to .kiro/specs/fayid-identity-system/open-questions.md in the upcoming Task 8, with each entry tagged by:
- owner: the steward of the issue
- scope: the affected subsystems
- resolution milestone: v1 / v2 / implementation spec / ADR
This chapter serves as the blueprint's "open questions" index and only restates the issues in summary; for detailed archival and tracking, see the forthcoming
open-questions.md.
