FAQ Hero
Fiducia nella firma del codice

Cos'è la firma del codice?

Cos'è la firma del codice?

La firma del codice è il processo di applicazione di una firma digitale a un software binario o a un file. La firma digitale convalida l'identità dell'autore o dell'editore del software, verificando che il file non sia stato alterato o manomesso dopo la firma. La firma del codice indica al destinatario del software che il codice è attendibile e ha quindi un ruolo cruciale nel contrastare i tentativi di compromissione di sistemi o dati da parte di aggressori.

I casi d'uso della firma del codice includono software per uso interno o esterno, patch o correzioni, test, sviluppo di prodotti per dispositivi IoT, ambienti informatici e applicazioni mobili. Oltre al codice e al software, la firma del codice si applica anche ad applicazioni, firmware, file, messaggi, XML, script, container e immagini.

Come funziona la firma del codice?

Come per altre tecnologie PKI, la firma del codice si basa su una coppia di chiavi pubbliche/private, un'autorità di certificazione e un certificato digitale. Quando un editore firma un software, crea un pacchetto limitato che include il suo software, un certificato di firma del codice e una firma digitale. Il certificato di firma del codice contiene l'identità e la chiave pubblica dell'editore, oltre alla firma della CA che conferma che quest'ultima ne ha verificato l'identità. La firma digitale è l'hash firmato del software che utilizza la chiave privata dell'editore. Dopo il delivery del software, l'agente dell'utente verifica la validità e l'integrità del certificato (stabilendo se il software è stato modificato dopo la firma). Per farlo, utilizza la chiave pubblica del certificato e decodifica l'hash della firma digitale. Quindi confronta l'hash della firma digitale con l'hash calcolato di recente dal software. Se gli hash coincidono, il cliente o l'utente ha la certezza che il software non è stato alterato. La gestione delle chiavi private è un elemento di sicurezza fondamentale per la firma del codice. Se la chiave viene rubata o gestita in modo errato, i criminali informatici possono utilizzarla per firmare codice malevolo e distribuirlo ai sistemi di sviluppatori o clienti sotto forma di aggiornamento.

Code signing table graph 1 - IT

Perché è necessario firmare il codice?

La firma del codice è un requisito delle principali piattaforme software come Java e Microsoft per evitare la propagazione di malware. È anche una buona pratica di sicurezza, perché impedisce a clienti o utenti di scaricare codice manomesso o proveniente da fonti sconosciute. Distingue il codice o il software della tua organizzazione da un codice falso che sembra provenire dalla tua organizzazione. Inoltre, se il software non è firmato quando viene reso disponibile al pubblico, gli utenti potrebbero visualizzare avvisi di sicurezza. La firma del codice semplifica l'attribuzione di responsabilità e controllo quando il codice viene creato e sviluppato per uso interno.

Quali tipi di software si possono firmare?

È possibile firmare qualsiasi tipo di file o file binario, tra cui:

  • Applicazioni software disponibili per il download da siti web
  • Applicazioni IT interne
  • Applicazioni mobili
  • File XML
  • Script
  • Immagini software
  • Container
  • Driver e utility
  • Firmware

Quali sono gli step per la firma del codice?

Per prima cosa, l'editore di un software genera una coppia di chiavi pubbliche/private. Ottiene quindi un certificato di firma del codice inviando a un'autorità di certificazione (CA) una Certificate Signing Request (CSR) insieme alla sua chiave pubblica. La CA verifica l'identità dell'editore e autentica la richiesta di certificato. In caso di esito positivo, la CA rilascia il certificato di firma del codice. Il certificato include l'identità dell'editore, la chiave pubblica e la firma della CA. La firma della CA è importante in quanto testimonianza affidabile di terze parti sull'identità del titolare del certificato. Il certificato di firma del codice conferma non solo l'identità dell'editore, ma anche del software. Quando l'editore firma un software, crea un pacchetto vincolato che include il software, il certificato di firma del codice e la firma digitale.

La firma digitale richiede inoltre i seguenti passaggi: 

  1. Generare un hash o una rappresentazione crittografica univoca del software con un algoritmo di hashing.
  2. Firmare l'hash con la chiave privata dell'editore e un algoritmo di firma.

La firma del codice si può eseguire manualmente o automatizzare all'interno del ciclo di vita di sviluppo del software, per es. in un processo di Continuous Integration/Continuous Delivery (CI/CD).