IМодель хранения данных
Ничего не уходит.
Ничего не отправляется домой.
SQAI работает там, где живут ваши данные. Во время запроса нет сетевых вызовов для перехвата, нет сервиса, хранящего ваши строки, нет телеметрии. Этот документ учитывает каждый байт, когда-либо пересекающий сеть — таких передач ровно две, и ни одна из них не касается ваших данных.
- Ваши строки
Читаются внутри вашего процесса. Никогда не копируются, не загружаются, не хранятся кем-либо, кроме вас.
никогда - Планы и результаты
Проверяются и выполняются внутри процесса. Результаты хранятся в ограниченном локальном хранилище и удаляются через 15 минут.
никогда - Телеметрия
Отсутствует. Никаких аналитических вызовов, репортеров сбоев, отправки данных домой.
никогда - Пакет среды выполнения
Код движка, загружается один раз с Cloudflare R2 и проверяется до записи первого файла. Код поступает; строки не уходят.
однократно · входящий · подписанный - Вход с устройства
Опционально. Передаёт подписанный токен лицензии между вашим устройством и сервисом аккаунтов — но не ваши данные.
опционально · только токен
Никаких сетевых вызовов во время запроса. Отключите сеть после установки — каждый запрос всё равно получит ответ.
Режим только для чтения — не настройка.
Это форма самого инструмента.
4 574 открытые возможности · каждая — чтение · нет пути записи для ошибочной настройки
IIIЕдинственная загрузка
Шесть проверок до записи файла.
Пакет среды выполнения — единственное, что SQAI когда-либо загружает: код движка с Cloudflare R2, который считается ненадёжным до подтверждения обратного. Проверка выполняется до распаковки, продолжается для каждого файла, а установка атомарна.
- 01
Один доверенный ключ
Релизы подписываются RS256 единственным ключом RSA-4096. Один ключ — одна проверка; всё остальное не является доверенным.
- 02
Проверка до распаковки
Подпись проверяется по манифесту до того, как распакован хотя бы один файл. Подменённый или неподписанный пакет не проходит дальше.
- 03
Схема и безопасность путей
Манифест должен соответствовать ожидаемой схеме, а каждый указанный путь — разрешаться внутри корневого каталога установки.
- 04
sha256 для каждого артефакта
Каждый файл хешируется и сверяется с подписанным манифестом. Один несовпадающий байт прерывает всю установку.
- 05
Не в списке или симлинк — отклонить
Файл, отсутствующий в манифесте, или любой символьный линк немедленно отклоняют пакет.
- 06
Атомарная установка, защита от отката
Распаковка выполняется во временный каталог и переносится на место одним атомарным переименованием. Версии ниже допустимого порога отклоняются как rollback_protected.
runtime_bundle 0.1.0sha256 4d64142e4c1ff63d299cfc8b172fdf97cb59169b545e1e02978e678a632ce6e1MIN_ACCEPTED_RUNTIME_VERSION 0.1.0 · below → rollback_protectedIVКлючи и обработка ошибок
Минимальная поверхность атаки.
Ключ устройства
- расположение
- ~/.sqai — в домашнем каталоге, нигде в системе
- права доступа
- режим файла 600 — доступен только вам
- выдача
- опциональный вход с устройства (RFC 8628 device code)
- что передаётся
- подписанный лицензионный токен — никогда ваши данные
Что видит модель
ENOENT: no such file or directory — /Users/dana/finance/q3-actuals.csvENOENT: no such file or directorysanitizeMessage удаляет абсолютные пути из каждой ошибки, видимой модели. Структура вашей файловой системы никогда не попадает в контекст модели.
VХранилище результатов
Дескриптор, не раскрывающий ничего.
Большие результаты хранятся за дескриптором, а не заполняют контекст модели. Дескриптор спроектирован так, чтобы быть бесполезным для кого угодно, кроме выдавшего его тенанта.
- result_id
- 16 случайных байт, base64url — непредсказуем, не связан ни с каким запросом или тенантом
- авторизация
- ограничена тенантом — погасить может только выдавший тенант
- чужой тенант
- result_not_found — неотличимо от никогда не существовавшего дескриптора
- время жизни
- TTL 15 минут · ≤256 результатов · 64 МБ всего · 16 МБ на тенант
result_id = base64url(randomBytes(16))
→ ok→ result_not_foundНе запрещено — не найдено. Существование никогда не раскрывается.
VIИнструкция: изолированная среда
Работает без сети.
Плоскость запросов отключена от сети по замыслу; загружается только вычислительная среда выполнения. Для полностью автономной работы доставьте пакет самостоятельно — верификатору безразлично, откуда получены байты.
- 01
Отключить автоустановку
SQAI никогда не загрузит среду выполнения неявно.
$export SQAI_RUNTIME_AUTO_INSTALL=0 - 02
Перенести пакет вручную
Загрузите подписанный пакет на подключённой машине и перенесите его согласно вашей политике передачи.
- 03
Установить из файла
Все шесть проверок выполняются по локальному файлу — та же подпись, тот же манифест, те же хеши артефактов.
$sqai runtime install --from-file <bundle> - 04
Проверить на месте
Повторная проверка установленной среды выполнения по единственному принятому ключу релиза — в любой момент.
$sqai runtime verify
После установки: сеть не нужна. Запросы, проверки политик и хеши происхождения вычисляются локально.
VIIВопросы для аудита
Задаётся на каждом security-ревью.
Что именно покидает мою машину?
Во время запроса — ничего. За всё время установки по сети проходят два события: один входящий подписанный пакет среды выполнения с Cloudflare R2 (код движка, не строки данных) и — только при явном выборе входа с устройства — подписанный лицензионный токен. Телеметрия отсутствует.
Режим «только чтение» — это просто флаг, который можно переключить?
Нет. Флаг «только чтение» на соединении с базой данных — это обещание; SQAI — отсутствующая поверхность атаки. Все 4 574 доступных возможности являются операциями чтения — нет ни пути записи, ни DDL, ни eval, которые нужно было бы защищать, — а аварийный выход (getUnsafeRuntime) недостижим для модели.
Может ли модель расширить собственный доступ?
Нет. Политика фиксируется в коде в момент вызова createSQAI() и проверяется внутри процесса до выполнения. Входные данные инструмента, заполняемые моделью, не содержат полей allowed*, а обращение к возможности вне списка разрешённых вызывает unsupported_operation.
Работает ли SQAI в изолированной среде (air-gap)?
Да. Установите SQAI_RUNTIME_AUTO_INSTALL=0, перенесите подписанный пакет вручную и установите его командой sqai runtime install --from-file. Та же цепочка верификации применяется к файлу, а плоскость запросов полностью работает офлайн.
Может ли сообщение об ошибке раскрыть модели пути к файлам?
Нет. sanitizeMessage удаляет абсолютные пути из каждой ошибки, видимой модели, — она никогда не узнает структуру вашей файловой системы.
Следующий шаг
Проведите проверку безопасности.
Пройдите с нами по каждому пункту опросника — хранение, подписание, политика, изоляция — каждый ответ прослеживается до кода.