Passa al contenuto principale
Immagine
motivo esagonale viola

La firma del codice è il processo di firma digitale di file e script eseguibili utilizzando uno strumento di firma e un certificato digitali. Questo processo si basa su una tecnologia chiamata infrastruttura a chiave pubblica (PKI).

Il codice di firma richiede uno strumento di firma dedicato come SignTool di Microsoft, Jarsigner di Java o anche OpenSSL, a seconda del tipo di file da firmare. La firma stessa consiste in un'operazione crittografica che lega il contenuto del file a un certificato digitale.

La firma del codice protegge l'azienda, i partner e gli utenti finali dalla manomissione del software durante il download di file di programma eseguibili, soprattutto se provenienti da canali non sicuri come Internet. In qualità di provider di soluzioni per la firma del codice Entrust può aiutarti a implementare in modo efficiente ed estremamente affidabile soluzioni di firma del codice che proteggono la tua azienda e i tuoi clienti da attacchi volti a falsificare o alterare le applicazioni.

Qual è lo scopo della firma digitale del codice?

Ci sono due ragioni principali per la firma digitale del codice:

  1. Per fornire agli utenti l'identità dell'organizzazione che pubblica il file firmato
  2. Fornire un mezzo per verificare l'integrità del file, vale a dire controllare che non sia stato danneggiato o alterato in modo improprio da quando è stato firmato

Che cosa sono i certificati di firma del codice?

Gli sviluppatori di software utilizzano i certificati di firma del codice per firmare digitalmente applicazioni, driver, eseguibili e programmi software. Per gli utenti finali, ciò verifica che il codice non sia stato compromesso o violato da terzi. Per associare le chiavi pubbliche con il loro utente associato (proprietario della chiave privata), le infrastrutture a chiave pubblica (PKI) utilizzano certificati digitali.

Migliori pratiche per la firma del codice

Le prassi ottimali per i certificati di firma del codice includono:

  • Controllare l'accesso alle chiavi private
  • Proteggere le chiavi private con un modulo di sicurezza hardware (HSM) di livello 3 FIPS-140-2
  • Codice marcatura temporale
  • Comprendere la differenza tra la firma del test e la firma del rilascio
  • Autenticare il codice da firmare
  • Distribuire il rischio su più certificati
  • Revocare i certificati compromessi

Entrust offre una gamma completa di certificati di firma del codice e un metodo completo per gestirli, inclusi i certificati TLS/SSL, di posta elettronica sicura, di firma di documenti e per dispositivi mobili.

Come funziona la firma del codice?

Per implementare la firma del codice, l'editore del software deve generare una coppia di chiavi pubbliche private e inviare la chiave pubblica a un'autorità di certificazione, insieme alla richiesta di emissione di un certificato di firma del codice. L'autorità di certificazione verifica l'identità dell'editore del software e autentica la richiesta di certificato firmata digitalmente dell'editore. Una volta completato con successo questo processo di controllo e verifica delle chiavi, l'autorità di certificazione unisce l'identità dell'editore alla chiave pubblica e firma il pacchetto. Questo crea il certificato di firma del codice.

Immagine di firma del codice

Consulta questo white paper per avere maggiori informazioni sull'implementazione della firma del codice.

Metodi per la firma digitale

Diverse piattaforme applicative supportano la firma del codice e forniscono diversi strumenti per eseguirla. Di seguito è riportato un elenco dei tipi di firma più comuni del codice:

  • Adobe AIR
  • Libreria per sviluppatori Apple Mac OS X
  • Firefox XPI
  • Java
  • Microsoft

Passaggi per gli utenti finali

