
Biblioteca de criptografia assimétrica para geração de URLs assinadas em dispositivos embarcados, permitindo acesso a recursos com limite de tempo usando PSA Crypto API com suporte para Zephyr e ESP-IDF.
URLs assinadas para dispositivos pequenos.
signy é uma biblioteca para gerar URLs assinadas em dispositivos embarcados usando criptografia assimétrica. URLs assinadas são tipicamente utilizadas para conceder acesso temporário a recursos privados, como aqueles servidos por uma Rede de Entrega de Conteúdo (CDN). No contexto de dispositivos embarcados, URLs assinadas podem ser usadas para permitir que um sistema externo, ou outro componente do mesmo sistema, acesse um recurso específico. Por exemplo, um dispositivo pode gerar uma URL assinada e passá-la para um sistema mais capaz para permitir que ele baixe o recurso em seu nome.
O uso do signy requer um servidor que seja capaz de verificar as URLs assinadas que ele gera. Se estiver usando o signy com o Golioth, os certificados associados à Autoridade Certificadora (CA) que emitiu o certificado do dispositivo devem ser enviados para o seu projeto.
signy aproveita a API de Criptografia da Platform Security Architecture (PSA) para operações de assinatura. As chaves privadas devem ser geradas ou importadas usando APIs de Criptografia PSA, e um certificado assinado contendo a chave pública deve ser passado para a biblioteca signy.
As URLs assinadas geradas pelo signy aderem ao seguinte formato.
BASEURL?nb=NOTBEFORE&na=NOTAFTER&cert=CERTIFICATE&sig=SIGNATURE
BASEURL: a localização do recurso (exemplo: https://gw.golioth.io/.u/c/[email protected])NOTBEFORE / NOTAFTER: os timestamps unix que definem a janela na qual a URL assinada é válida. signy usa a hora do sistema do dispositivo para NOTBEFORE e define o timestamp NOTAFTER com base em CONFIG_SIGNY_URL_VALIDITY_DURATION.CERTIFICATE: a codificação URL base64 sem preenchimento do certificado do dispositivo.SIGNATURE: a assinatura sobre toda a parte da URL que precede &sig=.O repositório signy é um módulo Zephyr e pode ser incluído em qualquer projeto Zephyr adicionando o seguinte ao arquivo west.yml do projeto.
- name: signy
path: modules/lib/signy
revision: v0.2.0
url: https://github.com/golioth/signy.git
Veja os exemplos do Zephyr para mais informações.
O repositório signy é um componente ESP-IDF e pode ser incluído em qualquer projeto ESP-IDF especificando-o como uma dependência no arquivo idf_component.yml do projeto.
dependencies:
signy:
version: v0.2.0
git: https://github.com/golioth/signy.git
Veja os exemplos do esp-idf para mais informações.