Błędy karty inteligentnej

8

Mam kartę inteligentną CAC i czytnik kart SCM Microsystems SCR3310 USB . Korzystam z systemu Windows 7 Ultimate z dodatkiem SP1.

Ta konfiguracja działała dobrze. Kiedy wstawiałem mój CAC, moje certyfikaty natychmiast rozprzestrzeniały się do magazynu certyfikatów (o czym świadczy Menedżer certyfikatów certmgr.msc) i mogłem zalogować się na stronach internetowych, które wymagały CAC do uzyskania dostępu.

Ostatnio przestałem mieć dostęp do stron internetowych. W Menedżerze certyfikatów widzę, że obecny jest tylko jeden, a czasem dwa z moich certyfikatów. Jeśli je usunę i włożę ponownie kartę, może pojawić się inny certyfikat.

Właśnie wróciłem i wymieniłem czytnik na ten sam model, więc wiem, że to nie winowajca.

W końcu pomyślałem, aby spojrzeć na dziennik systemu i zauważyłem następujące błędy po włożeniu karty inteligentnej:

wprowadź opis zdjęcia tutaj


Błędy w porządku chronologicznym:

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)

Wygląda na to, że sprzęt wskazał awarię podczas IOCTL TRANSMIT, która przedostała się przez środowisko sterownika trybu użytkownika.

Edycja: po sprawdzeniu specyfikacji CCID wydaje się, że karta odpowiada bmCommandStatus = 1 - Failed (error code provided by the error register). I Error = ICC_PROTOCOL_NOT_SUPPORTED -10 (F6h)… Zakładam, że sterownik tłumaczy ten błąd na „HResult: Określone żądanie nie jest prawidłową operacją dla urządzenia docelowego”. wiadomość.

Ponadto wysyłane polecenie miało INS = 0xC0, czyli GET RESPONSE .

Jak można powiedzieć, że protokół nie jest obsługiwany? Co robi kierowca inaczej niż wtedy, gdy działał? Zauważ, że właśnie wypróbowałem to z nowym CAC i widzę podobne zachowanie. Problem z czytnikiem kart lub sterownikiem?


Biorąc pod uwagę, że właśnie wymieniłem czytnik (i ponownie zainstalowałem sterowniki, uruchomiłem ponownie itp.) Czy coś jest nie tak z moją kartą inteligentną? Nie jestem zakładając, ponieważ czyni pracę z innym czytnikiem na innym systemie. Nie próbowałem innego czytnika w tym samym systemie.

W rzeczywistości ten sam czytnik podłączony do maszyny wirtualnej z systemem Windows 7 na tej samej maszynie fizycznej działa dobrze! Coś jest wyraźnie zepsute i doprowadza mnie do szału, próbując dowiedzieć się, co.

Więc jaki jest problem?

Jonathon Reinhart
źródło
Właśnie odbyłem piękną sesję czatu z Jasperem V firmy Microsoft, która zapewniła dokładnie zero wglądu w problem: pastebin.com/dvU3dNfa
Jonathon Reinhart
Mam ten sam problem, czy znajdziesz rozwiązanie?
Tobia,
Zainstalowałem Linuxa.
Jonathon Reinhart
Cześć @JonathonReinhart, przepraszam za przejęcie tego postu, ale mam dokładnie ten sam problem, czy kiedykolwiek znalazłeś rozwiązanie?
Lankymart,

Odpowiedzi:

2

Na wszelki wypadek, gdyby ktoś utknął z tym problemem - starałem się to naprawić przez cały dzień.

Oto rozwiązanie:

  1. W 64-bitowym systemie Windows - przejdź do klucza rejestru pod adresem

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

Powinni już być czytelnicy. A jeśli nie, to dlatego możesz mieć zainstalowane wszystkie sterowniki, ale nadal nie działają.

  1. Idź do Device Managerznajdź czytelnika w pytaniu następnie zwrócić uwagę na ten ciąg w karcie Szczegóły: Bus reported device description.

  2. Utwórz podklucz dla powyższego klucza. Nazwa powinna być dokładnie taka sama Bus reported device description. Następnie dodaj licznik na końcu. Klucz powinien być taki jak ten:

    HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Cryptography\Calais\Readers\O2Micro CCID SC Reader 0
    
  3. Teraz utwórz kilka wartości ciągu: pierwszy z nazwą urządzenia i drugi dla grup. Oto mój przykład:

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

Otóż ​​to. Aby działało, odłącz czytnik i podłącz go ponownie. W przypadku urządzeń wewnętrznych może być konieczne ponowne uruchomienie komputera. Oto .regprzykład pliku (zmień nazwę i numer urządzenia na własne wartości):

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
Vladimir Molodnyakov
źródło
Chociaż twoje pytanie jest bardzo szczegółowe, dziękuję za podzielenie się spostrzeżeniami. +1
Davor Josipovic
Przepraszam, ale nie rozumiem, co to ma osiągnąć. Moje urządzenie jest wyraźnie podłączone, a sterownik komunikuje się z czytnikiem.
Jonathon Reinhart,