Мало звонков.
Любая платформа.

Identity Layer благодаря своей конструкции имеет минимальную поверхность. MicroPython на микроконтроллере стоимостью 10 евро, Flutter на Android и Windows, или мост PHP, подключенный к существующим конечным точкам. Тот же протокол. Те же криптографические гарантии. Четыре звонка.

Загрузитесь для проверки. 6,5 секунды.

Тот же протокол запроса/ответа Ed25519, который аутентифицирует мобильного пользователя. или регулируемый оператор работает на микроконтроллере стоимостью 10 евро. Ключ, привязанный к устройству. Нет базы данных учетных данных. JWT выдан при проверке.

Raspberry Pi Pico 2W, PN532 NFC reader, SSD1306 OLED display, NTAG424 DNA card
Boot
Registering
Node exists
Verified
Challenge
Active
Четыре оперативных звонка. WiFi, OLED и загрузка конфигурации , это инфраструктура устройства, не Identity Layer. Примитив идентификации IdentityIoT, установлен через mip.
MicroPython
# Install via mip — no external dependencies
# import mip; mip.install("github:wide/identity-micropython")

from identity_iot import IdentityIoT

# 1. Init — configure node identity
identity = IdentityIoT(
    base_url  = cfg['base_url'],
    node_type = cfg['node_type'],
    tenant_id = cfg['tenant_id'],
    comm_key  = cfg['comm_key'].encode(),
    comm_iv   = cfg['comm_iv'].encode(),
)

# 2. Register — device-bound key, runs once
identity.ensure_registered()

# 3. Authenticate — Ed25519 challenge / verify / JWT
token = identity.authenticate()

# 4. Authenticated request — AES-256-GCM encrypted payload
response = identity.post_encrypted({'request': 'record_sensor_data', 'value': 42})
Компонент Модель Роль
MCU Raspberry Pi Pico 2W (RP2350) TrustZone, Wi-Fi, хранилище ключей, привязанное к устройству
NFC-считыватель PN532 Интерфейс I2C, считывает бейджи ДНК NTAG424.
Дисплей SSD1306 128x64 OLED Последовательность загрузки, статус проверки
NFC-значок NTAG424 DNA (NXP) Встроенный AES-128, неэкспортируемые ключи, динамический CMAC
Эталонные развертывания ESP32 и RP2040 для центров обработки данных и вертикалей физического доступа находятся в стадии разработки. Протокол и SDK идентичны для всего поддерживаемого оборудования.

Идентификация, привязанная к устройству.
Четыре звонка.

Локальные пакеты. Никакой внешней службы идентификации. Закрытый ключ никогда не покидает устройство. Безопасное хранение через flutter_secure_storage и TEE/Secure Enclave, если доступно. Шифрование полезной нагрузки осуществляется сквозным способом с помощью ITEMSEncrypter.

identity_package identity_std identity_hs items_crypto items_search items_document_body
Все пакеты локальные. Никаких зависимостей pub.dev от уровня идентификации. SDK распространяется как часть лицензионного пакета.
Dart / Flutter
// 1. Init — JWT identity, silent on subsequent boots
final auth = IdentityAuthServiceStd(ITEMSGlobals.authURI);
await auth.ensureJwt(
  preferredLocale: locale.languageCode,
  utcOffsetMin:    DateTime.now().timeZoneOffset.inMinutes,
);

// 2. Handshake — silent if identity already present on device
final result = await api.mjHandshake(
  identityHash: identityHash,
  publicKey:    publicKey,
);

// 3. Store JWT — session active, no password, no credential database
await _storage.write(key: 'token', value: result['token']);

// 4. Every request — AES-256-GCM payload, end-to-end encrypted
final response = await api.postEncrypted({'request': 'your_request'});
YAML
dependencies:

  # Identity Layer — local packages, no external registry
  identity_package:
    path: packages/identity_package
  identity_std:
    path: packages/identity_std
  identity_hs:
    path: packages/identity_hs
  items_crypto:
    path: packages/items_crypto
ПлатформаСтатусБезопасное хранение
AndroidПроизводство, Google Play очищенХранилище ключей Android / TEE
WindowsПроизводство, Microsoft Store очищенДиспетчер учетных данных Windows
LinuxПроизводствоlibsecret
iOS / macOSВ дорожной картеБезопасный анклав

5 КБ.
Ваш стек не изменился.

Мост PHP , это единственное требование, которое находится перед существующими конечными точками. Ваши маршруты, ваша база данных, ваша бизнес-логика. Нетронутый.. Identity Layer управляет аутентификацией и шифрованием полезной нагрузки. Удалите его так же, как и добавили.

Вход, выход. Один require_once и два вызова функций. Ваши конечные точки начнут получать проверенные и расшифрованные полезные данные. Никакой миграции схемы. Таблицы пользователей не изменяются. Нет хранилища сеансов. Полный стек на стороне сервера 225 KB.
PHP
// 1. Include the Identity Layer bridge — 5 KB
require_once 'identity/_mj_auth.php';

// 2. Authenticate — JWT verified, identity_hash extracted
//    identity_hash is a 64-char SHA-256 hex — never a user ID
[$identityHash, $tenantId, $claims, $role] =
    mj_authenticate_identity($encoder);

// 3. Every response — AES-256-GCM encrypted, end-to-end
sendEncryptedResponse($encoder, [
    'status' => 'ok',
    'data'   => $yourData,
], ['ts' => time()], 200);
Журналы аудита существуют, но криптографически недоступны. Для доступа требуется подтвержденное постановление суда. mj_mandate_log endpoint регистрирует мандат и открывает 72-часовое окно экспорта. Журналы уничтожаются после сбора. Запрашивающий орган несет юридическую ответственность.
PHP: mj_mandate_log
// Requires role = admin — never operator
[$userId, $tenantId, $claims, $role] = mj_authenticate($encoder);
mj_require_role($encoder, $claims, 'admin');

// Register mandate — opens 72h export window
// target_identity_hash: 64-char SHA-256, never plaintext identity
// Ciphertext is never stored — metadata only
$connector->executeDatabaseParameterQuery(
    "INSERT INTO audit_log (mandate_number, issuing_country,
     issuing_court, target_identity_hash, export_status)
     VALUES (?, ?, ?, ?, 'PENDING')",
    [$mandateNumber, $issuingCountry, $issuingCourt, $targetHash],
    $db
);
КомпонентТехнологияПримечания
Время выполненияPHP 8.xВаниль, фреймворк не требуется
База данныхMySQL / MariaDBСтандартная схема, без столбцов учетных данных
Кэш/эфемерныйRedisТокены вызовов, очереди сообщений (TTL < 1 минуты)
Размер моста5 KBОдин файл PHP, поместите в любой стек LAMP.
Полный размер стека225 KBIdentity STD + HS + Ключи + Secure Channel + IoT + Этикетки + Тег
РазвертываниеКонтейнер / локальный / с воздушным зазоромНет обязательного подключения к облаку