|  |  | 

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 IoT Toolkit

    Panoramica L’IoT Toolkit è una raccolta di librerie progettate per comunicare senza sforzo con i moderni dispositivi IoT, permettendoti di concentrarti sulle parti cruciali della tua applicazione. Sebbene i dispositivi IoT parlino tipicamente linguaggi semplici, implementare questi protocolli secondo gli standard ufficiali può diventare un onere gravoso. L’IoT Toolkit fornisce librerie collaudate per aiutarti a…

  •  |  | 

    emFile RAID 5

    Sebbene l’acronimo R-A-I-D derivi da Redundant Array of Independent (originariamente Inexpensive) Disks, i termini “recuperabile” e “replicabile” sono più accurati di “ridondante”. Storicamente, i dispositivi di archiviazione sono stati i dischi rigidi. Nelle applicazioni embedded, questi possono essere qualsiasi tipo di dispositivo di memoria (NAND, NOR, SD) e, date le dimensioni del sistema, l’archiviazione è…

  •  |  |  | 

    Segger emUSB Host

    Panoramica Il software emUSB-Host consente alle periferiche USB di funzionare con i dispositivi embedded. Fornisce funzionalità complete di host USB, inclusi il supporto per hub esterni e driver di classe (opzionali). Il software è conforme alle specifiche standard stabilite dall’USB Implementors Forum e supporta tutte le modalità di trasferimento (control, bulk, interrupt e isochronous) a…

  •  | 

    Segger J-Link OB

    Il J-Link OB (dove OB sta per: on-board) è essenzialmente un J-Link in un chip singolo basato su microcontrollore che viene integrato direttamente sulla scheda di valutazione. Arricchisce il design di qualsiasi scheda target con funzionalità standard, come il supporto al debug, il caricamento nella memoria Flash e il VCOM, senza aggiungere costi extra. Il…

  •  |  | 

    Segger emModbus

    Panoramica emModbus è l’implementazione del protocollo Modbus firmata SEGGER. Fornisce ai dispositivi embedded capacità di comunicazione Modbus tramite UART (ASCII e RTU) ed Ethernet (Modbus/TCP e Modbus/UDP), consentendo loro di connettersi a una vasta gamma di apparecchiature industriali, di impiegare funzioni master e slave e di operare in modo efficiente su piccoli microcontrollori con capacità…