14.4.1. Conceptos: confianza, claves y formato de archivo¶
Antes de cualquier comando, tres nociones de fondo que se aplican a todas las demás páginas de esta sección.
14.4.1.1. Modelos de confianza¶
Una conexión TLS puede ofrecer tres niveles crecientes de garantía:
Solo cifrado – el tráfico está cifrado pero ninguna de las partes demuestra quién es. Es fácil de configurar (sin validación de certificados) pero vulnerable a un ataque de intermediario (man-in-the-middle). Úsalo solo para pruebas locales.
Autenticación del servidor – el cliente verifica el certificado del servidor contra un certificado de confianza (el conocido modelo HTTPS). La OpenMV Cam puede actuar como cliente (verificando un servidor remoto) o como servidor (presentando su propio certificado).
Autenticación mutua (mTLS) – ambos extremos presentan y verifican certificados. Se usa cuando el servidor también debe estar seguro de la identidad del cliente.
14.4.1.2. Elección de un tipo de clave¶
La compilación de mbedTLS de la cámara admite ECDSA en las curvas primas NIST/SEC y RSA. Hay tres formas prácticas de crear una clave; se recomienda ECDSA P-256 (prime256v1):
ECDSA P-256 (prime256v1) – unos 128 bits de seguridad con una clave de 256 bits. Claves y firmas diminutas, y con diferencia el handshake más rápido de las opciones admitidas en un Cortex-M (las operaciones de curva elíptica son mucho más baratas que las de clave privada RSA). Compatible universalmente con los pares TLS. Es el mejor equilibrio entre seguridad, velocidad, uso de RAM/flash y compatibilidad en un dispositivo embebido, por lo que es la opción predeterminada aquí.
ECDSA P-384 (secp384r1) – unos 192 bits de seguridad. Sigue siendo de curva elíptica, así que es razonablemente eficiente, pero más grande y lenta que P-256 a cambio de un margen de seguridad que los despliegues típicos de IoT no necesitan. Úsala solo si un certificado de larga duración o un requisito de cumplimiento lo exige.
RSA-2048 – unos 112 bits de seguridad. Compatible universalmente, incluso con pares muy antiguos, pero las claves y certificados RSA son mucho más grandes y las operaciones de clave privada RSA (realizadas por el lado que presenta el certificado) son la opción más lenta y que más memoria consume en un microcontrolador. Úsala solo cuando un par no pueda usar ECDSA.
Nota
Las claves Ed25519 / Curve25519 no son compatibles. La compilación de mbedTLS de la OpenMV Cam no habilita EdDSA ni Curve25519, por lo que un certificado o clave Ed25519 fallará al cargarse o en el handshake. Usa una de las tres opciones anteriores.
14.4.1.3. Formato de archivo: usa DER¶
La compilación de mbedTLS que usa la OpenMV Cam no incluye el análisis de PEM, por lo que la cámara solo lee certificados y claves en formato DER (la codificación binaria). La mayoría de las herramientas emiten por defecto el formato PEM (texto base64), así que todo archivo destinado a la cámara se convierte primero a DER: cada receta de esta sección termina con ese paso de conversión. Necesitarás:
Una clave privada – mantenida en secreto, usada por el lado que presenta un certificado.
Un certificado – la parte pública, presentada al otro lado durante el handshake.
Un certificado de CA / de confianza – el certificado que carga el lado que verifica para decidir si el par es de confianza. En una configuración autofirmada esto es simplemente el propio certificado del par.