โทรไม่กี่ครั้ง.
แพลตฟอร์มใดก็ได้
Identity Layer ผสานรวมกับพื้นผิวแบบมินิมอลด้วยการออกแบบ MicroPython บนไมโครคอนโทรลเลอร์ €10, Flutter บน Android และ Windows หรือบริดจ์ PHP หล่นลงในendpointที่มีอยู่ของคุณ โปรโตคอลเดียวกัน การรับประกันการเข้ารหัสแบบเดียวกัน สี่สาย
บูตเพื่อตรวจสอบ 6.5 วินาที
โปรโตคอลการท้าทาย/ตอบกลับ Ed25519 เดียวกันกับที่ใช้ตรวจสอบสิทธิ์ผู้ใช้อุปกรณ์เคลื่อนที่ หรือผู้ปฏิบัติงานที่ได้รับการควบคุมทำงานบนไมโครคอนโทรลเลอร์ 10 ยูโร device-bound key ไม่มีdatabaseข้อมูลประจำตัว JWT ออกเมื่อยืนยันแล้ว
IdentityIoT,
ติดตั้งผ่าน 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})
| ส่วนประกอบ | รุ่น | บทบาท |
|---|---|---|
| มจร | Raspberry Pi Pico 2W (RP2350) | TrustZone, WiFi, device-bound key storage |
| NFC reader | PN532 | I2C interface, reads NTAG424 DNA badges |
| จอแสดงผล | SSD1306 128x64 OLED | Boot sequence, verification status |
| NFC badge | NTAG424 DNA (NXP) | AES-128 ออนบอร์ด, คีย์ที่ไม่สามารถส่งออกได้, CMAC แบบไดนามิก |
ข้อมูลประจำตัวที่เชื่อมโยงกับอุปกรณ์
สี่สาย
แพ็คเกจท้องถิ่น ไม่มีบริการระบุตัวตนภายนอก รหัสส่วนตัวไม่เคยออกจากอุปกรณ์
การจัดเก็บข้อมูลที่ปลอดภัยผ่านทาง flutter_secure_storage
และ TEE / Secure Enclave เมื่อพร้อมใช้งาน
การเข้ารหัสเพย์โหลดเป็นแบบ end-to-end ผ่าน 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
| แพลตฟอร์ม | สถานะ | พื้นที่เก็บข้อมูลที่ปลอดภัย |
|---|---|---|
| Android | เวอร์ชันที่ใช้งานจริง Google Play เคลียร์แล้ว | ที่เก็บคีย์ Android / TEE |
| Windows | การผลิต Microsoft Store เคลียร์แล้ว | ตัวจัดการข้อมูลประจำตัวของ Windows |
| Linux | การผลิต | libsecret |
| iOS / macOS | บนแผนงาน | วงล้อมที่ปลอดภัย |
5 กิโลไบต์
สแต็คของคุณไม่เปลี่ยนแปลง
บริดจ์ PHP เป็นข้อกำหนดเดียวที่อยู่ด้านหน้าendpointที่มีอยู่ของคุณ เส้นทางของคุณ databaseของคุณ ตรรกะทางธุรกิจของคุณ ไม่ถูกแตะต้อง.. Identity Layer จัดการการรับรองความถูกต้องและการเข้ารหัสเพย์โหลด ลบออกแบบเดียวกับที่คุณเพิ่ม
require_once
และการเรียกใช้ฟังก์ชันสองครั้ง ตำแหน่งข้อมูลของคุณเริ่มได้รับเพย์โหลดที่ผ่านการตรวจสอบและถอดรหัสแล้ว
ไม่มีการโยกย้ายสคีมา ไม่มีการเปลี่ยนแปลงตารางผู้ใช้ ไม่มีที่เก็บข้อมูลเซสชัน
สแต็กฝั่งเซิร์ฟเวอร์ที่สมบูรณ์คือ 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
ลงทะเบียนอาณัติและเปิดหน้าต่างการส่งออกเป็นเวลา 72 ชั่วโมง
บันทึกจะถูกทำลายหลังการรวบรวม หน่วยงานที่ร้องขอมีหน้าที่รับผิดชอบทางกฎหมาย
// 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 | standard, ไม่ต้องใช้ framework |
| database | MySQL / MariaDB | สคีมามาตรฐาน ไม่มีคอลัมน์credential |
| แคช / ชั่วคราว | Redis | โทเค็นการท้าทาย คิวข้อความ (TTL < 1 นาที) |
| ขนาดสะพาน | 5 KB | ไฟล์ PHP ไฟล์เดียว วางลงใน LAMP Stack ใดก็ได้ |
| ขนาดกองเต็ม | 225 KB | Identity STD + HS + คีย์ + Secure Channel + IoT + ป้ายกำกับ + แท็ก |
| การปรับใช้ | คอนเทนเนอร์ / ภายในองค์กร / ช่องอากาศ | ไม่มีการเชื่อมต่อระบบคลาวด์บังคับ |