Software per strumento di firma STM32 di ST Microelectronics

Introduzione

Il software dello strumento di firma STM32 (denominato STM32-SignTool in questo documento) è integrato in STM32CubeProgrammer (STM32CubeProg). STM32-SignTool è uno strumento chiave che garantisce una piattaforma sicura e assicura la firma di immagini binarie utilizzando chiavi ECC generate dal software STM32-KeyGen (fare riferimento al manuale utente STM32 key generator software description (UM2542) per maggiori dettagli). Le immagini binarie firmate vengono utilizzate durante la sequenza di avvio sicuro STM32 che supporta una catena di avvio attendibile. Questa azione garantisce un controllo di autenticazione e integrità delle immagini caricate. STM32-SignTool genera un'immagine binaria file, una chiave pubblica filee una chiave privata fileL'immagine binaria file contiene i dati binari da programmare per il dispositivo. La chiave pubblica file contiene la chiave pubblica ECC in formato PEM, generata con STM32-KeyGen. La chiave privata file contiene la chiave privata ECC criptata in formato PEM, generata con STM32-KeyGen. Un binario firmato file può anche essere generato da un documento già firmato file con il lotto file modalità. In questo caso, i seguenti parametri non sono obbligatori: il punto di ingresso dell'immagine, l'indirizzo di caricamento dell'immagine e i parametri della versione dell'immagine. Questo documento si applica ai prodotti elencati nella tabella seguente.

Tabella 1. Prodotti applicabili

Tipo di prodotto Numero di parte o serie del prodotto
Microcontrollori Serie STM32N6
Microprocessore Serie STM32MP1 e STM32MP2

Nelle sezioni seguenti, STM32 si riferisce ai prodotti elencati nella tabella soprastante, salvo diversa indicazione.

Installare STM32-SignTool

Questo strumento è installato con il pacchetto STM32CubeProgrammer (STM32CubeProg). Per maggiori informazioni sulla procedura di configurazione, fare riferimento alla sezione 1.2 del manuale utente Descrizione del software STM32CubeProgrammer (UM2237). Questo software supporta i prodotti STM32 basati sul processore Arm® Cortex®.

Nota: Arm è un marchio registrato di Arm Limited (o delle sue sussidiarie) negli Stati Uniti e/o altrove.

Interfaccia della riga di comando STM32-SignTool

Le sezioni seguenti descrivono come utilizzare STM32-SignTool dalla riga di comando.

Comandi

Di seguito sono elencati i comandi disponibili:

  • –immagine binaria(-bin), –input(-in)
    • Descrizione: immagine binaria file percorso (estensione .bin)
    • Sintassi: 1 -bin /home/Utente/binaryFile.bidone
    • Sintassi: 2 -in /home/Utente/binaryFile.bidone
  • –versione-immagine (-iv)
    • Descrizione: inserisce la versione immagine dell'immagine firmata file
    • Sintassi: -iv
  • –chiave privata (-prvk)
    • Descrizione: chiave privata file percorso (estensione .pem)
    • Sintassi: -prvkfile_percorso>
    • Example: -prvk ../privateKey.pem
  • –chiave pubblica -pubk
    • Descrizione: chiave pubblica file percorsi
    • Sintassi: -pubkFile_Percorso{1..8}>
      • Per l'intestazione v1: utilizzare un solo percorso chiave per i prodotti STM32MP15xx
      • Per header v2 e versioni successive: utilizzare otto percorsi chiave per gli altri
  • –password (-pwd)
    • Descrizione: password della chiave privata (questa password deve contenere almeno quattro caratteri)
    • Example: -pwd azerty
    • • –indirizzo di caricamento (-la)
    • Descrizione: indirizzo di caricamento dell'immagine
    • Exampil: -la
  • –punto di ingresso (-ep)
    • Descrizione: punto di ingresso dell'immagine
    • Example: -ep
  • –flag-opzione (-di)
    • Descrizione: flag delle opzioni immagine (valore predefinito = 0)
    • Example: -di
  • –algoritmo (-a)
    • Descrizione: specifica uno tra prime256v1 (valore 1, predefinito) o brainpoolP256t1 (valore 2)
    • Example: -a <2>
  • –uscita (-o)
    • Descrizione: uscita file percorso. Questo parametro è facoltativo. Se non specificato, l'output file viene generato dalla stessa sorgente file percorso (ad esempioample, l'immagine binaria file è C:\BinarioFile.bin). Il binario firmato file è C:\BinarioFile_Signed.bin.
    • Sintassi: -oFile_Percorso>
  • –tipo (-t)
    • Descrizione: tipo binario. I valori possibili sono ssbl, fsbl, teeh, teed, teex e copro
    • Sintassi: -t
  • –silenzioso (-s)
    • Descrizione: nessun messaggio visualizzato per la sostituzione di un output esistente file
  • –aiuto (-h e -?)
    • Descrizione: mostra la guida
  • –versione (-v)
    • Descrizione: visualizza la versione dello strumento
  • –enc-dc (-encdc)
    • Descrizione: costante di derivazione della crittografia per la crittografia FSBL [intestazione v2]
    • Sintassi: -encdc
  • –enc-chiave (-enck)
    • Descrizione: Segreto OEM file per la crittografia FSBL [intestazione v2]
    • Sintassi: -enck
  • –intestazione dump (–dump)
    • Descrizione: analizza e scarica l'intestazione dell'immagine
    • Sintassi: -dumpFile_Percorso>
  • –versione-intestazione (-hv)
    • Descrizione: versione dell'intestazione di firma, valori possibili: 1, 2, 2.1, 2.2 e 2.3
    • Example per STM32MP15xx: -hv 2
    • Example per STM32MP25xx: -hv 2.2
    • Example per STM32N6xxx: -hv 2.3
  • –nessuna-chiave (-nk)
    • Descrizione: aggiunta di un'intestazione vuota senza opzioni chiave
    • Avviso: è necessario disabilitare l'opzione di autenticazione con il comando flag delle opzioni

