Diplomarbeit von Thomas Badura

Transcrição

Diplomarbeit von Thomas Badura
Fakultät für Mathematik und Informatik
Security Analysis of Symbian OS Platform Security Architecture(PSA)
Diplomarbeit
von
Thomas Badura
vorgelegt am
Lehrstuhl Praktische Informatik I
Prof. Dr. F. Freiling
Betreuer: Dipl.-Inform. Michael Becher
September 2008
Ehrenwörtliche Erklärung
Hiermit versichere ich, die vorliegende Diplomarbeit ohne Hilfe Dritter und nur mit den angegebenen Quellen und Hilfsmitteln angefertigt zu haben. Alle Stellen, die aus den Quellen
entnommen wurden, sind als solche kenntlich gemacht worden. Diese Arbeit hat in gleicher
oder ähnlicher Form noch keiner Prüfungsbehörde vorgelegen.
Mannheim, den 10. September 2008
......................................
Thomas Badura
Danksagung
Als Erstes möchte ich Prof. Freiling danken, der mir die Möglichkeit gegeben hat, meine
Diplomarbeit an seinem Lehrstuhl zu schreiben.
Weiterer Dank gehört Michael Becher, der mich während meiner Diplomarbeit betreut hat.
Erst durch seine konstruktive Kritik und die anregenden Diskussionen konnte diese Arbeit in
dieser Form entstehen.
Einen großen Dank muss ich meinen Eltern aussprechen, die mich in dieser schwierigen Zeit
unterstützten und mir das Informatikstudium erst ermöglicht haben.
Abschließend möchte ich noch T-Mobile in Bonn danken, für die Bereitstellung der Testgeräte.
Zusammenfassung
Die Ausstattungsmerkmale und Verbindungsmöglichkeiten heutiger Smartphones nehmen stetig zu. Dadurch gewinnen Sicherheitsmechanismen speziell für Smartphones bei dem täglichen
Umgang mit diesen Geräten eine immer größer werdende Bedeutung. Symbian hat mit der
Einführung der „Platform Security Architecture“ in Version 9 ihres Betriebssystems eine neue
Sicherheitsplattform für Symbian Smartphones vorgestellt. Jedoch wie bei jeder neuen Technologie ist mit der Einführung in den meisten Fällen mit Fehlern oder sonstigen Mängeln zu
rechnen.
Im Rahmen dieser Diplomarbeit soll zunächst die Konfiguration der „Platform Security Architecture(PSA)“ verifiziert werden. Dazu werden die erarbeiteten Konfigurationsmöglichkeiten
auf die Konfigurationsparameter der PSA abgebildet. Nachdem die Konfigurationsparameter
identifiziert und die jeweiligen Testbereiche der PSA gefunden wurden, wird das Testsystem
mit möglichst wenig Redundanz implementiert. Dafür implementiert das Testsystem einen
„Intelligent Code-Builder“, der abhängig der Konfigurationsdatei den Quellcode für die Testfälle generiert, einen „Package-Creator“ und einen „Emu-Builder“, die aus den generierten
Quellcode die Testfälle für die jeweilige Plattform erstellen. Jedoch erst durch die Definition
der Testfälle kann mit der entsprechenden Konfigurationsdatei der jeweilige Testbereich der
PSA mit den gefundenen Konfigurationsparametern verifiziert werden. Anhand der Evaluierung der Ergebnisse für die jeweilige Plattform, konnte die spezifizierte Funktionsweise der
PSA-Komponenten zum größten Teil verifiziert werden. Dabei konnte aber auch gezeigt werden, dass mit den entsprechenden Einstellungen in der SWIPolicy, jede Anwendung mit den
höchsten Capabilities ohne ein Zertifikat installiert werden kann. Auffällig in den sonst durch
die SWIPolicy dominierten Einstellmöglichkeiten der PSA war, dass der Benutzer die OCSPPrüfung ein- beziehungsweise ausschalten kann, diese jedoch selbst nicht funktioniert. Weitere
Tests ergaben auch, dass die Integrität der Installationsdateien nicht völlig gegeben ist und
Installationspakete mit unterschiedlichen UIDs nicht installiert werden können, obwohl sie im
Emulator lauffähig sind.
v
Inhaltsverzeichnis
Tabellenverzeichnis
x
Abbildungsverzeichnis
xiii
Quelltextverzeichnis
xv
1. Einleitung
1.1. Motivation . . . . . . . . . . . . . . . . . . . .
1.2. Problem- und Fragestellung der Diplomarbeit
1.3. Aufbau der Diplomarbeit . . . . . . . . . . .
1.4. Schreibkonventionen . . . . . . . . . . . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
1
1
2
2
3
2. Grundlagen
2.1. Symbian OS . . . . . . . . . . . . . . . . . . .
2.1.1. Entstehung und Marktdurchdringung .
2.1.2. Übersicht . . . . . . . . . . . . . . . .
2.1.3. Unterschiedliche Varianten . . . . . . .
2.1.4. Symbian Versionen . . . . . . . . . . .
2.2. Platform Security Architecture . . . . . . . .
2.2.1. Voraussetzungen . . . . . . . . . . . .
2.2.2. Unit of Trust . . . . . . . . . . . . . .
2.2.3. Capabilities . . . . . . . . . . . . . . .
2.2.4. Data Caging . . . . . . . . . . . . . .
2.2.5. Symbian Signed . . . . . . . . . . . . .
2.2.6. Konzepte hinter der PSA . . . . . . .
2.3. Emulator . . . . . . . . . . . . . . . . . . . .
2.3.1. Übersicht . . . . . . . . . . . . . . . .
2.3.2. Eigenschaften . . . . . . . . . . . . . .
2.3.3. Unterschiede . . . . . . . . . . . . . .
2.4. Programming . . . . . . . . . . . . . . . . . .
2.4.1. SWInstaller . . . . . . . . . . . . . . .
2.4.2. Installationspaket(SIS-Datei) . . . . .
2.4.3. Speicherverwaltung . . . . . . . . . . .
2.4.4. Kernel . . . . . . . . . . . . . . . . . .
2.4.5. Kommunikationsarchitektur . . . . . .
2.4.6. DLL . . . . . . . . . . . . . . . . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
5
5
5
5
7
8
9
9
9
11
13
15
17
19
19
20
21
23
23
23
26
27
28
30
3. Design und Spezifizierung
3.1. Verifikation der Konfiguration . . . . . . . . . . . . . . . . . . . . . . . . . . .
3.1.1. Testsystemaufbau . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
31
31
32
vii
Inhaltsverzeichnis
3.1.2. Testbereiche . . . . . . . . . . . . . .
3.2. Parameter und Konfigurationsmöglichkeiten
3.2.1. SWIPolicy . . . . . . . . . . . . . . .
3.2.2. SWInstaller-Einstellungen . . . . . .
3.2.3. Bedeutung für das Testsystem . . . .
3.3. Erfassung der Vollständigkeit . . . . . . . .
3.3.1. Testbereich . . . . . . . . . . . . . .
3.3.2. Testbarkeit gegen wirklich getestet .
3.4. Mehrdeutigkeiten der Spezifikation . . . . .
4. Testsystem
4.1. Beschreibung der Implementierung . .
4.1.1. File-Logger . . . . . . . . . . .
4.1.2. Testsystem . . . . . . . . . . .
4.2. Beschreibung der Testfälle . . . . . . .
4.2.1. Data Caging . . . . . . . . . .
4.2.2. File Eclipsing . . . . . . . . . .
4.2.3. File Overwriting . . . . . . . .
4.2.4. SWInstaller . . . . . . . . . . .
4.2.5. Certificate . . . . . . . . . . . .
4.2.6. Capabilities . . . . . . . . . . .
4.2.7. Integrity . . . . . . . . . . . . .
4.2.8. Shared-Data . . . . . . . . . . .
4.2.9. IDs . . . . . . . . . . . . . . . .
4.2.10. User-Defined . . . . . . . . . .
4.2.11. API . . . . . . . . . . . . . . .
4.3. Definition/Spezifizierung der Testfälle
4.3.1. Data Caging . . . . . . . . . .
4.3.2. File Eclipsing . . . . . . . . . .
4.3.3. File Overwriting . . . . . . . .
4.3.4. SWInstaller . . . . . . . . . . .
4.3.5. Certificate . . . . . . . . . . . .
4.3.6. Capabilities . . . . . . . . . . .
4.3.7. Integrity . . . . . . . . . . . . .
4.3.8. Shared-Data . . . . . . . . . . .
4.3.9. IDs . . . . . . . . . . . . . . . .
4.3.10. API . . . . . . . . . . . . . . .
5. Ergebnisse und Evaluierung
5.1. Versuchsaufbau . . . . . . . . .
5.1.1. Vorbereitung . . . . . .
5.1.2. Hardware . . . . . . . .
5.1.3. Software . . . . . . . . .
5.2. Marktabbildung der Testgeräte
5.3. Durchführung . . . . . . . . . .
5.3.1. Emulator . . . . . . . .
5.3.2. Testgeräte . . . . . . . .
5.3.3. Schwierigkeiten . . . . .
viii
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
33
37
37
38
39
39
39
40
41
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
43
43
43
44
46
46
47
48
49
50
50
51
52
53
53
54
55
55
55
56
57
58
58
59
59
60
60
.
.
.
.
.
.
.
.
.
63
63
63
64
65
65
65
65
66
68
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
Inhaltsverzeichnis
5.4. Evaluationskriterien . . . .
5.5. Vorstellung der Ergebnisse .
5.5.1. Data Caging . . . .
5.5.2. File Eclipsing . . . .
5.5.3. File Overwriting . .
5.5.4. SWInstaller . . . . .
5.5.5. Certificate . . . . . .
5.5.6. Capabilities . . . . .
5.5.7. Integrity . . . . . . .
5.5.8. Shared-Data . . . . .
5.5.9. IDs . . . . . . . . . .
5.5.10. API . . . . . . . . .
5.6. Aussagekraft der Ergebnisse
5.6.1. Data Caging . . . .
5.6.2. File Eclipsing . . . .
5.6.3. File Overwriting . .
5.6.4. SWInstaller . . . . .
5.6.5. Certificate . . . . . .
5.6.6. Capabilities . . . . .
5.6.7. Integrity . . . . . . .
5.6.8. Shared-Data . . . . .
5.6.9. IDs . . . . . . . . . .
5.6.10. Emulator . . . . . .
5.7. Fazit der Ergebnisse . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
6. Diskussion
6.1. Symbian Signed . . . . . . . . . . . . . . . . . . . . . . . .
6.1.1. Bedeutung und Verantwortung . . . . . . . . . . .
6.1.2. Testkriterien . . . . . . . . . . . . . . . . . . . . .
6.2. Capabilities . . . . . . . . . . . . . . . . . . . . . . . . . .
6.2.1. Verantwortung für das Gewähren von Capabilities
6.2.2. Verteilung der Capabilities . . . . . . . . . . . . . .
6.3. SWIPolicy . . . . . . . . . . . . . . . . . . . . . . . . . . .
6.4. SWInstaller . . . . . . . . . . . . . . . . . . . . . . . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
93
. 93
. 93
. 94
. 96
. 96
. 97
. 98
. 100
.
.
.
.
.
.
.
.
.
.
.
.
103
103
103
104
104
105
105
105
106
107
107
108
110
7. Privilegien von Software erhöhen
7.1. Beschreibung . . . . . . . . . . . . . . . . .
7.1.1. SWIPolicy modifizieren . . . . . . .
7.1.2. Capabilities zur Laufzeit ausschalten
7.1.3. Root-Zertifikat . . . . . . . . . . . .
7.1.4. ROM-Patcher . . . . . . . . . . . . .
7.1.5. HelloCarbide . . . . . . . . . . . . .
7.2. Gefahrenpotential . . . . . . . . . . . . . . .
7.3. Maßnahmen gegen diese Methoden . . . . .
7.4. Sandbox auf Symbian OS Version 9 . . . . .
7.4.1. Symbian Dateiformat . . . . . . . .
7.4.2. Loader Server . . . . . . . . . . . . .
7.4.3. Übertragbarkeit der MobileSandbox
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
68
69
70
72
74
76
78
79
82
84
85
87
87
87
87
88
88
89
89
90
90
91
91
91
ix
Inhaltsverzeichnis
8. Fazit und Ausblick
8.1. Offenheit von Symbian OS . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
8.2. Fazit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
8.3. Ausblick . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
113
113
114
115
Anhang
117
A. Testsystem
A.1. Definition der Testfälle . . . . . . . . . . . . . . .
A.2. Regeln und Hinweise für die Konfigurationsdatei
A.3. Test SWIPolicies . . . . . . . . . . . . . . . . . .
A.3.1. SWInstaller . . . . . . . . . . . . . . . . .
A.3.2. Certificate . . . . . . . . . . . . . . . . . .
.
.
.
.
.
118
119
143
144
144
145
B. CD-Inhalt
B.1. Quellcode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
B.2. Testsystem . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
B.3. Privilegien erhöhen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
147
147
147
148
Literaturverzeichnis
149
x
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
Tabellenverzeichnis
2.1.
2.2.
2.3.
2.4.
2.5.
2.6.
User Capabilities . . . . . . . . .
System Capabilities . . . . . . . .
Device Manufacturer Capabilities
Capability-Regeln . . . . . . . . .
Data-Caging-Zugangsregeln . . .
Aufteilung der UID-Bereiche [1] .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
12
13
14
14
15
25
5.1. Testgeräte . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
5.2. Installations- und Deinstallationsdauer . . . . . . . . . . . . . . . . . . . . . .
64
68
xi
Abbildungsverzeichnis
2.1.
2.2.
2.3.
2.4.
2.5.
2.6.
2.7.
Absatzübersicht weltweit . . . . .
Symbian OS Übersicht [2] . . . .
Trusted Computing Platform [1]
Symbian Signed Prozess [3] . . .
Emulator Übersicht [2] . . . . . .
Virtuelle Speicherabbildung . . .
Publish & Subscribe Übersicht [2]
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
6
7
10
16
20
27
30
3.1. Testsystem . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3.2. Vollständiges PSA-System . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
32
40
4.1. Definition der Capability-Regeln . . . . . . . . . . . . . . . . . . . . . . . . .
58
5.1. Verteilung von Symbian v9 . . . . . . . . . . . . . . . . . . . . . . . . . . . .
5.2. Ergebnisse DLL-Regeln . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
66
80
6.1. Symbian Logo für Symbian Signed Anwendungen . . . . . . . . . . . . . . . .
6.2. Symbian Signed Testkriterien [4] . . . . . . . . . . . . . . . . . . . . . . . . .
94
95
7.1. Anfrage an den Loader Server [2] . . . . . . . . . . . . . . . . . . . . . . . . . 109
7.2. Vervollständigung der Anfrage [2] . . . . . . . . . . . . . . . . . . . . . . . . . 110
7.3. MobileSandbox IAT Patching [5] . . . . . . . . . . . . . . . . . . . . . . . . . 111
xiii
Quelltextverzeichnis
4.1. Beispiel
4.2. Beispiel
4.3. Beispiel
4.4. Beispiel
4.5. Beispiel
4.6. Beispiel
4.7. Beispiel
4.8. Beispiel
4.9. Beispiel
4.10. Beispiel
4.11. Beispiel
für einen Data-Caging-Testfall
File Eclipsing . . . . . . . . .
File Overwriting . . . . . . . .
SWInstaller . . . . . . . . . .
Certificate . . . . . . . . . . .
Capabilities . . . . . . . . . .
Integrity . . . . . . . . . . . .
Shared-Data . . . . . . . . . .
IDs . . . . . . . . . . . . . . .
User-Defined . . . . . . . . . .
API . . . . . . . . . . . . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
44
47
48
49
50
51
52
52
53
54
54
6.1. Konfiguration der SWIPolicy . . . . . . . . . . . . . . . . . . . . . . . . . . . 100
xv
1. Einleitung
Im ersten Kapitel dieser Diplomarbeit soll ein grober Überblick der gesamten Arbeit vermittelt werden. Dazu motiviert der erste Abschnitt das Thema, um im nächsten Abschnitt die
Problem- und Fragestellung der vorliegenden Arbeit zu erläutern. In den beiden abschließenden Abschnitten werden der Aufbau und die Schreibkonventionen der gesamten Diplomarbeit
beschrieben.
1.1. Motivation
In der heutigen Zeit sind Mobiltelefone in unserem Leben nicht mehr wegzudenken. Neben
Mobiltelefonen, die nur zum Telefonieren entwickelt wurden, erfreuen sich so genannte Smartphones einer immer größer werdenden Beliebtheit. Die heutigen Smartphones kombinieren das
Mobiltelefon mit verschiedenen Technologien aus dem Kommunikations- und Multimediabereich und stellen diese Funktionalität in den meisten Fällen durch ein offenes Betriebssystem
zur Verfügung. Dabei unterstützen die meisten Smartphones Verbindungsmöglichkeiten über
3G/UMTS, 2.5G (EDGE und GPRS), WiFi (802.11b) sowie Bluetooth und Infrarot. Die neusten Modelle überbieten sich mit den jeweiligen Ausstattungsmerkmalen wie zum Beispiel einer
8-Mega-Pixel-Kamera, integriertem GPS-Empfänger, FM-Transmitter oder DVB-H/T. Diese
Vielzahl an Ausstattungsmerkmalen und der Möglichkeit, weitere Software auf diesen Smartphones zu installieren, weckt nicht nur das Interesse bei den Entwicklern, sondern auch bei
potentiellen Angreifern. Durch die verschiedenen Verbindungsmöglichkeiten, die ein heutiges
Smartphone bietet, können immer und überall Daten ausgetauscht oder zusätzliche Anwendungen installiert werden. Damit die privaten Daten (beispielsweise Kontakte, Nachrichten,
Notizen oder Bilder) nicht ungehindert an potentielle Angreifer gelangen können oder die
Integrität des Mobiltelefons nicht beeinträchtigt wird, existieren teilweise Sicherheitsmechanismen, die das verhindern sollen.
Symbian stellte mit der Einführung ihres Betriebssystems in der Version 9 eine neue Sicherheitsarchitektur vor. Die „Platform Security Architecture“ sollte dabei die Offenheit von
Symbian OS bewahren und gleichzeitig ausreichenden Schutz vor bösartigen Anwendungen
bieten. Jedoch ist jede neue Technologie von Mängeln oder sonstigen Unzulänglichkeiten bei
ihrer Einführung begleitet. Es kann also durchaus in der ersten Version der „Platform Security
Architecture“ vorkommen, dass nicht alle spezifizierten Sicherheitsmerkmale tatsächlich ihre
Funktionsweise gewährleisten. Hierbei könnten verschiedene Symbian Version 9 Mobiltelefone zu unterschiedlichen Verhaltensweisen führen, da unter Umständen die Konfigurationsparameter der Plattform noch nicht ausreichend für die jeweiligen Anforderungen eingestellt
wurden.
1
1. Einleitung
1.2. Problem- und Fragestellung der Diplomarbeit
Mit Einführung der Version 9 von Symbian OS und der damit verbundenen neuen Sicherheitsarchitektur „Platform Security Architecture (PSA)“ hat Symbian nicht nur die Offenheit des
Betriebssystems gewahrt, sondern auch viele bekannte Sicherheitskonzepte aus dem DesktopBereich mit der „PSA“ in Symbian OS eingeführt. Eine neue Sicherheitsarchitektur birgt in
der Einführungsphase immer Risiken und anfängliche Fehler.
Das Hauptziel der Diplomarbeit ist zunächst die Verifikation der Konfiguration der „PSA“.
Dadurch sollte die richtige und spezifizierte Funktionsweise der „PSA“ festgestellt werden.
Damit jedoch die Konfiguration der „PSA“ verifiziert werden kann, müssen die Einstellungsmöglichkeiten erarbeitet werden. Aus diesen Einstellungen können anschließend die Konfigurationsparameter für die „PSA“ abgeleitet werden. Mit diesen Konfigurationsparametern
können die Möglichkeiten zur Konfiguration der „PSA“ gefunden und so sinnvolle Konfigurationen gebildet werden, die dabei helfen sollen die Plattform zu verifizieren. Damit jedoch die
Konfigurationsparameter genutzt werden können um die Funktionalität der „PSA“ zu verifizieren, muss ein entsprechendes Testsystem implementiert werden. Das Testsystem soll dabei
möglichst alle Komponenten der „PSA“ umfassen, damit auch eine möglichst vollständige Analyse der „PSA“ möglich ist. An das Testsystem werden zusätzlich noch zwei Anforderungen
gestellt. Zunächst sollte es mit möglichst wenig Redundanz geschrieben werden. Die zweite
Anforderung richtet sich an die Testfälle, die nur durch die Definition der jeweiligen Tests
automatisch generiert werden sollen. Hierfür sollte das Testsystem eine Konfigurationsdatei
bereitstellen, mit deren Hilfe das Testsystem automatisch Testfälle generieren sollte. Insgesamt soll das Testsystem so flexibel implementiert sein, dass verschiedene Mobiltelefone mit
Symbian Version 9 untersucht, miteinander verglichen und ausgewertet werden können.
1.3. Aufbau der Diplomarbeit
Die Diplomarbeit ist insgesamt in acht Kapitel und einen anschließenden Anhang unterteilt.
In den Grundlagen wird das Wissen vermittelt, das zum Verständnis der darauf folgenden Kapitel benötigt wird. Nach den Grundlagen werden zuerst das Design des Testsystems und die
Parameter sowie Konfigurationsmöglichkeiten, die die Symbian OS „Platform Security Architecture“ bereitstellt, beschrieben. Im nächsten Schritt folgt die Beschreibung der Implementierung des Testsystems sowie der einzelnen Testfälle, die das Testsystem für die Verifikation
der Konfiguration der „PSA“ bereithält. Der letzte Abschnitt in diesem Kapitel schildert die
Definition der jeweiligen Testfälle. Nachdem das Testsystem im dritten Kapitel spezifiziert
und im vierten Kapitel die Implementierung des Testsystems beschrieben wurde, folgen im
fünften Kapitel die Ergebnisse und die Evaluierung dieser. Das darauf folgende Kapitel diskutiert die wesentlichen Bezugspunkte von Symbian OS und deren Bedeutung. Im nächsten
Kapitel werden die Methoden beschrieben, wie Privilegien von Symbian OS Anwendungen
erhöht werden können und welches Gefahrenpotential von diesen Methoden ausgeht. Darüber
hinaus werden die bisherigen Maßnahmen der Mobiltelefonhersteller gegen diese Methoden
erläutert. Der abschließende Teil dieses Abschnitts beschreibt die Möglichkeit, die „MobileSandbox“ auf Symbian OS Version 9 zu übertragen. Das letzte Kapitel zieht ein Fazit dieser
2
1.4. Schreibkonventionen
Diplomarbeit und gibt einen Ausblick auf mögliche Themen, die aufbauend auf dieser Arbeit weiter bearbeitet werden könnten. Dabei wird auch rückblickend auf die Offenheit von
Symbian OS eingegangen.
Im Anhang sind zunächst die Definitionen der Testfälle und die Regeln, die bei der Definition
beachtet werden müssen, aufgeführt. Zusätzlich sind noch die verwendeten SWIPolicies für
die SWInstaller-Tests enthalten. Der abschließende Punkt im Anhang beschreibt den Inhalt
der beigefügten CD.
1.4. Schreibkonventionen
Aufgrund der zahlreichen englischen Ausdrücke in dieser Diplomarbeit und ihrer Verwendung zusammen mit deutschen Ausdrücken soll hier kurz ihre Schreibweise dargelegt werden.
Darüber hinaus beschreibt der Anschnitt auch die allgemeinen Schreibkonventionen dieser
Diplomarbeit. Die nachfolgende Darstellung gibt eine Übersicht der verwendeten Konventionen:
• Ein kursiv dargestellter Ausdruck stellt eine Definition des Ausdrucks dar und wird
anschließend in normaler Schreibweise genutzt.
• Der Schreibmaschinenschrift-Stil eines Ausdrucks symbolisiert dabei die Herkunft des
Ausdrucks aus einer Text- oder Quelltext-Datei.
• Fett dargestellte Ausdrücke stellen in den meisten Fällen eine Hervorhebung des Ausdrucks dar.
• Deutsche Ausdrücke in Anführungszeichen dienen in den meisten Fällen der Hervorhebung des Ausdrucks, wohingegen englische Ausdrücke in Anführungszeichen neue Begrifflichkeiten aus dem englischen Kontext einführen.
• Ausdrücke in Anführungszeichen, durch einen Bindestrich mit anderen Ausdrücken zusammengefügt, beschreiben in den meisten Fällen die Verbindung aus zwei englischen
Begriffen, die in Verbindung mit einem deutschen Begriff nicht durch Bindestriche zusammengeschrieben werden können, sodass die erste genannte Methode den Lesefluss
nicht behindert.
• Zusammengesetzte Ausdrücke mit Bindestrichen aus mehreren Ausdrücken werden verwendet, wenn beispielsweise zwei Begriffe nicht als ein Wort geschrieben werden können,
von der Bedeutung her jedoch zusammengehören.
3
2. Grundlagen
Dieses Kapitel soll die Grundlagen vermitteln, die zum Verständnis dieser Diplomarbeit benötigt werden. Dabei werden neben einer kurzen Einführung in Symbian OS die Eigenschaften
und Merkmale der PSA vorgestellt. Anschließend wird der Symbian OS Emulator eingeführt
und eine kurze Übersicht der Symbian Programmier-Konzepte gegeben.
2.1. Symbian OS
Im ersten Abschnitt der Grundlagen wird Symbian OS kurz vorgestellt. Dabei wird zunächst
die Entstehung und die aktuelle Marktdurchdringung von Symbian OS beschrieben. Anschließend werden neben einer Übersicht die verschiedenen Varianten und Versionen von Symbian
OS präsentiert.
2.1.1. Entstehung und Marktdurchdringung
Die Entstehung von Symbian OS kann in die frühen Achtzigerjahre zu einem SoftwareEntwicklungsunternehmen namens Psion zurückverfolgt werden. Die damaligen Pioniere im
Handheld-Computer-Markt entwickelten nach mehreren erfolgreichen Generationen ihrer Software für Handheld-Geräte ein objektorientiertes Betriebssystem, das EPOC genannt wurde.
EPOC wurde speziell für die besonderen Bedürfnisse mobiler Computer entworfen. Psion erkannte die damalige Nachfrage nach einem mobilen Betriebssystem, das andere Hersteller
für ihre mobilen Produkte hätten lizenzieren können. Ihr EPOC-Betriebssystem schien diese Nachfrage zu erfüllen, sodass viele Mobiltelefonhersteller an EPOC interessiert waren. Im
Juni 1998 entstand schließlich Symbian als gemeinsames Unternehmen der damaligen großen
Mobiltelefonhersteller(Nokia, Ericsson und Motorola) und Psion. In der heutigen Zeit ist Symbian‘s Betriebssystem, besser bekannt als Symbian OS, das dominierende Betriebssystem im
Mobiltelefonmarkt. Eine aktuelle Marktanalyse von Canalys [6] verdeutlicht diese Aussage
und ist in Abbildung 2.1 noch einmal grafisch dargestellt.
2.1.2. Übersicht
Symbian OS wurde von Grund auf für mobile Kommunikationsgeräte geschaffen. Während
andere Betriebssysteme, zum Beispiel Microsoft Windows Mobile für Smartphones, aus bestehenden Betriebssystemen hervorgegangen sind, entstand Symbian OS aus den entgegengesetzten Ansatz. Die frühere Version EPOC beispielsweise, könnte auf Geräten mit weniger als
zwei Megabyte Speicher ausgeführt werden.
5
2. Grundlagen
Abbildung 2.1.: Absatzübersicht weltweit
Symbian OS und der aktuelle Kernel EKA2 (EPOC Kernel Architecture 2 ) sind modular. Die
Betriebssystemfunktionalität wird durch unterschiedliche Bausteine bereitgestellt und nicht
durch eine monolithische Einheit. Beispielsweise werden Dateizugriffe durch einen „File Server“ ausgeführt, während Benutzereingaben und Bildschirmausgaben vom „Window Server“
verarbeitet beziehungsweise dargestellt werden. Abbildung 2.2 verdeutlicht die Modularität
und den Aufbau.
Symbian OS ist ein Single-User-Betriebssystem. Es gibt kein Konzept, das es mehreren
Benutzern ermöglicht, sich auf dem System einzuloggen, wie es zum Beispiel bei Linux oder
Windows der Fall ist.
Symbian OS ist ein Multitasking-Betriebssystem, das die CPU-Zeit den einzelnen Threads
zuteilt. Auf diese Art entsteht beim Benutzer der Eindruck, dass mehrere Anwendungen gleichzeitig ausgeführt werden.
Symbian OS ist ein präemptives Multitasking-Betriebssystem. Der Kernel verlässt sich nicht
darauf, dass ein Thread seine CPU-Zeit von sich aus einem anderen Thread überlässt, sondern
teilt die CPU-Zeit zwangsläufig einem anderen Thread zu.
Symbian OS ist ein prioritätsbasiertes Multitasking-Betriebssystem mit Prioritätsvererbung.
Symbian OS ist ein Echtzeit-Betriebssystem, sodass seine Dienste innerhalb eines bestimmten
Zeitintervalls ausgeführt werden.
Symbian OS kann ROM-basiert sein und eignet sich für offene, leistungsbeschränkte
Umgebungen.
6
2.1. Symbian OS
Abbildung 2.2.: Symbian OS Übersicht [2]
2.1.3. Unterschiedliche Varianten
Es ist schwierig, ein Betriebssystem zu entwickeln, das gemeinsame Kernfähigkeiten besitzt
und auf der anderen Seite eine einheitliche Programmierumgebung für alle Smartphones aufweist. Heutige Smartphones existieren in unterschiedlichen Größen, Formen, Bildschirmgrößen und Eingabemöglichkeiten. Damit die Benutzerschnittstelle diesen Bedürfnissen gerecht
werden kann, muss die sich den jeweiligen Gegebenheiten anpassen. Aus diesem Grund besitzt Symbian eine flexible Architektur, die es den unterschiedlichen Benutzerschnittstellen
erlaubt, auf der Kernfunktionalität von Symbian OS aufzusetzen. Um nun den Mobiltelefonherstellern einen Startpunkt zu geben, entwickelte Symbian einige Referenzplattformen. Diese
Referenzplattformen beinhalten die Symbian OS Kernfunktionalität zusammen mit einer Benutzerschnittstelle, die einen Basis-Smartphone-Typ einer Baugruppe (Bildschirmgröße und
Eingabemöglichkeiten) repräsentiert. Zwei dieser Referenzplattformen sind als Beispiel aufgeführt.
• Nokia S60
Diese auch als „Series 60“ bekannte Version existiert schon in der dritten Version seit
2001. Ihre Hauptmerkmale zeichnen sich durch beschränkte Eingabemöglichkeiten, ein
nummerisches Tastenfeld zur Texteingabe und eine geringe Bildschirmgröße (typisch
240x320 Bildpunkte) aus.
• UIQ
Diese Plattform wird von UIQ Technology lizenziert, entwickelt und gewartet. UIQ ist
im Gegensatz zur S60 für stiftbasierte (zum Beispiel Touchscreens) Smartphones ent-
7
2. Grundlagen
wickelt worden. Mobile Geräte, die auf dieser Plattform aufbauen, besitzen meistens
keine Tastatur. Dieser Nachteil wird aber durch eine virtuelle Tastatur und Handschrifterkennung ausgeglichen. Die Bildschirmgröße variiert zwischen den Modellen, 240x320
Bildpunkte sind jedoch auch hier typisch.
2.1.4. Symbian Versionen
Symbian OS Version 9
Mit der Symbian Version 9 führte Symbian zahlreiche Verbesserungen und Neuerungen ein.
Es ist nicht nur eine neue Version des Betriebssystems, sondern dieser Versionssprung brachte
viele Neuerungen wie eine „Platform Security“, einen Echtzeit-Kernel und neue Entwicklerwerkzeuge. Durch all diese Neuerungen sind frühere Symbian-Anwendungen nicht mit der
aktuellen Version 9 kompatibel. Da Symbian seine Betriebssystem-Software ständig verbessert, sind bereits zwei Versionssprünge zu verzeichnen, die hier kurz dargestellt werden.
• v9.1:
Version 9.1 stellt die erste Iteration der neuen Symbian OS Generation dar und hatte
somit auch viele Neuerungen vorzuweisen. Symbian OS v9.1 ist auf dem Echtzeit-Kernel
EKA2 aufgebaut. Der alte Kernel (EKA1) ist nicht mehr verfügbar. Die einzelnen Neuerungen sind generische „File Server Hooks“, Bluetooth Stereo-Headset Unterstützung,
RTP (Realtime Transport Protocol), generisches QoS, OMA Standards wie „OMA Data
Dynchronisation 1.1“, „OMA Device Management v1.1.2“ und „OMA Client Provisioning
v1.2“. Aber auch neue APIs zu neuen Diensten wie „Publish & Subscribe“, „Message
Queues“, „Shared Buffer I/O“ und ein neuer sicherer „SendAs Server“ sind hinzugekommen. Die Grafik-APIs und Benutzerschnittstellen wurden ebenfalls überarbeitet. Die
„MIDP Java 2.0“ Plattform wurde vollständig in Symbian OS v9.1 integriert.
• v9.2:
Verbesserungen, die seit der Version 9.1 vorgestellt wurden, enthalten Grafik- und Multimediaverbesserungen durch zusätzliche Eingabedatentypen wie das YUV- und YCbCrModell, sowie Verbesserungen in der Kamera-API. Symbian OS v9.2 unterstützt nun
auch die ARMv6-Architektur und neue IP-Telefonie sowie Netzwerkprotokolle wie RTCP, SIP und SDP. Ein weitere Neuerung ist die Einführung von OCSP-basiertem Widerruf von Anwendungen. Das „Device Management“ wurde aktualisiert zu „OMA Data
Synchronisation 1.2“. Die Benutzerschnittstelle wurde verbessert und unterstützt nun
SVGA-Icons. Weitere Sprachunterstützungen wie Vietnamesisch und Hindi ist hinzugekommen.
• v9.3:
Die Version 9.3 brachte für den Entwickler weniger interessante Neuerungen, verglichen
mit früheren Versionen, mit. Diese Version ist primär auf den Gerätehersteller ausgerichtet. Die einzelnen Verbesserungen seit Version 9.2 umfassen IP-Telefonie, insbesondere
Unterstützung für „3GPP R5“, „Short Link“, „PIM“ und Datentransfer. Zusätzlich wurde
der Low-Level-Code verbessert und neue Hardware-Unterstützung hinzugefügt.
8
2.2. Platform Security Architecture
2.2. Platform Security Architecture
In diesem Abschnitt werden die Grundlagen der PSA vorgestellt. Dazu werden zunächst die
Voraussetzungen für den Einsatz von Symbian OS Version 9 beschrieben, um anschließend die
PSA-Konzepte „Unit of Trust“, „Capabilities“ und „Data Caging“ zu präsentieren. Symbian
Signed und die jeweiligen Konzepte hinter der PSA werden in den abschließenden Teilen
erklärt.
2.2.1. Voraussetzungen
Damit Symbian OS Version 9 auf einem Mobiltelefon eingesetzt werden kann, müssen bestimmte Voraussetzungen gegeben sein. Symbian OS benötigt einen 32-Bit-Mikroprozessor,
der im Vergleich zum Energiebedarf, eine hohe Rechenleistung bietet. Die Byte-Anordnung
sollte „Little Endian“ sein und die CPU zudem „Interrupts“ und „Exceptions“ unterstützen.
Des Weiteren sollte die CPU einen „User Mode“ und einen „Supervisor Mode“ bereitstellen.
Typische Taktungen bei aktuellen Mobiltelefonen mit Symbian OS sind 100 - 200 MHz, aber
es werden schon teilweise Geschwindigkeiten von 300 - 400 MHz benötigt.
Die ARM-CPUs erfüllt genau alle oben genannten Voraussetzungen, sodass fast alle Smartphones mit einem ARM-Prozessor ausgestattet sind. ARM verwendet für ihre CPUs die RISCArchitektur und das schon seit ca. 20 Jahren. Aufgrund der Verbreitung der ARM-CPUs,
benötigt Symbian den ARMv5TE-Instruktionssatz oder besser. Eine weitere sehr wichtige
Anforderung ist die „Memory Management Unit“ (MMU), die die Virtualisierung des Speichers erlaubt.
2.2.2. Unit of Trust
Es gibt drei Konzepte, die die Basis der Symbian OS Platform Security darstellen. Der erste
Abschnitt beschäftigt sich mit der Frage, was die Unit of Trust ist. Oder mit anderen Worten, was ist die kleinste Einheit, über die Symbian OS eine Entscheidung hinsichtlich seiner
Vertrauenswürdigkeit treffen kann.
Das Sicherheitssystem braucht die Vertrauenswürdigkeit des Benutzers nicht in Frage zu stellen. Wenn der Benutzer in der Lage, ist das Mobiltelefon zu benutzen, so ist er auch implizit
autorisiert, das zu tun. Symbian sollte jedoch die Vertrauenswürdigkeit der Prozesse, die auf
dem Gerät ausgeführt werden, in Frage stellen. Denn abhängig vom Verhalten des Benutzers
kann dieser zusätzliche Anwendungen installieren, die dann beispielsweise die Funktionen des
Mobiltelefons beeinträchtigen können. Symbians Platform Security Architecture wurde entwickelt, um zu kontrollieren, was ein Prozess tun kann. Ein Prozess kann nur dann seine
Funktionen ausführen, wenn er für diese Funktionen die entsprechenden Privilegien besitzt.
Besitzt ein Prozess nicht die benötigen Privilegien, verweigert Symbian OS die Ausführung
der Funktionen aus dem Grund, dass der Prozess als nicht vertrauenswürdig genug eingestuft
wird.
In Symbian OS besitz ein Prozess mindestens einen Ausführungsthread und seine Ressourcen,
die in physischen Speicherblocks von der MMU in der Hardware verwaltet werden. Der Prozess bildet die Einheit auf der der Speicherschutz auf Hardwareebene angewendet wird. Die
9
2. Grundlagen
Hardware löst einen Prozessorfehler aus, wenn der Prozess versucht, auf einen Adressbereich
zuzugreifen, der nicht in seinem virtuellen Adressbereich liegt. Dieser durch Hardware unterstützte Speicherschutz bildet die Basis des Software-Sicherheitssystems. Symbian OS kann
einem Prozess vertrauen, nicht direkt auf einen anderen virtuellen Adressbereich zuzugreifen.
Die Hardware würde das nicht zu lassen.
Symbian OS stellt eine Trusted Computing Plattform dar. Diese besteht aus der „Trusted
Computing Base (TCB)“, der „Trusted Computing Environment (TCE)“, anderer signierter
Software und dem Rest der Plattform. Grob können die laufenden Prozesse in Symbian OS
in vier Schichten aufgeteilt werden, von komplett vertrauenswürdig bis überhaupt nicht vertrauenswürdig. Abbildung 2.3 verdeutlicht diesen Zusammenhang. Beispielsweise ist Software,
Abbildung 2.3.: Trusted Computing Platform [1]
die sich auf einen schreibgeschützten Speichermedium (typischerweise im ROM) befindet, als
vertrauenswürdig eingestuft, wohingegen zusätzliche Software anhand ihrer digitalen Signatur
beurteilt wird.
TCB
Die Trusted Computing Base oder TCB ist der vertrauenswürdigster Teil von Symbian OS.
Er stellt die niedrigsten Sicherheitsmechanismen zur Verfügung und ist außerdem für die Integrität des gesamten Systems verantwortlich. Die TCB wurde von ihrem Umfang so klein wie
möglich gehalten, sodass nur der „System Kernel“, der „File Server (F32)“ und der „SWInstaller“ (siehe Gliederungspunkt 2.4.1) mit den höchsten Privilegien ausgestattet werden mussten.
Der Kernel verwaltet die Prozesse und die ihnen zugewiesenen Privilegien. Um Prozesse zu
erstellen, muss der „File Server“ den Programmcode des entsprechenden Prozesses laden, sodass der „File Server“ auch in der TCB-Schicht enthalten sein muss. Die Komponenten der
TCB-Schicht wurden sorgfältig geprüft um sicherzustellen, dass sie sich richtig verhalten und
somit auch als vollkommen vertrauenswürdig bezeichnet werden können.
10
2.2. Platform Security Architecture
TCE
Die Trusted Computing Evironment oder TCE besteht aus weiterer vertrauenswürdiger Software von Symbian OS, aber auch von den UI-Plattform Anbietern und den Mobiltelefonherstellern. Dieser Teil der Trusted Computing Platfrom wird immer noch als vertrauenswürdig
angesehen, muss aber nicht mit den höchsten Privilegien ausgeführt werden. Dies führt dazu,
dass der TCE Code etwas weniger vertrauenswürdig als der TCB Code ist. Der TCE-Code
implementiert meistens einen „System Server“-Prozess, der die Integrität des gesamten Systems nicht beeinträchtigen kann. Bei einem Fehler des Servers kann der Kernel den Server neu
starten und den alten Zustand wieder herstellen.
Signierte Software
Mit Hilfe von signierter Software es ist möglich, Komponenten in der TCB oder TCE hinzuzufügen und zu modifizieren. Jedoch nur, wenn die Software durch eine vertrauenswürdige
Zertifizierungsstelle signiert wurde und es dieser Zertifizierungsstelle auch erlaubt ist, die benötigten Privilegien zu gewähren. Signierte Software außerhalb der TCE ist deshalb weniger
vertrauenswürdig als Software innerhalb der TCE.
Unsignierte Software
Bei nicht signierter oder in der Tat signierter Software, die nicht durch eine der vertrauenswürdigen Zertifizierungsstellen signiert wurde, hat das System keine Basis, um die Vertrauenswürdigkeit zu bestimmen. Deshalb wird die Software als nicht vertrauenswürdig behandelt.
Das bedeutet nicht, dass unsignierte Software schlecht oder böse ist, sondern lediglich dass die
Operationen keine Privilegien benötigen und somit keine sicherheitskritischen Konsequenzen
für das System haben.
2.2.3. Capabilities
Das zweite Konzept, das die Symbian Platform Security Architecture untermauert, ist das
Privilegienmodell.
A token [is] usually an unforgeable data value (sometime called a ’ticket’) that
gives the bearer or holder the right to access a system resource. Possesion of the
token is accepted by a system as proof that the holder has been authorized to
access the resource named or indicated by the token. [7]
Eine Capability ist ein Token, das vorhanden sein muss, um Zugang zu System Ressourcen zu
erhalten. System Ressourcen sind in Symbian OS Dienste, die über APIs zur Verfügung gestellt
werden. Unterschiedliche APIs können unterschiedliche Capabilities benötigen, um Zugang zu
beschränkten Diensten zu erhalten. Besitzt ein Prozess die entsprechende Capability, wird er
als vertrauenswürdig angesehen, die Ressourcen, die durch die Capability geschützt werden,
nicht zu missbrauchen. In den vorherigen Abschnitten habe ich das Wort Privilegien benutzt,
um Software zu beschreiben, die zur Ausführung von sensiblen Funktionen autorisiert sein
musste, das auch tun zu dürfen.
11
2. Grundlagen
Capability
LocalServices
Location
NetworkServices
ReadUserData
UserEnvironment
WriteUserData
Tabelle 2.1.: User Capabilities
Gewährte Privilegien
Zugang zu Kurzstreckenverbindungen wie Bluetooth
oder Infrarot. Hierbei sollten keine Kosten entstehen.
Zugang zu standortbezogenen Daten des Telefons.
Zugang
zu
Remote-Diensten
(z.B.
WiFiNetzwerkzugang). Diese Dienste können Kosten
verursachen.
Lesezugang zu vertraulichen Benutzerdaten.
Zugang zu aktuellen Daten des Benutzers und seiner
unmittelbarer Umgebung.
Schreibzugang zu vertraulichen Benutzerdaten.
Platform Security Architecture ist um Capabilities herum gebaut worden, um diese Zugangsprivilegien zu repräsentieren. Ausführbare Dateien in Symbian OS können dabei eine, keine
oder eine Ansammlung von Capabilities besitzen.
Symbian OS definiert insgesamt 20 Capabilities, die mit unterschiedlichen Privilegien ausgestattet sind. Grob können die Capabilities in drei Kategorien unterteilt werden: „User Capabilities“, „System Capabilities“ und „Device Manufacturer Capabilities“. User Capabilities
(Tabelle 2.1) bezeichnen eine kleine Gruppe Capabilities, die für den Mobiltelefonbenutzer bedeutungsvoll sind. Insbesondere schützen die Capabilities die Ressourcen, von denen ausgegangen werden kann, dass der Benutzer sie versteht und sie ihm etwas bedeuten. Auf Grundlage
dieser Informationen ist es auch sinnvoll, dem Benutzer die Entscheidung über das Gewähren dieser Capabilities zu überlassen. System Capabilities (Tabelle 2.2) sind auf der anderen
Seite für den Benutzer weniger aussagekräftig, da diese Capabilities Ressourcen umfassen, die
die Integrität des Gerätes oder sogar des Mobilfunknetzes beeinflussen. Device Manufacturer
Capabilities (Tabelle 2.3) stellen die sensibelsten Capabilities dar, die das System gewähren
kann.
Capabilities sind diskret und orthogonal. Das bedeutet, es gibt keine hierarchische Menge der
Capabilities. Ein Prozess kann somit nicht die TCB Capability erreichen oder irgendeine andere Capability, indem alle anderen Capabilities dem Prozess hinzugefügt werden, bis schließlich
die Ebene der TCB Capability erreicht wird. Stattdessen wird jede geschützte Ressource durch
nur eine spezielle Capability geschützt. Jeder Prozess, der diese Ressource benutzen will, muss
die entsprechende Capability besitzen, auch TCB-Prozesse.
Wenn der Kernel einen Prozess erstellt, liest er die Capabilities aus dem Header der Programmdatei und assoziiert diese Capabilities mit dem Prozess für den Rest seiner Lebensdauer. Der
Kernel legt die Capabilities im Speicher ab, der für User-Mode-Prozesse nicht zugänglich ist.
Zusätzlich stellt der Kernel benutzerseitige APIs zur Verfügung. Diese APIs erlauben benutzerseitigem Code, einen Prozess, der einen Dienst anfordert, zu prüfen, ob er die entsprechende
Menge an Capabilities bereitstellt.
Nachdem eine Anwendung erfolgreich installiert wurde oder bereits im ROM vorhanden war,
kann Symbian OS annehmen, dass die Anwendung hinreichend vertrauenswürdig ist, die deklarierten Capabilities der Anwendung auch zu gewähren. Für eine EXE bedeutet es, dass
der entsprechende Prozess mit den deklarierten Privilegien ausgeführt wird. Im Gegensatz
12
2.2. Platform Security Architecture
Capability
CommDD
DiskAdmin
MultimediaDD
NetworkControl
PowerMgmt
ProtServ
ReadDeviceData
SurroundingsDD
SwEvent
TrustedUI
WriteDeviceData
Tabelle 2.2.: System Capabilities
Gewährte Privilegien
Direkter Zugang zu allen Kommunikationsgerätetreibern.
Zugang zu den administriven Operationen des Dateisystems.
Zugang zu den kritischen Multimediafunktionen, die
Zugang zu verknüpften Gerätetreibern gewähren.
Fähigkeit, Netzwerkprotokolle zu kontrollieren.
Fähigkeit, Prozesse zu beenden, unbenutzte Peripheriegeräte auszuschalten und das Gerät selbst in Standby zu versetzen oder auszuschalten.
Erlaubt einem Serverprozess, sich mit einem geschützten Namen zu registrieren.
Lesezugang
zu
vertraulichen
Telefonnetz-,
Mobiltelefonhersteller- und Geräteeinstellungen.
Zugang zu logischen Gerätetreibern, die Informationen über das Umfeld des Mobiltelefons preisgeben, z.B.
GPS.
Fähigkeit, gedrückte Tasten zu simulieren und TastenEvents von allen anderen Programmen zu erfassen.
Fähigkeit, vertrauenswürdige UI-Sessions zu erstellen.
Schreibzugang zu Einstellungen, die das Verhalten des
Gerätes kontrollieren.
dazu geben die deklarierten Capabilities innerhalb einer DLL nur den Grad ihrer Vertrauenswürdigkeit an. Eine DLL kann in einen anderen Prozess mit weniger Capabilities geladen
werden. Somit kann eine DLL nicht annehmen, dass sie mit den gleichen Capabilities ausgeführt wird, wie sie in ihr definiert wurden, wohingegen eine EXE das sehr wohl annehmen
kann. Daraus folgt die erste Capability-Regel (Tabelle 2.4). Wurden die Capabilities für einen
Prozess schon durch den Kernel bestimmt, so ändern sich die Capabilities nie bis der Prozess
beendet wird. Wenn ein Prozess eine DLL lädt, wird weder seine Capability-Menge verkleinert
noch vergrößert. Das Laden der DLL wird jedoch misslingen, wenn die DLL nicht die Obermenge (oder zumindest die gleiche Menge) der Capabilities des ladenden Prozesses enthält
(Capability-Regel 2).
2.2.4. Data Caging
Das dritte Konzept der Platform Securtiy Architecture ist das Zugangskontrollmodell. Der
Abschnitt gibt eine kurze Übersicht, wie die Integrität und Vertraulichkeit der gespeicherten
Dateien bewahrt wird.
Data Caging wird benutzt, um wichtige Dateien zu schützen. Das können sowohl Systemals auch Benutzerdateien sein. Das System muss sicherstellen, dass der Programmcode nicht
13
2. Grundlagen
Capability
TCB
AllFiles
DRM
Tabelle 2.3.: Device Manufacturer Capabilities
Gewährte Privilegien
Schreibzugang zu ausführbaren Dateien und zum
\resource Verzeichnis.
Lesezugang zum gesamten Dateisystem und Schreibzugang zu den \private Verzeichnissen der anderen
Prozesse.
Zugang zu DRM-geschütztem Inhalt.
Tabelle 2.4.: Capability-Regeln
Regel 1: Jeder Prozess hat eine Menge an Capabilities (definiert durch seine EXE) und
diese Capabilities ändern sich nie während seiner Lebensdauer.
Regel 2: Ein Prozess kann nur eine DLL laden, wenn die DLL selbst vertrauenswürdig ist
und zumindest die Capabilities besitzt die der Prozess auch.
Regel 2b: Eine DLL kann nicht statisch zu einer DLL, die eine kleinere Menge an
Capabilities besitzt als sie selbst, gelinkt werden.
fälschlicherweise korrumpiert wird und unerwünschter Zugang zu systemkritischen oder vertraulichen Daten verhindert wird. Data Caging wird nur dort angewendet, wo es auch wirklich
gebraucht wird. Symbian OS erreicht Data Caging durch spezielle Verzeichnisse, in denen die
darin liegenden Dateien in privaten Bereichen „weggeschlossen“ werden. Es gibt drei spezielle
Hauptverzeichnisse: \sys, \resource und \private. Die Beschränkungen gelten nur für diese
drei Verzeichnisse und deren Unterverzeichnisse. Alle sonstigen Verzeichnisse bleiben öffentlich zugänglich. Der Zugang zu einer Datei ist somit völlig von ihrem Pfad bestimmt, ganz
ungeachtet dessen, auf welchem Laufwerk sich die Datei befindet. Es werden keine explizieten
Zugangskontrolllisten für jede Datei benötigt, um festzustellen, welcher Prozess auf welche
Datei zugreifen darf.
\sys
Nur TCB-Code hat Zugang zum \sys Verzeichnis und seinen Unterverzeichnissen. Im \sys
\bin Verzeichnis werden alle ausführbaren Dateien gespeichert. Auf diese Weise kann sichergestellt werden, dass nur TCB-Software ausführbare Dateien erstellen oder ausführbare Dateien
in den Speicher laden kann. Ausführbare Dateien in irgendeinem anderen Verzeichnis werden
nicht ausgeführt.
\resource
Dieses Verzeichnis ist für schreibgeschützte Ressource-Dateien gedacht. Ressource-Dateien
werden normalerweise nach der Installation nicht mehr verändert. Nur TCB kann in dieses
Verzeichnis schreiben.
\private
Jede EXE-Datei hat ihren eigenen Data-Caging-Bereich als Unterverzeichnis vom \private
14
2.2. Platform Security Architecture
Verzeichnis. Die Unterverzeichnisse werden durch die „SID“ (Abschnitt 2.4.2) der EXE-Datei
identifiziert.
Die beiden Konzepte der Capabilities und des Data Caging sind stark miteinander verbunden
und bieten somit flexible Möglichkeiten, den Zugang zu Programmdaten zu kontrollieren. Wie
aus Tabelle 2.5 entnommen werden kann, gibt es zwei Capabilities, die es Prozessen erlauben,
das normale Data Caging zu umgehen. Die bereits in Anschnitt 2.2.3 vorgestellten Capabilities Tcb und AllFiles ermöglichen Schreibzugang zu ausführbaren und schreibgeschützten
Ressourcen beziehungsweise Lesezugang zum gesamten Dateisystem und Schreibzugang zum
\private Verzeichnis.
Tabelle 2.5.: Data-Caging-Zugangsregeln
Capability wird benötigt zum:
Verzeichnispfad
Lesen
Schreiben
\sys
AllFiles
Tcb
\resource
none
Tcb
\private\hownSIDi none
none
\private\hotherSIDi AllFiles
AllFiles
\hotheri
none
none
2.2.5. Symbian Signed
Symbian Signed bietet ein Zertifizierungsprogramm, das eine formale Verbindung zwischen
der Anwendung und ihrer Herkunft herstellen soll. Symbian Signed liefert die Infrastruktur
und den Prozess, der benötigt wird, um eine Anwendung zu identifizieren und zu verifizieren. Es ist eine sichere Methode, eine Anwendung zu identifizieren und den Entwickler der
Anwendung zu authentifizieren. Weiter definiert Symbian Signed eine Menge an Testkriterien, die das Testen der Anwendungen durch unabhängige Testhäuser und Symbian Signed
ermöglichen soll. Anhand von manipulationssicheren digitalen Zertifikaten kann Symbian Signed sicherstellen, dass die Anwendung nach dem Testen und Signieren nicht mehr verändert
worden ist. Symbian Signed liefert somit eine Basis für vertrauenswürdige Software.
Für das Signieren der Anwendungen stehen drei unterschiedliche Möglichkeiten zur Verfügung:
• Open Signed
Ermöglicht dem Entwickler, seine Anwendung durch ein Developer-Zertifikat zu signieren. Abhängig von einer Publisher-ID ist das Open Signed „On“- beziehungsweise „Offline“ möglich.
• Express Signed
Ermöglicht dem Entwickler, mit einer Publisher-ID Software selbst zu signieren und
diese kommerziell zu vertreiben. Hierbei werden keine unabhängigen Tests benötigt,
solange nicht die sensibelsten Capabilities gebraucht werden.
15
2. Grundlagen
• Certified Signed
Stellt die Hauptoption für die kommerzielle Softwareentwicklung dar. Es werden unabhängige Tests und eine Publisher-ID benötigt. Mit Einverständnis der Mobiltelefonhersteller können hier die sensibelsten Capabilities gewährt werden.
Signaturschemata - Prozess
1. Ein digitales Zertifikat wird durch eine Zertifizierungsstelle (in Symbians Fall VeriSign)
erstellt. Dieses Zertifikat wird als „Symbain Root“-Zertifikat definiert. Dieser Schritt
erfolgt nur einmal.
2. Eine Kopie dieses „Symbian Root“-Zertifikates befindet sich auf dem Mobiltelefon.
3. Ein Entwickler, der seine Anwendung zum Signieren einreichen will, signiert diese mit
seiner „Authenticated Content Signing (ACS) Publisher ID“, die er von einer Zertifizierungsstelle gegen eine nominelle Gebühr erhält.
4. Die Anwendung wird zum Testen eingereicht und anhand der Testkriterien, die benötigt
werden, um eine digitale Signatur zu erhalten, getestet. Besteht die Anwendung alle
Tests, wird die Anwendung zur Signierungsstelle gebracht.
5. Die Signierungsstelle erstellt ein eindeutiges Anwendungszertifikat, das vom „Symbian
Root“-Zertifikat abgeleitet ist und signiert schließlich die Anwendung mit diesem Zertifikat.
Abbildung 2.4.: Symbian Signed Prozess [3]
Testkriterien
Symbian Signed definiert eine Menge an Testkriterien, die hier kurz zusammengefasst sind:
16
2.2. Platform Security Architecture
• Mögliche Namenskollisionen bei DLLs, angemessenes Startverhalten der Anwendungen,
Erstellen von Dateien nur in den erlaubten Bereichen, restlose Deinstallation und erfolgreiche Reinstallation, Anwendung sollte in der „Taskleiste“ zu sehen sein und von
der „Taskleiste“ auch beendet werden können.
• UIDs sollten gültig und korrekt sein und der einreichenden Organisation oder Person gehören. Das Installationspaket sollte eine korrekte und einheitliche Version besitzen, der Zugang zu Plattform/Hersteller-Capabilities sollte regelrecht bewilligt sein.
Die Publisher-ID sollte gültig sein.
• Anwendung sollte ihre Funktionsspezifikation einhalten, darf andere System-Programme
nicht behindern oder System-Events unterdrücken.
• Stresstests mit unterschiedlichen Fehlerbehandlungen durchstehen.
Widerruf einer Anwendung
Der Widerruf einer Anwendung stellt eine letzte Maßnahme dar, eine mögliche Anwendung,
die die Benutzer-, Gerät- und Netzwerksicherheit gefährden kann, zu handhaben. Der Widerruf einer Anwendung geschieht durch den Widerruf des „ContentID“-Zertifikates, mit dem die
Anwendung signiert wurde. Auf diese Art bietet der Widerruf eine letzte Verteidigungsline
und beugt der Verbreitung einer solchen Anwendung vor, sobald sie einmal entdeckt wurde.
Für einen Entwickler, der klar erkennbar nur bösartige Absichten verfolgt, gibt es außerdem die Möglichkeit, die „ACS Publisher ID“ dem Entwickler zu entziehen. Dadurch kann
der Entwickler davon abgehalten werden, weitere Software einzureihen. Wird eine erhebliche
Sicherheitsbedrohung erkannt, kann das Zertifikat durch die Zertifizierungsstelle widerrufen
werden, indem der Status des Zertifikates in der Revocation-Datenbank verändert wird. Wenn
in Zukunft eine Statusanfrage an dieses Zertifikat gestellt wird, kann die signierte Anwendung
von der Installation gehindert werden oder der Benutzer wird informiert, dass sich der Status
der Anwendung verändert hat.
Zu diesem Zweck implementiert Symbian OS das Online Certificate Status Protocol (OCSP)
[8]. Hierfür sendet das Mobiltelefon direkt eine Anfrage an die Revocation-Datenbank der
Zertifizierungsstelle, um eine Bestätigung für den Status der Anwendung zu suchen. Dieser
Check wird gewöhnlich bei der Installation durchgeführt. Seit Symbian OS Version 9.2 kann
der OCSP Check auch manuell zu jeder Zeit durchgeführt werden, um zu überprüfen, ob die
Anwendung nicht seit der Installation widerrufen wurde. Symbian implementiert auch einen
„push“-Mechanismus, der es erlaubt, Benachrichtigungen automatisch zum Mobiltelefon zu
senden, sobald sich der Status der Anwendung ändert.
2.2.6. Konzepte hinter der PSA
Symbian hat eine lange Tradition der Wiederverwendung. Angefangen bei Psion bis hin zum
objektorientierten Entwurf von Symbian OS blieb Symbian diesem Prinzip auch bei der Entwicklung der PSA treu. Es finden sich zahlreiche bereits etablierte und getestete Konzepte in
der PSA-Architektur wieder.
17
2. Grundlagen
Reference Monitor
Das Konzept des Reference Monitor autorisiert Zugangsbeziehungen zwischen Subjekt und
Objekt eines Systems. Der Reference Monitor wurde erstmals in [9] vorgestellt. Danach muss
ein Reference Monitor drei Eigenschaften erfüllen:
• Der Referenzmonitor selbst muss vor Manipulation geschützt sein.
• Der Referenzmonitor muss immer aufgerufen werden.
• Der Referenzmonitor sollte klein genug sein, um Subjekt für Analysen und Tests zu sein,
sodass die Vollständigkeit garantiert werden kann.
Entwurfsprinzipien der Schutzmechanismen
Gemäß [10] gibt es acht Entwurfsprinzipien, die auch Symbian bei dem Entwurf der PSA
herangezogen hat.
1. „Economy of mechanism“
Symbian realisiert dieses Konzept mit der TCB, die so klein wie möglich gehalten wurde,
sodass auch der Quellcode Zeile für Zeile überprüft werden kann.
2. „Fail-safe defaults“
Software hat standardmäßig in Symbian OS keine Privilegien. Erst durch entsprechende Verfahren (z.B. Symbian Signed) können Privilegien vertrauenswürdiger Software
gewährt werden.
3. „Complete mediation“
Dieses Architekturprinzip realisiert Symbian durch das Client/Server-Framework.
4. „Open design“
Symbian OS ist von Grund auf ein offenes Betriebssystem.
5. „Separation of privilege“
Symbian besitzt auch die Fähigkeit, Anwendungen mit mehr als einer Signatur zu fordern um entsprechende Privilegien zu gewähren.
6. „Least privilege“
Wird in Symbian OS durch Kontrolle der Privilegien und das Benutzen verschiedener
Capabilities erreicht.
7. „Least common mechanism“
Das beste Beispiel für dieses Prinzip in Symbian OS sind DLLs. Die DLL-Regeln stellen
sicher, dass ein privilegierter Prozess eine DLL nur dann verwenden kann, wenn die DLL
mindestens die Privilegien besitzt, die der Prozess auch.
8. „Psychological acceptability“
Symbian bietet sicherheitsrelevante Hinweise wenn Software installiert wird und versucht
außerdem auftretende Sicherheitshinweise zur Laufzeit zu minimieren.
18
2.3. Emulator
Capability basierendes Sicherheitsmodell
In [11] wurde ein Mechanismus „Schutz der ausführenden Instanzen vor unbefugtem Zugriff“
vorgestellt. In diesem Paper wurde der Begriff der „Capability Liste“ eingeführt. Demnach
hat jeder Prozess im System eine Capability-Liste, in der festgelegt wird, auf welche geschützten Ressourcen jeder Prozess zugreifen darf und welche Zugangsrechte er besitzt. Symbian
betrachtet die essentiellen Eigenschaften der Capability als ein persistents Attribut eines
Prozesses. Dieses Attribut wird bevor ein Prozess erstellt wird bestimmt und definiert die
vollständigen Zugangsrechte zu geschützten Bereichen.
Architektonische Ziele
Symbian hat sich einige architektonische Ziele für die PSA gesetzt, die hier kurz zusammengefasst sind:
• Sicherstellung der Verständlichkeit
Wenn dem Benutzer das Sicherheitssystem vorlegt wird, sollte er in der Lage sein es zu
verstehen.
• Unterstützung von offenen Mobiltelefonen
Eine erweitere Sicherheitsplattform sollte Dritthersteller nicht davon abhalten, auch
weiterhin interessante Software für Symbian OS herzustellen.
• Schutz der Netzwerks
Die Netzwerkinfrastruktur sollte durch offene Mobiltelefone nicht gefährdet werden.
2.3. Emulator
In diesem Abschnitt wird der Symbian OS Emulator eingeführt. Dafür wird zunächst eine
Übersicht der Emulator-Plattform gegeben, um anschließend die Eigenschaften und Unterschiede des Symbian OS Emulators zu erklären.
2.3.1. Übersicht
Der Symbian OS Emulator wurde in erster Linie für die Entwicklung und das Debugging von
Symbian OS Software entwickelt. Für die meisten Entwicklungszwecke kann der identische
Quellcode sowohl für Symbian OS Mobiltelefone als auch für die Emulatorplattform verwendet
werden. Der Basis-Emulator wird von Symbian geliefert, aber der endgültige Emulator wird
für die gewählte Variante beispielsweise S60 oder UI maßgeschneidert.
Der Emulator ist als Portierung des EKA2-Kernels geschrieben worden. Auf diese Art ist es
möglich, so wenig Windows-APIs wie möglich zu benutzen und dadurch den größtmöglichen
Symbian OS Code zwischen dem Emulator und der Implementierung auf einem realen Gerät
zu verwenden. In Abbildung 2.5 ist der Vergleich zwischen dem Quellcode, der auf dem Emulator und dem Quellcode der auf dem realen Gerät ausgeführt wird, dargestellt. Hier wird
deutlich, dass nur auf der architekturspezifischen Ebene des Nanokernels eine „Win32“-CPU
emuliert wird anstelle einer ARM-CPU oder einer X86-CPU. Tatsächlich bedeutet das, dass
19
2. Grundlagen
der Emulator auf einen anderen Prozessor portiert wurde. Die im Emulator geladenen ImageDateien sind Standard „Win32 PE EXE“-Dateien, mit deren Hilfe sich auch Standard Tools
der Gastplattform zum Debuggen auf Quellcodeebene einsetzen lassen.
Abbildung 2.5.: Emulator Übersicht [2]
2.3.2. Eigenschaften
Die folgenden Punkte geben einen kurzen Überblick über die Eigenschaften des Symbian OS
S60 3rd Emulators:
• Diagnose- und Überwachungswerkzeuge
Die wesentliche Eigenschaft des Emulators besteht darin, den Entwickler bei seinem
Entwicklungsprozess zu unterstützen. Zu diesem Zweck bietet der Emulator zahlreiche
Möglichkeiten, die Funktionsfähigkeit der Anwendung zu untersuchen und zu überwachen. Hier stehen dem Entwickler Diagnosewerkzeuge zur Verfügung, mit denen zum
Beispiel die CPU-Auslastung oder die Speicherbelegung überwacht werden kann. Aber
auch die Unterstützung für das Protokollieren sämtlicher Vorgänge im Emulator und interaktiver Debugger Programme, die mit Hilfe des Emulators ausgeführt werden können.
Um mögliche auftretende Ereignisse wie zum Beispiel einen sehr geringen Batteriestand
besser verarbeiten zu können, bietet der Emulator zahlreiche solcher simulierten Ereignisse auf Abruf.
• Kommunikation
Im Emulator kann eine Vielzahl an Kommunikationsmethoden wie Bluetooth, Infrarot
oder Internetverbindungen über TCP/IP benutzt werden. In der „S60 3rd FP1 Version“
unterstützt der Emulator auch einen „USB Bluetooth Dongle“.
• Verschiedene Einstellmöglichkeiten
20
2.3. Emulator
Der Emulator bietet dem Entwickler nicht nur Diagnose- und Überwachungswerkzeuge,
sondern auch viele Einstellmöglichkeiten. Besonders in Hinblick auf die PSA kann hier
die Sicherheitsprüfung der Capabilities oder sonstigen Plattform-Sicherheitsrichtlinien
ein- beziehungsweise ausgeschaltet werden. Es können aber auch entsprechende Capabilities eingestellt werden, die ohne Prüfung allen Prozessen gewährt werden können.
• Virtuelle Laufwerke
Neben den simulierten ROM und Flash-Laufwerken, die auf entsprechende Verzeichnisse auf der Gastplattform abgebildet werden, können weitere virtuelle Laufwerke dem
Emulator hinzugefügt werden.
2.3.3. Unterschiede
Da es sich bei dem Symbian-Emulator um eine Portierung des Symbian OS Kernels auf eine
Win32-Plattform handelt, gibt es wesentliche Unterschiede zwischen dem Emulator und der
Ausführung auf einem realen Gerät. Die einzelnen Unterschiede sind in den untenstehenden
Punkten kurz zusammengefasst:
• SWInstaller und Zertifikatsprüfung
Der Emulator benötigt keinen „SWInstaller“, der die Installationsdateien an die richtige
Stelle kopiert, sondern die Installationsdateien werden bereits bei der Kompilierung
für die native x86-Plattform in die richtigen Verzeichnisse des Emulators kopiert. Das
Nichtvorhandensein der SWInstallers hat aber zur Folge, dass keine Installationspakete
erstellt und auch nicht signiert werden müssen. Für den Entwicklungsprozess ist es von
Vorteil, nicht immer das Installationspaket signieren zu müssen.
• Dateisystem Unterstützung
Der Emulator kann eine Vielfalt an Dateisystemen und Laufwerkstypen emulieren.
Das beinhaltet ROFS/FAT auf NAND-Flash Speicher, LFFS auf NOR-Flash Speicher,
MMC- und RAM-Laufwerke. All diese Laufwerke werden auf einzelne Dateien im lokalen Windows-Laufwerk abgebildet. Die Leistung und Größe solcher emulierter Laufwerke
kann sich anders verhalten als von der realen Hardware erwartet. Hierbei ist auch zu
beachten, dass die Größe des emulierten Laufwerkes C: nicht beschränkt werden kann.
Jedoch kann die maximale Größe des emulierten RAM-Laufwerkes durch das Schlüsselwort RamDriveMaxSize in der epoc.ini geändert werden.
• Fließkomma-Verhalten
Symbian OS unterstützt die einfache und doppelte Genauigkeit der Fließkommazahlen
nach IEEE-754 und repräsentiert diese Typen durch TReal32 (ein C++ float-Typ) beziehungsweise TReal64 (ein C++ double-Typ). Da der Emulator auf der x86-Plattform
implementiert wurde, unterstützt dieser Fließkommazahlen in Hardware. Die Hardware
der Zielplattform muss nicht unbedingt Fließkommazahlen in Hardware unterstützen,
sodass der Compiler die Berechnung in Software durchführen muss.
21
2. Grundlagen
• Maschinen Wörter
ARM-Prozessoren verwenden eine 32-Bit-RISC-Architektur. Eine Konsequenz dessen
ist, dass 32-Bit-Größen zur 32-Bit-Maschinenwortgrenze ausgerichtet sein müssen. Oder
anderes ausgedrückt, ihre Adresse muss ein Vielfaches von vier sein. Auf dem Emulator
gibt es diese Beschränkung aufgrund der x86-Architektur nicht.
• Speicherbeschränkungen
Standardmäßig emuliert der Emulator ein Gerät mit einer maximalen Heapgröße von 64
Megabyte. Dieser Wert kann aber durch das Schlüsselwort MegabytesOfFreeMemory verändert werden. Die initiale und maximale Heapgröße kann individuell für jeden Prozess
durch das Schlüsselwort epochheapsize in der „MMP-Datei“ angegeben werden. Die
Stackgröße in standardmäßig auf dem realen Gerät auf 8 Kilobyte gesetzt. Im Gegensatz dazu, vergrößert sich die Stackgröße nach Bedarf im Emulator. Auf dem Gerät kann
die Stackgröße durch das Schlüsselwort epocstacksize in der „MMP-Datei“ definiert
werden. Hier besteht jedoch das Problem, dass dieses Schlüsselwort für die Emulator
Plattform nicht unterstützt wird.
• Prozess Emulation
Es gibt keinen Speicherschutz zwischen den emulierten Prozessen. Das bedeutet, dass
ein Prozess beispielsweise durch einen Zeiger-Fehler in einen Adressbereich eines anderen Prozesses schreiben könnte. Im Emulator würde das zur keiner „Exception“ führen,
wohingegen das identische Programmverhalten auf einem realen Gerät zur einer Speicherschutzverletzung führen würde.
• Scheduling
Symbian OS stellt 64 Prioritätlevel für Threads zur Verfügung, während Windows nur
fünf voneinander verschiedene Prioritätslevel innerhalb eines Prozesses bereitstellt. Das
hat dann zur Folge, dass der Emulator keine Echtzeitgarantien bieten kann, wie sie der
EKA2-Kernel auf der Zielhardware bereitstellen kann.
• Timer
1
Die Standard Timer-Genauigkeit von 64
-Sekunden ist für alle Plattformen gleich, den
Emulator eingeschlossen. Ein etwas feinerer Timer auf der Referenzplattform hat eine
Genauigkeit von einer Millisekunde, im Emulator ist aber die Genauigkeit dieser Timer
standardmäßig auf fünf Millisekunden gesetzt. Aber auch hier kann die Genauigkeit in
der epoc.ini angepasst werden.
• USB
Symbian OS bietet eine USB-Client-Unterstützung auf der Referenzplattform, jedoch
steht das dem Emulator nicht zur Verfügung.
22
2.4. Programming
2.4. Programming
Der abschließende Abschnitt der Grundlagen beschreibt den Systemaufbau und die ProgrammierKonzepte von Symbian OS. Dabei werden zunächst der SWInstaller und das Installationspaket
mit den entsprechenden Installationsregeln näher beschrieben. Anschließend wird die Speicherverwaltung in Symbian OS skizziert und der Kernel kurz vorgestellt. Den abschließenden Teil
bilden die Kommunikationsarchitektur und das DLL-Konzept.
2.4.1. SWInstaller
Der native Software Installer ist eine Symbian OS Komponente, die die Installation von AddOn Software-Paketen verwaltet. Der Software Installer ist zusätzlich für die folgenden Punkte
verantwortlich:
• Validierung und Installation von Software-Paketen (SIS-Dateien) auf dem Mobiltelefon.
• Validierung der Software, die in vorinstallierter Form auf einer Speicherkarte bereitgestellt wird.
• Verwaltung der Aktualisierung und Deinstallation vorhandener Software.
• Bereitstellung eines Paket-Managements für den Rest der Plattform.
Der Software Installer als Teil der TCB kann selbst privilegierte Operationen ausführen, um
beispielsweise Dateien in die geschützten Bereiche zu kopieren.
2.4.2. Installationspaket(SIS-Datei)
Update-Typen
Symbian OS bietet verschiedene Möglichkeiten, eine vorhandene Anwendung zu aktualisieren
oder diese neu zu installieren:
• Standard Upgrade (SA)
Das Standard Upgrade installiert das gleiche Paket erneut. Während des Upgrades wird
das originale Paket gelöscht und durch das neue ersetzt. Es wird jedoch eine neue Versionsnummer für das Installationspaket benötigt.
• Partial Upgrade (PU)
Bei diesem Update Typ werden nur die benötigten Dateien modifiziert oder neue Dateien hinzugefügt. Auch hier wird eine neue Versionsnummer benötigt. Während der
Deinstallation wird das gesamte Paket gelöscht, eine vorherige Version kann nicht wiederhergestellt werden.
• SIS Patch (SP)
Dieser Update Typ unterstützt nur das Hinzufügen neuer Dateien. Jedoch dürfen die
neuen Dateien nicht in Konflikt mit bereits vorhandenen Dateien stehen. Ein SIS Patch
kann nachträglich identifiziert und somit auch wieder deinstalliert werden.
23
2. Grundlagen
• Preinstalled Application (PA)
Preinstalled Application ist kein Update-Typ, sondern bezeichnet Anwendungen, deren
Programmdaten und ausführbare Dateien sich bereits in den Zielverzeichnissen auf der
Speicherkarte befinden. Beim Einlegen der Speicherkarte in das Mobiltelefon wird die
Anwendung automatisch installiert.
File Eclipsing
Eine Eclipsing-Situation kann genau dann auftreten, wenn der gleiche Pfad und die gleiche
Datei auf zwei oder mehr Laufwerken vorhanden sind. Denn in Symbian OS sucht der „Loader“
eine Datei in umgekehrter alphabetischer Reihenfolge von Y: zu A: und am Ende Z:, bis er den
richtigen Dateinamen findet. In der Praxis wird der SWInstaller diese Möglichkeiten erkennen
und durch folgende Eclipsing-Regeln versuchen, es zu verhindern:
• Wenn ein vertrauenswürdiges Paket versucht eine Datei zu installieren, die eine EclipsingSituation mit einer Datei eines anderen nicht vertrauenswürdigen Pakets hervorruft,
kann der Benutzer gefragt werden, ob die Datei des nicht vertrauenswürdigen Pakets
gelöscht werden soll.
• Wenn ein Versuch unternommen wird eine Eclipsing-Situation im ROM herzustellen,
wird der Versuch misslingen, außer es gibt eine verknüpfte „SIS-Stub-Datei“ im ROM,
die der SWInstaller nutzen kann, um die Ersatzdatei als originale Update-Datei zu
identifizieren.
File Overwriting
Das Überschreiben vorhandener Dateien ist weder absichtlich noch zufällig oder in sonstiger
Art erlaubt. Aber es gibt hier auch zwei Ausnahmen:
• Wenn es sich um einen Update-Typ wie in Abschnitt 2.4.2 handelt, wird das Überschreiben erlaubt.
• Versucht ein vertrauenswürdiges Paket eine Datei eines nicht vertrauenswürdigen Pakets
zu überschreiben, so kann abhängig von der Konfiguration des Mobiltelefonherstellers
der Benutzer gefragt werden, ob die Datei des nicht vertrauenswürdigen Pakets entfernt
werden soll.
Tritt bei der Installation keine dieser Bedingungen ein, kann die Installation nicht fortgeführt werden. Die Benutzerschnittstelle sollte in diesem Fall einen Konflikt melden und das
blockierende Paket angeben.
IDs
Eine UID ist eine vorzeichenbehaftete 32-Bit-Nummer, die von Symbian vergeben wird. In
Symbian gibt es mehrere UIDs, die unterschiedlichen Zwecken dienen:
24
2.4. Programming
• SID
SID oder Secure ID identifiziert einen Prozess zur Laufzeit eindeutig. Die SID dient
außerdem der Kontrolle, um Zugang zu geschützen Ressourcen (z.B. den privaten Verzeichnissen) zu bekommen. Weiter werden die SIDs in zwei Bereiche unterteilt, einen
geschützten 0x00000000-0x7FFFFFFF und einen ungeschützten Bereich 0x800000000xFFFFFFFF. Eine detaillierte Aufteilung der UID-Bereiche ist in Tabelle 2.6 gegeben.
• VID
Der Vendor Identifier ist ein weiteres Attribut, um den Zugang zu geschützten Ressourcen zu kontrollieren. Die VID muss nicht eindeutig sein und eine EXE benötigt nicht
unbedingt eine VID.
• UID1
Systemweiter Bezeichner, der zwischen EXEs (KExecutableImageUid = 0x1000007a)
und DLLs (KDynamic- LibraryUid = 0x10000079) unterscheidet. Wird durch die BuildTools automatisch erstellt.
• UID2
Repräsentiert die Interface-Definition, die mit der ausführbaren Datei übereinstimmt
(z.B. KUidApp = 0x100039CE).
• UID3
Identifiziert eine Komponente eindeutig. Um sicherzustellen, dass jede ausführbare Datei
eine unterscheidbare und eindeutige UID bekommt, verwaltet Symbian eine zentrale
Datenbank zur Vergabe der UIDs. Ist die SID nicht spezifiziert, wird die UID3 benutzt.
• pUID
Die Package UID ist im Wesentlichen der eindeutige Bezeichner für das SIS-Installationspaket und wird in der „Paketdatei“ spezifiziert.
Tabelle 2.6.: Aufteilung der UID-Bereiche [1]
UID-Bereich
Vorgesehene Verwendung
0x00000000
KNullUID
0x00000001 - 0x0FFFFFFF Reserviert für zukünftigen Gebrauch
0x20000000 - 0x2FFFFFFF Geschützter UID/SID-Bereich ab Version 9
0x30000000 - 0x6FFFFFFF Reserviert für zukünftigen Gebrauch
0x70000000 - 0x7FFFFFFF Vendor IDs (VIDs)
0x80000000 - 0x9FFFFFFF Reserviert für zukünftigen Gebrauch
0xA0000000 - 0xAFFFFFFF Nicht geschützter UID/SID-Bereich ab Version 9
0xB0000000 - 0xE0FFFFFF Reserviert für zukünftigen Gebrauch
0xE1000000 - 0xEFFFFFFF Neuer Testbereich ab Version 9
0xF0000000 - 0xFFFFFFFF Alter UID-Kompatibilitätsbereich
25
2. Grundlagen
2.4.3. Speicherverwaltung
MMU
Symbian OS setzt für die Platform Security eine MMU voraus. Mit Hilfe der MMU ist es der
System-Software möglich, virtuelle Adressen flexibel auf physische Adressen abzubilden. Zusätzlich zur Adressübersetzung besitzt die MMU die Fähigkeit, Speicherregionen von Zugriffen
durch Software mit unzureichenden Privilegien zu schützen.
Chunks
Symbian OS benutzt Chunks, um fortlaufende Regionen im virtuellen Speicher zu repräsentieren. Die Größe eines Chunks ist variabel.
Prozess im Speicher
Wenn ein Prozess erstellt wird, erzeugt Symbian OS mindestens die folgenden Chunks für
diesen Prozess:
Statische Daten und Stack Chunk Beschreibt den Chunk, indem sich der Stack sowie die
statischen Daten für den Prozess und all seine Threads befinden.
Heaps Chunk(s) In diesem Chunk wird der Heap gespeichert. Für jeden Thread kann es einen
Heap Chunk geben. Heap Chunks können zwischen allen Threads gemeinsam genutzt
werden.
Code Chunk Der Code Chunk enthält eine Kopie des Codes und existiert nur einmal im
Speicher. Alle Instanzen des Prozesses benutzen diesen Code Chunk untereinander. Anwendungen, die sich im ROM des Mobiltelefons befinden, werden auch an dieser Stelle
ausgeführt, ohne den Code in den Code Chunk zu kopieren.
Speicherabbildung
Die Basisabbildung des virtuellen Speichers, wie sie in Symbian OS benutzt wird, ist in Abbildung 2.6 dargestellt. Die beiden interessanten Bereiche sind die „home area“ und die „run area“.
Im home area Bereich werden die Daten-Chunks gehalten wenn ein Prozess gestartet wurde,
der aber zurzeit nicht aktiv ist. Der home area Bereich ist ein geschützter Speicherbereich,
in dem nur der Kernel lesen und schreiben kann. Ist ein Thread zur Ausführung bereit, so
wird der Daten-Chunk, der mit diesem Prozess verknüpft ist, von der home area im virtuellen
Speicher in die run area mit Hilfe der MMU verschoben. Danach kann der Thread ausgeführt
werden. Im Gegensatz dazu werden Code Chunks nie in die run area verschoben. Zum einen
sind keine separaten Codekopien für jede Prozessinstanz vorhanden und zum anderen kann
der Code von seinem Bereich in der home area ausgeführt werden.
26
2.4. Programming
Abbildung 2.6.: Virtuelle Speicherabbildung
Schutz der Prozesse voreinander
„User Mode“-Programme können nur auf die run area (plus die Code Chunks) zugreifen. Auf
den Rest des Speichers kann nur im privilegierten Modus der CPU zugegriffen werden, also nur
der Kernel, die Gerätetreiber und andere ausgewählte OEM-Komponenten können auf diesen
Teil des Speichers zugreifen. Das bedeutet, dass ein User-Prozess keinen direkten Zugang zu
Daten eines anderen Prozesses hat. Darüber hinaus hat ein User-Prozess keinen Zugang zu
Hardware-Geräten oder CPU-Datenstrukturen wie der MMU-Seitentabelle. Die run area kann
auch als „Sandbox“ bezeichnet werden, da die Prozesse in einem isolierten Bereich ausgeführt
werden.
2.4.4. Kernel
Der Symbian OS Kernel besteht aus einer Menge an ausführbaren Dateien und Daten, die im
privilegierten Modus der CPU ausgeführt werden. Der Kernel verarbeitet das Erstellen und
Scheduling von Threads und Prozessen. Er verwaltet die Kommunikation zwischen Threads
und Prozessen mit Objekten wie Mutexen und Semaphoren genauso wie die Vermittlung von
Daten zwischen den einzelnen Prozessen. Zudem verwaltet der Kernel den gesamten Systemspeicher und dient als Schnittstelle zur Geräte-Hardware.
Der Symbian Kernel beinhaltet als Teil seiner Architektur einen Nanokernel. Obwohl der Nanokernel nur einen geringen Teil des Kernels ausmacht, bietet er Basisdienste wie einfache
„Supervisor Mode“-Threads zusammen mit ihren Scheduling- und Synchronisationsoperationen. Der Nanokernel verarbeitet auch die initialen System-Interrupts und beinhaltet andere
Mechanismen, um sicherzustellen, dass das System ein vorhersagbares Antwortverhalten bietet.
27
2. Grundlagen
EKA2 und EKA1
Symbian OS führte EKA2 (EPCO Kernel Architecture 2) mit der Version 8.1b ein und mittlerweile wird EKA2 in allen Symbian Version 9 basierenden (S60 3rd Edition und UIQ3)
Mobiltelefonen benutzt. Eine erhebliche Verbesserung in EKA2 ist die Fähigkeit, Symbian
OS auf Mobiltelefonen mit nur einem Prozessor auszuführen. Das wurde dadurch erreicht,
dass in EKA2 eine Echtzeitfähigkeit implementiert wurde, die es sowohl der integrierten „Radio Software“ als auch den Anwendungen erlaubt, den gleichen Prozessor nutzen zu können.
2.4.5. Kommunikationsarchitektur
Client/Server
Symbian OS baut eine Vielzahl seiner Funktionalität auf der Client/Server-Architektur auf.
Im Wesentlichen stellt ein Server nur die Methoden bereit, um Clients Zugang zu gemeinsamen Ressourcen oder sonstigen Funktionalitäten zu gewähren. Dabei wartet er auf Befehle
vom Client, führt die damit verbundenen Dienste aus, gibt die Resultate an den Client wieder
zurück und wartet auf neue Anweisungen. Ein Server hat normalerweise keine grafische Benutzeroberfläche. In den meisten Fällen wird ein Server in einem eigenen Prozess ausgeführt,
um so mehr Schutz und Modularität zu gewährleisten. Viele Server bieten eine client-seitige
Bibliothek an, um das Client/Server-Protokoll zu kapseln.
Ein Client-Programm benutzt einen Server durch eine client-seitige Implementierungsklasse. Dabei werden Funktionen des Servers über Methoden der Client-Klasse aufgerufen. Jede
Methode sendet eine passende Anweisung an den Server und empfängt die Ergebnisse der
Anweisung, um sie der aufrufenden Methode zu übergeben. Die Client-Klasse ist auch für den
Aufbau der Session mit dem entsprechenden Server verantwortlich.
Das Client/Server-Konzept bietet aber auch durch die PSA zahlreiche Sicherheitsmechanismen.
File Handle
Symbian OS besitzt die Möglichkeit, vorübergehend eine Datei gemeinsam mit einem anderen Prozess unter kontrollierten Bedingungen zu nutzen. Der Kernel bietet grundlegende
Unterstützung für das gemeinsame Nutzen von Handles über Prozessgrenzen hinaus. Der „File
Server“ baut darauf auf:
• Der öffnende Prozess öffnet eine Datei in einem Modus, der von dem empfangenden
Prozess unter normalen Bedingungen nicht verändert werden kann.
• Der empfangende Prozess greift über das erhaltene Handle auf die Datei zu, kann aber
nicht auf das private Verzeichnis der gemeinsam genutzten Datei zugreifen.
• Der öffnende Prozess teilt sich eine „File Server Session“ mit dem empfangenden Prozess.
• Die Aufhebung der gemeinsamen Nutzung der Datei ist nicht möglich.
28
2.4. Programming
File Handles sind keine Handles im Sinne von Referenzen zu Kernelobjekten, sondern eindeutige Bezeichner zu einer offenen Datei innerhalb einer „File Server Session“.
Speicher Chunks
Symbian OS unterstützt auch gemeinsam genutzte Speicherregionen, auf die mehrere Prozesse
direkt zugreifen können. Diese gemeinsam genutzten Regionen werden als Speicher Chunks
bezeichnet. Damit ein Speicher Chunk gemeinsam mit anderen Prozessen genutzt werden
kann, muss dieser als globaler Chunk erstellt werden. Jeder andere Prozess im System kann
diesem Speicher Chunk auslesen oder auch beschreiben, wenn er den Namen des Chunks
kennt. Zusätzlich zu seinen Namen muss noch die Größe im physischen RAM des Chunks
angegeben werden und der virtuelle Speicher, der reserviert werden muss. Dabei kann der
virtuelle Speicher größer sein als die tatsächliche Größe im physischen RAM des Chunks.
Wenn die letzte Referenz zu einem globalen Chunk geschlossen wurde, wird der globale Chunk
automatisch gelöscht. Ein etwas sicherer Weg, globale Chunks zwischen Prozessen zu benutzen,
ist, die Chunks ohne einen Namen zu erstellen und über ihre Handles zu referenzieren. Auf
diese Weise können die Chunks nicht mehr gefunden und somit auch nicht durch andere
Prozesse benutzt werden.
Publish & Subscribe
Publish & Subscribe wurde in Symbian Version 9 eingeführt. Es erlaubt das Erstellen, Abfragen
und Überwachen von systemweiten Variablen. Zudem bietet es einen neuen IPC-Mechanismus
für „Peer-to-Peer“-Kommunikation zwischen Threads. Die systemweiten Variablen werden in
diesem Zusammenhang Properties genannt. Der Mechanismus besteht aus drei Komponenten,
die in Abbildung 2.7 dargestellt sind:
Properties definieren entweder einen einzigen 32-Bit-Datenwert oder eine variable Menge an
Bytes, die durch einen 64-Bit-Integer identifiziert wird.
Publishers sind Threads, die eine Property definieren und aktualisieren.
Subscribers sind Threads, die den Wert der Property abfragen und auf mögliche Veränderungen der Property warten.
Publish & Subscribe liefert einen Laufzeit-Data-Cage, in den jeder Prozess seine Properties
einstellen kann, der von Manipulation oder „Denial of Service“ geschützt ist. Unter bestimmten
Umständen bietet Publish & Subcribe begrenzte Ausführungszeiten für kritische Anwendungen, die Echtzeitgarantien benötigen.
Wenn ein Prozess eine Property definiert, wird sie in einer Kategorie, die der SID des Prozesses entspricht, gespeichert. Kein anderer Prozess kann eine Property in diesem Schlüsselraum definieren und somit auch nicht manipulieren. Als Nebeneffekt entsteht der beschriebene
Laufzeit-Data-Cage. Zum Zeitpunkt der Definition der Property muss der Prozess auch eine
Lese- und Schreib-Policy bereitstellen. Mit diesen Lese- und Schreib-Policys kann der Zugriff
auf die Property mit bestimmten SIDs, VIDs oder mit den entsprechenden Capabilities beschränkt werden. Eine Property existiert solange, bis das Mobiltelefon ausgeschaltet wird oder
bis der Prozess, der die Property definiert hat, sie löscht.
29
2. Grundlagen
Abbildung 2.7.: Publish & Subscribe Übersicht [2]
2.4.6. DLL
Eine DLL (Dynamic Link Library) enthält Code und Daten, die von mehr als einem Prozess
zur gleichen Zeit benutzt werden können. Die DLL wird erst in den Speicher geladen, wenn sie
auch tatsächlich gebraucht wird. Dadurch kann die Speicherausnutzung optimiert werden.
Statische DLL
Statische DLL sind traditionelle Bibliotheken, die zahlreiche Klassen und Funktionen enthalten. Die Funktionalität zu aufrufenden Prozessen wird durch eine Reihe von Exportfunktionen
zur Verfügung gestellt. Jedoch besitzt eine statische DLL eine Einschränkung, sie kann keine beschreibbaren statischen Daten enthalten. Eine statische DLL wird automatisch in den
Speicher geladen, wenn ein Programm, das die DLL benutzt, gestartet wird. Sie wird auch
automatisch wieder entladen, wenn kein anderer Prozess diese DLL mehr benötigt. Wenn eine neue Version einer bereits geladenen DLL installiert wird, so wird die alte DLL solange
benutzt, bis die DLL aus dem Speicher entladen wird.
Polymorphe DLL
Eine polymorphe DLL implementiert ein abstraktes Interface, das oft separat definiert wird,
beispielsweise durch ein „Framework“. Polymorphe DLL haben eine einzige Einsprungsfunktion, die als „gate“ oder „factory“ bezeichnet wird. Diese Einsprungsfunktion instanziiert die
konkrete Klasse, die wiederum das Interface implementiert. Die Interface-Funktionen sind
virtuell. Sie werden nicht exportiert, sondern von der virtuellen Funktionstabelle durch einen
Zeiger zum Basisklassen-Interface aufgerufen. Polymorphe DLL werden häufig verwendet,
um eine Reihe verschiedener Implementierungen eines einheitlichen Interfaces bereitzustellen.
Dieser DLL-Typ wird oft auch als „Plug-in“ bezeichnet.
30
3. Design und Spezifizierung
Im ersten Kapitel habe ich die Problemstellung dieser Arbeit beschrieben. Dieses Kapitel zeigt
nun, wie ein solches System spezifiziert werden muss. Das Ziel dieser Arbeit ist, wie in Kapitel
1.2 beschrieben, die Implementierung eines Testsystems, das mit möglichst wenig Redundanz
alle Komponenten der PSA untersucht. Dieser Satz beinhaltet schon implizit die folgenden
Abschnitte. Was soll das Testsystem umfassen? Wie kann das mit wenig Redundanz erreicht
und können überhaupt alle Komponenten der PSA getestet werden? Bei der Frage nach dem
Testsystem müssen zunächst die Anforderungen an das Testsystem definiert und die zur Verfügung stehenden Parameter für das Testsystem erläutert werden. Anhand der zur Verfügung
stehenden Parameter kann die Frage nach der Redundanz der Testfälle beantwortet werden.
Die Frage nach der Vollständigkeit aller Komponenten der PSA kann mit der Gegenüberstellung der theoretisch testbaren Komponenten und der Komponenten, die das Testsystem
definiert, beantwortet werden.
3.1. Verifikation der Konfiguration
Die Grundlagen haben gezeigt, dass die PSA aus wesentlich mehr Komponenten besteht, als
nur der Implementierung auf dem Mobiltelefon. Angefangen bei den Grundlagen der PSA,
gibt es bereits dort Unterschiede in den Versionsstufen von Symbian OS Version 9. Das bedeutet, schon in der frühen Entwicklungsphase muss dieser Parameter in Betracht gezogen
werden. Das Testsystem muss die Fähigkeiten besitzen, mit den unterschiedlichen Symbian Versionen umgehen zu können und zu jeder Version entsprechende Testfälle generieren.
Weitere Aufgaben stellen für das Testsystem die Plattformen dar. Wie in den Grundlagen
beschrieben, existiert neben der Mobiltelefon-Plattform noch der Symbian OS Emulator. Für
jede Symbian Version 9 steht ein Emulator zur Verfügung. Der Emulator kann deshalb als
„Referenzimplementierung“ für die jeweilige Symbian OS Version 9 gesehen werden, da die
Implementierung in dieser Form noch durch keinen Mobiltelefonhersteller konfiguriert wurde.
Das Testsystem muss die verschiedenen Plattformen als Parameter verarbeiten können. Einen
anderen Parameter, neben den eigentlichen PSA-Tests, stellt das Zertifizierungsprogramm
von Symbian Signed dar. Hierbei stehen dem Entwickler zahlreiche Möglichkeiten zur Verfügung, um das fertige Programm zu signieren. Damit das Testsystem mit den unterschiedlichen
Zertifikaten umgehen kann, muss es die Möglichkeit besitzen, diese Parameter in das System
einzubeziehen. Schon anhand dieser ersten drei Punkte wird die Notwendigkeit einer zentralen
Konfiguration des Testsystems deutlich. Aus diesem Grund, auch für eine detaillierte Definition der einzelnen Testfälle, eignet sich eine Konfigurationsdatei für das Testsystem. Die
Datei soll dabei einfach zu erstellen sein und so flexibel gehalten werden, dass sich auch leicht
weitere Testfälle definieren lassen können.
31
3. Design und Spezifizierung
3.1.1. Testsystemaufbau
Die Idee für ein solches Testsystem besteht nun darin, die einzelnen Aufgabenbereiche von
einander zu trennen und das Testsystem durch eine Konfigurationsdatei spezifizieren zu können. Weiter soll das Testsystem, basierend auf der Definition in der Konfigurationsdatei, die
einzelnen Testfälle automatisch generieren. Die Testfälle sollen dabei so zusammengebaut werden, dass sie mit wenig Redundanz erstellt werden könnten. Um das zu bewerkstelligen, ist
das System in drei Module geteilt, einen „Intelligent Code-Builder“, einen „Package-Creator“
und einen „Emu-Builder“. Diese drei Bausteine bilden das Testsystem und sind in Abbildung
3.1 grafisch dargestellt. Die Aufgabe des Intelligent Code-Builder besteht in erster Linie in
der Erstellung des Quellcodes für die Testfälle. Die Testfälle sollen dabei automatisch und
abhängig von der Spezifizierung in der Konfigurationsdatei generiert werden. Der daraus resultierende Quellcode ist gleichzeitig die Eingabe für den „Package-Creator“ beziehungsweise
für den „Emu-Builder“. Wobei hier abhängig von der gewählten Plattform, wahlweise der
„Package-Creator“ oder der „Emu-Builder“ zum Einsatz kommt. Sollen Testfälle für das Mobiltelefon und nicht für den Emulator erstellt werden, wird der Package-Creator verwendet.
Dieser ist für die Kompilierung der Testfälle für das gewählte SDK zuständig. Um jedoch
die Testfälle auf dem Mobiltelefon ausführen zu können, muss der Package-Creator zunächst
eine „Paketdatei“ erstellen. Mit Hilfe der Paketdatei ist es dem Package-Creator möglich, das
Installationspaket aus der Definition der Paketdatei zu erstellen. Im letzten Schritt kann der
Package-Creator dann schließlich das fertige Installationspaket signieren und so für die Installation bereitstellen. Wird hingegen der Emulator als Ziel-Testplattform gewählt, kommt der
Emu-Builder zum Einsatz. Die Aufgabe der Emu-Builders ist wesentlich einfacher als die des
Package-Creators, denn er muss nur den vom Intelligent Code-Builder generierten Quellcode
für die richtige Version kompilieren. Damit der Testfall auch ausgeführt werden kann, muss
der Emu-Builder die kompilierten Dateien in die entsprechenden Verzeichnisse des Emulators
kopieren.
Abbildung 3.1.: Testsystem
32
3.1. Verifikation der Konfiguration
3.1.2. Testbereiche
Nachdem die grobe Architektur des Testsystems eingeführt wurde, müssen nun die einzelnen Testbereiche identifiziert und die daraus resultierenden Parameter gefunden werden. Das
Testsystem sollte auf die Frage, ob die Eigenschaften und Funktionen der PSA korrekt funktionieren, eine Antwort liefern können. In diesem Zusammenhang bezeichnet ein Testbereich
eine Komponente beziehungsweise ein Bestandteil von Symbian OS oder der PSA. Ein Parameter bezeichnet hier eine Eigenschaft oder auch ein Merkmal des spezifischen Testbereichs.
Im Einzelnen werden die folgenden Testbereiche unterschieden.
Certificate
Einen zentralen Punkt in der PSA-Architektur, wie auch schon in Abschnitt 2.4.1 dargestellt,
stellt der Symbian OS Software Installer dar. Der SWInstaller, wie der Symbian Software
Installer noch genannt wird, ist für die Installation neuer und Aktualisierung vorhandener
Anwendungen zuständig sowie die Verifizierung der Installationspakete und deren Inhalt. Aus
dieser wichtigen Rolle ergeben sich die ersten Testbereiche. Die Fragestellungen sind dabei,
was kann alles installiert und während der Installation ausgeführt werden. Die Frage nach dem
was installiert werden kann hängt stark von der Signierung und den benutzten Capabilities
ab. Anhand der benötigten Zertifikate zur Signierung und der benutzten Capabilities der
Anwendungen kann der erste Testbereich Zertifikate identifiziert werden. Darin kann überprüft
werden, wie das Installationspaket signiert sein muss, um die entsprechenden Capabilities
benutzen zu können. Dabei kann auch überprüft werden, ob sich die verschiedenen CapabilityGruppen (User Capabilities, System Capabilities, Device Manufacturer Capabilities) mit den
ihnen zugewiesenen Zertifikaten installieren lassen, womit sich die Funktionsweise zwischen
Capabilities und benötigten Zertifikaten verifizieren lässt.
SWInstaller
Die Frage, was alles während der Installation ausgeführt werden kann, muss in einem anderen Testbereich beantwortet werden. Für diesen Zweck habe ich den SWInstaller-Testbereich
erstellt. Der SWInstaller bietet die Möglichkeit, Dateien während der Installation mit ihren
spezifischen Anwendungen durch einen „MIME-Type“ zu verknüpfen oder ausführbare Dateien direkt zu starten. Diese Funktionen sind aber wiederum von der Vertrauenswürdigkeit der
Installationspakete abhängig, also dem Zertifikat, mit dem die Anwendung signiert wurde.
Die Parameter hier sind somit MIME-Type, Datei und Zertifikat. Damit der SWInstaller die
Dateien des Installationspaketes an die entsprechenden Stellen kopieren kann, ist der SWInstaller Teil der „Unit of Trust“ (Abschnitt 2.2.2) und besitzt die dafür benötigen Capabilities.
Diese Eigenschaft kann sich das Testsystem zu Nutze machen und versuchen, ausführbare
Dateien oder sonstige Dateien in geschützte Verzeichnisse zu kopieren. Beispielsweise könnte
dadurch eine bösartige Anwendung zusammen mit einer anderen nicht unbedingt bösartigen
Software installiert werden.
33
3. Design und Spezifizierung
IDs
Symbian OS unterstützt eine Vielzahl an IDs (Abschnitt 2.4.2), die auch der SWInstaller
während der Installation überprüfen muss. IDs sind mit unterschiedlichen Funktionen und
Merkmalen verknüpft. Die einzelnen UIDs sind in verschiedene UID-Bereiche (siehe Tabelle
2.6) unterteilt. Abhängig vom verwendeten UID-Bereich wird ein vertrauenswürdiges Zertifikat benötigt. Um die korrekte Funktionsweise der Anwendungen im Zusammenhang mit den
verschiedenen IDs zu gewährleisten, kann hier ein weiterer Testbereich IDs identifiziert werden. Die einzelnen Parameter in diesem Testbereich sind die unterschiedlichen IDs, die unter
Symbian OS Version 9 zur Verfügung gestellt werden. Dabei verwendet der Testbereich UID2,
UID3, SID, VID und pUID als Parameter. Mit Hilfe dieser Parameter kann das Testsystem
die Funktionsweise der einzelnen UIDs verifizieren.
File Eclipsing
Ein Symbian OS Version 9 Mobiltelefon besitzt aufgrund der Hardware in den Standardeinstellungen, mindestens zwei Laufwerke, den schreibgeschützten ROM-Speicher und einen
beschreibbaren internen Flash-Speicher. Aufgrund dieser Tatsache kann es vorkommen, dass
eine neue Anwendung den gleichen Namen besitzt wie eine bereits installierte Anwendung im
ROM-Speicher. Diese Situation kann zu einem Konflikt während der Installation führen. Hier
hat Symbian einen Schutzmechanismus, wie in 2.4.2 beschrieben, eingeführt. Jedoch gibt es
bei Eclipsing-Situationen auch Ausnahmen, sodass diese Situationen näher untersucht werden sollten. Das Testsystem bietet einen Testbereich File-Eclipsing, um diese umschriebenen
Eclipsing-Situationen während der Installation und auch zur Laufzeit zu untersuchen. Dafür
definiert der Eclipsing-Testbereich Parameter, die es erlauben, solche Situationen herzustellen
und die dafür geltenden Regeln zu verifizieren.
File Overwriting
Neben Eclipsing-Situationen können auch Situationen auftreten in den Anwendungen versuchen, vorhandene Dateien zu überschreiben. Dies kann absichtlich durch eine Update geschehen oder unbeabsichtigt durch die Verwendung ähnlicher Dateinamen. Symbian OS verbietet
grundsätzlich das Überschreiben vorhandener Dateien, lässt aber auch Ausnahmen (Abschnitt
2.4.2) zu, beispielsweise wenn es sich um ein Update handelt. Um die Ausnahmen und die
grundsätzlichen Regeln für das Überschreiben vorhandener Dateien während der Installation
und zur Laufzeit zu verifizieren, muss das Testsystem diese Situation überprüfen können. Der
File-Overwriting-Testbereich ist genau für diesen Zweck geschaffen und bietet alle nötigen
Parameter, solche Situationen herzustellen und sie hinreichend zu testen. Die Parameter, die
diesem Testbereich zugewiesen werden konnten, bestehen aus dem Laufwerk, auf dem die Datei überschrieben werden soll, der Verzeichnisstruktur, die angibt, in welchem Verzeichnis sich
die Datei befindet und die Datei selbst, die überschrieben werden soll. Hierbei ist zu beachten,
dass die Vertrauenswürdigkeit des Paketes und die damit verbundenen Capabilities ebenfalls
zu den Parametern in diesem Testbereich gezählt werden müssen.
34
3.1. Verifikation der Konfiguration
Data Caging
Nachdem alle Testbereiche, die im primären Zusammenhang mit dem SWInstaller stehen,
identifiziert werden konnten, können nun die Sicherheitsmerkmale der PSA bei erfolgreicher
Installation einer Anwendung untersucht werden. Einen zentralen Eckpfeiler innerhalb der
Software-Implementierung der PSA stellt das Data Caging (Abschnitt 2.2.4) dar. Beim Data
Caging sind bestimmte Verzeichnisse nur mit entsprechenden Capabilities zugänglich. Damit
der Zugang mit den jeweiligen Capabilities zu den entsprechenden Verzeichnissen getestet
und verifiziert werden kann, bietet das Testsystem den Data-Caging-Testbereich an. Dabei
muss der Testbereich neben einem Parameter für das geschützte Verzeichnis auch einen Parameter für die Zugriffsart bereitstellen, denn beim Data Caging wird zwischen lesendem und
schreibendem Zugriff auf Dateien innerhalb geschützter Verzeichnisse unterschieden. Damit
der Symbian-Kernel den Testfällen Zugang zu den geschützten Verzeichnissen gewähren kann,
muss der Data-Caging-Testbereich die entsprechenden Capabilities zur Verfügung stellen. Die
Capabilities werden über einen weiteren Parameter definiert.
Capabilities
Ein weiterer Eckpfeiler der Software-Implementierung der PSA, ist das Konzept der Capabilities (in Abschnitt 2.2.3 näher beschrieben). Capabilities sind Privilegien, die ein Prozess
besitzen muss, um Zugang zu geschützten Methoden und Funktionen zu bekommen. Capabilities sind sehr vielseitig und können auf unterschiedliche Weisen benutzt werden. Zunächst
sollte das Testsystem die einzelnen Capabilities auf ihr Verhalten testen können. Das bedeutet,
das Testsystem muss jede einzelne Capability verifizieren können, ob mit der entsprechenden
Capability die zugehörige Funktion ausgeführt werden kann. Hieraus ergibt sich für den Testbereich Capability der erste Parameter, die Capability selbst. Das Testsystem soll aber nicht
nur die einzelnen Capabilities verifizieren können, sondern muss auch die Capability-Regeln
überprüfen können. Die erste Regel besagt, dass sich die Capability während der Lebensdauer
eines Prozesses nicht ändert. Die zweite Regel bezieht sich auf das Verhalten der Capabilities
in Verbindung mit einer DLL (Gliederungspunkt 2.4.6) und demnach darf ein Prozess nur eine
DLL laden, wenn die DLL mindestens die Capabilities besitzt wie der Prozess auch. Neben
den Capability-Regeln sollte das Testsystem in der Lage sein, zwischen einem Prozess, der
aus einer EXE entstanden ist und einer DLL, die dynamisch zur Laufzeit geladen wird, zu
unterscheiden. Hierfür muss das Testsystem sicherstellen, dass der entsprechende Prozess die
richtige DLL lädt. Aus diesem Zusammenhang ergibt sich für den Capability-Testbereich ein
weiterer Parameter, der die Art der Testanwendung spezifiziert und festlegt, ob es sich dabei
um einen Prozess, der aus einer EXE entstanden ist, oder ob es sich um eine DLL handelt.
Capabilities können aber auch zusammen mit dem Client/Server-Konzept verwendet werden.
Hierfür sollte das Testsystem Parameter bereitstellen, die es ermöglichen sollten, Capabilities
sowohl für Server als auch für Clients spezifizieren zu können. Dadurch sollte das Zusammenspiel zwischen Client und Server unter Verwendung definierter Capabilities verifiziert werden.
Der Parameter, der die Art der Testanwendung definiert, muss angepasst werden, um das
Client/Server-Konzept ebenfalls zu unterstützen.
35
3. Design und Spezifizierung
Shared-Data
Durch die Symbian Version 9 Architektur können Prozesse nicht auf Adressbereiche anderer
Prozesse zugreifen. Die Hardware in Form der MMU würde das nicht zulassen. In manchen
Situationen ist es jedoch von Vorteil, dass Prozesse dennoch Daten untereinander austauschen können. Neben den Client/Server-Konzept bietet Symbian weitere Konzepte, die den
sicheren Austausch von Daten gewährleisten. Das Testsystem sollte die Möglichkeit besitzen,
eine ausgewählte Menge dieser Konzepte zum sicheren Datenaustausch prüfen zu können.
Hier implementiert das Testsystem die drei Konzepte Publish & Subscribe, File Handle und
Data Chunk. Beim Publish & Subscribe können systemweite Variablen definiert werden, auf
die ein Prozess nur zugreifen darf, wenn er die dafür benötigten Zugriffsrechte besitzt. Dabei
sollte ein Prozess die Zugriffsrechte der Variablen in Form von Capabilities definieren. Abhängig von den Bedürfnissen der Prozesse sollte dieser unterschiedliche Capabilities jeweils
zum Lesen oder Schreiben der Variablen definieren können. Besitzt ein Prozess die benötigten
Capabilities, kann er lesend beziehungsweise schreibend auf die Variablen zugreifen. Beim File
Handle öffnet ein Prozess eine Datei in einem speziellen, gemeinsamen Modus, der es anderen
Prozessen erlaubt, lesend auf die Datei zuzugreifen. Beim Data Chunk können Speicherregionen von mehreren Prozessen genutzt werden, wenn der Data Chunk als global definiert
wird. Diese drei Konzepte können in der Praxis auch miteinander kombiniert werden. Das
Testsystem soll aber nur die Grundfunktionalität der einzelnen Konzepte zeigen, sodass auf
die sicheren Kombinationsmöglichkeiten geschlossen werden kann. Um die Funktionsweise der
verschiedenen Konzepte zu verifizieren, wurde der Shared-Data-Testbereich erstellt. Der Testbereich muss dabei Parameter für die unterschiedlichen Konzeptarten und die Definition der
Capabilities für Lese- und Schreibrechte zur Verfügung stellen. Ein weiterer Parameter sollte
den Prozesstyp definieren können. Mit Prozesstyp wird der Unterschied zwischen einem Prozess, der beispielsweise eine Datei für andere Prozesse im Lesemodus bereitstellt und einem
Prozess, der diese Datei nur benutzt, beschrieben.
Integrity
In Symbian OS Version 9 werden Anwendungen, die auf dem internen Flash-Laufwerk gespeichert werden, durch das Data Caging geschützt. Die EXE-Dateien sind in \sys\bin durch
Device Manufacturer Capabilities geschützt, sodass weder lesend noch schreibend auf die
Dateien ohne entsprechende Zugangsrechte zugegriffen werden kann. Das Gleiche gilt für Dateien in \private\<ownSID>, diese sind für andere Prozess nur durch Device Manufacturer
Capabilities zugänglich. Die Ressourcen-Dateien der Anwendungen sind im \resource vor
schreibendem Zugriff geschützt. Die Integrität der Daten ist somit auf dem internen FlashSpeicher gegeben. Was ist jedoch mit Anwendungen, die auf einer Speicherkarte installiert
wurden? Hier speichert Symbian einen Hash der EXE-Datei auf dem internen Flash-Speicher
in \sys\hash und kann somit die Integrität der EXE-Datei gewährleisten. Das Testsystem
müsste also Parameter bereitstellen, die es ermöglichen, die Integrität der Daten sowohl auf
dem internen Laufwerk, das durch das Data Caging geschützt ist, als auch auf der Speicherkarte, die außerhalb des Mobiltelefons nicht durch das Data Caging geschützt ist, zu
verifizieren.
36
3.2. Parameter und Konfigurationsmöglichkeiten
API
Eine weitere Anforderung an das Testsystem, das zur Verifikation der Funktionsweise benutzt
werden kann, stellt das „Black-Box-Testen“ [12] dar. Das Testsystem sollte eine grundlegende
Funktionalität besitzen, Methoden auf ihren erwarteten Rückgabewert zu testen. Im APITestbereich werden dafür Parameter angeboten, mit deren Hilfe sich Eingabe- und erwartete
Rückgabewerte für die zu testende Methode definieren lassen.
3.2. Parameter und Konfigurationsmöglichkeiten
Im vorherigen Abschnitt habe ich die Parameter der einzelnen Testbereiche erläutert und wie
die gefundenen Parameter genutzt werden können, um die korrekte Funktionsweise der PSA
zu verifizieren. Dieser Abschnitt beschäftigt sich mit den Konfigurationsmöglichkeiten, die den
Mobiltelefonherstellern und auch teilweise dem Benutzer überlassen werden, aber auch wie
diese Konfigurationsmöglichkeiten Einfluss auf das Testsystem nehmen.
3.2.1. SWIPolicy
Bevor eine Anwendung installiert werden kann, muss der SWInstaller zunächst die Einstellungen mit den eigenen Richtlinien der SWIPolicy im ROM-Speicher prüfen, um festzustellen,
wie die Installation fortgesetzt werden kann. Die SWIPolicy wird vor der Auslieferung von den
Mobiltelefonherstellern konfiguriert und enthält zahlreiche Einstell- und Konfigurationsmöglichkeiten. Die relevanten Konfigurationsmöglichkeiten der SWIPolicy werden im Folgenden
kurz mit ihrer Bedeutung für das Testsystem erläutert.
• AllowUnsigned=[true|false]
Hier kann der Mobiltelefonhersteller festlegen, wie mit nicht signierten Installationspaketen verfahren wird. Bei true werden nicht signierte Pakete als Installationskandidaten
betrachtet, wohingegen bei false der SWInstaller die Installation verweigert. Hier ist
aber auch zu bemerken, falls das „root“-Zertifikat als MANDATORY im „SWI Certification
Store“ markiert ist, wird selbst bei AllowUnsigned=true die Installation fehlschlagen,
wenn das Installationspaket nicht mit einem nachweisbaren Anwendungszertifikat signiert wurde.
• MandateCodeSigningExtension=[true|false]
Abhängig von dieser Einstellung muss das Zertifikat, mit dem die Anwendung signiert
wurde, die „X.509 code signing“-Erweiterung [13] besitzen.
• MandatePolicies=[true|false]
Diese Einstellung kann benutzt werden, damit alle nicht „root“-Zertifikate in der Signierungskette zumindest eine OID enthalten, die in der OID-Liste angegeben wurde.
Ansonsten kann die Anwendung nicht installiert werden, wenn der entsprechende private
Schlüssel, mit dem die Anwendung signiert wurde, die OID nicht enthält. Das Zertifikat
muss mit der „X.509 extended key usage“-Erweiterung, die die spezifizierte OID enthält,
signiert sein.
37
3. Design und Spezifizierung
• Oid=Wert
Oid-Liste, die bei MandatePolicies=true definiert sein muss.
• OcspEnabled=[true|false]
Hier kann der Hersteller festlegen, ob OSCP während der Installation durchgeführt
werden soll.
• OcspMandatory=[true|false]
Ist die OSCP-Prüfung eingeschaltet, muss das Ergebnis der Prüfung bei OcspMandatory=
true erfolgreich ausfallen, damit die Installation fortgeführt werden kann.
• AllowGrantUserCapabilities=[true|false]
Hier kann der Hersteller festlegen, ob der Benutzer User-Capabilities gewähren kann.
• UserCapabilities=UserCapability-Liste
Liste der Capabilities, die der Benutzer während der Installation gewähren kann, wenn
AllowGrantUserCapabilities=true.
• AllowOrphanedOverwrite=[true|false]
Mit dieser Einstellung kann der Mobiltelefonhersteller festlegen, ob der Benutzer gefragt
werden soll, „verwaiste“ Dateien in öffentlichen Verzeichnissen während der Installation
überschreiben zu dürfen. Eine Datei wird als verwaist bezeichnet, wenn sie zu keinem
installierten Paket gehört oder sonst nicht durch den SWInstaller registriert wurde.
• AllowProtectedOrphanOverwrite=[true|false]
Ist diese Einstellung auf true und AllowOrphanedOverwrite ebenfalls auf true gesetzt,
wird der SWInstaller erlauben, verwaiste Dateien in privaten Verzeichnissen (\private
\xxxxxxxx\import, \resource oder \sys\bin) zu überschrieben oder diese in eine
Eclipsing-Situation zu bringen.
• RunWaitTimeoutSeconds=Wert
In einem Installationspaket kann festgelegt werden, dass eine Anwendung während der
Installation ausgeführt wird. RunWaitTimeoutSeconds gibt dabei die Periode an, wie
lange gewartet werden soll, bis die Anwendung vom SWInstaller geschlossen wird, bevor
die Installation fortgeführt wird. Bei einem Wert von -1, wartet der SWInstaller bis die
Anwendung geschlossen wird. Das bedeutet, wenn die Anwendung nicht beendet wird,
würde der SWInstaller „hängen“ bleiben.
• AllowRunOnInstallUninstall=[true|false]
Der Hersteller kann hier festlegen, ob nicht vertrauenswürdige Anwendungen FILERUN(FR)
oder FILEMIME(FM) Anweisungen ausführen dürfen.
• ReplacePath
Erlaubt dem Hersteller, den Installationspfad während der Installation auf einen neuen
Pfad abzubilden.
3.2.2. SWInstaller-Einstellungen
Neben der SWIPolicy, die von den Mobiltelefonherstellern konfiguriert wird, besitzt der Benutzer auch Einstellmöglichkeiten, das Verhalten des SWInstallers zu beeinflussen. Die Einstellungen sind begrenzt und bieten dem Benutzer lediglich drei Möglichkeiten. Dabei kann
38
3.3. Erfassung der Vollständigkeit
angegeben werden, ob jede Software oder nur signierte Software installiert werden kann. Weiter
kann die Online-Zertifikatsprüfung (OCSP) ein- beziehungsweise ausgeschaltet oder erst nach
Bestätigung zugelassen werden. In der letzten Einstellung kann eine Standard-Web-Adresse
für die Online-Zertifikatsprüfung angegeben werden. Bei diesen Benutzereinstellungen ist jedoch fraglich, welche Einstellungen bei einem Konflikt zwischen den Benutzereinstellungen
und der SWIPolicy bevorzugt werden.
3.2.3. Bedeutung für das Testsystem
Die beiden Konfigurationsmöglichkeiten sowohl für Mobiltelefonhersteller mittels SWIPolicy
oder Benutzer über die SWInstaller-Einstellungen können nur indirekt auf das Testsystem
einwirken. Das Testsystem nimmt diese Konfigurationsmöglichkeiten als gegeben an. Vor jedem Testlauf können die Konfigurationsmöglichkeiten protokolliert und sinnvoll verändert
werden. Bei den SWInstaller-Einstellungen ist dies auch problemlos möglich. Das Verändern
der SWIPolicy stellt theoretisch eine größere Hürde dar aufgrund der Tatsache, dass sich die
SWIPolicy im schreibgeschützten ROM-Speicher befindet. Praktisch gibt es durchaus Möglichkeiten, die SWIPolicy zu Testzwecken zu verändern. Hierfür werden zwei Methoden im
Kapitel 7 vorgestellt. Mit diesen „passiven“ Parametern kann der Frage aus Abschnitt 3.2.2
nach der Priorisierung der beiden Einstellmöglichkeiten hinreichend nachgegangen werden.
3.3. Erfassung der Vollständigkeit
Dieser Abschnitt soll die Vollständigkeit des Testsystems zeigen, wie die einzelnen Testbereiche
die Funktionen und Möglichkeiten der PSA abdecken.
3.3.1. Testbereich
Die gesamte PSA-Architektur kann in drei Punkte unterteilt werden, die Hardware-Unterstützung, die Software-Implementierung und das Zertifizierungsprogramm von Symbian Signed.
Zusammen mit der MMU bildet die Hardware die Basis der PSA und ist somit Teil der Unit of
Trust. Die Software-Implementierung der PSA umfasst dabei den größten zu untersuchenden
Bereich. Hier müssen weiterhin die drei Hauptbestandteile der PSA-Implementierung betrachtet werden. Im Einzelnen den Kernel zusammen mit dem „File-Server“ und dem SWInstaller,
dem Data Caging sowie den Capabilities. Der Kernel als vertrauenswürdige Komponente der
Unit of Trust ist für die Integrität des Systems und die Speicherverwaltung verantwortlich.
Kein Prozess darf ohne die entsprechenden Privilegien in einen Adressraum eines anderen
Prozesses schreiben. Im Gegenzug ist der SWInstaller als weitere Komponente der Unit of
Trust für die korrekte Installation zusätzlicher Anwendungen sowie die Aktualisierungen von
vorhandenen Anwendungen zuständig. Das Data Caging als zweiter Hauptbestandteil beinhaltet neben dem Zugang zu geschützen Verzeichnissen mit entsprechenden Privilegien auch
die damit verbundenen Möglichkeiten, Dateien zu überschreiben oder durch andere Dateien
Eclipsing-Situationen hervorzurufen. Der dritte Hauptbestandteil der PSA-Implementierung
ermöglicht Prozessen, auf geschützte Ressourcen zuzugreifen. Capabilities können in Verbindung mit vertrauenswürdigen beziehungsweise mit nicht vertrauenswürdigen DLL überprüft
werden. Das Zertifizierungsprogramm von Symbian Signed umfasst neben der Vergabe von
39
3. Design und Spezifizierung
Zertifikaten verschiedene Möglichkeiten, Anwendungen zu signieren. Die dabei angebotenen
Verfahren Open Signed, Express Signed und Certified Signed sind in den Grundlagen Abschnitt 2.2.5 kurz beschrieben. In den verschiedenen Signierungsverfahren sind entsprechende
Testkriterien definiert, die eine Anwendung bestehen muss, bevor sie mit dem jeweiligen Zertifikat signiert werden kann. Aber auch die Verwaltung und Vergabe der entsprechenden UIDs
ist Aufgabe von Symbian Signed.
All diese Komponenten mit ihren jeweiligen Merkmalen und Funktionen definieren das vollständige PSA-System. Abbildung 3.2 verdeutlicht diesen Zusammenhang. Jeder Kreis in der
Abbildung ist als Menge der damit verbundenen Funktionen und Regeln der jeweiligen Komponente definiert. Das Testsystem ist dabei als Teilmenge des vollständigen PSA-Systems
dargestellt.
Abbildung 3.2.: Vollständiges PSA-System
3.3.2. Testbarkeit gegen wirklich getestet
In Abbildung 3.2 wird deutlich, dass das Testsystem nicht das vollständige PSA-System umfassen kann, sondern nur eine Teilmenge bildet. Dabei sind einige Komponenten des PSASystems vollkommen im Testsystem enthalten und andere bilden hingegen nur eine Teilmenge
der Komponenten. Schon bei der Komponente Symbian Signed ist erkennbar, dass nur ein Teil
dieser Komponente im Testsystem enthalten ist. Das ist dadurch zu erklären, dass Symbian
Signed verschiedene Zertifizierungsprogramme anbietet, das Testsystem aber nur die „freien“
Zertifizierungsprogramme benutzt. Das bedeutet, es kann nur Open Signed und ein auf mich
ausgestelltes Developer-Zertifikate benutzt werden. Das Developer-Zertifikat habe ich noch
vor der Einführung von Open Signed erlangen können. Die Komponente, die das Data Caging
darstellt, umfasst nicht nur den Data-Caging-Testbereich, sondern beinhaltet auch Testfälle
40
3.4. Mehrdeutigkeiten der Spezifikation
zum File Eclipsing und zum File Overwriting. Dadurch kann der Data-Caging-Testbereich
alle Möglichkeiten, die benötigt werden, zur Verfügung stellen, sodass diese Komponente des
PSA-Systems untersucht werden kann. Auch die teilweise durch Device Manufacturer Capabilities geschützten Verzeichnisse können mit einem Trick aus Kapitel 7 untersucht werden.
Die PSA stellt insgesamt 20 Capabilities bereit und definiert die damit verbundenen Regeln.
Im Testsystem ist der Capability-Testbereich definiert worden, indem die Capability-Regeln,
die Verwendung der einzelnen Capabilities und die Capabilities im Zusammenhang mit DLLDateien getestet werden können. Der Kernel als Komponente der Unit of Trust kann nur
teilweise durch die Testbereiche abgedeckt werden. Neben der indirekten Untersuchung des
„File-Servers“ durch den Data-Caging-Testbereich, stellt das Testsystem einen Testbereich
für die Untersuchung der Integrität entsprechender Dateien zur Verfügung. Im Shared-DataTestbereich können die vom Kernel zur Verfügung gestellten Konzepte, die den Datenaustausch zwischen Prozessen ermöglichen, untersucht werden. Der SWInstaller als weitere Komponente der Unit of Trust, kann hingegen vollkommen vom Testsystem untersucht werden.
Durch die in Kapitel 7 zur Verfügung gestellten Mittel, kann sowohl die SWIPolicy als auch
mit einem vertrauenswürdigen Zertifikat die entsprechende Funktionalität getestet werden.
Die Hardware-Unterstützung der MMU kann nur indirekt über die Software-Implementierung
untersucht werden. In der Implementierung der Symbian APIs sind nur 40 Prozent der APIs
durch Capabilities geschützt. Das Testsystem implementiert nicht zu jeder geschützten API
einen Testfall, sodass in der Grundkonfiguration des Testsystems nur ein ausgewählter Teil der
geschützten APIs mit ihren jeweiligen Capabilities untersucht werden kann. Jedoch kann das
Testsystem, wenn die entsprechende Konfigurationsdatei erstellt werden kann, die gesamten
APIs, die durch Capabilities geschützt sind, überprüft werden.
Schließlich kann das PSA-Testsystem aus den oben geschriebenen Komponenten nur als Teilmenge des vollständigen PSA-Systems definiert werden.
3.4. Mehrdeutigkeiten der Spezifikation
Bevor die Frage nach Mehrdeutigkeiten in der Spezifikation der PSA beantwortet werden
kann, muss zunächst definiert werden, was als Spezifikation der PSA betrachtet werden kann.
Symbian bietet zahlreiche Dokumentationen, die einen schnellen Einstieg in die Entwicklung
von Symbian OS Version 9 Anwendungen ermöglichen. Es gibt viele Artikel, „White Paper“
und Kapitel in verschiedenen Entwicklungsbüchern für Symbian OS, die einen guten Überblick
über die PSA bieten. Jedoch keine dieser Quellen kann eine detaillierte Spezifikation der PSA
liefern. „Symbian OS Platform Security“ [1] gibt eine gute Beschreibung der PSA und wie
Anwendungen für diese Plattform entwickelt werden können. Dieses Buch soll hier als Referenz
für die Spezifikation der PSA dienen.
Ein Problem bei der Beurteilung der Mehrdeutigkeit sind die unterschiedlichen „Software
Development Kits (SDK)“. Neben den öffentlich zugänglichen SDKs existieren weitere Symbian OS SDKs [14]. Diese SDKs sind für Mobiltelefonhersteller gedacht und nicht öffentlich
zugänglich. Mit den verschiedenen SDKs unterscheiden sich auch die Dokumentationen. Beispielsweise wird in „Symbian OS Changes for Platform Security“ [15] auf Methoden verwiesen,
die in den öffentlichen SDKs nicht dokumentiert und auch nicht vorhanden sind.
41
3. Design und Spezifizierung
In der Beschreibung der SWIPolicy [16, 17] werden die Parameter vorgestellt, die die Mobiltelefonhersteller nutzen können, um das Installationsverhalten zusätzlicher Software zu konfigurieren. Die einzelnen Parameter sind teilweise mit Beispielen erklärt, lassen aber dennoch
Spielraum für Interpretationen. Ein Beispiel ist die Beschreibung über die Markierung des
root-Zertifikats als MANDATORY. Es wird nicht definiert, was MANDATORY in diesem Zusammenhang bedeutet. Es kann jedoch sein, dass diese Information in der Dokumentation der nicht
öffentlichen SDKs beschrieben ist. Ein weiteres Beispiel ist die Aussage, dass falls das rootZertifikat als MANDATORY markiert ist, Anwendungen nur installiert werden können, wenn sie
mit einem „nachweisbaren“ Anwendungszertifikat signiert wurden. Hier ist unklar, was mit
„nachweisbar“ gemeint ist. Es kann sich dabei um ein Developer-Zertifikat oder ein Zertifikat,
das von Symbian Signed ausgestellt wurde, handeln. Ob dabei auch selbst signierte Zertifikate oder Zertifikate von anderen Zertifizierungsstellen benutzt werden können, ist ebenfalls
fraglich. Diese beiden Beispiele zeigen, dass diese Spezifikation der SWIPolicy nur dokumentierenden Charakter hat.
Weitere Mehrdeutigkeiten ergeben sich in der API-Dokumentation für die einzelnen Funktionen, die durch Capabilities geschützt sind. In der API-Dokumentation des öffentlichen SDKs
existiert in den Versionen 9.1 und 9.2 ein Dokument „Funktionen nach Capabilities gelistet“
[18, 19], das die einzelnen Funktionen nach ihren Capabilities auflistet. In diesem Dokument sind Funktionen mit anderen Capabilities verzeichnet als sie in der API-Dokumentation
definiert sind. Ein Beispiel ist dabei die Funktion Open aus der Klasse RRawDisk. In dem
Dokument „Funktionen nach Capabilities gelistet“ wird die DiskAdmin Capability für diese
Funktion gefordert. In der API-Dokumentation ist diese Funktion jedoch mit der Tcb Capability angegeben.
Die Beispiele zeigen, dass die Dokumentation und teilweise die Spezifikation viel Raum für
Interpretationen lässt. Größtenteils führen die Mehrdeutigkeiten jedoch zu keinen größeren
Fehlern. In den meisten Fällen bedeuten sie mehr Aufwand bei der Definition der Testfälle.
Hier muss überlegt werden, was die entsprechende Definition ausdrücken möchte, sodass aus
der Ungewissheit über die Definition mehr Testfälle resultieren. Im schlimmsten Fall kann ein
Capability-Test fehlschlagen, obwohl gemäß der API-Definition die entsprechende Capability
gewählt wurde, aber tatsächlich der Zugriff auf die jeweilige Ressource aufgrund mangelnder
Capability verweigert wird.
42
4. Testsystem
Im vorherigen Kapitel wurde die Architektur des PSA-Testsystems eingeführt sowie die Parameter, die das Testsystem zur Verifikation der PSA bereitstellt. Dieses Kapitel beschreibt die
Implementierung des Testsystems und die einzelnen Testbereiche. Der letzte Abschnitt zeigt
schließlich, wie die Testfälle definiert werden müssen, um die beschriebene Konfiguration zu
verifizieren.
4.1. Beschreibung der Implementierung
Dieser Abschnitt erläutert die Implementierung des PSA-Testsystems. Dafür werden zunächst
zwei DLL vorgestellt, mit deren Hilfe die Testfälle ihre Ergebnisse protokollieren können.
Anschließend werden die einzelnen Komponenten des PSA-Testsystem genauer beschrieben.
4.1.1. File-Logger
Eine erste Anforderung, die an das PSA-Testsystem gestellt wurde, ist die Möglichkeit, den
Ablauf der Testfälle zu protokollieren. Damit die Testfälle am Ende ausgewertet werden können, sollte eine aussagekräftige Log-Datei mit den einzelnen Schritten, die die Anwendung
ausgeführt hat beziehungsweise mit den Fehlern, die aufgetreten sind, entstehen. Für diesen
Zweck habe ich unter Zuhilfenahme eines Beispiels im Nokia Forum [20] eine Anwendung zum
flexiblen Protokollieren geschrieben. Der File-Logger ist als DLL realisiert, damit nicht jeder
Testfall seinen eigenen File-Logger implementieren muss, kann so die Forderung nach einem
Testsystem mit möglichst wenig Redundanz gewahrt werden. Für die einzelnen Testbereiche
stellt der File-Logger verschiedene Funktionen bereit, die die Testfälle nutzen können, um
die relevanten Informationen über den aktuellen Testfall in einer Textdatei zu protokollieren.
Der File-Logger unterstützt nicht nur die Funktion einfachen Text zu protokollieren, sondern
auch Protokolleinträge mit mehreren Parametern zu erstellen. Dabei kann der File-Logger
einen Eintrag erst bei einem Fehler protokollieren oder der Protokolleintrag wird vor und
nach einem Funktionsaufruf erstellt. Während der Durchführung der Testfälle ist im Zusammenhang mit dem File-Logger aufgefallen, dass der File-Logger nicht mit Testfällen, die die
Tcb Capability benutzen, verwendet werden konnte. In der Grundimplementierung benutzt
der File-Logger weitere Bibliotheken, die jedoch nur mit den All -Tcb Capabilities ausgestattet sind. Das bedeutet die Bibliotheken besitzen alle Capabilities, außer der Tcb Capability.
Aufgrund der Capability-Regeln kann der Standard File-Logger nicht mit Testfällen, die die
Tcb Capability benutzen, verwendet werden. Deshalb wurde zusätzlich der OwnFile-Logger
entwickelt, der keine weiteren Bibliotheken benutzt und aus diesem Grund selbst mit der Tcb
Capability verwendet werden kann. Der OwnFile-Logger stellt dabei fast die gleiche Funktionalität wie der File-Logger zur Verfügung.
43
4. Testsystem
4.1.2. Testsystem
Das Testsystem besteht, wie in Kapitel 3 beschrieben, aus vier Komponenten. Einer Konfigurationsdatei für die einzelnen Testfälle, einen Code-Builder für die Generierung des Quellcodes
sowie einen Package-Creator, der das Installationspaket erstellt und auf der anderen Seite
einen Emu-Builder, der die Testfälle für den Emulator ausführbar macht.
Die Konfigurationsdatei ist der zentrale Punkt des gesamten PSA-Testsystems. Mit ihr kann
eine individuelle „Testsuite“ zusammengestellt werden. Es kann zunächst gewählt werden, ob
die resultierenden Testfälle für das Mobiltelefon oder für den Emulator erstellt werden sollen.
Dabei muss aber beachtet werden, dass eine geeignete Symbian OS SDK Version gewählt
wird. Das Testsystem unterscheidet zwischen den Symbian OS SDK Versionen 9.1, 9.2 und
9.3. Weiterhin besteht die Möglichkeit, entweder einen bereits spezifizierten Testfall zu wählen
oder es kann ein Testfall völlig eigenständig gestaltet werden. Die fest vordefinierten Testfälle
sind jeweils einem Testbereich zugeordnet, der sich aus den Eigenschaften und Merkmalen
der PSA ableitet. Als Beispiel für einen Testbereich sei hier das Data Caging genannt. Das
Data Caging definiert sich durch die Eigenschaft, dass Dateien in geschützten Verzeichnissen nur mit entsprechenden Capabilities gelesen beziehungsweise geschrieben werden dürfen.
Der Testfall für das Data Caging benötigt somit nach den Anforderungen in 3.1 Parameter für Capabilities, Pfadangaben und Zugriffsarten. Das Testsystem löst die Definition der
Merkmale für die einzelnen Testfälle durch die Angabe von Schlüsselwörtern. Demnach ist ein
Schlüsselwort der angeleitete Parameter der Anforderung für den Testbereich. Der Quelltext
4.1 zeigt die vollständige Spezifikation eines Data-Caging-Testfalls. Im Beispiel für das Data
Caging ergeben sich die Schlüsselwörter Capability, Drive, Path und Access sowie ein weiteres Schlüsselwort Signed für die Art der Signierung des Installationspaketes. Um nun einen
Testbereich zu definieren, muss dieser erst nach dem Schlüsselwort TestFields deklariert
werden. Mehrere Testbereiche werden ohne Leerzeichen durch ein Komma getrennt. Sind nun
die Testbereiche deklariert, müssen die Testfälle nur noch durch die jeweiligen Schlüsselwörter
der Testbereiche definiert werden.
Quelltext 4.1: Beispiel für einen Data-Caging-Testfall
Platform : real
SDK Version : 9 . 1
Test Fields : Data - Caging
Data - Caging {
Capability : ReadDeviceData ReadUserData
Access : read
Drive : C
Path : \\ private
Signed : self
--}
Jeder vordefinierte Testbereich ist durch seine eigenen Schlüsselwörter definiert. Für eine detaillierte Beschreibung zur Definition der Konfigurationsdatei siehe A.1. Es können aber auch
44
4.1. Beschreibung der Implementierung
individuelle Testbereiche definiert werden, indem in TestFields die Testbereiche durch Angabe ihrer Namen deklariert werden. Anschließend müssen die Testbereiche nur noch durch die
gewünschten Schlüsselwörter definiert werden, wobei dann alle Schlüsselwörter des gesamten
Systems verwendet werden können. Darüber hinaus müssen aber auch einige Regeln beachtet
werden. Ein Beispiel ist, es darf nur dann ein Update (SA, PU, SP) definiert werden, wenn zuvor schon eine SA-Anwendung mit der Versionsnummer 1,0,0 definiert wurde. Weitere Regeln
und Hinweise zur Konfigurationsdatei sind im Anhang A.2 aufgeführt.
Nachdem die einzelnen Testfälle spezifiziert und die Konfigurationsdatei erstellt wurde, übernimmt der Code-Builder die Konfigurationsdatei, um den Quellcode zu generieren. Die Abbildung 3.1 im Kapitel 3 verdeutlicht den Aufbau des PSA-Testsystems. Der Code-Builder ist
dafür verantwortlich, die unterschiedlichen Anforderungen der Testfälle zu erfüllen sowie deren
Spezifikation zu gewährleisten. Die Idee hinter dem Code-Builder ist leicht nachvollziehbar.
Vorgeschriebene Quellcode-Fragmente in Symbian C++ werden in geeigneter Art und Weise
sowie mit möglichst wenig Redundanz so ineinander gefügt, dass ein syntaktisch korrektes
und sinnvolles Projekt entsteht.
Der Code-Builder wurde mit Hilfe von Perl aufgrund der mächtigen Art, mit regulären Ausdrücken umzugehen, geschrieben. Um alle Anforderungen der Testbereiche zu erfüllen, mussten zunächst separate Projekte zu jedem Testtyp in Symbian C++ geschrieben werden. Mit
Hilfe des Code-Builders musste zu jedem Testbereich der Quellcode nur für einen Testfall
geschrieben werden, wodurch sich die Fehleranfälligkeit auf nur eine zentrale Stelle eines Testbereichs reduzierte. Die herkömmliche Methode hätte für jeden Testfall neuen Quellcode zur
Folge, der größtenteils dem Ausgangsquellcode identisch wäre. Da sich die Testfälle eines Testbereichs relativ ähneln, wäre man geneigt „Copy & Paste“ zu verwenden. Hätten sich jedoch
im Ausgangsquellcode Fehler eingeschlichen, könnte es passierten, dass die Fehler in den kopierten Quellcodes unentdeckt blieben, was im schlimmsten Fall schwerwiegende Folgen hätte.
Genau mit diesem Verhalten ist beim Code-Builder nicht zu rechnen. Denn, ist nun der BasisQuellcode für den einzelnen Testbereich korrekt implementiert und ohne Programmierfehler,
so kann davon ausgegangen werden, dass der resultierende, richtig zusammengefügte Code
wieder korrekt und ohne zusätzliche Programmierfehler ist.
Der Package-Creator erstellt aus den Quelldateien, die der Code-Builder generiert hat, ein
Installationspaket, das auf Symbian OS v9 Geräten installiert werden kann. Jedoch tritt der
Package-Creator nur in Aktion, wenn das Schlüsselwort Platform auf real gesetzt ist. Damit
das Installationspaket erstellt werden kann, muss der Package-Creator zunächst die richtige
SDK Version auswählen. Die SDK Version wird durch das Schlüsselwort SDK Version definiert. Wie oben erwähnt, kann dabei zwischen „S60 3rd Edition SDK Maintenance Release“,
das die Version 9.1 darstellt, „S60 3rd Edition SDK mit Feature Pack 1“, das die Version 9.2 widerspiegelt und „S60 3rd Edition SDK mit Feature Pack 2“, das Version 9.3 definiert, gewählt
werden. Mit dieser Information kann der Package-Creator schließlich die Kompilierung mit
der richtigen Version des SDKs beginnen. Entstehen keine Fehler beim Kompilieren, so kann
der Package-Creator das Installationspaket erstellen. Hierfür benötigt der Package-Creator
noch einige Informationen, die in der Konfigurationsdatei für das PSA-Testsystem spezifiziert wurden. Für die meisten Testfälle wird ein Zertifikat benötigt, mit dem die SIS-Datei
signiert wird. Entsprechend dem Schlüsselwort Signed wird das richtige Zertifikat gewählt
und das Installationspaket damit signiert. Das PSA-Testsystem benutzt dabei ein selbst erstelltes Zertifikat, ein Developer-Zertifikat, das für das Nokia E61 ausgestellt und auf die IMEI
beschränkt ist, und ein Zertifikat, das ich „root“-Zertifikat nenne. Das „root“-Zertifikat ist in
45
4. Testsystem
Kapitel 7 näher beschrieben. Weiter benötigen viele Tests auch die Definition von Capabilities,
die mit Capability spezifiziert werden können. Im Testbereich für die einzelnen IDs können
diverse IDs (SID, UID3, VID, pUID) getestet werden, sodass der Package-Creator auch diese
Information berücksichtigen muss.
Der Emu-Builder ist das Gegenstück zum Package-Creator. Er erstellt die nötigen Dateien
zur Ausführung im Emulator, benötigt aber die identischen Informationen wie der PackageCreator mit Ausnahme von emu im Platform Schlüsselwort, das dem Testsystem Emulator
Testfälle signalisiert. Die Aufgabe des Emu-Builders gestaltet sich aber im Vergleich zum
Package-Creator einfacher. Der Emu-Builder muss keine Installationsdatei erstellen, sondern
lediglich die Testfälle für die Emulator-Plattform kompilieren und die entstehenden Dateien
an die richtige Stelle kopieren.
4.2. Beschreibung der Testfälle
In diesem Abschnitt werden die einzelnen Testbereiche des PSA-Testsystems beschrieben. Anschließend wird in jedem Testbereich die Beschreibung anhand eines Beispiels verdeutlicht.
4.2.1. Data Caging
Ein wesentlicher Baustein der PSA ist das Data Caging. Ist im Data Caging ein Fehler oder
eine Lücke, ist das ganze System betroffen. Der Data-Caging-Testbereich stellt hierfür die
Schlüsselwörter Capability, Signed und die für diesen Test besonders wichtigen Schlüsselwörter Drive, Path und Access. Mit Hilfe von Capabilities sowie der Angabe von mehreren
Laufwerken, Pfaden und der Zugriffsart ist es möglich festzustellen, ob die geschützten Verzeichnisse nur mit den definierten Capabilities und dem definierten Zugang zugänglich sind.
Dabei erstellt der Code-Builder ein simples GUI-Framework für den Testfall. Weiter erzeugt
der Code-Builder für jede Kombination aus angegebenem Pfad und Laufwerk einen kleinen
Testfall. Wurde beispielsweise \\private im Path angegeben, so erweitert der Code-Builder
die Pfadangabe mit der SID der Anwendung. Soll hingegen ein privates Verzeichnis eines
anderen Prozesses getestet werden, so muss der Pfad die entsprechende SID enthalten, die
in der Konfigurationsdatei angegeben wurde. Bei \\private\\EHome wird der Test direkt im
\private-Verzeichnis durchgeführt. Der einzelne Test versucht, abhängig von der Spezifikation
des Tests, eine Datei bei schreibendem Zugriff auf das angegebene Laufwerk mit entsprechendem Pfad zu erstellen und einen kurzen Text in diese Datei zu schreiben. Bei lesendem Zugriff
versucht der einzelne Testfall in dem angegebenen Verzeichnis den Inhalt einer Datei zu lesen.
Abhängig von der Capability, dem Pfad und der Zugriffsart auf das entsprechende Verzeichnis
wird der Test erfolgreich ausfallen oder nicht. In beiden Fällen wird eine Log-Datei angefertigt, die den Verlauf des Tests protokolliert. Diese daraus resultierenden Testfälle werden in
das GUI-Framework integriert und mit den angegebenen Capabilities dem Package-Creator
oder dem Emu-Builder übergeben. Ein Beispiel für die Definition eines Data-Caging-Testfalls
wurde schon bei der Beschreibung des Testsystems im Quelltext 4.1 gegeben.
46
4.2. Beschreibung der Testfälle
4.2.2. File Eclipsing
Die File-Eclipsing-Tests sollen die Eclipsing-Situationen untersuchen, die unter Umständen bei
Installationen neuer Anwendungen oder bei Updates/Patches bestehender Software entstehen
können. In diesem Testbereich stehen zahlreiche Schlüsselwörter zur genauen Spezifikation der
Tests, um die entsprechenden Situationen zu untersuchen, zur Verfügung. Dabei stehen die
schon bekannten Schlüsselwörter Capability, Signed, Drive und Path zur Verfügung. Hier
aber unterscheidet sich die Funktionsweise der Schlüsselwörter Drive und Path zum Data
Caging. Mit einem weiteren Schlüsselwort File kann genau definiert werden, welche Datei an
welcher Stelle durch die angegebene Datei „überschattet“ werden soll. Während beim Data
Caging alle Kombinationen aus Path und Drive ausgeführt werden, wird beim File Eclipsing
der komplette Dateipfad in der angegebenen Reihenfolge aus Drive, Path und File gebildet.
Soll die Eclipsing-Situation bereits während der Installation der Testanwendung erzwungen
werden, muss zunächst das Schlüsselwort AtInstall auf true gesetzt werden. Weiter muss
sichergestellt werden, dass die angegebene Datei bereits im Basis-Projekt während der Erstellung der Testfälle existiert. Wird hingegen AtInstall auf false gesetzt, versucht das
Testsystem, die definierte Datei an der angegebenen Stelle zu erzeugen, um so zur Laufzeit
eine Eclipsing-Situation herzustellen.
Ein weiteres Schlüsselwort Code ermöglicht, zusätzlichen Quellcode den einzelnen Testfällen
hinzufügen zu können. Der zusätzliche Quellcode muss syntaktisch korrekt in Symbian C++
geschrieben werden. Denn nur dadurch kann der Code Builder gewährleisten, dass die Testfälle ohne Fehler generiert werden. Um die einzelnen File-Eclipsing-Testfälle noch flexibler zu
gestalten, gibt es zwei weitere Schlüsselwörter Type und Version. Mit Hilfe von Type wird der
Typ des Installationspaketes bestimmt. Hierbei können fast alle Installationstypen, die Symbian OS bereitstellt, verwendet werden. Im Detail sind das Standard Application (SA), Partial
Upgrade (PU), SIS Patch (SP) und Preinstalled Application (PA). Der SA-Typ stellt einen
normalen Installationstyp dar und ist nur relevant, wenn eine neue Version eingefügt wird.
Das bedeutet, wenn eine installierte Anwendung komplett in einer neuen Version installiert
werden soll, wird dieser Typ verwendet. Dabei werden die alten Dateien nicht aktualisiert,
sondern alle werden durch neue Dateien in der aktuellen Version ersetzt. Beim Partial Upgrade beziehungsweise dem PU-Typ werden nur vereinzelte Dateien ersetzt. Um ein Partial
Upgrade einer Anwendung installieren zu können, muss zuvor diese Anwendung als SA-Typ in
der Version 1,0,0 installiert worden sein. In diesem Testsystem wird bei einem PU nur eine neue
EXE-Datei der Anwendung geliefert. Alle anderen Dateien der Anwendung bleiben unverändert. Ein SIS-Patch kann nur neue Dateien liefern. So liefert ein Installationspaket, dessen
Type als SP definiert wurde, nur die Dateien, die in den Feldern Drive, Path und File angegeben wurden. Für den letzten Installationstyp PA, den das Testsystem unterstützt, müssen
bestimmte Voraussetzungen geschaffen werden. Bei diesem Installationstyp werden die einzelnen Dateien nicht im Installationspaket mitgeliefert, sondern müssen bereits in den richtigen
Verzeichnissen auf der Speicherkarte vorhanden sein. Die Installationsdatei registriert nur die
Anwendung im Betriebssystem. Auch dieser Testbereich erstellt eine vollständige Log-Datei.
Im Quelltext 4.2 ist ein Beispiel für die Konfiguration eines File-Eclipsing-Testfalls gegeben. In
diesem Beispiel wird während der Installation versucht, die TestSWINone_1.txt auf Laufwerk
E zu kopieren und dadurch eine mögliche Eclipsing-Situation zu schaffen.
Quelltext 4.2: Beispiel File Eclipsing
File - Eclipsing {
47
4. Testsystem
Capability : none
Drive : E
File : TestSWINone_1 . txt
Path : \\ Test \\ Eclipsing
Type : SA
At Install : true
Version : 1 ,0 ,0
Signed : self
Code [
]
--}
4.2.3. File Overwriting
Die File-Overwriting-Tests sind den File-Eclipsing-Tests sehr ähnlich. Beide verwenden die
gleichen Schlüsselwörter und teilweise auch die gleichen Methoden in der Implementierung.
Der wesentliche Unterschied gegenüber dem File Eclipsing ist, dass beim File Overwriting
nicht versucht wird, die Dateien durch andere Dateien zu „überschatten“, sondern dieser Test
versucht, die Dateien direkt zu überschreiben oder zu ersetzen. Das Überschreiben der Dateien ist wie beim File Eclipsing vom AtInstall Schlüsselwort abhängig. Ist AtInstall gesetzt,
versucht die Testanwendung während der Installation die angegeben Dateien zu überschreiben. Wird hingegen AtInstall als false definiert, so erzeugt der Code-Builder einen FileOverwriting-Test zur Laufzeit. Dieser zur Laufzeit ausgeführte Test versucht, die definierte
Datei im angegebenen Verzeichnis, das durch das Schlüsselwort Path definiert wird, zu überschreiben. Auch in diesem Testbereich können unterschiedliche Installationstypen spezifiziert
werden, die es ermöglichen, das File Overwriting mit verschiedenen Installationstypen zu untersuchen. Wie der File-Eclipsing-Test erstellt auch der File-Overwriting-Test eine vollständige
Log-Datei. Quelltext 4.3 zeigt ein mögliches Beispiel für einen File-Overwriting-Test. In dieser Definition wird die TestRuntimeNone_1.txt Datei während der Installation versucht, auf
dem Laufwerk C zu überschreiben.
Quelltext 4.3: Beispiel File Overwriting
File - Overwriting {
Capability : none
Drive : C
File : TestRuntimeNone_1 . txt
Path : \\ Test \\ Overwriting
Type : SA
At Install : true
Version : 1 ,0 ,0
Signed : self
Code [
]
--}
48
4.2. Beschreibung der Testfälle
4.2.4. SWInstaller
In den Grundlagen wurden die große Bedeutung der SWIPolicy und die Notwendigkeit der
richtigen Konfiguration ihrer Parameter erläutert. In diesem Testbereich sollen nun diese
Parameter getestet werden. Wie in den Grundlagen beschrieben, lässt sich die SWIPolicy
nicht ohne weiteres verändern. Aufgrund der Tatsache, dass die SWIPolicy sich nicht im
beschreibbaren Speicher des Mobiltelefons befindet, muss hier zu einem Trick aus Kapitel 7
gegriffen werden. Eine weitere Option ist der Symbian OS Emulator. Im Symbian Emulator
ist die SWIPolicy frei zugänglich und könnte ohne weitere Beschränkungen bearbeitet werden.
Jedoch macht das wenig Sinn, denn die Anwendungen werden im Emulator nicht installiert,
sondern der „Compiler“ für die Emulator-Plattform übernimmt diese Aufgabe und kopiert die
Dateien in die richtigen Verzeichnisse.
Die in diesem Zusammenhang besonders wichtigen Parameter der SWIPolicy sind Allow
Unsigned, OcspEnabled, OcspMandatory, AllowGrantUserCapabilities, UserCapabilities
und AllowRunOnInstallUnstall. Diese Parameter sind für die Installation maßgeblich und
müssen deshalb auch näher betrachtet werden. Weitere Konfigurationsmöglichkeiten, die beim
Installieren neuer Anwendungen eine Rolle spielen, sind die Einstellungen, die der Benutzer
auf dem Mobiltelefon tätigen kann. Hier kann er festlegen, ob alle oder nur signierte Software
installiert werden kann. Weitere Punkte sind die Einstellung für die Online-Zertifikatsprüfung
(OCSP) sowie die Angabe einer Standard-Web-Adresse.
Da die SWInstaller Tests keine Funktionalität zur Laufzeit benötigen, wird hier nur eine sehr
simple Konsolen-Anwendung vom Code-Builder erzeugt. Die Schlüsselwörter, die der Test
verwendet, sind neben Capability und Signed, ein MIME-Typ und seine zugehörige Datei
File. Mit dem MIME-Typ kann jeder unterstützte MIME-Typ beim Installieren ausgeführt und
mit der richtigen Anwendung verknüpft werden. Wie oben auch teilweise erläutert, wird bei
diesem Test die Emulator-Plattform nicht unterstützt. Das nachfolgende Beispiel 4.4 zeigt
die Definition zweier SWInstaller-Testfälle. Im ersten Testfall wird versucht, mit Hilfe des
„FILERUN“-MIME-Typs die definierte Anwendung während der Installation zu starten. Der
zweite Testfall zeigt den Versuch, die angegebene Datei in das entsprechende Verzeichnis zu
kopieren.
Quelltext 4.4: Beispiel SWInstaller
SWInstaller {
Capability : LocalServices NetworkServices ReadUserData WriteUserData
UserEnvironment
Signed : root
MIME : FR , RI
Path : \\ sys \\ bin
File : Console_SWI . exe
--Capability : LocalServices NetworkServices ReadUserData WriteUserData
UserEnvironment
Drive : C
Path : \\ resource
File : Console_Copy . exe
Signed : self
49
4. Testsystem
--}
4.2.5. Certificate
Die Certificate-Tests sind den SWInstaller-Tests vom Aufbau sehr ähnlich, zielen jedoch auf
die Untersuchung der einzelnen Zertifikate und deren Installationsmöglichkeiten. Auch für diesen Testbereich bietet die SWIPolicy wichtige zu untersuchende Punkte, sodass MandateCode
SigningExtension, MandatePolicies und Oid näher betrachtet werden müssen. Für diesen
Testbereich generiert der Code-Builder auch nur eine einfache Konsolen-Anwendung, die zur
Laufzeit keine Funktionalität bietet. Da dieser Testbereich nur für die Untersuchung der Zertifikate zuständig ist, besitzt dieser Test nur die Schlüsselwörter Capability und Signed. Durch
die Verwendung unterschiedlicher Zertifikate untersucht dieser Test die Installationsmöglichkeiten der Basis-Anwendung mit zahlreichen Capabilities. Parallel dazu wird die SWIPolicy
mit dem gleichen Trick wie auch schon bei den SWInstaller-Tests konfiguriert, um so die
Einstellmöglichkeiten der Zertifikate zu untersuchen. Die Definitionen der verwendeten SWIPolicies sind in A.3 aufgeführt. Das folgende Beispiel 4.5 zeigt einen Testfall, indem versucht
wird, mit einem selbst erstellten Zertifikat und den definierten Capabilities den Testfall zu
installieren.
Quelltext 4.5: Beispiel Certificate
Certificate {
Capability : Location PowerMgmt ProtServ ReadDeviceData SurroundingsDD
SwEvent TrustedUI WriteDeviceData
Signed : self
--}
4.2.6. Capabilities
Capabilities stellen zusammen mit dem Data Caging das zentrale Konzept hinter der PSA
dar. Deshalb sollte dieses Sicherheitsmerkmal keine Fehler oder sonstigen Lücken enthalten.
Um einen großen Bereich der Capabilities abzudecken, bietet das Schlüsselwort CapTests die
Möglichkeit, für jede Capability einen Test zu definieren, der auch wirklich diese Capabilities
benötigt. Dadurch kann feststellt werden, ob die in der Dokumentation geforderten Capabilities für die entsprechenden Methoden ausreichen oder unzureichend sind. Weiterhin soll
dieser Testbereich zeigen, ob alle Capabilities notwendig sind oder nur teilweise im Verbund
mit anderen Capabilities benötigt werden. Um Capabilities für die einzelnen Tests zu definieren, wird auch in diesem Testbereich das Schlüsselwort Capability bereitgestellt. Ein weiteres
Schlüsselwort ist Kind. Hier kann angegeben werden, welche Anwendungsart der Code-Builder
erzeugen soll. Zur Auswahl stehen eine normale GUI-Anwendung, eine Dynamic Link Library
sowie eine zweiteilige Client/Server-Anwendung. Die GUI-Anwendung wird mit exe erstellt
und dient hauptsächlich der Untersuchung der Capabilities in Verbindung mit CapTests. Wird
Kind mit dll definiert, erzeugt der Code-Builder eine DLL. Diese DLL wird gegen eine anschließend spezifizierte exe gelinkt. Es kann aber eine weitere dll definiert werden, sodass
50
4.2. Beschreibung der Testfälle
diese gegen die vorhergehende DLL gelinkt wird. Jedoch muss diese Kette in einer exe enden, damit die erzeugten DLLs im resultierenden Test benutzt werden können. Durch diesen
Testfall kann die korrekte Funktionsweise der Capability-Regeln gezeigt oder widerlegt werden. Eine ebenfalls bedeutende Rolle wird im Symbian OS dem Client/Server-Konzept zuteil.
Dieses recht intensiv genutzte Konzept muss deshalb näher untersucht werden, um die Wechselwirkung der Capabilities zwischen Client und Server zu untersuchen. Das Client/ServerFramework besteht in der Testsystem-Implementierung aus einer GUI-Anwendung als Client
und einer Server-Anwendung, die vom Client im Hintergrund gestartet wird. Hier können Client und Server separat mit Hilfe des Code-Builders durch die Definition von Kind als client
beziehungsweise als server generiert werden. Wird Kind hingegen auf cs gesetzt, so erstellt
der Code-Builder automatisch beide Anwendungen. Der nachfolgende Quelltext 4.6 zeigt zwei
Beispiele zur Definition der Capabilities-Testfälle. Dabei wird im ersten Beispiel auf der linken Seite des Quelltexts eine DLL definiert, die im anschließenden Testfall benutzt wird. Das
zweite Beispiel auf der rechten Seite zeigt die Definition eines Client/Server-Testfalls.
Quelltext 4.6: Beispiel Capabilities
Capabilities {
Capability : None
Signed : root
CapTests : none
Kind : dll
--Capability : None
Signed : self
CapTests : none
Kind : exe
--}
Capabilities {
Capability : WriteUserData AllFiles
Signed : root
Kind : client
--Capability : None
Signed : self
Kind : server
--}
4.2.7. Integrity
Dieser Test soll die Integrität der bereits installierten Daten sowie die Integrität der Installationspakete untersuchen. Die ausführbaren Dateien, die sich auf dem Flash-Speicher des
Mobiltelefons befinden, sind durch das Data-Caging geschützt. Anwendungen, die auf einem
herausnehmbaren Speichermedium installiert werden, sind jedoch nur durch einen Hash geschützt. Das Data Caging greift nur, wenn die Speicherkarte im Mobiltelefon eingelegt ist.
Wird hingegen die Speicherkarte aus dem Mobiltelefon herausgenommen, kann auf alle geschützten Verzeichnisse zugegriffen werden, wodurch die Dateien durch das Data Caging nicht
mehr geschützt sind. Ein weiterer zu untersuchender Punkt sind vorinstallierte Anwendungen
auf Speicherkarten. Um diese einzelnen Punkte zu prüfen, besitzt der Integrity-Testbereich
wie auch andere Testbereiche die Schlüsselwörter Capability, Signed, Drive, Path und File.
Durch die Angabe beliebiger Dateien kann so versucht werden, bereits installierte Anwendungen zu verändern oder neue Hash-Dateien zu installieren.
Nachdem die Testfälle in ihrer gewählten Form generiert wurden, müssen sie nur noch für die
Tests auf dem Mobiltelefon vorbereitet werden. Das kann beispielsweise die Modifikation des
Installationspaketes beinhalten oder die Veränderung der ausführbaren Dateien samt ihrer
51
4. Testsystem
Hashes. Die Vorbereitungen zu den einzelnen Tests werden im Kapitel 5.1.1 beschrieben. Das
Beispiel 4.7 zeigt eine mögliche Definition eines Integrity-Testfalls.
Quelltext 4.7: Beispiel Integrity
Integrity {
Capability : LocalServices NetworkServices ReadUserData WriteUserData
UserEnvironment
Signed : self
File : IntegrityTestText . txt
Path : \\ private
Drive : C
--}
4.2.8. Shared-Data
Damit Prozesse in Symbian OS Daten untereinander austauschen können, benötigen sie einen
sicheren Mechanismus, der das gewährleistet. Symbian bietet hier zahlreiche Mechanismen
und Konzepte, wie Daten unterschiedlicher Größe und verschiedener Typen untereinander getauscht werden können. Der Shared-Data-Testbereich deckt hier nur einen Teil dieser Mechanismen ab. Das Client/Server-Konzept wurde schon unter dem Gesichtspunkt der Capabilities
untersucht, sodass hier weitere Mechanismen betrachtet werden können. Der Shared-DataTestbereich untersucht die Konzepte Publish & Subscribe, File Handle und Data Chunk.
Auch hier finden die Schlüsselwörter Capability, Signed und Kind ihre Verwendung. Während Capability und Signed standardmäßig gebraucht werden, bietet Kind die Shared-DataKonzepte Publish & Subscribe mit dem Schlüsselwort ps, File Handle mit fs und Data Chunk
mit chunk. Innerhalb dieses Testbereichs werden abhängig von ProcessType zwei einfache
Konsolenanwendungen erzeugt. Wird der ProcessType mit main definiert, so generiert der
Code-Builder eine Hauptanwendung, die zur Laufzeit die Anwendung mit dem ProcessType
simple startet. Die Hauptanwendung definiert abhängig vom Kind einen Datentyp, auf den
der ProcessType simple versucht, zuzugreifen. Beim Publish & Subscribe-Konzept werden
außerdem noch weitere Angaben für den main Prozesstyp verlangt. Hier müssen noch zusätzlich eine WritePolicy und eine ReadPolicy angegeben werden, die zur Definition der Property
benötigt werden. Zu jedem Shared-Data-Testfall wird zusätzlich eine Log-Datei geschrieben.
Im Quelltext 4.8 ist ein Beispiel für einen Publish & Subscribe-Testfall gegeben.
Quelltext 4.8: Beispiel Shared-Data
Shared - Data {
Capability : WriteUserData
Signed : self
Kind : ps
ProcessType : main
ReadPolicy : ECapabilit yReadUserDa ta
WritePolicy : E Capa bili tyW rite User Data
--Capability : ReadUserData
52
4.2. Beschreibung der Testfälle
Signed : self
Kind : ps
ProcessType : simple
--}
4.2.9. IDs
In diesem Testbereich sollen alle IDs untersucht werden, die Symbian OS in Version 9 unterstützt. Hier soll das Zusammenspiel aller IDs im Zusammenhang mit dem SWInstaller und
den Auswirkungen zur Laufzeit überprüft werden. Zu diesem Zweck stellt der IDs-Testbereich
alle verfügbaren IDs als Schlüsselwörter zur Verfügung. Im Einzelnen können so die Schlüsselwörter UID2, UI3, SID, VID und pUID definiert werden. Mit Hilfe dieser Schlüsselwörter lassen
sich alle möglichen Kombinationen und UID-Bereiche gemäß der Dokumentation untersuchen.
Die IDs werden in hexadezimaler Schreibweise ohne „0x“ angegeben. Für diesen Testbereich
wird, wie es auch teilweise andere Testfälle verwenden, eine GUI-Anwendung zur Verifikation
der Funktionsweise erstellt. Damit die Testfälle vollständig erstellt werden können, müssen
noch die Capabilities mit Capability und ein Zertifikat mittels Signed angegeben werden.
Das untenstehende Beispiel 4.9 zeigt die Definition eines IDs-Testfalls, indem IDs aus dem
Symbian Version 9 Testbereich untersucht werden.
Quelltext 4.9: Beispiel IDs
IDs {
Capability : ReadUserData WriteUserData
Signed : root
UID2 : 100039 CE
UID3 : E2CA1D56
SID : E2CA1D56
VID : 7 A567890
pUID : E2CA1D56
--}
4.2.10. User-Defined
Die bis jetzt beschriebenen Testfelder sind alle nur für den jeweiligen Testbereich definiert.
Es gibt kaum Möglichkeiten, andere Schlüsselwörter als die vorgegebenen zu verwenden. Die
Schlüsselwörter sind mit dem jeweiligen Testbereich fest verankert und lassen sich auch nicht
verändern. Dieses Problem löst der User-Defined-Testbereich. Hier besteht nun die Gelegenheit, ein Testfeld nach Wünschen oder Vorstellungen des Benutzers generieren zu lassen. Der
Testbereich kann dabei einen beliebigen Namen tragen, jedoch mit der Einschränkung schon
definierter Namen anderer Testfelder. In einem selbst definierten Testfall können alle Schlüsselwörter aus dem gesamten Testsystem verwendet werden. Teilweise in Kombinationen jeglicher
Art. Zu Beginn eines Testfalls sind die notwendigen Parameter, die durch die Schlüsselwörter
beeinflusst werden können, mit Standardwerten initialisiert. Diese Parameter können aber
53
4. Testsystem
durch die entsprechenden Schlüsselwörter wieder redefiniert werden. Beispielsweise ist die
UID2 mit 100039CE initialisiert, das für eine GUI-Anwendung steht. Die weiteren IDs UID3,
SID und pUID sind am Anfang mit der gleichen zufälligen ID, die innerhalb des geschützten
Bereichs liegt, definiert. Durch diese Vordefinitionen wird es ermöglicht, sehr einfache aber
spezielle Testfälle zu erzeugen. Die Beschränkungen der jeweiligen anderen Testbereiche in
ihren Schlüsselwörtern gelten hier natürlich auch. Als Beispiel sei das Schlüsselwort File genannt, das ohne MINE oder ohne Path und Drive keine Bedeutung hat. Der untenstehende
Quelltext 4.10 zeigt beispielsweise die Definition einer vorinstallierten Anwendung, die nur
einen globalen Chunk erstellt.
Quelltext 4.10: Beispiel User-Defined
ExampleNameTest {
Capability : LocalServices NetworkServices ReadUserData
Type : PA
Code [
RChunk chk ;
_LIT ( KChunkName , " My Global Chunk ");
TInt rc = chk . CreateGlobal ( KChunkName , 0 x100 , 0 x100 );
]
--}
4.2.11. API
Der abschließende Testbereich beschäftigt sich mit dem „Black Box Testing“ [12]. Auch diese
„Testsuite“ sollte über eine Möglichkeit verfügen, Methoden auf ihre korrekte Funktionalität
bezogen auf ihrer Eingabe- und Rückgabewerte beziehungsweise erwartete Rückgabewerte zu
testen. Es ist ein sehr einfaches Testfeld, verlangt aber vom Benutzer etwas Verständnis für
Symbian C++. Der API-Testbereich besteht aus den Schlüsselwörtern Capability, Class,
Method, ExpectedOutputValue, Parameter und PrepareCode. Class gibt die Klasse an, in der
sich die zu testende Methode befindet. Mit Method wird der Name der zu testenden Methode
angegeben und mit Parameter die entsprechenden Parameter, die die Methode erwartet, definiert. Hierfür prüft der API-Testbereich auf Gleichheit zwischen dem erwarteten Rückgabewert ExpectedOutputValue, der Funktion und dem tatsächlich resultierenden Rückgabewert.
Sind der erwartete Rückgabewert und der tatsächlich resultierende Rückgabewert identisch,
ist der Test erfolgreich bestanden, ansonsten schlägt der Test fehl. In beiden Fällen werden die
Methodenaufrufe protokolliert und in eine Log-Datei geschrieben. Müssen für die angegebene
Methode noch bestimmte Variablen initialisiert oder sonstige Vorbereitungen getroffen werden, kann mit PrepareCode der entsprechende Quellcode geschrieben werden. Der Quellcode
muss auch hier in Symbian C++ geschrieben werden und zudem syntaktisch korrekt sein. Der
Quelltext 4.11 zeigt einen API-Testfall für die Create-Methode aus der RFile-Klasse. Dabei
wird überprüft, ob mit unzureichenden Capabilities der Versuch, eine Datei in \sys\bin zu
erstellen, verweigert wird.
Quelltext 4.11: Beispiel API
API {
Capability : ReadUserData
54
4.3. Definition/Spezifizierung der Testfälle
Class : RFile
Method : Create
ExpectedOutputValue : -46
Parameter : session2 , _L (" C :\\ sys \\ bin \\ TestAPI . txt ") , EFileRead
PrepareCode [
RFs session2 ;
session2 . Connect ();
]
--}
4.3. Definition/Spezifizierung der Testfälle
Dieser Abschnitt beschreibt die sinnvolle Definition der einzelnen Testfälle. Hier werden die
Ideen für die einzelnen Testfälle beschrieben, wie sie definiert werden müssen, sodass die
beschriebenen Parameter in 3.1 verifiziert werden können.
4.3.1. Data Caging
Die Definition dieses Testbereichs soll den Zugriff auf die geschützten Verzeichnisse zeigen.
Die Testfälle werden so definiert, dass auf alle verfügbaren Laufwerke lesend und schreibend
versucht wird zuzugreifen. Bei Mobiltelefonen mit einer zusätzlichen Speicherkarte oder einem
weiteren Flash-Speicher werden die Laufwerke C, E und Z untersucht. Laufwerk C ist dabei
der interne Flash-Speicher und Laufwerk Z bildet den nicht beschreibbaren ROM-Speicher
ab. Beide Laufwerke sind auf allen Symbian Version 9 Geräten vorhanden. Laufwerk E ist
hingegen nur auf Mobiltelefonen mit einer zusätzlichen Speicherkarte oder einem weiteren,
internen Flash-Speicher verfügbar. Auf diesen Laufwerken sind die geschützten Verzeichnisse
\sys, \resource, \private\<ownSID> und \private von besonderem Interesse. Im ersten
Teil der Tests soll deshalb lesend auf die Verzeichnisse zugegriffen werden. Dazu werden in
der Vorbereitung der Testfälle (Abschnitt 5.1.1) Text-Dateien in diese Verzeichnisse abgelegt,
um anschließend auf diese Dateien mit den entsprechenden Capabilities zugreifen zu können.
Im zweiten Teil der Tests wird schreibend auf diese Verzeichnisse zugegriffen. Dabei wird
versucht, eine Datei in diesen Verzeichnissen zu erstellen. Damit die korrekte Funktionsweise
des Data Caging verifiziert werden kann, müssen die Capabilities AllFiles und Tcb benutzt
werden. Um zu zeigen, dass nur mit diesen Capabilities auf die geschützten Verzeichnisse
zugegriffen werden kann, gibt es ergänzende Tests, die ohne die entsprechenden Capabilities
versuchen, auf die geschützten Verzeichnisse zuzugreifen.
4.3.2. File Eclipsing
Diese Tests müssen so definiert werden, dass die Eclipsing-Regeln während der Installation
und zur Laufzeit verifiziert werden. Bei der Definition der Testfälle haben sich drei Bereiche
ergeben.
55
4. Testsystem
Im ersten Bereich wird versucht, das Installationspaket in eine Eclipsing-Situation zu führen.
Dafür werden zunächst Installationspakete als self- und root-signiert definiert, die für die
Installation auf dem internen Speicher vorgesehen werden. Die Installationspakete werden als
SA-Typ in der Version 1,0,0 installiert. Um die Eclipsing-Situation herzustellen, müssen weitere Installationspakete definiert werden, die jedoch für die Installation auf der Speicherkarte
vorgesehen werden. Diese Installationspakete werden dabei jeweils als self-, dev- und rootsigniert definiert, um die Vertrauenswürdigkeit, die die einzelnen Installationspakete durch
die Signierung erhalten, gemäß den File-Eclipsing-Regeln zu untersuchen.
Im nächsten Bereich soll versucht werden, einzelne Dateien während der Installation in eine
Eclipsing-Situation zu bringen. Dazu werden erneut die Installationspakete als self- und
root-signiert definiert. Zusätzlich wird das Installationspaket so definiert, dass zunächst drei
Text-Dateien in \\Test\\Eclipsing auf Laufwerk C abgelegt werden. Diese Pakete werden
auf dem internen Laufwerk installiert. Anschließend werden drei Installationspakete definiert,
die jeweils self-, dev- und root-signiert werden und eine Text-Datei in \\Test\\Eclipsing
auf Laufwerk E kopieren sollen. Dadurch wird bei der Installation eine Eclipsing-Situation
hergestellt, die abhängig der Signierung des Installationspaketes vom SWInstaller zugelassen
oder verweigert wird. Diese Eclipsing-Situationen können aber auch mit EXE- und DLLDateien untersucht werden. Dazu werden die Installationspakete so definiert, dass die EXEbeziehungsweise DLL-Dateien statt in \\Test\\Eclipsing einfach in \\sys\\bin abgelegt
werden.
Der letzte Bereich soll so definiert werden, dass Dateien zur Laufzeit in eine Eclipsing-Situation
gebracht werden. Dazu werden erneut Installationspakete definiert, die jedoch zur Laufzeit
drei Text-Dateien in \\Test\\Eclipsing auf dem Laufwerk C erzeugen. Anschließend werden die Installationspakete self- und root-signiert. Die weiteren Installationspakete, die die
Eclipsing-Situation zur Laufzeit erzeugen sollen, werden jeweils als self-, dev- und rootsigniert definiert. Diese Installationspakete werden zudem so definiert, dass sie jeweils versuchen, eine Text-Datei in \\Test\\Eclipsing auf Laufwerk E zu erzeugen.
Bei der Definition der Testfälle sind die Capabilities nebensächlich und deshalb müssen auch
keine Capabilities für diese Testfälle definiert werden.
4.3.3. File Overwriting
Die File-Overwriting-Tests müssen so spezifiziert werden, dass die Update-Möglichkeiten und
die File-Overwriting-Regeln während der Installation genauso wie zur Laufzeit verifiziert werden. Dabei kann die Definition in vier Bereiche gegliedert werden.
Der erste Bereich dient der Verifikation der Update-Möglichkeiten. Zunächst wird eine „Basis“
für die Updates geschaffen. Dazu werden jeweils drei Testfälle, die als SA-Installationstyp in der
Version 1,0,0 definiert werden, auf dem internen Speicher installiert. Die Installationspakete
werden dabei self- und root-signiert. Damit nun die Updates verifiziert werden können,
werden drei Testfälle mit dem Installationstyp PU in der Version 2,0,0 und drei Testfälle mit
dem Installationstyp SP in der Version 2,0,0 definiert. Die Update-Testfälle werden selfund root-signiert. Die SP-Testfälle liefern in diesem Test neue Text-Dateien und legen sie
in \\private ab. Als zusätzlichen Test soll eine Konflikt-Situation provoziert werden, die
durch eine Datei eines SP-Installationstyps mit einer bereits vorhandenen Datei hervorgerufen
werden soll.
56
4.3. Definition/Spezifizierung der Testfälle
Im nächsten Bereich soll das File Overwriting für ein ganzes Paket versucht werden. Hierfür
werden zunächst jeweils drei self- und root-signierte Testfälle als SA-Installationstyp in der
Version 1,0,0 definiert. Die überschreibenden Testfälle werden self-, dev und root-signiert
und als SA-Installationstyp in der Version 2,0,0 definiert.
Im dritten Bereich wird versucht, einzelne Dateien während der Installation zu überschreiben. Dafür wird zunächst ein Testfall definiert, der zu überschreibende Text-Dateien in \\Test
\\Overwriting auf Laufwerk C kopieren soll und dabei self-signiert wird. Anschließend werden drei Testfälle definiert, die self-, dev und root-signiert werden und mit diesen verschiedenen Signierungen versuchen, beim Installieren die entsprechende Text-Datei in \\Test
\\Overwriting zu überschreiben. Zwei weitere jeweils ähnlich aufgebaute Testfälle versuchen, statt Text-Dateien, EXE- und DLL-Dateien in \\sys\\bin zu überschreiben. Wie in
den anderen Testfällen auch, muss zuvor ein Testfall definiert werden, der die entsprechenden
EXE- und DLL-Dateien nach \\sys\\bin kopiert. Die jeweiligen Testfälle versuchen auch,
mit den unterschiedlichen Zertifikaten self, dev und root, die EXE- und DLL-Dateien zu
überschreiben.
Der letzte Bereich soll so definiert werden, dass Dateien zur Laufzeit überschrieben werden
können. Für diesen Test werden erneut Testfälle definiert, die zunächst Text-Dateien zur
Laufzeit in \\Test\\Overwriting auf Laufwerk C erstellen. Die Installationspakete für diese
Testfälle werden dabei self- und root-signiert. Die weiteren Testfälle müssen so definiert
werden, dass die jeweiligen Testfälle self-, dev- und root-signiert sind und die entsprechenden
Text-Dateien in \\Text\\Overwriting versucht werden zu überschreiben.
4.3.4. SWInstaller
Die Definition dieser Tests soll die Funktionsweise der SWInstallers verifizieren und anhand
verschiedener SWIPolicies die Konfigurationsmöglichkeiten aufzeigen. Hierfür wird die Definition der Tests in drei Bereiche geteilt.
Der erste Bereich soll die verschiedenen Installationsoptionen, die in der Paketdatei festgelegt
werden können, untersuchen. In diesem Test wird stellvertretend für den „FILEMIME“ und
„FILETEXT“, der „FILERUN“-Installationstyp einer Datei überprüft. Beim „FILETEXT“Installationstyp wird nur der Inhalt der entsprechenden Textdatei bei der Installation oder
Deinstallation der Anwendung angezeigt. Beim „FILEMIME“-Installationstyp wird abhängig
vom spezifizierten „MIME-Typ“ die damit assoziierte Anwendung mit der angegebenen Datei
gestartet. Für diesen Test werden vier Testfälle definiert, die alle mit User Capabilities ausgestattet werden und dabei none-, self-, dev- und root-signiert werden. Für den „FILERUN“Installationstyp wird MIME mit FR,RI definiert und die entsprechende EXE-Datei, die nur
bei der Installation ausgeführt wird, nach \\sys\\bin kopiert. Dabei muss auch der Parameter der SWIPolicy AllowRunOnInstallUninstall mit verschiedenen Einstellungen untersucht
werden.
Im nächsten Bereich wird die Fähigkeit des SWInstallers getestet, verschiedene Dateien in
geschützte Verzeichnisse zu kopieren. Dafür werden die Tests so definiert, dass zunächst für
jedes Zertifikat none, self, dev und root jeweils acht Testfälle erstellt werden, die alle User
Capabilities besitzen. Weiter muss die Definition für jeden einzelnen Testfall eine Textdatei beziehungsweise EXE-Datei enthalten, die während der Installation in die Verzeichnisse
\\sys\\bin, \\resource, \\private\\EHome und \\private kopiert wird.
57
4. Testsystem
Der letzte Bereich der SWInstaller Tests soll hauptsächlich die Parameter AllowUnsigned,
AllowGrantUserCapabilities und UserCapabilities der SWIPolicy verifizieren. Dazu werden erneut für jedes Zertifikat none, self, dev und root jeweils vier Testfälle definiert. Der
erste Testfall wird mit allen User Capabilities ausgestattet, der nächste Testfall wird zusätzlich zu den User Capabilities mit der PowerMgmt Capability aus den Developer Capabilities
spezifiziert. Der dritte Testfall wird zusätzlich zu den Capabilities, die im zweiten Testfall spezifiziert wurden, mit einer Symbian Signed Capability DiskAdmin definiert. Der letzte Testfall
in diesem Bereich wird mit allen zuvor genannten Capabilities definiert und zusätzlich mit
der Tcb Capability ausgestattet.
4.3.5. Certificate
Dieser Test dient hauptsächlich der Verifikation der Zertifikate unter dem Gesichtspunkt der
Capabilities. Für diesen Test werden für jedes Zertifikat none, self, dev und root jeweils
vier Testfälle definiert und auch mit dem jeweiligen Zertifikat signiert. Dabei wird der erste
Testfall nur mit User Capabilities ausgestattet, der zweite Testfall mit Developer Capabilities, die die Capabilities Location, PowerMgmt, ProtServ, ReadDeviceData, SurroundingsDD,
SWEvent, TrustedUI und WriteDeviceData enthalten. Der dritte Testfall wird mit Symbian Signed Capabilities definiert. Die Symbian Signed Capabilities umfassen MultimediaDD,
NetworkControl, CommDD und DiskAdmin. Die System Capabilities wurden hier nur unterteilt, weil ein Developer-Zertifikat höchstens Developer Capabilities gewähren kann. Der letzte
Testfall wird schließlich mit Device Manufacturer Capabilities spezifiziert.
4.3.6. Capabilities
Damit die Capability-Regeln und die korrekte Funktionsweise der einzelnen Capabilities verifiziert werden kann, wird hier die Definition dieser Tests beschrieben. In einem weiteren Test, der
in diesem Zusammenhang definiert wird, soll die korrekte Funktionsweise der Client/ServerArchitektur gezeigt werden.
Für die Verifikation der Capability-Regeln werden zunächst jeweils zwei Testfälle und anschließend jeweils vier Testfälle definiert. Der erste Testfall wird dabei als dll definiert und gegen
den zweiten Testfall, der als exe spezifiziert wird, „gelinkt“. Bei den vier Testfällen werden
drei dll und eine exe definiert, die gemäß Abbildung 4.1 ineinander „gelinkt“ werden. Dafür
werden unterschiedliche Capabilities sowohl für die EXE als auch für die DLL gewählt und
mit verschiedenen Zertifikaten self-, dev- und root-signiert.
Abbildung 4.1.: Definition der Capability-Regeln
Bei den einzelnen Capability-Tests wird Kind als exe definiert und CapTests mit jeweils
einem ausgewählten Capability-Test spezifiziert. Um die Notwendigkeit der entsprechenden
Capability zu zeigen, werden die Testfälle einmal mit der entsprechenden Capability und
einmal ohne die Capability definiert.
58
4.3. Definition/Spezifizierung der Testfälle
Bei der Definition der Client/Server-Tests werden zunächst sowohl Client als auch Server mit
den identischen Capabilities definiert und zu einem einzigen Installationspaket zusammengefasst. Die weiteren Client/Server-Tests werden separat mit client und server definiert.
Hierfür werden die Tests mit unterschiedlichen Capabilities und Zertifikaten ausgestattet,
damit die Wechselwirkungen mit den Capabilities untersucht werden können.
4.3.7. Integrity
Die Definition der Integrity-Testfälle kann in vier Bereiche unterteilt werden. Im ersten Bereich wird die Integrität der Installationspakete untersucht. Dazu werden vier Testfälle mit
User Capabilities und verschiedenen Signierungen definiert. Anschließend müssen die erstellten
Installationspakete noch entsprechend vorbereitet werden. Die Vorbereitung der Installationspakete ist in 5.1.1 beschrieben.
Der zweite Bereich definiert die Testfälle, die die Integrität der EXE-Dateien auf unterschiedlichen Laufwerken untersuchen sollen. Hierfür werden zunächst acht Testfälle definiert, die
selbst signiert sind und User Capabilities besitzen. Vier der Testfälle werden auf dem internen Speicher installiert. Die restlichen vier Installationspakete werden anschließend auf der
Speicherkarte der Testgeräte installiert. Bevor die Testfälle jedoch ausgeführt werden können,
müssen sie dafür wieder vorbereitet werden.
Der dritte Bereich untersucht die Integrität der Ressourcen, die mit dem Installationspaket
bereitgestellt werden. Hierfür werden erneut vier Testfälle mit User Capabilities und einem
selbst signierten Zertifikat definiert. Zwei dieser Testfälle werden auf dem internen Speicher
installiert und die beiden restlichen Installationspakete auf der Speicherkarte.
Der letzte Bereich der Integrity-Testfälle untersucht die Integrität vorinstallierter Anwendungen. Für diese Testfälle wird der User-Defined-Testbereich benutzt, da der IntegrityTestbereich keinen PA-Installationstyp unterstützt. Für diesen Zweck werden acht Testfälle
definiert, alle mit dem PA-Installationstyp, User Capabilities und einem selbst signierten Zertifikat. Vier dieser Testfälle werden ordnungsgemäß nach Einlegen der Speicherkarte installiert
und anschließend erst für den eigentlichen Test vorbereitet. Die verbleibenden vier Testfälle
werden zunächst auf die Speicherkarte kopiert, jedoch erst nachdem die einzelnen Vorbereitungen durchgeführt worden sind, werden die Testfälle installiert.
4.3.8. Shared-Data
Bei der Definition der Shared-Data-Testfälle müssen diese gemäß der Spezifikation in Abschnitt 3.1.2 in drei Bereiche definiert werden, Publish & Subscribe, File Handle und Data
Chunk. Bei dieser Art der Testfälle muss ähnlich der Client/Server-Testfälle zunächst mit
main eine Hauptanwendung definiert werden, die anschließend eine Hilfsanwendung startet.
Die Hilfsanwendung versucht, abhängig von der Zugriffsart auf die Daten der Hauptanwendung zuzugreifen und kann mit simple definiert werden.
Beim Publish & Subscribe wird zunächst die Funktionsweise überprüft. Dafür wird die Hauptanwendung mit einer ReadPolicy und einer WritePolicy definiert, die den Zugriff auf die Property durch Capabilities beschränken kann. Zunächst werden die Policies so definiert, dass nur
59
4. Testsystem
mit den entsprechenden Capabilities die Property von den Anwendungen beschrieben beziehungsweise gelesen werden kann. Anschließend werden die Policies mit Capabilities definiert,
die die Anwendungen main beziehungsweise simple nicht besitzen.
Beim File-Handle-Bereich müssen die Testfälle zunächst so definiert werden, dass die Funktionsweise gewährleistet werden kann. Dazu werden beide Anwendungen main und simple
mit den identischen Capabilities ausgestattet, um anschließend die Anwendungen noch mit
unterschiedlichen Capabilities zu definieren.
Im Data-Chunk-Bereich werden, wie im File-Handle-Bereich, die beiden Anwendungen zunächst mit den gleichen Capabilities spezifiziert, um auch hier die korrekte Funktionsweise
zu zeigen. Anschließend müssen noch main und simple mit unterschiedlichen Capabilities
definiert werden.
Alle definierten Testfälle werden mit einem selbst erstellten Zertifikat signiert, da in diesem
Testbereich nur User Capabilities verwendet werden.
4.3.9. IDs
Bei der Definition des IDs-Testbereichs werden sinnvolle UID-Kombinationen aus geschützten
und ungeschützten UID-Bereichen verwendet. Tabelle 2.6 in Abschnitt 2.4.2 zeigt dabei die
Aufteilung der UID-Bereiche. Im Einzelnen werden die UID3, SID, pUID und VID in diesem
Testbereich definiert. Jeder Testfall wird mit User Capabilities definiert und jeweils mit allen
zur Verfügung stehenden Zertifikaten (Abschnitt 4.1.2) signiert. Die Testfälle mit den UIDs
aus dem Symbian-Testbereich werden als Erstes mit der gleichen UID3, der gleichen SID und
der gleichen pUID definiert. Wenn die VID in den Testfällen nicht explizit definiert ist, wird
sie auf 0 gesetzt. Bei den zweiten Tests ist die UID3 gleich der SID, jedoch ungleich der
pUID. Im nächsten Test sind UID3, SID und pUID voneinander verschieden. Der letzte Test
mit UIDs aus dem Symbian-Testbereich definiert die drei IDs UID3, SID und pUID mit der
gleichen UID, jedoch zusätzlich mit einer VID. Anschließend werden die Testfälle mit UIDs
aus dem geschützten UID-Bereich definiert. Diese Testfälle sind genauso aufgebaut wie die
Tests innerhalb des ungeschützten Bereichs, jedoch werden bei diesen Tests die UIDs aus dem
geschützten Bereich gewählt.
4.3.10. API
Die Definition der API-Testfälle ist hier nur exemplarisch für drei Testfälle gegeben. Der Testbereich soll nur zeigen, dass grundlegendes „Black Box Testing“ vom PSA-Testsystem auch
unterstützt wird. Bei den drei Testfällen werden Methoden aus der RFile-Klasse benutzt.
Dabei wird zunächst bei der Methode Open versucht, eine nicht vorhandene Text-Datei zu
öffnen. Beim Versuch, die Datei dennoch zu öffnen, soll der Fehlercode -1 auftreten als Hinweis darauf, dass die Datei nicht gefunden werden konnte. Dazu wird im ersten Testfall Class
mit RFile, Methode mit Open und ExpectedOutputValue mit -1 definiert. In einem weiteren Testfall soll mit der Methode Create versucht werden, eine Datei in einem geschützten
Verzeichnis ohne die entsprechenden Rechte zu erstellen. Dabei sollte der Fehlercode -46 auftreten als Hinweis für unzureichende Schreibrechte für dieses Verzeichnis. Für die Definition
60
4.3. Definition/Spezifizierung der Testfälle
des Testfalls muss nur Method und ExpectedOutputValue auf die entsprechenden Werte gegenüber dem ersten Testfall geändert werden. Beim letzten API-Test soll die Methode Create
beim Erstellen einer Datei in einem nicht geschützen Verzeichnis den Fehlercode 0 liefern,
sodass für die Definition die Parameter aus dem zweiten Testfall übernommen werden können
und nur ExpectedOutputValue auf 0 geändert werden muss.
61
5. Ergebnisse und Evaluierung
Dieses Kapitel beschreibt zunächst den Versuchsaufbau und die Durchführung der Tests.
Anschließend werden die Ergebnisse der zuvor definierten Testfälle präsentiert. Anhand der
Ergebnisse wird im letzten Abschnitt die Frage geklärt, ob die spezifizierte Funktionsweise
der PSA gegeben ist.
5.1. Versuchsaufbau
Dieser Abschnitt beschreibt die Testumgebung und den deren Aufbau. Zunächst werden kurz
die nötigen Vorbereitungen für die einzelnen Testbereich erläutert, beispielsweise welche Tools
installiert werden müssen oder benutzt werden. Anschließend wird die verwendete Hard- und
Software beschrieben.
5.1.1. Vorbereitung
Bevor die einzelnen Tests durchgeführt werden können, müssen bestimmte Vorbereitungen
sowohl im Emulator als auch auf dem Mobiltelefon getroffen werden. Jedes Mobiltelefon muss
zunächst geprüft werden, ob es eine Möglichkeit zur Speicherkartenerweiterung besitzt. Bei
gegebener Speicherkartenunterstützung muss sichergestellt werden, dass alle Testgeräte während der Tests mit einer Speicherkarte bestückt sind. Die Speicherkarte wird besonders bei den
Eclipsing- und Integrity-Testfällen benötigt. Im Emulator muss hingegen nur ein entsprechendes virtuelles Laufwerk erstellt werden, das jedoch nicht mit einer Speicherkarte auf einem
Mobiltelefon verglichen werden kann. Wird eine neue Speicherkarte in ein Symbian Version 9
Mobiltelefon eingelegt, so wird diese automatisch formatiert und die wichtigsten Verzeichnisse
werden erstellt. Neben Verzeichnissen für Bilder und anderen Dateien werden auch die PSA
relevanten Verzeichnisse erstellt. Im Vergleich dazu werden im Emulator diese PSA relevanten
Verzeichnisse nicht erstellt.
Um die Protokollierung während den Tests zu ermöglichen, muss vorbereitend die File-LoggerDLL sowie die Ownfile-Logger-DLL (Abschnitt 4.1.1) auf allen Testgeräten installiert und für
die Emulator-Plattformen kompiliert werden. Weiter muss für beide Plattformen ein Verzeichnis für Log-Dateien erstellt werden, falls dieses Verzeichnis noch nicht existiert. Eine
sehr nützliche Anwendung, was sich besonders bei der Installation zahlreicher Installationspakete herausgestellt hat, ist der AutoInstaller [21]. Wie bereits der Name der Anwendung
verrät, können mit dem AutoInstaller mehrere Installationspakete hintereinander automatisch und ohne Nachfragen an den Benutzer zu stellen, installiert werden. Zusätzlich wird
auf den Testgeräten noch ein Datei-Manager [22] installiert, der gegenüber dem bereits vorhandenen Symbian-Datei-Manager komfortabler zu bedienen ist und mehr Funktionen bietet.
63
5. Ergebnisse und Evaluierung
Darüber hinaus muss der „ROMPatcher“, der in Kapitel 7 näher beschrieben ist, mit den zugehörigen „Patchen“ installiert werden. Mit dem „ROMPatcher“ können beispielsweise andere
SWIPolicies verwendet werden. Abschließend muss noch die Verifikationsgrundlage für das
„root“-Zertifikat (Abschnitt 7.1.3) installiert werden.
Nachdem all diese testunabhängigen Vorbereitungen getroffen wurden, können die testspezifischen Vorbereitungen für beide Plattformen begonnen werden. Für die Data-Caging-Tests
muss für beide Plattformen eine Textdatei in die Verzeichnisse \\sys, \\resource, \\private
und \\private\\EHome auf den Laufwerken C, E und Z kopiert werden. Diese Textdatei wird
für den lesenden Zugriff auf die genannten Verzeichnisse benötigt. Für die File-EclipsingTestfälle muss auf den Laufwerken C und E das Verzeichnis \\Test\\Eclipsing erstellt werden. Weiter muss sichergestellt werden, dass für diese Testfälle eine Test-EXE-Datei und eine
Test-DLL-Datei verfügbar ist, die beim Erstellen der Installationspakete mit eingebunden werden. Im Emulator muss das \\Test\\Eclipsing Verzeichnis ebenfalls erstellt werden. Beim
File-Overwriting muss hingegen das Verzeichnis \\Test\\Overwriting auf beiden Plattformen erstellt werden. Aber auch bei diesen Testfällen müssen die entsprechenden Test-EXEund Test-DLL-Dateien vorhanden sein. Bei den Integrity-Tests werden vorbereitend ausgewählte SIS-Dateien auf Hex-Ebene so manipuliert, dass die Integrität des Installationspaketes
nicht mehr gegeben ist. Dafür wird beispielsweise in der Installationsdatei am Anfang ihrer
Hex-Darstellung ein Byte verändert. Bei einer anderen Installationsdatei werden an das Ende der Datei Null-Bytes angehängt. Die restlichen Installationsdateien werden an anderen
Stellen im Hex-Code byteweise verändert. Für weitere Integrity-Tests werden von bereits installierten Anwendungen die Capabilities der EXE-Dateien verändert. Dadurch müssen aber
auch die jeweiligen Hash-Werte der EXE-Dateien neu berechnet und ersetzt werden. Für die
SWInstaller- und Zertifikatstests müssen die SWInstaller-Einstellungen vor jedem Test aufgezeichnet werden. Zusätzlich müssen einzelne Zertifikat-Testfälle mit Hilfe des Open-SignedZertifizierungsprogramms signiert werden.
5.1.2. Hardware
Für die einzelnen Tests standen insgesamt vier Mobiltelefone zu Testzwecken zur Verfügung.
Die Details zu den jeweiligen Testgeräten sind in Tabelle 5.1 zusammengefasst. Bei den vier
Testgeräten handelt es sich ausschließlich um Nokia Mobiltelefone und zwei dieser Testgeräte
sind zusätzlich mit einem T-Mobile-“Software-Branding“ ausgestattet. Das N81 besitzt keine Speicherkartenerweiterung, aber dafür einen internen 8 GB Flash-Speicher. Dieser interne
Flash-Speicher kann jedoch wie eine Speicherkarte verwendet werden. Im Dateisystem wird
der 8 GB Flash-Speicher auf das identische Laufwerk wie die Speicherkarte abgebildet und
kann ebenfalls als Wechseldatenträger benutzt werden. Die Kommunikation zwischen PC und
den Testgeräten wurde über die entsprechenden kompatiblen Datenkabel realisiert. Die ver-
Hersteller
Nokia
Nokia
Nokia
Nokia
64
Modell
E61
E90
N81 8GB
N95
Tabelle 5.1.: Testgeräte
Firmware-Version Branding
3.0633.09.04
Kein
07.40.1.2
T-Mobile
10.0.053
T-Mobile
21.0.016
Kein
Speicherkarte
2 GB SanDisk
512 MB Nokia
8 GB Flash
8 GB SanDisk
5.2. Marktabbildung der Testgeräte
schiedenen Versionen der Symbian-Emulatoren wurden auf einem Core2Duo Rechner mit 2
GB RAM und Windows XP Professional mit SP2 ausgeführt.
5.1.3. Software
Wie in 5.1.2 beschrieben, wird während der Tests Windows XP Professional mit SP2 benutzt.
Die Verbindung zwischen PC und Testgerät wird mittels „Nokia PC Suite“ in der Version
6.85.14.1 hergestellt. Die ebenfalls benötigten „Nokia Connectivity Cable Driver“ sind in der
Version 6.82.4.0. Zur Manipulation der SIS-Dateien und der Symbian EXE-Dateien wurden
die HEX-Tools HxD-Hexeditor [23] und WinHex [24] verwendet.
5.2. Marktabbildung der Testgeräte
Bei den Testgeräten handelt es sich um ein Symbian S60 v9.1 Gerät und drei Symbian S60
v9.2 Geräte. All diese Testgeräte wurden von Nokia hergestellt. Trotz der geringen Anzahl der
Testgeräte kann dennoch von einer repräsentativen Menge ausgegangen werden. In Abbildung
5.1 wird deutlich, dass Nokia mit Abstand die meisten Symbian S60/UIQ v9 Mobiltelefone im
Aufgebot hat, sodass der Test mit nur Nokia Modellen das Ergebnis nicht verfälscht oder ein
Hersteller bevorzugt wird. Bei den Symbian Versionen kann leider nicht die aktuelle Marktsituation wiedergegeben werden, da drei der vier Testgeräte mit Symbian OS v9.2 ausgestattet
sind. Es kann jedoch als Trend für die weitere Zunahme der Symbian Version 9 Mobiltelefone
mit der Version 9.2 beziehungsweise Version 9.3 gesehen werden.
Die beiden Grafiken stellen die aktuell verfügbaren und teilweise noch nicht veröffentlichten
Symbian Version 9 Mobiltelefone dar. Für die Grafik wurden nur Symbian Version 9 Mobiltelefone der S60- und UIQ-Variante berücksichtigt. Mit [25] und weiteren Informationen der
jeweiligen Hersteller konnten 59 Symbian Version 9 Mobiltelefone ermittelt werden. Dabei
konnten Nokia 42 Modelle zugeteilt werden. Die Verteilung der drei Symbian Versionen 9.1,
9.2 und Version 9.3 ist in der linken Hälfte der Grafik 5.1 abgebildet. Auf der rechten Seite
der Abbildung ist die Verteilung der 59 Symbian Version 9 Mobiltelefone auf die Hersteller
dargestellt.
5.3. Durchführung
Dieser Abschnitt soll kurz die Durchführung der Testfälle beschreiben und die dabei auftretenden Unterschiede bei der Durchführung beleuchten.
5.3.1. Emulator
Wie schon teilweise in 4.2 beschrieben, können nicht alle Testfälle im Emulator ausgeführt
werden. Diejenigen Testfälle, die während der Installation ausgeführt werden sollen, zum Beispiel Zertifikat-Tests oder SWInstaller-Tests, können im Emulator nicht überprüft werden,
da der Emulator die Installation von zusätzlichen SIS-Dateien nicht unterstützt. Somit können auch die einzelnen Update-Möglichkeiten, die während den File-Overwriting-Testfällen
65
5. Ergebnisse und Evaluierung
Abbildung 5.1.: Verteilung von Symbian v9
überprüft werden sollen, nicht im Emulator verifiziert werden. Ein weiteres Hindernis im
Emulator ist die mangelnde Unterstützung der virtuellen Laufwerke in Verbindung mit der
PSA, wodurch Eclipsing-Testfälle und Data-Caging-Testfälle in geschützten Verzeichnissen
nicht möglich sind. Auch vereinzelte Integrity-Testfälle können im Emulator nicht ausgeführt
werden, denn die benötigten Hash-Werte der EXE-Dateien für diesen Test werden während
der Installation vom SWInstaller erstellt.
Die eigentliche Durchführung der Testfälle im Emulator erwies sich im Vergleich zu der Durchführung auf den Testgeräten als weniger mühselig. Das Installieren der einzelnen Testfälle fiel
weg, denn das Kopieren der Dateien wird bereits durch den Emu-Builder beim Kompilieren
der Testfälle erledigt. Somit musste nur der Emulator gestartet und die einzelnen Testfälle
ausgeführt werden.
5.3.2. Testgeräte
Bei den meisten Testfällen gestaltete sich die Durchführung der Tests sehr ähnlich. Teilweise
konnten die Testfälle auf die Speicherkarte kopiert und anschließend mit dem AutoInstaller automatisch installiert werden. Diese Vorgehensweise konnten jedoch bei den Testfällen
nur dann angewandt werden, wenn die Testfälle auf Laufwerk C installiert werden konnten
und keine Fehler während der Installation erwartet wurden. Die restlichen Testfälle, die auf
Laufwerk E installiert werden mussten, wurden einzeln installiert. Anschließend mussten die
Testfälle nur noch ausgeführt und die Log-Dateien archiviert werden.
In einigen Testbereichen mussten die Testfälle einzeln installiert werden, damit mögliche Reaktionen des SWInstallers manuell protokolliert werden konnten. Auf diese Weise musste ein Teil
der File-Eclipsing- und File-Overwriting-Testfälle installiert werden. Die Testbereiche SWInstaller, Certificate und IDs mussten komplett manuell installiert und alle Installationsversuche
protokolliert werden. Bei den SWInstaller- und Certificate-Testfällen musste zusätzlich gemäß
der Definition bei bestimmten Testfällen die SWIPolicy verändert werden. Dazu wurde einfach
66
5.3. Durchführung
vor dem Testfall mit Hilfe des ROMPatchers der entsprechende SWIPolicy-Patch aktiviert.
Der Patch sorgt dafür, dass der SWInstaller die selbst definierte SWIPolicy bei der Installation heranzieht. Bevor jedoch auch diese Testfälle ausgeführt werden konnten, mussten vor
jedem Test die SWInstaller Einstellungen des Mobiltelefons notiert werden.
Bei den Integrity-Testfällen gestaltete sich die Durchführung der Tests etwas aufwendiger,
denn die vier Bereiche, in die diese Testfälle unterteilt wurden, unterscheiden sich alle in
ihrer Durchführung und werden deshalb etwas ausführlicher beschrieben. Für diese Tests,
in denen die Integrität der Installationsdateien untersucht wird, wurde die Modifikation der
Installationsdateien schon in 5.1.1 beschrieben. Anschließend muss nur noch versucht werden,
die modifizierten Installationsdateien auf den einzelnen Testgeräten zu installieren und das
Installationsverhalten der modifizierten Installationsdateien muss protokolliert werden.
Die Testfälle, die die Integrität der installierten EXE-Dateien auf dem internen Laufwerk
und der Speicherkarte untersuchen, sind in der Durchführung etwas aufwendiger. Zunächst
müssen die Installationspakete auf Laufwerk C beziehungsweise Laufwerk E installiert werden.
Anschließend müssen die EXE-Dateien in den \sys\bin Verzeichnissen verändert werden. Auf
der Speicherkarte ist das ohne weitere Probleme möglich, wenn diese als Wechseldatenträger
an den PC angeschlossen wird. Um auf die EXE-Dateien zugreifen zu können, muss zu einem
Trick gegriffen werden. In Abschnitt 7 werden alle dafür benötigten Methoden kurz vorgestellt.
Ist nun der Zugang zu den EXE-Dateien gegeben, kann diese zunächst für einen Testfall auf
Hex-Ebene verändert werden. Für einen weiteren Testfall muss zusätzlich noch der Hash-Wert
der EXE-Datei neu berechnet werden. Die Hash-Werte der EXE-Dateien werden auf Laufwerk
C im \sys\hash Verzeichnis gespeichert und mit Hilfe des SHA-1 Algorithmus [26] berechnet.
Für einen weiteren Testfall werden die Capabilities der EXE-Datei erweitert. Zunächst wird
nur die EXE verändert, ohne den Hash-Wert der Datei zu aktualisieren. Anschließend wird im
nächsten Testfall neben der Capability auch noch der Hash-Wert der zugehörigen EXE-Datei
verändert. Für beide Laufwerke ist die Vorgehensweise die gleiche. Die zu verändernde Datei
wird auf einen PC kopiert, dort verändert und wieder auf das Mobiltelefon kopiert. Nachdem
die einzelnen Testanwendungen auf beiden Laufwerken verändert wurden, mussten diese nur
aufgeführt und die Verhaltensweise der Anwendung protokolliert werden.
Bei den Testfällen, in denen die Integrität der Ressource-Dateien untersucht wird, ist die Vorgehensweise ähnlich der Integrität der EXE-Dateien. Zunächst werden die Testanwendungen
auf beiden Laufwerken installiert und anschließend die Ressource-Dateien der entsprechenden
Anwendung verändert. Die Ressourcen, die dabei verändert werden, sind einmal die „RSCDatei“ der Anwendung und eine mitgelieferte Text-Datei, die im private Verzeichnis der
Anwendung abgelegt wird. Innerhalb der „RSC-Datei“ wird der darin enthaltene „AuthorString“ durch eine anderen „String“ ersetzt. Der Inhalt der Text-Datei wird dabei durch einen
anderen Text ersetzt. Nachdem die Veränderungen an den Dateien vollzogen wurden, können
die Tests ausgeführt und auf ihre korrekte Funktionsweise getestet werden.
Für die Untersuchung der Integrität der PA-Anwendungen müssen zunächst alle PA-TestDateien auf die Speicherkarte kopiert werden. Die Hälfte dieser Testfälle wird anschließend
mit den „Stub“-Installationsdateien installiert. Die Stub-Datei dient dabei der Verifikation der
Signatur, ob die zugehörigen PA-Dateien die definierten Capabilities bereitstellen und ob die
richtigen IDs gemäß der Signierung verwendet werden. Nachdem nun ein Teil der Dateien
installiert und die restlichen Dateien nur auf die Speicherkarte kopiert wurden, kann nun mit
67
5. Ergebnisse und Evaluierung
allen Dateien wie schon bei der Integrität der EXE-Dateien verfahren werden. Das bedeutet zunächst auf der Hex-Ebene die EXE-Dateien verändern, mit und ohne Anpassung der
Hash-Werte der EXE-Datei und anschließend die Capabilities der EXE-Dateien verändern.
Das wiederum auch einmal ohne die Hash-Werte der EXE-Datei anzupassen und einmal mit
Anpassung der Hash-Werte. Nach diesen Veränderungen wird versucht, die andere Hälfte
der PA-Dateien mit Hilfe der Stub-Dateien zu installieren und dabei auftretende Fehler werden protokolliert. Es kann nun versucht werden, die restlichen installierten PA-Anwendungen
auszuführen. Hier kann überprüft werden, ob die Veränderungen der einzelnen Dateien dem
„Symbian-Loader“ aufgefallen sind.
5.3.3. Schwierigkeiten
Das größte Problem stellte die Anzahl der Testfälle dar. Die Dauer der Installation der einzelnen Testfälle variierte stark zwischen den einzelnen Testgeräten wie Tabelle 5.2 verdeutlicht.
Dabei wurde die Dauer der Installation beziehungsweise Deinstallation der einzelnen Testfälle exemplarisch bei vier Testfällen manuell gemessen. Die Installationsdauer mit Hilfe des
AutoInstallers wurde jeweils in zwei Durchläufen gemessen, sodass zunächst ein Testfall und
anschließend zehn Testfälle automatisch installiert wurden. Die dabei ermittelten Zeiten sind
als Mittelwerte zusammen mit ihrer Standardabweichung in der Tabelle dargestellt. Vor allem erwies sich das Nokia N95 als besonders langsam bei der Installation beziehungsweise
Deinstallation einzelner Testfälle. Die Deinstallation der Testfälle war jedoch wichtig, damit
die anderen Testfälle wieder eine geeignete Basis für die Installation und Ausführung ihrer
Testfälle besitzen. Eine geeignete Basis für die einzelnen Testfälle soll dabei einen Zustand
beschreiben, indem das zu installierende Paket nicht von der korrekten Installation und Ausführung gehindert wird. Diesen Zustand könnten bereits vorhandene Textdateien oder auch
EXE-Dateien, die von einen anderen Testfall genutzt wurden, beeinträchtigen.
Tabelle 5.2.: Installations- und Deinstallationsdauer
Installation
Deinstallation
Modell
Manuell
Automatisch(1/10)
Manuell
E61
8,1 ± 1,1 s
3,9 ± 0,4 s / 32,9 ± 14,5 s
5,5 ± 0,5 s
E90
12,2 ± 0,7 s
7,8 ± 0,5 s / 88,8 ± 17,4 s
12,4 ± 0,1 s
N81 8GB
8,4 ± 0,6 s
4,7 ± 0,5 s / 47,0 ± 11,5 s
8,3 ± 0,3 s
N95
29,9 ± 0,8 s 24,3 ± 0,8 s / 267,5 ± 22,5 s
33,9 ± 0,6 s
5.4. Evaluationskriterien
Dieser Abschnitt soll die Kriterien beschreiben, die bei der Auswertung der Testfälle herangezogen werden.
Verifikation Eine Aufgabe der Testfälle ist die Verifikation der Funktionsweise der einzelnen
Testbereiche, die in der Spezifikation identifiziert wurde. Dieses Kriterium soll die Verifikation abbilden, ob die tatsächliche Funktionsweise, die durch die Testfälle gegeben
wird, auch der spezifizierten Funktionsweise der PSA durch Symbian entspricht.
68
5.5. Vorstellung der Ergebnisse
Regeln Neben der Verifikation der Funktionsweise der PSA soll es noch ein separates Kriterium zur Überprüfung der Regeln für jeden Bereich geben. Dieses Kriterium soll dabei
helfen zu überprüfen, ob die einzelnen Regeln, die Symbian für die PSA definiert, eingehalten werden oder ob diese in einer anderen Weise verletzt werden.
SWInstaller Dieses Kriterium soll als Indikator für die Mächtigkeit des SWInstallers stehen.
Dabei kann das Kriterium bei der Verifikation des Funktionsumfangs des SWInstallers
herangezogen werden.
SWInstaller-Einstellungen In Kapitel 3.2.2 wurden die internen SWInstaller-Einstellungen
beschrieben. Dieses Kriterium soll dazu dienen, die verschiedenen Einstellungen miteinander vergleichen zu können. Dabei kann das Kriterium helfen, die Priorisierung
zwischen den SWInstaller-Einstellungen und der SWIPolicy zu klären.
SWIPolicy Die SWIPolicy bietet den Mobiltelefonherstellern oder auch vereinzelten Providern, die das Mobiltelefon in einer teilweise angepassten Version herausbringen, die
Möglichkeit, zahlreiche Einstellungen zu treffen. Die SWIPolicy ist die Entscheidungsgrundlage für den SWInstaller und somit auch ein wichtiges Kriterium für die Auswertung der Testfälle. Das SWIPolicy-Kriterium sollte auch für die Auswirkungen auf den
Installationsprozess mit unterschiedlichen SWIPolicies herangezogen werden. Anhand
des Kriteriums soll geklärt werden, ob die Spezifikation der SWIPolicy eingehalten wird
und wie sich die Mehrdeutigkeiten auf die Installation auswirken. Dabei soll untersucht
werden, wie sich die Policies mit unterschiedlichen Symbian Versionen, verschiedenen
Gerätemodellen einzelner Hersteller, Providern und auch der damit verbundenen Firmware auf dem einzelnen Gerät unterscheiden.
Symbian Versionen Dieses Kriterium soll mögliche Unterschiede bei den Testergebnissen zeigen, die durch die verschiedenen Symbian Versionen im Emulator oder auf dem Mobiltelefon hervorgerufen werden können.
Plattform Das Plattform-Kriterium soll als Unterscheidungsmerkmal für mögliche Unterschiede in den Testergebnissen im Vergleich zwischen dem Emulator und dem Mobiltelefon dienen.
Software-Branding Viele Provider versehen ihre Mobiltelefone vor dem Verkauf mit einem
Software-Branding, das meistens anbieterspezifische Erweiterungen oder auch Änderungen sind. Hier sollte das Kriterium bei möglichen Änderungen in der PSA-Implementierung
und SWIPolicy angewendet werden.
5.5. Vorstellung der Ergebnisse
In diesem Abschnitt werden die Ergebnisse für jeden Testbereich einzeln präsentiert. Hierbei
werden die Ergebnisse gemäß den oben beschriebenen jeweils zutreffenden Kriterien vorgestellt.
69
5. Ergebnisse und Evaluierung
5.5.1. Data Caging
Die Data-Caging-Testfälle wurden gemäß den Anforderungen in zwei Bereichen definiert. Im
ersten Bereich soll lesend auf die geschützten Verzeichnisse zugegriffen werden, während im
zweiten Bereich der Data-Caging-Testfälle der schreibende Zugriff auf die geschützten Verzeichnisse untersucht wird. Wenn in diesem Abschnitt oder in den folgenden Abschnitten
geschützte Verzeichnisse erwähnt werden, sind in diesem Zusammenhang immer die DataCaging-Verzeichnisse \resource, \sys, \private und \private\<ownSID> gemäß Abschnitt
2.2.4 gemeint. Werden hingegen „frei lesbare“ Verzeichnisse erwähnt, so sind die geschützten
Verzeichnisse \resource und \private\<ownSID> gemeint, auf die bei lesendem Zugriff keine
Capabilities benötigt werden.
Die Ergebnisse der Lese-Testfälle im Data-Caging-Bereich zeigen, dass mit der AllFiles Capability auf alle Verzeichnisse lesend zugegriffen werden kann. Einzig wenn in den entsprechenden geschützten Verzeichnissen die Testdateien nicht gefunden werden, wird ein entsprechender Fehler angezeigt. Ein Beispiel ist der Zugriff auf das dem Prozess zugehörige private
Verzeichnis auf Laufwerk E. Da entsprechend der Definition der Testfall auf Laufwerk C installiert wurde, kann der Prozess zwar auf das übergeordnete Verzeichnis zugreifen, aber der
„File-Server“ meldet, dass das Verzeichnis nicht existiert. Ebenfalls kann auf Laufwerk Z lesend zugegriffen werden, jedoch konnte die Testdatei nicht gelesen werden, da selbst mit den
Mitteln, die in Kapitel 7 vorgestellt werden, nicht auf das Z Laufwerk schreibend zugegriffen
werden kann, um eine entsprechende Testdatei zu hinterlegen. Ohne eine Capability oder sogar mit der Tcb Capability, kann nur auf die frei lesbaren Verzeichnisse \resource auf beiden
Laufwerken C,E und das \private\<ownSID> Verzeichnis auf Laufwerk C zugegriffen werden.
Für die restlichen geschützten Verzeichnisse wie \sys oder \private wird der Zugriff mit dem
Fehler Zugriff verweigert bei Ausführung der Operation verweigert. Wird nun ein Prozess mit
den beiden „stärksten“ Capabilities Tcb und AllFiles ausgestattet, ändern sich die Ergebnisse gegenüber dem Testfall mit AllFiles Capabilities nicht, denn für Lese-Zugriff wird nur die
AllFiles Capability benötigt. Hierbei werden die schon in den Grundlagen angesprochenen
Eigenschaften der Capabilities wie Orthogonalität und Eigenständigkeit aufgezeigt. Es kann
schon als erster Hinweis für die Verifizierung der Capabilities betrachtet werden.
Im Emulator fallen die Ergebnisse der Lese-Testfälle im Data-Caging-Bereich ähnlich den Testgeräten aus. Mit der entsprechenden AllFiles Capability kann auf alle Verzeichnisse auch auf
Z und die darin hinterlegten Testdateien lesend zugegriffen werden. Eine Ausnahme machen
da die \private Verzeichnisse der zugehörigen Testanwendungen auf allen Laufwerken C, E,
Z auf die nicht zugegriffen werden kann, da sie nicht vorhanden sind. Ein weiteres Problem
im Emulator ist die nicht vorhandene Verzeichnisstruktur der geschützten Verzeichnisse auf
der virtuellen Speicherkarte. Hierfür können beispielsweise die Verzeichnisstrukturen manuell
erzeugt werden oder eine kleine Anwendung erzeugt die Verzeichnisse. Sind die geschützten
Verzeichnisse nicht vorhanden, generiert der „File-Server“ einen entsprechenden Fehler, dass
das Verzeichnis nicht gefunden werden kann. Im Emulator kann der Testfall ohne die entsprechende Capability oder nur mit der Tcb Capability, wie auch schon bei den Testgeräten, nur
auf die frei lesbaren Verzeichnisse \resource auf allen drei Laufwerken C, E und Z und die
darin hinterlegten Dateien zugreifen. Werden wie schon bei den Testgeräten die „stärksten“
Capabilities Tcb und AllFiles verwendet, ändern sich die Testergebnisse nicht.
Bei den Schreib-Tests der Data-Caging-Testfälle kann mit der AllFiles Capability nur in die
frei zugänglichen Verzeichnisse \private\<ownSID> und in das \private Verzeichnis geschrie-
70
5.5. Vorstellung der Ergebnisse
ben werden. Auf das Laufwerk Z wird zwar der Zugriff auf die \private Verzeichnisse gewährt,
also kein Zugriff verweigert bei Ausführung der Operation-Fehler, jedoch beim Versuch eine
Datei auf diesem Laufwerk zu erstellen, tritt ein neuer Fehler auf Zugang verweigert. Wie schon
kurz bei den Lese-Tests beschrieben, kann auf das ROM-Laufwerk nicht schreibend zugegriffen werden. Der Versuch auf die restlichen geschützten Verzeichnisse schreibend zuzugreifen,
misslingt aufgrund mangelnder Capabilities. Wird nun der Test ohne die entsprechenden Capabilities ausgeführt, kann nur in \private\<ownSID> eine neue Datei erstellt werden. Auf
Laufwerk E wird das private Verzeichnis der Testanwendung nicht gefunden. Die restlichen
geschützten Verzeichnisse können mit dieser Capability nicht beschrieben werden, sodass der
„File-Server“ den Zugang mit dem Fehler Zugriff verweigert bei Ausführung der Operation
verweigert. Auf Laufwerk Z wird entweder der Zugriff mit dem eben genannten Fehler oder in
\private\<ownSID> mit dem Fehler Zugang verweigert untersagt. Der Schreib-Test mit der
Tcb Capability zeigt, dass nur auf diejenigen Verzeichnisse zugegriffen werden kann, die auch
die Tcb Capability gewährt. Auf das \private Verzeichnis kann nicht zugegriffen werden. Der
„File-Server“ verweigert den Zugang mit dem Fehler Zugriff verweigert bei Ausführung der
Operation. Trotz Tcb Capability wird der schreibende Zugriff auf das Z Laufwerk mit Fehler
Zugang verweigert verwehrt. Beim Schreib-Test mit den beiden Capabilities Tcb und AllFiles
konnte auf alle geschützten Verzeichnisse schreibend zugegriffen werden. Eine Ausnahme ist
dabei wieder das Z Laufwerk, das mit dem Fehler Zugang verweigert den schreibenden Zugriff
verwehrte.
Die Ergebnisse der Data-Caging-Testfälle im Emulator brachten auch keine bedeutenden
Überraschungen gegenüber den Testgeräten. Mit der AllFiles Capability konnte im Emulator nur auf das \private Verzeichnis auf Laufwerk C schreibend zugegriffen werden. Das
\private\<ownSID> Verzeichnis wird bei den Emulator-Testfällen nicht automatisch erstellt,
der Zugriff auf dieses Verzeichnis wäre jedoch gegeben. Aber auch mit der AllFiles Capability
konnte auf das \private Verzeichnis im Laufwerk Z nicht schreibend zugegriffen werden. Der
Zugriff wurde mit dem Fehler Zugang verweigert verwehrt. Auf die restlichen durch das Data
Caging geschützten Verzeichnisse kann aufgrund unzureichender Capabilities nicht geschrieben werden. Wie schon bei den Testgeräten kann auch im Emulator ohne die entsprechende
Capabilities nur auf die privaten Verzeichnisse der Prozesse schreibend zugegriffen werden.
Da jedoch der SWInstaller während der Installation die zum Prozess gehörigen privaten Verzeichnisse erstellt, wird im Emulator dieses Verzeichnis nicht gefunden. Auf die verbleibenden
Verzeichnisse wird der schreibende Zugang aufgrund von mangelnden Capabilities verweigert.
Mit der Tcb Capability wird grundsätzlich nur der Zugang zu den geschützten Verzeichnissen
mit der AllFiles Capability verweigert. Auf die restlichen Verzeichnisse, mit Ausnahme des
Z Laufwerk, kann wie in der Spezifikation der PSA beschrieben, schreibend auf die einzelnen
Verzeichnisse zugegriffen werden. Mit den beiden Capabilities Tcb und AllFiles ist nun der
schreibende Zugriff auf alle geschützten Verzeichnisse im Emulator gegeben. Eine Ausnahme
macht da wie auch schon auf den Testgeräten das Laufwerk Z. Hier verweigert der „File-Server“
den schreibenden Zugang trotz Tcb Capability.
Die Testfälle, bei denen die Signierung der Installationspakete und die damit verbundene Vertrauenswürdigkeit der Installationspakete untersucht wurden, beeinflusste das Data Caging
in keiner Weise. Wie schon bei den jeweiligen Lese- und Schreib-Tests ohne die entsprechenden Capabilities können die Testanwendungen nur auf die frei beschreibbaren Verzeichnisse
zugreifen. Für das Data Caging zählen nur die entsprechende Capability und die entsprechende Signierung, mit der die Anwendung installiert werden kann. Den „File-Server“ kümmert
71
5. Ergebnisse und Evaluierung
die Signierung der Anwendung wenig. Im Emulator konnten diese Testfälle nicht ausgeführt
werden.
Obwohl die Verzeichnisstruktur \sys, \resource, \private auf der virtuellen Speicherkarte nicht vorhanden ist, überprüft der Emulator bei Zugriff auf die Verzeichnisse zunächst
das Vorhandensein der entsprechenden Capabilities. Erst mit den entsprechenden Capabilities kann auf das Verzeichnis zugegriffen werden und falls es noch nicht existiert, wird der
entsprechende Fehler produziert. Ein Beispiel ist der zweite Testfall im Emulator. Ohne die
entsprechende Capability kann auf das geschützte Verzeichnis nicht zugegriffen werden, der
Fehler Zugriff verweigert bei Ausführung der Operation tritt auf. Bei Zugriff auf ein frei lesbares Verzeichnis trifft nur der Fehler Das spezifizierte Verzeichnis kann nicht gefunden werden
auf. Anhand dieses Verhaltens kann die Funktionsweise des Data Caging nachvollzogen und
das Verifikationskriterium erfüllt werden. Wie in der Spezifikation der PSA [1] beschrieben,
ist für das Data Caging nur der Pfad entscheidend. Somit zeigt sich, dass das Data Caging
auf weiteren zusätzlichen Laufwerken funktionieren würde.
Im Vergleich zwischen den einzelnen Testgeräten und mit dem Symbian-Versionen-Kriterium
ergeben sich bei den beiden Symbian Versionen 9.1 und 9.2 bei den Data-Caging-Tests keine
Unterschiede bei den Ergebnissen.
Die Ergebnisse der Emulatoren der verschiedenen Symbian Versionen 9.1, 9.2 und 9.3 unterscheiden sich im Wesentlichen untereinander nicht. Lediglich scheint das virtuelle Laufwerk in der Version 9.1 während der Tests korrumpiert worden zu sein. Ein weiterer kleiner
Unterschied ist, dass auf das \private Verzeichnis des virtuellen Laufwerks in Version 9.3
zugegriffen werden kann. In den beiden anderen Emulatoren ist das nicht möglich. Gemäß
dem Plattform-Kriterium kann im Vergleich zu den Testgeräten nur der Zugriff auf das Z
Laufwerk der Emulatoren hervorgehoben werden. Ein Nachteil der Emulatoren ist die teilweise mangelnde Unterstützung der virtuellen Speicherkarten in Bezug auf die Data-CagingVerzeichnisstruktur, die auch schon im Abschnitt 5.1.1 angesprochen wurde.
5.5.2. File Eclipsing
Der zweite Testbereich wurde beim File Eclipsing in drei Bereiche gegliedert. Dabei werden
zunächst Ergebnisse der Paket-Testfälle für alle Testgeräte vorgestellt. Anschließend werden
die Testfälle, die während der Installation versuchen, Dateien in eine Eclipsing-Situation zu
bringen, ausgeführt. Im letzten Bereich der File-Eclipsing-Testfälle werden die Ergebnisse der
Tests zur Laufzeit vorgestellt.
Paket-Tests
Im ersten Bereich der File-Eclipsing-Testfälle wird zunächst ein „Basis-Paket“ auf Laufwerk C
installiert. Dieses Installationspaket wird dabei mit verschiedenen Signierungen installiert. Im
ersten Test wird das „Basis-Paket“ selbst signiert. Wird nun versucht, ein neues Installationspaket, das zunächst selbst signierte wurde, mit dem gleichen Namen der bereits installierten
Anwendung auf Laufwerk E zu installieren und damit eine mögliche Eclipsing-Situation zu
erzeugen, so schlägt die Installation mit einem Aktualisierungsfehler auf allen Testgeräten
72
5.5. Vorstellung der Ergebnisse
fehl. Wird erneut der Versuch unternommen, das neue Installationspaket zu installieren, diesmal jedoch durch ein Developer-Zertifikat signiert, so schlägt auch diesmal die Installation
mit demselben Fehler fehl. In einen letztem Testfall mit einer selbst signierten Basis wird die
Installation, auch wenn das Installationspaket mit einem „root“-Zertifikat signiert wurde, mit
dem schon erwähnten Fehler abgebrochen. Werden diese Testfälle mit einem „root“ signierten
Installationspaket als Basis für die weiteren Testfälle wiederholt, so wird bei jedem Testfall
die Installation mit dem Aktualisierungsfehler abgebrochen. Diese Testfälle zeigen, dass ein
komplettes Installationspaket unabhängig der Signierung der Anwendungen nicht durch ein
anderes Installationspaket in eine Eclipsing-Situation gebracht werden kann.
Installationstests
Der zweite Bereich prüft, ob einzelne Dateien auf Laufwerk C während der Installation durch
andere Dateien in eine Eclipsing-Situation gebracht werden können. Dafür werden die Tests
mit Text-, EXE- und DLL-Dateien durchgeführt. Zunächst werden diese Dateien in einem
„Basis-Installationspaket“ jeweils selbst und „root“ signiert installiert. Das „Basis-Installationspaket“ kopiert die Dateien in die definierten Verzeichnisse, sodass diese Dateien in den darauf folgenden Testfällen versucht werden, in eine Eclipsing-Situation zu führen. Im ersten
Testfall wird versucht, eine Text-Datei mit verschiedenen Signierungen die zuvor installierte Text-Datei in einen nicht geschütztem Verzeichnis in eine Eclipsing-Situation zu bringen.
Der Versuch, diese Situation herzustellen, schlug mit allen Signierungen fehl. Selbst die Installation eines „root“ signierten Installationspakets wurde mit einem Aktualisierungsfehler
abgebrochen. Das gleiche Bild zeichnet sich ab, wenn versucht wird, eine EXE-Datei in eine
Eclipsing-Situation zu bringen. Das Installationspaket, das versucht, die EXE-Datei auf das E
Laufwerk zu kopieren und dadurch eine Eclipsing-Situation hervorzurufen, kann nicht installiert werden. Mit keiner Signierung ist es möglich, eine EXE-Datei in eine solche Situation zu
bringen. Beim Versuch, die Tests mit DLL-Dateien zu wiederholen, konnten weder die selbst
signierten DLL-Dateien auf Laufwerk C in eine Eclipsing-Situation gebracht werden noch die
„root“ signierten Testfälle. Auch verschiedene Signierungen der Testfälle, die diese Situation
herstellen sollten, wurden immer mit einem Aktualisierungsfehler abgebrochen.
Laufzeit-Tests
Im abschließenden Bereich wird versucht, Eclipsing-Situationen zur Laufzeit zu erzeugen. Dafür werden zunächst, wie auch im zweiten Testbereich, Testanwendungen installiert, die jeweils
selbst und „root“ signiert wurden und während der Installation Text-Dateien in nicht geschützte Verzeichnisse auf Laufwerk C kopieren. Im ersten Testfall konnte mit allen Signierungen der
Installationspakete eine entsprechende Text-Datei auf Laufwerk E erstellt werden, die den gleichen Namen trug wie schon die Datei auf Laufwerk C. Somit konnte eine Eclipsing Situation
erstellt werden. Im zweiten Testfall wird erneut versucht, eine Eclipsing-Situation herzustellen, diesmal wird aber das „Basis-Installationspaket“ mit einem „root“-Zertifikat signiert. Auch
in diesem Fall kann eine Eclipsing-Situation zur Laufzeit hervorgerufen werden. Im Emulator können die Tests zur Laufzeit auch ausgeführt werden. Hierbei können jedoch nicht die
verschiedenen Signierungen der „Basis-Installationspakete“ untersucht werden. Dennoch kann
im Emulator die Text-Datei auf Laufwerk E parallel zur Text-Datei auf Laufwerk C erstellt
werden und würde aufgrund der Eclipsing-Regel eine Eclipsing-Situation hervorrufen.
73
5. Ergebnisse und Evaluierung
Werden nun die Tests auf allen vier Testgeräten miteinander verglichen, so können zusammen mit dem Symbian-Versionen-Kriterium keinerlei Unterschiede zwischen den Testgeräten
festgestellt werden. Auch die Laufzeit-Tests im Emulator stimmen mit den Ergebnissen der
Testgeräte überein, sodass nach dem Plattform-Kriterium keine Unterschiede bei den LaufzeitTests festgestellt werden konnten.
5.5.3. File Overwriting
Der File-Overwriting-Testbereich definiert vier Bereiche. Der erste Bereich beschäftigt sich mit
der Überschreibbarkeit des SA-Installationstyps und dient dabei der Verifikation der Funktionalität. Im nächsten Bereich versuchen die Testfälle verschiedene bereits vorhandene Dateien
während der Installation zu überschreiben. Der dritte Bereich dient der Untersuchung und Verifikation des Update-Verhaltens verschiedener Installationstypen. Abschließend werden zur
Laufzeit Text-Dateien versucht zu überschreiben.
Paket-Tests
Im ersten File-Overwriting-Bereich werden die Testfälle als Paar zweier Installationsdateien
gesehen. Dabei dient das erste Installationspaket als „Basis-Anwendung“, die durch das nächste
zugehörige Installationspaket überschrieben beziehungsweise aktualisiert wird. Der Installationstyp des überschreibenden Installationspaketes ist in diesem Bereich als SA-Installationstyp
in der Version 2,0,0 definiert. Das erste Installationspaar ist selbst signiert und das überschreibende Installationspaket kann nach Bestätigung der Meldung Überschreiben bereits vorhandener Version 1.0.0 durch 2.0.0 ersetzen ohne Fehler installiert werden. Auch die zwei
darauf folgenden Installationspaare, deren überschreibende Installationspakete jeweils mit einem Developer- beziehungsweise mit einem „root“-Zertifikat signiert wurden, können ohne
Probleme nach Bestätigung der Überschreibung der vorhandenen Anwendung installiert werden. Bei den nächsten Installationspaaren ist die „Basis-Anwendung“ jeweils „root“ signiert.
Versucht nun ein selbst signiertes Installationspaket die „Basis-Anwendung“ zu überschreiben,
muss zwar zunächst das Überschreiben der „Basis-Anwendung“ bestätigt werden, aber daraufhin wird die Installation mit einem Aktualisierungsfehler abgebrochen. Das Überschreiben
der „Basis-Anwendung“ durch eine Developer-Zertifikat signierte Anwendung funktioniert auf
dem Nokia E61 nach Bestätigung auch ohne Probleme. Der abschließende Testfall in diesem
Bereich definiert ein „root“ signiertes Installationspaar, das auf allen Testgeräten ohne Fehler
ausgeführt werden kann.
Installationstests
Im nächsten Bereich der File-Overwriting-Testfälle werden Text-, EXE- und DLL-Dateien
während der Installation versucht zu überschreiben. Dafür werden die Text-Dateien zunächst
in einem selbst signierten und anschließend in einem „root“ signierten Installationspaket in ein
nicht geschütztes Verzeichnis kopiert. Die zugehörigen Testfälle versuchen mit allen Signierungen diese Text-Dateien zu überschreiben. Keinem dieser Testfälle ist es möglich, die TextDateien zu überschreiben. Beim Versuch die Text-Datei zu überschreiben, wurden alle Installationen mit einem Aktualisierungsfehler abgebrochen. Nicht einmal „root“ signierte Testfälle
74
5.5. Vorstellung der Ergebnisse
konnten diese Text-Dateien überschreiben. Ein ähnliches Verhalten konnten beim Überschreiben der EXE-Dateien beobachtet werden. Kein Testfall konnte die EXE-Datei in \\sys\\bin
während der Installation überschreiben. Alle Testfälle schlugen mit einem Aktualisierungsfehler fehl. Dabei machte es keinen Unterschied, ob die zu überschreibenden EXE-Dateien durch
ein selbst signiertes oder ein „root“ signiertes Installationspaket installiert wurden. Bei den abschließenden Tests mit den DLL-Dateien konnte auch kein anderes Verhalten gegenüber dem
Überschreiben der EXE-Dateien beobachtet werden. Wie bei den EXE-Dateien konnten auch
hier nicht die jeweiligen DLL-Dateien mit verschiedenen Signierungen überschrieben werden.
Jeder Versuch wurde mit einem Aktualisierungsfehler abgebrochen.
Update-Tests
Im dritten File-Overwriting-Bereich werden wie auch schon im ersten Bereich die Testfälle
als Paar zweier Installationsdateien gesehen. Das erste Installationspaar ist selbst signiert
und das überschreibende Installationspaket, das als PU-Installationstyp definiert ist, kann ohne Fehler installiert werden. Im nächsten Testfall ist das überschreibende Installationspaket
ebenfalls als PU-Installationstyp definiert, diesmal jedoch „root“ signiert. Auch dieses Installationspaar wird ohne Probleme installiert. Wird jedoch die Signierung vertauscht und damit
das überschreibende Installationspaket selbst signiert, so wird die Installation aufgrund eines
Aktualisierungsfehlers abgebrochen. Werden die Tests bei dem SP-Installationstyp genauso
definiert wie die vorherigen PU-Testfälle, so schlägt nur beim Versuch, ein „root“ signiertes
Installationspaket durch ein selbst signiertes Installationspaket zu aktualisieren, mit einem
Aktualisierungsfehler fehl. Die restlichen beiden SP-Testfälle werden ohne Fehler installiert.
Beim abschließenden Test in diesem Bereich, wird entgegen der Empfehlung der Spezifikation
der PSA eine bereits vorhandene Datei durch ein SP-Installationspaket aktualisiert. Gemäß
der Spezifikation wird die Installation aufgrund eines Aktualisierungsfehlers abgebrochen.
Laufzeit-Tests
Im letzten Bereich der File-Overwriting-Testfälle wird die Möglichkeit, Dateien zur Laufzeit
zu überschreiben, untersucht. Zu diesem Zweck werden zunächst selbst und „root“ signierte
Testfälle installiert, die nach Ausführung drei Text-Dateien in C:\\Test\\Overwriting erstellen. Diese Dateien sollen anschließend zur Laufzeit von den anderen Testfällen versucht
werden zu überschreiben. Die Text-Dateien, die durch den selbst signierten Testfall erstellt
wurden, konnten ohne Fehler von den übrigen Testanwendungen überschrieben werden. Selbst
die Text-Dateien, die durch den „root“ signierten Testfall erstellt wurden, konnten zur Laufzeit
überschrieben werden. Wurden die Testfälle anschließend noch in den Emulatoren ausgeführt,
zeichnete sich zur Laufzeit das gleiche Bild ab.
Werden die Testfälle nun nach dem Symbian-Versionen-Kriterium bewertet und dabei die einzelnen Testfälle zwischen Symbian Version 9.1 und 9.2 auf den Testgeräten miteinander verglichen, so können keine Unterschiede zwischen den Symbian Versionen in den Testbereichen
festgestellt werden. Das Plattform-Kriterium kann nur bei den Laufzeit-Tests herangezogen
werden und besagt, dass die Ergebnisse sich zwischen den Emulatoren und den Testgeräten
zur Laufzeit nicht unterscheiden.
75
5. Ergebnisse und Evaluierung
5.5.4. SWInstaller
Die SWInstaller-Testfälle untersuchen die verschiedenen Funktionsmöglichkeiten des Symbian
Version 9 SWInstallers. Die Tests sind dabei in drei Bereiche unterteilt. Im ersten Bereich
werden die User Capabilities mit verschiedenen SWIPolicies, die im Anhang A.3.1 aufgeführt
sind, untersucht. Der nächste Bereich überprüft die Fähigkeit des SWInstallers, bestimmte
Dateien in geschützte Verzeichnisse zu kopieren. Im abschließenden Bereich wird in einem
kurzen Test ein MIME-Typ untersucht. Hierbei wurden auch verschiedene SWIPolicies benutzt,
damit der möglichst vollständige Funktionsumfang des SWInstallers erfasst werden kann.
Auf dem Emulator konnten diese Testfälle nicht durchgeführt werden und deshalb kann das
Plattform-Kriterium in diesem Testbereich auch nicht herangezogen werden.
Capability-Tests
Zu Beginn werden die Testfälle mit der Standard SWIPolicy durchgeführt. Dabei sind vier
Testfälle mit steigenden Capabilities definiert worden, deren Capabilities mit den weiteren
UserCapabilities innerhalb der SWIPolicy überstimmen. Standardmäßig ist der Parameter
UserCapabilities in der SWIPolicy mit den User Capabilities definiert. Der erste nicht signierte Testfall ließ sich nur auf dem Nokia E61 installieren, da auf den restlichen Testgeräten
die Installation von nicht signierten Anwendungen nicht erlaubt war. Die selbst signierten
Testfälle konnten zwar auf allen Testgeräten installiert werden, aber wiederum nur diejenigen, die mit User Capabilities definiert wurden. In den Testfällen, die durch ein DeveloperZertifikat signiert wurden, konnte dieses wieder nur auf dem Nokia E61 installiert werden, da
das Developer-Zertifikat nur für das E61 gültig war. Es konnte jedoch ein weiterer Testfall installiert werden, der mit einer Capability aus den Developer-Capabilities definiert war. Schließlich konnten die Testfälle mit dem „root“-Zertifikat auf allen Testgeräten installiert werden.
Hierbei konnten sowohl Testfälle mit Symbian-Signed-Capabilities als auch mit ManufacturerCapabilities installiert werden. Interessant werden die Ergebnisse erst, wenn eine andere SWIPolicy zum Einsatz kommt. Die erste SWIPolicy wurde so definiert, dass auf allen Testgeräten
nicht signierte Anwendungen installiert werden konnten und zusätzlich wurde innerhalb der
UserCapabilities eine weitere Capability aus den Developer-Capabilities hinzugefügt. Nach
der Modifikation an der SWIPolicy konnten auf allen Testgeräten nicht signierte Testfälle
installiert werden. Zusätzlich konnten nicht signierte und selbst signierte Testfälle mit den
zuvor definierten Capabilities in der SWIPolicy installiert werden. Damit war die Installation
von Testfällen möglich, für die vorher mindestens ein Developer-Zertifikat nötig war. Nach der
Veränderung der zweiten SWIPolicy konnten per Definition keine nicht signierten Testfälle installiert werden, aber dafür wurden die UserCapabilities in der SWIPolicy zusätzlich zur der
Developer-Capability aus der ersten SWIPolicy mit einer Symbian Signed Capability spezifiziert. Das hatte zwar zur Folge, dass die nicht signierten Testfälle nicht mehr installiert werden
konnten, dafür konnten aber die selbst signierten Testfälle mit einer Developer-Capability und
zusätzlich auch mit einer Symbian Signed Capability installiert werden. In der letzten SWIPolicy wird der Versuch unternommen, zusätzlich zu den beiden vorherigen Capabilities auch
noch die Tcb Capability innerhalb der UserCapabilities zu definieren. Eine weitere Änderung in der SWIPolicy ist das Gewähren der Installation von nicht signierten Anwendungen.
Das Ergebnis dieser Veränderung war, dass alle Testfälle, selbst die Testanwendungen mit
der Tcb Capability, ohne eine Signierung oder mit einem selbst erstellten Zertifikat installiert
werden konnten. Diese Testfälle zeigen, dass die UserCapabilities in der SWIPolicy nicht
76
5.5. Vorstellung der Ergebnisse
nur auf die User Capabilities beschränkt sind. In einem weiteren Testfall mit dieser SWIPolicy werden noch die Einstellungen für den SWInstaller auf dem Testgerät verändert. Wird
hier eingestellt, dass nur signierte Anwendungen installiert werden dürfen, so konnten anschließend nur noch die Testfälle installiert werden, die mit einem „root“-Zertifikat signiert
wurden.
Kopier-Tests
Bei den SWInstaller-Tests, die die Fähigkeit des SWInstallers, verschiedene Dateien in geschützte Ordner zu kopieren, untersuchen, wurde versucht, Text-Dateien und EXE-Dateien in
die geschützten Verzeichnisse während der Installation zu kopieren. Zunächst wurde versucht,
eine Text-Datei nach \\sys\\bin auf Laufwerk C zu kopieren. Dabei konnte kein Testfall
installiert werden. Selbst bei einem „root“ signierten Installationspaket wurde die Installation mit dem Fehler Installation nicht möglich abgebrochen. Wurde hingegen versucht, eine
EXE-Datei in dieses Verzeichnis zu kopieren, war das ohne Probleme möglich. Denn nur in
\\sys\\bin können EXE-Dateien ausgeführt werden. In das \\resource Verzeichnis konnten
sowohl Text- als auch EXE-Datei kopiert werden und dabei war es nicht entscheidend, mit
welchem Zertifikat der Testfall signiert wurde. Eine Text-Datei kann auch als Ressource-Datei
angesehen werden und da eine EXE-Datei außerhalb von \\sys\\bin nicht ausgeführt werden kann, muss der SWInstaller das Kopieren einer EXE-Dateien in dieses Verzeichnis nicht
verhindern. Bei einem weiteren Testfall wird versucht, beide Dateien direkt in das \\private
Verzeichnis zu kopieren. Eine Datei in das \\private Verzeichnis zu kopieren, kann mit dem
Versuch, eine Datei in ein privates Verzeichnis eines anderen Prozesses zu kopieren, gleichgesetzt werden. Wird nun in Symbian OS Version 9.1 versucht, diesen Testfall zu installieren, so
kann weder mit der Text- noch mit der EXE-Datei der Testfall installiert werden. Bei jedem
Testfall wird unabhängig des Zertifikates mit dem der Testfall signiert wurde, die Installation mit dem Fehler Installation nicht möglich abgebrochen. Bei den restlichen Testgeräten,
auf denen Symbian OS Version 9.2 ausgeführt wird, konnten die Testfälle ebenfalls nicht
installiert werden. Hier wurde die Installation jedoch mit dem Fehler Datei fehlerhaft abgebrochen. Die letzten Tests in diesem Bereich versuchten, die Text- und EXE-Datei in ihr
eigenes privates Verzeichnis zu kopieren. Dass alle Testfälle die Text-Dateien in ihr Verzeichnis
kopieren konnten, war nicht überraschend. Sogar die EXE-Dateien konnten mit jeder Signierung der Testfälle in dieses Verzeichnis kopiert werden. Wie auch schon die EXE-Dateien in
das \\resource Verzeichnis kopiert werden konnten, besteht auch hier keine Gefahr für das
System, wenn eine EXE-Datei in das eigene private Verzeichnis kopiert wird, da die Datei in
diesem Verzeichnis nicht ausgeführt werden kann.
MIME-Test
Im abschließenden Test wurde während der Installation versucht, über einen MIME-Typ eine
EXE-Datei auszuführen. Die zusätzliche EXE-Datei wird dabei im Installationspaket mitgeliefert. In der Standard SWIPolicy wird der Parameter AllowRunOnInstallUninstall auf false
gesetzt. Mit dieser SWIPolicy konnten zwar die nicht signierten und selbst signierten Testfälle installiert werden, aber die mitgelieferte EXE-Datei wurde nicht ausgeführt. Nur wenn die
Testfälle durch ein Developer- oder ein „root“-Zertifikat signiert wurden, konnten die Testfälle
77
5. Ergebnisse und Evaluierung
installiert werden und die mitgelieferte EXE-Datei wurde auch ausgeführt. Werden diese Testfälle jedoch mit der ersten SWIPolicy, in der der Parameter AllowRunOnInstallUninstall
auf true gesetzt wurde, ausgeführt, so können nicht nur die nicht signierten oder selbst signierten Testfälle installiert werden, sondern die mitgelieferten EXE-Dateien wurden während
der Installation ausgeführt.
5.5.5. Certificate
Die Testfälle des Certificate-Testbereichs untersuchen die verschiedenen Zertifikate, die in
Symbian OS 9 eingesetzt werden. Bei der Untersuchung wurden die Tests unterstützend
mit verschiedenen SWIPolicies, die im Anhang A.3.2 aufgeführt sind, durchgeführt. In diesem Testbereich konnte der Emulator nicht verwendet werden, sodass auch das PlattformKriterium nicht angewendet werden konnte.
Zunächst werden die Ergebnisse mit der Standard SWIPolicy, die sich beim E61 nur durch
den Parameter AllowUnsigned=true von den SWIPolicies der anderen Testgeräte unterscheidet, vorgestellt. Nicht signierte Testfälle konnten nur auf dem E61 installiert werden, da die
SWIPolicy auf den anderen Testgeräten nicht signierte Anwendungen nicht zulässt. Hierbei
konnten auch nur die Testfälle installiert werden, die User Capabilities benutzen. Die restlichen Testfälle konnten mit mehr Capabilities oder nicht signiert nicht installiert werden, sodass
korrekterweise eine Anwendung ohne eine Signierung nur dann installiert werden kann, wenn
sie nur User Capabilities benutzt und die SWIPolicy nicht signierte Anwendungen zulässt. Die
selbst signierten Testfälle ließen sich zwar auf allen Testgeräten installieren, aber da auch hier
der SWInstaller keine vertrauenswürdige Grundlage findet, konnten nur die Testfälle mit User
Capabilities installiert werden. Ein altes Developer-Zertifikat besaß ich nur noch für das E61,
sodass diese Testfälle auch nur auf diesem Gerät untersucht werden konnten. Wie nicht anders
zu erwarten war, konnten nur die Testfälle installiert werden, die mit User Capabilities oder
Developer Capabilities ausgestattet waren. Auf den anderen Testgeräten konnte dieses Verhalten aber auch beobachtet werden, wenn die Testanwendungen über Open Signed signiert
wurden. Über Open Signed können maximal Developer Capabilities gewährt werden. Mit Hilfe des „root“-Zertifikates konnten alle Capabilities, die Symbian OS 9 bereitstellt, verwendet
werden. Selbst die Tcb Capability konnte mit diesem Zertifikat gewährt werden.
Bei der Untersuchung des Installationsverhaltens mit verschiedenen Parametern der SWIPolicy wurden zunächst drei verschiedene SWIPolicies verwendet. Die beiden ersten veränderten Policies sollten die Zertifikatserweiterungen untersuchen. Zu diesem Zweck wurde der
MandatePolicies Parameter der SWIPolicy entgegen dem Standard auf true gesetzt. Die
restlichen Parameter blieben unverändert. Bei diesen Tests konnten nur diejenigen Testfälle
installiert werden, die nur User Capabilities benutzten. Alle anderen Testfälle, die mehr Capabilities verwendeten, auch Anwendungen die mit einem „root“-Zertifikat signiert wurden,
konnten nicht installiert werden. Das interessante hierbei ist, dass die jeweiligen Zertifikate,
mit denen die Testfälle signiert wurden, vom SWInstaller nicht erkannt wurden. Das ist darauf
zurückzuführen, dass der Parameter MandatePolicies die spezifizierten Oids der SWIPolicy
in den jeweiligen Zertifikaten fordert. Findet der SWInstaller keine dieser Oids in dem Zertifikat der Anwendung, kann der SWInstaller die Vertrauenswürdigkeit des Installationspaketes
nicht verifizieren und behandelt es somit wie ein nicht signiertes Installationspaket.
78
5.5. Vorstellung der Ergebnisse
Wird nun bei der Zertifikatsuntersuchung zusätzlich zum MandatePolicies noch der Mandate
CodeSigningExtension Parameter in einer weiteren SWIPolicy gesetzt, kann keine Testanwendung installiert werden. Selbst Testfälle mit User Capabilities werden mit dem Fehler Zertifikatsfehler. Bitte wenden sie sich an den Programmlieferanten. an der Installation gehindert.
Das ist dadurch zu erklären, dass die jeweiligen Zertifikate nicht die Zertifikatserweiterung OID
1.3.6.1.5.5.7.3.3 besitzen. Nicht signierte Anwendungen konnten nicht installiert werden,
da es ihnen in der SWIPolicy nicht erlaubt wurde.
Bei der letzten SWIPolicy sollte das OCSP untersucht werden. Dafür wurde der Parameter
OcspMandatory auf true und OcspEnabled ist standardmäßig auf true gesetzt. Zusätzlich
dazu sind die SWInstaller-Einstellungen auf den Testgeräten entscheidend. Ist die OCSPPrüfung in den Einstellungen deaktiviert, können trotz OcspMandatory=true alle Testfälle
installiert werden. Wird hingegen die OCSP-Prüfung eingeschaltet und in den SWInstallerEinstellungen auf Bestätigung nötig, konnten nur die nicht signierten Anwendungen installiert werden. Hierbei ist AllowUnsigned=true. Bei den restlichen signierten Anwendungen
wird eine Zertifikatsprüfung durchgeführt, jedoch endet sie bei jedem signierten Testfall mit
dem Fehler Online-Zertifikatsprüfung nicht möglich. Einstellungen überprüfen. Dieser Fehler ist wahrscheinlich auf das Fehlen der Standard-Web-Adresse innerhalb der SWInstallerEinstellungen zurückzuführen. Zu diesem Zweck sollte jedoch das entsprechende Zertifikat
eine Adresse enthalten, sodass mit ihrer Hilfe die Gültigkeit des Zertifikates überprüft werden
kann.
Die unterschiedlichen Testgeräte beeinflussten die Testergebnisse in keiner Weise, sodass gemäß dem Symbian-Versionen-Kriterium weder zwischen den Testgeräten noch zwischen den
Symbian Versionen Unterschiede aufgetreten sind. Durch die drei verschiedenen SWIPolicies konnten die für diesen Testbereich relevanten Parameter der SWIPolicy gemäß dem
SWIPolicy-Kriterium verifiziert werden. Dadurch konnte auch der Parameter für das OCSP in
den SWInstaller-Einstellungen, wie es das SWInstaller-Einstellungen-Kriterium fordert, überprüft werden. Bei der Durchführung der Testfälle mit den verschiedenen SWIPolicies konnten
bei den standardmäßig vorhandenen SWIPolicies gemäß dem Software-Branding-Kriterium
keine Unterscheide in den SWIPolicies der Testgeräte gefunden werden. Die SWIPolicies der
Testgeräte, die ein Software-Branding aufwiesen, enthielten die identischen Definitionen der
Parameter, die auch Testgeräte ohne solch ein Software-Branding bereitstellten.
5.5.6. Capabilities
Die Testfälle der Capabilities sind in drei Bereiche geteilt. Im ersten Bereich werden die
DLL-Regeln untersucht, im zweiten Bereich die Funktionalität der einzelnen Capabilities und
schließlich wird im dritten Bereich die Client/Server-Architektur untersucht. Die Ergebnisse
werden einzeln für alle drei Bereiche für beide Plattformen präsentiert und am Ende des
Abschnitts miteinander verglichen.
DLL-Regeln-Tests
Im ersten Bereich der Capabilities-Testfälle wurde bei den Tests zunächst jeweils eine EXEDatei mit einer DLL „verlinkt“. Im nächsten Schritt wurde sozusagen eine DLL-Kette aufgebaut, in der eine EXE-Datei eine Funktion aus einer DLL lädt, die wiederum eine Funktion
79
5. Ergebnisse und Evaluierung
einer weiteren DLL lädt. Auf diese Weise werden drei DLL ineinander „verlinkt“. Die Ergebnisse der einzelnen Tests spiegeln genau das von Symbian spezifizierte Verhalten wider.
Die unterschiedlichen Signierungen spielen dabei keine Rolle. Nur die Capabilities der EXEDateien und der DLL sind entscheidend. Bei den einzelnen Tests konnten die Anwendungen
mit den gleichen oder weniger Capabilities als die DLL, die die Testfälle laden, ausgeführt
werden. Besitzen die Anwendungen mehr Capabilities als die DLL selbst, so konnte die Testanwendung, die die DLL laden sollte, mit dem Fehler Datei konnte aus Sicherheitsgründen
nicht ausgeführt werden nicht gestartet werden. Die Testanwendungen, die die drei ineinander
geschachtelten DLL laden sollten, zeigten auch kein untypisches Verhalten. Die CapabilityRegeln konnten gemäß dem Regeln-Kriterium auch in diesem Fall durch die Testfälle die
korrekte Funktionsweise verifizieren. Abbildung 5.2 verdeutlicht diesen Zusammenhang noch
einmal grafisch, wobei „none“ für keine verwendete Capability und „Cx“ für die verwendeten
Capabilities steht. Im Emulator wurden die identischen Testfälle benutzt, jedoch ohne die Si-
Abbildung 5.2.: Ergebnisse DLL-Regeln
gnierung der Testfälle zu untersuchen. Die Ergebnisse brachten auch hier keine unerwarteten
Resultate. Die Capability-Regeln konnten auch im Emulator ohne Ausnahmen verifiziert werden, sodass das Regeln-Kriterium auch hier erfüllt wird. Die Abbildung 5.2 kann hier ebenfalls
zur Verdeutlichung herangezogen werden.
Die einzelnen Ergebnisse zwischen den vier Testgeräten unterscheiden sich in keinem einzigen
Testfall, sodass das Symbian-Versionen-Kriterium hier zu keinen Unterschieden führt. Auch
die einzelnen Emulator Versionen unterscheiden sich untereinander nicht. Werden nun nach
dem Plattform-Kriterium beide Plattformen miteinander verglichen, so verhalten sich beide
80
5.5. Vorstellung der Ergebnisse
Plattformen identisch und das spezifizierte Verhalten gemäß der PSA wird ohne Ausnahmen
eingehalten.
Capability-Tests
Der nächste Bereich untersucht ausgewählte Capabilities, ob zur Ausführung der jeweiligen
Funktion die dokumentierte Capability benötigt wird. Dafür wurden User Capabilities, System Capabilities und Device Manufacturer Capabilities benutzt. Bei den User Capabilities,
die zunächst auf den Testgeräten untersucht wurden, zeigte sich, dass nur zwei der getesteten Capabilities gemäß der Dokumentation ausgeführt werden konnten. Ein Test zeigte, dass
die geforderte Capability einer Funktion in der Dokumentation bei der Ausführung auf dem
Testgerät nicht benötigt wurde. In einem anderen Testfall konnte festgestellt werden, dass
zur Ausführung einer Funktion eine zusätzliche Capability benötigt wurde, die in der Dokumentation jedoch nicht zu finden war. Bei den getesteten System Capabilities konnte dieses
Verhalten nicht beobachtet werden. Hier wurden die geforderten Capabilities auch stets benötigt und ohne die entsprechende Capability konnte die jeweilige Funktion nicht ausgeführt
werden. Bei den Device Manufacturer Capabilities konnte ein ähnliches Bild festgestellt werden. Aber nicht nur anhand der beiden Testfälle in diesem Bereich, sondern auch durch die
Data-Caging-Testfälle, bei denen nur mit den entsprechenden Capabilities auf die geschützten Bereiche zugegriffen werden konnte, konnte die korrekte Funktionsweise der Manufacturer
Capabilities gezeigt werden. Gemäß dem Symbian-Versionen-Kriterium konnten keine Unterschiede zwischen den Symbian Versionen der Testgeräte gefunden werden. In den Emulatoren
konnte die gleiche Verhaltensweise beobachtet werden, sodass das Plattform-Kriterium bei
diesen Testfällen keine Unterschiede gegenüber den Testgeräten aufgekommen sind. Jedoch
konnten erst im Emulator die fehlenden User Capabilities bei den jeweiligen Testfällen erkannt
werden.
Client/Server-Tests
Im abschließenden Bereich werden die Client/Server-Testfälle als Paar zweier Prozesse definiert. Dabei können laut Definition beide Prozesse gleichzeitig oder separat spezifiziert werden.
Die Testfälle implementieren einen einfachen Uhrzeit-Server, dessen Clients auf Anfrage die
aktuelle Zeit vom Server erhalten. In dem ersten Test werden Client und Server jeweils mit
keinen Capabilities ausgestattet. Beide Prozesse können ausgeführt werden und der Client
kann ohne Probleme auf den Server zugreifen. Das gleiche Bild zeichnet sich ab, wenn beide
Prozesse mit den identischen Capabilities ausgestattet werden. Im nächsten Testfall wird der
Server mit drei Capabilities, darunter zwei User Capabilities und der AllFiles Capability,
ausgestattet. Wird hingegen der Client mit keiner Capability ausgestattet, so kann er dennoch
auf den Server zugreifen und die korrekte Zeit erhalten. Im Gegenzug wird der letzte Testfall
genau umgekehrt zum vorherigen Testfall definiert, sodass der Client die drei Capabilities
besitzt und der Server diesmal keine Capabilities. Auch in diesem Fall kann der Client die
korrekte Zeit vom Server erhalten.
Der Vergleich zwischen Emulator und den Testgeräten durch das Plattform-Kriterium bringt
keinen Unterschied zwischen den Plattformen hervor. Auch nach dem Symbian-VersionenKriterium verhalten sich die verschiedenen Testgeräte untereinander völlig identisch, sodass
in der Ausführung der Testfälle keine Unterschiede festgestellt werden.
81
5. Ergebnisse und Evaluierung
5.5.7. Integrity
Die Integrity-Testfälle können in vier Bereiche unterteilt werden. Im ersten Bereich wird die
Integrität der Installationsdateien untersucht, wohingegen in nächsten Bereich nur die Integrität der installierten EXE-Datei von Bedeutung ist. Die beiden restlichen Bereiche untersuchen
noch die Integrität der installierten Ressource-Dateien und die Integrität vorinstallierter Anwendungen (PU).
Installationspakete
Die Ergebnisse des ersten Testbereichs zeigen, dass nur die SIS-Dateien installiert werden
konnten, an die Null-Bytes an das Ende der Datei gehängt wurden. Die restlichen Testfälle konnten aufgrund der Veränderung nicht installiert werden. Der SWInstaller verweigerte
die Installation mit den Fehlern Installation ’Name der Anwendung’ nicht unterstützt oder
Installation nicht möglich. Im Emulator konnten diese Testfälle nicht ausgeführt werden, da
der Emulator das Installieren von Anwendungen nicht unterstützt und somit kann auch das
Plattform-Kriterium nicht angewendet werden. Beim Symbian-Versionen-Kriterium hingegen
verhalten sich die Installationspakete auf allen Testgeräten gleich.
EXE-Dateien
Der nächste Bereich stellt die Ergebnisse der Testfälle vor, in denen die Integrität der EXEDateien auf beiden Laufwerken C und E untersucht wird. Bei den Testfällen auf Laufwerk C
konnten auf dem Nokia E61 nur die Testfälle ohne Fehler ausgeführt werden, deren Capabilities nachträglich verändert wurden. Die Testfälle, in denen gezielt Hex-Werte der EXE-Dateien
verändert wurden, konnten aufgrund der Veränderung auf dem E61 nicht gestartet werden. Im
Gegensatz dazu konnten alle Testfälle auf den restlichen Testgeräten ohne Fehler ausgeführt
werden. Der Unterschied ist dadurch zu erklären, dass für die Veränderung immer die gleiche Byte-Position herangezogen wurde und aufgrund der verschiedenen Symbian Versionen
der Testgeräte sich die Anordnung innerhalb der Datei verändert hat. Bei den Testfällen auf
Laufwerk E konnten die Testfälle grundsätzlich nur ausgeführt werden, wenn nach der Veränderung der EXE-Datei auch die Hash-Werte der jeweiligen EXE-Dateien angepasst wurden.
Wurden hingegen die Hash-Werte nicht angepasst, so verweigerten die Anwendungen den
Start mit dem Fehler Datei kann aus Sicherheitsgründen nicht ausgeführt werden. Von den
beiden verbliebenen Testfällen konnte nur der Test, in dem die Capabilities der EXE-Datei
verändert wurden, auf allen Testgeräten ohne Fehler ausgeführt werden. Der Testfall, bei dem
die Hex-Werte verändert wurden, konnte, wie auch schon auf dem Laufwerk C, nur auf der
Symbian Version 9.2 ohne Fehler ausgeführt werden. Wenn hier die Ergebnisse der Testfälle
nun nach dem Symbian-Versionen-Kriterium miteinander verglichen werden, fallen nur die
versionsbedingten Unterschiede auf der Hex-Ebene auf. Die anderen Testfälle verhalten sich
aber identisch und zeigen keine Unterschiede. Im Emulator konnten nur die Integrity-Testfälle
auf dem Laufwerk C durchgeführt werden und dabei auch nur die Testfälle, in denen die EXEDateien auf Hex-Ebene verändert werden. Die Capabilities konnten dabei nicht verändert
werden, da sich das Dateiformat der EXE-Datei im Emulator von der EXE-Datei auf dem
Mobiltelefon unterscheidet und die dafür vorgesehene Anwendung nur die EXE-Dateien der
Mobiltelefone verändern kann. Von den beiden Testfällen auf dem Emulator konnte nur der
82
5.5. Vorstellung der Ergebnisse
erste ohne Fehler ausgeführt werden. Beim Start des zweiten Testfalls wurde die Ausführung mit einem Systemfehler abgebrochen. Die Emulator-Testfälle können nicht direkt gemäß
dem Plattform-Kriterium mit Ergebnissen auf den Testgeräten verglichen werden, da sich die
Dateiformate der beiden Plattformen unterscheiden.
Ressource-Dateien
Im dritten Bereich konnten alle Testfälle trotz der jeweiligen Modifikation an der RessourceDatei oder an der mitgelieferten Text-Datei ohne Probleme auf allen Testgeräten ausgeführt
werden. Dabei war es nicht entscheidend, auf welchem Laufwerk diese Tests durchgeführt wurden. Beispielsweise wurde der veränderte Autorname in der Ressource-Datei bei Ausführung
des Tests dargestellt. Beim Heranziehen des Symbian-Versionen-Kriteriums zeigt sich, dass es
keine Unterschiede in den Ergebnissen zwischen den Testgeräten gibt. Aber auch im Emulator
konnten zwei der drei Testfälle ohne Probleme ausgeführt werden. Bei dem letzten Testfall
im Emulator wurde innerhalb der Ressource-Datei ein Zeichenstring um ein Byte vergrößert.
Die Folge dieser Veränderung war, dass die Anwendung zwar gestartet werden konnte, bei
der Auswahl des entsprechenden Menüpunktes die Anwendung jedoch mit einem Fehler geschlossen wurde. Beim Vergleich gemäß dem Plattform-Kriterium können keine Unterschiede
zwischen den vergleichbaren Testfällen gefunden werden.
Vorinstallierte Anwendungen
Der abschließende Bereich untersucht die Integrität von EXE-Dateien vorinstallierter Anwendungen. Da diese Funktion im Emulator nicht unterstützt wird, sind diese Testfälle nur auf den
Testgeräten ausgeführt worden. Das Plattform-Kriterium kann deshalb bei diesem Test nicht
herangezogen werden. Der Aufbau der Testfälle ist mit den normalen Testfällen zur Integrität
der EXE-Dateien vergleichbar. Bei den Testfällen, die mit Hilfe der Stub-Dateien installiert
und anschließend verändert wurden, konnten zunächst nur die Testfälle ausgeführt werden,
dessen Hash-Werte angepasst wurden. Die Testfälle mit den veränderten Capabilities konnten
dabei ohne Fehler gestartet werden. Auch auf den Symbian Version 9.2 Testgeräten konnten die auf Hex-Ebene veränderten Testfälle ohne Fehler ausgeführt werden. Lediglich beim
E61 konnte dieser Testfall nicht durchgeführt werden, denn beim Versuch die Anwendung zu
starten, stürzte das Testgerät ab. Die restlichen Testfälle wurden zunächst auf die Testgeräte
kopiert und danach verändert. Beim Versuch, diese Testfälle mit Hilfe der Stub-Dateien zu installieren, schlugen alle Installationen entweder mit dem Fehler Datei fehlerhaft oder Erforderlicher Programmzugriff nicht gewährt fehl. Bei Anwendung des Symbian-Versionen-Kriteriums
zeigt sich, dass auf dem Testgerät mit Symbian OS Version 9.1 ein anderes Verhalten zu beobachten ist. Dieser Unterschied ist dadurch zu erklären, dass das Format der EXE-Dateien
zwischen den Symbian Versionen verschieden sind. Eine Änderung auf Hex-Ebene kann in der
einen Version zu keinem Fehler führen, wohingegen bei der anderen Version diese Veränderung
zum einem Fehler führt.
83
5. Ergebnisse und Evaluierung
5.5.8. Shared-Data
Die Shared-Data-Testfälle sind nach der Definition in drei Bereiche unterteilt, sodass die
Ergebnisse jedes Testbereichs einzeln präsentiert werden können.
Publish & Subscribe
Im ersten Testbereich werden die Publish & Subscribe-Ergebnisse aufgezeigt. Zu jedem Testfall werden jeweils zwei Prozesse ausgeführt. Dabei definiert ein Prozess eine Property und
versucht, diese gemäß der WritePolicy mit einem Wert zu beschreiben, während ein anderer
Prozess wiederum versucht, gemäß der definierten ReadPolicy den Wert der Property zu lesen. Im ersten Testfall sind beide Policies mit ECapabilityAlwaysPass definiert, sodass der
eine Prozess ohne Fehler auf allen Testgeräten die Property definieren und erstellen kann. Der
Prozess, der auf diese Property zugreift, kann diese auch lesen. Im nächsten Testfall kann der
erstellende Prozess zwar die Property definieren, jedoch nicht auf diese zugreifen, da ihm der
Zugriff verweigert wurde. Auch der lesende Prozess kann auf die Property nicht zugreifen.
Dieses Verhalten ist jedoch dadurch zu erklären, dass die Read- und die WritePolicy absichtlich mit ECapabilityAlwaysFail definiert wurden und sich somit völlig korrekt verhalten.
Werden im dritten Testfall beide Prozesse mit den zugehörigen Capabilities zu den jeweiligen
Read- oder WritePolicies ausgeführt, so kann der Prozess wie schon im ersten Testfall die
Property definieren, sie mit einem Wert initialisieren und der zugreifende Prozess kann auf
die Property lesend zugreifen. Im vierten Testfall wird die Property mit verschiedenen Capabilities in der Read- beziehungsweise WritePolicy definiert. Der eine Prozess kann zwar die
Property definieren, sie jedoch nicht beschreiben, da der Prozess nicht die benötigten Capabilities besitzt, dies zu tun. Der darauf folgende Testfall ist ähnlich konzipiert, nur besitzt
hier der lesende Prozess nicht die nötigen Capabilities auf die Property zuzugreifen. So kann
der erstellende Prozess der Property diese mit einem Wert beschreiben, versucht jedoch der
andere Prozess auf diese Property zuzugreifen, wird aufgrund der mangelnden Capability der
Zugang verweigert. Der letzte Testfall greift noch einmal die ECapabilityAlwaysFail Policy auf. Definiert der erstellende Prozess die Read- und WritePolicy der Property nun mit
ECapabilityAlwaysFail, so kann der Prozess trotz zweier User Capabilities, nicht die Property beschreiben. Das Ausführen dieser Testfälle im Emulator führt zu den gleichen Ergebnissen,
die auch schon oben beschrieben wurden.
File Handle
Der nächste Testbereich untersucht den Zugriff auf ein File Handle, das ein Prozess erstellt und
ein anderer Prozess über das File Handle auf die dahinter liegende Datei zugreift. Im ersten
Testfall in diesem Bereich kann der zugreifende Prozess auf das File Handle greifen, denn
beide Prozesse wurden ohne Capabilities definiert. Im nächsten Testfall kann der zugreifende
Prozess auch wieder auf das File Handle zugreifen und die dahinter liegende Datei verändern.
Beim dritten Testfall wurde der erstellende Prozess ohne Capabilities definiert, wo hingegen
der zugreifende Prozess auf das File Handle zwei User Capabilities besitzt. Bei der Ausführung
dieses Testfalls kann der zugreifende Prozess auf das File Handle zugreifen. Im abschließenden
Testfall ist die Verteilung der Capabilities umgekehrt, sodass der Prozess, der das File Handle
erstellt, mit zwei User Capabilities ausgeführt wird und der zugreifende Prozess ohne eine
84
5.5. Vorstellung der Ergebnisse
Capability ausgeführt wird. Aber auch in diesem Fall kann der zugreifende Prozess auf das
File Handle zugreifen. Werden diese Testfälle im Emulator ausgeführt, so unterscheidet sich
das Verhalten gegenüber den Testgeräten nicht und die Ergebnisse sind identisch.
Data Chunk
Der abschließende Testfall im Shared-Data-Testbereich präsentiert die Ergebnisse der DataChunk-Testfälle. Die Tests sind ähnlich aufgebaut wie die File-Handle-Tests, sodass zunächst
beide Prozesse ohne eine Capability untersucht werden. In diesem Testfall kann der Prozess
auf den erstellten Data Chunk des anderen Prozesses zugreifen und ihn auch beschreiben.
Werden beide Prozesse mit den identischen Capabilities ausgeführt, so kann der einfache Prozess auf den Data Chunk zugreifen. Wird aber der erstellende Prozess mit keinen Capabilities
ausgeführt und der zugreifende Prozess hingegen mit zwei User Capabilities, so kann der einfache auf den Data Chunk zugreifen. Im letzten Testfall in diesem Bereich ist der zugreifende
Prozess mit keinen Capabilities ausgestattet und der erstellende Prozess besitzt zwei User Capabilities. Auch in diesem Fall kann der einfache Prozess auf den Data Chunk zugreifen und
ihn verändern. Im Emulator kann bei allen vier Testfällen das identische Verhalten zwischen
den beiden Prozessen beobachtet werden.
Die hier vorgestellten Ergebnisse der jeweiligen Testfälle unterscheiden sich weder zwischen
den einzelnen Testgeräten und somit auch nicht nach dem Symbian-Versionen-Kriterium, noch
innerhalb der einzelnen Emulatoren in den verschiedenen Versionen. Der Vergleich zwischen
den Testgeräten und den Emulatoren gemäß dem Plattform-Kriterium zeigt ebenfalls keine
Unterschiede zwischen diesen beiden Plattformen.
Der Zugriff auf das jeweilige Objekt ist bei den beiden Methoden File Handle und Data Chunk
in der Grundfunktionalität von den Capabilities unabhängig. Diese beiden Methoden können
aber auch in Verbindung mit Publish & Subscribe benutzt werden, welches die Abhängigkeit
von den definierten Capabilities des Prozesses einführt. In einer weiteren Form kann der
Data Chunk nicht über den Namen des Chunks gefunden werden, sondern über ein anonymes
Handle.
5.5.9. IDs
Der IDs-Testbereich soll das „Zusammenspiel“ zwischen den verschiedenen UIDs anhand eines
möglichst breiten UID-Bereichs und von verschiedenen Zertifikaten zeigen. Bei diesen Tests
wurden die UID3, SID, pUID und die VID benutzt.
Zunächst wurden IDs aus dem neuen Testbereich, der ab Symbian OS Version 9 eingeführt
wurde, verwendet. Im ersten Testfall wurde die gleiche UID sowohl für die UID3, die SID als
auch für die pUID verwendet. Bei dieser Kombination gab es weder bei der Installation noch
bei der Ausführung der Testfälle Probleme. Im nächsten Testfall unterscheidet sich lediglich
die pUID von den beiden anderen UIDs. Aber auch hier kann die Testanwendung mit allen
Signierungen installiert und ausgeführt werden. Werden in einem weiteren Testfall nun alle
drei UIDs voneinander verschieden gewählt, so kann die Testanwendung mit keinem Zertifikat installiert und damit auch nicht ausgeführt werden. Wird nun in diesem UID-Testbereich
noch zusätzlich eine VID definiert und die anderen drei UIDs jedoch wieder identisch, so
85
5. Ergebnisse und Evaluierung
kann der Testfall nur noch mit einem Developer- oder einem „root“-Zertifikat installiert und
auch ausgeführt werden. Bei nicht signierten oder nur selbst signierten Testanwendungen wird
die Installation mit dem Fehler Geschütztes Programm eines unbeglaubigten Anbieters nicht
installierbar abgebrochen. Die nächsten Testfälle benutzen UIDs aus den geschütztem UIDBereich, der ebenfalls ab Symbian OS Version 9 bereitgestellt wird. Der erste Test verwendet
in diesem UID-Bereich erneut die identische UID als UID3, SID und pUID. Dabei konnten
wieder nur die Testanwendungen installiert und ausgeführt werden, die mit einem Developeroder einem „root“-Zertifikat signiert wurden. Die beiden restlichen Testanwendungen konnten
erneut mit dem Fehler Geschütztes Programm eines unbeglaubigten Anbieters nicht installierbar nicht installiert werden. Wird im folgenden Testfall die pUID wieder verschieden von der
UID3 und der SID gewählt, so verhalten sich die Testanwendungen wie der gleiche Testfall,
der jedoch UIDs aus dem Testbereich verwendet. Hier können aber, wie schon im obigen
Testfall beschrieben, nur Testfälle installiert werden, die durch ein Developer- oder „root“Zertifikat signiert sind. Der nächste Testfall untersucht weiterhin UIDs aus dem geschützten
Bereich. Dieses Mal werden die UIDs jedoch wie schon oben voneinander verschieden gewählt.
Typisch für den geschützten UID-Bereich hätten nur Testfälle installiert werden können, die
durch ein Developer- beziehungsweise „root“- Zertifikat signiert sind, doch bei der Kombination verschiedener UIDs wird die Installation mit dem Fehler Installation nicht möglich bei der
Hälfte abgebrochen. In den beiden anderen Testfällen wird die Installation bereits zu Beginn
des Installationsprozesses mit dem oben beschriebenen Fehler verweigert. Der abschließende
Testfall benutzt gleiche UIDs, zusätzlich aber eine VID. Wie beim entsprechenden Testfall
innerhalb des UID-Testbereichs können auch hier nur Testanwendungen installiert werden,
deren Zertifikat durch eine Zertifizierungsstelle ausgestellt wurde.
Ein Unterschied zwischen den einzelnen Testgeräten konnte anhand des Symbian-VersionenKriteriums nicht erkannt werden. Lediglich auf einem Nokia E61 konnten die Testfälle mit
Hilfe eines Developer-Zertifikates untersucht und installiert werden.
Bei den Tests im Emulator, konnten alle Testfälle ohne Fehler ausgeführt werden. Dabei gab es
zwischen den einzelnen Symbian Emulator Versionen keine Unterschiede. Die fehlerfreie Ausführung der Testfälle ist dadurch zu erklären, dass beispielsweise eine SID aus dem geschützten
Bereich an ein vertrauenswürdiges Zertifikat geknüpft ist. Nur wenn der SWInstaller das Installationspaket als vertrauenswürdig einstuft, kann die Anwendung mit der SID aus dem
geschützten Bereich installiert werden. Ähnlich verhält es sich mit der VID. Da jedoch dieser
Mechanismus im Emulator fehlt, können die Testanwendungen mit verschiedenen UIDs aus
unterschiedlichen UID-Bereichen ausgeführt werden. Die Emulator-Plattform kann in diesem
Fall nicht bei der Verifikation der UIDs und damit auch nicht für das Verifikationskriterium
herangezogen werden.
Den Emulator und die Testgeräte hier in diesem Testbereich nach dem Plattform-Kriterium
zu vergleichen ist besonders schwierig. Die ganzen Sicherheitsmechanismen können während
der Installation im Emulator nicht greifen, da der SWInstaller im Emulator nicht vorhanden
ist. Jedoch zeigt der Emulator, dass auch verschiedene UIDs wie die UID3, SID und die pUID
in Symbian OS 9 lauffähig wären. Schon in der Spezifikation der PSA ist beschrieben, dass
die SID und UID3 gleich gewählt werden sollen, jedoch nicht müssen. Der SWInstaller wurde
aber darauf konditioniert, einen möglichen Konflikt, der aus dieser Situation heraus entstehen
könnte, zu verhindern. Der Emulator zeigt aber auch, dass ein Konflikt bei verschiedener UID3
und SID nicht gleich auftreten muss. Nur wenn eine Anwendung explizit die UID3 und die
SID für den gleichen Zweck benutzt, kann es zu einem Konflikt kommen.
86
5.6. Aussagekraft der Ergebnisse
5.5.10. API
Die API-Testfälle sind der Vollständigkeit halber in das Testsystem integriert worden. Dabei
konnten die drei Beispiele zur Definition der Testfälle gemäß der API-Dokumentation korrekt
ausgeführt werden und zeigten keinerlei Abweichungen. Sowohl auf den Testgeräten als auch
im Emulator wurden alle drei Tests, wie in der API-Dokumentation spezifiziert, bestanden.
Demnach ist das Verifikationskriterium der drei API-Testfälle erfüllt. Unterschiede gemäß dem
Symbian-Versionen-Kriterium zwischen den einzelnen Testgeräten gab es keine und auch im
Vergleich zum Emulator unterscheiden sich die Testergebnisse der drei Testfälle nach dem
Plattform-Kriterium nicht untereinander.
5.6. Aussagekraft der Ergebnisse
Nachdem in den zurückliegenden Abschnitten die Ergebnisse der einzelnen Testbereiche ausführlich beschrieben wurden, sollen hier noch einmal die zentralen Aussagen und die damit
verbundenen Konsequenzen der jeweiligen Testbereiche erläutert werden.
5.6.1. Data Caging
Jeder Prozess kann grundsätzlich auf alle geschützten Verzeichnisse nur dann schreibend oder
lesend zugreifen, wenn er die dafür benötigten Capabilities besitzt. Ohne die entsprechende
Capability kann ein Prozess nicht auf das geschützte Verzeichnis zugreifen. Diese Tests haben
gezeigt, dass die Data-Caging-Zugangsregeln aus Abschnitt 2.2.4, Tabelle 2.5 eingehalten werden und korrekt mit den jeweiligen Capabilities funktionieren. Das Regeln-Kriterium für das
Data Caging wird somit erfüllt. Die Trennung zwischen lesendem und schreibendem Zugriff
innerhalb der geschützten Verzeichnisse konnte ohne Probleme nachvollzogen werden. Die Ergebnisse der Testfälle haben aber auch schon hier die Eigenschaften der Capabilities gezeigt.
Das heißt, ein Prozess konnte mit der ihm zugewiesenen Capability nur auf die Verzeichnisse
zugreifen, die es die Capability erlaubt. Selbst ein Prozess, der mit der Tcb Capability ausgestattet wurde, kann nicht auf Verzeichnisse zugreifen, die eine AllFiles Capability verlangen.
Anhand der Ergebnisse im Emulator, kann die Eigenschaft, dass das Data Caging nur von den
Verzeichnissen abhängt und nicht vom Laufwerk, verifiziert werden. Aufgrund dieser Eigenschaft ist das Data Caging sehr flexibel und kann auch auf weiteren Laufwerken, ohne neue
Einstellungen vorzunehmen, verwendet werden.
5.6.2. File Eclipsing
Die Tests in diesem Bereich haben gezeigt, dass vollständige Installationspakete nicht durch
andere Installationspakete in eine Eclipsing-Situation gebracht werden können. Selbst ein
vertrauenswürdiges Installationspaket kann ein nicht vertrauenswürdiges Installationspaket
in keine Eclipsing-Situation bringen. Eine weitere zentrale Aussage, die mit Hilfe der Testfälle
getroffen werden kann, ist, dass bereits installierte Dateien unabhängig von ihrem Format nicht
durch andere Dateien während der Installation in eine Eclipsing-Situation gebracht werden
können. Dabei spielt es keine Rolle, ob es sich um eine Text-, EXE- oder DLL-Datei handelt.
Jeder Versuch, eine dieser Dateien in eine Eclipsing-Situation zu bringen, endete mit einem
87
5. Ergebnisse und Evaluierung
Aktualisierungsfehler. Mit dieser Aussage kann die Eclipsing-Regel in Abschnitt 2.4.2 nicht
verifiziert werden. In den Testfällen konnte ich nicht feststellen, dass ein vertrauenswürdiges
Installationspaket eine Eclipsing-Situation mit einer Datei eines nicht vertrauenswürdigen
Installationspaketes erfolgreich herstellen konnte. In diesem Fall ließ der SWInstaller nicht zu,
wählen zu können, ob die vorhandene Datei des nicht vertrauenswürdigen Installationspaketes
gelöscht werden soll. Aufgrund dieses Verhaltens kann das Regeln-Kriterium für das Data
Caging nicht völlig erfüllt werden. Jedoch konnten die Testfälle zeigen, dass zur Laufzeit
Text-Dateien in eine Eclipsing-Situation gebracht werden können.
5.6.3. File Overwriting
Die Ergebnisse der File-Overwriting-Testfälle konnten zunächst zeigen, dass das Überschreiben einer bereits installierten Anwendung nur über ein SA-Update bewerkstelligt werden kann,
wenn für das Update alle Voraussetzungen erfüllt sind. Dabei konnte auch festgestellt werden, dass ein vertrauenswürdiges Installationspaket nicht durch ein nicht vertrauenswürdiges
Installationspaket überschrieben werden kann. Eine weitere wichtige Aussage in diesem Testbereich ist, dass einzelne Dateien, ob Text-, EXE- oder DLL-Dateien, während der Installation
nicht durch andere Dateien überschrieben werden können. Nicht mal „root“ signierten Installationspaketen ist es möglich, andere Dateien zu überschreiben. Anhand der Update-Testfälle
konnte das spezifizierte Verhalten gezeigt und gemäß dem Verifikationskriterium verifiziert
werden. Diese Testfälle haben erneut gezeigt, dass ein vertrauenswürdiges Installationspaket nicht durch ein nicht vertrauenswürdiges Installationspaket aktualisiert werden kann. Die
File-Overwriting-Testfälle haben somit auch das Regeln-Kriterium erfüllt. Eine abschließende
Aussage, die aus den Testergebnissen gezogen werden kann, besagt, dass Text-Dateien zur
Laufzeit überschrieben werden können.
5.6.4. SWInstaller
Die Ergebnisse der SWInstaller-Testfälle haben gezeigt, dass Anwendungen, die nicht signiert
oder selbst signiert sind, nur diejenigen User Capabilities benutzen können, die in der SWIPolicy definiert sind. Die weiteren Tests konnten aber zusätzlich noch zeigen, dass bei der
Definition der UserCapabilities in der SWIPolicy die Capabilities nicht nur auf User Capabilities beschränkt sind, sondern dort alle Capabilities definiert werden können. Als Konsequenz dessen kommt der richtigen Konfiguration der SWIPolicy eine wichtige Bedeutung
zu. Mit Hilfe dieser Ergebnisse konnte auch die Frage nach der Priorisierung der SWIPolicy
gemäß dem SWInstaller-Einstellungen-Kriterium beantwortet werden, wonach die SWIPolicy
als erste Instanz gesehen werden kann und erst wenn eine Entscheidung unter Zuhilfenahme
der SWIPolicy gefunden werden konnte, kann im nächsten Schritt eine Entscheidung gemäß
den SWInstaller-Einstellungen getroffen werden. In den weiteren Testfällen konnte beobachtet werden, dass EXE-Dateien in jedes geschützte Verzeichnis mit Ausnahme des \private
Verzeichnisses kopiert werden konnten. Das ist damit zu erklären, dass EXE-Dateien nur in
\sys\bin ausgeführt werden können und somit in anderen Verzeichnissen keine große Sicherheitsrelevanz besitzen. Die oben angesprochene Ausnahme bezieht sich aber auch auf TextDateien, sodass weder EXE- noch Text-Dateien in das \private Verzeichnis kopiert werden
können. Die Ergebnisse der SWInstaller-Tests haben aber auch gezeigt, dass Text-Dateien
bei der Installation nicht in das \sys\bin Verzeichnis kopiert werden können. Bei diesem
88
5.6. Aussagekraft der Ergebnisse
Ergebnis konnte mit dem Symbian-Versionen-Kriterium ein Unterschied zwischen den Symbian Versionen 9.1 und 9.2 festgestellt werden, der sich beim Abbruch der Installation durch
Anzeige eines anderen Fehlers äußert. Auf Grundlage der Ergebnisse, in denen der MIME-Typ
untersucht wurde, kann die Aussage getroffen werden, dass eine EXE-Datei nur dann durch
ein nicht signiertes Installationspaket während der Installation ausgeführt werden kann, wenn
die SWIPolicy dieses Verhalten zulässt. Ansonsten können nur durch vertrauenswürdige Installationspakete EXE-Dateien während der Installation ausgeführt werden.
Insgesamt konnten die Testfälle das Verifikationskriterium erfüllen und die korrekte Funktionsweise des SWInstallers zeigen. Dabei konnte auch in den einzelnen Testfällen die Mächtigkeit
des SWInstallers getestet und nach dem SWInstaller-Kriterium das spezifizierte Verhalten des
SWInstallers entsprechend der SWIPolicy gezeigt werden, sodass auch gemäß dem SWIPolicyKriterium mit den drei SWIPolicies nur das definierte Verhalten in der SWIPolicy beobachtet
werden konnte, unabhängig von der Symbian Version und dem Gerätemodell.
5.6.5. Certificate
Anhand der Ergebnisse der Certificate-Testfälle konnten die einzelnen Zertifikate und deren
Mächtigkeit, Capabilities zu gewähren, verifiziert werden. Dabei konnte nach dem Verifikationskriterium jedem Zertifikat das spezifizierte Verhalten, Capabilities zu gewähren, nachgewiesen werden. Eine weitere Aussage der Testfälle konnte mit verschiedenen SWIPolicies
dargestellt werden. Dabei wurde die Abhängigkeit der Zertifikate von den Einstellungen in
der SWIPolicy deutlich. Selbst ein „root“-Zertifikat kann mit den richtigen Einstellungen in
der SWIPolicy als nicht vertrauenswürdig vom SWInstaller eingestuft werden. Eine überraschende Aussage konnte über die OCSP-Prüfung getroffen werden. Trotz der aktivierten
Option für das OCSP in der SWIPolicy ist es dem Benutzer immer noch möglich, die Prüfung
in den Einstellungen des SWInstaller zu deaktivieren und der OCSP-Prüfung zu entgehen.
Dennoch scheint aber die OCSP-Prüfung noch nicht zu funktionieren, denn es ist weder ist
eine Standard-Adresse im SWInstaller hinterlegt noch besitzen die getesteten Zertifikate eine
alternative OCSP-Adresse.
5.6.6. Capabilities
Die Ergebnisse der Capability-Testfälle konnten die korrekte Funktionsweise der CapabilityRegeln anhand einfacher und etwas komplexerer Testfälle, in denen bis zu drei DLL ineinander „gelinkt“ wurden, verifiziert werden. Dadurch konnte auch das Regeln-Kriterium in
den Capability-Testfällen erfüllt werden. Durch die Ergebnisse der einzelnen Capability-Tests
konnte die korrekte Funktionsweise der Capabilities gemäß dem Verifikationskriterium gezeigt
werden. Nur durch die definierte Capability kann in den meisten Fällen auf die Funktion, die
die Capability gewährt, zugegriffen werden. Hier sollte aber die Dokumentation der Funktionen, die durch Capabilities geschützt werden, gründlich überarbeitet werden, denn nicht
immer kann mit der angegebenen Capability auch die beschriebene Funktion genutzt werden.
Mit den Ergebnissen der Client/Server-Testfälle konnte die Funktionsweise der Client/ServerArchitektur verifiziert und damit auch das Verifikationskriterium erfüllt werden. Wird ein
Server in der Standard-Konfiguration implementiert und ist dieser selbst mit der Tcb Capability ausgestattet, so kann immer noch ein Client auf den Server zugreifen, auch wenn der
89
5. Ergebnisse und Evaluierung
Client keine Capabilities besitzt. Bei der Implementierung eines Servers sollte deshalb die
sichere Variante gewählt werden, in der der Server eine Policy definiert, die den Zugriff nur
für bestimmte Clients mit den entsprechenden Capabilities gewährt.
5.6.7. Integrity
Die ersten Testfälle zeigen, dass die Integrität der Installationsdateien nicht 100-prozentig gegeben ist. Das untermauert besonders der Testfall, dessen Installationsdatei durch Null-Bytes
vergrößert und installiert werden konnte. Mit etwas mehr Aufwand und Verständnis für das
SIS-Installationspaket könnte die Installationsdatei erfolgreich verändert und ohne Fehler installiert werden. In weiteren Testfällen konnte gezeigt werden, dass bei der Installation auf
Laufwerk C der SWInstaller wie bei der Installation auf einer Speicherkarte einen Hash der installierten EXE-Datei erstellt. Jedoch werden diese Hash-Werte auf Laufwerk C nicht benutzt.
Wurden die Testanwendungen korrekt auf der Speicherkarte installiert, unabhängig davon ob
es sich bei der Installation um einen SA- oder PA-Installationstyp gehandelt hat, konnten die
modifizierten Testanwendungen nur dann ausgeführt werden, wenn die Hash-Werte der EXEDateien angepasst wurden. Die weiteren Ergebnisse zeigen, dass die Integrität noch nicht
installierter PA-Testanwendungen durch die „Stub“-Datei gegeben ist. Diese Testergebnisse
machen deutlich, dass die Integrität der EXE-Dateien auf einer Speicherkarte ausreichend
durch den Hash-Wert geschützt ist, jedoch nur, wenn kein Zugang zu den geschützten Verzeichnissen besteht. Anhand dieses Ergebnisses ist Integrität der EXE-Dateien gemäß dem
Verifikationskriterium gegeben. Durch die Ergebnisse der Ressource-Dateien konnte festgestellt werden, dass die Ressource-Dateien auf Laufwerk E nicht durch weitere Mechanismen
geschützt sind. Dadurch kann die Speicherkarte aus dem Mobiltelefon entnommen und die
Ressource-Dateien verändert werden. Die Ergebnisse im Emulator können nicht direkt mit
den Ergebnissen, die mit den Testgeräten erzielt wurden, verglichen werden. Das Dateiformat
der EXE-Dateien im Emulator unterscheidet sich zu sehr von den Testgeräten. Da es sich
dabei auch um unterschiedliche Plattformen handelt, kann die Integrität der EXE-Dateien
nicht miteinander verglichen werden.
5.6.8. Shared-Data
Die Ergebnisse der Shared-Data-Testfälle zeigten beim Publish & Subscribe, dass ein Prozess
nur dann auf eine definierte Property zugreifen kann, wenn die definierten Capabilities in
der Read- oder WritePolicy mit den Capabilities, die der Prozess besitzt, übereinstimmen.
Nur in diesem Fall kann der Prozess die Property beschreiben oder ihren Wert lesen. In allen anderen Fällen wird der Zugriff auf die Property verweigert. Die Ergebnisse der Publish
& Subscribe-Testfälle verdeutlichen, dass das Verifikationskriterium erfüllt wurde. Publish &
Subscribe kann als Grundbaustein für weitere Techniken, die solche Sicherheitsmechanismen
nicht bereitstellen, verwendet werden, beispielsweise für File Handles oder Data Chunks, die
in ihrer Grundfunktionalität diese Merkmale nicht besitzen. Durch die Ergebnisse der FileHandle- und Data-Chunk-Testfälle wurde deutlich, dass der Zugriff auf das jeweilige Objekt
auch ohne eine Capability erfolgen kann. Als Konsequenz dessen sollten diese zuletzt genannten Techniken nur über das Publish & Subscribe Konzept genutzt werden.
90
5.7. Fazit der Ergebnisse
5.6.9. IDs
Im IDs-Testbereich konnte zunächst einmal die Verwendung der IDs verifiziert werden. Dabei
konnte beobachtet werden, dass für die Verwendung von IDs aus dem geschützten UID-Bereich
die Installationspakete mindestens mit einem Developer-Zertifikat signiert sein müssen. Für
IDs aus dem UID-Testbereich gilt diese Beschränkung nicht. Es konnte ebenfalls verifiziert
werden, dass bei der Verwendung einer VID das Installationspaket auch mindestens mit einem
Developer-Zertifikat signiert sein muss. Gemäß dem Verifikationskriterium konnte die Spezifikation der UIDs und der damit benötigten Zertifikate verifiziert werden. Eine abschließende
Aussage kann über die Verwendung von völlig unterschiedlichen IDs innerhalb der Installationspakete getroffen werden. In der Spezifikation der PSA ist es nur eine Empfehlung, die
gleiche UID sowohl für die UID3 als auch für die SID zu verwenden. Der SWInstaller hingegen sieht es aber als Notwendigkeit an, die gleiche UID als UID3 und SID zu verwenden.
Letztendlich sollte es aber als Empfehlung angesehen werden, denn wie der Emulator beweist,
sind auch diese Testfälle lauffähig.
5.6.10. Emulator
Die Ergebnisse der Emulator-Testfälle haben gezeigt, dass mit dem Emulator nicht alle Merkmale der PSA erfasst werden können. Der Emulator kann in dieser Hinsicht nur als zusätzliche
Möglichkeit neben dem Mobiltelefon eingesetzt werden. Zwar kann der Emulator einen großen
Bereich der PSA abdecken, dient aber hauptsächlich als Entwicklungswerkzeug zur Verifikation der Funktionsweise der zu testenden Anwendung. Dadurch kann der Emulator in bestimmten Situationen nicht mit einem echten Mobiltelefon verglichen werden. Beispielsweise zeigen
die Integrity-Testfälle, dass aufgrund des unterschiedlichen Dateiformats der EXE-Dateien die
Testfälle nicht miteinander verglichen werden können. Dennoch kann der Emulator in einigen
Bereichen mit dem Mobiltelefon verglichen werden und somit auch das Plattform-Kriterium
berechtigterweise eingesetzt werden. Die beiden Kriterien Verifikation und Regeln liefern im
Emulator dennoch eine vertrauenswürdige Grundlage für die Ergebnisse, da im Emulator
größtenteils der gleiche Symbian OS Quellcode verwendet wird.
5.7. Fazit der Ergebnisse
Größtenteils konnte die Spezifikation der PSA durch die Testfällen verifiziert werden. Wie
jedoch zu erwarten war, gab es nur sehr wenige Unterschiede zwischen den einzelnen Testgeräten und den Symbian Versionen. Auch die untersuchten Versionen der Emulatoren brachten
untereinander keine unterschiedlichen Ergebnisse hervor.
Während der Installation konnte nicht verifiziert werden, dass Dateien aus vertrauenswürdigen Installationspaketen andere Dateien bereits installierter Anwendungen, die durch ein
nicht vertrauenswürdiges Installationspaket installiert wurden, überschreiben können. Auch
beim File Eclipsing konnte in diesem Fall, keine Eclipsing-Situation verursacht werden. Jedoch
können Text-Dateien zur Laufzeit sowohl überschrieben als auch in eine Eclipsing-Situation
gebracht werden. Daraus kann gefolgert werden, dass mit den entsprechenden Capabilities
auch EXE- und DLL-Dateien zur Laufzeit überschrieben beziehungsweise in eine EclipsingSituation gebracht werden können. Durch die entsprechende Konfiguration der SWIPolicy
91
5. Ergebnisse und Evaluierung
kann jede unsignierte Anwendung mit den höchsten Capabilities installiert werden. Aber
auch auf die gleiche Art kann die SWIPolicy so konfiguriert werden, dass keine weiteren
Anwendungen, selbst „root“ signierte, installiert werden können. Trotz der Priorisierung der
SWIPolicy gegenüber den SWInstaller-Einstellungen kann der Benutzer die OCSP-Prüfung
ein- beziehungsweise ausschalten. Wahrscheinlich wurde dem Benutzer diese Möglichkeit nur
eingeräumt, weil die OCSP-Prüfung mit der gegenwärtigen Konfiguration der SWInstallerEinstellungen und der Zertifikate nicht funktioniert. Wird der Versuch unternommen Anwendungen mit unterschiedlichen UIDs zu installieren, besonders wenn die UID3 nicht mit der
SID übereinstimmt, so verweigert der SWInstaller die Installation, obwohl die Anwendungen
lauffähig sind. Obwohl die Installationspakete durch Prüfsummen und Signaturen geschützt
sind, konnten sie trotzdem in einigen Fällen modifiziert und anschließend erfolgreich installiert werden. Die Dokumentation der Capabilities für die jeweiligen APIs sind nicht immer
vollständig definiert, sodass teilweise nicht das spezifizierte Verhalten zu erwarten ist.
92
6. Diskussion
In diesem Kapitel wird zu Beginn die Bedeutung von Symbian Signed herausgestellt. Der
nächste Abschnitt diskutiert die Symbian Capabilities, während die beiden abschließenden
Abschnitte die SWIPolicy und den SWInstaller beleuchten.
6.1. Symbian Signed
Dieser Abschnitt beleuchtet die Bedeutung von Symbian Signed und die damit verbundene
Verantwortung. Anschließend werden die Testkriterien von Symbian Signed näher erläutert.
6.1.1. Bedeutung und Verantwortung
Mit der Einführung von Symbian OS Version 9 wurde ein Zertifizierungsprogramm benötigt, das eine formale Verbindung zwischen einer Anwendung und ihrer Herkunft herstellt.
Mit Symbian Signed konnte eine Infrastruktur geschaffen werden, durch die Anwendungen
identifiziert, verifiziert und signiert werden konnten. Mittlerweile können Anwendungen nicht
nur durch Symbian Signed, sondern auch durch andere Zertifizierungsstellen signiert werden. Jedoch stieg für Symbian Signed mit dieser Plattform auch die Verantwortung, diesen
Pflichten nachzugehen. Nach anfänglichen Schwierigkeiten stehen nun Entwicklern und ganzen Software-Entwicklungsunternehmen drei Möglichkeiten zur Verfügung, ihre Anwendung
zu signieren. Beispielsweise hat sich das Open-Signed-Zertifizierungsprogramm in den letzten
beiden Jahren stark verändert. Im letzten Jahr existierte dieses Verfahren noch nicht in der
jetzigen Form. Jeder registrierte Benutzer von Symbian Signed konnte ein Developer-Zertifikat
zu Entwicklungszwecken anfordern. In dieser Zeit konnte für jede IMEI eines Mobiltelefons
ein eigenes Developer-Zertifikat kostenfrei erworben werden. Aktuell wurden die DeveloperZertifikate in das Open-Signed-Zertifizierungsprogramm integriert. Das bedeutet, eine Anwendung kann nun nicht mehr zu Testzwecken wie es heißt „Offline“ ohne eine Publisher-ID
durch ein Developer-Zertifikat signiert werden. Nun muss immer der Weg über die Symbian
Signed Webseite genommen werden, damit eine Anwendung mit einem Developer-Zertifikat
signiert werden kann. Mit diesem Zustand hat sich aber auch nicht die Tatsache geändert,
dass durch ein solches Developer-Zertifikat nur die Developer Capabilities gewährt werden
können. Hier verfolgt Symbian Signed anscheinend das Ziel, mehr Entwickler an Symbian Signed durch eine Publisher-ID zu binden und die Entwickler zu authentifizieren. Jedoch macht
es wenig Sinn, einen Teil der gesamten Capabilities durch ein Developer-Zertifikat zu Testund Entwicklungszwecken zu beschränken. Wie soll es einem Entwickler möglich sein, Symbian Signed Capabilities für seine Anwendung auf einem Mobiltelefon testen zu können, wenn
es ein Zertifikat gibt, das genau zu diesem Zweck geschaffen wurde, es aber nicht erlaubt? In
dieser Situation kann der Entwickler nur im Emulator testen oder muss in der Entwicklung
93
6. Diskussion
auf andere Möglichkeiten zurückgreifen, die im folgenden Kapitel 7 beschrieben werden. Oder
Symbian ist der Meinung, dass Entwickler ohne eine Publisher-ID Symbian Signed Capabilities nicht benutzten sollen. Größere Software-Entwicklungsunternehmen haben sicherlich die
Möglichkeit, ihre Anwendungen zu Testzwecken mit einem internen „root“-Zertifikat signieren
zu können. Symbian sollte jedoch jedem Entwickler die Möglichkeit geben, eine Anwendung
zunächst ohne jegliche Behinderung entwickeln zu können. Aufgrund der Beschränkung eines
Developer-Zertifikates auf die IMEI eines Mobiltelefons kann eine Anwendung ohne vorherige Kenntnis der IMEI nicht weiter verbreitet werden. Symbian sieht hier jedoch durch das
Gewähren aller Capabilities für Entwickler ohne eine Publisher-ID die Gefahr, dass die Netzwerkintegrität des Mobilfunkanbieters beeinträchtigt wird. Doch selbst mit dem Zugang zum
Kernel und damit zur Hardware kann ohne das entsprechende SDK nicht ohne weiteres das
Netzwerk oder weitere Mobiltelefone beeinträchtigt werden. Symbian sollte deshalb für Entwickler, die keine Publisher-ID besitzen, auch Verständnis zeigen und ihnen zumindest die
Symbian Signed Capabilities durch ein Developer-Zertifikat gewähren. Die Manufacturer Capabilities könnten dann auch Entwicklern mit einer Publisher-ID verfügbar gemacht werden.
Denn mit einer Publisher-ID hat Symbian durch die Einführung von OCSP die Möglichkeit, das Anwendungszertifikat zu widerrufen und in Ausnahmefällen sogar den Entwickler
von zukünftigen Einreichungen abzuhalten. Diese Möglichkeit muss über OCSP jedoch erst
einmal in der SWIPolicy aktiviert werden und anschließend muss diese Option noch in den
SWInstaller-Einstellungen ebenfalls aktiviert werden. Aufgrund der ganzen Testfälle kann ich
aber sagen, dass das OCSP in seiner jetzigen Version noch nicht so funktioniert wie es soll.
Hier müsste Symbian in den Standard Einstellungen der SWIPolicy und auch in den SWInstaller Einstellungen nachbessern. Zumindest sollte eine Adresse angegeben werden, unter
der der SWInstaller die nötigen Informationen über das jeweilige Zertifikat finden kann. Für
diesen weiteren Schutz dem Anwender gegenüber müssten die zahlreichen Mobilfunkanbieter
die Möglichkeit bieten, diese OCSP-Status-Prüfungen unentgeltlich zur Verfügung zu stellen. Kein Benutzer wird freiwillig weitere Kosten auf sich nehmen, um nur den Status eines
Anwendungszertifikates zu überprüfen. Damit dieser Dienst in seinem vollen Funktionsumfang genutzt werden kann, muss Symbian mit den großen Mobilfunkanbietern zusammenarbeiten, damit keine zusätzlichen Kosten für den Benutzer entstehen. Neben den möglichen
Kosten, die auf die Benutzer zukommen könnten, sollte Symbian Signed gewährleisten, dass
die „Revocation-Datenbanken“ stets aktuell und verfügbar sind.
6.1.2. Testkriterien
Damit Anwendungen in den beiden Zertifizierungsprogrammen Express Signed und Certified
Signed signiert werden können, müssen sie zunächst eine Reihe von Testkriterien bestehen. In
den Grundlagen (Abschnitt 2.2.5) wurden die Testkriterien kurz zusammengefasst und sind
in Abbildung 6.2 etwas ausführlicher dargestellt. Eine Anwendung, die durch das Certified
Signed Zertifizierungsprogramm signiert wurde, kann das „for Symbian OS“-Logo (Abbildung
6.1) tragen. Das Logo soll dem Benutzer signalisieren, dass es sich bei der Anwendung um eine
Abbildung 6.1.: Symbian Logo für Symbian Signed Anwendungen
94
6.1. Symbian Signed
vertrauenswürdige Symbian Signed Anwendung handelt. Es soll ein Qualitätsmerkmal für den
Benutzer darstellen und für den Entwickler gleichzeitig ein lohnenswertes Ziel sein, die Anwendungen durch Certified Signed signieren lassen zu können. Eine Symbian Signed Anwendung
hat nicht nur den Vorteil, dass keine Sicherheitswarnungen bei der Installation auftreten, sondern auch eine gute Reputation, eine getestete und vertrauenswürdige Software zu besitzen.
Benutzer sollten sensibilisiert werden, nicht jede beliebige Software auf ihren Mobiltelefonen
zu installieren. Den Benutzern steht eine Vielzahl an Anwendungen zur Verfügung, die jedoch in den meisten Fällen nicht oder selbst signiert sind. Bei dieser Art von nicht signierter
Software besteht die Gefahr, dass die Benutzer gegenüber Sicherheitswarnungen „abstumpfen“ und ohne groß nachzudenken jegliche Software auf ihren Mobiltelefonen installieren. Das
ermöglicht jedoch Schadsoftware eine unkomplizierte Installation. Benutzern sollte vermittelt
werden, dass sie auf vertrauenswürdige Software von Symbian Signed achten und nicht signierter Software misstrauisch begegnen sollen. Jedoch können sich einige Benutzer auch fragen,
ob die Testkriterien von Symbian Signed auch ein ausreichender Identikator für den Schutz
vor bösartiger Software sind. Einige Unternehmen haben diese Testkriterien auch für ihren ei-
Abbildung 6.2.: Symbian Signed Testkriterien [4]
95
6. Diskussion
genen Entwicklungsprozess übernommen und teilweise weitere Testkriterien hinzugefügt. Die
Testkriterien umfassen Tests, die das Installations- und Deinstallationsverhalten untersuchen,
aber auch die Zuverlässigkeit und den Umgang mit wenig Speicher. Zusätzlich gibt es zu jeder
Capability weitere Testfälle, die der Abbildung 6.2 zu entnehmen sind. Die Anwendung, die
zum Testen eingereicht wird, wird nur zur Laufzeit gemäß den Testkriterien untersucht und
ob die Anwendung sich an die eigene Spezifikation hält. Eine detaillierte Quellcode-Analyse
ist zum einen nicht möglich, da der Quellcode nicht zum Testen eingereicht wird und zum anderen würde kein Entwickler oder ein ganzes Software-Entwicklungsunternehmen seine nicht
„Open Source“-Anwendung den Quellcode freiwillig herausgeben. Eine andere Alternative, um
das Programmverhalten der Anwendung besser zu untersuchen, wäre die Anwendung in einer
kontrollierten Umgebung, wie sie zum Beispiel eine „Sandbox“ zur Verfügung stellt, auszuführen. Auf diese Weise könnten mögliche versteckte Funktionsaufrufe ermittelt werden, die
zur Laufzeit auf einem Mobiltelefon nicht sichtbar wären. Diese Vorgehensweise würde zwar
die Anforderungen an die Tests erhöhen, aber der kritische Benutzer könnte auf diese Weise
besänftigt und die Sicherheitsanforderungen könnten dadurch erhöht werden.
6.2. Capabilities
Symbian stellt insgesamt 20 Capabilities zur Verfügung, die grob in drei Bereiche geteilt
sind. Die einzelnen Capabilities sind in Kapitel 2.2.3 genau beschrieben. Dieser Abschnitt
diskutiert die Verantwortung für das Gewähren dieser Capabilities und die Verteilung der
einzelnen Capabilities.
6.2.1. Verantwortung für das Gewähren von Capabilities
In Symbian OS stehen Anwendungsentwicklern viele Möglichkeiten zur Verfügung, wie sie ihre
Anwendung auf ein Mobiltelefon bringen können. Dabei können Anwendungen kommerziell
vertrieben oder frei zur Verfügung gestellt werden. Anwendungen, die für den Software-Markt
geschrieben werden, sind der Hauptverwendungszweck von Capabilities. Nur durch die Capabilities können die geschützten APIs verwendet werden. Aber neben dem Software-Markt
müssen auch für die Anwendungen, die bereits auf dem Mobiltelefon nach der Auslieferung
installiert sind, die Capabilities gewährt werden. In Symbian OS können Anwendungen in
speziellen Laufzeitumgebungen ausgeführt werden, die jedoch besondere Anforderungen stellen.
Dritthersteller Anwendungen
Die meisten kommerziellen Anwendungen auf dem Software-Markt sind Symbian Signed oder
Express Signed signiert. Wie schon im vorherigen Abschnitt erwähnt, kann es durchaus von
Vorteil sein, wenn eine Anwendung mit einem vertrauenswürdigen Zertifikat signiert ist. Mit
jeder gewährten Capability steigt die Verantwortung der Zertifizierungsstelle. Jede weitere
gewährte Capability bedeutet einen weiteren Zugriff auf geschützte APIs und somit größeres
Risiko hinsichtlich Missbrauch dieser Capabilities. Symbian hat dafür verschiedene Zertifizierungsprogramme mit entsprechenden Testkriterien für jedes einzelne Programm entwickelt,
96
6.2. Capabilities
die auch schon in Abschnitt 6.1 diskutiert wurden. Auf diese Weise besteht zwar kein 100prozentiger Schutz vor Missbrauch der Capabilities, aber wenigstens kann bei den meisten
kommerziellen Anwendung die Herkunft der jeweiligen Anwendungen nachvollzogen werden.
Built-in Code
Im Gegensatz zu Dritthersteller-Anwendungen werden die Capabilities von bereits installierten Anwendungen, die in der Firmware des Mobiltelefons integriert sind, durch die Mobiltelefonhersteller gewährt. Bei diesen Anwendungen ist jedoch entscheidend, welchem Teil der
Trusted Computing Platform die Anwendung zugeteilt werden kann. Interne Testzyklen sorgen aber dafür, dass die Anwendungen in den entsprechenden Teilen der Trusted Computing
Platform genau das tun, wofür sie entwickelt wurden. Der Mobiltelefonhersteller trägt hier
die meiste Verantwortung gegenüber den Benutzern.
Spezielle Laufzeitumgebungen
Spezielle Laufzeitumgebungen wie Java, Visual Basic und Python stellen eine besondere Herausforderung an die PSA dar. Damit diesen Laufzeitumgebungen eine große Menge an Funktionalität zur Verfügung gestellt werden kann, müssen die bereitgestellten Funktion der jeweiligen Laufzeitumgebung auf die geschützten APIs des Betriebssystems zugreifen können.
Der Zugriff auf die jeweiligen APIs kann nur gewährt werden, wenn die Laufzeitumgebung die
entsprechenden Capabilities besitzt. Um jedoch zu verhindern, dass das Sicherheitsmodell der
PSA nicht kompromittiert wird, muss die Laufzeitumgebung ein ergänzendes Sicherheitsmodell zum nativen Betriebssystem bereitstellen. Den Anwendungen in der Laufzeitumgebung
darf es nicht gelingen, das Sicherheitsmodell der PSA zu umgeben. Deshalb darf die Laufzeitumgebung nicht mehr Capabilities besitzen als sie selbst benötigt. Jede Anwendung innerhalb der Laufzeitumgebung kann mit den gleichen Capabilities ausgeführt werden, die die
Laufzeitumgebung selbst besitzt. Die Zertifizierungsstellen haben damit eine große Verantwortung, Laufzeitumgebungen sensible Capabilities zu gewähren. Wird zum Beispiel Python
für Symbian OS [27] betrachtet, so kann festgestellt werden, dass der Laufzeitumgebung alle
Capabilities außer AllFiles, DRM und Tcb gewährt wurden. Wie das Beispiel zeigt, werden
die Manufacturer Capabilities nicht gewährt. Auf diese Weise kann sichergestellt werden, dass
das Dateisystem nicht modifiziert, die Integrität des Mobiltelefons nicht beeinträchtigt und
auf die geschützten Verzeichnisse nicht zugegriffen werden kann.
6.2.2. Verteilung der Capabilities
Symbian überlässt die Verantwortung für das Gewähren von User Capabilities dem Benutzer.
Symbian ist der festen Überzeugung, dass der Benutzer die Verwendung der User Capabilities
versteht und somit auch diese gewähren kann. Vielen Benutzern ist jedoch nicht klar, was mit
diesen Capabilities alles erreicht werden kann. Die Capabilities können zwar die Integrität
des Mobiltelefons nicht beeinträchtigen, aber sie können dafür genutzt werden, dem Benutzer
Kosten zu verursachen, seine persönlichen Benutzerdaten zu verändern und diese beispielsweise per Bluetooth oder SMS zu versenden. Die Benutzer sollten daher Software nur von
vertrauenswürdigen Quellen beziehen.
97
6. Diskussion
Symbian beschreibt die Anzahl der 20 Capabilities als Gleichgewicht zwischen Komplexität
und Kontrolle der Capabilities. Mehr Capabilities hätten zwar eine feinere Kontrolle der einzelnen APIs zur Folge, aber gleichzeitig würde sich die Komplexität des Sicherheitssystems
erhöhen. Trotz der definierten 20 Capabilities werden in Symbian Version 9.1 nur 18 dieser
Capabilities genutzt. Die Location Capability kann beispielsweise nicht alleine benutzt werden, sondern nur im Verbund mit der ReadDeviceData und ReadUserData Capability. In den
beiden anderen Symbian Versionen 9.2 und 9.3 hat diese Capability keine Funktion mehr,
sodass in diesen Versionen nur 17 Capabilities verwendet werden, wie aus aus den Dokumenten „Capabilities nach Funktionen gelistet“ [18, 19, 28] entnommen werden kann. Sind die 20
Capabilities von Symbian nun doch zu fein gewählt oder werden sie einfach nur im öffentlichen
SDK nicht benutzt. Die Definition der benötigten Capabilities ist nur dann richtig gewählt,
wenn auch wirklich alle Capabilities gebraucht werden und den entsprechenden Funktionen
zugeteilt sind. Im öffentlichen SDK kann das nicht behauptet werden.
6.3. SWIPolicy
Die SWIPolicy stellt die Grundlage für den SWInstaller dar und ist damit die entscheidendste
Konfigurationsmöglichkeit der PSA. Anhand der Konfiguration der SWIPolicy kann das Verhalten es SWInstallers beeinflusst werden. Die SWInstaller-Tests haben gezeigt, dass abhängig
der Konfiguration der SWIPolicy jede Anwendung installiert werden kann. Sogar nicht und
selbst signierte Anwendungen konnten ohne Einschränkungen mit Tcb und AllFiles Capabilities, wenn die Sicherheitswarnungen außer Acht gelassen werden, installiert werden. Vielen
Mobilfunkanbietern ist wahrscheinlich die Bedeutung der SWIPolicy nicht vollkommen bewusst. Letztendlich wird die „Firmware“ durch den Mobiltelefonhersteller bereitgestellt, jedoch
können die Mobilfunkanbieter auf die Konfiguration der „Firmware“ entsprechend den eigenen
Bedürfnissen und Vorgaben einwirken. Dadurch entstehen so genannte „Software-Brandings“,
die in den meisten Fällen auf den Mobilfunkanbieter angepasst sind. Im Rahmen der Tests
konnte ich die SWIPolicies der Testgeräte (Tabelle 5.1) und weitere private Geräte miteinander vergleichen. Zusätzlich zu den Testgeräten handelt es sich um ein Nokia N95 8GB sowie
ein weiteres Nokia-Modell, ein 6220 Classic mit Symbian Version 9.3. Vom Samsung SGH-i550
konnte ebenfalls die SWIPolicy verglichen werden. Dabei ist aufgefallen, dass die SWIPolicies
sich voneinander nur wenig unterscheiden. In den Testgeräten ab Symbian Version 9.2 sind
zwei weitere Einstellungen in der SWIPolicy hinzugekommen, die jedoch auf allen Mobiltelefonen, die dieses Merkmal ausweisen, identisch sind. Auf dem Symbian Version 9.3 Mobiltelefon
ist nur aufgefallen, dass eine weitere User Capability in der UserCapabilities-Liste der SWIPolicy hinzugekommen ist, die auf den anderen Testgeräten nicht vorhanden ist. In diesem
Vergleich sind keine Unterschiede zwischen Mobiltelefonen mit einem „Software-Branding“
und freien Mobiltelefonen aufgefallen. Auch beim Samsung-Modell konnte kein Unterschied
gefunden werden. Daher kann aus diesem Vergleich gefolgert werden, dass die Mobilfunkanbieter ihre Möglichkeiten nicht ausschöpfen wollen, die SWIPolicy weiter zu konfigurieren
oder es einfach nicht können. Werden nun die SWIPolicies der Testgeräte mit den beiden Beispielen, die in der Dokumentation der SWIPolicy aufgeführt sind, verglichen, so können nur
drei Unterschiede festgestellt werden. In den Beispielen ist die User Capability Location, die
auch im Nokia 6220 definiert ist, ebenfalls enthalten. Ein weiterer Konfigurationsparameter
RunWaitTimeoutSeconds ist gegenüber den Mobiltelefonen auf einen anderen Wert gesetzt.
Der zusätzliche Konfigurationsparameter ApplicationShutdownTimeoutSeconds ist in der
98
6.3. SWIPolicy
SWIPolicy auf den Testgeräten nicht enthalten, jedoch standardmäßig mit dem gleichen Wert
definiert. Durch die wenigen Unterschiede zwischen der Beispiel-SWIPolicy aus der Dokumentation und den SWIPolicies auf den Testgeräten könnte der Verdacht aufkommen, dass bei
der Konfiguration der Mobiltelefone durch die Hersteller die Beispiel-SWIPolicy zum Einsatz
gekommen ist.
Alle untersuchten SWIPolicies, erlauben keine unsignierten Anwendungen zu installieren.
Auch wenn der Benutzer in den SWInstaller-Einstellungen alle Software-Installationen zulässt,
können dennoch keine unsignierten Anwendungen installiert werden, wenn es die SWIPolicy
nicht zulässt. Warum werden auf der anderen Seite User Capabilities gewährt, wenn damit
die Installationspakete mindestens mit einem selbst erstellten Zertifikat signiert sein müssen,
um mit den User Capabilities installiert werden zu können. Es kann nicht von jedem Benutzer
erwartet werden, nicht signierte Software selbst zu signieren. Jedoch könnten die Entwickler
angehalten werden, ihre Software selbst zu signieren. Für den SWInstaller macht es daher
keinen Unterschied, ob ein Installationspaket selbst oder nicht signiert ist. Der SWInstaller
kann in beiden Fällen keine vertrauenswürdige Basis finden, von der das selbst signierte Installationspaket abgeleitet werden könnte. Dem Benutzer sollte die Wahl gelassen werden, bei
Anwendungen, die nur User Capabilities benutzen, selbst entscheiden zu können, ob er diese
Anwendung installieren will. Letztendlich ist es dieser Gedanke, der hinter den User Capabilities steht, dass Benutzer über Capabilities entscheiden können, die sie auch verstehen. In der
Symbian Version 9.1 und 9.2 wurde den Benutzern beispielsweise eine User Capability vorenthalten. Diese Capability ist zumindest in der SWIPolicy des Symbian Version 9.3 Mobiltelefons
wieder definiert. Wenn die PSA schon User Capabilities definiert, sollten die Benutzer auch alle
User Capabilities benutzen können. Mit dem MandatePolicies Parameter müssen die signierten Anwendungen bei der Installation die definierte Oid in der SWIPolicy besitzen, ansonsten
kann die Anwendung nicht installiert werden. Ist diese Option aktiviert, muss das Zertifikat
mit dem die Anwendung signiert wurde, diese Oid besitzen. In den jeweiligen SWIPolicies sind
zwar Oids definiert, jedoch werden sie nicht benutzt, wenn der MandatePolicies Parameter
nicht gesetzt ist. Die Oids sind in diesem Fall nutzlos und bräuchten nicht definiert werden. Vor
allem wie diese Oids in der SWIPolicy definiert sind, mit Zahlenfolgen wie 1.2.3.4.5.6 oder
2.3.4.5.6.7, lässt darauf schließen, dass die Oids aus dem SWIPolicy-Beispiel übernommen
wurden, ohne die Bedeutung der Oids zu kennen. Ab der Symbian Version 9.2 wurde die SWIPolicy durch den Parameter AlternativeCodeSigningOID erweitert. Jedoch wie schon bei den
Oids, wird auch diese alternative Oid nicht genutzt, da MandateCodeSigningExtension nicht
aktiviert ist. Aus diesem Grund ist dieser Eintrag in der SWIPolicy unnötig.
Die SWIPolicy sollte so konfiguriert werden, dass der Benutzer die Möglichkeit besitzt, bei allen relevanten Entscheidungen einbezogen zu werden. Auf der anderen Seite können jedoch einige Benutzer überfordert sein, ob beispielsweise nicht registrierte Dateien bei der Installation
überschrieben werden dürfen. Dieser Punkt ist jedoch besonders dann von Bedeutung, wenn
vorhandene nicht registrierte Dateien die Installation von neuen Dateien behindern. Daher
sollten sowohl AllowOrphanOverwrite als auch AllowProtectedOrphanOverwrite mit true
konfiguriert werden. Dabei können nur Dateien, die nicht zu einem installierten Paket gehören
oder nicht im „ROM stub controller“ registriert sind, nach Zustimmung des Benutzers während
der Installation überschrieben werden. Ein weiterer Parameter ist DeletePreinstalledFiles
OnUninstall. Dieser Wert ist in allen SWIPolicies auf true gesetzt und bewirkt, dass alle Dateien eines PA-Installationstyps bei der Deinstallation auf einer Speicherkarte gelöscht werden.
Hier besteht die Gefahr, dass falls ein Benutzer seine Speicherkarte einem anderen Benutzer
99
6. Diskussion
überlässt, um beispielsweise Dateien auszutauschen, der andere Benutzer die Dateien der
PA-Anwendung versehentlich löschen kann. Daher sollte dieser Parameter auf false gesetzt
werden.
Werden nun die einzelnen Punkte, die ich im obigen Text angemerkt habe, in einer SWIPolicy
zusammengefasst, ergibt sich die im Listing 6.1 aufgeführte SWIPolicy.
Quelltext 6.1: Konfiguration der SWIPolicy
AllowUnsigned = true
MandatePolicies = false
Mandate C od e Si g n in g Ex t e ns i on = false
DRMEnabled = true
DRMIntent = 3
OcspMandatory = false
OcspEnabled = true
AllowGr a nt Us er C ap ab il i ti es = true
AllowOrphanedOverwrite = true
AllowPr o t e c te d O r p h a n O v e r w r i t e = true
UserCapabilities = NetworkServices LocalServices ReadUserData
WriteUserData UserEnvironment Location
AllowPackagePropagate = true
SISComp a t i b l e I f N o T a r g e t D e v i c e s = false
RunWaitTimeoutSeconds = 600
AllowRu n On In st a ll Un in s ta ll = false
De le te P r e i n s t a l l e d F i l e s O n U n i n s t a l l = false
RemoveO n ly W it h L as t De p e nd e nt = true
PhoneTsyName = phonetsy
Der Mobilfunkanbieter sollte jedoch die Möglichkeit nutzen, die SWIPolicy selbst zu konfigurieren. Bei der Konfiguration sollte aber beachtet werden, dass Benutzer mit wenig Vorwissen
auch zusätzliche Software installieren können, ohne sich dabei Gedanken über mögliche Signierungen oder Zertifikate machen zu müssen.
6.4. SWInstaller
Der SWInstaller ist der einzige Zugangspunkt, der es in Symbian OS Version 9 erlaubt, zusätzliche Software zu installieren. Er ist dafür verantwortlich, dass zunächst die Signierungen
der Anwendungen korrekt verifiziert werden. Anschließend muss der SWInstaller noch die Dateien in die richtigen Verzeichnisse kopieren und diese registrieren. Nur an diesem Punkt wird
entschieden, ob eine Anwendung erfolgreich installiert werden kann oder ob die Installation
der Anwendung verweigert werden muss. Der SWInstaller ist ein Teil der TCB und unterscheidet sich in den verschiedenen Symbian Varianten wie Series 60 und UIQ nicht voneinander.
Selbst wenn das Mobiltelefon mit einem PC verbunden ist und die Installation einer Anwendung vom PC initiiert wird, tritt der SWInstaller in Aktion. Die Entscheidungsgrundlage für
den SWInstaller bildet die SWIPolicy, die auch schon in 6.3 diskutiert wurde. Gemäß diesen
Richtlinien kann der SWInstaller weitere Maßnahmen treffen, wie zum Beispiel das OCSP
initialisieren.
100
6.4. SWInstaller
Benutzer können den SWInstaller in einigen Punkten auch selbst konfigurieren. In Abschnitt
3.2.2 sind diese Punkte aufgeführt. Der Benutzer kann in diesen Einstellungen nur das erlauben beziehungsweise verweigern, was auch in der SWIPolicy erlaubt ist. In der StandardKonfiguration der SWIPolicy kann der Benutzer im Endeffekt nur das OCSP aktivieren. An
dieser Stelle kann erneut die begrenzte Entscheidungsfreiheit des Benutzers diskutiert werden. Symbian sollte es deshalb den Benutzern ermöglichen, selbst zu entscheiden, ob sie nicht
signierte Anwendungen installieren wollen oder nicht. Diese Entscheidung sollte jedoch unabhängig von der SWIPolicy getroffen werden können. Wie schon in Gliederungspunkt 6.3
angesprochen, ist es für den SWInstaller unerheblich, ob eine Anwendung nicht signiert oder
selbst signiert ist. Ausschlaggebend sollten nur die verwendeten Capabilities und weitere in
der SWIPolicy definierte Oids sein.
101
7. Privilegien von Software erhöhen
Dieses Kapitel beschreibt zunächst die verschiedenen Möglichkeiten, Privilegien von Symbian OS Anwendungen zu erhöhen. Anschließend wird das Gefahrenpotential, das von diesen
Möglichkeiten ausgeht, beleuchtet und die Maßnahmen gegen diese Möglichkeiten der Mobiltelefonhersteller erläutert. Der abschließende Abschnitt beschreibt die Möglichkeit, die „Mobile
Sandbox“ auf Symbian Version 9 zu übertragen.
7.1. Beschreibung
Während ich an meiner Diplomarbeit gearbeitet habe, sind einige Methoden veröffentlicht
worden, wie Privilegien von Symbian Software erhöht werden können. Dieser Abschnitt beschreibt die Methoden, die benutzt werden können, die PSA zu umgehen und Zugang zu allen
geschützten APIs zu bekommen. Die meisten hier vorgestellten Methoden konnte ich selbst
ausprobieren und teilweise in diese Arbeit einfließen lassen.
7.1.1. SWIPolicy modifizieren
Die erste Methode, die 2007 aufgetaucht ist, beschreibt die Veränderung der SWIPolicy. Da
in dieser Zeit die SWIPolicy auf dem Mobiltelefon nicht verändert werden konnte, musste dies
auf eine andere Weise bewerkstelligt werden. Nokia bietet beispielsweise ein Programm an, mit
dessen Hilfe Mobiltelefone auf die neuste „Firmware“ aktualisiert werden können. Bei diesem
Vorgang muss zunächst das Abbild der „Firmware“ lokal auf einem PC gespeichert werden.
Dabei ist in [29] bekannt geworden, dass die SWIPolicy unverschlüsselt in diesem Abbild zu
finden ist. Wird nun die SWIPolicy in diesem Abbild verändert, kann anschließend das Abbild
der „Firmware“ auf dem Mobiltelefon mit dem „Nokia Software Updater“ installiert werden.
Bei der Veränderung der SWIPolicy darf aber die Größe der SWIPolicy in dem Abbild der
„Firmware“ nicht verändert werden. Ansonsten kann es passieren, dass die Prüfsummen nicht
übereinstimmen und dadurch die Installation der „Firmware“ abgebrochen wird. Bricht jedoch
die Installation der „Firmware“ ab, kann das Mobiltelefon dadurch irreperabel beschädigt
werden.
In einem praktischen Versuch konnte ich diese Variante auch ohne Probleme durchführen.
Dabei konnte ich die SWIPolicy so verändern, dass nicht signierte Anwendungen installiert werden konnten. In einem weiteren Schritt habe ich zusätzlich auf dem Nokia E61 die
UserCapabilities der SWIPolicy durch die AllFiles Capability erweitert. Auf diese Wiese
konnten nicht signierte und mit der AllFiles Capability versehene Anwendungen installiert werden. In [30] wird beispielsweise beschrieben, wie ein Symbian-Dateimanager mit der
AllFiles Capability lesend auf die geschützten Verzeichnisse zugreifen kann.
103
7. Privilegien von Software erhöhen
7.1.2. Capabilities zur Laufzeit ausschalten
Fast ein halbes Jahr später schien die oben beschriebene Methode immer noch die einzige zu
sein, die es erlaubte, die Capabilities der SWIPolicy zu verändern. In dieser Zeit ist es jedoch
gelungen, die Capabilities zur Laufzeit auszuschalten [31, 32]. Das Positive an dieser Methode
ist das geringere Risiko im Vergleich zur Veränderung der SWIPolicy. Nach Ausführung dieser
Methode zur Laufzeit kann das Mobiltelefon neu gestartet werden und die ursprüngliche
Konfiguration des Mobiltelefons ist wieder hergestellt.
Im Symbian Emulator können die Capabilities deaktiviert werden, sodass bei einer CapabilityVerletzung nur eine Warnung protokolliert wird. Die Sicherheitseinstellungen im Emulator
werden in der epoc.ini konfiguriert und mittels PlatSecEnforcement OFF können die Capabilities deaktiviert werden. Im Speicher des Mobiltelefons existiert diese Einstellung auch, ist
aber direkt nicht veränderbar. Dennoch ist es aber mit einem „On-Device Debugger“ gelungen, diese Speicherstelle auf einem Mobiltelefon zu finden und auch zu verändern. Der „Metro
TRK Debugger“, der im Symbian S60 SDK mitgeliefert wird, erlaubt durch seine starke Signierung auf den Speicherbereich anderer Prozesse zuzugreifen. Damit jeder Benutzer diese
Modifikation durchführen kann, wurde ein kleines Python-Skript [33] entwickelt, das die Rolle
des „Debuggers“ simuliert und die nötigen Modifikationen im Speicher durchführt. Für diese
Methode ist ein PC nötig, der das Python-Skript ausführt und mit einem Mobiltelefon verbunden ist. Auf dem Mobiltelefon sollte das „Metro TRK“ ausgeführt werden. Diese Methode
konnte auf allen vier Testgeräten erfolgreich durchgeführt werden. Wenige Wochen später,
tauchten zwei neue Anwendungen auf, die die Verbindung zum PC überflüssig machen sollten. Mit „CapsON“ und „CapsOFF“ sollten die Capabilities zur Laufzeit ein- beziehungsweise
ausgeschaltet werden. Zuvor musste aber noch eine Datei, die für die beiden Anwendungen
unerlässlich ist, in das geschützte Verzeichnis \sys\bin kopiert werden. Für die beiden Anwendungen musste aber immer noch im Hintergrund die „Metro TRK“-Anwendung ausgeführt
werden. Die Funktion der beiden Anwendungen kann ich aber nicht bestätigen, da keine dieser
Anwendungen auf den Testgeräten funktioniert hat.
7.1.3. Root-Zertifikat
Einen Monat nach bekannt werden des Capability-Hacks, tauchte ein Symbian „root“-Zertifikat
auf [34]. Damit Symbian Anwendungen mit diesem Zertifikat signiert und installiert werden können, muss für den SWInstaller eine Verifikationsgrundlage geschaffen werden, mit
der der SWInstaller das „root“-Zertifikat als korrekt verifiziert. Dafür muss das Verzeichnis
\swicertstore\dat in C:\resource erstellt werden. Für den schreibenden Zugriff auf das
\resource Verzeichnis müssen die Capabilities nach der zweiten Methode ausgeschaltet, das
Verzeichnis erstellt und die Verifikationsgrundlage in dieses Verzeichnis kopiert werden. Damit dieses Verzeichnis nicht bei jedem Neustart des Mobiltelefons gelöscht wird, muss es als
schreibgeschützt markiert werden. Anschließend können alle Anwendungen mit dem „root“Zertifikat signiert und auf dem Mobiltelefon installiert werden.
104
7.2. Gefahrenpotential
7.1.4. ROM-Patcher
Der ROM-Patcher [35] ist eine Symbian Anwendung, mit der es möglich ist, Dateien im ROM
zu verändern. Dabei kann der ROM-Patcher auf zwei verschiedene Arten installiert werden.
In der ersten Version dieser Anwendung müssen zunächst die Capabilities, wie in Abschnitt
7.1.2 beschrieben, ausgeschaltet werden. Anschließend können die Dateien des ROM-Patchers
auf das Mobiltelefon kopiert werden. Den Installationsvorgang übernimmt dabei eine selbst
geschriebene Windows-Anwendung, die die Dateien des ROM-Patchers an die richtigen Stellen kopiert. Auf diese Weise wird der SWInstaller übergangen. Die nachfolgende Version des
ROM-Patchers konnte hingegen wieder mit dem SWInstaller installiert werden. Da jedoch die
Anwendung alle Symbian Capabilities benötigt, muss sie zunächst mit dem „root“-Zertifikat
signiert werden. Damit der ROM-Patcher nun verwendet werden kann, muss zuerst ein sogenannter „Patch“ erstellt werden. Ein Patch ist in diesem Zusammenhang eine Datei, die
der ROM-Patcher lädt und die darin enthaltenen Anweisungen ausführt. Ein möglicher Patch
könnte beispielsweise die Veränderung der SWIPolicy sein. Dazu wird das „SnR“-Kommando
des ROM-Patchers verwendet, in der securitymanager.dll den Pfad der SWIPolicy durch
einen anderen zu ersetzen. Der ursprüngliche Pfad z:\system\data\swipolicy.ini wird
einfach durch e:\system\data\swipolicy.ini ersetzt, sodass auf der Speicherkarte eine beliebige SWIPolicy hinterlegt werden kann. Im Patch muss nur darauf geachtet werden, dass
die hexadezimale Schreibweise für die Pfadangaben verwendet wird.
7.1.5. HelloCarbide
„HelloCarbide“ [36] ist die aktuellste Methode1 und stellt die Weiterentwicklung der Idee
hinter der „CapsON“- beziehungsweise „CapsOFF“-Anwendung dar. Mit Hilfe dieser Anwendung können ohne das „Metro TRK“ die Capabilities zur Laufzeit ausgeschaltet werden. Der
große Vorteil dieser Anwendung ist, dass sie nur User Capabilities verwendet und dadurch
ohne Schwierigkeiten installiert werden kann. Ein Problem der Anwendung ist aber, dass sich
nach Ausführung der Anwendung keine andere Anwendung mehr starten lässt. Wird aber
zunächst ein Datei-Manager gestartet und anschließend „HelloCarbide“ ausgeführt, kann der
Datei-Manager auf alle geschützten Verzeichnisse lesend und schreibend zugreifen.
7.2. Gefahrenpotential
Bei all diesen vorgestellten Methoden zur Erhöhung der Privilegien von Symbian Software
muss sich die Frage nach dem Gefahrenpotential dieser Methoden gestellt werden. Die Veränderung der SWIPolicy während der Aktualisierung der „Firmware“ stellt dabei das geringste
Gefahrenpotential dar. Da diese Veränderung nur lokal auf einem Mobiltelefon durchgeführt
werden kann und zudem sehr risikobehaftet ist, werden sie nur die wenigsten Benutzer durchführen. Des Weiteren betreffen die Änderungen nur den SWInstaller und können von Benutzer
zu Benutzer unterschiedliche SWIPolicies hervorbringen. Dennoch können mit dieser Methode
Anwendungen mit Manufacturer Capabilities installiert werden.
1
Stand August 2008
105
7. Privilegien von Software erhöhen
Die Methode Capabilities zur Laufzeit auszuschalten, bietet ein weitaus größeres Gefahrenpotential, denn auf diese Weise können Anwendungen ohne die entsprechenden Capabilities
installiert werden. Es gibt dadurch keine Kontrollmechanismen, die den Zugriff auf die geschützten APIs überprüfen und somit können Anwendungen auf alle geschützten APIs zu
greifen. Von dieser Methode sind zunächst nur Nokia-Mobiltelefone betroffen, da sich das
„Metro TRK“ aufgrund seiner Signierung nur auf Nokia-Mobiltelefonen installieren lässt.
Von der „root“-Zertifikat-Methode geht nur die Gefahr aus, dass Benutzer Anwendungen mit
allen Capabilities installieren können. Auf diese Weise können Symbian Signed oder die Mobiltelefonhersteller nicht mehr kontrollieren, welche Anwendung zu welchem Zweck Manufacturer
Capabilities benutzt. Somit ist nicht nur die Integrität der Mobiltelefone gefährdet, die das
„root“-Zertifikat benutzen, sondern auch die Netzwerkintegrität der Mobilfunkanbieter kann
durch die unsachgemäße Verwendung der Manufacturer Capabilities beeinträchtigt werden.
Da mit dem ROM-Patcher die SWIPolicy verändert werden kann, können die gleichen Gefahren, wie sie durch das „root“-Zertifikat entstehen können, angenommen werden. Aber auch
durch die Veränderung weiterer ROM-Dateien kann die Integrität des Mobiltelefons beeinträchtigt werden.
Das Gefahrenpotential der „HelloCarbide“-Anwendung kann in der aktuellen Version als gering
bezeichnet werden. Zwar benötigt die Anwendung nur User Capabilities und muss somit auch
nicht Symbian Signed sein, aber nachdem die Capabilities deaktiviert werden, können keine
weiteren Anwendungen mehr gestartet werden. Kann die Anwendung jedoch in nächster Zukunft verbessert werden, so ergeben sich aus den Kombinationen mit weiteren Anwendungen
sehr gefährliche Möglichkeiten.
Bei den Methoden, die nur lokal auf einem Mobiltelefon ausgeführt werden können, besteht
keine direkte Gefahr für andere Mobiltelefone. Zur Verbreitung von Schadsoftware mit Hilfe der beschriebenen Methoden muss entweder das Vorwissen über das andere Mobiltelefon
gegeben sein, beispielsweise welche Capabilities als UserCapabilities in der SWIPolicy definiert sind oder ob die Capabilities ausgeschaltet sind. Doch selbst wenn diese Faktoren in
Erfahrung gebracht werden können, muss der Benutzer immer noch dazu gebracht werden die
Schadsoftware zu installieren. Dadurch stellen die beschriebenen Methoden zur Verbreitung
von Schadsoftware eher eine theoretische Gefahr dar.
7.3. Maßnahmen gegen diese Methoden
Die Veränderung der SWIPolicy kann nur dadurch verhindert werden, dass die SWIPolicy bei
der Aktualisierung der „Firmware“ nicht mehr im Klartext gespeichert wird. Eine Verschlüsselung des „Firmware“-Abbildes wäre vollkommen ausreichend. Beispielsweise praktiziert Nokia
ab den Symbian Version 9.2 Mobiltelefonen bei jedem Aktualisierungsversuch der „Firmware“,
das Abbild jedes Mal neu herunterzuladen. Da die „Firmware“ immer noch nicht verschlüsselt
ist, kann dennoch die SWIPolicy in diesem Abbild verändert werden.
Bei den aktuellen Symbian Version 9.2 Mobiltelefonen versucht Nokia durch neue „Firmwares“ die Installation des „Metro TRK“ zu unterbinden. Die aktuelle „Firmware“ des Nokia E90
bestätigt diese Verhalten [37]. Die neuen Symbian Version 9.3 Mobiltelefone unterbinden die
106
7.4. Sandbox auf Symbian OS Version 9
Installation des „Metro TRK“ schon von Grund auf. Nokia versucht aber auch durch aktualisierte „Connectivity-Treiber“ die Verbindung zwischen „Metro TRK“ und dem Python-Skript
zu verhindern. Mit den aktuellen „Connectivity-Treibern“, die für die Verbindung zwischen
Mobiltelefon und PC zuständig sind, lassen sich beispielsweise die Capabilities nicht mehr
über das Python-Skript ausschalten.
Die Installation des ROM-Patchers oder des „root“-Zertifikates kann nur verhindert werden,
wenn die Capabilities nicht mehr ausgeschaltet werden können. Dadurch könnte nicht mehr
ohne eine gültige Signierung auf die geschützten Verzeichnisse zugegriffen werden. Die Folge
hiervon wäre, dass das „root“-Zertifikat nicht mehr installiert werden könnte und somit könnte
auch der ROM-Patcher ohne eine gültige Signierung nicht mehr installiert werden.
7.4. Sandbox auf Symbian OS Version 9
Dieser Anschnitt beschäftigt sich mit der Frage, ob die „MobileSandbox“ [5] auch auf Symbian OS Version 9 realisierbar wäre. Um diese Frage zu klären, wird zunächst das Symbian
Dateiformat vorgestellt und anschließend der Symbian „Loader Server“.
7.4.1. Symbian Dateiformat
Das Symbian „E32 Image“-Dateiformt besteht aus bis zu neun Bereichen, die folgendermaßen
spezifiziert sind:
Image Header Der Bereich enthält alle relevanten Informationen über die ausführbare Datei,
wie zum Beispiel UID1-3, CRC-Prüfsumme, Stack- und Heapgröße.
Code Section -.text Dieser Bereiche beinhaltet den auszuführenden Quellcode.
Constant Data Section -.rdata Beinhaltet konstante schreibgeschützte Daten.
Import Address Table (IAT) Die Tabelle enthält für jede Funktion einen Eintrag, der durch
die ausführbare Datei importiert wird.
Export Directory -.edata Diese Tabelle stellt die Adressen jeder Funktion bereit, die aus
dieser Datei exportiert werden. Jeder Eintrag beinhaltet die Startadresse der Funktion
als Offset relativ zum Start des Code-Bereichs.
Initialized Data Section -.data Dieser Bereich enthält die initialisierten Daten, die in den
RAM kopiert werden, wenn die Datei ausgeführt wird.
Import Data Section -.idata Beinhaltet Daten für jede Funktion, die die ausführbare Datei
importiert. Der „Loader“ benutzt diese Information, um jede referenzierte DLL, die auch
geladen werden muss, zu identifizieren. Zusätzlich benutzt der „Loader“ diese Informationen, um jeden Eintrag in der IAT aufzulösen.
Code Relocation Section Enthält die „Relocation“-Informationen, die auf den Code-Bereich
angewendet werden sollen. Relocation bezeichnet dabei den Prozess, symbolische Referenzen durch aktuelle Speicheradressen zu ersetzen.
107
7. Privilegien von Software erhöhen
Data Relocation Section Beinhaltet die Relocation-Informationen, die auf den Daten-Bereich
angewendet werden sollen.
Das oben beschriebe Dateiformat kann nur auf ausführbare Dateien, die nicht im ROM ausgeführt werden, angewendet werden. Das Dateiformat der sogenannten execute-in-place(XIP)
Dateien, also ausführbare Dateien, die direkt im ROM ausgeführt werden, basiert zwar auf
dem „E32 Image“-Dateiformat, unterscheidet sich jedoch in den folgenden Punkten:
• Besitzt einen anderen Image Header.
• Enthält keine IAT.
• Besitzt auch keine Import Data Section (.idata).
• Enthält keine Relocation-Informationen.
• Beinhaltet eine „DLL Reference Table“ nach dem Daten-Bereich. Die Tabelle enthält
jede Bibliothek, die durch die ausführbare Datei referenziert wird, die statische Daten
enthält.
7.4.2. Loader Server
Der „File Server“-Prozess enthält einen zweiten Server, den „Loader Server“. Der Loader Server
hat die Aufgabe, ausführbare Dateien (in diesem Fall EXE- und DLL-Dateien) zu laden. Der
Server wird in einem separaten Thread vom Haupt-File-Server ausgeführt und ist mit Hilfe
der Symbian OS Client/Server-Architektur implementiert. Anders als der „File-Server“ kann
der Loader Server nur eine geringe Anzahl an Diensten zur Verfügung stellen. Im Einzelnen
sind das:
• Einen Prozess starten und die betreffende ausführbare Datei laden.
• Eine DLL laden.
• Informationen über eine bestimmte DLL einholen, das beinhaltet die UIDs der DLL,
die Capabilities und die Modul-Version.
• Einen Gerätetreiber laden.
• Ein „Locale“ laden.
• Ein Dateisystem oder eine „File-Server“-Erweiterung landen.
Vorgang einen Prozess zu laden
Zunächst wird der Vorgang beschrieben, wie der Loader Server einen Prozess im ROM lädt und
anschließend die Unterschiede zum Ladevorgang eines Prozesses nicht im ROM. Dabei muss
als Erstes eine Anfrage an den Loader Server mit RProcess::Create() erstellt werden. Diese
Methode erstellt ein RLoader-Session-Objekt und bei erfolgreichem Verbindungsaufbau wird
die Kontrolle wieder an den Client-Thread zurückgegeben. Die Abbildung 7.1 verdeutlicht den
ersten Schritt. Anschließend ruf der Client die Methode RLoader::LoadProcess() auf, die die
Argumente der Create-Methode an den Server schickt. Als Nächstes allokiert der Server ein
108
7.4. Sandbox auf Symbian OS Version 9
Abbildung 7.1.: Anfrage an den Loader Server [2]
E32Image-Objekt für den Hauptprozess der ausführbaren Datei und ruft die LoadProcess()Methode an diesem Objekt auf. Im nächsten Schritt muss die ausführbare Datei lokalisiert
werden. Dazu erstellt der Loader ein RImageFinder-Objekt und ruf die Search-Methode mit
den spezifizierten Argumenten auf. Bei erfolgreicher Suche wird das E32Image-Objekt mit
den gefundenen Informationen durch die Funktion E32Image::Construct() erstellt. Im dritten Schritt wird überprüft, ob ein entsprechendes DCodeSeg-Objekt für die ausführbare Datei
schon existiert. Dazu benutzt der Loader die E32Loader::CodeSeqNext()-Funktion, die den
Kernel auffordert, seine gesamte „Code Segments“-Liste zu durchsuchen. Anschließend kann
der Loader die E32Loader::ProcessCreate-Funktion aufrufen, die den Kernel auffordert, die
Prozessstruktur, den Haupt-Thread und einen globalen Daten-Chunk zu erstellen. Das Ergebnis ist ein DProcess-Objekt, das für den Prozess erstellt wurde. Im nächsten Schritt muss der
Loader jede DLL laden, von der die ausführbare Datei abhängt und statische Daten enthält.
Dafür holt sich der Loader die Adresse der „DLL Reference Table“ aus dem ROM Image Header. Jeder Eintrag in der Tabelle enthält einen Zeiger auf den betreffenden Image Header der
DLL, sodass der Loader für jeden Eintrag ein weiteres E32Image-Objekt generiert. Zusätzlich
muss der Loader für jeden Eintrag ein DCodeSeg-Objekt erhalten. Im letzten Schritt ruft der
Loader die E32Loader::RrocessLoaded()-Kernelfunktion auf, damit der Zustand des neuen
Prozess-Threads aktualisiert wird. Diese Funktion generiert auch ein „Handle“ für den neuen Prozess, das der Loader zurück zum Client schreibt. Anschließend löscht der Loader alle
„Image“-Objekte, die er für die ausführbare Datei erstellt hat und schließt sein eigenes „Handle“
auf den neuen Prozess. Schließlich wird die originale „Load Process“-Nachricht abgeschlossen
und die Kontrolle geht an den Client-Thread zurück. Das schließt auch das RLoader-SessionObjekt und die RProcess::Create()-Methode terminiert. Abbildung 7.2 veranschaulicht den
letzten Schritt grafisch. Nachdem der Loader seinen Dienst erledigt hat, muss der Client nur
noch den neuen Prozess fortsetzen, um ihn zu starten. Der Kernel ruft dann den Einsprungspunkt des Prozesses auf, der den Heap für den Haupt-Thread erstellt. Als Nächstes kopiert
er den initialisierten Data-Bereich an ihre Ausführungsadresse und bereinigt den nicht initialisierten Datenbereich. Ruf die Konstruktoren der EXE-Datei und der verlinkten DLLs auf.
Schließlich ruft der Kernel den öffentlichen Einsprungspunkt, die E32Main()-Funktion, auf.
Der Vorgang einen Prozess zu laden, der nicht im ROM ausgeführt wird, ist etwas komplexer
als einen XIP-Prozess direkt im ROM zu laden, sodass hier nur die Unterschiede beschrieben
werden. Der nächste Unterschied tritt auf, wenn der Loader die E32Loader::ProcessCreate()-
109
7. Privilegien von Software erhöhen
Abbildung 7.2.: Vervollständigung der Anfrage [2]
Methode aufruft und der Kernel ein DCodeSeg-Objekt für die ausführbare Datei erstellt. Dabei
muss der Kernel ein „RAM Code Segment“ allokieren, das DCodeSeg-Objekt mit diesem Segment assoziieren und die Ladeadresse des Quellcodes innerhalb des Segments zurückgeben.
Anschließend muss der gesamte Quellcode aus der „Image“-Datei in das „Code Segment“ in
die Ladeadresse des Quellcodes geladen werden. Wenn die ausführbare Datei komprimiert ist,
muss der Loader die Code Section beim Laden dekomprimieren. Nachdem der Loader den
Rest der „Image“-Datei in einen temporären „Image“-Puffer geschrieben hat, muss der Loader
die „Header“-Informationen prüfen, ob die Datei eine Code Relocation Section enthält. Wenn
das der Fall ist, muss der Loader diese Informationen aus dem „Image“-Puffer auslesen und
eine Funktion im „Supervisor Mode“ aufrufen, die jede Relocation auf der gerade geladenen
Code Section durchführt. Enthält die ausführbare Datei ein Export Directory, muss der Loader jeden Eintrag der Ausführungsadresse auflösen und ihn in den Code Segment auf der
Kernelseite schreiben. Enthält die ausführbare Datei eine Initialized Data Section, muss der
Loader diese Daten aus dem „Image“-Puffer in das Code Segment kopieren. Enthält die ausführbare Datei auch noch eine Data Relocation Section, muss der Loader diese Relocations
nach dem gleichen Schema ersetzen wie die Code Relocations. Als Nächstes muss der Loader
alle referenzierten DLL der ausführbaren Datei laden. Jedoch anders als bei den XIP-Dateien
sind die Abhängigkeitsinformationen in der Import Section enthalten und nicht in der „DLL
Reference Table“. Weiter sind nur die Namen der DLL spezifiziert, statt Zeiger zu den Image
Headern wie es bei den XIP-Dateien der Fall ist. Der Loader liest jeden „Import Block“ aus
dem „Image“-Puffer und bearbeitet ihn. Wenn alle „Import Blocks“ bearbeitet wurden, muss
der Loader die IAT für die Hauptdatei und jede Abhängigkeit, die der Loader gerade geladen
hat, auflösen. Nachdem alle Abhängigkeiten bearbeitet wurden, wird der Ladevorgang auf die
gleiche Weise fortgeführt wie bei den XIP-Dateien.
7.4.3. Übertragbarkeit der MobileSandbox
Die Aufgabe der MobileSandbox für Windows Mobile ist die dynamische Analyse von Malware
zur Laufzeit [5]. Dabei wird die zu untersuchende Anwendung in einer Umgebung („Sandbox“)
ausgeführt, die es ermöglicht, jeden einzelnen Schritt der Anwendung zu beobachten. Das
110
7.4. Sandbox auf Symbian OS Version 9
Ergebnis der Analyse ist eine Sequenz von API-Aufrufen, die das Programm während seiner
Ausführung benutzt hat.
Eine von der MobileSandbox benutzte Methode ist das „Import Address Table Patching“.
Dabei wird die Adresse jedes Eintrags in der IAT verändert, denn der Windows Loader
muss die Adresse jedes Systemaufrufs nachschauen und diese in die IAT einfügen. Soll nun
Abbildung 7.3.: MobileSandbox IAT Patching [5]
das „IAT-Patching“ auf Symbian Version 9 übertragen werden, muss zunächst die Symbian
Client/Server-Architektur mit einbezogen werden. Dabei kann ein Client nur auf die vom Symbian Loader Server zur Verfügung gestellte Funktion zugreifen. Dadurch wird gewährleistet,
dass der Client nicht auf die privaten Klassen des Loader Servers, die den Kernel anweisen, die
entsprechenden Methoden auszuführen, zugreifen kann. Somit kann in der öffentlichen Version des Symbian SDKs nicht auf die entsprechenden Methoden zugegriffen werden. Jedoch
wurde mit Symbian OS Version 8 eine „File Hook API“ vorgestellt, die es „Plug-ins“ erlaubt,
Dateisystem-Anfragen abzufangen, um beispielsweise Dateien nach Viren zu durchsuchen. Die
API wurde mit Symbian Version 9 deutlich verbessert. Der Zugang zu diesen APIs wird aber
nur durch ein Symbian OS Development Kit (DevKit) oder Symbian OS Binary Access Kit
(BAK) gewährt. In [14] wird auch noch auf zwei weitere Dokumente „Generic fileserver hooks“
und „Virus Scanning Hooks Design for EKA1“ verwiesen. Deshalb sollte es mit Hilfe dieser
API möglich sein, das „IAT-Patching“ auch auf Symbian Version 9 Mobiltelefonen zu implementieren. Dabei muss aber auch noch beachtet werden, dass Dateisystem „Plug-ins“ die Tcb
Capability benötigen und somit die Zustimmung der Mobiltelefonhersteller vorhanden sein
muss.
111
8. Fazit und Ausblick
Dieses abschließende Kapitel stellt das Fazit und den Ausblick dieser Diplomarbeit dar. Zusätzlich wird die Frage nach der Offenheit von Symbian OS Version 9 kurz beleuchtet und
anschließend mögliche Themen vorgestellt, die aufbauend auf dieser Arbeit weiter bearbeitet
werden könnten.
8.1. Offenheit von Symbian OS
Die Diskussion, ob ein mobiles Betriebssystem nun für Software von Drittanbietern geöffnet
oder, um die Sicherheit des Mobiltelefons zu erhöhen, stattdessen vor Fremdsoftware geschlossen werden soll, hat in der Vergangenheit gezeigt, dass die zweite genannte Möglichkeit auch
nicht immer das Problem löst. Beispielsweise sei hier das „Orange SPV“-Mobiltelefon genannt,
dessen Windows Betriebssystem zu Beginn geschlossen war. Doch Beschwerden zahlreicher
Entwickler führten dann zur einer Möglichkeit [38], die seitens „Orange“ für Entwicklungszwecke zur Verfügung gestellt wurde, das „Orange SPV“-Mobiltelefon zu entsperren. Das „iPhone“ ist das nächste Beispiel, das zu Beginn für Fremdsoftware geschlossen war. Dennoch ist
es auf diesen Geräten gelungen, Fremdsoftware zu installieren [39, 40]. In diesem Fall wurde
nachträglich ein SDK von Apple zur Verfügung gestellt [41], das es Entwicklern ermöglicht,
Anwendungen für das „iPhone“ zu erstellen. Wie die Beispiele zeigen, wurde in beiden Fällen
das entsprechende Betriebssystem geöffnet. Daran kann aber auch gesehen werden, dass ein
geschlossenes Betriebssystem nicht immer vor der Installation von Fremdsoftware gewahrt ist.
Somit ist nicht immer garantiert, dass durch die Verhinderung der Installation von Fremdsoftware die Sicherheit eines Mobiltelefons gegeben ist.
Symbian betitelt ihr Betriebssystem als „offenes Betriebssystem“, für das jeder Entwickler
Software schreiben kann. Während dieser Arbeit konnte ich aber feststellen, dass das nur auf
einige Bereiche zutrifft. Abhängig vom SDK ist der Zugriff nur auf die jeweiligen Bereiche
gegeben, die durch das entsprechende SDK zur Verfügung gestellt werden. Symbian hat hier
meiner Meinung nach die Balance zwischen einem völlig offenen Betriebssystem und einem
in sich abgeschlossenen Betriebssystem geschafft. Auf der einen Seite kann Symbian OS zwar
als offenes Betriebssystem bezeichnet werden, da es ein öffentlich zugängliches SDK anbietet
und auch weitere Laufzeitumgebungen wie zum Beispiel Java und Python unterstützt. Auf
der anderen Seite sind 40 Prozent der Symbian-APIs im öffentlichen SDK durch Capabilities geschützt. Des Weiteren kann auf bestimmte Bereiche nur zugegriffen werden, wenn das
entsprechende SDK zur Verfügung steht. Beispielsweise kann eine Anti-Virus Anwendung nur
dann entwickelt werden, wenn das Symbian OS „Development Kit“ oder das „Binary Access
Kit“ verfügbar ist und den Zugriff auf die „File Hook API“ ermöglicht. Zusätzlich wird noch
die Tcb Capability benötigt, die nur mit Hilfe einer Mobiltelefonhersteller-Genehmigung erteilt werden kann. In diesem Beispiel hätte ein freier Entwickler nicht die Möglichkeit, eine
113
8. Fazit und Ausblick
solche Anwendung zu implementieren, sodass hier die Offenheit, die Symbian sich als architektonisches Ziel (Abschnitt 2.2.6) gesetzt hat, aufgrund der Sicherheitsmerkmale der PSA
nicht völlig gegeben ist. Wie schon die Beispiele zu Beginn dieses Abschnitts verdeutlicht haben, sind auch die Beschränkungen, die Symbian ihren Entwicklern auferlegt hat, größtenteils
durch die Methoden in Kapitel 7 gebrochen worden. Jedoch soll zu Beginn der zweiten Jahreshälfte 2009 die „Symbian Foundation“ [42] dieses Problem lösen. Die „Symbian Foundation“
ist ein Zusammenschluss von Nokia, Sony Ericsson, Motorola und NTT DOCOMO, die sich
das Ziel gesetzt hat, eine offene, mobile Software Plattform zu erstellen, die Symbian OS,
S60, UIQ und MOAP(S) zu einem einzigen, offenen Betriebssystem vereinigt. Zusammen mit
AT&T, LG, Samsung, STMicroelectronics, Texas Instrument und Vodafone soll die „Symbian
Foundation“ genutzt werden, um den Anklang dieser vereinigten Software-Plattform zu erweitern. Die Mitgliedschaft in dieser gemeinnützigen Stiftung soll für alle Organisationen offen
sein. Schon zum Start der Stiftung sollen ausgewählte Komponenten im Quellcode verfügbar
sein. In den darauf folgenden zwei Jahren soll die komplette mobile Software im Quellcode
angeboten werden. Die dabei veröffentlichen Komponenten werden unter der „Eclipse Public
Licence (EPL) 1.0“ [43] veröffentlicht. Bei dieser in Zukunft offenen Plattform muss aber
erneut durch die Erfahrungen mit Symbian OS Version 9 die Frage gestellt werden, welche
Entwicklergruppen auf das komplette Betriebssystem zugreifen werden können.
8.2. Fazit
Das Ziel dieser Diplomarbeit ist die Verifikation der Konfiguration, sowie geeignete Konfigurationsparameter der PSA zu finden. Dafür musste ein Testsystem entwickelt werden, das die
spezifizierte Funktionsweise der PSA verifiziert oder widerlegt. Das Testsystem sollte dabei
mit möglichst wenig Redundanz implementiert werden und die Testfälle sollten anhand einer Konfigurationsdatei automatisch generiert werden können. Während der Spezifikation der
Testfälle konnten insgesamt zehn Testbereiche der PSA identifiziert werden. Dabei konnten
die Merkmale und Kennzeichen der jeweiligen PSA-Eigenschaften auf die einzelnen Testbereiche abgebildet werden. Das Testsystem kann jedem Testbereich entsprechende Testfälle
zur Verfügung stellen. Durch die Unterteilung des Testsystems in einen Code-Builder, einen
Package-Creator und einen Emu-Builder konnte schon auf dieser Ebene mögliche Redundanz
vermieden werden. Durch diesen Aufbau konnte nicht nur eine gemeinsame Quellcode-Basis
für die verfügbaren Plattformen geschaffen werden, sondern der Code Builder garantiert auch,
dass keine Fehler bei der Erstellung der Testfälle entstehen, wenn diese korrekt definiert wurden. Durch die Konfigurationsdatei als zentralen Eingabeparameter für das Testsystem konnte
die automatische Generierung der Testfälle realisiert werden.
Die Ergebnisse der einzelnen Tests haben gezeigt, dass der Emulator nur zur Laufzeit für die
Verifikation der Funktionsweise herangezogen werden kann. In den meisten Testfällen konnte
der Emulator jedoch nicht verwendet werden. Daraus kann gefolgert werden, dass Tests auf
einem Mobiltelefon unabdingbar sind. Die SWIPolicy konnte als der zentrale Konfigurationspunkt der PSA ausgemacht werden. Der Benutzer spielt bei der Konfiguration der PSA
eine untergeordnete Rolle. Die Einstellungen des SWInstallers können nur dann konfiguriert
werden, wenn der entsprechende Parameter der SWIPolicy das auch erlaubt. In diesem Zusammenhang konnte auch festgestellt werden, dass der SWIPolicy von den Mobiltelefonherstellern
und den Mobilfunkanbietern nur wenig Beachtung geschenkt wird.
114
8.3. Ausblick
Alle spezifizierten Testfälle in den jeweiligen Testbereichen konnten die Funktionsweise entsprechend der Symbian PSA Definition verifizieren. Die Testfälle zeigten auch, dass wenn
überhaupt, es nur minimale Unterschiede zwischen den einzelnen Symbian OS Versionen gibt.
Auch beim Vergleich verschiedener Mobiltelefone mit der gleichen Symbian OS Version konnten zwischen diesen Modellen keine Unterschiede festgestellt werden.
In den Testfällen wurde deutlich, dass Symbian Signed mit der Gewährung von Capabilities
eine große Verantwortung auferlegt wurde und dadurch das Signierungsprogramm nicht jedem
Entwickler im vollen Umfang zur Verfügung steht. In Symbian OS ist jede öffentlich zugängliche Komponente gut dokumentiert. Aber aufgrund der Menge dieser Dokumentation ist es
vorgekommen, dass teilweise die gleichen API-Funktionen mit verschiedenen Capabilities definiert wurden. Die beschriebenen Methoden die Privilegien der Symbian Anwendungen zu
erhöhen, besitzen bis jetzt nur lokales Gefahrenpotential. Dennoch können auf diese Weise
unkontrolliert die Manufacturer Capabilities verwendet werden. Jedoch wollten die Mobilfunkanbieter diese Situation verhindern. Kann deshalb behauptet werden, dass die Symbian
PSA gebrochen ist? Die Antwort auf diese Frage kann nicht einfach mit Ja oder Nein beantwortet werden. Die Testfälle haben die korrekte Funktionsweise der PSA und das Zusammenspiel der einzelnen Komponenten in Verbindung mit Symbian Signed verifiziert, sodass
das Konzept der PSA als nicht gebrochen bezeichnet werden kann. Jedoch basieren fast alle
diese Möglichkeiten auf der gleichen Methode, die Capabilities im Emulator zu Testzwecken
zu deaktivieren. In dieser Hinsicht hat Symbian den „Rahmen“ der PSA auf den Mobiltelefonen nicht ausreichend geschützt. Das Konzept und die Implementierung der PSA besitzen
nach den Ergebnissen dieses Diplomarbeit und der Spezifikation von Symbian keine größeren
Fehler, sondern nur die Umgebung die die PSA umfasst.
8.3. Ausblick
Mit der Ankündigung der „Symbian Foundation“ gab es seitens anderer Mobiltelefonhersteller, die neben Nokia auch auf Symbian als Betriebssystem setzen, nur positive Reaktionen.
Anscheinend hat die Symbian-Gemeinde auf solch eine Nachricht schon lange gewartet. Doch
mit dieser Nachricht scheinen die Tage der Symbian Version 9 gezählt zu sein. Die Version
9.3 wird wohl die letzte Iteration von Symbian OS 9 sein. Die bereits spezifizierten Versionen
9.4 und 9.5, werden allem Anschein nach in die neue, offene Plattform integriert werden. Es
besteht wahrscheinlich noch die Möglichkeit Symbian Version 9.4, die für 2008 geplant war
[44], in die kommenden Mobiltelefone zu integrieren, jedoch ist das eine Entscheidung der
Mobiltelefonhersteller.
Die neue „Symbian Foundation“-Plattform wird nicht nur weitere Möglichkeiten für die Zukunft der Plattform anbieten, sondern soll auch die Kompatibilität zur Symbian OS Version 9
bewahren [45]. Dadurch ist nicht nur die aktuell verfügbare Software für Symbian OS 9 auf der
neuen Plattform lauffähig, sondern Entwicklern wird auch die Möglichkeit gegeben, Software
für die Zukunft zu entwickeln. Durch die Kompatibilität zu Symbian OS Version 9 wird auch
die PSA in der neuen Plattform integriert werden. Dadurch wäre auch das PSA-Testsystem
mit der neuen „Symbian Foundation“-Plattform kompatibel.
Bevor die „Symbian Foundation“ den Quellcode von Symbian OS „Open Source“ verfügbar
machen kann, muss zunächst der bestehende Quellcode von Symbian OS und S60 Modul für
115
8. Fazit und Ausblick
Modul durchgesehen werden [46]. Dadurch kann der Quellcode von Drittherstellern, die der
„Symbian Foundation“ nicht beitreten, identifiziert werden und auf diese Weise kann außerdem sichergestellt werden, dass nur der Quellcode veröffentlicht wird, der auch veröffentlicht
werden darf. Teilweise müssten Komponenten diverser Dritthersteller ersetzt und neu implementiert werden, um es „Open Source“ verfügbar zu machen. Bei diesem gesamten Umstrukturierungsprozess könnten sich verschiedene Fehler einschleichen. Hier wäre es interessant zu
sehen, wie sich die Umstrukturierung des Symbian-Quellcodes auf das Testsystem auswirken
würde. Zu diesem Zweck könnte das Testsystem erneut eingesetzt werden, um das neue Symbian Betriebssystem auf die gleiche Weise zu untersuchen wie schon Symbian OS Version 9.
Dabei könnten die Testergebnisse beider Versionen miteinander verglichen und so eventuelle
Fehler in der neuen Version gefunden werden.
Das mit dieser Diplomarbeit vorgestellte Testsystem untersucht die Sicherheitsmechanismen
der PSA auf Anwendungsebene, ob die beschriebenen Sicherheitsmerkmale gemäß der Spezifikation funktionieren. Eine weiterführende Arbeit könnte direkt auf die korrekte Implementierung von Symbian OS Version 9 abzielen. Dabei könnte untersucht werden, ob in den
aktuellen Implementierungen der Symbian Versionen 9.x Schwachstellen oder sonstige Fehler
vorhanden sind. Wenn das beispielsweise der Fall ist, könnte der Frage nachgegangen werden,
wie sich diese Schwachstellen ausnutzen lassen könnten. Weiter könnte untersucht werden,
ob die gefundenen Schwachstellen versionsübergreifend sind. Das heißt, sind Schwachstellen
beispielsweise in Symbian OS 9.1 auch in Version 9.2 und 9.3 oder umgekehrt vorhanden.
Diese Frage könnte aber auch auf die „Symbian Foundation“-Plattform ausgeweitet werden,
ob gefundene Schwachstellen in Symbian OS 9.x auch in der neuen Plattform vorhanden sind.
Jedoch müsste für diese Untersuchung auch das entsprechende SDK zur Verfügung gestellt
werden. In der „Symbian Foundation“-Plattform sollte es aber kein Problem darstellen. In
diesem Zusammenhang könnten zunächst die einzelnen Funktionen auf ihre korrekten Rückgabewerte mit spezifischen Eingabeparametern untersucht werden. Zu diesem Zweck könnte
der API-Testbereich verwendet werden, um mögliche Fehler in den Funktionen zu finden. Da
die neue Plattform Symbian OS Version 9.x kompatibel ist, könnten die Testfälle auch für die
neue Plattform genutzt werden. Dafür müsste aber eine möglichst vollständige Definitionsdatei für die API-Testfälle beider Plattformen erstellt werden.
Ein weiteres interessantes Themengebiet zur Symbian PSA wäre die Untersuchung bekannter
Symbian S60 Viren. Hier könnte die Frage nach der Portierbarkeit auf Symbian Version 9 von
„Cabir“, „Skulls“ und Co. beantwortet werden. Ist die Implementierung dieser Viren prinzipiell
machbar, wenn die nötigen Capabilities zur Verfügung gestellt werden. In einem weiteren
Schritt könnte die Frage beantwortet werden, was die kleinstmögliche Menge an Capabilities
für diese Viren wäre. Könnten dadurch auch Viren mit User Capabilities implementiert und auf
Symbian Version 9 Mobiltelefonen verbreitet werden? In einem abschließenden Schritt könnten
in diesem Themengebiet die Methoden zur Privilegienerhöhung weiter untersucht werden.
Dabei könnte auch die Frage erläutert werden, ob diese Methoden zur Privilegienerhöhung
verwendet werden könnten um eine neue Klasse von Symbian-Viren zu erstellen.
Ein abschließendes Themengebiet, das in Zusammenhang mit der PSA bearbeitet werden
kann, ist die „MobileSandbox“. Im Anschnitt 7.4.3 habe ich beschrieben, dass es mit den
entsprechenden „Development Kits“ möglich ist, die „MobileSandbox“ auf Symbian OS Version
9 zu übertragen. In diesem Themengebiet könnte die Frage beantwortet werden, ob das „IATPatching“ auch praktisch für Symbian OS Version implementiert werden könnte.
116
Anhang
A.1. Definition der Testfälle
A. Testsystem
A.1. Definition der Testfälle
Die Definition der Testfälle soll hier als Referenz für das Testsystem dienen.
Data-Caging:
Capability: AllFiles
Access: read
Drive: C,E,Z
Path: \\sys,\\resource,\\private,\\private\\EHome
Signed: root
Capability: AllFiles
Access: write
Drive: C,E,Z
Path: \\sys,\\resource,\\private,\\private\\ EHome
Signed: root
Capability: none
Access: read
Drive: C,E,Z
Path: \\sys,\\resource,\\private,\\private\\ EHome
Signed: root
Capability: none
Access: write
Drive: C,E,Z
Path: \\sys,\\resource,\\private,\\private\\ EHome
Signed: root
Capability: Tcb
Access: read
Drive: C,E,Z
Path: \\sys,\\resource,\\private,\\private\\ EHome
Signed: root
Capability: Tcb
Access: write
Drive: C,E,Z
Path: \\sys,\\resource,\\private,\\private\\ EHome
Signed: root
Capability: Tcb AllFiles
Access: read
Drive: C,E,Z
Path: \\sys,\\resource,\\private,\\private\\ EHome
Signed: root
Capability: Tcb AllFiles
Access: write
Drive: C,E,Z
Path: \\sys,\\resource,\\private,\\private\\ EHome
Signed: root
Capability: none
Access: read
Drive: C,E,Z
Path: \\sys,\\resource,\\private,\\private\\ EHome
Signed: dev
Capability: none
Access: write
Drive: C,E,Z
Path: \\sys,\\resource,\\private,\\private\\ EHome
Signed: dev
Capability: none
Access: read
Drive: C,E,Z
Path: \\sys,\\resource,\\private,\\private\\ EHome
Signed: self
Capability: none
Access: write
Drive: C,E,Z
Path: \\sys,\\resource,\\private,\\private\\ EHome
Signed: self
Capability: none
Access: read
Drive: C,E,Z
Path: \\sys,\\resource,\\private,\\private\\ EHome
Signed: none
Capability: none
Access: write
Drive: C,E,Z
Path: \\sys,\\resource,\\private,\\private\\ EHome
Signed: none
119
A. Testsystem
File-Eclipsing:
Vorbereitung: Erste Konfig-Datei
Eclipsing Situation herstellen: Zweite KonfigDatei
Beide Pakete sollten den gleichen Namen haben.
Paket Eclipsing (Parameter Vertrauenswürdigkeit der Pakete):
Capability: none
Capability: none
Drive: C
Drive: E
File:
File:
Path:
Path:
Type: SA
Type: SA
At Install: true
At Install: true
Version: 1,0,0
Version: 1,0,0
Signed: self
Signed: self
Code[]
Code[]
Capability: none
Capability: none
Drive: C
Drive: E
File:
File:
Path:
Path:
Type: SA
Type: SA
At Install: true
At Install: true
Version: 1,0,0
Version: 1,0,0
Signed: self
Signed: dev
Code[]
Code[]
Capability: none
Capability: none
Drive: C
Drive: E
File:
File:
Path:
Path:
Type: SA
Type: SA
At Install: true
At Install: true
Version: 1,0,0
Version: 1,0,0
Signed: self
Signed: root
Code[]
Code[]
Capability: none
Drive: C
File:
Path:
Type: SA
At Install: true
Version: 1,0,0
Signed: root
Code[]
Capability: none
Drive: C
File:
Path:
Type: SA
At Install: true
Version: 1,0,0
Signed: root
Code[]
120
Capability: none
Drive: E
File:
Path:
Type: SA
At Install: true
Version: 1,0,0
Signed: self
Code[]
Capability: none
Drive: E
File:
Path:
Type: SA
At Install: true
Version: 1,0,0
Signed: dev
Code[]
A.1. Definition der Testfälle
Capability: none
Drive: C
File:
Path:
Type: SA
At Install: true
Version: 1,0,0
Signed: root
Code[]
Capability: none
Drive: E
File:
Path:
Type: SA
At Install: true
Version: 1,0,0
Signed: root
Code[]
Datei Eclipsing während Installation:
Beide gleiche Konfig-Datei, die zu 2 „clipsende“ Datei steht im Vordergrund.
Capability: none
Capability: none
Drive: C,C,C
Drive: E
File: TestSWISelf_1.txt, TestSWISelf_2.txt,
File: TestSWISelf_1.txt
TestSWISelf_3.txt
Path: \\Test\\Eclipsing
Path: \\Test\\Eclipsing, \\Test\\Eclipsing,
Type: SA
\\Test\\Eclipsing
At Install: true
Type: SA
Version: 1,0,0
At Install: true
Signed: self
Version: 1,0,0
Code[]
Signed: self
Code[]
Capability: none
Capability: none
Drive: E
Drive: E
File: TestSWISelf_2.txt
File: TestSWISelf_3.txt
Path: \\Test\\Eclipsing
Path: \\Test\\Eclipsing
Type: SA
Type: SA
At Install: true
At Install: true
Version: 1,0,0
Version: 1,0,0
Signed: dev
Signed: root
Code[]
Code[]
Capability: none
Drive: C,C,C
File: TestSWIRoot_1.txt, TestSWIRoot_2.txt,
TestSWIRoot_3.txt
Path: \\Test\\Eclipsing, \\Test\\Eclipsing,
\\Test\\Eclipsing
Type: SA
At Install: true
Version: 1,0,0
Signed: root
Code[]
Capability: none
Drive: E
File: TestSWIRoot_2.txt
Path: \\Test\\Eclipsing
Type: SA
At Install: true
Version: 1,0,0
Signed: dev
Code[]
Capability: none
Drive: E
File: TestSWIRoot_1.txt
Path: \\Test\\Eclipsing
Type: SA
At Install: true
Version: 1,0,0
Signed: self
Code[]
Capability: none
Drive: E
File: TestSWIRoot_3.txt
Path: \\Test\\Eclipsing
Type: SA
At Install: true
Version: 1,0,0
Signed: root
Code[]
121
A. Testsystem
122
Capability: none
Drive: C,C,C
File: ExeTest_1SimpleEXE.exe,
ExeTest_2SimpleEXE.exe,
ExeTest_3SimpleEXE.exe
Path: \\sys\\bin, \\sys\\bin, \\sys\\bin
Type: SA
At Install: true
Version: 1,0,0
Signed: self
Code[]
Capability: none
Drive: E
File: ExeTest_2SimpleEXE.exe
Path: \\sys\\bin
Type: SA
At Install: true
Version: 1,0,0
Signed: dev
Code[]
Capability: none
Drive: E
File: ExeTest_1SimpleEXE.exe
Path: \\sys\\bin
Type: SA
At Install: true
Version: 1,0,0
Signed: self
Code[]
Capability: none
Drive: C,C,C
File: ExeTest_1SimpleEXE.exe,
ExeTest_2SimpleEXE.exe,
ExeTest_3SimpleEXE.exe
Path: \\sys\\bin, \\sys\\bin, \\sys\\bin
Type: SA
At Install: true
Version: 1,0,0
Signed: root
Code[]
Capability: none
Drive: E
File: ExeTest_2SimpleEXE.exe
Path: \\sys\\bin
Type: SA
At Install: true
Version: 1,0,0
Signed: dev
Code[]
Capability: none
Drive: E
File: ExeTest_1SimpleEXE.exe
Path: \\sys\\bin
Type: SA
At Install: true
Version: 1,0,0
Signed: self
Code[]
Capability: none
Drive: C,C,C
File: TestDllTest_1DLL.dll,
TestDllTest_2DLL.dll, TestDllTest_3DLL.dll
Path: \\sys\\bin, \\sys\\bin, \\sys\\bin
Type: SA
At Install: true
Version: 1,0,0
Signed: self
Code[]
Capability: none
Drive: E
File: TestDllTest_1DLL.dll
Path: \\sys\\bin
Type: SA
At Install: true
Version: 1,0,0
Signed: self
Code[]
Capability: none
Drive: E
File: ExeTest_3SimpleEXE.exe
Path: \\sys\\bin
Type: SA
At Install: true
Version: 1,0,0
Signed: root
Code[]
Capability: none
Drive: E
File: ExeTest_3SimpleEXE.exe
Path: \\sys\\bin
Type: SA
At Install: true
Version: 1,0,0
Signed: root
Code[]
A.1. Definition der Testfälle
Capability: none
Drive: E
File: TestDllTest_2DLL.dll
Path: \\sys\\bin
Type: SA
At Install: true
Version: 1,0,0
Signed: dev
Code[]
Capability: none
Drive: E
File: TestDllTest_3DLL.dll
Path: \\sys\\bin
Type: SA
At Install: true
Version: 1,0,0
Signed: root
Code[]
Capability: none
Drive: C,C,C
File: TestDllTest_1DLL.dll,
TestDllTest_2DLL.dll, TestDllTest_3DLL.dll
Path: \\sys\\bin, \\sys\\bin, \\sys\\bin
Type: SA
At Install: true
Version: 1,0,0
Signed: root
Code[]
Capability: none
Drive: E
File: TestDllTest_2DLL.dll
Path: \\sys\\bin
Type: SA
At Install: true
Version: 1,0,0
Signed: dev
Code[]
Capability: none
Drive: E
File: TestDllTest_1DLL.dll
Path: \\sys\\bin
Type: SA
At Install: true
Version: 1,0,0
Signed: self
Code[]
Datei Eclipsing zur Laufzeit:
Capability: none
Drive: C,C,C
File: TestRuntimeSelf_1.txt,
TestRuntimeSelf_2.txt,
TestRuntimeSelf_3.txt
Path: \\Test\\Eclipsing, \\Test\\Eclipsing,
\\Test\\Eclipsing
Type: SA
At Install: false
Version: 1,0,0
Signed: self
Code[]
Capability: none
Drive: E
File: TestRuntimeSelf_2.txt
Path: \\Test\\Eclipsing
Type: SA
At Install: false
Version: 1,0,0
Signed: dev
Code[]
Capability: none
Drive: E
File: TestDllTest_3DLL.dll
Path: \\sys\\bin
Type: SA
At Install: true
Version: 1,0,0
Signed: root
Code[]
Capability: none
Drive: E
File: TestRuntimeSelf_1.txt
Path: \\Test\\Eclipsing
Type: SA
At Install: false
Version: 1,0,0
Signed: self
Code[]
Capability: none
Drive: E
File: TestRuntimeSelf_3.txt
Path: \\Test\\Eclipsing
Type: SA
At Install: false
Version: 1,0,0
Signed: root
Code[]
123
A. Testsystem
Capability: none
Drive: C,C,C
File: TestRuntimeRoot_1.txt,
TestRuntimeRoot_2.txt,
TestRuntimeRoot_3.txt
Path: \\Test\\Eclipsing, \\Test\\Eclipsing,
\\Test\\Eclipsing
Type: SA
At Install: false
Version: 1,0,0
Signed: root
Code[]
Capability: none
Drive: E
File: TestRuntimeRoot_2.txt
Path: \\Test\\Eclipsing
Type: SA
At Install: false
Version: 1,0,0
Signed: dev
Code[]
Capability: none
Drive: E
File: TestRuntimeRoot_1.txt
Path: \\Test\\Eclipsing
Type: SA
At Install: false
Version: 1,0,0
Signed: self
Code[]
Capability: none
Drive: E
File: TestRuntimeRoot_3.txt
Path: \\Test\\Eclipsing
Type: SA
At Install: false
Version: 1,0,0
Signed: root
Code[]
File-Overwriting:
Vorbereitung: Erste Konfig-Datei
Overwriting Situation herstellen: Zweite
Konfig-Datei
Beide Pakete sollten den gleichen Namen haben.
Paket Overwriting (Parameter Vertrauenswürdigkeit der Pakete): funktioniert nur bei Updates,
Updateverhalten
Capability: none
Capability: none
Drive: Drive: File: File: Path: Path: Type: SA
Type: SA
At Install: true
At Install: true
Version: 1,0,0
Version: 2,0,0
Signed: self
Signed: self
Code[]
Code[]
Capability: none
Capability: none
Drive: Drive: File: File: Path: Path: Type: SA
Type: SA
At Install: true
At Install: true
Version: 1,0,0
Version: 2,0,0
Signed: self
Signed: dev
Code[]
Code[]
124
A.1. Definition der Testfälle
Capability: none
Drive: File: Path: Type: SA
At Install: true
Version: 1,0,0
Signed: self
Code[]
Capability: none
Drive: File: Path: Type: SA
At Install: true
Version: 2,0,0
Signed: root
Code[]
Capability: none
Drive: File: Path: Type: SA
At Install: true
Version: 1,0,0
Signed: root
Code[]
Capability: none
Drive: File: Path: Type: SA
At Install: true
Version: 1,0,0
Signed: root
Code[]
Capability: none
Drive: File: Path: Type: SA
At Install: true
Version: 1,0,0
Signed: root
Code[]
Capability: none
Drive: File: Path: Type: SA
At Install: true
Version: 2,0,0
Signed: self
Code[]
Capability: none
Drive: File: Path: Type: SA
At Install: true
Version: 2,0,0
Signed: dev
Code[]
Capability: none
Drive: File: Path: Type: SA
At Install: true
Version: 2,0,0
Signed: root
Code[]
Update:
Capability: none
Drive: File: Path: Type: SA
At Install: true
Version: 1,0,0
Signed: self
Code[]
Capability: none
Drive: File: Path: Type: PU
At Install: true
Version: 2,0,0
Signed: self
Code[]
125
A. Testsystem
126
Capability: none
Drive: File: Path: Type: SA
At Install: true
Version: 1,0,0
Signed: self
Code[]
Capability: none
Drive: File: Path: Type: SA
At Install: true
Version: 1,0,0
Signed: root
Code[]
Capability: none
Drive: File: Path: Type: PU
At Install: true
Version: 2,0,0
Signed: root
Code[]
Capability: none
Drive: File: Path: Type: PU
At Install: true
Version: 2,0,0
Signed: self
Code[]
Capability: none
Drive: File: Path: Type: SA
At Install: true
Version: 1,0,0
Signed: self
Code[]
Capability: none
Drive: File: Path: Type: SA
At Install: true
Version: 1,0,0
Signed: self
Code[]
Capability: none
Drive: File: Path: Type: SA
At Install: true
Version: 1,0,0
Signed: root
Code[]
Capability: none
Drive: C
File: TestRuntimeNone_1.txt
Path: \\private
Type: SA
At Install: true
Version: 1,0,0
Signed: root
Capability: none
Drive: C
File: TestRuntimeNone_2.txt
Path: \\private
Type: SP
At Install: true
Version: 2,0,0
Signed: self
Code[]
Capability: none
Drive: C
File: TestRuntimeNone_3.txt
Path: \\private
Type: SP
At Install: true
Version: 2,0,0
Signed: root
Code[]
Capability: none
Drive: C
File: TestRuntimeNone_3.txt
Path: \\private
Type: SP
At Install: true
Version: 2,0,0
Signed: self
Code[]
Capability: none
Drive: C
File: TestRuntimeNone_1.txt
Path: \\private
Type: SP
At Install: true
Version: 2,0,0
Signed: self
A.1. Definition der Testfälle
Code[]
Datei Overwriting während Installation:
Capability: none
Drive: C,C,C
File: TestSWISelf_1.txt, TestSWISelf_2.txt,
TestSWISelf_3.txt
Path: \\Test\\ Overwriting, \\Test\\
Overwriting, \\Test\\ Overwriting
Type: SA
At Install: true
Version: 1,0,0
Signed: self
Code[]
Capability: none
Drive: C
File: TestSWISelf_2.txt
Path: \\Test\\ Overwriting
Type: SA
At Install: true
Version: 1,0,0
Signed: dev
Code[]
Code[]
Capability: none
Drive: C
File: TestSWISelf_1.txt
Path: \\Test\\ Overwriting
Type: SA
At Install: true
Version: 1,0,0
Signed: self
Code[]
Capability: none
Drive: C
File: TestSWISelf_3.txt
Path: \\Test\\ Overwriting
Type: SA
At Install: true
Version: 1,0,0
Signed: root
Code[]
Capability: none
Drive: C,C,C
File: TestSWIRoot_1.txt, TestSWIRoot_2.txt,
TestSWIRoot_3.txt
Path: \\Test\\ Overwriting, \\Test\\
Overwriting, \\Test\\ Overwriting
Type: SA
At Install: true
Version: 1,0,0
Signed: root
Code[]
Capability: none
Drive: C
File: TestSWIRoot_2.txt
Path: \\Test\\ Overwriting
Type: SA
At Install: true
Version: 1,0,0
Signed: dev
Code[]
Capability: none
Drive: C
File: TestSWIRoot_1.txt
Path: \\Test\\ Overwriting
Type: SA
At Install: true
Version: 1,0,0
Signed: self
Code[]
Capability: none
Drive: C,C
File: ExeTest_1SimpleEXE.exe,
ExeTest_2SimpleEXE.exe
Path: \\sys\\bin, \\sys\\bin
Type: SA
At Install: true
Version: 1,0,0
Signed: self
Capability: none
Drive: C
File: ExeTest_1SimpleEXE.exe
Path: \\sys\\ bin
Type: SA
At Install: true
Version: 1,0,0
Signed: self
Code[]
Capability: none
Drive: C
File: TestSWIRoot_3.txt
Path: \\Test\\ Overwriting
Type: SA
At Install: true
Version: 1,0,0
Signed: root
Code[]
127
A. Testsystem
Code[]
Capability: none
Drive: C
File: ExeTest_2SimpleEXE.exe
Path: \\sys\\bin
Type: SA
At Install: true
Version: 1,0,0
Signed: root
Code[]
128
Capability: none
Drive: C,C
File: ExeTest_1SimpleEXE.exe,
ExeTest_2SimpleEXE.exe
Path: \\sys\\bin, \\sys\\bin
Type: SA
At Install: true
Version: 1,0,0
Signed: root
Code[]
Capability: none
Drive: C
File: ExeTest_2SimpleEXE.exe
Path: \\sys\\bin
Type: SA
At Install: true
Version: 1,0,0
Signed: root
Code[]
Capability: none
Drive: C
File: ExeTest_1SimpleEXE.exe
Path: \\sys\\ bin
Type: SA
At Install: true
Version: 1,0,0
Signed: self
Code[]
Capability: none
Drive: C,C
File: TestDllTest_1DLL.dll,
TestDllTest_2DLL.dll
Path: \\sys\\bin, \\sys\\bin
Type: SA
At Install: true
Version: 1,0,0
Signed: self
Code[]
Capability: none
Drive: C
File: TestDllTest_2DLL.dll
Path: \\sys\\bin
Type: SA
At Install: true
Version: 1,0,0
Signed: root
Code[]
Capability: none
Drive: C
File: TestDllTest_1DLL.dll
Path: \\sys\\ bin
Type: SA
At Install: true
Version: 1,0,0
Signed: self
Code[]
A.1. Definition der Testfälle
Capability: none
Drive: C,C
File: TestDllTest_1DLL.dll,
TestDllTest_2DLL.dll
Path: \\sys\\bin, \\sys\\bin
Type: SA
At Install: true
Version: 1,0,0
Signed: root
Code[]
Capability: none
Drive: C
File: TestDllTest_2DLL.dll
Path: \\sys\\bin
Type: SA
At Install: true
Version: 1,0,0
Signed: root
Code[]
Datei Overwriting zur Laufzeit:
Capability: none
Drive: C,C,C
File: TestRuntimeSelf_1.txt,
TestRuntimeSelf_2.txt,
TestRuntimeSelf_3.txt
Path: \\Test\\ Overwriting, \\Test\\
Overwriting, \\Test\\ Overwriting
Type: SA
At Install: false
Version: 1,0,0
Signed: self
Code[]
Capability: none
Drive: C
File: TestRuntimeSelf_3.txt
Path: \\Test\\ Overwriting
Type: SA
At Install: false
Version: 1,0,0
Signed: dev
Code[]
Capability: none
Drive: C,C,C
File: TestRuntimeRoot_1.txt,
TestRuntimeRoot_2.txt,
TestRuntimeRoot_3.txt
Path: \\Test\\ Overwriting, \\Test\\
Overwriting, \\Test\\ Overwriting
Type: SA
At Install: false
Version: 1,0,0
Signed: root
Capability: none
Drive: C
File: TestDllTest_1DLL.dll
Path: \\sys\\ bin
Type: SA
At Install: true
Version: 1,0,0
Signed: self
Code[]
Capability: none
Drive: C
File: TestRuntimeSelf_2.txt
Path: \\Test\\ Overwriting
Type: SA
At Install: false
Version: 1,0,0
Signed: self
Code[]
Capability: none
Drive: C
File: TestRuntimeSelf_4.txt
Path: \\Test\\ Overwriting
Type: SA
At Install: false
Version: 1,0,0
Signed: root
Code[]
Capability: none
Drive: C
File: TestRuntimeRoot_2.txt
Path: \\Test\\ Overwriting
Type: SA
At Install: false
Version: 1,0,0
Signed: self
Code[]
129
A. Testsystem
Code[]
Capability: none
Drive: C
File: TestRuntimeRoot_3.txt
Path: \\Test\\ Overwriting
Type: SA
At Install: false
Version: 1,0,0
Signed: dev
Code[]
Capability: none
Drive: C
File: TestRuntimeRoot_4.txt
Path: \\Test\\ Overwriting
Type: SA
At Install: false
Version: 1,0,0
Signed: root
Code[]
SWInstaller:
MIME Test:
Capability: LocalServices NetworkServices ReadUserData WriteUserData UserEnvironment
Signed: none
MIME: FR,RI
Path: \\sys\\bin
File: Console_SWI.exe
Capability: LocalServices NetworkServices ReadUserData WriteUserData UserEnvironment
Signed: self
MIME: FR,RI
Path: \\sys\\bin
File: Console_SWI.exe
Capability: LocalServices NetworkServices ReadUserData WriteUserData UserEnvironment
Signed: dev
MIME: FR,RI
Path: \\sys\\bin
File: Console_SWI.exe
Capability: LocalServices NetworkServices ReadUserData WriteUserData UserEnvironment
Signed: root
MIME: FR,RI
Path: \\sys\\bin
File: Console_SWI.exe
130
Copy Files Test:
Capability: LocalServices NetworkServices
ReadUserData WriteUserData UserEnvironment
Drive: C
Path: \\sys\\bin
File: TestSWI.txt
Signed: none
Capability: LocalServices NetworkServices
ReadUserData WriteUserData UserEnvironment
Drive: C
Path: \\sys\\bin
File: Console_Copy.exe
Signed: none
Capability: LocalServices NetworkServices
ReadUserData WriteUserData UserEnvironment
Drive: C
Path: \\resource
File: TestSWI.txt
Signed: none
Capability: LocalServices NetworkServices
ReadUserData WriteUserData UserEnvironment
Drive: C
Path: \\resource
File: Console_Copy.exe
Signed: none
A.1. Definition der Testfälle
Capability: LocalServices NetworkServices
ReadUserData WriteUserData UserEnvironment
Drive: C
Path: \\private\\EHome
File: TestSWI.txt
Signed: none
Capability: LocalServices NetworkServices
ReadUserData WriteUserData UserEnvironment
Drive: C
Path: \\private\\EHome
File: Console_Copy.exe
Signed: none
Capability: LocalServices NetworkServices
ReadUserData WriteUserData UserEnvironment
Drive: C
Path: \\private
File: TestSWI.txt
Signed: none
Capability: LocalServices NetworkServices
ReadUserData WriteUserData UserEnvironment
Drive: C
Path: \\private
File: Console_Copy.exe
Signed: none
Capability: LocalServices NetworkServices
ReadUserData WriteUserData UserEnvironment
Drive: C
Path: \\sys\\bin
File: TestSWI.txt
Signed: self
Capability: LocalServices NetworkServices
ReadUserData WriteUserData UserEnvironment
Drive: C
Path: \\sys\\bin
File: Console_Copy.exe
Signed: self
Capability: LocalServices NetworkServices
ReadUserData WriteUserData UserEnvironment
Drive: C
Path: \\resource
File: TestSWI.txt
Signed: self
Capability: LocalServices NetworkServices
ReadUserData WriteUserData UserEnvironment
Drive: C
Path: \\resource
File: Console_Copy.exe
Signed: self
Capability: LocalServices NetworkServices
ReadUserData WriteUserData UserEnvironment
Drive: C
Path: \\private\\EHome
File: TestSWI.txt
Signed: self
Capability: LocalServices NetworkServices
ReadUserData WriteUserData UserEnvironment
Drive: C
Path: \\private\\EHome
File: Console_Copy.exe
Signed: self
Capability: LocalServices NetworkServices
ReadUserData WriteUserData UserEnvironment
Drive: C
Path: \\private
File: TestSWI.txt
Signed: self
Capability: LocalServices NetworkServices
ReadUserData WriteUserData UserEnvironment
Drive: C
Path: \\private
File: Console_Copy.exe
Signed: self
Capability: LocalServices NetworkServices
ReadUserData WriteUserData UserEnvironment
Drive: C
Path: \\sys\\bin
File: TestSWI.txt
Signed: dev
Capability: LocalServices NetworkServices
ReadUserData WriteUserData UserEnvironment
Drive: C
Path: \\sys\\bin
File: Console_Copy.exe
Signed: dev
Capability: LocalServices NetworkServices
ReadUserData WriteUserData UserEnvironment
Drive: C
Path: \\resource
File: TestSWI.txt
Signed: dev
Capability: LocalServices NetworkServices
ReadUserData WriteUserData UserEnvironment
Drive: C
Path: \\resource
File: Console_Copy.exe
Signed: dev
131
A. Testsystem
Capability: LocalServices NetworkServices
ReadUserData WriteUserData UserEnvironment
Drive: C
Path: \\private\\EHome
File: TestSWI.txt
Signed: dev
Capability: LocalServices NetworkServices
ReadUserData WriteUserData UserEnvironment
Drive: C
Path: \\private\\EHome
File: Console_Copy.exe
Signed: dev
Capability: LocalServices NetworkServices
ReadUserData WriteUserData UserEnvironment
Drive: C
Path: \\private
File: TestSWI.txt
Signed: dev
Capability: LocalServices NetworkServices
ReadUserData WriteUserData UserEnvironment
Drive: C
Path: \\private
File: Console_Copy.exe
Signed: dev
Capability: LocalServices NetworkServices
ReadUserData WriteUserData UserEnvironment
Drive: C
Path: \\sys\\bin
File: TestSWI.txt
Signed: root
Capability: LocalServices NetworkServices
ReadUserData WriteUserData UserEnvironment
Drive: C
Path: \\sys\\bin
File: Console_Copy.exe
Signed: root
Capability: LocalServices NetworkServices
ReadUserData WriteUserData UserEnvironment
Drive: C
Path: \\resource
File: TestSWI.txt
Signed: root
Capability: LocalServices NetworkServices
ReadUserData WriteUserData UserEnvironment
Drive: C
Path: \\resource
File: Console_Copy.exe
Signed: root
Capability: LocalServices NetworkServices
ReadUserData WriteUserData UserEnvironment
Drive: C
Path: \\private\\EHome
File: TestSWI.txt
Signed: root
Capability: LocalServices NetworkServices
ReadUserData WriteUserData UserEnvironment
Drive: C
Path: \\private\\EHome
File: Console_Copy.exe
Signed: root
Capability: LocalServices NetworkServices
ReadUserData WriteUserData UserEnvironment
Drive: C
Path: \\private
File: TestSWI.txt
Signed: root
Capability: LocalServices NetworkServices
ReadUserData WriteUserData UserEnvironment
Drive: C
Path: \\private
File: Console_Copy.exe
Signed: root
Caps Test:
Capability: LocalServices NetworkServices ReadUserData WriteUserData UserEnvironment
File: MIME: Signed: none
Capability: LocalServices NetworkServices ReadUserData WriteUserData UserEnvironment PowerMgmt
File: MIME: Signed: none
132
A.1. Definition der Testfälle
Capability: LocalServices NetworkServices ReadUserData WriteUserData UserEnvironment PowerMgmt
DiskAdmin
File: MIME: Signed: none
Capability: LocalServices NetworkServices ReadUserData WriteUserData UserEnvironment PowerMgmt
DiskAdmin TCB
File: MIME: Signed: none
Capability: LocalServices NetworkServices ReadUserData WriteUserData UserEnvironment
File: MIME: Signed: self
Capability: LocalServices NetworkServices ReadUserData WriteUserData UserEnvironment PowerMgmt
File: MIME: Signed: self
Capability: LocalServices NetworkServices ReadUserData WriteUserData UserEnvironment PowerMgmt
DiskAdmin
File: MIME: Signed: self
Capability: LocalServices NetworkServices ReadUserData WriteUserData UserEnvironment PowerMgmt
DiskAdmin TCB
File: MIME: Signed: self
Capability: LocalServices NetworkServices ReadUserData WriteUserData UserEnvironment
File: MIME: Signed: dev
Capability: LocalServices NetworkServices ReadUserData WriteUserData UserEnvironment PowerMgmt
File: MIME: Signed: dev
Capability: LocalServices NetworkServices ReadUserData WriteUserData UserEnvironment PowerMgmt
DiskAdmin
File: MIME: Signed: dev
Capability: LocalServices NetworkServices ReadUserData WriteUserData UserEnvironment PowerMgmt
DiskAdmin TCB
File: MIME: Signed: dev
133
A. Testsystem
Capability: LocalServices NetworkServices ReadUserData WriteUserData UserEnvironment
File: MIME: Signed: root
Capability: LocalServices NetworkServices ReadUserData WriteUserData UserEnvironment PowerMgmt
File: MIME: Signed: root
Capability: LocalServices NetworkServices ReadUserData WriteUserData UserEnvironment PowerMgmt
DiskAdmin
File: MIME: Signed: root
Capability: LocalServices NetworkServices ReadUserData WriteUserData UserEnvironment PowerMgmt
DiskAdmin TCB
File: MIME: Signed: root
Certificate:
Capability: Alle UserCaps
Signed: none
Capability: devCert Caps
Signed: none
Capability: Symbian Signed
Signed: none
Capability: Manu Caps
Signed: none
Capability: Alle UserCaps
Signed: self
Capability: devCert Caps
Signed: self
Capability: Symbian Signed
Signed: self
Capability: Manu Caps
Signed: self
Capability: Alle UserCaps
Signed: dev
Capability: devCert Caps
Signed: dev
Capability: Symbian Signed
Signed: dev
Capability: Manu Caps
Signed: dev
Capability: Alle UserCaps
Signed: root
Capability: devCert Caps
Signed: root
Capability: Symbian Signed
Signed: root
Capability: Manu Caps
Signed: root
Capability: Alle UserCaps
Signed: open signed
Capability: devCert Caps
Signed: open signed
Capability: Symbian Signed
Signed: open signed
Capability: Manu Caps
Signed: open signed
Capabilities:
134
Capability Regeln:
Capability: None
Signed: self
CapTests: none
Kind: dll
Capability: None
Signed: self
CapTests: none
Kind: exe
Capability: ReadUserData
Signed: self
CapTests: none
Kind: dll
Capability: None
Signed: dev
CapTests: none
Kind: exe
A.1. Definition der Testfälle
Capability: ReadUserData WriteUserData
Signed: self
CapTests: none
Kind: dll
Capability: None
Signed: root
CapTests: none
Kind: exe
Capability: WriteUserData
Signed: self
CapTests: none
Kind: dll
Capability: ReadUserData WriteUserData
Signed: self
CapTests: none
Kind: exe
Capability: WriteUserData
Signed: self
CapTests: none
Kind: dll
Capability: ReadUserData WriteUserData
Signed: root
CapTests: none
Kind: exe
Capability: WriteUserData ReadUserData
Signed: root
CapTests: none
Kind: dll
Capability: ReadUserData WriteUserData
Signed: self
CapTests: none
Kind: exe
Capability: none
Signed: root
CapTests: none
Kind: dll-1
Capability: none
Signed: root
CapTests: none
Kind: dll-3
Capability: none
Signed: self
CapTests: none
Kind: dll-2
Capability: none
Signed: self
CapTests: none
Kind: exe
Capability: WriteUserData ReadUserData SWEvent
ReadDeviceData DiskAdmin
Signed: root
CapTests: none
Kind: dll-1
Capability: WriteUserData ReadUserData SWEvent
ReadDeviceData DiskAdmin
Signed: root
CapTests: none
Kind: dll-3
Capability: WriteUserData ReadUserData SWEvent
ReadDeviceData DiskAdmin
Signed: root
CapTests: none
Kind: dll-2
Capability: WriteUserData ReadUserData SWEvent
ReadDeviceData DiskAdmin
Signed: root
CapTests: none
Kind: exe
Capability: WriteUserData ReadUserData SWEvent
ReadDeviceData DiskAdmin
Signed: root
CapTests: none
Kind: dll-1
Capability: WriteUserData ReadUserData SWEvent
ReadDeviceData DiskAdmin
Signed: root
CapTests: none
Kind: dll-3
Capability: WriteUserData ReadUserData SWEvent
ReadDeviceData
Signed: root
CapTests: none
Kind: dll-2
Capability: WriteUserData ReadUserData SWEvent
ReadDeviceData DiskAdmin
Signed: root
CapTests: none
Kind: exe
Capability: WriteUserData ReadUserData SWEvent
ReadDeviceData DiskAdmin
Signed: root
Capability: WriteUserData ReadUserData SWEvent
ReadDeviceData
Signed: root
135
A. Testsystem
CapTests: none
Kind: dll-1
Capability: WriteUserData ReadUserData SWEvent
ReadDeviceData
Signed: root
CapTests: none
Kind: dll-3
CapTests: none
Kind: dll-2
Capability: WriteUserData ReadUserData SWEvent
ReadDeviceData
Signed: root
CapTests: none
Kind: exe
Capability: WriteUserData ReadUserData SWEvent
Signed: root
CapTests: none
Kind: dll-1
Capability: WriteUserData ReadUserData SWEvent
ReadDeviceData DiskAdmin
Signed: root
CapTests: none
Kind: dll-2
Capability: WriteUserData ReadUserData SWEvent
ReadDeviceData
Signed: root
CapTests: none
Kind: exe
Capability: WriteUserData ReadUserData SWEvent
ReadDeviceData DiskAdmin
Signed: root
CapTests: none
Kind: dll-3
Einzelne Capabilities, Zertifikat ist abhängig von der Capability:
Capability: ReadUserData
Capability: None
Signed: self
Signed: self
CapTests: ReadUserData
CapTests: ReadUserData
Kind: exe
Kind: exe
136
Capability: WriteUserData
Signed: self
CapTests: WriteUserData
Kind: exe
Capability: None
Signed: self
CapTests: WriteUserData
Kind: exe
Capability: LocalServices
Signed: self
CapTests: LocalServices
Kind: exe
Capability: None
Signed: self
CapTests: LocalServices
Kind: exe
Capability: NetworkServices
Signed: self
CapTests: NetworkServices
Kind: exe
Capability: None
Signed: self
CapTests: NetworkServices
Kind: exe
Capability:
ReadDeviceData
Signed: dev
CapTests: LocalServices
Kind: exe
Capability: None
Signed: dev
CapTests: LocalServices
Kind: exe
Capability:
ReadDeviceData
Signed: root
CapTests:
ReadDeviceData
Kind: exe
Capability:
WriteDeviceData
Signed: dev
CapTests:
WriteDeviceData
Kind: exe
Capability: None
Signed: dev
CapTests:
WriteDeviceData
Kind: exe
Capability:
WriteDeviceData
Signed: root
CapTests:
WriteDeviceData
Kind: exe
Capability: None
Signed: root
CapTests: ReadDeviceData
Kind: exe
Capability: None
Signed: root
CapTests:
WriteDeviceData
Kind: exe
A.1. Definition der Testfälle
Capability: SWEvent
Signed: dev
CapTests: SWEvent
Kind: exe
Capability: None
Signed: dev
CapTests: SWEvent
Kind: exe
Capability: SWEvent
Signed: root
CapTests: SWEvent
Kind: exe
Capability: None
Signed: root
CapTests: SWEvent
Kind: exe
Capability:
NetworkControl
Signed: root
CapTests: NetworkControl
Kind: exe
Capability: None
Signed: root
CapTests:
NetworkControl
Kind: exe
Capability: DiskAdmin
Signed: root
CapTests: DiskAdmin
Kind: exe
Capability: None
Signed: root
CapTests: DiskAdmin
Kind: exe
Capability: Tcb
Signed: root
CapTests: Tcb
Kind: exe
Capability: None
Signed: root
CapTests: Tcb
Kind: exe
Capability: AllFiles
Signed: root
CapTests: AllFiles
Kind: exe
Capability: None
Signed: root
CapTests: AllFiles
Kind: exe
Client/Server (CapTests kann irgendwas sein):
Capability: None
Capability: ReadUserData WriteUserData
Signed: self
Signed: self
Kind: cs
Kind: cs
Capability: None
Signed: self
Kind: client
Capability: None
Signed: root
Kind: client
Capability: ReadUserData
Signed: self
Kind: server
Capability: ReadUserData
Signed: root
Kind: server
Capability: None
Signed: dev
Kind: client
Capability: ReadUserData
Signed: dev
Kind: server
Capability: ReadUserData
Signed: self
Kind: client
Capability: ReadUserData
Signed: root
Kind: client
Capability: None
Signed: self
Kind: server
Capability: None
Signed: root
Kind: server
Capability: ReadUserData
Signed: dev
Kind: client
Capability: None
Signed: dev
Kind: server
Capability: ReadUserData
Signed: self
Kind: client
Capability: None
Signed: dev
Kind: server
Capability: ReadUserData
Signed: dev
Kind: client
Capability: None
Signed: self
Kind: server
Capability: None
Signed: self
Kind: client
Capability: None
Signed: root
Kind: server
Capability: None
Signed: root
Kind: client
Capability: None
Signed: self
Kind: server
Capability: None
Capability: WriteUserData
Capability: None
Capability: WriteUserData
137
A. Testsystem
Signed: self
Kind: client
Signed: root
Kind: server
Signed: root
Kind: client
Signed: self
Kind: server
Integrity:
Capability: userCap
Capability: userCap
Capability: userCap
Capability: userCap
Signed: none
Signed: self
Signed: dev
Signed: root
File: File: File: File: Path: Path: Path: Path: Drive: Drive: Drive: Drive: Erstellen und den Hex-Code der SIS-Datei verändern und versuchen zu installieren.
Capability: userCap
Capability: userCap
Capability: userCap
Capability: userCap
Signed: none
Signed: self
Signed: dev
Signed: root
File: File: File: File: Path: Path: Path: Path: Drive: Drive: Drive: Drive: Installieren auf C:, - EXE auf hex ebene verändern-> Kann Anwendung noch gestartet werden?
- EXE, Capability verändern->Kann Anwendung noch gestartet werden?
Installieren auf C:, - EXE auf hex ebene verändern und hash anpassen (neu berechnen)-> Kann Anwendung
noch gestartet werden?
- EXE, Capability verändern und hash anpassen->Kann Anwendung noch gestartet
werden?
Installieren auf E:, - EXE auf hex ebene verändern-> Kann Anwendung noch gestartet werden?
- EXE, Capability verändern->Kann Anwendung noch gestartet werden?
Installieren auf E:, - EXE auf hex ebene verändern und hash anpassen (neu berechnen)-> Kann Anwendung
noch gestartet werden?
- EXE, Capability verändern und hash anpassen->Kann Anwendung noch gestartet
werden?
Capability: userCap
Capability: userCap
Capability: userCap
Capability: userCap
Signed: none
Signed: self
Signed: dev
Signed: root
File: TestIntegrity.txt
File: TestIntegrity.txt
File: TestIntegrity.txt
File: TestIntegrity.txt
Path: Path: Path: Path: Drive: C
Drive: C
Drive: C
Drive: C
Installieren auf C:,- Ressourcen verändern -> Kann Anwendung ausgeführt werden?
- Mitgelieferte Datei verändern -> Kann Anwendung noch ausgeführt werden?
- Lesedatei verändern -> Kann Anwendung ausgeführt werden?
Installieren auf E:,- Ressourcen verändern -> Kann Anwendung ausgeführt werden?
- Mitgelieferte Datei verändern -> Kann Anwendung noch ausgeführt werden?
- Lesedatei verändern -> Kann Anwendung ausgeführt werden?
Capability: userCap
Capability: userCap
Capability: userCap
Capability: userCap
Signed: none
Signed: self
Signed: dev
Signed: root
File: TestIntegrity.txt
File: TestIntegrity.txt
File: TestIntegrity.txt
File: TestIntegrity.txt
Path: Path: Path: Path: Drive: C
Drive: C
Drive: C
Drive: C
Type: PA
Type: PA
Type: PA
Type: PA
Auf Speicherkarte kopieren (mit Stub) und Anwendung installieren,
- EXE auf hex ebene verändern-> Kann Anwendung noch gestartet werden?
- EXE, Capability verändern->Kann Anwendung noch gestartet werden?
Auf Speicherkarte kopieren (mit Stub) und Anwendung installieren,
- EXE auf hex ebene verändern und hash anpassen -> Kann Anwendung noch gestartet
138
A.1. Definition der Testfälle
werden?
- EXE, Capability verändern und hash anpassen ->Kann Anwendung noch gestartet werden?
Auf Speicherkarte kopieren (ohne Stub),
- EXE auf hex ebene verändern und installieren mit stub-> Kann Anwendung noch gestartet
werden?
- EXE, Capability verändern und installieren mit stub ->Kann Anwendung noch gestartet
werden?
Auf Speicherkarte kopieren (ohne Stub),
- EXE auf hex ebene verändern und hash Anpassen und installieren mit stub -> Kann
Anwendung noch gestartet werden?
- EXE, Capability verändern und hash anpassen und installieren mit stub -> Kann
Anwendung noch gestartet werden?
Shared-Data:
Publish & Subscribe:
Capability: none
Signed: self
Kind: ps
ProcessType: main
ReadPolicy: ECapabilityAlwaysPass
WritePolicy: ECapabilityAlwaysPass
Capability: none
Signed: self
Kind: ps
ProcessType: simple
Capability: none
Signed: self
Kind: ps
ProcessType: main
ReadPolicy: ECapabilityAlwaysFail
WritePolicy: ECapabilityAlwaysFail
Capability: none
Signed: self
Kind: ps
ProcessType: simple
Capability: WriteUserData
Signed: self
Kind: ps
ProcessType: main
ReadPolicy: ECapabilityReadUserData
WritePolicy: ECapabilityWriteUserData
Capability: ReadUserData
Signed: self
Kind: ps
ProcessType: simple
Capability: none
Signed: self
Kind: ps
ProcessType: main
ReadPolicy: ECapabilityReadUserData
WritePolicy: ECapabilityWriteUserData
Capability: ReadUserData
Signed: self
Kind: ps
ProcessType: simple
Capability: WriteUserData
Signed: self
Kind: ps
ProcessType: main
ReadPolicy: ECapabilityReadUserData
WritePolicy: ECapabilityWriteUserData
Capability: none
Signed: self
Kind: ps
ProcessType: simple
Capability: ReadUserData WriteUserData
Signed: self
Kind: ps
ProcessType: main
Capability: ReadUserData WriteUserData
Signed: self
Kind: ps
ProcessType: simple
139
A. Testsystem
ReadPolicy: ECapabilityAlwaysFail
WritePolicy: ECapabilityAlwaysFail
Capability: ReadUserData WriteUserData
Signed: self
Kind: ps
ProcessType: main
ReadPolicy: ECapabilityReadUserData
WritePolicy: ECapabilityWriteUserData
140
Capability: ReadUserData WriteUserData
Signed: self
Kind: ps
ProcessType: simple
File Handle:
Capability: none
Signed: self
Kind: fh
ProcessType: main
Capability: none
Signed: self
Kind: fh
ProcessType: simple
Capability: ReadUserData WriteUserData
Signed: self
Kind: fh
ProcessType: main
Capability: ReadUserData WriteUserData
Signed: self
Kind: fh
ProcessType: simple
Capability: none
Signed: self
Kind: fh
ProcessType: main
Capability: ReadUserData WriteUserData
Signed: self
Kind: fh
ProcessType: simple
Capability: ReadUserData WriteUserData
Signed: self
Kind: fh
ProcessType: main
Capability: none
Signed: self
Kind: fh
ProcessType: simple
Data Chunk:
Capability: none
Signed: self
Kind: chunk
ProcessType: main
Capability: none
Signed: self
Kind: chunk
ProcessType: simple
Capability: ReadUserData WriteUserData
Signed: self
Kind: chunk
ProcessType: main
Capability: ReadUserData WriteUserData
Signed: self
Kind: chunk
ProcessType: simple
Capability: none
Signed: self
Kind: chunk
ProcessType: main
Capability: ReadUserData WriteUserData
Signed: self
Kind: chunk
ProcessType: simple
Capability: ReadUserData WriteUserData
Signed: self
Kind: chunk
ProcessType: main
Capability: none
Signed: self
Kind: chunk
ProcessType: simple
A.1. Definition der Testfälle
IDs:
Capability: UserCaps
Capability: UserCaps
Signed: none
Signed: self
UID2: 100039CE
UID2: 100039CE
UID3: E1CA1D5D
UID3: E1BA1D5D
SID: E1CA1D5D
SID: E1BA1D5D
VID: 0
VID: 0
pUID: E1CA1D5D
pUID: E1BA1D5D
Standard Testbereich, UID3=SID=pUID
Capability: UserCaps
Signed: dev
UID2: 100039CE
UID3: E1CA1D5F
SID: E1CA1D5F
VID: 0
pUID: E1CA1D5F
Capability: UserCaps
Signed: root
UID2: 100039CE
UID3: E2CA1D5F
SID: E2CA1D5F
VID: 0
pUID: E2CA1D5F
Capability: UserCaps
Capability: UserCaps
Signed: none
Signed: self
UID2: 100039CE
UID2: 100039CE
UID3: E1CC1D5D
UID3: E1BA1D51
SID: E1CC1D5D
SID: E1BA1D51
VID: 0
VID: 0
pUID: E1C21D5D
pUID: E1BA1D52
Standard Testbereich, UID3=SID!=pUID
Capability: UserCaps
Signed: dev
UID2: 100039CE
UID3: E1CA1D53
SID: E1CA1D53
VID: 0
pUID: E1CA1D54
Capability: UserCaps
Signed: root
UID2: 100039CE
UID3: E2CA1D55
SID: E2CA1D55
VID: 0
pUID: E2CA1D56
Capability: UserCaps
Capability: UserCaps
Signed: none
Signed: self
UID2: 100039CE
UID2: 100039CE
UID3: E1CC1D1D
UID3: E1BA1DA1
SID: E1CC1D2D
SID: E1BA1DB1
VID: 0
VID: 0
pUID: E1C21D3D
pUID: E1BA1DC2
Standard Testbereich, UID3!=SID!=pUID
Capability: UserCaps
Signed: dev
UID2: 100039CE
UID3: E1CA1DA3
SID: E1CA1DB3
VID: 0
pUID: E1CA1DC4
Capability: UserCaps
Signed: root
UID2: 100039CE
UID3: E2CA1DA5
SID: E2CA1DB5
VID: 0
pUID: E2CA1DC6
Capability: UserCaps
Capability: UserCaps
Signed: none
Signed: self
UID2: 100039CE
UID2: 100039CE
UID3: E1CA1D59
UID3: E1BA1D58
SID: E1CA1D59
SID: E1BA1D58
VID: 7A234567
VID: 7A345678
pUID: E1CA1D59
pUID: E1BA1D58
Standard Testbereich, UID3=SID=pUID mit VID
Capability: UserCaps
Signed: dev
UID2: 100039CE
UID3: E1CA1D57
SID: E1CA1D57
VID: 7A456789
pUID: E1CA1D57
Capability: UserCaps
Signed: root
UID2: 100039CE
UID3: E2CA1D56
SID: E2CA1D56
VID: 7A567890
pUID: E2CA1D56
Capability: UserCaps
Capability: UserCaps
Signed: none
Signed: self
UID2: 100039CE
UID2: 100039CE
UID3: 2AA12345
UID3: 2AA23456
SID: 2AA12345
SID: 2AA23456
VID: 0
VID: 0
pUID: 2AA12345
pUID: 2AA23456
Geschützter Bereich, UID3=SID=pUID
Capability: UserCaps
Signed: dev
UID2: 100039CE
UID3: 2AA34567
SID: 2AA34567
VID: 0
pUID: 2AA34567
Capability: UserCaps
Signed: root
UID2: 100039CE
UID3: 2AA45678
SID: 2AA45678
VID: 0
pUID: 2AA45678
Capability: UserCaps
Capability: UserCaps
Signed: none
Signed: self
UID2: 100039CE
UID2: 100039CE
UID3: 2AB12345
UID3: 2AB23456
SID: 2AB12345
SID: 2AB23456
VID: 0
VID: 0
pUID: 2AB12346
pUID: 2AB23457
Geschützter Bereich, UID3=SID!=pUID
Capability: UserCaps
Signed: dev
UID2: 100039CE
UID3: 2AB34568
SID: 2AB34568
VID: 0
pUID: 2AB34569
Capability: UserCaps
Signed: root
UID2: 100039CE
UID3: 2AB45679
SID: 2AB45679
VID: 0
pUID: 2AB45680
141
A. Testsystem
Capability: UserCaps
Capability: UserCaps
Signed: none
Signed: self
UID2: 100039CE
UID2: 100039CE
UID3: 2AC12345
UID3: 2AC23456
SID: 2AC12346
SID: 2AC23457
VID: 0
VID: 0
pUID: 2AC12347
pUID: 2AC23458
Geschützter Bereich, UID3!=SID!=pUID
Capability: UserCaps
Signed: dev
UID2: 100039CE
UID3: 2AC34567
SID: 2AC34568
VID: 0
pUID: 2AC34569
Capability: UserCaps
Signed: root
UID2: 100039CE
UID3: 2AC45678
SID: 2AC45679
VID: 0
pUID: 2AC45670
Capability: UserCaps
Capability: UserCaps
Signed: none
Signed: self
UID2: 100039CE
UID2: 100039CE
UID3: 2AD12345
UID3: 2AD23456
SID: 2AD12345
SID: 2AD23456
VID: 7B234567
VID: 7B345678
pUID: 2AD12345
pUID: 2AD23456
Geschützter Bereich, UID3=SID=pUID mit VID
Capability: UserCaps
Signed: dev
UID2: 100039CE
UID3: 2AD34567
SID: 2AD34567
VID: 7B456789
pUID: 2AD34567
Capability: UserCaps
Signed: root
UID2: 100039CE
UID3: 2AD45678
SID: 2AD45678
VID: 7B567890
pUID: 2AD45678
API:
Capability: ReadUserData
Class: RFile
Method: Open
ExpectedOutputValue: -1
Parameter: session,_L(“C:\\Data\\TestAPI.txt”),EFileWrite
PrepareCode[
RFs session;
session.Connect();
]
Capability: ReadUserData
Class: RFile
Method: Create
ExpectedOutputValue: -46
Parameter: session,_L(“C:\\sys\\bin\\TestAPI.txt”),EFileRead
PrepareCode[
RFs session;
session.Connect();
]
Capability: ReadUserData
Class: RFile
Method: Create
ExpectedOutputValue: 0
Parameter: session,_L(“C:\\TestAPI.txt”),EFileRead
PrepareCode[
RFs session;
session.Connect();
]
142
A.2. Regeln und Hinweise für die Konfigurationsdatei
A.2. Regeln und Hinweise für die Konfigurationsdatei
• Der Pfad \\private wird durch \\private\\<ownSID> ersetzt.
• Für das Schreiben in ein anderes privates Verzeichnis, einfach \\private\\<otherSID>
angeben.
• Beim Eclipsing/Overwriting darf pro Laufwerk nur ein Pfad und eine Datei angegeben
werden.
• Beim Data Caging gilt obige Restriktion nicht.
• Für einen Testfall kann nur ein Zertifikat benutzt werden.
• Ein Standard SA-Package, das nicht als Update vorgesehen ist, bekommt die Versionsnummer 1,0,0.
• Pro Testfall kann nur ein Package-Typ definiert werden.
• Es darf nur ein Update definiert werden (SA, PU, SP), wenn zuvor schon eine SA-Anwendung
mit der Versionsnummer 1,0,0 installiert wurde.
• Die einzelnen Capability-Tests (CapTests) heißen genauso wie ihre Capabilities.
• Wird eine dll in einem Testfall definiert, so muss eine exe folgen, die dann zur dll
gelinkt wird. Werden hingegen mehrere DLL hintereinander definiert, so muss anschließend auch eine exe definiert werden und die einzelnen dll werden ineinander gelinkt.
• Um Testfelder zu deklarieren, müssen sie am Anfang der Konfigurationsdatei hinter das
Schlüsselwort Test Fields, durch ein Komma getrennt, spezifiziert werden.
• Shared-Data
– Der main ProcessType muss immer vor dem simple ProcessType definiert werden.
– Zurzeit wird pro ProcessType main nur ein ProcessType simple unterstützt.
– Die einzelnen Capabilities für die Policies werden durch das Präfix ECapability
gefolgt von der eigentlichen Capability definiert. Diese Definitionen werden durch
eine Komma ohne Leerzeichen voneinander getrennt. Darüber hinaus gibt es noch
die besonderen Policies ECapabilityAlwaysPass und ECapabilityAlwaysFail.
– Read/Write Policy nur relevant bei Publish & Subscribe.
143
A. Testsystem
A.3. Test SWIPolicies
Die hier dargestellten SWIPolicies wurden für die SWInstaller- und Certificate-Testfälle benutzt.
A.3.1. SWInstaller
Quelltext A.1: Developer SWIPolicy
MandatePolicies = false
Mandate C od e Si g n in g Ex t e ns i on = false
Oid = 1.2.3.4.5.6
DRMEnabled = true
DRMIntent = 3
OcspMandatory = false
OcspEnabled = true
AllowGr a nt Us er C ap ab il i ti es = true
AllowOrphanedOverwrite = true
UserCapabilities = NetworkServices LocalServices UserEnvironment
ReadUserData WriteUserData Location PowerMgmt
AllowPackagePropagate = true
SISComp a t i b l e I f N o T a r g e t D e v i c e s = false
RunWaitTimeoutSeconds = 600
AllowRu n On In st a ll Un in s ta ll = true
De le te P r e i n s t a l l e d F i l e s O n U n i n s t a l l = true
Quelltext A.2: Symbian Signed SWIPolicy
MandatePolicies = false
Mandate C od e Si g n in g Ex t e ns i on = false
Oid = 1.2.3.4.5.6
DRMEnabled = true
DRMIntent = 3
OcspMandatory = false
OcspEnabled = true
AllowGr a nt Us er C ap ab il i ti es = true
AllowOrphanedOverwrite = true
UserCapabilities = NetworkServices LocalServices UserEnvironment
ReadUserData WriteUserData Location PowerMgmt
DiskAdmin
AllowPackagePropagate = true
SISComp a t i b l e I f N o T a r g e t D e v i c e s = false
RunWaitTimeoutSeconds = 600
AllowRu n On In st a ll Un in s ta ll = false
De le te P r e i n s t a l l e d F i l e s O n U n i n s t a l l = true
Quelltext A.3: Device Manufacturer SWIPolicy
AllowUnsigned = true
144
A.3. Test SWIPolicies
MandatePolicies = false
MandateCod e S ig n in g E xt e ns i on = false
Oid = 1.2.3.4.5.6
DRMEnabled = true
DRMIntent = 3
OcspMandatory = false
OcspEnabled = true
AllowGrant Us er C ap ab il i ti es = true
AllowOrphanedOverwrite = true
UserCapabilities = NetworkServices LocalServices UserEnvironment
ReadUserData WriteUserData Location PowerMgmt
DiskAdmin TCB
AllowPackagePropagate = true
SISCompa t i b l e I f N o T a r g e t D e v i c e s = false
RunWaitTimeoutSeconds = 600
AllowRunOn In st a ll Un in s ta ll = false
De le te Pr e i n s t a l l e d F i l e s O n U n i n s t a l l = true
A.3.2. Certificate
Quelltext A.4: Certificate SWIPolicy 1
AllowUnsigned = true
MandatePolicies = true
MandateCod e S ig n in g E xt e ns i on = false
Oid = 1.2.3.4.5.6
DRMEnabled = true
DRMIntent = 3
OcspMandatory = false
OcspEnabled = true
AllowGrant Us er C ap ab il i ti es = true
AllowOrphanedOverwrite = true
UserCapabilities = NetworkServices LocalServices UserEnvironment
ReadUserData WriteUserData Location
AllowPackagePropagate = true
SISCompa t i b l e I f N o T a r g e t D e v i c e s = false
RunWaitTimeoutSeconds = 600
AllowRunOn In st a ll Un in s ta ll = false
De le te Pr e i n s t a l l e d F i l e s O n U n i n s t a l l = true
Quelltext A.5: Certificate SWIPolicy 2
AllowUnsigned = false
MandatePolicies = true
MandateCod e S ig n in g E xt e ns i on = true
Oid = 1.2.3.4.5.6
DRMEnabled = true
DRMIntent = 3
OcspMandatory = false
145
A. Testsystem
OcspEnabled = true
AllowGr a nt Us er C ap ab il i ti es = true
AllowOrphanedOverwrite = true
UserCapabilities = NetworkServices LocalServices UserEnvironment
ReadUserData WriteUserData Location
AllowPackagePropagate = true
SISComp a t i b l e I f N o T a r g e t D e v i c e s = false
RunWaitTimeoutSeconds = 600
AllowRu n On In st a ll Un in s ta ll = false
De le te P r e i n s t a l l e d F i l e s O n U n i n s t a l l = true
Quelltext A.6: Certificate SWIPolicy 3
AllowUnsigned = false
MandatePolicies = false
Mandate C od e Si g n in g Ex t e ns i on = false
Oid = 1.2.3.4.5.6
DRMEnabled = true
DRMIntent = 3
OcspMandatory = true
OcspEnabled = true
AllowGr a nt Us er C ap ab il i ti es = true
AllowOrphanedOverwrite = true
UserCapabilities = NetworkServices LocalServices UserEnvironment
ReadUserData WriteUserData Location
AllowPackagePropagate = true
SISComp a t i b l e I f N o T a r g e t D e v i c e s = false
RunWaitTimeoutSeconds = 600
AllowRu n On In st a ll Un in s ta ll = false
De le te P r e i n s t a l l e d F i l e s O n U n i n s t a l l = true
146
B. CD-Inhalt
Dieser Abschnitt beschreibt den Inhalt der beigefügten CD.
B.1. Quellcode
In diesem Verzeichnis befindet sich der Quellcode des Testsystems und der einzelnen SymbianTestanwendungen.
\ Quellcode
-\ Batch
-\ Perl
-\ SymbianC ++
B.2. Testsystem
Dieses Verzeichnis beinhaltet die Protokolle der Testläufe und deren Auswertung. Darüber
hinaus enthält dieses Verzeichnis die Konfigurationsdateien und die kompilierten Testfälle für
die jeweilige Plattform.
\ Testsystem
-\ Ergebnisse
-\ Auswertung
-\ E61
-\ E90
-\ Emu
-\ N81_8GB
-\ N95
-\ Standard SWIPolicies
-\ Tests
-\ API
-\ Capabilities
-\ Data - Caging
-\ File - Eclipsing
-\ File - Overwriting
-\ IDs
-\ Integrity
-\ Shared - Data
-\ SWInstaller
147
B. CD-Inhalt
B.3. Privilegien erhöhen
In diesem Verzeichnis sind alle Anwendungen und Skripte enthalten, die im Kapitel 7 beschrieben wurden.
\ Privilegien_erhöhen
-\ ChangePolicyPath
-\ hack_perms
-\ ROMPatcher
-\ root - Certificate
148
Literaturverzeichnis
[1] Craig Heath. Symbian OS Platform Security. Symbian Press John Wiley & Sons, Ltd,
2006.
[2] Jane Sales. Symbian OS Internals - Real-time Kernel Programming. Symbian Press John
Wiley & Sons, Ltd, 2005.
[3] Symbian. How do i get my symbian os application signed? Technical Report Version 2.4,
Symbian Software Ltd.
[4] Symbian. Symbian Signed Test Criteria. Technical Report Version 3.0.2, Symbian Software Ltd., 2008.
[5] Michael Becher and Felix C. Freiling. Towards Dynamic Malware Analysis to Increase
Mobile Device Security. In Proc. of SICHERHEIT, 2008.
[6] Canalys. Research release 2008/021. Technical report, canalys.com ltd., 2008.
[7] R. Shirey. Internet Security Glossary. RFC 2828 (Informational), May 2000. Obsoleted
by RFC 4949.
[8] M. Myers, R. Ankney, A. Malpani, S. Galperin, and C. Adams. X.509 Internet Public
Key Infrastructure Online Certificate Status Protocol - OCSP. RFC 2560 (Proposed
Standard), June 1999.
[9] James P. Anderson. Computer security technology planning study. Electronic Systems
Division, Air Force Systems, Vol. II(ESD-TR-73-51), October 1972.
[10] Jerome H. Saltzer and Michael D. Schroeder. The protection of information in computer
systems. Proceedings of the IEEE, 63, Issue: 9:1278– 1308, Sept. 1975.
[11] Jack B. Dennis and Earl C. Van Horn. Programming semantics for multiprogrammed
computations. Commun. ACM, 9(3):143–155, 1966.
[12] Black box testing.
Website.
http://issco-www.unige.ch/ewg95/node82.html\
#SECTION00732000000000000000. Accessed: 03.09.2008.
[13] R. Housley, W. Polk, W. Ford, and D. Solo. Internet X.509 Public Key Infrastructure
Certificate and Certificate Revocation List (CRL) Profile. RFC 3280 (Proposed Standard), April 2002. Obsoleted by RFC 5280, updated by RFCs 4325, 4630.
[14] Symbian. What Symbian OS Development Kit Do I Need? Technical Report Version
1.7, Symbian Software Ltd. https://developer.symbian.com/wiki/pages/viewpage.
action?pageId=1859. Accessed: 03.09.2008.
149
Literaturverzeichnis
[15] Symbian.
Symbian OS Changes for Platform Security.
Website.
http:
//www.symbian.com/developer/techlib/v9.2docs/doc_source/guide/platsecsdk/
migration.html\#guide.platsec.migration. Accessed: 02.09.2008.
[16] Symbian Software Ltd. SWIPOLICY.INI - Software installer configuration version
9.2. Website. http://www.symbian.com/developer/techlib/v9.2docs/doc_source/
ToolsAndUtilities/Installing-ref/swipolicy.html. Accessed: 05.09.2008.
[17] Symbian Software Ltd. SWIPOLICY.INI - Software installer configuration version 9.3.
Website.
http://www.symbian.com/developer/techlib/v9.3docs/doc_
source/ToolsAndUtilities93/Installing-ref/swipolicy.html\#Installing-ref.
swipolicy.ini-syntax. Accessed: 05.09.2008.
[18] Symbian.
Functions listed by capability - Symbian Version 9.1 API.
Website.
http://www.symbian.com/developer/techlib/v9.2docs/doc_source/guide/
platsecsdk/GT_9.1/FunctionsByCapablity.html. Accessed: 03.09.2008.
[19] Symbian.
Functions listed by capability - Symbian Version 9.2 API.
Website.
http://www.symbian.com/developer/techlib/v9.2docs/doc_source/guide/
platsecsdk/GT_9.2/FunctionsByCapablity.html. Accessed: 03.09.2008.
[20] Nokia Forum - Developer Community Wiki. File logger. Website. http://wiki.forum.
nokia.com/index.php/File_logger. Accessed: 02.09.2008.
[21] AutoInstaller v1.0 - A New Full Automatic Installer for S60.
Website.
http://www.symbian-freak.com/downloads/freeware/cat_s60_3rd/descriptions/
systools/autoinstaller__new_full_automatic_installer.htm.
Accessed:
31.08.2008.
[22] Jukka Silvennoinen. Y-Browser: Free filemanager for symbian smartphones. Website.
http://www.drjukka.com/YBrowser.html. Accessed: 31.08.2008.
[23] Maël Hörz. HxD - Freeware Hex Editor and Disk Editor. Website. http://www.
mh-nexus.de/hxd/. Accessed: 31.08.2008.
[24] X-Ways Software Technology AG. WinHex: Software für Computerforensik und Datenrettung, Hex-Editor und Disk-Editor. Website. http://www.x-ways.net/winhex/
index-d.html. Accessed: 31.08.2008.
[25] Symbian. Symbian Phones. Website. http://www.symbian.com/phones/index.html
Accessed: 31.08.2008.
[26] D. Eastlake 3rd and P. Jones. US Secure Hash Algorithm 1 (SHA1). RFC 3174 (Informational), September 2001. Updated by RFC 4634.
[27] Nokia Research Center. Python for S60. Website. http://opensource.nokia.com/
projects/pythonfors60/. Accessed: 02.09.2008.
[28] Symbian.
Functions listed by capability - Symbian Version 9.3 API.
Website.
http://www.symbian.com/developer/techlib/v9.2docs/doc_source/guide/
platsecsdk/GT_9.3/FunctionsByCapablity.html. Accessed: 03.09.2008.
150
Literaturverzeichnis
[29] Symbaali Blog. Goodbye S60 Platform Security, Hello CAPABILITIES! . Website. http://www.symbaali.info/2007/10/goodbye-s60-platform-security-hello.
html. Accessed: 02.09.2008.
[30] Symbaali Blog. Exploring S60 with AllFiles. Website. http://www.symbaali.info/
2007/10/exploring-s60-with-allfiles.html. Accessed: 01.09.2008.
[31] Symbian Freak. Goodbye S60 Platform Security!?? - Hack to override permissions?!! Website. http://www.symbian-freak.com/news/008/03/s60_3rd_ed_has_been_hacked.
htm. Accessed: 01.09.2008.
[32] Part-Time Phone Reviewer. Symbian 9.2 has been hacked! Guide/Tutorial. Website. http://www.finestfones.com/2008/03/symbian-92-has-been-hacked.html. Accessed: 02.09.2008.
[33] Symbian Freak.
Mission Accomplished S60 3rd Edition FP1 hacked!!
Website. http://www.symbian-freak.com/news/008/03/s60_3rd_ed_feature_pack_1_has_
been_hacked.htm. Accessed: 02.09.2008.
[34] iPmart Forum. How to install ANY applications using platform hack! Website. http:
//www.ipmart-forum.com/showthread.php?t=247062. Accessed: 02.09.2008.
[35] Symbian Freak. ROMPatcher - S60 finally and truly open to anything! Website.
http://www.symbian-freak.com/downloads/freeware/cat_s60_3rd/descriptions/
systools/rompatcher_for_s60_3rd_ed_devices.htm. Accessed: 02.09.2008.
[36] Part-Time Phone Reviewer.
New hack available; E90, 6120c and N953 users rejoice!
Website.
http://www.finestfones.com/2008/05/
new-hack-available-e90-6120c-and-n95-3.html. Accessed: 02.09.2008.
[37] Part-Time Phone Reviewer. Nokia has blocked the hack in the E90. Website. http:
//www.finestfones.com/2008/05/nokia-has-blocked-hack-in-e90.html. Accessed:
02.09.2008.
[38] Orange SPV.
Website.
http://web.archive.org/web/20080129215346/http://
developer.orangews.com/orgspv/comdefq.aspx. Accessed: 07.09.2008.
[39] The Metasploit Blog. Cracking the iPhone (part 1) . Website. http://blog.metasploit.
com/2007/10/cracking-iphone-part-1.html. Accessed: 01.09.2008.
[40] AppSnapp Installer for 1.1.1. Website. http://jailbreakme.com/. Accessed:25.08.2008.
[41] Heise
online.
Apple-Chef
kündigt
Entwicklungsumgebung
für
iPhone
an.
Website.
http://www.heise.de/newsticker/
Apple-Chef-kuendigt-Entwicklungsumgebung-fuer-iPhone-an--/meldung/97556.
Accessed: 01.09.2008.
[42] Symbian Foundation.
03.09.2008.
Website.
http://www.symbianfoundation.org/. Accessed:
[43] Eclipse Foundation, Inc. Eclipse Public License - v 1.0. Website. http://www.eclipse.
org/legal/epl-v10.html. Accessed: 26.08.2008.
[44] Symbian. Symbian OS Version 9.4. Website. http://www.symbian.com/files/rx/
file9468.pdf. Accessed: 07.09.2008.
151
Literaturverzeichnis
[45] Symbian Foundation. Symbian Foundation - Mobile software set free, Juni 2008. White
paper.
[46] RCR Wireless News. A conversation with Nokia’s Mary McDowell, chief development officer. Website. http://www.rcrwireless.com/apps/pbcs.dll/article?AID=
/20080703/SUB/290280005/1015/FREE. Accessed: 01.09.2008.
152

Documentos relacionados