Errores de tarjeta inteligente


8

Tengo una tarjeta inteligente CAC y un lector de tarjetas USB SCM Microsystems SCR3310 . Estoy ejecutando Windows 7 Ultimate con SP1.

Esta configuración solía funcionar bien. Cuando insertaba mi CAC, mis certificados se propagaban inmediatamente al almacén de certificados (como lo demuestra el Administrador de certificados certmgr.msc), y podía iniciar sesión en sitios web que requerían un CAC para acceder.

Recientemente, dejé de poder acceder a los sitios web. Mirando en el Administrador de certificados, veo que solo uno, o algunas veces dos de mis certificados están presentes. Si los elimino y vuelvo a insertar mi tarjeta, puede aparecer un certificado diferente.

Acabo de regresar y reemplacé el lector con el mismo modelo, así que sé que no es el culpable.

Finalmente pensé en mirar el registro del sistema y noté los siguientes errores al insertar la tarjeta inteligente:

ingrese la descripción de la imagen aquí


Los errores, en orden cronológico:

Smart Card Service    Event ID: 610
   Smart Card Reader 'SCM Microsystems SCR33xx v2.0 USB SC Reader 0' rejected
   IOCTL TRANSMIT: Incorrect function.  If this error persists, your smart card
   or reader may not be functioning correctly.

   Command Header: 00 c0 00 00

WudfUsbccidDrv        Event ID: 11
   A Request has returned failure.
   MsgType: 0x80
   ICCStatus: 0x0
   CmdStatus: 0x1
   Error: 0xf6               // ICC_PROTOCOL_NOT_SUPPORTED
   SW1: 0x0
   SW2: 0x0

WudfUsbccidDrv        Event ID: 11
   An operation has failed (0x0, 0x0, 0x0, 0x0).
   ScT0Transmit: Failed to send request at TPDU level.
   HResult: The specified request is not a valid operation for the target device.
   // Note: this one comes from WUDFUsbccidDriver.dll CMyDevice::UsbScT0Transmit+7D0h

WudfUsbccidDrv        Event ID: 10
   Request[0](CLS=0x0,INS=0xc0,P1=0x0,P2=0x0,Lc=0,Le=256,.NETServiceMethod=0x0)

Parece que el hardware indicó una falla durante el IOCTL TRANSMIT, que se filtró a través del marco del controlador en modo de usuario.

Editar: consultando la especificación CCID, parece que la tarjeta está respondiendo con bmCommandStatus = 1 - Failed (error code provided by the error register). Y Error = ICC_PROTOCOL_NOT_SUPPORTED -10 (F6h). Supongo que el controlador traduce este error en "HResult: la solicitud especificada no es una operación válida para el dispositivo de destino". mensaje.

Además, el comando que se envió fue INS = 0xC0, que es GET RESPONSE .

¿Cómo puede decir que el protocolo no es compatible? ¿Qué hace el controlador de manera diferente que cuando funcionaba? Tenga en cuenta que también acabo de probar esto con un nuevo CAC y veo un comportamiento similar. ¿Un problema con el lector de tarjetas o el controlador?


Teniendo en cuenta que acabo de reemplazar el lector (y reinstalé los controladores, reinicié, etc.) ¿hay algún problema con mi tarjeta inteligente? No estoy asumiendo, porque hace el trabajo con otro lector en otro sistema. No he probado un lector diferente en el mismo sistema.

De hecho, ¡el mismo lector conectado a una VM de Windows 7 en la misma máquina física funciona bien! Algo está claramente roto, y me está volviendo loco tratar de descubrir qué.

Entonces, ¿cuál es el problema?


Acabo de tener una encantadora sesión de chat con un Jasper V de Microsoft, que proporcionó exactamente cero conocimiento del problema: pastebin.com/dvU3dNfa
Jonathon Reinhart

Tengo el mismo problema, ¿encuentras una solución?
Tobia

Instalé Linux.
Jonathon Reinhart

Hola @JonathonReinhart, lamento hackear esta publicación pero tengo exactamente el mismo problema, ¿alguna vez encontraste una solución?
Lankymart

Respuestas:


2

En caso de que alguien se quede con ese problema, he estado tratando de solucionarlo durante todo un día.

Aquí está la solución:

  1. Para Windows de 64 bits: salte a la clave de registro en

    HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Cryptography\Calais\Readers
    

Ya debería haber algunos lectores. Y si no es así, esa es la razón por la que puede tener todos los controladores instalados, pero aún no funciona en absoluto.

  1. Ir a Device Manager, encontrar el lector en cuestión y luego mirar hacia fuera para esta cadena en la pestaña Detalles: Bus reported device description.

  2. Cree una subclave para la clave anterior. El nombre debe ser exactamente igual a eso Bus reported device description. Luego agrega un contador al final. Entonces la clave debería ser como esta:

    HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Cryptography\Calais\Readers\O2Micro CCID SC Reader 0
    
  3. Ahora cree un par de valores de cadena: el primero con el nombre del dispositivo y el segundo para los grupos. Aquí está mi ejemplo:

    Device = O2Micro CCID SC Reader 0
    
    Groups = SCard$DefaultReaders
    

Eso es. Para que funcione, desconecte el lector y vuelva a conectarlo. En el caso de dispositivos internos, es posible que deba reiniciar la máquina. Y aquí está el .regejemplo del archivo (cambie el nombre y el número del dispositivo a sus propios valores):

Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Cryptography\Calais\Readers\O2Micro CCID SC Reader 0]
"Device"="O2Micro CCID SC Reader 0"
"Groups"=hex(7):53,00,43,00,61,00,72,00,64,00,24,00,44,00,65,00,66,00,61,00,75,\
00,6c,00,74,00,52,00,65,00,61,00,64,00,65,00,72,00,73,00,00,00,00,00

Aunque su pregunta es muy específica, gracias por compartir sus ideas. +1
Davor Josipovic

Lo siento, pero no entiendo lo que se supone que esto debe lograr. Mi dispositivo está claramente conectado y el controlador se está comunicando con el lector.
Jonathon Reinhart
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.