Examples per STM32-SignTool

Il seguente esempioampmostrano come utilizzare STM32-SignTool:

Exampil 1

-bin /home/Utente/BinarioFile.bin –pubk /home/user/publicKey.pem –prvk /home/user/privateKey.pem –iv 5 –pwd azerty –la 0x20000000 –ep 0x08000000 L'algoritmo predefinito (prime256v1) è selezionato e il valore del flag dell'opzione è 0 (valore predefinito). Il binario di output firmato file (BinarioFile_Signed.bin) viene creato nella cartella /home/user/

Exampil 2

-bin /home/Utente/Cartella1/BinarioFile.bin –pubk /home/utente/publicKey.pem –prvk /home/utente/privateKey.pem –iv 5 –pwd azerty –s –la 0x20000000 –ep 0x08000000 –a 2 –o /home/utente/Cartella2/Cartella3/signedFile.bin In questo caso viene selezionato l'algoritmo BrainpoolP256t1. Anche se Folder2 e Folder3 non esistono, vengono create. Con il comando –s, anche se un file esiste con lo stesso nome specificato, viene automaticamente sostituito senza alcun messaggio.

Exampil 3

Firmare un binario file utilizzando la versione 2 dell'intestazione che include otto chiavi pubbliche per il flusso di autenticazione.

./STM32_SigningTool_CLI.exe -bin /home/utente/input.bin -pubk publicKey00.pem publicKey01.pem publicKey02.pem publicKey03.pem publicKey04.pem publicKey05.pem publicKey06.pem publicKey07.pem -prvk privateKey00.pem -pwd azerty -t fsbl -iv 0x00000000 -la 0x20000000 -ep 0x08000000 -of 0x80000001 -o /home/utente/output.stm32

Exampil 4

Firmare un binario file utilizzando la versione 2 dell'intestazione che include otto chiavi pubbliche per l'autenticazione più il flusso di crittografia.

./STM32_SigningTool_CLI.exe -bin /home/utente/input.bin -pubk publicKey00.pem publicKey01.pem publicKey02.pem publicKey03.pem publicKey04.pem publicKey05.pem publicKey06.pem publicKey07.pem -prvk privateKey00.pem -iv 0x00000000 -pwd azerty -la 0x20000000 -ep 0x08000000 -t fsbl -of 0x00000003 -encdc 0x25205f0e -enck /home/utente/OEM_SECRET.bin -o /home/utente/output.stm32

Exampil 5

Verificare l'immagine risultante analizzando l'output file e controlla ogni campo di intestazione. ./STM32_SigningTool_CLI.exe -dump /home/user/output.stm32

Exampil 6

Aggiungere un'intestazione senza firmare e senza distribuire chiavi. STM32_SigningTool_CLI.exe -in input.bin -nk -of 0x0 -iv 1 -hv 2.2 -o output.stm32

Modalità autonoma

Quando si esegue STM32-SignTool in modalità standalone, è necessario immettere prima un percorso assoluto. Viene quindi richiesta una password due volte per conferma, come mostrato nella figura sottostante.

Figura 1. STM32-SignTool in modalità autonoma

I prossimi passi sono i seguenti:

  • Seleziona uno dei due algoritmi.
  • Inserisci la versione dell'immagine, il punto di ingresso dell'immagine e l'indirizzo di caricamento dell'immagine.
  • Immettere il valore del flag dell'opzione.

Un'altra uscita file è possibile specificare il percorso, se necessario, oppure premere Invio per continuare con quello esistente.

