Das TPM2 Modul kann unter Windows auch als virtuelle Smartcard genutzt werden. Das funktioniert inzwischen auch mit dem virtuellen tpm2 unter Linux/qemu/libvirt.
Die Lösung hat folgende Vorteile:
Nachteile gibt es aber auch:
Letzlich muss je nach Anwendungsfall entschieden werden, ob eine virtuelle Smartcard genutzt werden sollte, oder nicht.
Sofern auf dem TPM Modul noch ein altes Zertifikat vorhanden ist, dann sollte dieses gelöscht werden. Dazu wird die Instance-ID benötigt. Die Instance-ID wird bei der Initialisierung des TPMs angezeigt, an dieser Stelle muss die ID dokumentiert werden. Mit
tpmvscmgr.exe destroy /instance root\smartcardreader\0000
wird ein altes Zertifikat gelöscht, wobei 0000 durch die richtige Instance-ID ersetzt werden.
Mit
C:\>tpmvscmgr.exe create /name VSC_cf /pin default /adminkey random /generate
Standard-PIN verwenden: 12345678
TPM-Smartcard wird erstellt...
Komponente für virtuelle Smartcards wird initialisiert...
Komponente für virtuelle Smartcards wird erstellt...
Simulator für virtuelle Smartcards wird initialisiert...
Simulator für virtuelle Smartcards wird erstellt...
Leser für virtuelle Smartcards wird initialisiert...
Leser für virtuelle Smartcards wird erstellt...
Auf TPM-Smartcardgerät wird gewartet...
TPM-Smartcard wird authentifiziert...
Dateisystem auf der TPM-Smartcard wird generiert...
Die TPM-Smartcard wurde erstellt.
Geräteinstanz-ID des Smartcardlesers: ROOT\SMARTCARDREADER\0000
wird das TPM initialisiert, in diesem Fall wurde die Instance-ID 0000 erzeugt.
Mit
C:\>certutil -csp "Microsoft Base Smart Card Crypto Provider" -importpfx my-cert.p12
wird ein PKCS#12 Zertifikat importiert. Dabei wird nach dem PKCS#12 Passwort des Datei und der PIN des TPMs gefragt. Im Erfolgsfall erscheint folgende Ausgabe:
Geben Sie das PFX-Kennwort ein:
Das Zertifikat "my-cert" wurde zum Speicher hinzugefügt.
CertUtil: -importPFX-Befehl wurde erfolgreich ausgeführt.
Jetzt kann das TPM für das Windows Login verwendet werden.
Die PIN wird mit Ctrl-Alt-Del → "Kennwort ändern" geändert, also wie bei Windows auch sonst eine Änderung eines Passworts erfolgt.
Mit
C:\>certutil -scinfo
können die auf dem TPM installierten Zertifikate überprüft werden.
Falls der Import des PKCS#12 Zertifikats nicht funktioniert, dann muss evtl. in der Registry eine Anpassung vorgenommen werden. In "\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Cryptography\Defaults\Provider\Microsoft Base Smart Card Crypto Provider" sind folgende Anpassung vorzunehmen:
Ein Einträge AllowPrivateExchangeKeyImport und AllowPrivateSignatureKeyImport müssen auf "1" (DWORD) stehen, sonst funktioniert der Import nicht.