Bundesamt für Sicherheit in der Informationstechnik

Das Trusted Platform Module (TPM)

Der Trusted Software Stack (TSS)

Der Trusted Software Stack, der in einigen Veröffentlichungen auch als TCG Software Stack bezeichnet wird, ist vereinfacht gesagt eine Software-Schnittstelle, über die ein Anwender mit seiner Software die Funktionen des TPMs nutzen kann.

Tatsächlich verbirgt sich dahinter ein komplexes Softwarepaket, welches aus mehreren Modulen und Komponenten besteht. Die einzelnen Module und Komponenten übernehmen dabei unterschiedliche Aufgaben auf verschiedenen Ebenen. Dabei soll sowohl eine Unabhängigkeit von der Plattform als auch vom Betriebsystem gewährleistet werden.

Auf der untersten Ebene befinden sich die Module im Kernel-Modus, d. h. sie liegen auf der gleichen Ebene wie die Kernkomponenten des Betriebssystems sowie die Hardwaretreiber und besitzen entsprechende Rechte. Die Module dieser Ebene haben direkten Zugriff auf das TPM.

Auf den höheren Ebenen im User Modus sind Schnittstellen und Dienste (in Windows-Betriebssystemen) bzw. Daemons (in den Unix-Varianten) verfügbar, die es Anwendungsprogrammierern erlauben, die Funktionen des TPMs zu nutzen. Der User-Modus beschreibt dabei in Bezug auf die zur Verfügung stehenden Rechte die Ebene aller Benutzer. In diesem Modus werden alle Programme und Dienste (bzw. Daemons) gestartet, die vom Anwender kontrolliert werden können.

In der nachfolgenden Abbildung sind die wichtigsten Module mit den untereinander und nach außen bereitgestellten Schnittstellen zu finden. Die einzelnen Module enthalten für die verschiedenen Aufgaben unterschiedliche Komponenten.

Module des TSS Module des TSS

TPM-Treiber (TPM Device Driver, TDD) gehören nicht direkt zum TSS. Sie werden von den TPM-Herstellern zur direkten Steuerung des TPMs zur Verfügung gestellt und müssen über die TPM Device Driver Library (TDDL) und die entsprechende Schnittstelle, das TPM Device Driver Library Interface (TDDLI), von den TSS-Komponenten ansprechbar sein. Obwohl die TDDL in einigen Veröffentlichungen auch mit TSS Device Driver Library bezeichnet wird, wird auch diese meist vom TPM-Hersteller zur Verfügung gestellt, während die TDDLI eine in den TSS-Spezifikationen definierte Schnittstelle ist, die die Kommunikation zu den anderen TSS-Komponenten regeln soll.

Über diese Schnittstelle werden die TPM-Treiber allerdings nicht direkt von den Anwendungsprogrammen angesprochen. Als eine Zwischenstufe sind die TSS Core Services (TCS) eingefügt worden, um die kritischen hardwarenahen Befehle kontrolliert ausführen zu lassen. Dadurch wird dem Anwendungsprogrammierer der Zugriff auf die TPM-Funktionen erleichtert. Er muss sich beispielsweise nicht um die Synchronisation der Befehle kümmern, wenn mehrere Anfragen gleichzeitig an den TPM-Chip gestellt werden.

Die TCS werden unter Windows-Betiebssystemen als Dienst und unter Unix als Daemon implementiert. Dabei gibt es pro TPM nur eine Implementation der TCS. Hier werden hauptsächlich Managementfunktionen (Synchronisation, Speichermanagement usw.) und anspruchsvollere TPM-Funktionen wie das Schlüsselmanagement durchgeführt. Diese Funktionen werden über die eigene Schnittstelle (TCS Interface) angestoßen.

Aber auch diese Schnittstelle wird noch nicht direkt von den Anwendungsprogrammen angesprochen. Dazwischen gibt es eine weitere Ebene, in der sich die TSS Service Provider (TSP) befinden. Auch diese sind als Dienst oder Daemon implementiert, allerdings werden hier mehrere Exemplare pro TPM zur Verfügung gestellt. Nach einem objektorientierten Ansatz wird hierbei für jede Anwendung ein eigenes Modul geladen. Die Koordination der Module erfolgt in den TCS.

In den TSPs werden unterschiedliche Funktionen zur Verfügung gestellt. Teilweise gehen diese über die TPM-Funktionalität hinaus. So werden die vom TPM gelieferten Daten hier in ein für Anwendungsprogramme besser lesbares Format umgewandelt. Dem TSS-Entwickler stehen dabei gewisse Freiheiten zu, wobei jeder TSS auf jeden Fall die Komponente TSP Cryptographic Functions (TSPCF) mit vorgegebenen kryptographischen Funktionen enthalten muss. Diese Komponente beinhaltet u. a. bekannte Krypto-Schnittstellen, wie MSCAPI und PKCS#11, so dass existierende Anwendungen nur geringfügig angepasst werden müssen.

Damit Anwendungen die zur Verfügung stehenden Funktionen des TSP nutzen können, hat jeder TSP eine eigene Schnittstelle (ein TSP Interface), über die er angesteuert werden kann.

Diese scheinbaren Umwege, die die Anwendungen beim Aufruf der TPM-Funktionen über die einzelnen Module und Komponenten machen müssen, dienen der Sicherheit. Durch diese Vorgehensweise werden kritische Funktionen gekapselt und müssen nicht von jedem Anwender neu programmiert werden. So werden Fehlerquellen minimiert und der Anwendungsprogrammierer kann sich auf die Entwicklung seiner eigentlichen Programme konzentrieren.

< Seite zurück nächste Seite >