Obtener el controlador USB MSP430 firmado por Microsoft

11

Estoy desarrollando un producto que utiliza un microcontrolador MSP430 con un módulo USB incorporado. Obtuve un PID de Texas Instruments y usé sus herramientas para generar los descriptores, así como un archivo .inf para instalar el software del controlador. El problema obvio es que debido a la naturaleza personalizada de estos archivos, se presenta una ventana emergente (en Windows 7) al enchufar el cable USB que advierte al usuario que el controlador no está firmado. Creo que en Windows 8 y Windows 10 simplemente lo bloquea y no se lo indica al usuario en absoluto.

Como este es un producto con todas las funciones que mi compañía planea lanzar, necesitamos obtener un certificado de controlador (¿creo en forma de archivo .cat?) Que podemos proporcionar al cliente para que pueda instalar el dispositivo software controlador sin problema.

He revisado bastante de la documentación de Microsoft (sobre todo este documento ) tratando de comprender lo que se requiere para obtener la firma de un controlador, pero desafortunadamente esto está sobre mi cabeza en este momento.

Esto es lo que creo que entiendo hasta ahora:

  • Necesito enviar mi controlador (archivo .inf?) A una autoridad de certificación (CA) autorizada por Microsoft. Hay varios de estos por ahí, por lo que necesitaría encontrar uno que firme los controladores.
  • Después de seleccionar una CA, generalmente tendré que pagar una tarifa anual (más comúnmente por 1, 2 o 3 años) por su servicio. Todos los controladores que genere durante este tiempo se firmarán de forma permanente, incluso después de que expire el servicio. Si quiero cambiar el controlador o crear uno nuevo después de que el servicio haya expirado, necesitaré comprar el servicio por otros 1, 2 o 3 años.
  • Después de pagar la tarifa, la CA generará un archivo .cat que es un certificado que asegura que el controlador que les di no será cambiado. Si lo hace, ya no coincidirá con el archivo .cat y aparecerá un error durante la instalación

¿Es esto correcto? A riesgo de sonar como si estuviera buscando recomendaciones para AC específicas (no lo estoy, claro), ¿dónde puedo encontrar una lista de AC que puedan hacer esta certificación por mí? Aún mejor serían sus sitios web y / o precios para diferentes duraciones de servicio. ¿Alguien aquí ha tenido experiencia directa en obtener un controlador para un producto basado en un microcontrolador USB firmado por una CA, que podría ayudarme a comprender y superar el proceso? Ya he publicado en los foros de MSDN, pero parece bastante muerto allí: han pasado dos días y mi hilo solo tiene un puñado de puntos de vista.

DerStrom8
fuente
¿Es su controlador algo con todas las funciones, que necesita ejecutar código en modo kernel, o es solo un archivo inf? Si es solo un archivo inf, ¿qué controladores integrados (archivos .sys) carga?
Jack B
Aquí es donde fallo, no sé mucho sobre el funcionamiento interno de las PC y cómo funcionan los controladores. Mi dispositivo está diseñado alrededor de un MSP430 con un módulo USB incorporado. Este dispositivo simplemente tiene una interfaz CDC a través de la conexión USB, por lo que todo lo que hace es abrir un puerto COM virtual
DerStrom8
Como el diseño se encuentra ahora, en realidad está en una placa de desarrollo y cuando intento instalar el dispositivo usando el archivo .inf, obtengo el error estándar de Windows 7: davidegrayson.com/signing/img/win7_unverified_publisher.png . Mientras tanto, para las pruebas, he estado usando los archivos .inf y .cat provistos con uno de los ejemplos de CDC del paquete MSP430Ware, pero cuando lance este producto, ya no podré hacerlo. Si no me equivoco, esto no ejecuta código en modo
kernal
1
En resumen: puede firmar eso con un certificado de firma de código normal, con un precio de aproximadamente £ 80 / año la última vez que busqué. No hay necesidad de todas las cosas de firma cruzada de Microsoft. Pero en Windows 8.1 y versiones anteriores no es súper confiable (no pudimos pasar por EN61326 con él), por lo que es posible que también desee tener una alternativa alineada. Si nadie me gana, escribiré una respuesta después de la cena.
Jack B
1
@ AdamLawrence Regresé unas horas más tarde y no vi que necesitaba agregar nada a su respuesta. Muy bien por mi parte.
Jack B

