Консультация: Критическое открытие в модели PIE Non-Custodial Compute
Модель удаляет возможность оператора расшифровывать что-либо после завершения задания. Устройство всё ещё шифрует в непроверенный открытый ключ, опубликованный одним компонентом, который модель обозначает как ненадёжный.
Developed by Robert E. Beckner III (Merlin) | rbeckner.com
Я строю системы уже 25 лет, и мне нравится создавать вещи, которые намеренно спроектированы и операционно легки, несущие только столько вектора, сколько оправдывает свою тяжесть.В таком подходе минимизация того, что я храню из данных пользователя, всегда имела смысл для меня, по причинам, выходящим за рамки очевидного. Суверенитет их данных важен. Под этим скрывается что-то проще: вещи принадлежат там, где они должны быть. Большая часть того, что я строю, это обработка, и архитектура обработки не имеет смысла функционировать как что-то другое. Хранение записи, которую никогда не нужно, является вектором, который ничего не приносит. Относиться к этому как к оптимизации, а не как к упражнению по соблюдению требований, делает дизайн честным — и система, построенная таким образом, обычно находится в хорошем положении с регуляцией сама по себе, потому что осталось очень мало, что регулировать.Поэтому, когда объявление Mary Camacho попало в мой поток на X, я прочитал её архитектуру так же, как читаю свою собственную. Она опубликовала ядро в публичный реестр под лицензией Creative Commons, на уровне детализации, необходимом инженеру для его восстановления, и была прямолинейна относительно предшествующего искусства, на котором она основана.Прорабатывая последовательность, я разместил противостоящую сущность внутри сервера и следил, к чему она может добраться. Она могла обогнать работника.Почти вся работа, которая последовала, происходила как голосовой разговор — через 30 голосовые заметки, думая вслух и тестируя обеспокоенность с разных углов, пока она не выдержала или не распалась.Что я заметил: устройство шифрует для того, кто первым записывает запись претензии#
Раскрытие указывает порядок операций напрямую. Работник претендует на работу и публикует свой ключ, и только после этого устройство шифрует:Сторона устройства в этом соглашении указана с такой же точностью:— §2.1, Поток данных (по работе)
- Работник → координация: опрашивает и претендует на работу (запись-один раз, первый-побеждает), публикуя открытый ключ работника.
- Устройство ← координация: опрашивает, получает открытый ключ работника, выводит общий секрет, шифрует полезную нагрузку.
Устройство, узнав открытый ключ работника, выполняет собственный обмен X25519 и инкапсуляцию ML-KEM против ключа работника, создавая свой собственный открытый вклад (X25519 открытый ключ ‖ ML-KEM шифротекст) и общий секрет.— §4.2, Связывание с жизненным циклом работникаПри получении. На протяжении 19 страниц нет подписи над эфемерным открытым ключом работника, нет сертификата, нет аттестации, которую устройство оценивает, и нет предварительно обмененного секрета. Отсутствие намеренно и представлено как сильная сторона: модель блокирует расшифровку без документа аттестации, цитаты TPM или артефакта измеренного загрузки, и она не хранит предварительно предоставленный секрет работника.Поэтому устройство шифрует свою полезную нагрузку для любого открытого ключа, который находится в записи претензии, без возможности отличить законный ключ работника от любого другого. Любой, кто первым напишет претензию, становится тем, кому устройство шифрует, и доверенная полезная нагрузка расшифровывается у него.
flowchart TB
subgraph BEFORE["До: как опубликовано"]
direction TB
A2{"Кто заявляет первым?"} -->|Реальный работник| A3["Подлинный ключ"]
A2 -->|Любой другой писатель| A4["Ключ злоумышленника"]
A3 --> A5["Устройство шифрует его"]
A4 --> A5
A5 --> A6["Хозяин ключа может читать"]
end
subgraph AFTER["После: подписанный ключ"]
direction TB
B2{"Подпись действительна?"} -->|Да| B3["Подтверждённый ключ работника"]
B2 -->|Нет| B4["Отклонить, повторить"]
B3 --> B5["Только настоящий работник читает"]
end
A6 ~~~ B2Copy sourceКриптография надёжна, а ввод не аутентифицирован#
Злоумышленник ничего не ломает. X25519 и ML-KEM-768 работают точно так, как указано. Злоумышленник предоставляет ключ и становится законным участником соглашения.Это аутентифицированное соглашение ключей, и его режим отказа — самая старая результат в области. Обычный Diffie-Hellman не аутентифицирует никого и падает к участнику, который заменяет свой собственный открытый ключ. Механизмы инкапсуляции ключей наследуют это свойство, поэтому RFC 9180 размещает аутентичность открытого ключа получателя вне его собственного диапазона и предполагает, что окружающее приложение устанавливает её через сертификаты, каталог ключей или внеканальное подтверждение. Эта модель — это окружающее приложение, а канал, который оно использует для распространения ключа получателя, является компонентом, который его собственная модель доверия помечает ненадёжным.Раскрытие предвидит соседний атаку и закрывает её:Заявка является запись-один раз/первый выигрывает, поэтому более поздний работник не может захватить обмен ключами работы.— §6, Реализация примераЭто рассуждение надёжно, и механизм делает то, что говорит. Он охватывает один из двух симметричных случаев.
| Угроза | Обрабатывается однократным заявлением |
|---|---|
| Второй работник перезаписывает существующее заявление | Да — запись отклоняется |
| Неавторизованная сторона записывает заявление первой | Нет — первая запись выигрывает |
Ни один посредник (шлюз, координация, хранение, монитор) никогда не хранит достаточно ключевого материала, чтобы вывести любой из секретов. Угроза, которая компрометирует координацию или хранение, получает только непрозрачные блобы и открытые ключи.— §4.3, Независимые ключи по направлениюПервое предложение точное. Второе описывает злоумышленника, который читает. Угроза, которая пишет, размещает выбранный открытый ключ в записи заявления до того, как устройство опросит, и получение законного секрета становится ненужным для стороны, которая может устроить себя в качестве контрагента. Кто управляет содержимым этой записи, тот управляет тем, кто может читать полезную нагрузку, что делает слой координации доверенным компонентом для конфиденциальности — единственная вещь, которую §3 говорит, что никакой компонент, кроме устройства и работника, никогда не должен быть.Честное ограничение на заявление: это не означает, что кто-либо в открытом интернете может читать эти данные сегодня. В реальном развертывании возможность писать заявления находится за облачной сетью и учетными данными, а раскрытие описывает аутентифицирующий шлюз на пути устройства. Точная проблема в том, что конфиденциальность теперь зависит от того периметра, в то время как центральное обещание архитектуры состоит в том, что она сохраняется без доверия компонентам между устройством и работником.