Два компонента: IGL‑Converter (фронтенд для C и C++‑подобного поднабора: AST/NAST, security‑профиль, IR/MMIO) и IGL‑RV‑emb (Draft/Alpha runtime для запуска WebAssembly‑модулей в sandbox на ARM Cortex‑M и RISC‑V). Фокус - предсказуемая память, ограничения выполнения и трассируемый доступ к периферии.
Статус: v0.1 Draft/Alpha. Поддержка языка/фич и уровень защитных механизмов зависят от профиля, бэкенда и целевой платформы.
Ключевые компоненты:
IGL‑Converter - фронтенд/конвертер для embedded‑кода (C и C++‑подобный subset), который строит AST/NAST, выполняет семантические проверки и применяет правила security‑профиля, после чего понижает программу в промежуточное представление (IR) и целевые форматы. Цель - предсказуемое поведение, сильная диагностика и контролируемый доступ к MMIO в рамках заданных политик.
Подход (v0.1):
1. Единый пайплайн: preprocess → parse/AST → semantic → NAST → security profile → IR/MMIO → targets/runtime.
2. Профилированная безопасность: запреты и проверки (например, без исключений и без динамической памяти; опциональные runtime checks).
3. Мультитаргетинг: генерация C и WebAssembly возможна для поддерживаемого поднабора и выбранного бэкенда.
Политики исполнения:
1. Ограничение выполнения по шагам (GasV1 / fuel), лимиты памяти/стека/locals, traps при нарушениях.
2. Контроль разрешённых эффектов: allowlist hostcalls и MMIO sandbox (deny‑by‑default).
Проверка доверия к модулю:
1. Контейнер IGL‑PKG: CRC32 целостность.
2. Цифровая подпись P‑256 ECDSA (в strict mode - обязательна, подпись защищает header.flags и содержимое пакета).
3. (Опционально) Привязка модуля к устройству (HW‑lock, напр. STM32 UID).
Особенности:
1. no‑std / без ОС, статическая память (без heap) - рассчитано на MCU.
2. Требования по flash/RAM зависят от набора BC2‑опкодов и включённых security‑опций (фиксируется в пилоте на целевой плате).
3. Не требует замены железа - работает на существующих MCU.
Фронтенд и конвейер проверок для embedded‑кода
Draft/Alpha WASM‑runtime для микроконтроллеров
Интеграция в рабочий процесс
Примечание: IGL v0.1 - Draft/Alpha. Security‑профили и sandbox снижают риски, но итоговая защищённость зависит от конфигурации, целевого MCU, цепочки поставки и принятой модели угроз.
на внедрение и сопровождение практик безопасности (зависит от проекта)
в сборку/CI/CD как шаг пайплайна (оценка зависит от покрытия и профиля)
требования зависят от конфигурации WASM‑фич, sandbox и целевого MCU
по производительности - зависят от включённых проверок и лимитов
Примечание: значения зависят от модели угроз, конфигурации профиля, бэкенда и целевой платформы. Для пилота обычно фиксируются измеримые метрики на вашем коде.
Примечание: IGL v0.1 - Draft/Alpha. Набор файлов и покрытие стадий зависят от выбранного профиля и бэкенда.
Статус: v0.1 Draft/Alpha. Набор поддерживаемых конструкций и WASM‑фич развивается; ограничения бэкенда могут влиять на применимость.
Важно: IGL не является универсальной защитой. Эффект зависит от модели угроз, конфигурации профиля и платформы.
Сделаем пилот: прогоним один модуль через IGL‑Converter, покажем диагностику, ограничения профиля и артефакты понижения (IR/WASM).
Если понадобится - поможем посчитать ROI на ваших вводных (объём кода, требования, платформа, уровень проверок).