
Biblioteca de criptografía asimétrica para generar URLs firmadas en dispositivos embebidos, que permite el acceso a recursos con límite de tiempo mediante la API PSA Crypto, con soporte para Zephyr y ESP-IDF.
URLs firmadas para dispositivos pequeños.
signy es una librería para generar URLs firmadas en dispositivos embebidos
mediante criptografía asimétrica. Las URLs firmadas se utilizan típicamente para
otorgar acceso limitado en el tiempo a recursos privados, como los servidos por
una Red de entrega de contenidos (CDN).
En el contexto de los dispositivos embebidos, las URLs firmadas pueden usarse
para permitir que un sistema externo, u otro componente del mismo sistema,
acceda a un recurso específico. Por ejemplo, un dispositivo puede generar una
URL firmada y pasarla a un sistema más capaz para permitirle descargar el
recurso en su nombre.
El uso de signy requiere un servidor capaz de verificar las URLs firmadas que
genera. Si se utiliza signy con Golioth, los
certificados asociados con la Autoridad Certificadora (CA) que emitió el
certificado del dispositivo deben subirse a tu
proyecto.
signy aprovecha la Platform Security Architecture (PSA) Crypto
API para las operaciones de
firma. Las claves privadas deben
generarse
o
importarse
mediante las API de PSA Crypto, y un certificado firmado que contenga la clave
pública debe pasarse a la librería signy.
Las URLs firmadas generadas por signy se ajustan al siguiente formato.
BASEURL?nb=NOTBEFORE&na=NOTAFTER&cert=CERTIFICATE&sig=SIGNATURE
BASEURL: la ubicación del recurso (p. ej.,
https://gw.golioth.io/.u/c/[email protected])NOTBEFORE / NOTAFTER: las marcas de tiempo Unix que definen el intervalo en
el que la URL firmada es válida. signy utiliza la hora del sistema del
dispositivo para NOTBEFORE y establece la marca de tiempo de NOTAFTER en
función de CONFIG_SIGNY_URL_VALIDITY_DURATION.CERTIFICATE: la codificación URL base64 sin relleno del certificado del
dispositivo.SIGNATURE: la firma sobre toda la porción de la URL que precede a &sig=.El repositorio signy es un módulo de
Zephyr y se puede
incluir en cualquier proyecto de Zephyr añadiendo lo siguiente al archivo
west.yml del proyecto.
- name: signy
path: modules/lib/signy
revision: v0.2.0
url: https://github.com/golioth/signy.git
Consulta los ejemplos de Zephyr para obtener más información.
El repositorio signy es un componente de
ESP-IDF
y se puede incluir en cualquier proyecto de ESP-IDF especificándolo como
dependencia en el archivo idf_component.yml del proyecto.
dependencies:
signy:
version: v0.2.0
git: https://github.com/golioth/signy.git
Consulta los ejemplos de esp-idf para obtener más
información.