¿Se pueden usar los controladores de host USB para la identificación del dispositivo?

4

¿Algún dispositivo host USB proporciona alguna ID única que esté disponible desde el controlador USB al dispositivo? En el lado del software, puedo obtener la ID del proveedor (junto con otros datos de identificación del hardware, como la BIOS y las ID del disco duro) , pero buscando la manera de implementar una protección básica basada en una llave USB al mirar Los datos del host USB están disponibles desde el lado del software y del hardware.

En mi caso particular, me interesan los datos de huellas dactilares que se filtran de los controladores de host USB estándar que se encuentran en las PC de hoy en día: datos extendidos de BIOS, solicitudes de PnP / no PnP (por ejemplo, un BIOS que intente negociar ¿La clave de memoria USB envía cualquier ID de host?), Una señal de presencia de otros dispositivos USB presumiblemente internos, como los lectores de tarjetas portátiles que se encuentran en el mismo bus, etc.

    
pregunta kagali-san

2 respuestas

4

No hay nada en la especificación USB que obligue a un host a identificarse, y no hay una manera estándar en que un dispositivo pueda solicitar dicha información. Sin un controlador de cooperación en el sistema operativo, no hay forma de que un dispositivo ordinario conozca los detalles del host, como qué sistema operativo está ejecutando, qué procesador está usando, etc.

Sin embargo, he notado que los diferentes sistemas operativos tienden a tener sus propias peculiaridades acerca de lo que solicitan en qué orden durante la enumeración. Es posible que pueda realizar algunas pruebas y encontrar una manera de distinguir algunos de los principales sistemas operativos. Sin embargo, eso no estaría garantizado, podría cambiar fácilmente en revisiones menores, y sin duda puede ser deliberadamente falsificado.

Si desea que un dispositivo sepa que está conectado a un host de confianza, deberá cargar previamente el software en ese host. El dispositivo podría, por ejemplo, enviar una cadena de bits generada aleatoriamente cuando su software le solicite de forma correcta. Luego, el host debe responder con una respuesta que se oculta a partir de los bits originales de una manera particular con una contraseña. Solo un host con el algoritmo y la contraseña correctos podría responder correctamente.

Por supuesto que es un esquema simple. Puede complicarse mucho más dependiendo del nivel de atacante del que quiera protegerse. Por ejemplo, el esquema simple que describí anteriormente no sería bueno contra un hombre en el ataque central.

    
respondido por el Olin Lathrop
1

No es tan simple como obtener una ID única, pero una forma de hacerlo se describe en el siguiente documento:

Identi fi cación del host mediante la huella dactilar del USB (ahora url rota )
Archive.org espejo de 'Host Identificación a través de huellas digitales USB

    
respondido por el Andrew Smallbone

Lea otras preguntas en las etiquetas