Niewiele połączeń.
Dowolna platforma.

Identity Layer integruje się z minimalną powierzchnią zgodnie z projektem. MicroPython na mikrokontrolerze za 10 €, Flutter na Androidzie i Windowsie, lub most PHP upuszczony do istniejących punktów końcowych. Ten sam protokół. Te same gwarancje kryptograficzne. Cztery połączenia.

Uruchom, aby zweryfikować. 6,5 sekundy.

Ten sam protokół wyzwania/odpowiedzi Ed25519, który uwierzytelnia użytkownika mobilnego lub regulowany operator działa na mikrokontrolerze o wartości 10 euro. Klucz powiązany z urządzeniem. Brak bazy danych uwierzytelniających. JWT wydany po weryfikacji.

Raspberry Pi Pico 2W, PN532 NFC reader, SSD1306 OLED display, NTAG424 DNA card
Boot
Registering
Node exists
Verified
Challenge
Active
Cztery wezwania operacyjne. Wi-Fi, OLED i ładowanie konfiguracji to infrastruktura urządzenia, nie Identity Layer. Pierwotna tożsamość to IdentityIoT, zainstalowany przez 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})
Komponent Modelka Rola
MCU Raspberry Pi Pico 2W (RP2350) TrustZone, WiFi, przechowywanie kluczy powiązane z urządzeniem
Czytnik NFC PN532 Interfejs I2C, odczytuje plakietki DNA NTAG424
Wyświetlacz SSD1306 128x64 OLED Sekwencja rozruchowa, status weryfikacji
Odznaka NFC NTAG424 DNA (NXP) Wbudowany AES-128, klucze nieeksportowalne, dynamiczny CMAC
Trwają wdrożenia referencyjne ESP32 i RP2040 dla centrów danych i pionów dostępu fizycznego. Protokół i zestaw SDK są identyczne na całym obsługiwanym sprzęcie.

Tożsamość powiązana z urządzeniem.
Cztery połączenia.

Pakiety lokalne. Brak zewnętrznej usługi tożsamości. Klucz prywatny nigdy nie opuszcza urządzenia. Bezpieczne przechowywanie poprzez flutter_secure_storage i TEE / Bezpieczna enklawa, jeśli są dostępne. Szyfrowanie ładunku odbywa się kompleksowo za pośrednictwem ITEMSEncrypter.

identity_package identity_std identity_hs items_crypto items_search items_document_body
Wszystkie pakiety są lokalne. Brak zależności pub.dev od warstwy tożsamości. SDK jest dystrybuowany jako część pakietu licencyjnego.
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
PlatformaStanBezpieczne przechowywanie
AndroidProdukcja, Google Play wyczyszczoneMagazyn kluczy Androida / TEE
WindowsProdukcja, sklep Microsoft wyczyszczonyMenedżer poświadczeń systemu Windows
LinuxProdukcjalibsecret
iOS / macOSNa mapie drogowejBezpieczna enklawa

5KB.
Twój stos bez zmian.

Most PHP to pojedynczy element wymagający, który znajduje się przed istniejącymi punktami końcowymi. Twoje trasy, Twoja baza danych, Twoja logika biznesowa. Nietknięty.. Identity Layer obsługuje uwierzytelnianie i szyfrowanie ładunku. Usuń go w ten sam sposób, w jaki go dodałeś.

Wpadanie, wysiadanie. Jeden require_once i dwa wywołania funkcji. Twoje punkty końcowe zaczynają otrzymywać zweryfikowane, odszyfrowane ładunki. Brak migracji schematu. Brak zmian w tabeli użytkowników. Brak przechowywania sesji. Kompletny stos po stronie serwera to 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);
Dzienniki audytu istnieją, ale są niedostępne kryptograficznie. Dostęp wymaga zatwierdzonego nakazu sądowego. The mj_mandate_log punkt końcowy rejestruje zlecenie i otwiera 72-godzinne okno eksportu. Po zebraniu kłody są niszczone. Organ wzywający ponosi odpowiedzialność prawną.
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
);
KomponentTechnologiaNotatki
Czas wykonaniaPHP 8.xWanilia, nie wymaga frameworka
Baza danychMySQL / MariaDBSchemat standardowy, bez kolumn danych uwierzytelniających
Pamięć podręczna / efemerycznaRedisTokeny wyzwań, kolejki komunikatów (TTL < 1 min)
Rozmiar mostu5 KBPojedynczy plik PHP, upuść go na dowolnym stosie LAMP
Pełny rozmiar stosu225 KBIdentity STD + HS + klucze + Secure Channel + IoT + etykiety + tag
WdrożenieKontener / lokalnie / z przerwą powietrznąBrak obowiązkowej łączności z chmurą