Få samtaler.
Enhver plattform.

Identity Layer integreres med minimal overflate etter design. MicroPython på en €10 mikrokontroller, Flutter på Android og Windows, eller en PHP-bro falt inn i de eksisterende endepunktene dine. Samme protokoll. De samme kryptografiske garantiene. Fire samtaler.

Start opp for å bekrefte. 6,5 sekunder.

Den samme Ed25519 utfordring/svar-protokollen som autentiserer en mobilbruker eller en regulert operatør kjører på en €10 mikrokontroller. device-bound nøkkel. Ingen legitimasjonsdatabase. JWT utstedt ved verifisering.

Raspberry Pi Pico 2W, PN532 NFC reader, SSD1306 OLED display, NTAG424 DNA card
Boot
Registering
Node exists
Verified
Challenge
Active
Fire operative samtaler. WiFi, OLED og konfigurasjonslasting er enhetsinfrastruktur, ikke Identity Layer. Identiteten primitive er IdentityIoT, installert via 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 Modell Rolle
MCU Raspberry Pi Pico 2W (RP2350) TrustZone, WiFi, device-bound nøkkellagring
NFC-leser PN532 I2C-grensesnitt, leser NTAG424 DNA-merker
Skjerm SSD1306 128x64 OLED Oppstartssekvens, bekreftelsesstatus
NFC-merke NTAG424 DNA (NXP) AES-128 ombord, ikke-eksportable nøkler, dynamisk CMAC
ESP32 og RP2040 referansedistribusjoner for datasenter og fysiske tilgangsvertikaler pågår. Protokollen og SDK er identiske på tvers av all støttet maskinvare.

device-bound identitet.
Fire samtaler.

Lokale pakker. Ingen ekstern identitetstjeneste. Den private nøkkelen forlater aldri enheten. Sikker lagring via flutter_secure_storage og TEE / Secure Enclave når tilgjengelig. payloadkryptering er ende-til-ende via ITEMSEncrypter.

identity_package identity_std identity_hs items_crypto items_search items_document_body
Alle pakkene er lokale. Ingen pub.dev-avhengigheter på identitetslaget. SDK distribueres som en del av lisenspakken.
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
PlattformStatusSikker lagring
AndroidProduksjon, Google Play slettetAndroid Keystore / TEE
WindowsProduksjon, Microsoft Store ryddetWindows Credential Manager
LinuxProduksjonlibsecret
iOS / macOSPå veikartSikker enklave

5 KB.
Din stabel, uendret.

PHP-broen er et enkelt krav som sitter foran de eksisterende endepunktene dine. Dine ruter, din database, din forretningslogikk. Urørt.. Identity Layer håndterer autentisering og payloadkryptering. Fjern den på samme måte som du la den til.

Drop-in, drop-out. En require_once og to funksjonsanrop. Endepunktene dine begynner å motta bekreftede, dekrypterte payloader. Ingen skjemamigrering. Ingen endringer i brukertabellen. Ingen øktlagring. Den komplette server-side stabelen er 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);
Revisjonslogger finnes, men er kryptografisk utilgjengelige. Tilgang krever en validert rettskjennelse. Den mj_mandate_log endepunkt registrerer fullmakten og åpner et 72-timers eksportvindu. Logger destrueres etter innsamling. Anmodende myndighet har juridisk ansvar.
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
);
KomponentTeknologiNotater
KjøretidPHP 8.xVanilje, ingen ramme nødvendig
DatabaseMySQL / MariaDBStandardskjema, ingen påloggingskolonner
Cache / flyktigRedisUtfordringstokener, meldingskøer (TTL < 1 min)
Brostørrelse5 KBEnkel PHP-fil, slipp i en hvilken som helst LAMP-stabel
Full stabel størrelse225 KBIdentity STD + HS + Taster + Secure Channel + IoT + Etiketter + Tag
UtplasseringBeholder / på stedet / luftgapetIngen obligatorisk skytilkobling