Глава 7. Открытые вопросы
В этой главе перечислены открытые проблемы, которые текущий уровень протокола оставляет нерешёнными, чтобы они были разрешены спецификациями реализации, будущими версиями протокола или отдельными ADR. Каждый пункт соответствует той же записи в Разделе 10 design.md и может быть уточнён далее, когда open-questions.md будет архивирован в предстоящей Task 8.
Эти пункты — не недостатки протокола FayID; это точки расширения, которые были намеренно оставлены открытыми. Их общая черта в том, что преждевременное их решение на уровне протокола либо ограничило бы свободу реализации, либо потребовало бы пересмотра по мере развития экосистемы.
1. Конкретные алгоритмы хэширования / подписи / KDF
Проблема: уровень протокола перечисляет лишь кандидатов (Ed25519 / HKDF-SHA256 / BIP-39); окончательный выбор оставлен спецификации реализации.
Область: совместимость между реализациями, криптографический аудит
Направление: зафиксировать алгоритмы в спецификации реализации вместе с версионированием (например, суффикс v1 в fayid/dyn/v1, fayid/gmc/v1). Будущие обновления алгоритмов могут сосуществовать через новые номера версий.
2. Длительность временного окна Dynamic Code
Проблема: уровень протокола требует только наличия expiresAt у Dynamic Code; конкретная длительность (минуты, часы) — это политическое решение реализации.
Область: пользовательский опыт, стойкость конфиденциальности, частота ротации
Направление: реализации подбирают её под сценарий. Сценарии высокой безопасности используют короткое окно (например, 5 минут); обычные сценарии могут расслабиться до часового масштаба.
3. Пороги ограничения скорости при отказах Verification Code
Проблема: ширина окна, порог числа неудач и стратегия отката для VERIFICATION_RATE_LIMITED — все решения реализации.
Область: устойчивость к перебору, пользовательский опыт
Направление: следовать отраслевым нормам (например, экспоненциальный откат); спецификация реализации определяет значения по умолчанию.
4. TTL по умолчанию и модель продления для Authorization Grant
Проблема: уровень протокола требует только явного expiresAt; конкретные модели, такие как продление, скользящее истечение или короткий TTL плюс refresh-токены, оставлены спецификации реализации.
Область: пользовательский опыт, безопасность, совместимость с источниками унаследованной аутентификации
Направление: спецификации реализации могут вводить тип RefreshGrant или применять дифференцированные TTL по legacySourceKind.
5. Семантика отзыва Human ID
Проблема: на текущем уровне протокола Human ID не входят в состояние REVOKED. Путь восстановления после компрометации Mnemonic (повторный выпуск Human ID, миграция репутации и т. д.) — вне области этой спецификации.
Область: восстановление после катастроф, непрерывность репутации
Направление: может развиваться в сторону:
- Механизма «миграции репутации» более высокого уровня (on-chain декларация, отображающая старый opaqueRef → новый opaqueRef)
- Или ограниченного отзыва Human ID плюс механизма правопреемника в протоколе v2
6. Спецификация пространства имён resourceRef
Проблема: эта спецификация только предлагает форму <scheme>://<authority>/<path>; формальная грамматика может развиться в отдельную спецификацию или согласоваться с существующим стандартом URI.
Область: совместимость между реализациями
Направление: может образовать отдельную спецификацию «FayID Resource Identifier» или напрямую принять стандарт URI RFC 3986.
7. Совместимость между экземплярами FayID System
Проблема: при сосуществовании нескольких развёртываний FayID System (управляемых разными операторами) глобальная уникальность Human ID / iFay ID / Organization ID требует механизма глобального пространства имён или префиксного разделения.
Область: экосистемы с несколькими операторами, межцепочечная совместимость
Направление: может стать ключевой темой FayID v2. Кандидаты:
- Префиксы пространства имён (например,
hid_us_xxxпротивhid_eu_xxx) - Корневой именной авторитет в стиле DNSSEC
- On-chain реестр
8. Ротация ключей для opaqueRef GMC
Проблема: ротация gmc_namespace_secret нарушает непрерывность долгосрочной репутации — один и тот же Human ID производит разные opaqueRef под старым и новым ключами.
Область: непрерывность репутации, безопасность ключей
Направление:
- Спроектировать окно сосуществования старых и новых секретов пространства имён
- Или установить эквивалентность между старыми и новыми ссылками через on-chain «декларацию миграции opaqueRef»
- Этот пункт требует отдельного ADR
9. Механизм обеспечения соблюдения Свойства P9
Проблема: уровень протокола задаёт поведение «Human ID никогда не покидают систему и никогда не появляются в журналах»; механизмы обеспечения на стороне реализации (метки системы типов, redact при сериализации, статические сканирования CI) выбираются спецификацией реализации.
Область: качество реализации, аудит безопасности
Направление:
- На уровне системы типов: использовать newtypes / branded types для отличия Human ID от других сущностей
- На уровне сериализации: redact по умолчанию с явными переключателями белого списка
- На уровне CI: статические сканирования путей исходящего содержимого и путей журналирования
10. Классификация уровней доверия источников унаследованной аутентификации
Проблема: должны ли все традиционные учётные данные равно обмениваться на Authorization Grant? Должны ли SMART_CONTRACT и PASSWORD применять разные потолки TTL?
Область: политика безопасности, контроль рисков
Направление:
- Ввести отображение
legacySourceKind→ потолок TTL - Применять более короткие TTL к источникам с меньшим доверием (например, простой PASSWORD)
- Ослабить ограничения для источников с большим доверием (например, SMART_CONTRACT)
Архивация и отслеживание
10 пунктов выше будут архивированы в .kiro/specs/fayid-identity-system/open-questions.md в предстоящей Task 8, причём каждая запись будет помечена:
- owner: куратор проблемы
- scope: затрагиваемые подсистемы
- resolution milestone: v1 / v2 / спецификация реализации / ADR
Эта глава служит «индексом открытых вопросов» blueprint и лишь кратко переформулирует проблемы; детальную архивацию и отслеживание см. в предстоящем
open-questions.md.
