Ít cuộc gọi.
Bất kỳ nền tảng nào.
Identity Layer tích hợp với bề mặt tối thiểu theo thiết kế. MicroPython trên bộ vi điều khiển €10, Flutter trên Android và Windows, hoặc PHP bridge được thả vào các endpoint hiện có của bạn. Giao thức tương tự. Các đảm bảo về mật mã tương tự. Bốn cuộc gọi.
Khởi động để xác minh. 6,5 giây.
Giao thức thách thức/phản hồi Ed25519 tương tự xác thực người dùng di động hoặc một toán tử được quy định chạy trên bộ vi điều khiển €10. device-bound key. Không có database thông tin xác thực. JWT được cấp khi xác minh.
IdentityIoT,
được cài đặt qua mip.
# 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})
| thành phần | người mẫu | Vai trò |
|---|---|---|
| MCU | Raspberry Pi Pico 2W (RP2350) | TrustZone, WiFi, lưu trữ khóa device-bound |
| đầu đọc NFC | PN532 | Giao diện I2C, đọc huy hiệu DNA NTAG424 |
| Hiển thị | SSD1306 128x64 OLED | Trình tự khởi động, trạng thái xác minh |
| Huy hiệu NFC | NTAG424 DNA (NXP) | AES-128 tích hợp, phím không thể xuất, CMAC động |
Nhận dạng giới hạn thiết bị.
Bốn cuộc gọi.
Gói địa phương. Không có dịch vụ nhận dạng bên ngoài. Khóa riêng không bao giờ rời khỏi thiết bị.
Lưu trữ an toàn thông qua flutter_secure_storage
và TEE / Secure Enclave khi khả dụng.
Mã hóa payload được thực hiện từ đầu đến cuối thông qua ITEMSEncrypter.
// 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'});
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
| Nền tảng | Trạng thái | Lưu trữ an toàn |
|---|---|---|
| Android | Sản xuất, Google Play đã bị xóa | Kho khóa Android / TEE |
| Windows | Sản xuất, Microsoft Store đã bị xóa | Trình quản lý thông tin xác thực Windows |
| Linux | Sản xuất | libsecret |
| iOS / macOS | Trên lộ trình | Vùng an toàn |
5 KB.
stack của bạn, không thay đổi.
Cầu PHP là một yêu cầu duy nhất nằm ở phía trước các endpoint hiện có của bạn. Các tuyến đường của bạn, database của bạn, logic kinh doanh của bạn. Không đụng hàng.. Identity Layer xử lý xác thực và mã hóa payload. Loại bỏ nó giống như cách bạn đã thêm nó.
require_once
và hai lệnh gọi hàm. Điểm cuối của bạn bắt đầu nhận được payload đã được xác minh, giải mã.
Không di chuyển lược đồ. Không có thay đổi bảng người dùng. Không có lưu trữ phiên.
stack phía máy chủ hoàn chỉnh là 225 KB.
// 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
đăng ký ủy quyền và mở cửa sổ xuất 72 giờ.
Nhật ký sẽ bị hủy sau khi thu thập. Cơ quan yêu cầu phải chịu trách nhiệm pháp lý.
// 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 );
| thành phần | Công nghệ | Ghi chú |
|---|---|---|
| Thời gian chạy | PHP 8.x | Vani, không cần khung |
| database | MySQL / MariaDB | Lược đồ chuẩn, không có cột thông tin xác thực |
| Bộ nhớ đệm/phù du | Redis | Mã thông báo thách thức, hàng đợi tin nhắn (TTL < 1 phút) |
| Kích thước cầu | 5 KB | Tệp PHP đơn lẻ, thả vào bất kỳ stack LAMP nào |
| Kích thước stack đầy đủ | 225 KB | Identity STD + HS + Phím + Secure Channel + IoT + Nhãn + Thẻ |
| Deployments | Container / tại chỗ / air-gapped | Không có kết nối đám mây bắt buộc |