Ci sono cinque semplici passaggi che gli utenti devono compiere per determinare se il software è affidabile:

  1. Verificare se si intendeva installare il software.
  2. Controllare il nome del file per vedere se indica il software che si intendeva installare. Nell'esempio precedente, l'utente sta installando Adobe Reader 10, come sembra indicare il nome.
  3. Controllare il nome dell'editore per verificare se corrisponde a chi si pensa abbia scritto il software. Potrebbe rivelarsi difficile poiché il sito di download del software potrebbe essere diverso da quello dell'editore.
  4. Controllare il certificato di firma del codice per verificare se il nome dell'editore è presente nel certificato.
  5. Verificare se il certificato è stato emesso da una CA pubblicamente affidabile.

Funzionalità di firma del codice

I certificati convalidati dall'organizzazione (OV) riportano sul certificato l'organizzazione e la sede. Non supportano la firma in modalità kernel di Windows. I certificati a convalida estesa (EV) riportano, oltre all'organizzazione e alla sede, anche la giurisdizione e il tipo di organizzazione. I certificati EV facilitano anche la firma in modalità kernel di Windows per Vista, Windows 7, Windows 8, Windows 8.1 e Windows 10. La scelta della soluzione del certificato di firma del codice più adatta alle esigenze della tua organizzazione non è semplice, ma Entrust è qui per aiutarti.

Soluzioni di firma del codice

Il portafoglio di soluzioni di firma del codice di Entrust combina moduli di sicurezza hardware (HSM) nShield resistenti alle manomissioni con la soluzione Gateway di firma del codice di Entrust Professional Services. Il Gateway di firma del codice gestisce il flusso di lavoro di autorizzazione, accetta le richieste, avvisa gli approvatori via e-mail, gestisce i timeout, riconosce le approvazioni, registra l'attività e consegna il codice firmato all'area di staging. La soluzione utilizza gli HSM nShield Entrust e la root of trust, ovvero la protezione di tutte le chiavi di firma in un HSM certificato FIPS 140-2. Ciò impedisce la potenziale perdita di preziose chiavi di firma, le chiavi che garantiscono l'autenticità e l'integrità del codice. In questo modo i clienti possono firmare il proprio codice software. Le funzionalità includono:

  • Filtro Microsoft SmartScreen
  • Integrazioni di terze parti
  • Integrazioni illimitate
  • Timestamp
  • Stato di editore identificato
  • Riduzione delle notifiche di avvertenza

Supportiamo le soluzioni di firma del codice Entrust con la nostra vasta esperienza nelle prassi ottimali per la firma del codice e negli standard di dovuta attenzione.

In che modo la firma del codice fornisce l'identità dell'organizzazione che pubblica il file firmato?

Una firma digitale genera un legame crittografico tra un file e un certificato digitale, dove quest'ultimo rappresenta un'organizzazione. Immagina che il certificato sia un timbro di gomma digitalizzato, che contiene informazioni sull'organizzazione come nome legale, indirizzo e-mail, indirizzo fisico e paese. La firma del codice corrisponde quindi all'apposizione di un timbro digitale sul codice, che riporterà le informazioni sull'organizzazione.

È possibile verificare le informazioni di una firma del codice a ogni apertura del file firmato. Nella maggior parte dei casi, ciò viene svolto automaticamente dai sistemi operativi, che mostrano il nome dell'organizzazione contenuto nel certificato utilizzato per la firma.

Richiesta di controllo dell'account dell'utente

In che modo la firma del codice fornisce un mezzo per verificare l'integrità del file?

Ogni firma del codice viene creata in base al contenuto del file. Senza entrare troppo nei dettagli tecnici, uno strumento di firma calcolerà una versione ridotta del file da firmare, che chiameremo hash, e firmerà questa versione ridotta utilizzando il certificato digitale fornito. L’hash firmato viene quindi incorporato nel file in un luogo dedicato a ospitare le firme digitali.

Una volta avviata la distribuzione del file firmato, i sistemi operativi e le relative applicazioni rileveranno la presenza della firma. Calcoleranno automaticamente l'hash del file (senza includere l'hash firmato nel calcolo) e lo confronteranno con l'hash firmato incorporato nel file. Se corrispondono, supereranno la verifica. Se l'hash calcolato non corrisponde all'hash firmato, non supereranno la verifica. Se la verifica non viene superata significa che il contenuto del file è stato modificato dopo l'esecuzione della firma (a causa di un errore o di un intento dannoso).

