emSecure è una suite di firme digitali per sistemi embedded per proteggere prodotti e asset vitali, offrendo una protezione del 100% contro l’hacking. Basata su algoritmi di crittografia asimmetrica con due chiavi, la suite di firme digitali di SEGGER garantisce protezione contro l’hacking: le firme non possono essere falsificate mediante l’ingegneria inversa del firmware. Inoltre, emSecure può rendere impossibile creare un clone di un dispositivo embedded semplicemente copiando hardware e firmware. E può fare molto altro, come proteggere gli aggiornamenti del firmware distribuiti ai dispositivi embedded e autenticare licenze, numeri di serie e dati sensibili.
emSecure è un pacchetto molto completo, che include strumenti pronti all’uso e funzionalità per la generazione di chiavi e firme per la tua soluzione embedded. Il codice sorgente emSecure è stato creato da zero per i sistemi embedded, per ottenere la massima portabilità con una ridotta impronta di memoria e alte prestazioni. Non è coperto da una licenza open-source o attribuzione obbligatoria. Può essere integrato in qualsiasi prodotto commerciale o proprietario senza l’obbligo di divulgare il codice sorgente combinato. Può essere utilizzato royalty-free, richiedendo meno di un giorno per aggiungere e integrare emSecure in un prodotto esistente.
Caratteristiche principali
- Algoritmi asimmetrici: due chiavi (privata e pubblica) garantiscono il 100% di sicurezza
- Indipendente dall’hardware: funziona su qualsiasi CPU senza bisogno di hardware aggiuntivo
- Applicabile per prodotti nuovi ed esistenti
- Pacchetto completo: generatore di chiavi e strumenti inclusi
- Codice sorgente completo disponibile
- Protezione dei file personali con lo strumento gratuito Sign & Verify
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 utilizzata per autenticare i dati mediante la sua firma. Non esiste un modo per ottenere la chiave privata dalla chiave pubblica e non è possibile generare una firma valida senza la chiave privata.
Processo di verifica
L’algoritmo emVerify come parte di emSecure decrittografa il file della firma e verifica se il file di dati corrispondente corrisponde alla firma. Il processo di verifica inizia con i dati che si desidera verificare e la firma digitale che è stata creata dal file originale. Viene generato un file hash per i dati non verificati. La chiave pubblica e l’algoritmo di decrittografia vengono utilizzati per generare l’hash originale e quindi confrontati per verificare se il file di dati è genuino al fine di accettare o rifiutare la pretesa di autenticità del messaggio.
Operazione di firma
L’algoritmo emSign, come parte di emSecure, crittografa i dati che devono essere protetti e li trasforma in un file di firma. L’operazione di firma inizia utilizzando un algoritmo hash sicuro (ad esempio SHA1, SHA256) per generare un hash dai dati originali. Quindi, utilizzando la chiave privata (crittografia) insieme all’hash, viene generata una firma digitale.
Operazione di firma utilizzando emSecure-RSA
Esportazione delle chiavi
L’algoritmo emPrintKey esporta i file di chiave e firma in un formato sorgente C compatibile che può essere incluso in qualsiasi applicazione, quindi non è necessario caricarli da un file durante l’esecuzione. Ciò è particolarmente utile per le applicazioni embedded.
Generazione delle chiavi
Una gestione efficiente delle chiavi richiede un algoritmo che generi una coppia di chiavi da un numero casuale di grandi dimensioni. emKeyGen, come parte di emSecure, genera una chiave pubblica e una privata. I parametri di generazione possono essere impostati con le opzioni della riga di comando. Le chiavi vengono salvate in un formato comune di file di chiave e possono essere pubblicate e scambiate.
Algoritmi di sicurezza
emSecure consente di firmare i dati con l’algoritmo di crittografia asimmetrica RSA. I dati vengono firmati inviando l’hash dei dati al server. Viene generata una firma e restituita al richiedente. Chiunque può quindi utilizzare la chiave pubblica per verificare che i dati siano stati firmati da qualcuno che ha accesso alla chiave privata corrispondente.
Basato sullo schema di firma standard del settore RSA-PSS, la configurazione predefinita utilizza chiavi RSA a 2048 bit e SHA1 per la firma. Tuttavia, per PSS, è disponibile un intero set di moderni algoritmi di digest e sono supportate chiavi RSA tra 1024 e 8192 bit, con chiavi di almeno 2048 bit consigliate.
API semplice e potente
emSecure ha un’API semplice ma potente. Può essere facilmente integrato in un’applicazione esistente entro un giorno. emSecure incorpora algoritmi di sicurezza comprovati come proposto da NIST. Gli algoritmi sono dimostrati essere crittograficamente forti e possono fornire la massima sicurezza alle tue applicazioni.
Alte prestazioni
emSecure è stato creato da zero per ottenere la massima portabilità e prestazioni, con una ridotta impronta di memoria. Gli sviluppatori di prodotti possono quindi trarre vantaggio dalla sicurezza delle firme digitali nelle applicazioni embedded. Anche su piccoli microcontrollori a chip singolo, non è necessario hardware aggiuntivo come dispositivi di sicurezza esterni o memoria esterna.
Sign&Verify — L’applicazione drag-and-drop
L’applicazione Sign & Verify consente di creare facilmente firme digitali emSecure e di verificare i file firmati tramite drag-and-drop. Può essere utilizzato liberamente anche per uso personale, ad esempio per assicurarsi che i file archiviati su un server non vengano modificati o per consentire ai partner di comunicazione di inviare/ricevere file sapendo che nulla è stato modificato durante la trasmissione.
Casi d’uso
emSecure può essere utilizzato per due approcci di sicurezza: Anti-hacking (autenticazione del firmware) e anti-clonazione (autenticazione dell’hardware).
Anti-hacking: Firma del firmware in produzione e verifica del bootloader
Per assicurarsi che solo immagini del firmware autorizzate vengano eseguite su un prodotto, l’immagine del firmware verrà firmata con emSecure. Per fare ciò, viene generata una coppia di chiavi emSecure una sola volta. La chiave privata verrà inclusa nel processo di produzione del firmware. Una volta che un firmware è creato e pronto per essere spedito o incluso in un prodotto, verrà firmato con questa chiave privata. La firma verrà trasferita e archiviata nel prodotto insieme al firmware.
La chiave pubblica verrà inclusa nel bootloader del prodotto, che gestisce gli aggiornamenti del firmware e avvia il firmware.
Durante un aggiornamento del firmware e all’avvio del prodotto, il bootloader verificherà il firmware mediante la sua firma. Se corrispondono, il firmware viene avviato, altrimenti l’applicazione rimarrà nel bootloader o addirittura cancellerà il firmware.
Verifica del bootloader anti-hacking
Anti-clonazione: Firma dell’hardware in produzione e verifica del firmware
Per assicurarsi che un prodotto non possa essere riprodotto da produttori non autorizzati, semplicemente copiando l’hardware, emSecure verrà utilizzato per firmare ogni unità di prodotto originale. Innanzitutto, viene generata una coppia di chiavi emSecure una sola volta. Questo probabilmente viene fatto nel sito di produzione.
La chiave privata verrà inclusa nel processo di produzione del prodotto. Alla fine del processo di produzione, dopo che l’unità è stata assemblata e testata, vengono letti dall’unità alcuni dati fissi e univoci specifici dell’hardware, come l’ID univoco del microcontrollore. Questi dati vengono firmati da emSecure con la chiave privata e la firma viene riscritta nell’unità in un’area OTP o in una posizione specificata sulla memoria. La chiave pubblica verrà inclusa nel firmware che verrà eseguito sul prodotto. Quando il firmware è in esecuzione, leggerà i dati univoci dall’unità e li verificherà con la firma. Quando la firma non corrisponde, ad esempio, quando è stata semplicemente copiata in un’unità contraffatta con altri dati univoci, il firmware rifiuterà di eseguire.