Ir al contenido

Identidad y credenciales del dispositivo

Cada dispositivo en CORE-M tiene dos identificadores y exactamente un tipo de credencial activa. Entender la diferencia es la base del provisioning y de la rotación de credenciales.

Dos identificadores: device_id vs hardware_id

Sección titulada «Dos identificadores: device_id vs hardware_id»
device_idhardware_id
Qué esUUID asignado por la plataformaNúmero de serie del fabricante, dirección MAC u otro identificador de hardware estable
Quién lo estableceCORE-M, en el registroTú, a partir del hardware
UnicidadÚnico a nivel globalÚnico dentro de un tenant
¿Mutable?NuncaTratado como inmutable — es el ancla de idempotencia
Se usa paraTodas las rutas y búsquedas de la API (p. ej. /api/v1/devices/{device_id})Deduplicación y (re)provisioning idempotente

El device_id es lo que usas en todas partes en la API. El hardware_id existe para que la plataforma pueda reconocer el mismo dispositivo físico entre reintentos: registrar o aprovisionar dos veces con el mismo hardware_id devuelve el dispositivo existente en lugar de crear un duplicado.

Credenciales: cómo se autentica un dispositivo

Sección titulada «Credenciales: cómo se autentica un dispositivo»

Los dispositivos se autentican ante CORE-M con uno de tres tipos de credencial. Elige el que coincida con tu protocolo y tu modelo de amenazas.

CredencialEmitida porAlmacenada en reposo comoPresentada como
API keyProvisioning o CreateAPIKey; devuelta en bruto una vezHash SHA-256 (la key en bruto nunca se almacena)Authorization: Bearer sk_live_… o X-API-Key: sk_live_…
PSK (clave precompartida)Generada/asignada en el provisioning, ≥ 32 bytesDe forma segura en la plataforma; aprovisionada al dispositivoHandshake DTLS PSK (CoAP, LwM2M)
Certificado de cliente X.509Tu CA; el certificado público se registra vía RegisterDeviceCertSolo el fingerprint SHA-256 de los bytes DERCertificado de cliente mTLS (MQTT, CoAP, LwM2M)

La credencial de dispositivo más común. Formato:

sk_live_ + URL-safe encoding of 32 random bytes

La plataforma almacena solo un hash de la key. El valor en bruto se devuelve exactamente una vez —en el provisioning o cuando creas la key— y no se puede recuperar de nuevo. Si se pierde, rótala por una nueva.

Preséntala en cada petición usando cualquiera de las dos cabeceras:

POST /api/v1/devices/{device_id}/uplink HTTP/1.1
Host: api.kronoxdata.com
Authorization: Bearer sk_live_Zr8K2mQx...redacted...
Content-Type: application/json
{"kind":"telemetry","payload":"..."}

El middleware de auth resuelve la key a su tenant_id y device_id y los inyecta en el contexto de la petición. El dispositivo nunca envía su propio tenant_id — la identidad se deriva de la credencial, así que una key robada no puede suplantar al dispositivo de otro tenant.

Un secreto simétrico de al menos 32 bytes, usado para el handshake DTLS en transportes UDP. Ideal para dispositivos restringidos sobre CoAP o LwM2M donde ejecutar una pila de certificados completa es demasiado pesado. La PSK se genera o asigna durante el provisioning y se graba en el dispositivo junto a su identidad. Trátala como cualquier otro secreto: otorga el mismo acceso que una API key.

La credencial de dispositivo más fuerte, usada para TLS mutuo (mTLS) sobre MQTT, CoAP y LwM2M. Emites el certificado desde tu propia CA y registras solo el certificado público con la plataforma vía RegisterDeviceCert (POST /api/v1/devices/{device_id}/certs). CORE-M parsea el PEM del lado del servidor y almacena solo el fingerprint SHA-256 de los bytes DER — ese fingerprint es el ancla de identidad para las búsquedas mTLS.

Para dejar de confiar en un certificado, revócalo por fingerprint con RevokeDeviceCert (DELETE /api/v1/devices/certs/{fingerprint}). Lista los certificados de un tenant con ListDeviceCerts (GET /api/v1/devices/certs, opcionalmente filtrado por device_id).

Las credenciales no son para siempre. Dos operaciones las mantienen seguras:

  • Rotar — emitir una credencial nueva y retirar la antigua. Para las API keys, la nueva key se devuelve una vez; la key antigua sigue funcionando durante una ventana de solapamiento configurada para que el dispositivo pueda cambiar sin tiempo de inactividad, tras lo cual deja de aceptarse.
  • Revocar — anular una credencial de inmediato. Las peticiones futuras que usen una API key o un certificado revocados devuelven UNAUTHENTICATED, y las sesiones de protocolo activas autenticadas con ella se desconectan donde el transporte lo permita.

No acuñas credenciales a mano — se emiten como parte de un flujo de provisioning: