Trusted Platform Module w praktyce

Moja służbowa Toshiba Tecra ma wbudowany moduł TPM produkcji Infineona. Normalnie sterowniki pod Windows pozwalają wykorzystać moduł jako bezpieczny magazyn kluczy np. dla EFS.

Ale ponieważ Infineon daje także standardowy interfejs PKCS#11, więc można go także wykorzystać do trzymania certyfikatów X.509. Trzeba tylko wiedzieć jak się nazywa odpowiedni DLL. W przypadku Infineona jest to biblioteka C:\WINDOWS\SYSTEM32\FXTPMCK.DLL, co jest pewną zmyłką bo zwykle producenci (RSA, Aladin, Cryptotech) nazywają ją tak by miała w środku "11". Zresztą dalej będzie również opisana instalacja innych tokenów tego typu, procedura jest identyczna.

Moduł TPM powinien być zainicjalizowany w systemie, co zrobią natywne narzędzia Infineona przy pierwszym uruchomieniu. Obejmuje to m.in. ustawienie hasła administratora oraz haseł dla każdego z użytkowników.

Instalacja w Thunderbird

  1. Narzędzia -> Opcje -> Prywatność -> Zabezpieczenia -> Urządzenia
  2. Klikamy Załaduj, pojawi się prompt do wybrania ściezki nowego sterownika PKCS#11
  3. Wpisujemy w Nazwa pliku modułu "\WINDOWS\SYSTEM32\FXTPMCK.DLL", a w Nazwa modułu np. "Infineon TPM", wciskamy OK

W analogiczny sposób należy załadować PKCS#11 do Firefoksa. Dostęp do TPM w Firefoksie będzie potrzebny po to, żeby móc wygenerować na TPM klucz prywatny i załadować do niego certyfikat od centrum certyfikacji. I właściwie tylko po to - później będzie z niego korzystał tylko Thunderbird.

Generowanie certyfikatu

Darmowe, testowe certyfikaty X.509 można uzyskać w Certum. Przechodząc rejestrację dojdziemy do punktu, gdzie należy zaakceptować regulamin i wybrać długość klucza. Zamiast domyślnego 2048 bity należy wybrać 1024, bo większość kart elektronicznych (w tym TPM) nie obsługuje dłuższych kluczy i generowanie zakończy się błędem.

Po wciśnięciu Generuj Firefox powinien zapytać nas o miejsce generowania klucza, oferując Trusted Platform Module (to wybieramy) i natywny plikowy magazyn Firefoksa. Po zakończeniu procedury zostajemy z kluczem prywatnym w TPM, certyfikatem (CSR) wysłanym do podpisania przez Certum i czekamy na maila. W mailu przyjdzie link do gotowego certyfikatu, który po kliknięciu Instaluj powinien sam zainstalować się w TPM.

Podgląd certyfikatu

Teraz z poziomu Thunderbirda powinniśmy zobaczyć nasz nowy certyfikat wybierając Narzędzia -> Konfiguracja kont -> Zabezpieczenia -> Wyświetl certyfikaty. Nowy certyfikat powinien widnieć w pierwszej zakładce (Twoje certyfikaty), co oznacza że Thunderbird ma równocześnie dostęp do klucza prywatnego związanego z tym certyfikatem. Certyfikat oczywiście powinien mieć "Trusted Platform Module" w kolumnie Urządzenie zabezpieczające.

Korzystanie z certyfikatu

W tym momencie możemy podpiąć certyfikat pod konto email, z którego korzystamy, wciskając w zakładce Zabezpieczenia przycisk Wybierz i wybierając jedyny dostępny tam klucz - ten z TPM. Przy wysyłaniu poczty należy wcisnąć Zabezpieczenia -> Podpisz cyfrowo tę wiadomość.

Problemy i uwagi

Identyczną procedurę można zrealizować dla dowolnej karty elektronicznej, której producent dostarcza sterownik PKCS#11. Zwykle największyu problem to znaleźć informację o tym, jak nazywa się plik sterownika. Pomocna powinna być poniższa tabelka, zawierająca wyniki moich testów na różnych kartach z certyfikatami Certum:

Producent Plik Wynik
Infineon IFXTPMCK.DLL działa Firefox/Thundebird/MSIE
CryptoCard CCPKIP11.DLL działa Firefox/Thundebird/MSIE
RSA 800 PKCS11.DLL działa Thundebird/MSIE, w Firefoksie psuje dostęp do dotychczas istniejących certyfikatów CA
Aladdin ETPKCS11.DLL Grafika:Aladdin eToken USB.gif działa Firefox/Thundebird/MSIE
  1. Biblioteki RSA należy szukać w katalogu \Program Files\RSA Security\RSA Authenticator Utility
  2. Wszystkie pozostałe powinny być dostępne w \WINDOWS\system32.
  3. Jeśli nie znamy nazwy biblioteki to zwykle można na nią trafić szukając '*11*.DLL.

Wszystkie w/w karty przetestowałem i wszystkie działają z programami Mozilli. Sprzedająca CryptoCardy krakowska firma CryptoTech jest nawet tak miła, że w pakiecie dostarcza specjalny instalator dla Mozilli, który robi dokładnie to co opisałem powyżej tylko automatycznie.

Należy uważać z włączaniem weryfikacji certyfikatów po OCSP, bo powoduje to że Thunderbird widzi niektóre certyfikaty jako błędne.

W tym przypadku chciałem się pobawić wbudowanym w laptop gadżetem, jakim jest TPM. Wykorzystanie go jako bezpiecznego nośnika certyfikatu jest w praktyce nie do końca uzasadnione, bo tracąc notebooka tracimy certyfikat. Ten ostatni lepiej więc nosić na plastikowej karcie (CryptoCard) albo tokenie (RSA, Aladin).

O wiele bardziej interesowałaby mnie funkcja przechowywania w TPM bazy haseł zapamiętywanych przez Mozillę. Ale to pewnie musiałbym sobie napisać :)

Narzędzie udostępniane przez Aladdina RTE eToken Properties nie ma domyślnie funkcji inicjalizacji karty. A ściślej ma, tylko domyślnie nie pokazuje go w menu. Aby to włączyć należy przy pomocy regedit ustawić wartość klucza HKLM\Software\Aladdin\eToken\eTProperties\Advanced na 3F. Po ustawieniu tego klucza i uruchomieniu programu pojawia się przycisk Initialization oraz Advanced, którym można np. przeglądać certyfikaty na tokenie.

Na liście urządzeń powinien pojawić się token Infineona, a po rozwinięciu powinien pojawić sie Trusted Platform Module, informacje o wersji itd.

Obecnie (2008) RTE Aladdina nazywa się PKI Client.