|  |  | 

Segger emSecure


emSecure è una suite di firme digitali per sistemi embedded progettata per proteggere prodotti e asset vitali, offrendo una protezione totale contro l’hacking. Basata su algoritmi di crittografia asimmetrica a doppia chiave, la suite garantisce che le firme non possano essere forgiate tramite il reverse engineering del firmware. Inoltre, emSecure può rendere impossibile la creazione di cloni di un dispositivo embedded tramite il semplice mirroring di hardware e firmware. Può fare molto di più, come proteggere gli aggiornamenti firmware distribuiti ai dispositivi e autenticare licenze, numeri di serie e dati sensibili.

emSecure è un pacchetto completo che include strumenti pronti all’uso per la generazione di chiavi e firme. Il codice sorgente è stato scritto da zero per i sistemi embedded, garantendo massima portabilità, un footprint di memoria ridotto e prestazioni elevate. Non è soggetto a licenze open-source o obblighi di attribuzione: può essere integrato in qualsiasi prodotto commerciale senza l’obbligo di divulgare il codice sorgente combinato. È utilizzabile senza royalty (royalty-free) e l’integrazione in un prodotto esistente richiede meno di un giorno.

Caratteristiche principali

  • Algoritmi asimmetrici: La doppia chiave (privata e pubblica) garantisce una sicurezza totale.
  • Indipendente dall’hardware: Funziona su qualsiasi CPU senza necessità di hardware extra.
  • Applicabile a prodotti nuovi ed esistenti.
  • Pacchetto completo: Generatore di chiavi e strumenti inclusi.
  • Codice sorgente completo disponibile.
  • Strumento gratuito Sign & Verify: Per la protezione di file personali.

Gestione delle chiavi

Le firme digitali — da non confondere con le firme elettroniche — sono un sistema crittografico che utilizza chiavi pubbliche e private. Una chiave privata sicura viene utilizzata per generare la firma digitale, mentre una seconda chiave pubblica viene usata per autenticare i dati. Non è possibile ricavare la chiave privata da quella pubblica, né generare una firma valida senza la chiave privata.

Processo di verifica

L’algoritmo emVerify decripta il file della firma e verifica se il file di dati corrispondente coincide. Il processo parte dai dati da verificare e dalla firma digitale creata dal file originale. Viene generato un hash per i dati non verificati; la chiave pubblica e l’algoritmo di decriptazione vengono usati per generare l’hash originale e confrontarlo: se corrispondono, i dati sono autentici.

Operazione di firma

L’algoritmo emSign cripta i dati e li trasforma in un file di firma. L’operazione inizia utilizzando un algoritmo di hash sicuro (es. SHA1, SHA256) per generare un hash dai dati originali. Quindi, utilizzando la chiave privata insieme all’hash, viene generata la firma digitale.


Algoritmi di sicurezza

emSecure supporta l’algoritmo RSA. Basato sullo schema standard RSA-PSS, la configurazione predefinita utilizza chiavi RSA a 2048 bit e SHA1. Tuttavia, sono supportati set moderni di algoritmi di digest e chiavi RSA da 1024 fino a 8192 bit (raccomandati almeno 2048 bit).

  • emPrintKey: Esporta chiavi e firme in formato sorgente C per includerle direttamente nell’applicazione.
  • emKeyGen: Genera la coppia di chiavi partendo da un numero casuale elevato.

Casi d’uso

emSecure può essere utilizzato per due approcci di sicurezza: Anti-hacking (autenticazione del firmware) e Anti-cloning (autenticazione dell’hardware).

Anti-hacking: Firma del firmware e verifica del bootloader

Per garantire che solo immagini firmware autorizzate vengano eseguite, l’immagine viene firmata con la chiave privata durante la produzione. La firma viene memorizzata nel prodotto insieme al firmware. La chiave pubblica viene inserita nel bootloader, che verifica la firma a ogni avvio o aggiornamento. Se non corrispondono, il bootloader impedisce l’esecuzione o cancella il firmware non autorizzato.

Anti-cloning: Firma dell’hardware e verifica del firmware

Per impedire la riproduzione non autorizzata dell’hardware, emSecure firma ogni unità genuina. Durante la produzione, vengono letti dati univoci e fissi del chip (es. l’ID univoco del microcontrollore). Questi dati vengono firmati e la firma viene scritta in un’area OTP (One-Time Programmable). Il firmware include la chiave pubblica: all’avvio legge l’ID univoco e lo verifica con la firma. Se il firmware viene copiato su un hardware contraffatto con un ID diverso, la firma fallirà e il software si rifiuterà di girare.


Progetto di esempio

emSecure include un progetto per SEGGER Embedded Studio che dimostra la verifica di un messaggio. L’applicazione è semplice: include un file di testo e la sua firma convertiti in buffer C. Se il messaggio o la firma vengono modificati anche solo di un bit, la funzione SECURE_Verify restituirà un errore.

void main(void) {
  int Status;
  // ...
  printf("Verifica del messaggio in corso...");
  Status = SECURE_Verify(&PublicKey, 0, 0, message_file, sizeof(message_file), _S, sizeof(_S));
  if (Status > 0) {
    printf(" OK\nProva a modificare il messaggio per vedere cosa succede.\n");
  } else {
    printf("FALLITO! La firma non corrisponde al messaggio.\n");
  }
}

Articoli simili

  •  |  | 

    Segger emRun

    Panoramica La maggior parte delle toolchain che utilizzano GCC o LLVM si appoggia a newlib, newlib-nano o glibc. Sfortunatamente, queste librerie presentano svantaggi significativi rispetto alle librerie di runtime professionali per sistemi embedded. È qui che entra in gioco emRun. Può essere utilizzato con GCC, LLVM e altre toolchain per fornire una libreria di runtime…

  •  |  |  |  | 

    Segger emSSH

    emSSH di SEGGER è una soluzione per il login tramite secure shell, che consente l’accesso protetto a qualsiasi applicazione server all’interno di un prodotto. Può essere utilizzato in quasi tutti i dispositivi: è indipendente dal target e funziona sia in applicazioni native per computer che in sistemi embedded. L’ampia gamma di opzioni garantisce la massima…

  •  |  | 

    SEGGER emFTP

    FTP significa File Transfer Protocol (Protocollo di Trasferimento File). È il meccanismo di base per spostare file tra macchine su reti basate su TCP/IP, come Internet. L’FTP è un protocollo client/server, il che significa che una macchina (il client) avvia il trasferimento contattando un’altra macchina (il server) ed effettuando delle richieste. Il server deve essere…

  •  | 

    Segger Ozone

    Ozone è un ambiente di debugg grafico stand-alone completo per applicazioni embedded. Con Ozone è possibile eseguire il debug di qualsiasi applicazione basata su Arm o RISC-V a livello di sorgente (C, C++ e Rust) e assembly. Ozone può caricare applicazioni create con quasi tutti i tipi di toolchain o ambienti di sviluppo integrati (IDE),…

  •  |  | 

    Segger emUSB-C PD

    emUSB-C PD trasforma il cavo in una connessione intelligente, consentendo il rilevamento del tipo di dispositivo collegato, delle capacità di alimentazione, del software USB Host/Device e molto altro. Con la libreria emUSB-C PD di SEGGER, le applicazioni embedded possono gestire facilmente una porta USB-C su qualsiasi dispositivo dotato di un controller USB PD. emUSB-C PD…