L'affidabilità di questo meccanismo si basa sulla forza dell'algoritmo utilizzato per calcolare il valore hash: più lungo è il valore, più sicuro è. Uno degli standard attualmente in uso è lo SHA-256, un algoritmo che produce hash a 256 bit.

Quali sono i vantaggi della firma del codice?

La firma digitale del codice prevede diversi vantaggi:

  • Aumenti la fiducia degli utenti nel tuo software. Il codice firmato dimostra che il file non solo appartiene all'organizzazione prevista, ma garantisce anche che non è stato manomesso (per inserire malware, per esempio).
  • Migliori la tua reputazione come sviluppatore di software. Più software firmati pubblichi, migliore sarà la tua reputazione. Per esempio, Microsoft firma il codice dei software per garantire che i clienti scarichino i file corretti. I software firmati sono utili anche per gli antivirus e i rilevatori di malware. Se firmi il tuo software, saranno in grado di segnalare versioni sospette e non firmate del tuo software.
  • Eviti gli avvisi e i blocchi dai sistemi operativi. Si aspettano appunto che tutti gli editori di software firmino i loro file eseguibili. È molto probabile che all’avvio di un software non firmato i tuoi utenti visualizzino un messaggio di avviso inviato dal sistema operativo. MacOS notoriamente impedisce l’avvio di file non firmati, costringendo l'utente a bypassare la sicurezza per procedere con l'installazione.

Messaggio di avviso

Messaggio di avviso per l'installazione di software non firmato su Microsoft Windows 10.

Messaggio di blocco

Messaggio di blocco per l'installazione di software non firmato su MacOS.

Per i dispositivi IoT che utilizzano un firmware, uno dei modi migliori per garantire aggiornamenti sicuri è creare un firmware che obblighi ad accettare solo i file aggiornati firmati utilizzando i certificati di firma del codice interni (privati).

Qual è la differenza tra la firma del codice pubblico e la firma del codice privato?

I certificati di firma del codice sono emessi dalle Certificate Authority (CA), che sono motori di emissione dei certificati. La maggior parte delle organizzazioni possiede una o più CA "private" (interne) e può emettere tutti i tipi di certificati digitali, compresi i certificati di firma del codice. Tuttavia, le firme generate con questi certificati sono attendibili solo nell'ambiente interno dell'organizzazione.

Sebbene sia ideale per molti casi d'uso riguardanti applicazioni interne e IoT, l'uso di una CA privata non è indicato quando è prevista la distribuzione del codice in ambienti esterni, dove la CA non viene riconosciuta.

I certificati di firma del codice emessi da CA pubblicamente attendibili, come Entrust, genereranno firme che saranno riconosciute e considerate attendibili da tutti i principali sistemi operativi e applicazioni a livello globale. Le organizzazioni CA pubbliche (chiamate anche semplicemente CA pubbliche) come Entrust applicano standard rigidi per il rilascio dei certificati, devono essere sottoposte a controlli regolari e devono presentare domanda per essere considerate attendibili da tutti i principali sistemi operativi o provider di applicazioni come Microsoft, Apple, Google o Mozilla.

Davanti a un codice firmato, i sistemi operativi e le applicazioni verificano la CA che emette il certificato utilizzato per la firma. Se la CA emittente non è presente nella sua "lista di servizi di fiducia" (chiamata anche archivio radice), la firma non risulterà attendibile e la verifica avrà esito negativo. Da qui l'importanza di ottenere certificati di firma del codice pubblicamente attendibili quando si pubblicano software su internet.

Qual è la differenza tra la firma del codice OV e la firma del codice EV?

