Bulma İşlemi

Windows 7'dan başlayarak, Windows Logo Programı (WLP) aracılığıyla logo sertifikalı akıllı kart minidriver'lar Windows Tak Çalıştır bileşenleri tarafından otomatik olarak indirilir ve yüklenir. Windows 7 ayrıca, PIV uyumlu kartlar ve GIDS kart yüzeyini destekleyen kartlar için bir sınıf mini sürücü sunar.

Okuyucuya akıllı kart takıldığında Windows aşağıdaki bulma işlemlerini gerçekleştirir:

  • Akıllı Kart Tak Çalıştır İşlemi:

    Bu süreç, Tak ve Çalıştır aracılığıyla Windows Update'ten logo sertifikalı bir mini sürücüyü talep eder ve indirir.

  • Winscard Bulma İşlemi: Bu işlem, uyumlu bir akıllı kartı PIV veya GIDS uyumlu bir sınıf mini sürücüsüyle ilişkilendirir.

  • Windows Akıllı Kart Sınıfı MiniDriver Bulma İşlemi: Bu işlem, yüklü bir minidriver'ı akıllı kartla ilişkilendirir.

Aşağıdaki tablo, farklı bulma işlemlerinin kullandığı AID değerlerini listeler.

AID adı AID değeri Açıklama
PIV YARDıMı A0 00 00 03 08 00 00 10 00 xx yy Sürüm bilgilerini içermeyen PIV AID. Microsoft akıllı kart çerçevesi en az önemli 2 baytı yoksayar.
MS GIDS AID A0 00 00 03 97 42 54 46 59 xx yy

Sürüm bilgilerini içermeyen Microsoft (MS) GIDS AID.

En az önemli 2 bayt karta gönderilmez, ancak ana bilgisayar tarafından aşağıdaki gibi ayrılır:

  • Bu baytların ilki (xx), GIDS sürüm numarası için Windows akıllı kart çerçevesi tarafından kullanılır. Bu bayt, 0x01 veya 0x02 GIDS belirtimi düzeltme numarasına ayarlanmalıdır.
  • İkinci bayt (yy) kart uygulaması tarafından kullanılmak üzere ayrılmıştır.
SC PNP YARDıMı A0 00 00 03 97 43 49 44 5F 01 00 Akıllı kart Tak Çalıştır AID.

Aşağıdaki tabloda bulma işlemi tarafından kullanılan dosyalar listelenmiştir.

Komut Yönerge (INS) değeri
MF 0x3F00
EF. ATR 0x2F01

Aşağıdaki tabloda, farklı bulma işlemlerinin kullandığı komutlar listelenir.

Komut Yönerge (INS) değeri
SEÇ 0xA4
VERI ALMA 0xCA
YANıT ALMA 0xC0

Akıllı Kart Tak Çalıştır İşlemi

Tak ve Kullan, uyumlu bir gelen kutusu mini sürücüsü yoksa bir akıllı kart mini sürücüsü yükler. Plug and Play ayrıca yüklü akıllı kart mini sürücülerini Windows Update aracılığıyla günceller.

