Глава 6. Конфиденциальность и интерфейс GMC

В этой главе описываются два жёстких ограничения системы FayID: Human ID никогда не покидают систему и никогда не появляются в журналах, и GMC Interface — это строго read-only граница. Вместе они являются предпосылками безопасности для того, чтобы FayID служил долгосрочным идентификационным уровнем Global Merit Chain.


Жёсткие ограничения конфиденциальности

Правила исходящего содержимого

Мы определяем «исходящее содержимое» как любой поток байт, наблюдаемый извне FayID System — включая сторонние ресурсы, источники унаследованной аутентификации, Global Merit Chain и наблюдательные бэкенды.

СущностьМожет ли появляться в открытом виде в исходящем содержимом?
Human IDЗапрещено, если только коммуникация явно не доказывает сам Human ID
MnemonicЗапрещено, без исключений
Закрытый ключЗапрещено, без исключений
iFay ID / coFay ID / Organization IDРазрешено
Dynamic CodeРазрешено
Verification CodeТолько в паре с coFay ID; никогда не транслируется отдельно
Authorization GrantРазрешено

Журналирование и наблюдаемость

log_allow  := { dynamicCode, ifayID, cofayID, organizationID, grantID, errorCode }
log_deny   := { humanID(plaintext), mnemonic, privateKey, verificationCode(plaintext) }

Логгеры на стороне реализации должны фильтровать через белый список: каждый путь сериализации должен проходить через шаг redact перед записью в журнал.

Кратко: открытые Human ID и Mnemonic никогда не появляются в каком-либо извне наблюдаемом потоке байт — ни в сетевых пакетах, ни в файлах журналов, ни в выводе аудита.


Несвязываемость Dynamic Code

Замысел дизайна

Когда внешний наблюдатель получает два литерала Dynamic Code, он не может определить, происходят ли коды от одного и того же Human ID. Это ключевое свойство конфиденциальности, которое позволяет Dynamic Code служить публичным прокси для Human ID.

Основа дизайна

Производство Dynamic Code использует:

  • Свежий nonce на каждое производство: что делает последовательные выводы статистически независимыми
  • Закрытый для Issuer ikm: что препятствует внешним наблюдателям локально воспроизводить функцию производства
  • Префикс типа + временное окно: сохраняет литеральное отличие Dynamic Code от других сущностей, не вводя дополнительных коррелируемых маркеров

В результате самый сильный статистический вывод, который внешний наблюдатель может сделать из двух литералов Dynamic Code, не лучше случайного угадывания.

Это криптографическая основа Свойства P9 в документе проектирования.


Контроль доступа к запросам списка владения

Правила

  • listIFayIDsOfHuman(proofOfHuman) должен проверять proofOfHuman перед возвратом каких-либо результатов
  • Без проверки возвращает HUMAN_ID_OWNERSHIP_NOT_PROVEN
  • Resolver не предоставляет анонимный интерфейс «искать iFay ID по Human ID»

Мотивация дизайна

Это предотвращает сбор внешними наблюдателями связи «какими iFay-персонами владеет этот Human ID» через интерфейс обратного поиска — что эквивалентно опосредованному раскрытию профиля активности Human ID.


Граница интерфейса GMC

Роль

GMC Interface — это единственный канал между FayID System и Global Merit Chain. Принципы его дизайна:

Только для чтения + необратимый + никогда не раскрывает корневую идентичность

Методы, предоставляемые GMC

// Только для чтения
gmcLookupOwnership(ifayIDOrCofayID)
  -> { ownerKind: "HUMAN" | "ORGANIZATION",
       ownerOpaqueRef: string }

gmcResolvePublicEntity(idString)
  -> { kind: "IFAY" | "COFAY" | "ORGANIZATION",
       revoked: bool,
       displayMetadata: opaque }

Явно запрещённые направления

// Не существует — обратные записи запрещены на уровне протокола
// gmcWriteHumanID(humanID)
// gmcWriteMnemonic(mnemonic)
// gmcWritePrivateKey(...)

Запрет обеспечивается тем, что «метода не существует в IDL», а не runtime-проверками. Это делает обратные записи структурно невозможными на уровне протокола.


opaqueRef

Производство

opaqueRef := encode(prefix="gmcref_",
  payload = HKDF(
    ikm    = gmc_namespace_secret,         // ключ пространства имён, удерживаемый FayID System
    salt   = humanID,                       // появляется только внутри FayID
    info   = "fayid/gmc/v1",
    length = 256 bit
  )
)

Ключевые свойства

СвойствоОписание
СтабильностьopaqueRef, производный от одного и того же Human ID, стабильно равен, что позволяет записям репутации в GMC накапливаться долго
Стойкость к коллизиямopaqueRef, производные от разных Human ID, почти всюду различны
НеобратимостьУдержание лишь opaqueRef не позволяет восстановить Human ID за полиномиальное время
НесвязываемостьopaqueRef не участвуют в производстве Dynamic Code; с точки зрения внешнего наблюдателя они несвязываемы

Значение

opaqueRef разрешает ключевое противоречие:

  • Global Merit Chain нуждается в долгосрочной, стабильной ссылке на физическое лицо для накопления репутации
  • Human ID физического лица должен оставаться приватным и не должен появляться в цепочке

opaqueRef — это компромисс — это вывод «односторонней функции», применённой к Human ID: стабильно сравнимый, но необратимый.


Режимы ассоциации репутации

Репутация iFay / coFay / Organization

  • iFay ID, coFay ID и Organization ID служат открытыми субъектами записей репутации
  • GMC может напрямую индексировать репутацию по этим ID

Репутация человека

  • Human ID не появляются в цепочке напрямую
  • Когда запись репутации нужно ассоциировать с физическим лицом, opaqueRef этого Human ID используется в качестве ссылки
  • opaqueRef, производный от одного и того же Human ID, остаётся стабильным долгое время

Граничные запросы

Когда Global Merit Chain запрашивает владение iFay ID или coFay ID через GMC Interface:

  • Возвращает OwnerKind (HUMAN / ORGANIZATION)
  • В случае HUMAN возвращает opaqueRef и не открытый Human ID
  • В случае ORGANIZATION возвращает открытый Organization ID (организации публичны по своей природе)

Сводка границы конфиденциальности

ГраницаВнутри (внутри FayID System)Снаружи (исходящее / GMC / журналы)
Открытый Human IDПоявляется только внутри Issuer / ResolverЗапрещено
MnemonicВозвращается держателю один раз при генерацииЗапрещено
Закрытый ключСуществует только на пути производства ключейЗапрещено
Dynamic CodeГенерируется внутреннеМожет быть опубликован
opaqueRefПроизводится внутреннеРаскрывается только GMC

Конфиденциальность — это не «просто зашифровать» — через жёсткие ограничения на уровне протокола (отсутствие методов записи в IDL, белый список исходящего содержимого, белый список журналирования) FayID структурно устраняет возможность того, что открытый Human ID когда-либо появится снаружи.