Ottenere il driver USB MSP430 firmato da Microsoft


11

Sto sviluppando un prodotto che utilizza un microcontrollore MSP430 con un modulo USB incorporato. Ho ottenuto un PID da Texas Instruments e utilizzato i loro strumenti per generare i descrittori, nonché un file .inf per installare il software del driver. Il problema ovvio è che a causa della natura personalizzata di questi file, viene visualizzato un popup (su Windows 7) quando si collega il cavo USB che avverte l'utente che il driver non è firmato. Credo su Windows 8 e Windows 10 semplicemente lo blocca e non lo indica affatto all'utente.

Poiché si tratta di un prodotto completo che la mia azienda sta pianificando di rilasciare, dobbiamo ottenere un certificato del driver (credo nella forma di un file .cat?) Che possiamo fornire al cliente in modo che possano installare il dispositivo software del driver senza problemi.

Ho esaminato un po 'della documentazione di Microsoft (in particolare questo documento ) cercando di capire cosa è necessario per ottenere la firma di un driver, ma sfortunatamente al momento questo è un problema.

Questo è quello che penso di aver capito finora:

  • Devo inviare il mio driver (file .inf?) A un'autorità di certificazione (CA) autorizzata da Microsoft. Ce ne sono alcuni là fuori, quindi avrei bisogno di trovarne uno che segni i driver.
  • Dopo aver selezionato una CA, in genere dovrò pagare una tariffa annuale (più comunemente per 1, 2 o 3 anni) per il loro servizio. Tutti i driver che genererò durante questo periodo verranno firmati in modo permanente, anche dopo la scadenza del servizio. Se voglio cambiare il driver o crearne uno nuovo dopo che il servizio è scaduto, dovrò acquistare il servizio per altri 1, 2 o 3 anni.
  • Dopo aver pagato la tariffa, la CA genererà un file .cat che è un certificato che assicura che il driver che ho fornito non verrà modificato. In caso contrario, non corrisponderà più al file .cat e durante l'installazione verrà visualizzato un errore

È corretto? A rischio di sembrare come se stessi cercando consigli per specifiche CA (non lo sono, intendiamoci), dove posso trovare un elenco di CA che sono in grado di fare questa certificazione per me? Ancora meglio sarebbero i loro siti Web e / o i prezzi per periodi di servizio diversi. Qualcuno qui ha avuto esperienza diretta nell'ottenere un driver per un prodotto basato su microcontrollore USB firmato da una CA, che sarebbe in grado di aiutarmi a capire e superare il processo? Ho già pubblicato un post nei forum MSDN ma sembra piuttosto morto lì - Sono passati due giorni e il mio thread ha solo una manciata di visualizzazioni.


Il tuo driver è una funzionalità completa, che deve eseguire il codice in modalità kernel o è solo un file inf? Se è solo un file inf, quali driver integrati (file .sys) vengono caricati?
Jack B,

È qui che fallisco, non so molto sul funzionamento interno dei PC e su come funzionano i driver. Il mio dispositivo è progettato attorno a un MSP430 con un modulo USB incorporato. Questo dispositivo ha semplicemente un'interfaccia CDC tramite la connessione USB, quindi tutto ciò che fa è aprire una porta COM virtuale
DerStrom8

Poiché il design si trova ora, in realtà è su una scheda di sviluppo e quando provo a installare il dispositivo utilizzando il file .inf, ottengo l'errore standard da Windows 7: davidegrayson.com/signing/img/win7_unverified_publisher.png . Nel frattempo per i test ho appena usato i file .inf e .cat forniti con uno degli esempi CDC dal pacchetto MSP430Ware, ma quando rilascerò questo prodotto non sarò più in grado di farlo. Se non sbaglio, questo non esegue il codice in modalità
kernal

1
In breve: puoi firmarlo con un normale certificato di firma del codice, al prezzo di circa £ 80 / anno che ho guardato per ultimo. Non c'è bisogno di tutto il materiale Microsoft per la firma incrociata. Ma su Windows 8.1 e precedenti non è super affidabile (non potremmo superare EN61326 con esso), quindi potresti voler avere anche un'alternativa. Se nessuno mi picchia, scriverò una risposta dopo cena.
Jack B,

1
@AdamLawrence Sono tornato dopo poche ore e non ho visto che dovevo aggiungere qualcosa alla tua risposta. Così bene da parte mia.
Jack B

Risposte:


16