Bu görevlerden birini gerçekleştirmek için Tak Çalıştır'ın akıllı kart için benzersiz bir kimlik türetebilmesi gerekir. Windows 7'den başlayarak, Tak ve Kullan'ın kart için benzersiz bir kimlik türetmek için kullandığı akıllı kart bulma işlemi aşağıda açıklanmaktadır:

  1. Tak ve Çalıştır, ATR'den tarihsel baytları alır. Bu baytlar bu bulma işleminin ilerleyen bölümlerinde kullanılır.

  2. Plug and Play, SC PNP AID'i bulmak için bir SELECT komutu uygular. Plug and Play, Windows'a özel etiket 0x7F68'i (ASN.1 DER kodlu) bulmak için bir GET DATA komutu uygular. Daha fazla bilgi için aşağıdaki "Windows Akıllı Kart Çerçevesi Kart Tanımlayıcısı" alt bölümüne bakın. Bu komut başarılı olursa, benzersiz tanımlayıcıların listesi döndürülür. Tak çalıştır, listedeki ilk tanımlayıcıyı akıllı kartın cihaz kimliği olarak kullanır ve kartın benzersiz kimliği için bu değeri kullanır. Daha fazla bilgi için bkz . Cihaz kimlikleri.

  3. Tak Çalıştır akıllı kart için benzersiz bir kimlik türetirse, 12. adıma geçer.

  4. Windows yukarıdaki adımda bir cihaz kimliği elde edemezse, MF ve EF'ye ait SELECT komutunu verir. Ardından ATR ve READ BINARY komutunu uygular. Windows, WU için cihaz kimliği olarak kullanabileceği benzersiz bir tanımlayıcı almayı başarırsa, 12. adıma gidin.

  5. Tak Çalıştır, yukarıdaki adımda benzersiz bir tanımlayıcı edinemezse, PIV AID için bir SELECT komutu çalıştırır. Tak çalıştır başarılı olursa, akıllı kartı PIV uyumlu bir cihaz olarak kabul eder. Tak ve çalıştır, kartın benzersiz kimliği olarak aşağıdakileri kullanır:

    1. Cihazın uyumlu kimliği olarak PIV uyumlu cihaz kimliğini kullanın. Daha fazla bilgi için bkz . Uyumlu kimlikler.
    2. Cihazın kimliği olarak kartın ATR tarihsel baytları. Geçmiş ATR baytları yoksa Windows, cihaz kimliği olarak PIV uyumlu cihaz kimliğini kullanır.
  6. Tak Çalıştır akıllı kart için benzersiz bir kimlik türetirse, 12. adıma geçer.

  7. 4. adımdaki SELECT komutu başarısız olursa, Windows MS GIDS AID için bir SELECT komutu oluşturur. Tak Çalıştır, MS GIDS AID'i seçmeyi başarırsa akıllı kartı GIDS uyumlu bir cihaz olarak kabul eder. Tak ve çalıştır, kartın benzersiz kimliği olarak aşağıdakileri kullanır:

    1. Uyumlu kimlik olarak GIDS uyumlu cihaz kimliği.
    2. Cihazın kimliği olarak kartın ATR tarihsel baytları. Geçmiş ATR baytları yoksa, Tak ve çalıştır GIDS uyumlu cihaz kimliğini cihaz kimliği olarak kullanır.
  8. Tak Çalıştır akıllı kart için benzersiz bir kimlik türetirse, 12. adıma geçer.

  9. Tak Çalıştır, PIV AID veya MS GIDS AID'i seçemezse, kartın ATR geçmiş baytlarını (varsa) akıllı kartın benzersiz kimliğinin cihaz kimliği olarak kullanır.

  10. Tak ve Kullan'da ATR geçmiş baytları yoksa, Windows Update için yeterli bilgiye sahip değildir. Tak Çalıştır, bulma sürecinde SCARD_E_UNEXPECTED ile başarısız olur.

  11. Tak Çalıştır akıllı kart için benzersiz bir kimlik türetirse, 12. adıma geçer.

  12. Tak Çalıştır, keşif sürecini durdurur ve özgün tanımlayıcıyı kullanır.

Windows 8'den itibaren, Tak ve Çalıştır özelliği kartın sürücüsünü bulamazsa, kart yerleşik NULL sürücüsüyle eşleştirilir. Daha sonra kartın bilgisayara bağlı bir akıllı kart okuyucuya bağlandığında çalışması için karta özgü ek yazılımlar gerekir.

Winscard Bulma İşlemi

Winscard (Winscard.dll) bulma işlemi, sistemdeki bir kartı yüklü bir mini sürücüyle ilişkilendirmek için kullanılır. SCardListCards veya SCardLocateCards çağrıldığında işlem başlatılır.

Windows 7'den itibaren, Winscard keşif süreci aşağıda açıklanmaktadır:

  1. Winscard, bilgisayarda yüklü akıllı kartları temsil eden çeşitli alt anahtarlar için Calais anahtarının altındaki kayıt defterine bakar. Bu alt anahtarlar şu konumda bulunur:

    HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Cryptography\Calais\SmartCards

  2. Winscard, SmartCards alt anahtarının altındaki her alt anahtarda alt anahtarın ATR değeri ile akıllı karttan alınan ATR değeri arasındaki eşleşmeyi arar. Eşleşme bulunursa 6. adıma gidin.

  3. Winscard, mini sürücü için SmartCards alt anahtarı değeri ile PIV Cihazı ATR Önbelleği (PIV kartları için) veya IDMP ATR Önbelleği (Microsoft GIDS uyumlu kartlar için) alt anahtarları içindeki değer arasında bir eşleşme arar. Eşleşme bulunursa 6. adıma gidin.

  4. Winscard, MS GIDS AID için bir SELECT komutu oluşturur. Bu komut başarılı olursa 6. adıma gidin.

  5. 4. adım başarısız olursa, Winscard PIV AID için bir SELECT komutu oluşturur. Bu komut başarılı olursa 6. adıma gidin.

  6. Winscard, kartla eşleşen mini sürücü kayıt defteri anahtarına karşılık gelen kartın adını döndürür.