Respuestas:

16

No es tan malo, en realidad. Lo hice varias veces en el trabajo, escribiendo y firmando un .INF / .CAT para una interfaz USB CDC-ACM-to-I 2 C basada en Microchip PIC24FJ64GB002 .

  • Establecer una relación con una autoridad de certificación. Deberá proporcionarles información básica que validarán. Si opta por la Validación Extendida (EV), pedirán mucho más, pero no debería necesitar ir tan lejos. Thawte, Digicert y Comodo son algunos ejemplos de AC.

  • Compre un certificado de firma de código Authenticode de la CA. Esto es lo que necesita para firmar el archivo .CAT asociado con su archivo .INF. No necesita un certificado en modo kernel para este nivel de firma.

  • Instale el certificado (no hace falta decirlo)

  • Descargue el marco del SDK de Windows y el Kit de controladores de Windows para obtener las herramientas de Microsoft necesarias (generación y firma de catálogos).

  • Empaquete y firme los controladores:

    • Use inf2cat para generar el archivo de catálogo (.CAT) para el archivo .INF
    • Use signtool para firmar el archivo de catálogo

Desde este punto, podría hacer algún tipo de instalador de controladores, o usar dpinst del SDK para realizar la automatización básica de la instalación.

EDITAR: Notas de varios comentarios a continuación:

  1. Crear un archivo .INF para cargar USBSER.SYS no es crear un controlador en modo kernel: está utilizando USBSER.SYS (integrado, firmado y de confianza ya), no está creando algo nuevo, y como tal no requiere una firma EV certificado y certificación WHQL. Un certificado básico de Authenticode es todo lo que se necesita.
  2. A partir de Windows 10, no necesita un .INF firmado para los dispositivos USBSER.SYS, ya que Windows recogerá automáticamente los dispositivos USB CDC-ACM (Clase_02). También han reescrito el controlador desde cero y ahora funciona mucho mejor (incluso maneja extracciones y reinserciones inesperadas de dispositivos sin bloquear el puerto COM virtual, ¡lo cual es una gran ventaja!). Dicho esto, aún puede usar el enfoque del controlador firmado si realmente lo desea: el controlador firmado seguirá 'funcionando'. Todavía hay muchas máquinas Win 8.1 / 8/7 y más antiguas, por lo que tener un controlador firmado sigue siendo algo importante para los dispositivos USB CDC-ACM.

Ampliación adicional de sus preguntas:

  • No envía nada para firmar a la CA: compra el certificado de firma de código, lo instala en una máquina y realiza la validación .INF y firma usted mismo.
  • No necesita pagar una tarifa anual per se ; sin embargo, el certificado que compre tendrá un período de validez de 1, 2 o 3 años. Cuando caduque el certificado, deberá comprar uno nuevo para poder seguir firmando; todo lo que haya firmado previamente seguirá siendo válido, pero perderá la capacidad de firmar cosas nuevas.
  • El .CAT es un hash para el .INF: cualquier cambio en el .INF se detectará y el certificado ya no será válido, lo que significa que el .INF se comportará como uno sin firmar.
Adam Lawrence
fuente
44
Más detalles: Adafruit's Cómo firmar los controladores y ejecutables de Windows .
CL.
44
Esta es una excelente respuesta, muy útil de hecho. Definitivamente haces que suene mucho más fácil de lo que esperaba. Voy a mirar en esto. Mientras tanto, voy a aceptar esta respuesta debido a los pasos claros y directos proporcionados. ¡Salud!
DerStrom8
2
@ poizan42 Este no es un controlador en modo kernal. Este es un dispositivo USB CDC simple que solo abre un puerto COM virtual. No se realiza la ejecución del código en modo kernal.
DerStrom8
1
Solo quería hacer un seguimiento. Estos pasos funcionaron perfectamente con solo una advertencia: inf2cat.exe no viene con el SDK de Windows, también debe instalar el Kit de controladores de Windows (WDK): docs.microsoft.com/en-us/windows-hardware/drivers/ ... . Muchas gracias por su ayuda, ahora puedo instalar mi software de controlador sin ninguna advertencia: muestra a mi empresa como el editor como se esperaba
DerStrom8
2
Respuesta modificada Gracias por señalar lo obvio (han pasado unos años desde que instalé las cadenas de herramientas)
Adam Lawrence