Soluzione PKCS#11
Le immagini binarie firmate vengono utilizzate durante la sequenza di avvio sicuro STM32 che supporta una catena di avvio attendibile.
Questa azione garantisce un controllo di autenticazione e integrità delle immagini caricate.
Il comando di firma classico richiede che tutte le chiavi pubbliche e private siano fornite come input files. Questi sono
direttamente accessibile da qualsiasi persona autorizzata a eseguire il servizio di firma. In definitiva, questo può essere considerato
essere una falla di sicurezza. Esistono diverse soluzioni per proteggere le chiavi da qualsiasi tentativo di rubare i dati chiave. In questo
contesto, è stata adottata la soluzione PKCS#11.
L'API PKCS#11 può essere utilizzata per gestire e archiviare chiavi crittografiche. Questa interfaccia specifica come
comunicare con dispositivi crittografici quali HSM (moduli di sicurezza hardware) e smartcard.
Lo scopo di questi dispositivi è quello di generare chiavi crittografiche e firmare le informazioni senza rivelare la chiave privata
materiale verso il mondo esterno.
Le applicazioni software possono richiamare l'API per utilizzare questi oggetti per:
• Generare chiavi simmetriche/asimmetriche
• Crittografia e decifratura
• Calcolo e verifica della firma digitale
PKCS #11 presenta alle applicazioni un modello logico comune view del dispositivo che viene chiamato token crittografico e
assegna un ID slot a ciascun token. Un'applicazione identifica il token a cui desidera accedere specificando il
ID slot appropriato.
STM32SigningTool viene utilizzato per gestire gli oggetti chiave memorizzati su smartcard e dispositivi di sicurezza PKCS#11 simili
token in cui le chiavi private sensibili non lasciano mai il dispositivo.
STM32SigningTool utilizza l'interfaccia PKCS#11 per manipolare e firmare i binari di input basati su ECDSA
chiavi pubbliche/private. Queste chiavi sono memorizzate in token di sicurezza (hardware o software).

Comandi PKCS#11 aggiuntivi

  • –modulo (-m)
    • Descrizione: specificare un percorso del modulo/libreria PKCS#11 da caricare (dll, ecc.)
    • Sintassi:-m
    • • –indice-chiave (-ki)
  • –indice-chiave (-ki)
    • Descrizione: elenco degli indici delle chiavi utilizzate in formato esadecimale
      • Utilizzare un indice per l'intestazione v1 e otto indici per l'intestazione v2 (separati da spazio)
    • Sintassi: -ki
  • –indice-slot (-si)
    • Descrizione: specifica l'indice dello slot da utilizzare (predefinito 0x0)
    • Sintassi:-si
  • –identificatore–slot (-sid)
    • Descrizione: specificare l'identificativo dello slot da utilizzare (facoltativo, in formato decimale o esadecimale)
    • Sintassi:-sid
      • Se l'opzione –slot-identifier viene utilizzata contemporaneamente a –slot-index, lo strumento verifica se questa configurazione corrisponde allo stesso slot. L'identificatore riflette l'indice menzionato; in caso contrario, si verifica un errore.
      • È possibile usare –slot-identifier senza menzionare –slot-index. Lo strumento cerca l'indice slot in modo sistematico.
  • –indice-chiave-attivo (-aki)
    • Descrizione: specifica l'indice chiave attivo effettivo (predefinito 0)
    • Sintassi: -aki < hexValue >

PKH/PKTH file generazione

Dopo l'elaborazione dell'operazione di firma, lo strumento genera sistematicamente il PKH fileda utilizzare dopo il fusibile OTP.

  • PKH file denominato pkcsHashPublicKey0x{active_key_index}.bin per l'intestazione v1
  • PKTH file denominato pkcsPublicKeysHashHashes.bin per l'intestazione v2

Examples

Lo strumento può firmare l'input files sia per l'intestazione v1 che per l'intestazione v2, con una differenza minima nella riga di comando.

  • Intestazione v1
    -bin input.bin -iv -passeggero -la -ep -T -Di –
    -indice-chiave -aki 0 ​​–modulo –indice-slot -o uscita.stm32
  • Intestazione v2
    -bin input.bin -iv -passeggero -la -ep -T -Di – -indice-chiave -aki -modulo –indice-slot -o uscita.stm0

Un errore sulla riga di comando o l'incapacità dello strumento di identificare gli oggetti chiave corrispondenti causa la visualizzazione di un messaggio di errore. Ciò indica la fonte del problema. SigningTool è in grado di utilizzare solo HSM preconfigurati e non è progettato per gestire o creare nuovi oggetti di sicurezza. Pertanto, è necessario installare software libero per impostare un ambiente adatto. Le chiavi possono quindi essere generate e le informazioni sugli oggetti ottenute.