Aşağıdaki tabloda, Winscard bulma işleminin kullandığı çeşitli kayıt defteri anahtarları açıklanmaktadır.

Kayıt defteri anahtarı Kullan
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft \Cryptography\Calais\SmartCards Winscard, 1. adımda Calais\SmartCards anahtarı olarak bu anahtarı kullanır.
HKEY_LOCAL_MACHINE\ SOFTWARE\Microsoft \Cryptography\Calais\PIV Cihaz ATR Önbelleği 4. adımda bir eşleşme bulunursa, eşleşen kartın tam ATR değeri bu kayıt defteri anahtarında ikili değer olarak depolanır. Girdinin adı rastgele seçilir.

Bu girdi önbelleğe alındıktan sonra, performansı geliştirmek için 3. adımda kullanılır.
HKEY_LOCAL_MACHINE\ SOFTWARE\Microsoft \Cryptography\Calais\IDMP ATR Önbelleği 5. adımda bir eşleşme bulunursa, eşleşen kartın tam ATR değeri bu kayıt defteri anahtarının altında ikili değer olarak depolanır. Girdinin adı rastgele seçilir.

Bu girdi önbelleğe alındıktan sonra, performansı geliştirmek için 3. adımda kullanılır.

Windows Akıllı Kart Sınıfı Minisürücü Bulma Süreci

CardAcquireContext çağrıldığında Windows akıllı kart sınıfı minidriver aşağıdaki bulma işlemini gerçekleştirir. Mini sürücü, ilişkili kartı PIV veya Microsoft GIDS uyumlu olarak işaretlemek için bu bulma işlemini gerçekleştirir:

  1. Mini sürücü, PIV AID için bir SELECT komutu verir. Komut başarılı olursa kart PIV uyumlu olarak işaretlenir ve bulma işlemi durdurulur.

  2. Aksi takdirde, mini sürücü MS GIDS AID için bir SELECT komutu verir. Komut AID'yi başarılı veya başarısız olursa, minidriver kartı MS GIDS olarak işaretler.

Akıllı kart daha önce sınıf minisürücüsüyle Winscard bulma işlemi aracılığıyla keşfedildiyse, PIV veya GIDS AID için SELECT komutuna yanıt vermeyebilir. Bu durumda, özel bir AID ile GIDS kart arayüzünü uygulayan bir satıcının kartı olmalıdır. Bu tür kartlar Microsoft akıllı kart veri modelini ek veri nesneleriyle genişletebilir.

PIV ve GIDS akıllı kart satıcıları Windows akıllı kart sınıfı minidriver'ı kullanabilir ve yalnızca INF yükleme paketi sağlayarak marka ekleyebilir. Uyumlu kartlar için sınıf minidriver'ını kullanma hakkında daha fazla bilgi için Akıllı Kart Tak Çalıştır bölümündeki INF örneğine bakın. INF'de Tak çalıştır eşleştirmesi için yalnızca geçmiş baytlar kullanılır.

Satıcının sağladığı INF dosyası, Calais\SmartCards kayıt defteri alt anahtarı altında aşağıdaki bilgileri içeren girdiler oluşturur.

Giriş adı Türü Değer
80000001 Dize Kartın minidriver konumu. Bu, satıcı tarafından sağlanan bir mini sürücünün tam yolu veya system32 dizinindeki veya sürücü deposundaki bir dosyanın adı olabilir. Sürücü paketi tarafından sağlanan bir mini sürücünün, mini sürücüye tam yol sağlamasını ve mini sürücünün sürücü deposundan çalıştırılmasını öneririz. gelen kutusu mini sürücüsü msclmd.dll%windir%\system32 dizininde depolanır.
ATR İkilik Kartın ATR'si
ATRMask İkilik Kartın ATR Maskesi
Şifreleme Sağlayıcısı Dize Microsoft Base Akıllı Kart Kripto Sağlayıcısı
Akıllı Kart Anahtar Depolama Sağlayıcısı Dize Microsoft Akıllı Kart Anahtar Depolama Sağlayıcısı