In realtà non è così male. Ho fatto un paio di volte sul posto di lavoro, la scrittura e la firma di un INF / .cat per un Microchip PIC24FJ64GB002 a base USB CDC-ACM-to-I 2 interfaccia C.

  • Stabilire una relazione con un'autorità di certificazione. Dovrai fornire loro alcune informazioni di base che verranno convalidate. Se scegli Extended Validation (EV) ti chiederanno molto di più, ma non dovresti andare così lontano. Thawte, Digicert e Comodo sono alcuni esempi di CA.

  • Acquista un certificato di firma del codice Authenticode dalla CA. Questo è ciò di cui hai bisogno per firmare il file .CAT associato al tuo file .INF. Non è necessario un certificato in modalità kernel per questo livello di firma.

  • Installa il certificato (va da sé)

  • Scarica il framework SDK di Windows e il Kit driver di Windows per ottenere gli strumenti Microsoft necessari (generazione e firma del catalogo).

  • Pacchetto e firma i driver:

    • Utilizzare inf2cat per generare il file di catalogo (.CAT) per il file .INF
    • Utilizzare signtool per firmare il file di catalogo

Da questo punto potresti creare una sorta di programma di installazione del driver o utilizzare dpinst dall'SDK per eseguire l'automazione dell'installazione di base.

EDIT: note da vari commenti qui sotto:

  1. La creazione di un file .INF per caricare USBSER.SYS non sta creando un driver in modalità kernel - stai utilizzando USBSER.SYS (integrato, firmato e già attendibile), non stai creando qualcosa di nuovo - e come tale non richiede una firma EV certificato e certificazione WHQL. È sufficiente un certificato Authenticode di base.
  2. A partire da Windows 10, non è necessario alcun .INF firmato per i dispositivi USBSER.SYS, poiché Windows rileverà automaticamente i dispositivi USB CDC-ACM (Class_02). Hanno anche riscritto il driver da zero e ora funziona molto meglio (gestisce persino la rimozione e il reinserimento inaspettati del dispositivo senza bloccare la porta COM virtuale, il che è un grande vantaggio!). Detto questo, è ancora possibile utilizzare l'approccio del driver firmato se proprio lo si desidera: il driver firmato continuerà a "funzionare". Esistono ancora molte macchine Win 8.1 / 8/7 e precedenti, quindi avere un driver firmato è ancora un po 'importante per i dispositivi USB CDC-ACM.

Ulteriore espansione sulle tue domande:

  • Non inviare nulla per la firma alla CA: si acquista il certificato di firma del codice, lo si installa su una macchina e si esegue la convalida .INF e la firma.
  • Non è necessario pagare una quota annuale di per sé , tuttavia, il certificato acquistato avrà un periodo di validità di 1, 2 o 3 anni. Alla scadenza del certificato dovrai acquistarne uno nuovo per poter continuare a firmare: tutto ciò che è stato firmato in precedenza rimarrà valido ma perderai la possibilità di firmare nuovi elementi.
  • .CAT è un hash per .INF: eventuali modifiche a .INF verranno rilevate e il certificato non sarà più valido, il che significa che .INF si comporterebbe come non firmato.

4
Maggiori dettagli: Come firmare i driver e gli eseguibili di Windows di Adafruit .
CL.

4
Questa è una risposta eccellente, davvero molto utile. Sicuramente lo fai sembrare molto più facile di quanto mi aspettassi. Lo esaminerò. Nel frattempo accetterò questa risposta a causa dei passaggi chiari e semplici forniti. Saluti!
DerStrom8

2
@ poizan42 Questo non è un driver in modalità kernal. Questo è un semplice dispositivo CDC USB che apre solo una porta COM virtuale. Non viene eseguita l'esecuzione di codice in modalità kernal.
DerStrom8,

1
Volevo solo dare un seguito. Questi passaggi hanno funzionato perfettamente con un solo avvertimento: inf2cat.exe non viene fornito con Windows SDK, è necessario installare anche Windows Driver Kit (WDK): docs.microsoft.com/en-us/windows-hardware/drivers/ ... . Grazie mille per il vostro aiuto, ora sono in grado di installare il software del mio driver senza alcun avviso - mostra la mia azienda come editore come previsto
DerStrom8

2
Risposta modificata. Grazie per aver sottolineato l'ovvio (sono passati alcuni anni da quando ho installato le toolchain)
Adam Lawrence,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.