Sebbene le organizzazioni siano libere di includere tutti i dettagli che desiderano nei propri certificati di firma del codice privati, i certificati pubblici devono contenere solo informazioni che sono state verificate accuratamente dalla CA pubblica prima di emettere il certificato.

Una CA pubblica può emettere due categorie di certificati di firma del codice pubblicamente attendibili: OV ed EV. Queste categorie corrispondono al livello di verifica dell'organizzazione che viene eseguito dalla CA pubblica prima di emettere il certificato e anche al requisito di archiviazione per il certificato (in particolare, per la sua chiave privata).

  • OV (Convalida dell'organizzazione): Si tratta di un metodo di convalida standard di un'organizzazione eseguito dalle CA. Prevede controlli aziendali (l'azienda esiste? Ha una buona reputazione? Dove si trova?) e la verifica della persona che richiede il certificato per conto dell'organizzazione (è davvero dipendente dell'organizzazione?).
  • EV (convalida estesa): Come suggerisce il nome, si tratta di un processo di convalida esteso che richiede un'ulteriore verifica delle informazioni relative all'organizzazione e del richiedente del certificato. La CA richiederà maggiori informazioni e ulteriore documentazione e procederà effettuando una o più chiamate all'organizzazione e al richiedente prima di rilasciare il certificato. L'archiviazione sicura è obbligatoria per i certificati di firma del codice EV, il che significa che avrai bisogno di un token USB sicuro o di un modulo di sicurezza hardware (HSM) per archiviare il certificato e la sua chiave privata.

Entrust può fornire token USB o nShield HSM per tutti gli ordini di firma del codice, siano essi certificati OV o EV.

Ulteriori informazioni sugli HSM di firma del codice.

Come funziona la marcatura temporale con un certificato di firma del codice?

Nel contesto di una firma del codice, la marcatura temporale è il processo di applicazione di una marcatura temporale digitale, che include la data e l'ora esatte nella firma del codice.

La marcatura temporale è un passaggio cruciale, ma spesso dimenticato, della firma del codice. Le firme hanno infatti una data di scadenza, che corrisponde alla data di scadenza del certificato di firma del codice utilizzato per la firma. Una firma scaduta causerà una verifica non riuscita all'avvio del codice firmato, il che comporterebbe messaggi di avviso e persino l'impossibilità di eseguire il codice.

Se necessario, i certificati privati possono avere una durata molto lunga (10 anni e oltre), che spesso è sufficiente perché il codice firmato potrebbe non essere più utilizzato dopo un periodo così lungo. Tuttavia, i certificati di firma del codice pubblici sono attualmente validi per un massimo di tre anni e ci sono ottime probabilità che il tuo codice sia ancora disponibile una volta terminato questo periodo. La marcatura temporale di una firma del codice attribuirà ulteriori 9 – 10 anni di validità (a seconda del periodo di validità del certificato di marcatura temporale utilizzato). Inoltre potrai riapplicare una nuova marcatura temporale quando quella attuale sta per scadere per estendere ulteriormente la validità della tua firma del codice ed evitare avvisi/blocchi.

La marcatura temporale è utile anche se hai necessità di revocare il certificato di firma del codice se è stato compromesso. La revoca può essere retrodatata alla data e all'ora in cui ritieni che il certificato sia stato compromesso. Se tutte le tue firme sono state marcate temporalmente, rimarranno valide solo le firme generate prima della data di revoca. Qualsiasi firma del codice priva di marcatura temporale risulterà non valida quando il certificato è scaduto o revocato.

È possibile eseguire la marcatura temporale utilizzando certificati di marcatura temporale privati provenienti da una CA interna. Tuttavia, per il codice che deve essere condiviso esternamente, è necessario utilizzare un servizio di marcatura temporale pubblico, che sarà riconosciuto e considerato attendibile da tutti i sistemi operativi e le applicazioni principali. La maggior parte se non tutte le CA pubbliche, inclusa Entrust, offrono un servizio di marcatura temporale pubblico, disponibile tramite un URL dedicato.