Seçim Mekanizmaları

Microsoft tanımlayıcıları içeren uygulamalar

Windows akıllı kart çerçevesi, Microsoft Tak ve Çalıştır Uygulama Tanımlayıcısını kullanarak bir uygulama seçmeye çalışır. Kart belirtilen AID'i desteklemiyorsa SELECT komutundan sonra bir hata döndürmelidir. SELECT komutu başarıyla tamamlanırsa, çerçeve bir GET DATA komutu vererek kartı ve ilgili akıllı kart minidriver'ını tanımlamaya çalışır.

GET DATA komutları, SC Tak Çalıştır YARDıMı'nın desteklenip desteklenmediğine bakılmaksızın gerçekleşir. Bu, diğer AID'lerle ilişkili olan veya herhangi bir AID ile ilişkilendirilmeyen uygulamaların bu belirtimdeki kart seçim mekanizmalarını uygulamasına olanak tanır.

VERI ALMA

Kartta Tak Çalıştır MS AID'i seçtikten sonra akıllı kart çerçevesi, 0x7F68 Windows'a özel etiketiyle bir GET DATA komutu yayınlar. Kart GET DATA komutunu ve özel etiketini destekliyorsa, bir veya daha fazla benzersiz tanımlayıcının listesini döndürerek yanıt verir. Benzersiz tanımlayıcılar, aşağıdaki "Windows Akıllı Kart Çerçevesi Kart Tanımlayıcısı" bölümünde tanımlandığı gibi yapılandırılmalıdır.

Windows akıllı kart çerçevesi, uygun akıllı kart minidriver'ını bulmak ve yüklemek için listedeki yalnızca ilk benzersiz tanımlayıcıyı kullanır. Diğer tanımlayıcılar gelecekte kullanılabilir.

SELECT PIV AID Komutu

Bir PIV uygulamasını tanımlamak için Windows, SELECT PIV AID komutunu sağlar. Bu komut başarılı olursa, kartta bir PIV uygulaması bulunur ve şimdi seçilir. Bu durumda, Windows akıllı kart çerçevesi artık PIV uyumlu bir minidriver'ı kartla ilişkilendirebilir.

SELECT MS GIDS AID Komutu

Bir MS GIDS uygulamasını tanımlamak için SELECT MS GIDS AID komutu kullanılır. Bu komut başarılı olursa, kartta bir MS GIDS uygulaması bulunur ve şimdi seçilir. Windows akıllı kart çerçevesi artık MS GIDS uyumlu bir minidriver'ı kartla ilişkilendirebilir.

ATR Tarihçe Baytlarının Kullanımı

Aşağıdaki koşullar altında, Windows akıllı kart çerçevesi yüklenecek minidriver'ı belirlemek için ATR geçmiş baytlarını yeniden kullanmaya başlar:

  • Akıllı kart, GET DATA komutunu desteklemez.
  • Akıllı kart, bu belirtimdeki AID seçim yöntemlerini desteklemez.

ATR geçmiş baytlarının kullanımı, eklenen kartı tanımlamak için kullanılan eski yöntemdir. Çerçeve, mini sürücü aramasında tüm geçmiş baytları kullanır.

Windows Akıllı Kart Çerçevesi Kart Tanımlayıcısı

Akıllı kart GET DATA komutunu destekliyorsa, Windows akıllı kart çerçevesi kartın aşağıdaki ASN.1 Yapısında biçimlendirilmiş DER-TLV kodlanmış bir bayt dizisi döndürmesini bekler.

CardID ::= SEQUENCE {
                   version Version DEFAULT v1,
                   vendor VENDOR,
                   guids GUIDS }

Version ::= INTEGER {v1(0), v2(1), v3(2)}
VENDOR ::= IA5STRING(SIZE(0..8))
GUID ::= OCTET STRING(SIZE(16))
GUIDS ::= SEQUENCE OF GUID

Sürüm üyesi 0 (v1) olarak ayarlanmalıdır.

VENDOR üyesi "MSFT" olarak ayarlanmalıdır.

GUID üyesi, kart/uygulama bileşimini benzersiz olarak tanımlayan 16 baytlık bir GUID'dir. Bu değer, uygun akıllı kart minidriver'ını algılamak ve yüklemek için kullanılır.

Uyarı

Uygulamayı veren IHV veya ISV, kartı/uygulama bileşimi için benzersiz bir GUID oluşturmalıdır.