Opzione identificativo slot:

  • -bin input.bin –tipo fsbl -hv 1 –indice-chiave 0x40 -aki 0 ​​–modulo softhsm2.dll –password prg-dev -ep 0x2ffe4000 -s -si 0 -sid 0x51a53ad8 -la 0x2ffc2500 -iv 0 -di 0x80000000 -o output.stm32

Errore esamples:

  • Indice slot non valido

Figura 2. HSM TOKEN_NOT_RECOGNIZED
Oggetto chiave sconosciuto menzionato nel comando –key-index

Figura 3. HSM OBJECT_HANDLE_INVALID

Lo strumento tratta gli oggetti in sequenza. Se non riesce a identificare gli oggetti chiave corrispondenti al primo tentativo, l'operazione di firma interrompe il processo. Viene quindi visualizzato un messaggio di errore per indicare la fonte del problema.

Cronologia delle revisioni

Tabella 2. Cronologia delle revisioni del documento

Data Versione Cambiamenti
14-feb-2019 1 Versione iniziale.
 

 

26-nov-2021

 

 

2

Aggiornato:

• Sezione 2.1: Comandi

• Sezione 2.2: Es.amples per STM32-SignTool

• Aggiunta Sezione 2.4: soluzione PKCS#11

27-giu-2022 3 Sezione 2.1 aggiornata: Comandi
 

 

 

26-giu-2024

 

 

 

4

Sostituito nell'intero documento:

• Serie STM32MP1 della serie STM32MPx

• STM32MP1-SignTool di STM32MP-SignTool

• STM32MP1-KeyGen di STM32MP-KeyGen

Aggiornato –public-key -pubk e aggiunti –header-version (-hv) e –no-keys (- nk) nella Sezione 2.1: Comandi.

Aggiunto “Example 6” nella Sezione 2.2: Esamples per STM32-SignTool.

 

 

 

14-nov-2024

 

 

 

5

Aggiunto:

• Serie STM32N6 per prodotti applicabili Sostituito nell'intero documento:

• STM32MP di STM32

Aggiornato:

• Sezione 2.1: Comandi

 

06-mar-2025

 

6

Aggiornato:

• Sezione 2.4.1: Comandi PKCS#11 aggiuntivi

• Sezione 2.4.3: Es.amples

AVVISO IMPORTANTE – LEGGERE ATTENTAMENTE

STMicroelectronics NV e le sue consociate ("ST") si riservano il diritto di apportare modifiche, correzioni, miglioramenti, modifiche e miglioramenti ai prodotti ST e/o al presente documento in qualsiasi momento e senza preavviso. Gli acquirenti devono procurarsi le ultime informazioni rilevanti sui prodotti ST prima di effettuare ordini. I prodotti ST sono venduti in base ai termini e alle condizioni di vendita ST in vigore al momento della conferma dell'ordine. Gli acquirenti sono gli unici responsabili della scelta, della selezione e dell'uso dei prodotti ST e ST non si assume alcuna responsabilità per l'assistenza applicativa o la progettazione dei prodotti degli acquirenti. Nessuna licenza, espressa o implicita, a qualsiasi diritto di proprietà intellettuale è concessa da ST nel presente documento. La rivendita di prodotti ST con disposizioni diverse dalle informazioni qui stabilite invaliderà qualsiasi garanzia concessa da ST per tale prodotto. ST e il logo ST sono marchi di ST. Per ulteriori informazioni sui marchi di ST, fare riferimento a www.st.com/trademarks. Tutti gli altri nomi di prodotti o servizi sono di proprietà dei rispettivi proprietari. Le informazioni contenute nel presente documento sostituiscono e sostituiscono le informazioni fornite in precedenza in qualsiasi versione precedente di questo documento.

© 2025 STMicroelectronics – Tutti i diritti riservati

Domande frequenti

  • D: Cosa devo fare se riscontro errori durante l'utilizzo di STM32-SignTool?
    • R: Controllare la sintassi del comando, assicurarsi che tutti i parametri richiesti siano stati forniti correttamente e fare riferimento al manuale utente per suggerimenti sulla risoluzione dei problemi.
  • D: Posso utilizzare STM32-SignTool su sistemi operativi diversi?
    • A: STM32-SignTool è progettato per funzionare su sistemi operativi specifici. Fare riferimento alle specifiche del software per i dettagli sulla compatibilità.

Documenti / Risorse

Software per strumento di firma STM32 di ST Microelectronics [pdf] Manuale d'uso
Serie STM32N6, STM32MP1, serie STM32MP2, software per strumenti di firma STM32, STM32, software per strumenti di firma, software per strumenti, software

Riferimenti

Lascia un commento

Il tuo indirizzo email non verrà pubblicato. I campi obbligatori sono contrassegnati *