Hochschule Luzern Technik & Architektur Informatikprojekt | TA.PAW I.FS2012 Aspects of Privacy-Preserving Toll Pricing Eine Projektarbeit von Christoph Moser und Thomas Galliker Horw, 8. Februar 2012 Projekt Aspects of Privacy-Preserving Toll Pricing Dokument Report Schule Hochschule Luzern, Technik & Architektur Modul TA.PAWI.FS2012 Projektteam Galliker Thomas Studiengang Informatik (BB) Panorama 6123 Geiss Tel. +41 79 504 80 70 [email protected] Dozent Experte Dr. Marc Pouly Dr. Josef F. Bürgler Letzte Änderung 11. Februar 2012, 12:00:00 Uhr Moser Christoph Studiengang Informatik (VZ) Zugerbergstrasse 41 6314 Unterägeri Tel. +41 79 785 19 07 [email protected] Selbständigkeitserklärung Hiermit erklären wir, dass die vorliegende Arbeit selbstständig angefertigt und keine anderen als die angegebenen Hilfsmittel verwendet wurden. Sämtliche verwendeten Textausschnitte, Zitate oder Inhalte anderer Verfasser wurden ausdrücklich als solche gekennzeichnet. Horw, 8. Februar 2012 Christoph Moser Thomas Galliker Änderungsprotokoll Version 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1.0 1.1 1.2 1.3 Datum 03.01.2012 03.01.2012 15.01.2012 20.01.2012 23.01.2012 24.01.2012 28.01.2012 03.02.2012 04.02.2012 05.02.2012 05.02.2012 06.02.2012 07.02.2012 Autor moc moc moc gat gat/moc moc gat moc moc moc gat gat/moc gat/moc Beschreibung Initialversion von Vorlage erstellt Einleitung erstellt Kryptographische Grundlagen beschrieben Dokumentation Design-Entscheide GPS Heuristik Bereinigung des Outlines, Kundenanforderungen ergänzt Kundenanforderungen überarbeitet Design-Entscheide dokumentiert Kryptographische Grundlagen überarbeitet Prozesse und Abläufe überarbeitet Vorteile und Schwachstellen dokumentiert Gefahren Privatsphäre, Kommunikation, Serialisierung Korrekturen und Ergänzungen Bereit für Abgabe Abstract Auf den europäischen Strassen gibt es heute beinahe so viele verschiedene Ansätze zur Strassenfinanzierung, wie es in Europa souveräne Staaten gibt. Europa hat ein grosses Interesse, dieses sogenannte „Road Pricing“ flächendeckend einzuführen und zwischen allen Staaten zu harmonisieren. Die EU möchte mit neuen Systemen das Verkehrs- und Staumanagement optimieren, die bestehende Infrastruktur effizienter nutzen und damit indirekt den CO2 Ausstoss reduzieren. Auch in der Schweiz gibt es Bestrebungen, ein elektronisches Road Pricing System einzuführen. Ein dynamisches Road Pricing Modell für alle Strassenbenutzer könnte dafür sorgen, dass die Infrastrukturkosten verhältnismässig auf die Verbraucher umgelegt werden. Technisch realisierbare Lösungen für ein elektronisches Road Pricing System gibt es offensichtlich viele. Leider stehen diese Lösungen oft im Konflikt mit dem Schutz der Privatsphäre des Benutzers, da diese oft vorsehen, Wegpfade oder andere sensible Informationen an eine Strassenverwaltung zu senden, um die Benutzungskosten abzurechnen. Das vorliegende Projekt befasst sich mit der Umsetzung eines Prototyps für ein Road Pricing System, welches die Privatsphäre des Benutzers kompromisslos schützt. Im Mittelpunkt der Analysen steht die Implementierung kryptographischer Methoden zur Verhinderung von Missbrauch ohne dabei auf aufgezeichnete Wegpfade zurückgreifen zu müssen. Ein spezielles Signaturverfahren stellt sicher, dass die für die Abrechnung von Strassenkilometern verwendeten Preise korrekt sind, während ein ChallengeResponse Verfahren mit statistischen Mitteln sicherstellt, dass allfällige Manipulationen von aufgezeichneten Informationen aufgedeckt werden kann. Zum Einsatz kommen hierbei kryptographische Commitments zur Sicherung der Unveränderbarkeit von bestätigten Informationen sowie ein Zero-Knowledge Proof Schema zur Verifikation des Besitzes von Informationen, ohne dabei die Information an sich offenzulegen. Resultierend kann gesagt werden, dass solche Privacy-Preserving Electronic Toll Pricing (PrETP) Systeme eine reelle Chance haben, umgesetzt zu werden. Das vorliegende Projektsystem demonstriert, dass die vorgeschlagenen kryptographischen Algorithmen auf kostengünstigen Geräten effizient und sicher implementiert werden können. Inhalt 1 Einleitung Road Pricing ............................................................................................... 7 1.1 1.2 1.3 1.4 1.5 2 Kundenanforderungen............................................................................................... 10 2.1 2.2 3 GPS Lokalisierung ................................................................................................................. 42 Preisberechnungsfunktion ...................................................................................................... 43 Updates von Karten- und Preisinformationen.......................................................................... 46 Persistenz .............................................................................................................................. 48 Kommunikationsschicht.......................................................................................................... 48 Environment-Anforderungen ..................................................................................... 51 Diskussion ................................................................................................................. 52 7.1 7.2 7.3 7.4 8 9 Systemübersicht .................................................................................................................... 23 Komponentenübersicht .......................................................................................................... 24 Klassenübersicht .................................................................................................................... 25 Prozesse und Abläufe ............................................................................................................ 30 Datenstrukturen ..................................................................................................................... 39 Spezifikation der Schnittstellen ............................................................................................... 41 Design-Entscheide .................................................................................................... 42 5.1 5.2 5.3 5.4 5.5 6 7 Asymmetrische Kryptographie................................................................................................ 16 Message Digest Verfahren ..................................................................................................... 20 Commitment Schemas ........................................................................................................... 20 Zero-Knowledge Proof of Knowledge ..................................................................................... 22 Softwarearchitektur ................................................................................................... 23 4.1 4.2 4.3 4.4 4.5 4.6 5 Anforderungslisten ................................................................................................................. 10 Anwendungsfälle (Use Cases) ............................................................................................... 13 Theoretische Grundlagen der Kryptographie............................................................. 16 3.1 3.2 3.3 3.4 4 Aktuelle Situation ..................................................................................................................... 7 Vor- und Nachteile des aktuellen Strassenbenutzungsgebühr .................................................. 7 Road Pricing in der EU............................................................................................................. 8 Bestrebungen neues Road Pricing in der Schweiz.................................................................... 8 Gefahren von neuen Road Pricing Technologien ...................................................................... 9 Praktische Umsetzung von PrETP.......................................................................................... 52 Vorteile .................................................................................................................................. 53 Schwierigkeiten einer praktischen Umsetzungen .................................................................... 54 Mögliche Weiterentwicklungen ............................................................................................... 58 Quellen ...................................................................................................................... 59 APPENDIX ................................................................................................................ 62 9.1 9.2 Hinweise zu SQLite3 für Android ............................................................................................ 62 GPS Lokationen simulieren .................................................................................................... 62 Report | Einleitung Road Pricing Hochschule Luzern Technik & Architektur Abbildungsverzeichnis Abbildung 1: Mautstelle St.Michael in Österreich [30] .................................................................................. 8 Abbildung 2: Use Case Diagramm ............................................................................................................ 13 Abbildung 3: Schematische Darstellung der asymmetrischen Verschlüsslung mit RSA [7] ......................... 17 Abbildung 4: Schematische Darstellung zum digitalen Signieren. Quelle: [35] ............................................ 19 Abbildung 5: Beispiele eines Münzwurfes per Telefon ............................................................................... 21 Abbildung 6: Elektronische Wahlen ........................................................................................................... 22 Abbildung 7: Höhle von Ali Baba [26] ........................................................................................................ 22 Abbildung 8: Systemübersicht ................................................................................................................... 23 Abbildung 9: Komponentendiagramm........................................................................................................ 24 Abbildung 10: Klassen der Komponente tspservice ..................................................................................... 25 Abbildung 11: Klassen der Komponente obuclient ....................................................................................... 27 Abbildung 12: Zustandsdiagramm der Prozesse seitens OBU ..................................................................... 30 Abbildung 13: Zustandsdiagramm der Prozesse seitens OBU ..................................................................... 33 Abbildung 14: Ablauf „Proof Challenge “ um Datenmanipulationen aufzudecken......................................... 36 Abbildung 15: Physisches Entity-Relationship-Modell der TSP Datenbank .................................................. 39 Abbildung 16: Physisches Entity-Relationship-Modell, welches von TSP und OBU genutzt wird .................. 40 Abbildung 17: Physisches Entity-Relationship-Modell der OBU Datenbank.................................................. 40 Abbildung 18: Funktionsgraph zur Berechnung des minTime Parameters. ................................................... 42 Abbildung 19: Funktionsgraph zur Berechnung des minDistance Parameters. ............................................. 42 Abbildung 20: Kartenausschnitt von Horw (LU) mit vier Tarifzonen. ............................................................. 43 Abbildung 21: Eingrenzung des Suchraums ................................................................................................ 45 Abbildung 22: Physische Konstellation des Kommunikationssystems .......................................................... 49 Abbildung 23: Das Positionieren von Toll Charger bedingt das Einhalten bestimmter Regeln ...................... 56 Abbildung 24: Zeitzonen in Europa [45] ....................................................................................................... 57 Abbildung 25: Abstecken der Zonen entlang der Strasse ............................................................................. 58 Tabellenverzeichnis Tabelle 1: Begriffe & Abkürzungen ................................................................................................................ 6 Tabelle 2: Funktionale Anforderungen an die Software ................................................................................ 11 Tabelle 3: Nicht-funktionale Anforderungen an die Software ........................................................................ 12 Tabelle 4: Use Case UC-01 - Wegpunkte aufzeichnen ................................................................................ 14 Tabelle 5: Use Case UC-02 – Abrechnungsperiode verarbeiten .................................................................. 14 Tabelle 6: Use Case UC-03-Beweis erfassen .............................................................................................. 15 Tabelle 7: Use Case UC-04 - Beweis prüfen ............................................................................................... 15 Tabelle 8: Vergleich der Varianten zur Berechnung des Kilometertarifs ....................................................... 46 Tabelle 9: Anforderungen an die eingesetzte Systemumgebung.................................................................. 51 Begriffe & Abkürzungen Abkürzung Erklärung ASTRA Bundesamt für Strassen CL-RSA Signaturalgorithmus von Camenisch und Lysyanskaya basierend auf RSA CRUD Create, Update, Delete Operationen einer Datenbank DST Daylight Saving Time; ein Zeit-Offset für die Umstellung zwischen Winter- und Sommerzeit DTO Data Transfer Object; wird oft als Datentyp zum Austausch zwischen kommunizierenden Peers eingesetzt EETS European electronic toll service gat Namenskürzel für Autor Thomas Galliker GMT Greenwich Mean Time; ehem. als Weltzeit bekannt. Wird oft als Koordinationszeit herbeigezogen. GPS Global Positioning System TA.PAWI.FS2012 | Aspects of Privacy-Preserving Toll Pricing | C. Moser / T. Galliker 5 / 62 Report | Einleitung Road Pricing Hochschule Luzern Technik & Architektur GSM Global System for Mobile Communication; Standard für digitale Mobilfunknetze HSLU Hochschule Luzern IM Instant Messaging; bezeichnet das Übermitteln von Textnachrichten in Echtzeit IP Internet Protocol; weit verbreitetes Netzwerkprotokoll JPA Java Persistance API; Java Schnittstelle für Datenbankverbindungen LSVA Leistungsabhängige Schwerverkehrsabgabe ist eine Steuer welche für Schwertransporte erhoben wird, abhängig von Gewicht und zurückgelegten Kilometern MD5 Message Digest 5; ein bis dato sicherer Hash-Algorithmus moc Namenskürzel für Autor Christoph Moser NSA National Security Agency; US-amerikanische Sicherheitsbehörde OBU (Client) On-board Unit; mobiles Computersystem zur Verrechnung der Fahrleistung und Abrechnung mit dem Toll Service Provider OBUDB Datenbank von OBU Client Openfire XMPP Kommunikationsserver, Vermittlungspunkt für XMPP Clients ORM Object-relational Mapping; eine Datenabstraktionsschicht zwischen Datenbank und Datenlogik, implementiert CRUD Operation sodass die Kopplung zwischen Logik und Daten gering gehalten kann PrETP Privacy-Preserving Electronic Toll Pricing; ein Strassenabrechnungssystem, welches die Privatsphäre des Anwenders schützt RPC Remote Procedure Call; Aufruf von Prozeduren auf entfernten Systemen RSA Rivest, Shamir, Adelson Algorithmus; asymmetrische Verschlüsselung/Signatur SHA1 Secure Hash Algorithm 1; ein bis dato sicherer Hash-Algorithmus SQLite Dateibasiertes, leichtgewichtiges Datenbanksystem TC Toll Charger; Nummerschildscanner für die Beweiserfassung TSP Toll Service Provider; staatlicher Strassenverwalter, erhebt und verrechnet Gebühren für die Benutzung von Strassen TSP Client Client Applikation zur Verwaltung von TSP Service TSP Service Service Applikation als zentrale Verwaltungsstelle des PrETP Systems TSPDB Datenbank von TSP Service UTC Universal Coordinated Time; wird als Koordinationszeit verwendet, wenn verteilte Systeme miteinander kooperieren müssen. UVEK Das Eidgenössische Departement für Umwelt, Verkehr, Energie und Kommunikation VPN Virtual Private Network; ein privates, sicheres Netzwerk, welches über ein öffentliches, unsicheres Netzwerk führt XMPP Extensible Messaging and Presence Protocol, ehem. „Jabber”, Kommunikationsprotokoll für Instant Messanging (Facebook Chat, Google Talk) Tabelle 1: Begriffe & Abkürzungen TA.PAWI.FS2012 | Aspects of Privacy-Preserving Toll Pricing | C. Moser / T. Galliker 6 / 62 Report | Einleitung Road Pricing 1 Hochschule Luzern Technik & Architektur Einleitung Road Pricing Die Anzahl der registrierten Fahrzeuge ist in der Schweiz innerhalb von 10 Jahren von 4.0 Millionen auf 5.7 Millionen angestiegen [1]. Dies ist ein Anstieg von mehr als 30%. Um der Zunahme des Verkehrsaufkommens gerecht zu werden, muss die Verkehrsinfrastruktur laufend erweitert und gewartet werden. Die Schweizer Regierung ist verantwortlich für die Instandhaltung von ungefähr 71‘500 Kilometer öffentlicher Strassen [2]. Die Unterhaltsarbeiten und der Ausbau der Verkehrsinfrastruktur ist eine kostspielige Angelegenheit. Die entscheidende Frage ist, wie die anfallenden Kosten fair auf den jeweiligen Nutzer übertragen werden können. 1.1 Aktuelle Situation In der Schweiz werden die öffentlichen Strassen hauptsächlich über das Verbraucher-Prinzip finanziert. Die Haupteinnahmequelle ist dabei die Mineralölsteuer, welche beim Import von Benzin erhoben wird. Hinzu kommt eine jährliche Motorfahrzeugsteuer, welche von der Energieeffizienz des Fahrzeuges abhängig ist. Für die Benutzung von Autobahnen und Schnellstrassen wird zudem eine Vignette (40 CHF pro Jahr) benötigt. Für den Schwerverkehr wird eine zusätzliche Steuer, die sogenannte LSVA, erhoben, welche abhängig vom Gewicht des Fahrzeugs und den zurückgelegten Kilometer ist. Insgesamt generiert der Staat dadurch jährlich 8.8 Milliarden CHF für den Unterhalt der öffentlichen Strassen [3]. Wenn man die Erträge mit den Ausgaben für den Unterhalt vergleicht, erreicht man einen Gesamtkostendeckungsgrad von 92% [4]. 1.2 Vor- und Nachteile des aktuellen Strassenbenutzungsgebühr Der grosse Vorteil der aktuellen Strassenbenutzungsgebühr ist die Einfachheit der Verrechnung. Die Mineralölsteuern werden bereits von den Importeuren bezahlt und somit ohne grossen administrativen Aufwand auf den Verbraucher übertragen. Wenn mehr Mittel für den Unterhalt der Strassen benötigt werden, kann dies durch eine Erhöhung der Mineralölsteuer relativ einfach erzielt werden. Das aktuelle System birgt allerdings auch einige Nachteile. Beispielsweise ist die Verteilung der Kosten für den Transit-Verkehr nicht optimal gelöst. Autolenker welche die Schweiz an einem Tag durchqueren, müssen eine Vignette für 40 CHF erwerben, welche für ein ganzes Jahr gültig wäre. Anderseits hat die Regierung keine Möglichkeit sicherzustellen, dass der Transit-Verkehr die Benutzung der Strasseninfrastruktur über die Mineralölsteuer bezahlt. Denn Personen auf der Durchfahrt können nicht zu einem Tankstopp gezwungen werden. Mit dem aktuellen System kostet jeder Kilometer gleich viel, unabhängig von der Zeit und dem Strassentyp (Autobahn, Landstrasse) welcher befahren wurde. Dieses System lässt somit keine Verkehrsregulierung zu, wodurch stark befahren Strassen während den Stosszeiten stärker besteuert werden könnten um Staus zu verhindern. TA.PAWI.FS2012 | Aspects of Privacy-Preserving Toll Pricing | C. Moser / T. Galliker 7 / 62 Hochschule Luzern Technik & Architektur Report | Einleitung Road Pricing 1.3 Road Pricing in der EU Jedes europäische Land verwendet ihre eigenen Standards und Systeme um Strassenbenutzungsgebühren zu verrechnen. In vielen Ländern müssen die Fahrzeuglenker an sogenannten Mautstationen anhalten um den Betrag für das Benutzen der Strasseninfrastruktur zu entrichten. Der Bezahlungsvorgang dauert ungefähr 30 Sekunden, deshalb sind die Mautstationen häufig ein Auslöser für Verkehrstaus. Abbildung 1: Mautstelle St.Michael in Österreich [30] Durch den Einsatz von unterschiedlichen Mautsystemen, benötigt ein LKW beim Durchqueren von mehreren europäischen Ländern verschiedene Bordgeräte und die zugehörigen Verträge. Deshalb hat die EU im Oktober 2009 entschieden, dass künftig ein einheitliches Mautsystem eingesetzt werden soll. Dadurch erhofft man sich, dass die Wartezeiten an den Mautstationen verkürzt werden können. [29] Die Anforderungen an den Europäischen Elektronischen Mautdienst (EETS) sehen vor, dass dynamische Preismodelle verwendet werden können, ohne dadurch die Privatsphäre des Fahrzeughalters zu verletzen. Ein dynamisches Preismodell erlaubt es, das Verkehrsaufkommen abhängig von Strassentyp und Zeitfenster zu regulieren. Das Europäische Mautsystem ermöglicht es einem Fahrzeughalter den Dienstleister frei zu wählen und sich bei diesem zu registrieren. Die Dienstleister erhalten dann von der Maut erhebenden Stelle die Mautgebühr, welche für eine bestimmte Periode verrechnet wurde. Der Dienstleister fordert die Mautgebühren direkt beim Fahrzeuglenker ein. [29] Gemäss der Planung, welche im Jahr 2009 für die Einführung eines einheitlichen Europäischen Mautsystems gemacht wurde, sollte Ende 2012 der EETS-Dienst für alle Strassenfahrzeuge über 3.5 Tonnen zur Verfügung stehen. Für die restlichen Fahrzeuge ist die Einführung des EETS-Dienstes im Jahre 2015 geplant. [29] 1.4 Bestrebungen neues Road Pricing in der Schweiz Im Jahr 2010 hat das Bundesamt für Strassen ASTRA 15‘910 Staustunden erfasst [5]. Durch das zunehmende Verkehrsaufkommen in den Agglomerationen und die positiven Erfahrungen mit neuen Road Pricing Technologien im In- und Ausland (LSVA, Stauabgaben in Stockholm) hat die Ausarbeitung eines neuen Systems in der Schweiz an Bedeutung gewonnen. Vor der Einführung der LSVA im Jahre 2000 hat die Anzahl der gefahrenen Kilometer von schweren Motorfahrzeugen laufend zugenommen. Durch die Einführung der LSVA konnte dieser Trend gestoppt werden und dadurch wurde der Schwerverkehr in den ersten vier Jahren um 7% reduziert. Es gibt auch positive Beispiele im Ausland. In Stockholm beispielsweise wurde ein System eingeführt, bei welchem beim Befahren des Stadtzentrums nach Tageszeit abgestufte Tarife verrechnet werden. Während einer Versuchsdauer von 6 Monaten wurde festgestellt, dass die Staus um 30-50% zurückgingen. [6] TA.PAWI.FS2012 | Aspects of Privacy-Preserving Toll Pricing | C. Moser / T. Galliker 8 / 62 Report | Einleitung Road Pricing Hochschule Luzern Technik & Architektur Gemäss dem UVEK ist das primäre Ziel von einem Road Pricing System in der Schweiz, das Verkehrsproblem in den Städten und Agglomerationen zu entschärfen. Die Finanzierung der Strasseninfrastruktur steht nicht im Vordergrund, weil die Finanzierung mit dem heutigen Abgabesystem gut gedeckt ist. Mittel- bis langfristig wird allerdings der Treibstoffverbrauch zurückgehen, da vermehrt auf effizientere Fahrzeuge oder Fahrzeuge mit alternativen Antrieben gesetzt wird. Langfristig gesehen werden somit die Einnahmen durch die Mineralölsteuern zurückgehen. Dadurch muss auch das Finanzierungskonzept für die Strasseninfrastruktur überarbeitet werden [6]. 1.5 Gefahren von neuen Road Pricing Technologien Wenn bewährte Systeme durch neue, elektronische Systeme ersetzt werden, bestehen selbstverständlich immer gewisse Bedenken bezüglich dem Schutz der Privatsphäre der Anwender. Das Geschäft mit Anwenderdaten durchlebt zurzeit einen riesen Boom. Selbst wenn man davon ausgeht, dass ein Staat grundsätzlich kein kommerzielles Interesse an gesammelten Informationen hat, besteht immer das Risiko, dass diese Daten in falsche Hände gelangen. GPS Wegpunkte erlauben viel mehr als nur die Bestimmung der gefahrenen Distanz. Die Abschnittszeiten würden nachträgliche Geschwindigkeitsberechnungen zulassen. Zusammen mit dem Strassentyp könnte die Polizei beispielsweise im Nachhinein Bussen ausstellen. Im Falle eines Unfalls könnte erwiesen werden, dass eines der involvierten Fahrzeuge mit übertretener Geschwindigkeit unterwegs war. Die Analysen könnten so weit gehen, dass man sogar das Fahrverhalten eines Fahrers bestimmen könnte. Willkommen im Überwachungsstaat! Versicherungen und andere profitorientierte Unternehmen haben ein reges Interesse an solchen Informationen [36]. Das Beispiel des britischen Fahrzeugversicherers Norwich Union zeigt, dass der Schutz der Privatsphäre mit viel Marketing übermalt werden kann [37]. Selbst wenn die Daten verschlossen beim Strassenverkehrsamt gelagert werden und alles unternommen wird, dass diese nur zweckgemäss genutzt werden: Das Risiko besteht immer, dass Informationen entwendet und missbraucht werden. Finanzielle Anreize machen die besten Sicherheitsmechanismen nutzlos. • Wie einfach wäre es den, einen Präsidentschaftskandidaten auszuschalten, wenn man seine exakte Spur - wenn möglich sogar in Echtzeit - kennt? • Wie schnell könnte man einen Skandal aufziehen, wenn man feststellen würde, dass die GPS Spuren eines ranghohen Politikers regelmässig ins Rotlichtmillieu zeigen? TA.PAWI.FS2012 | Aspects of Privacy-Preserving Toll Pricing | C. Moser / T. Galliker 9 / 62 Hochschule Luzern Technik & Architektur Report | Kundenanforderungen 2 Kundenanforderungen Dieses Kapitel enthält zwei wichtige Unterkapitel: Die Anforderungsliste mit den funktionalen und nichtfunktionalen Anforderungen sowie die Anwendungsfälle (Geschäftsprozesse), welche dieses System bereitstellen muss. 2.1 Anforderungslisten Die Anforderungen in den nachfolgenden Tabellen sind möglichst lösungsneutral abgefasst. Konkrete Beispiele dienen nur zum Illustrationszweck. Die Anforderungserhebung wurde in folgende zwei Kategorien aufgeteilt: Funktionale und nichtfunktionale Anforderungen. Als funktionale Anforderung gelten Leistungen, welche das Softwareprodukt erbringen soll (z.B. Funktion X, Funktion Y). Nichtfunktionale Anforderungen sind Eigenschaften und Zusatzleistungen, welche nicht direkt als programmierte Funktionen umgesetzt werden können (z.B. Wartbarkeit, Benutzerfreundlichkeit, Look and Feel). 2.1.1 Nr. Liste der funktionalen Anforderungen F M W 1 1.1 Bezeichnung Werte Daten Erläuterungen Änderungen GPS Lokalisierung M Erfassen der Position Die OBU muss in der Lage sein, GPS Positionen mit einer konfigurierbaren Genauigkeit und in einem idealen Intervall zu erfassen. 1.2 M Zuordnung der Preiszone Um den Kilometertarif berechnen zu können, muss die OBU anhand von GPS Positionsinformationen feststellen können, in welcher Preiszone sie sich befindet. 2 OBU 2.1 M Aktuelle Preispläne abfragen Die OBU kann beim TSP aktuelle Preispläne anfordern. Die Preispläne werden benötigt, um für eine befahrene Strecke den korrekten Preis zu verrechnen. 2.2 W Streckenpreis anzeigen Auf dem GUI der OBU soll der Preis der gegenwärtig befahrenen Strasse angezeigt werden. Damit der Benutzer weiss, welcher Tarif für die befahrene Strecke verrechnet wird und so allenfalls eine alternative Route wählen kann. 2.3 W 3 3.1 Zwischensumme anzeigen Es soll die Zwischensumme der aktuellen Abrechnungsperiode auf dem GUI des OBU Clients angezeigt werden. TSP M Beweise erfassen Über ein User-Interface können Beweise erfasst werden. Ein Beweis sagt aus, dass sich ein bestimmtes Fahrzeug zu einem bestimmten Zeitpunkt an einem bestimmten Ort aufgehalten hat. TA.PAWI.FS2012 | Aspects of Privacy-Preserving Toll Pricing | C. Moser / T. Galliker 10 / 62 Hochschule Luzern Technik & Architektur Report | Kundenanforderungen 3.2 M Beweise anzeigen Die erfassten Beweise inklusive Status (offen, korrekt, inkorrekt) können angezeigt werden. 3.3 M Abrechnung ausführen Es kann eine Abrechnung für ein bestimmtes Fahrzeug gestartet werden. Während der Abrechnungsphase werden die übertragenen Daten auf Manipulationen geprüft. 3.4 M Beweise prüfen Der TSP prüft, ob für den Zeitpunkt an welchem der Beweis erfasst wurde, die korrekten Lokationsdaten eingegangen sind. Zudem wird geprüft, ob die OBU für die Strecke den korrekten Preis rapportiert hat. 3.5 M Abrechnung anzeigen Die ausgeführten Abrechnungen können im TSP angezeigt werden, dabei ist ersichtlich, welche Beweise während der Abrechnung geprüft wurden. Tabelle 2: Funktionale Anforderungen an die Software 2.1.2 Nr. Liste der nicht-funktionalen Anforderungen F M W 1 1.1 Bezeichnung Werte Daten Erläuterungen Änderungen Leistung W Effizienz Insbesondere auf den eingesetzten Geräten (OBU) in Fahrzeugen soll darauf geachtet werden, dass die vorhandenen Ressourcen effizient genutzt werden können. Es sollen nur jene Informationen gesammelt werden, die zur Weiterverarbeitung notwendig sind. Bei Nichtgebrauch müssen diese umgehend gelöscht werden. Ein weiteres Augenmerk gilt es der Datenübertragung von OBU zu TSP (und umgekehrt) zu schenken. Dort können variable Kosten anfallen. 1.2 M Effektivität Um die Ressourcen der OBU zu schonen, soll auch auf die Effektivität der ausgeführten Operationen geachtet werden. 1.3 W Antwortzeit Die Antwortzeit von Anfragen sollen unter zwei Sekunden gehalten werden. Andernfalls muss der Prozess asynchron implementiert werden. 2 2.1 Benutzbarkeit M Einfache Erlernbarkeit Der Benutzer kann die gewünschten Funktionen mit geringem Vorwissen erfolgreich benutzen. 2.2 AM 2.3 M Logischer Aufbau Abläufe der Funktionen in der Software sind gut strukturiert und selbsterklärend. Dialogschritte Dialoge sind verständlich und geben bei Bedarf Rückmeldungen an den Benutzer. TA.PAWI.FS2012 | Aspects of Privacy-Preserving Toll Pricing | C. Moser / T. Galliker 11 / 62 Hochschule Luzern Technik & Architektur Report | Kundenanforderungen 2.4 W Look & Feel Das GUI soll ansprechend gestaltet sein. Selbsterklärende Icons und Grafiken sollen für einfache Benutzung wichtiger Funktionen eingesetzt werden. 2.5 W Erwartungskonformität Dialoge sind konsistent mit den Erwartungen des Benutzers. 2.6 W Cursor Bewegung des Cursors auf ein Minimum reduzieren. - Cursor bereits in erstes Feld setzen - 3 3.1 Navigation ermöglichen mit sinnvoller Tabulator-Reihenfolge Sicherheit M Schutz der Privatsphäre Das oberste Prinzip des Gesamtsystems ist es, die Privatsphäre bei jeder Aktion und zu jedem Zeitpunkt kompromisslos zu schützen. Die übertragenen Daten müssen kryptographisch signiert und verschlüsselt werden. 3.2 M Manipulationsschutz Mittels kryptographischer Methoden soll sichergestellt werden, dass die OBU keine zur Berechnung der Strassennutzungsgebühr verwendeten Attribute manipulieren kann. Dies gilt insbesondere für die aufgezeichnete Strecke sowie für die verrechneten Kilometertarife. 3.3 M Positionsnachweis Mit Hilfe von Spot Checks soll geprüft werden können, ob die aufgezeichneten Lokationsdaten und Preise, welche die OBU gemeldet hat, korrekt sind. 4 4.1 Verschiedenes W Wartbarkeit Der Code soll so konstruiert werden, dass Änderungen im Nachhinein möglich sind und einen möglichst kleinen Einfluss auf bestehenden Code haben. Tabelle 3: Nicht-funktionale Anforderungen an die Software F = Festanforderung M = Mindestanforderung W = Wunschanforderung TA.PAWI.FS2012 | Aspects of Privacy-Preserving Toll Pricing | C. Moser / T. Galliker 12 / 62 Hochschule Luzern Technik & Architektur Report | Kundenanforderungen 2.2 Anwendungsfälle (Use Cases) Ein Anwendungsfall (engl. Use Case) stellt ein konkretes Szenario dar, welches eintreten kann, wenn ein Akteur mit Hilfe einer Software-Funktion ein bestimmtes Ziel erreichen will. Im nachfolgenden Abschnitt werden die vorgesehenen Anwendungsfälle nach einer einheitlichen Schablone (Alistair Cockburn, 2001) dargestellt und beschrieben. Abbildung 2: 2.2.1 Use Case Diagramm UC-01: Wegpunkt aufzeichnen Identifikation UC-01 Name Wegpunkt aufzeichnen Beschreibung Ein Fahrzeug legt eine beliebige Strecke zurück. Während der Fahrt werden Wegpunkte aufgezeichnet, welche vom Fahrzeug passiert wurden Akteure 1. GPS Sensor (erkennt das sich die Koordination geändert haben) Vorbedingungen • OBU initialisiert • GPS Empfang Standardablauf 1. GPS-Daten werden abgefragt. 2. Die erhaltenen Koordinaten werden zusammen mit dem Zeitstempel auf der On-board Unit gespeichert. Alternativer Ablauf - Nachbedingungen - Bemerkung Der Intervall welcher festlegt, wie häufig Daten aufgezeichnet werden, soll die Fahrgeschwindigkeit mitberücksichtigen. Status Entwurf In Überarbeitung Abgeschlossen TA.PAWI.FS2012 | Aspects of Privacy-Preserving Toll Pricing | C. Moser / T. Galliker 13 / 62 Hochschule Luzern Technik & Architektur Report | Kundenanforderungen Änderungen Datum Use Case owner Kommentar 10.01.2012 Christoph Moser Erste Version 25.01.2012 Christoph Moser UseCase überarbeitet Tabelle 4: Use Case UC-01 - Wegpunkte aufzeichnen 2.2.2 UC-02: Abrechnungsperiode verarbeiten Identifikation UC-02 Name Abrechnungsperiode verarbeiten Beschreibung Ein Mitarbeiter vom Strassenverkehrsamt startet die Abrechnung eines Fahrzeuges respektive derer On-board Unit. Während der Abrechnungsphase werden die übertragenen Daten auf Manipulationen geprüft. Akteure 1. Ein Mitarbeiter vom Strassenverkehrsamt Vorbedingungen • Der Toll Service Provider verfügt über die aktuellen Preisinformationen, sowie einer Historie der älteren Preise Standardablauf 1. Der Mitarbeiter wählt im TSP Client das Fahrzeug für welches die Abrechnung gestartet werden soll. 2. Die von der OBU aufgezeichneten Wegpunkte werden mit Hilfe von kryptographischen Primitiven an den TSP übermittelt, sodass der TSP aus den erhaltenen Daten die aufgezeichneten Wegpunkte nicht herleiten kann. 3. Der TSP prüft anhand kryptographische Protokolle, ob die erhaltenen Daten korrekt sind. 4. Der TSP ermittelt den Totalpreis für die Abrechnungsperiode. 5. Der Totalpreis wird an die Verrechnungsstelle weitergeleitet. Alternativer Ablauf Der Mitarbeiter wird informiert falls Fehlerhafte/Manipulierte Daten übertragen wurden. Nachbedingungen - Bemerkung Keine Status Entwurf Änderungen In Überarbeitung Abgeschlossen Datum Use Case owner Kommentar 10.01.2012 Christoph Moser Erste Version 25.01.2012 Christoph Moser UseCase überarbeitet Tabelle 5: Use Case UC-02 – Abrechnungsperiode verarbeiten 2.2.3 UC-03: Beweis erfassen Identifikation UC-03 Name Beweis erfassen Beschreibung Der Toll-Charger erfasst einen Beweis, dass sich ein Fahrzeug zu einem bestimmten Zeitpunkt an einem bestimmten Ort aufgehalten hat. Akteure 1. Toll-Charger Vorbedingungen • Fahrzeug passiert Toll-Charger Standardablauf 1. Ein Beweis wird in einer Eingabemaske erfasst 2. Der Beweis wird gespeichert Alternativer Ablauf - Nachbedingungen - TA.PAWI.FS2012 | Aspects of Privacy-Preserving Toll Pricing | C. Moser / T. Galliker 14 / 62 Hochschule Luzern Technik & Architektur Report | Kundenanforderungen Bemerkung Keine Status Entwurf Änderungen In Überarbeitung Abgeschlossen Datum Use Case owner Kommentar 10.01.2012 Christoph Moser Erste Version Tabelle 6: Use Case UC-03-Beweis erfassen 2.2.4 UC-04: Beweis prüfen Identifikation UC-04 Name Beweis prüfen Beschreibung Der TSP weiss anhand eines Beweises, dass sich ein Fahrzeug zum Zeitpunkt als der Beweis aufgezeichnet wurde, am Ort wo der Beweis festgehalten wurde, befunden haben muss. Dadurch kann der TSP prüfen, ob für diesen Zeitpunkt die korrekten Lokationsdaten gemeldet wurden. Zudem wird geprüft, ob die OBU für die Strecke den korrekten Preis rapportiert hatte. Akteure 1. Mitarbeiter vom Strassenverkehrsamt Vorbedingungen • Die Payment Tuple wurde von der On-board Unit zum Toll Service Provider übertragen (UC—02) • Die On-board Unit muss erreichbar sein, damit die Challenges geprüft werden können Standardablauf 1. Der Mitarbeiter gibt das Kennzeichen für das zu prüfende Fahrzeug ein. 2. Für jeden erfassten Beweis werden die folgenden Schritt ausgeführt: 2.1 Der TSP sendet den Beweis als Challenge an die OBU. 2.2 Die OBU prüft, ob der Beweis von einem gültigen Toll Charger stammt. 2.3 Die OBU sucht den passenden Payment Record zur empfangenen Challenge und sendet diesen als Antwort zurück an den TSP. 2.4 Der TSP prüft, ob die Challenge von der OBU korrekt beantwortet wurde. 2.5 Der TSP prüft, ob der übermittelte Preis in der Antwort zur Challenge bereits während der Abrechnung (UC-02) rapportiert wurde. 2.6 Der TSP prüft, ob er für den Zeitpunkt und Ort an welchem sich das Fahrzeug aufgehalten hat, denselben Preis verrechnet hätte. 2.7 Der Status der Challenge wird gespeichert. 3. Eine Auswertung der geprüften Challenges und der dazugehörigen Resultate, wird dem Mitarbeiter angezeigt. Alternativer Ablauf - Nachbedingungen - Bemerkung Keine Status Änderungen Entwurf In Überarbeitung Abgeschlossen Datum Use Case owner Kommentar 10.01.2012 Christoph Moser Erste Version 25.01.2012 Christoph Moser UseCase überarbeitet Tabelle 7: Use Case UC-04 - Beweis prüfen TA.PAWI.FS2012 | Aspects of Privacy-Preserving Toll Pricing | C. Moser / T. Galliker 15 / 62 Hochschule Luzern Technik & Architektur Report | Theoretische Grundlagen der Kryptographie 3 Theoretische Grundlagen der Kryptographie In diesem Kapitel werden jene kryptographischen Primitive dokumentiert, welche dieses Projekt in irgendeinem Zusammenhang tangieren. Neben der allgemeinen Funktionsweise, dem Einsatzzweck und generellen Beispielen wird auch versucht aufzuzeigen, wie die kryptographischen Protokolle im vorliegenden Projekt zum Einsatz kommen. 3.1 Asymmetrische Kryptographie Im Gegensatz zu symmetrischen Verschlüsselungsverfahren besitzen die beiden kommunizierenden Parteien beim asymmetrischen Verfahren keinen gemeinsamen Schlüssel, um Informationen zu verschlüsseln bzw. entschlüsseln. Jeder Teilnehmer besitzt ein Schlüsselpaar, welches aus einem öffentlichen (Public Key) und einem privaten Schlüssel (Private Key) besteht. Der öffentliche Schlüssel kann, wie es der Name bereits besagt, öffentlich bekannt gemacht werden. Beispielsweise durch das Publizieren auf einer Webseite. Der Public Key von Teilnehmer x wird dann von anderen Teilnehmern verwendet, um eine verschlüsselte Nachricht an Teilnehmer x zu senden. Der Private Key wird nicht weitergegeben. Dieser wird zur Entschlüsselung und zum Signieren von Nachrichten genutzt. Anforderungen an eine Asymmetrische Kryptographie: [7] Es wird ein öffentlicher Schlüssel K+ und ein privater Schlüssel K- benötigt, sodass K- (K+ (m)) = m Es ist nicht möglich anhand des privaten Schlüssels K- den öffentlichen Schlüssel K+ zu berechnen. • 3.1.1 Es Asymmetrische Kryptographie-Algorithmen gibt verschiedene asymmetrische Kryptographie-Algorithmen, welche auf unterschiedlichen mathematischen Problemen basieren. Die bekanntesten asymmetrischen Kryptographie-Algorithmen sind: • RSA (Rivest, Shamir, Adelson Algorithmus) macht Gebrauch davon, dass es rechen- und dadurch zeitintensiv ist, aus einem grossen Produkt zweier Primzahlen, die beiden Primfaktoren zu ermitteln. Mit heute verfügbaren Mitteln ist es nicht möglich, innerhalb sinnvoller Zeit aus einem öffentlichen Schlüssel den privaten Schlüssel zu berechnen [8]. Im Zusammenhang mit RSA wird manchmal auch von einem „symmetrischen Algorithmus“ gesprochen. Diese Bezeichnung meint aber lediglich, dass beim Ver- und Entschlüsseln jeweils derselbe mathematische Prozess genutzt wird – jedoch einmal mit dem Public Key und einmal mit dem Private Key. • DSA (Digital Signature Algorithm) ein von der NSA entwickeltes Signaturverfahren. Im Gegensatz zu RSA kann DSA nur zum Signieren von Informationen verwendet werden. Der Algorithmus basiert auf dem zahlentheoretischen Problem des diskreten Logarithmus‘. Er bedient sich also des mathematischen Vorteils, dass das Berechnen von Exponenten wesentlich einfacher ist, als das Zerlegen eines Expontentialprodukts in die gesuchte Basis und Exponent. • Elgamal ist ein Verschlüsselungs- und Signaturalgorithmus, welcher ebenfalls auf dem Problem des diskreten Logarithmus‘ aufbaut. Im Gegensatz zu RSA verwendet Elgamal zum Verschlüsseln und Signieren unterschiedliche mathematische Vorgänge. TA.PAWI.FS2012 | Aspects of Privacy-Preserving Toll Pricing | C. Moser / T. Galliker 16 / 62 Report | Theoretische Grundlagen der Kryptographie 3.1.2 Hochschule Luzern Technik & Architektur RSA Verschlüsslung Durch das verschlüsselte Übertragen einer Nachricht wird verhindert, dass ein Angreifer eine abgehörte Nachricht lesen kann. In der Abbildung 3 ist ersichtlich, dass Alice eine Nachricht m mit dem öffentlichen Schlüssel von Bob K+ verschlüsselt an Bob sendet. Bob kann nun die verschlüsselte Nachricht mit seinem privaten Schüssel K- entschlüsseln. Somit ist sichergestellt, dass nur Bob diese Nachricht öffnen kann. Abbildung 3: Schematische Darstellung der asymmetrischen Verschlüsslung mit RSA [7] 3.1.2.1 Der RSA Algorithmus Der RSA Algorithmus arbeitet exakt nach dem oben beschriebenen Prinzip. Bevor es zum verschlüsselten Informationsaustausch kommt, müssen sich die Teilnehmer Schlüssel erstellen. Dafür generieren sie jeweils zuerst zwei distinkte Primzahlen, p und q. Das Produkt dieser beiden Zahlen sei n. Die Bitlänge von n wird typischerweise als Schlüssellänge bezeichnet. Nach Empfehlungen von RSA Laboratories [18] ist es aus sicherheitstechnischen Gründen empfehlenswert, Schlüssellängen zu verwenden, also 1024bit, l n > 2 512 2048bit oder 4096bit. Eine längere Schlüssellänge verbessert grundsätzlich die Sicherheit von RSA Verschlüsselungen, kostet aber viel mehr Rechenleistung als kleinere Schlüssel. Es gilt sich also zu überlegen, wie lange eine bestimmte Information geheim gehalten werden möchte, bis ein potenzieller Abhörer eine Nachricht entschlüsselt hat. Als nächstes wird eine Zahl e (=Encryption Key) gesucht, welche mit der Zahl phi=(p-1)(q-1) keinen gemeinsamen Teiler hat, also sog. co-prime ist. Passend zu e wird eine Zahl d (=Decryption Key) gesucht, welche die Gleichung e*d mod phi = 1 erfüllt. Für diese Berechnung einer multiplikativ-inversen Zahl von e wird der „extended Euclid“ Algorithmus verwendet. Dieser ist im Gegensatz zum herkömmlichen Euclid Algorithmus effizienter. Der Private Key setzt sich nun aus dem Zahlenpaar {d,n} zusammen, während das Zahlenpaar {e,n} als Public Key veröffentlicht wird. Für den Besitzer des Public Keys ist es schwierig, mit Hilfe von e und n auf d zu schliessen. Fände der Besitzer eines fremden Public Keys eine einfache Möglichkeit, n in die Faktoren p und q zu zerlegen, so könnte er sich den Decryption Key d berechnen und Informationen entschlüsseln. Auf dieser Annahme, dass das Faktorisieren von grossen Primzahlen aufwändig ist, basiert die Sicherheit von RSA. TA.PAWI.FS2012 | Aspects of Privacy-Preserving Toll Pricing | C. Moser / T. Galliker 17 / 62 Hochschule Luzern Technik & Architektur Report | Theoretische Grundlagen der Kryptographie Die Verschlüsselungsfunktion in RSA ist definiert als y = E(x) = xe mod n, wobei x die zu verschlüsselnde Nachricht ist und y der gewünschte Ciphertext. Die Entschlüsselungsfunktion wird in RSA nicht nur zum Entschlüsseln von verschlüsselten Daten gebraucht, sondern auch zum Signieren von Klartext-Informationen. Die Funktion lautet x = D(y) = yd mod n, also dieselbe mathematische Operation, welche bereits beim Verschlüsslungsprozess eingesetzt wird, jedoch mit Hilfe der multiplikativ-inversen Zahl d. 3.1.2.2 Anwendungsbeispiel Ein einfaches Zahlenbeispiel soll die Funktionsweise von RSA illustrieren. Für Demonstrationszwecken wurden absichtlich sehr kleine Sicherheitsparameter gewählt. 1. Wähle zwei Primzahlen, p=3 und q=11. 2. Berechne n=p*q=33. Berechne phi=(p-1)(q-1)=20. 3. Wähle eine Zufallszahl e, welche keinen gemeinsamen Teiler mit phi hat: Beispielsweise e=3, da gcd(3,20)=1 4. Finde d sodass e*d mod phi = 1. Mit dem extendedEuclid(e, phi) findet man d=7. 5. Der Ciphertext für die Zahl x=9 wird wie folgt berechnet: y=E(x) = xe mod n = 93 mod 33 = 3 6. Die verschlüsselte Zahl y=3 kann danach wieder in Klartext umgewandelt werden: x=D(y) = yd mod n = 37 mod 33 = 9 Dass Verschlüsselung und Entschlüsselungen komplett symmetrische Operationen sind, zeigen die beiden Zahlenbeispiele: Entschlüsselung(Verschlüsselung(x)) = x Verschlüsselung (Entschlüsselung(y)) = y D(E(x)) = x E(D(y)) = y (xe mod n)d mod n = x (yd mod n)e mod n = y (93 mod 33)7 mod 33 = 9 (37 mod 33)3 mod 33 = 3 3.1.2.3 Verschlüsseln grosser Datenmengen Das Verschlüsseln von grossen Informationsmengen mit asymmetrischen Kryptographie-Algorithmen kostet – unter Berücksichtigung äquivalenter Sicherheit – viel mehr Zeit als mit symmetrischen Algorithmen. In der Praxis werden daher diese beiden Verfahren oft hybrid genutzt: Ein (oft temporärer) symmetrischer Key wird genutzt, um die Nutzdaten zu verschlüsseln. Danach wird dieser symmetrische Key mit einem asymmetrischen Public Key verschlüsselt. Dieses Prinzip kommt bei GnuPG zum Einsatz [19]. TA.PAWI.FS2012 | Aspects of Privacy-Preserving Toll Pricing | C. Moser / T. Galliker 18 / 62 Report | Theoretische Grundlagen der Kryptographie 3.1.3 Hochschule Luzern Technik & Architektur Digitale Signaturen Als digitales Signieren bezeichnet man den Vorgang des Verschlüsselns von Informationen unter Verwendung des Private Keys. Da grundsätzlich jeder im Besitz des dazugehörigen Public Keys sein kann, wird bei diesem Vorgang nicht die Vertraulichkeit, sondern die Authentizität der übertragenen Nachricht sichergestellt. Wenn eine Nachricht eine Signatur von Alice enthält, so kann Bob davon ausgehen, dass die Nachricht von Alice stammt, da nur sie im Besitz des Private Key’s ist. Eine Analogie zur elektronischen Signatur ist die handschriftliche Signatur. Abbildung 4: Schematische Darstellung zum digitalen Signieren. Quelle: [35] 3.1.3.1 Signieren von grossen Datenmengen Das Signieren von grossen Informationsmengen mit asymmetrischen Algorithmen kostet, speziell bei grossen Schlüssellängen, sehr viel Zeit. Deshalb wird von den Informationen vorgängig, unter Beizug eines Message Digest Algorithmus‘, ein Hash erstellt (Kapitel 3.2, Seite 20). Dieser Hash wird anschliessend signiert. 3.1.3.2 Das CL-RSA Signatur Schema Der von Camenisch und Lysyanskaya eingeführte CL-RSA Signaturalgorithmus basiert weitgehend auf 1 demselben Prinzip wie RSA . Eingesetzt wurde dieser Algorithmus erstmals in einem Authentifizierungssystem, dem „Identity Mixer Anonymous Credential System“ [31][32]. Mit CL-RSA kann eine Entität prüfen, ob eine andere Entität im Besitz einer Signatur ist, ohne dass eine der Parteien die Signatur oder die signierte Nachricht preisgeben muss. In diesem Projekt werden CL-RSA Signaturen im Zusammenhang mit den Zonentarifen verwendet. Jeder konfigurierte Preis eines Pricing Profiles wird zusätzlich mit einer CL-RSA Signatur versehen. Diese Signaturen werden durch den TSP mit dem Private Key des TSP’s erstellt. Die OBU Clients laden die Signaturen zusammen mit den Pricing Profiles beim Systemstart und vor dem Abrechnungsvorgang. Beim Aufzeichnen von Payment Records speichert die OBU neben dem für den erstellten Payment Record verwendeten Preis auch einen Proof, in welchem die CL-RSA Signatur zum Einsatz kommt. Der TSP kann später anhand des Proof‘s verifizieren, ob in der Abrechnung die von ihm signierten Zonentarife verwendet wurden. 1 In CL-RSA werden lediglich die Werte für p und q anders bestimmt als in RSA. Siehe [34]. TA.PAWI.FS2012 | Aspects of Privacy-Preserving Toll Pricing | C. Moser / T. Galliker 19 / 62 Hochschule Luzern Technik & Architektur Report | Theoretische Grundlagen der Kryptographie 3.2 Message Digest Verfahren Ein Hash (auch bekannt als Message Digest) ist eine mathematische Einweg-Funktion. Mit Hashfunktionen können Eingabewerte in idealerweise eindeutige Fingerabdrücke gewandelt werden. Der Vorteil von Hashfunktionen liegt in der Unumkehrbarkeit der Berechnung: Ein Hash ist einfach berechenbar aber schwer umkehrbar. Als sichere Hashverfahren gelten heute Message Digest 5 (kurz MD5) und Secure Hash Algorithm 1 (SHA1). Allgemeine Eigenschaften von Hashfunktionen: • Unumkehrbarkeit: Es ist nicht möglich aus dem Ausgabewert den Eingabewert zu ermitteln. • Kollisionsresistent: Es ist schwierig zwei unterschiedlichen Eingabewerten zu finden welche den gleichen Ausgabewert erzielen. Message Digest wird beispielsweise eingesetzt, um die Integrität bei der Übermittlung einer Nachricht sicherzustellen. Dies wird bewerkstelligt, indem zusätzlich zur verschlüsselten Nachricht ein signierter Hash der Nachricht mitübertragen wird. Der Empfänger kann den Hash dieser Nachricht generieren und diesen mit dem Hash, welcher der Absenders mitgesendet hat, vergleichen. Sind die Hashes identisch dann ist sichergestellt, dass die Nachricht während der Übertragung nicht von einem Angreifer verändert wurde. [28] 3.3 Commitment Schemas Ein Commitment Schema ist eine Verfahren zwischen zwei Teilnehmern, welches erlaubt, dass sich ein Teilnehmer auf einen Wert festlegt und sich zu diesem Wert gegenüber dem anderen Teilnehmer verpflichtet, ohne den festgelegten Wert preiszugeben. Das heisst, der Teilnehmer, welcher den Wert festgelegt hat, kann den Wert nachträglich nicht mehr ändern, er hat sich dazu „committed“. Eine Analogie zum kryptographischen Commitment Schema ist das Hinterlegen einer Nachricht in einem versigelten Umschlag beim Kommunikationspartner. Ein Commitment Schema hat somit die folgenden Eigenschaften [24]: • Eindeutigkeit (binding property): Der Sender kann den Wert nach der Festlegungsphase nicht mehr ändern. • Geheimhaltung (hiding property): Für den Empfänger ist es nicht möglich ein Commitment des Werts 1 von einem Commitment des Werts 0 zu unterscheiden. In der Abbildung 5 wird das Commitment Verfahren an einem Münzwurf über das Telefon aufgezeigt. Der Münzwurf über das Telefon funktioniert nur, wenn man sicherstellen kann, dass das Gegenüber den Wert nachträglich nicht mehr ändern kann. Dies wird durch das Commitment Verfahren sichergestellt. [25] TA.PAWI.FS2012 | Aspects of Privacy-Preserving Toll Pricing | C. Moser / T. Galliker 20 / 62 Report | Theoretische Grundlagen der Kryptographie Abbildung 5: Hochschule Luzern Technik & Architektur Beispiele eines Münzwurfes per Telefon 1. Bob wirft die Münze und erhält ein Resultat, in diesem Fall „Kopf“. 2. Bob sendet ein Commitment seines Wurfs an Alice. Alice kann das Commitment nicht öffnen und somit das Ergebnis nicht einsehen. Allerdings ist nun garantiert das Bob sein Wurf nicht mehr ändern kann. 3. Alice kann ebenfalls eine Münze werfen und das Resultat ihres Wurfes Bob mitteilen. 4. Bob erhält nun das Resultat von Alice und kann danach den Schlüssel für sein Commitment an Alice senden. 5. Mit Hilfe des Schlüssels kann auch Alice prüfen, wer das Spiel gewonnen hat. 3.3.1.1 Berechnung eines Commitments Ein Commitment für einen Wert x kann wie folgt generiert werden. Der p-Wert vom Private Key ist eine Primzahl der Form p = kq + 1. Die Werte g, h sind Elemente der Untergruppe der Ordnung q und sind beiden Teilnehmer bekannt. Zuerst wird eine Zufallszahl openx gewählt welche als Schlüssel für das Commitment verwendet wird. [25] open x ← {0,1}ln Die Berechnung des Commitments basiert darauf, dass diskrete Exponentialfunktionen einfach berechnet werden können, während es aufwändig ist, die Umkehrfunktion des diskreten Logarithmus zu berechnen. c x = g x h openx (mod n) Der Sender kann das berechnete Commitment an den Empfänger übermitteln. Der Empfänger benötigt für das Öffnen des Commitments den Schlüssel openx, sowie den Wert x. 3.3.1.2 Homomorphes Commitment Ein Homomorphes Commitment enthält zusätzlich die Eigenschaft, dass überprüft werden kann ob die Summe der festgelegten Werte aus den einzelnen Werten besteht, ohne die einzelnen Werte in Klartext zu übertragen. Nachfolgend wird das Homomorphe Commitment am Beispiel von elektronischen Wahlen erklärt. Jeder Wähler verschlüsselt seinen Entscheid und übermittelt das berechnete Commitment an die Stimmenzähler. TA.PAWI.FS2012 | Aspects of Privacy-Preserving Toll Pricing | C. Moser / T. Galliker 21 / 62 Hochschule Luzern Technik & Architektur Report | Theoretische Grundlagen der Kryptographie Abbildung 6: Elektronische Wahlen Die Stimmenzähler können nun das Produkt der einzelnen Commitments berechnen, welches bei einem homomorphen Commitment dem Commitment der Summe der einzelnen Werte entspricht. E ( X ) * E (Y ) * E ( Z ) = E ( X + Y + Z ) Durch das Entschlüssen von E ( X + Y + Z ) kann das Wahlergebnis eingesehen werden, nicht jedoch, was jeder einzelne gewählt hat. 3.4 Zero-Knowledge Proof of Knowledge Das Zero-Knowledge Proof of Knowledge kann gut anhand eines Beispiels der Höhle von Ali Baba erklärt werden. 1B Alice möchte Bob beweisen, dass sie ein Geheimnis (eine Tür in einer Höhle öffnen kann) weiss, ohne Bob das Geheimnis zu zeigen. 1. Alice läuft in die Höhle. Dafür nimmt sie einen der beiden 2B Eingänge. Bob wartet draussen. 2. Bob begibt sich zum Eingang der Höhle und befiehlt Alice einen bestimmten Ausgang als Rückweg zu nehmen. 3. Alice beweist Bob (u.U.), dass sie im Besitz des Schlüssels der Türe ist, indem sie der Anweisung folgt. Eigenschaften von Zero-Knowledge Proofs [24]: 1A Abbildung 7: 3 Höhle von Ali Baba [26] • Vollständigkeit: Sofern Alice (Prover) das Geheimnis kennt, kann sie dies gegenüber Bob (Verifier) beweisen. • Korrektheit/Eindeutigkeit: Es darf hingegen nicht möglich sein, dass Alice ohne Wissen des Geheimnisses einen korrekten Beweis erbringen kann. • Bob (Verifier) weiss nach Anwendung des Zero-Knowledge Proofs lediglich, ob Alice das Geheimnis besitzt. Er hat allerdings nach dem Verfahren keine Kenntnisse über welches Geheimnis Alice verfügt. Um seinem Gegenüber zu beweisen, dass man über das Geheimnis verfügt, muss dieses Geheimnis in den Beweis einfliessen. Andernfalls wär es möglich, dass jeder einen korrekten Beweis erbringen könnte. Deswegen werden beim Zero-Knowledge Proof mathematische Probleme (z.B. diskrete Logarithmen) verwendet, die schwierig zu lösen sind. Damit der Verifier nicht innerhalb einer polynominalen Zeit aus dem erhaltenen Beweis das Geheimnis ermitteln kann. Ein Problem ist in Polynominalzeit lösbar, sofern die Rechenzeit m mit der Problemgrösse n nicht stärker als mit einer Polynomfunktion wächst. [24][27] TA.PAWI.FS2012 | Aspects of Privacy-Preserving Toll Pricing | C. Moser / T. Galliker 22 / 62 Hochschule Luzern Technik & Architektur Report | Softwarearchitektur 4 Softwarearchitektur In diesem Kapitel ist der mögliche Aufbau einer PrETP Applikation beschrieben. Dazu gehören unter anderem eine abstrakte Systemübersicht, die Komponenten- und Klassenansichten, Prozesse und Abläufe von Geschäftsprozessen innerhalb der involvierten Komponenten, die Datenstrukturen sowie die internen und externen Schnittstellen. 4.1 Systemübersicht Das Gesamtsystem besteht grundsätzlich aus drei verschiedenen Einheiten, welche untereinander wie auch mit externen Systemen interagieren. Die Abbildung 8 illustriert eine Abstraktion des Gesamtsystems. Abbildung 8: • Systemübersicht Toll Service Provider (TSP): Diese Einheit stellt die staatliche Strassenverwaltung dar. Der TSP hat die Hoheit über ein bestimmtes Strassennetz. Er legt die Nutzungsbestimmungen sowie die Preise für die Benutzung des Strassennetzes fest. Der TSP kommuniziert periodisch mit den ihm unterstellten Fahrzeugen (resp. On-board Units der jeweiligen Fahrzeuge), um Abrechnungsinformationen abzurufen. • Toll Charger (TC): TCs werden von den TSPs bereitgestellt, um Beweismaterial für spätere Wahrheitsprüfungen zu sammeln. Fahrzeugstandorte werden systematisch aufgezeichnet, ohne dass dabei die Erkennung eines bestimmten Bewegungsmusters oder die genaue Verfolgung des Fahrzeugs möglich ist. Ein TC generiert immer einen Nachweis, dass ein bestimmtes Fahrzeug zu einer bestimmten Zeit an einem bestimmten Ort war. Dieser Nachweis kann beispielsweise mit Hilfe eines stationären Nummernschildscanners, durch eine mobile Polizeipatrouille oder mit Hilfe von Verkehrsbussen (Parkbusse, Geschwindigkeitsübertretung) erbracht werden. Die Möglichkeiten zur Erfassung von solchen Nachweisen sind unerschöpflich. Dabei darf aber nicht vergessen werden, dass die Privatsphäre des Fahrzeughalters höchste Priorität haben muss. • On-board Unit (OBU): Jedes Fahrzeug, welches sich unter der Hoheit eines bestimmten TSP’s bewegt, wird mit einer OBU bestückt. Dieses Gerät ist für die GPS Lokalisierung und Wegaufzeichnung sowie für die Berechnung der Kilometerpreise zuständig. Mittels kryptographischer Protokolle werden Wahrheitsprüfungen durchgeführt, welche einen allfälligen Missbrauch der OBU aufdecken können. GPS Weginformationen werden dabei von der OBU zu TA.PAWI.FS2012 | Aspects of Privacy-Preserving Toll Pricing | C. Moser / T. Galliker 23 / 62 Hochschule Luzern Technik & Architektur Report | Softwarearchitektur keinem Zeitpunkt an den TSP übermittelt, es sei denn, der TSP ist ohnehin schon in Besitz eines Beweises für einen bestimmten Wegpunkt. So bleibt die Privatsphäre des Fahrzeughalters effektiv geschützt. 4.2 Komponentenübersicht Um ein besseres Verständnis der involvierten Softwarekomponenten zu erlangen, wurde die Systemübersicht in feinere, softwaretechnische Einheiten heruntergebrochen. Abbildung 9 illustriert eine aufs Wesentliche reduzierte Komponentenübersicht. Nachfolgend werden die einzelnen Komponenten genauer beschrieben. Die Spezifikation der Schnittstellen ist unter Kapitel 4.6 auf Seite 41 zu finden. tspclient tsp.properties common ITSP obu.properties IT SP tspserv ice tspdb Abbildung 9: 4.2.1 • obuclient IOBU obudb Komponentendiagramm Beschreibung der Komponenten tspservice: Das Kernstück des TSP‘s ist die Service Applikation tspservice. Als Datengrundlage bedient sich die Komponente einer dedizierten Datenbank, tspdb, welche Informationen über Fahrzeuge, Preismodelle, Karten sowie Abrechnungen bereitstellt. Die Toll Charger Komponente wird aus Zeitgründen innerhalb der Komponente tspservice realisiert. • tspclient: Die Komponente tspservice wird über die GUI-Komponente tspclient gesteuert. • obuclient: Die fahrzeugseitige Softwarekomponente sammelt GPS Informationen und speichert diese in die fahrzeuglokale Datenbank obudb. Zur Kommunikation mit dem TSP wird ein GSM Datenmodem verwendet. • common: Es wird eine Bibliothek benötigt, welche gemeinsam verwendete Methoden, Datentypen und Interfaces anderen Komponenten zugänglich macht. In dieser common-Bibliothek befinden sich nebenbei auch die Implementationen der kryptographischen Protokolle sowie der API’s, welche für die Kommunikation zwischen TSP und OBU zuständig sind. 4.2.2 Kommunikation zwischen den Komponenten TSP Client TSP Service TSP Service OBU Die Kommunikation zwischen TSP Client, TSP Service und den OBUs wird mittels XMPP realisiert. [40]. XMPP ist ein Instant Messanging Protokoll und basiert auf dem RPC-Prinzip. Zur Entkopplung der Komponenten werden Interfaces eingesetzt. TSP DB Die TSP Komponente nutzt die Java Persistance API (JPA) um Informationen zwischen Domain Objects (Entity Klassen) und den Datenbank Tabellen auszutauschen. TA.PAWI.FS2012 | Aspects of Privacy-Preserving Toll Pricing | C. Moser / T. Galliker 24 / 62 Hochschule Luzern Technik & Architektur Report | Softwarearchitektur 4.3 Klassenübersicht Dieses Kapitel gibt einen tieferen Einblick in die eingesetzten Klassen der einzelnen Komponenten. Aus Gründen der Übersichtlichkeit werden nur die wesentlichen Klassen mit den wichtigsten Attributen und Methoden aufgeführt. 4.3.1 Klassen der Komponente tspservice Thread TSPEngine Main + «i nstantiate» main(String[]) : void DataM anager - connector: Connector monitor: Object = new Object() opModel: OPModel pricingModel: PricingModel roomConn: Connection rpc: IMRpc secManager: SecurityManager userConn: Connection + + + initCommunication() : void interrupt() : void run() : void T SPEngine() -opModel «use» - entityManager: EntityManager entityManagerFactory: EntityManagerFactory instance: DataManager opModel: OPModel pricingModel: PricingModel + + + - DataManager() getInstance() : DataManager getOPM odel() : OPModel getPricingModel() : PricingModel initEntityManager() : void -instance -pricingModel model::OPModel AbstractPricingModel model::PricingModel - challengeProvider: ChallengeProvider {readOnly} paymentProvider: PaymentProvider {readOnly} vehicleProvider: VehicleProvider {readOnly} + + + + + + + + + + + + getChallenge(Integer) : Collection<ChallengeDT O> getChallenge(Integer, OPStatus) : Collection<ChallengeDTO> getChallenges() : Collection<ChallengeDT O> getVehicle() : Collection<VehicleDTO> getVehicleByID(int) : VehicleDT O getVehicleByRegistrationNumber(String) : VehicleDT O OPModel(EntityManager) removeVehicle(VehicleDT O) : void saveChal lenge(Chal lengeDT O) : int savePayment(PaymentDT O) : int saveVehi cle(VehicleDT O) : int setPublicKey(VehicleDTO) : int - gpspointsProvider: GpspointProvider {readOnly} mapProvider: MapProvider {readOnly} pricingProfileProvider: PricingProfil eProvider {readOnly} + + + + + + + + + + getMaps(GPSPointDTO) : Coll ection<MapDT O> getMaps() : Collecti on<MapDT O> getMaps(PricingProfileDT O) : Collection<MapDT O> getPoints(MapDTO) : Collection<GPSPointDTO> getPoints() : Collection<GPSPointDTO> getPointsWithinMargin(GPSPointDTO, Bi gDecimal) : Collection<GPSPointDTO> getPricingProfile(M apDT O, Date) : PricingProfileDTO getPricingProfiles() : Coll ection<PricingProfileDT O> Pri cingM odel(EntityManager) savePricingProfile(Collection<PricingProfileDTO>) : void T -vehicleProvider -mapProvider provider::ProviderBase prov ider::VehicleProv ider -challengeProvi der prov ider::ChallengeProv ider -paymentProvider prov ider::PaymentProv ider # - entityM anager: EntityM anager transactionCounter: int = 0 # # + + # # # + # # # # beginTransaction() : void comm itTransaction() : void createNamedQuery(Stri ng) : Query createQuery(String) : Query flush() : void m erge(T) : T persist(T) : void ProviderBase(EntityManager) refresh(T ) : void refresh(Collection<T>) : void remove(T) : void rollbackTransaction() : void prov ider::MapProv ider -gpspointsProvider prov ider::GpspointProv ider -pricingProfileProvider prov ider::PricingProfileProv ider Abbildung 10: Klassen der Komponente tspservice TA.PAWI.FS2012 | Aspects of Privacy-Preserving Toll Pricing | C. Moser / T. Galliker 25 / 62 Report | Softwarearchitektur Main Hochschule Luzern Technik & Architektur Der Eintrittspunkt der Komponente tspservice bildet die Main Klasse, welche die Runnable-Klasse TSPEngine in einem neuen Thread startet. TSPEngine Die Klasse TSPEngine ist die eigentliche Service Klasse, welche die Kommunikation zum XMPP Server herstellt, die Datenbankverbindung aufbaut und die Fassadenklassen OPModel und PricingModel initialisiert. DataManager Die Singleton-Klasse DataManager initialisiert den EntityManager, welcher die JPADatenbankverbindung bereitstellt. PricingModel PricingModel implementiert die abstrakte AbstractPricingModel Klasse aus der common Library. In dieser Klasse sind Methoden implementiert, welche die Aufrufe von Pricing Profiles, Maps und GPS Points zusammenführen. PricingModel nutzt die drei Provider-Klassen PricingprofileProvider, MapProvider, GpspointProvider für Datenzugriffe auf der Datenbank. OPModel OPModel implementiert Methoden im Zusammenhang mit den Entities Vehicle, Challenge und Payment. Die Provider-Klassen VehicleProvider, ChallengeProvider, PaymentProvider werden für Datenzugriffe genutzt. *Provider Sämtliche Provider-Klassen implementieren Zugriffsmethoden, um Entitiy Objekte der jeweiligen Typen aus der Datenbank zu lesen bzw. zu speichern. Da in diesem Projekt keine generische Umwandlung von Entity Object zu Data Transfer Object (DTO) genutzt wird, sind die Providerklassen auch für die Implementierung von entsprechenden Umwandlungsmethoden verantwortlich. ProviderBase Alle wichtigen Datenbank-Funktionen werden in der ProviderBase implementiert. Die Methoden werden an die Provider-Klassen weitervererbt. 4.3.2 Klassen der Komponente tspclient FormManager Die Klasse FormManager ist für die Kommunikation zum XMPP Server zuständig. Das heisst alle Anfrage vom tspclient an den tspservice werden über die Klasse FormManager versendet. AddChallenge Die Klasse AddChallenge erweitert die Java-Swing Klasse JPanel und ist somit ein Tab auf der Benutzer-Oberfläche. Über den Tab „AddChallenge“ kann der Benutzer einen Beweis (Challenge) erfassen. OptimisticPayment Die Klasse OptimisticPayment ist ebenfalls ein Tab auf der Benutzer-Oberfläche. Über den Tab „OptimisticPayment“ kann eine Abrechnung für ein bestimmtes Fahrzeug gestartet werden. Zudem wird das Ergebnis der Abrechnung und der während der Abrechnung geprüften Beweise angezeigt. TA.PAWI.FS2012 | Aspects of Privacy-Preserving Toll Pricing | C. Moser / T. Galliker 26 / 62 Hochschule Luzern Technik & Architektur Report | Softwarearchitektur 4.3.3 Klassen der Komponente obuclient Activity Service MainActiv ity serv ice::GPSLoggerServ ice - logView: LogView txtGPSPosition: T extView txtLastCharge: TextView txtOpenWaypoints: T extView txtPaymentRecords: T extView txtPricePerDistance: TextView txtPricingProfile: T extView txtServiceStatus: T extView txtXMPPAddress: T extView ~ + # doBindService() : void doUnbindService() : void onCreate(Bundle) : void onDestroy() : void «instantiate» - connector: Connector dbHelper: DatabaseHelper groupParameters: GroupParameters keyPairOBU: KeyPair locationListener: LocationListener locationManager: LocationManager pricingModel: PricingModel publicKeyT SP: PublicKey systemParameters: SystemParameters updateManager: UpdateManager - initCommunication() : void initDatabase() : void initLocationService() : void initSecurityParams() : void data::DatabaseHelper - database: SQLiteDatabase databasePath: String providerList: ArrayList<AbstractDataProvider> = null + + + + + + + addProvider(AbstractDataProvider) : void close() : void createTables() : void DatabaseHelper(Context) dropTables() : void getProvider(Class) : AbstractDataProvider open(Context) : void -dbHelper -activity -logView Dialog android.view.View.OnClickListener LogView - activity: MainActivity listMessages: ListView + LogView(Context, MainActivity) -updateManager -pricingModel AbstractPricingModel serv ice::UpdateManager - connector: Connector {readOnly} gpspointsProvider: GpspointProvider {readOnly} mapProvider: MapProvider {readOnly} pricingProfile2MapProvider: PricingProfile2MapProvider {readOnly} pricingProfileProvider: PricingProfileProvider {readOnly} + + + + updateGPSPoints() : void UpdateManager(DatabaseHelper, Connector) updateMaps() : void updatePricingProfiles() : void AbstractDataProvider data::PricingProfile2MapProv ider AbstractDataProvider data::MapProv ider AbstractDataProvider serv ice::PricingModel - comScheme: CommitmentScheme gpspointsProvider: GpspointProvider {readOnly} keyPairOBU: KeyPair mapProvider: MapProvider {readOnly} messageListener: MessageListener paymentRecord2WaypointProvider: PaymentRecord2WaypointProvider {readOnly} paymentRecordProvider: PaymentRecordProvider {readOnly} pricingProfileProvider: PricingProfileProvider {readOnly} publicKeyTSP: PublicKey sysParams: SystemParameters waypointProvider: WaypointProvider {readOnly} zpk: ZeroKnowledgeProof + + + + + + + + + + + + + createWaypoint(GPSPointDTO, double, PricingProfileDTO) : GPSPointDT O getDistanceT o(GPSPointDT O, GPSPointDT O, BigDecimal) : double getMaps() : Collection<MapDT O> getMaps(GPSPointDTO) : Collection<MapDTO> getMaps(PricingProfileDT O) : Collection<MapDT O> getPaymentRecords(Date) : List<PaymentRecord> getPoints(MapDT O) : Collection<GPSPointDTO> getPoints() : Collection<GPSPointDTO> getPointsWithinMargin(GPSPointDT O, BigDecimal) : Collection<GPSPointDTO> getPricingProfile(MapDT O, Date) : PricingProfileDT O getPricingProfiles() : Collection<PricingProfileDT O> hashAndSign(Object) : Signature PricingModel(DatabaseHelper) data::GpspointProv ider AbstractDataProvider AbstractDataProvider data::PaymentRecordProv ider data::PricingProfileProv ider AbstractDataProvider data::WaypointProv ider AbstractDataProvider data::PaymentRecord2WaypointProv ider Abbildung 11: Klassen der Komponente obuclient TA.PAWI.FS2012 | Aspects of Privacy-Preserving Toll Pricing | C. Moser / T. Galliker 27 / 62 Hochschule Luzern Technik & Architektur Report | Softwarearchitektur MainActivity Die MainActivity Klasse bildet den Eintrittspunkt der Android Applikation. Sie stellt ein einfaches GUI bereit, Lokationsinformationen sowie Zahlungsinformationen gehören: • welches den Systemstatus, gegenwärtige Zahlungsinformationen ausgibt. Zu den Open Waypoints: Anzahl Wegpunkte und Gesamtdistanz, welche noch zu keinem Payment Record zusammengefasst wurden, also sog. „Open Waypoints“. • Payment Records: Anzahl Payment Records (=Kilometersegmente) und Gesamtdistanz sowie Gesamtkosten, welche bereit sind für die nächste Abrechnung. LogView Die LogView sammelt in einer ListView Debug und Log Nachrichten, welche von der Software abgefangen werden. Diese View hilft dem Betreiber bei der allfälligen Fehlersuche. GPSLoggerService Der GPSLoggerService ist das Kernstück des OBU Clients. Er wird als Android Service ausgeführt und nach dem Systemstart des Android Betriebssystems automatisch gestartet. Der Service initialisiert die Datenbankverbindung über die Klasse DatabaseHelper, verbindet das Android Gerät mit dem XMPP Server, holt sich bei der TSP aktuelle System Parameter, Karten- sowie Preisinformationen und sorgt schliesslich dafür, dass der GPS Sensor Lokationsinformationen bereitstellt. DatabaseHelper Methoden für den Datenbankzugriff auf SQLite werden in DatabaseHelper implementiert. UpdateManager Der UpdateManager stellt Methoden bereit, um beim TSP aktuelle Karten- und Preisinformationen herunterzuladen. Siehe auch Kapitel 5.3 Seite 46. PricingManager PricingModel implementiert die abstrakte AbstractPricingModel Klasse aus der common Library. Hier werden die wichtigsten Prozesse rund um die Erfassung von Waypoints, die Segmentierung Abrechnungsvorgang implementiert. *Provider von Payment Records und den Die Provider-Klassen implementieren Methoden, um auf die SQLite Datenbank zuzugreifen. Sie stellen die Datenbankinformationen in DTO’s bereit, sodass keine weitere Konvertierung nötig ist, um die Objekte zwischen OBU und TSP auszutauschen. TA.PAWI.FS2012 | Aspects of Privacy-Preserving Toll Pricing | C. Moser / T. Galliker 28 / 62 Hochschule Luzern Technik & Architektur Report | Softwarearchitektur 4.3.4 Klassen in Komponente common AbstractPricingModel Diese Klasse implementiert sämtliche Funktionen zur Preisberechnung, welche auf der TSP wie auch auf der OBU verwendet werden. Die implementierten Methoden müssen auf beiden Systemen identische Resultate liefern. Da TSP und OBU unterschiedliche Datenbanken unterhalten und daher den Datenzugriff unterschiedlich gestalten, werden einige Methoden „abstrakt“ vorgegeben. Diese müssen jeweils auf TSP und OBU implementiert werden. Beispiel: public abstract getPricingProfile(Map); CommitmentScheme Die Klasse CommitmentScheme enthält die Methoden „commit“ und „open“. Mit der Methode „commit“ kann ein Commitment für einen Preis berechnet werden. Als Rückgabewert erhält man das errechnete Commitment, sowie den Schlüssel (open) um das Commitment zu öffnen. Mit der „open“ Methode wird eine Commitment geöffnet. Das heisst es wird geprüft, ob man für ein Preis, dasselbe Commitment erhält, wie das Commitment welches als Eingabeparameter mitgegeben wurde. CryptoUtils Die Klasse CryptoUtils wurde aus dem Projekt „Identity Mixer Anonymous Credential System“ von IBM übernommen [31]. Diese Klasse stellt die mathematischen Basisfunktionen bereit. Beispielsweise folgende: • multiExpMul: berechnen eines Produktes von einem Set von modularen Potenzierung. • Diese genPrime: ermitteln einer Primzahl. Methoden werden in den Crypto-Klassen (CommitmentScheme, HashScheme, SignatureScheme) eingesetzt. HashScheme Diese Klasse stellt eine Methode „generateHash“ zur Verfügung welche aus einem Text einen Hash generiert. Zudem ist eine Methode „verifyHash“ implementiert welche prüft, ob ein Hash Wert aus einem mitgegeben Text erzeugt wurde. SignatureScheme Diese Klasse bietet zwei Methoden an. Die Methode „SigSign“ erzeugt für einen mitgegebenen BigInteger-Wert eine CL-RSA Signatur. Diese Methode wird verwenden um die Preise der Tabelle Pricing Model zu signieren, sowie für das Signieren von Hash-Werten welche über das Kommunikationsprotokoll übertragen werden. Die Methode „SigVerify“ erlaubt, dass geprüft werden kann, ob eine Signatur zu einem bestimmten BigInteger-Wert gehört und ob der BigInteger-Wert mit dem erwarteten Schlüssel signiert wurde. ZeroKnowledgeProof Diese Klasse enthält die Methoden „computeProof“ um eine Proof zu erstellen und „verifyProof“ um einen Proof zu prüfen. Das ZeroKnowledgeProof Verfahren wird verwendet, um zu prüfen, dass die OBU korrekte Preise verwendet. Das heisst die OBU darf nur Preise verwenden, welche von der TSP signiert wurden. Es sollte aber für die TSP nicht möglich sein, anhand eines Empfangen Proofs die Signatur herzuleiten. Denn dadurch wüsste die OBU welcher Preis für diesen Abschnitt verwendet wurde. KeyPair Die Klasse KeyPair erzeugt beim Erstellen einer Instanz ein Schlüsselpaar bestehend aus Public Key und Private Key. TA.PAWI.FS2012 | Aspects of Privacy-Preserving Toll Pricing | C. Moser / T. Galliker 29 / 62 Report | Softwarearchitektur 4.4 Hochschule Luzern Technik & Architektur Prozesse und Abläufe Die nachfolgenden Grafiken visualisieren die als Use Cases erfassten Geschäftsprozesse, welche vom Projektsystem unterstützt werden müssen. Die Referenznummern der Abbildungen korrespondieren mit der im Anschluss gegebenen Erklärungstabellen. Die verwendeten Formeln stammen teilweise aus [7]. 4.4.1 TSP-seitige Prozesse Die nachfolgend illustrierten Abläufe umfassen beide Komponenten, TSP Client und TSP Service. Der TSP Client agiert als Initiator von Prozessen während TSP Service auf Befehle wartet und Rückmeldungen verarbeitet. Besonders nennenswerte Aktionen werden im Anschluss an die Abbildung 12 detaillierter erklärt. Abbildung 12: Zustandsdiagramm der Prozesse seitens OBU TA.PAWI.FS2012 | Aspects of Privacy-Preserving Toll Pricing | C. Moser / T. Galliker 30 / 62 Report | Softwarearchitektur Hochschule Luzern Technik & Architektur Initialisierung des Security Managers 1.1 Der Security Manager ist zuständig für das Einlesen der System Parameter. Diese beinhalten vor allem Schlüssellängen und andere statische Parameter. Zudem wird das Schlüsselpaar für den TSP generiert, welches aus einem Privat und Public Key besteht. 1.2 Beim Initialisieren wird auch geprüft, ob es Pricing Profiles gibt, welche zum Preis noch keine gültige Signatur erhalten haben. Bei Bedarf wird diese erstellt und in die Datenbank geschrieben. Group Parameters für OBU generieren 2.1 Ein Schritt der Initialisierungsphase von OBUs beinhaltet das Anfragen von Group Parameters (g0, g1) beim TSP Service. Auf solche Anfragen reagiert der TSP Service, indem er für die anfragende OBU neue Group Parameters generiert (sofern diese nicht bereits existieren). 2.2 Diese neuen Group Parameters werden in der TSPDB dem entsprechenden Fahrzeug hinterlegt. 2.3 Schliesslich werden die Group Parameters als Rückmeldung an die anfragende OBU gesendet. Optimistic Payment Anfrage lancieren 3.1 Auf dem TSP Client wird ein Fahrzeug ausgewählt, für welches der Optimistic Payment Prozess gestartet wird. 3.2 Als nächstes wird das Enddatum der Abrechnungsperiode festgelegt. Dieses Enddatum bestimmt, welche der auf der OBU gespeicherten Payment Records in die Abrechnung einbezogen werden. Um zu vermeiden, dass einige Payment Records nie abgerechnet werden, kann kein Anfangsdatum gesetzt werden. 3.3 Sofern die angefragte OBU irgendwelche Payment Records übermitteln kann, werden diese Records an Verifikationsfunktionen weitergereicht. Ansonsten wird der Optimistic Payment Prozess an dieser Stelle beendet. TA.PAWI.FS2012 | Aspects of Privacy-Preserving Toll Pricing | C. Moser / T. Galliker 31 / 62 Report | Softwarearchitektur 3.4 Hochschule Luzern Technik & Architektur Die Verifikation der zurückgegebenen Payment Records umfasst zwei wesentliche Schritte: • Prüfung des Zero-Knowledge Proofs. Für alle Payment Records wird geprüft, ob die korrekte Preissignaturen und somit die korrekten Preise verwendet wurden. Dadurch wird verhindert, dass auf der OBU falsche Preise im Negativenbereich gewählt werden können, welche den Totalpreis verringern würden. • Anschliessend wird das Produkt der einzelnen Commitments cpk aus den Payment Records berechnet und mit dem geöffneten Commitment der Summe fee verglichen. Hier wird geprüft, ob sich die von der OBU mitgeteilte Totalsumme fee aus den Teilsummen der Payment Records zusammensetzt. 4 Proof-Challenge Phase 4.1 Als nächstes wird geprüft, ob das Fahrzeug, welches soeben mit Optimistic Payment abgerechnet wurde, in der Abrechnungsperiode Challenges vorliegen. 4.2 Sofern Challenges existieren, werden diese sequentiell an jene OBU gesendet, welche soeben den Optimistic Payment Prozess durchlaufen hat. 4.3 Die Antworten werden von TSP Service ausgewertet (Kapitel 4.4.3, Seite 36) und in der Datenbank zur Weiterverarbeitung durch das TSP Personal gespeichert. TA.PAWI.FS2012 | Aspects of Privacy-Preserving Toll Pricing | C. Moser / T. Galliker 32 / 62 Hochschule Luzern Technik & Architektur Report | Softwarearchitektur 4.4.2 OBU-seitige Prozesse Abbildung 13 illustriert die Prozesse, welche auf der OBU implementiert werden. Besonders nennenswerte Aktionen werden anschliessend detaillierter erklärt. OBU launched onCreate Already configured? No Create Database Schema Yes Initialize Database Get System Parameters and Public Key from TSP Initialize Communication Get GroupParameters from TSP Calculate Distance to last Waypoint Update Pricing and Map Information Generate KeyPair Store new GPS Waypoint to Database Initialize Location Service Send Public Key to TSP OBU running Update Pricing and Map Information 1.1 Search Map to which received GPS Point belongs 1.2 1.3 2.1 Sum(OpenWaypoints) > 1km ? No Yes 3.1 2.2 Calculate Price for given GPS Point onDestroy Get new Group Parameters from TSP 3.2 2.3 Calculate Hash of (GPSPoint, Date) Calculate Total Fee Disconnect 3.3 Calculate Commitment for Total Fee 2.4 Calculate Commitment for the Price in Payment Table 2.5 3.4 Send Payment response to TSP Generate a Proof for the Price in Payment Table 3.5 2.6 Store new Payment Record to Database Check Challenges and send Responses to TSP 3.6 OBU shut down Delete Payment Records Abbildung 13: Zustandsdiagramm der Prozesse seitens OBU TA.PAWI.FS2012 | Aspects of Privacy-Preserving Toll Pricing | C. Moser / T. Galliker 33 / 62 Report | Softwarearchitektur Hochschule Luzern Technik & Architektur Neuer Wegpunkt festhalten 1.1 Finde die Map, zu welcher der aufgezeichnete GPS Punkt passt. 1.2 Berechne die Distanz vom aufgezeichneten GPS Punkt zum letzten festgehaltenen GPS Punkt. 1.3 Speichere den neuen GPS Wegpunkt zusammen mit der berechneten Distanz in die Datenbank. Neuer Payment Record erzeugen 2.1 Falls die Gesamtdistanz der offnen Wegpunkten eine bestimmte Distanz (=Länge eines Abrechnungssegments, z.B. 1km) überschreitet, so wird ein neuer Payment Record angelegt. 2.2 Für jeden neuen Payment Record muss der aktuelle Zonentarif bestimmt werden. Dafür steht eine Methode bereit, welche für einen gegebenen GPS Punkt lock die entsprechende Map findet und mit gegebenem Zeitstempel timek herausfindet, welcher Zonentarif pk verrechnet werden muss. (Siehe auch Kapitel 5.2 Preisberechnungsfunktion, Seite 43). 2.3 Für jeden Payment Record wird ein Hash generiert. Der Inputwert für den Hash ist ein String bestehend aus dem aufgezeichneten GPS Punkt lock und dem Zeitpunkt timek an welchem der GPS Punkt aufgezeichnet wurde. 2.4 Für den gewählten Preis wird ein kryptographisches Commitment berechnet. 2.5 Anschliessend wird mit Hilfe der Preissignatur, dem Public Key von TSP sowie den Group Parameters ein non-interactive Zero-Knowledge Proof of Signature Posession berechnet. Beim Zero-Knowledge Proof geht es darum, dem gegenüber zu Beweisen, dass man über eine Geheimnis verfügt, in diesem Fall die Signature des Preises kennt, ohne dem Gegegenüber die Signaur offen zu legen. (Siehe Kapitel 3.4 Zero-Knowledge Proof of Knowledge, Seite 22). 2.6 Speichere den neuen Payment Record in die Datenbank und assoziere diesen mit den dazugehörigen Teilstrecken, welche in Form von GPS Wegpunkten aufgezeichnet wurden. TA.PAWI.FS2012 | Aspects of Privacy-Preserving Toll Pricing | C. Moser / T. Galliker 34 / 62 Report | Softwarearchitektur Hochschule Luzern Technik & Architektur Optimistic Payment Prozess starten 3.1 Die OBU bezieht neue Group Parameters (g0, g1), welche für die Berechnung von neuen Payment Records verwendet werden. 3.2 Berechne aus den Preisen pk der einzelnen Payment Records die Totalsumme fee. 3.3 Durch das Summieren der einzelnen Schlüssel (open) für die Commitments erhält man den Schlüssel um das Commitment der Totalsumme zu öffnen. 3.4 Die berechneten Werte fee und openfee werden zusammen mit den Payment Records bestehend aus Hash hk, Commitment cpk und Proof π in einer Nachricht m zusammengefasst. Diese Nachricht wird zusammen mit der signierten Nachricht an den TSP übertragen. 3.5 Nach erfolgtem Payment Prozess wartet die OBU auf Challenges vom TSP. Ein Challenge ist ein formeller Nachweis, dass ein Fahrzeug zu einer bestimmten Zeit an einem bestimmten Ort gewesen sein muss. Der Challenge Datentyp beinhaltet deshalb die Position (Longitude, Latitude) sowie ein Zeitstempel. Die OBU muss den Challenge bestätigen können. (Siehe Kapitel 4.4.3, Seite 36). 3.6 Wenn alle Challenges abgearbeitet wurden, kann die OBU sämtliche bereits abgerechnete Payment Records und dazugehörige GPS Wegpunkte aus der Datenbank löschen. Es dürfen aber keineswegs Payment Records oder GPS Wegpunkte gelöscht werden, welche noch nicht abgerechnet wurden! TA.PAWI.FS2012 | Aspects of Privacy-Preserving Toll Pricing | C. Moser / T. Galliker 35 / 62 Report | Softwarearchitektur 4.4.3 Hochschule Luzern Technik & Architektur Interaktion zwischen TSP und OBU: Proof-Challenge Das Proof-Challenge Verfahren beschreibt jenen Prozess, welcher direkt nach dem Optimistic Payment Prozess ausgeführt wird. Nach dem Optimistic Payment Prozess besitzt der TSP genügend Informationen, um die durch die TCs während der vergangenen Abrechnungsperiode aufgezeichneten „Spot Checks“ zu verifizieren. Abbildung 14: Ablauf „Proof Challenge “ um Datenmanipulationen aufzudecken. TA.PAWI.FS2012 | Aspects of Privacy-Preserving Toll Pricing | C. Moser / T. Galliker 36 / 62 Hochschule Luzern Technik & Architektur Report | Softwarearchitektur Response für Proof erstellen Die OBU verifiziert die in der Challenge Nachricht vorgefundene Signatur mit Hilfe des Public Keys von TSP und prüft damit, ob die Nachricht tatsächlich vom TSP stammt. Danach wird in der Tabelle der GPS Wegpunkte nach demjenigen GPS Punkt gesucht, welcher bestmöglich mit der im Challenge vorgefungenen Position (Longitude, Latitude) sowie dem Zeitstempel übereinstimmt. Bei der Suche wird sowohl beim gesuchten GPS Punkt wie auch beim 2 gesuchten Zeitstempel eine bestimmte Marge zugelassen. Findet die OBU einen Punkt, der in unmittelbarer Nähe der Challenge Lokation und zur gegebenen Zeit aufgezeichnet wurde, so sucht die OBU den Payment Record, über welchen dieser GPS Punkt abgerechnet wurde. Anhand des Payment Records kann die OBU herausfinden, welcher GPS Punkt für die Preisberechnung massgebend war. 3 Die Response-Nachricht setzt sich aus einer Identifikation, der gesuchten Lokation, dem verrechneten Preis sowie der kryptographischen Öffnung für das Commitment des Preises zusammen: r = (id, locationk, timek, pk, openk) Die Nachricht wird signiert und zurück an TSP gesendet. Damit ist die Arbeit für die OBU getan. Kann die OBU für einen Challenge kein passender Payment Record finden, so kann die Anfrage nicht beantwortet werden. Dieses Verhalten hilft einerseits Missbrauch aufzudecken, schützt aber auch die OBU vor missbräuchlichen Challenge Requests, ausgehend von TSP. Der TSP verifiziert die in der Response-Nachricht vorgefundene Signatur mit Hilfe des Public Keys der involvierten OBU. Response verifizieren Zuerst prüft der TSP, ob die mit der Response-Nachricht empfangenen Lokations- und Zeitinformationen mit bereits abgerechneten Informationen übereinstimmt. Dazu berechnet der TSP ein Hash von Longitude, Latitude und Zeit: h‘ = H(longitude, latitude, time) Falls der Vergleich erfolgreich ist, weiss der TSP, dass die OBU zu diesem Zeitpunkt keine falschen Lokationsinformationen aufgezeichnet hat. Als nächstes verifiziert der TSP, ob das Preise-Commitment der Response-Nachricht mit einem während der letzten Abrechnungsperiode empfangenen Preis-Commitments übereinstimmt. c’pk = g0pk * g0open mod n pk: Preis deklariert in Response open: Kryptographische Öffnung für das Commitment des Preises pk cpk: Während Optimistic Payment empfangenes Commitment auf Preis pk cpk = c’pk ? Falls der Vergleich erfolgreich ist, weiss der TSP, dass die OBU für das geprüfte Zonensegment denselben Preis verrechnet hat, wie sie in der Response mitgeteilt hat. 2 3 Die Marge muss konfigurierbar sein. In diesem System wird der letzte GPS Punkt eines Payment Records verwendet, um den Zonentarif zu bestimmen. Siehe Kapitel 5.2 Preisberechnungsfunktion, Seite 44. TA.PAWI.FS2012 | Aspects of Privacy-Preserving Toll Pricing | C. Moser / T. Galliker 37 / 62 Report | Softwarearchitektur Hochschule Luzern Technik & Architektur Danach berechnet der TSP den Preis für die empfangene Lokations- und Zeitinformationen anhand der verbindlichen Preisfunktion und prüft, ob das Commitment des Preises denselben Wert ergibt, wie jenes, welches während der letzten Abrechnungsperiode empfangen wurde. p’ = f(locationk, timek) c’pk = g0p’*g0open mod n cpk = c’pk Falls der Vergleich erfolgreich ist, weiss der TSP, dass die OBU für die Berechnung des Preises die korrekte Preisfunktion verwendet hatte. Abschliessend werden die Ergebnisse der Verifikation in die Datenbank gespeichert, sodass sie von TSP Clients eingesehen werden können. TA.PAWI.FS2012 | Aspects of Privacy-Preserving Toll Pricing | C. Moser / T. Galliker 38 / 62 Report | Softwarearchitektur 4.5 Hochschule Luzern Technik & Architektur Datenstrukturen Das PrETP System besteht aus zwei voneinander unabhängigen, verteilten Datenbanken. Die eine Datenbank, nachfolgend TSPDB genannt, dient als Datengrundlage für den Toll Service Provider. Darin werden die verwalteten Fahrzeuge (resp. deren OBUs) sowie die vom TC bereitgestellten Challenges gespeichert. Das zweite Datenbankschema kommt auf den OBU Clients zum Einsatz. Nachfolgend werden beide Schemas visualisiert und spezifiziert. 4.5.1 TSPDB Abbildung 15: Physisches Entity-Relationship-Modell der TSP Datenbank Vehicle Diese Tabelle beinhaltet sämtliche fahrzeugspezifischen Informationen, welche zum Betrieb der TSP notwendig sind. Der Primärschlüssel (vehicleId) ist rein technischer Natur. Die effektive Kennzeichennummer eines Fahrzeugs wird hingegen im Feld registrationNumber abgespeichert. Um die OBU eines Fahrzeugs zu kontaktieren, muss eine gültige Adresse (address) existieren. Das implementierte Kommunikationskonzept mit XMPP basiert auf Adressen im Format von E-Mail Adressen. Deshalb besteht – anders als bei IP-basierten Konzepten – kein Bedarf zur permanenten Aktualisierung der OBU Adresse. Payment Die Payment Tabelle führt Journal über die Zahlungen, welche für ein Fahrzeug ausgelöst wurden. Zu jedem Fahrzeug können beliebig viele Zahlungen eingetragen werden. Der Zeitraum wird jeweils mit periodFrom und periodTo beschränkt. Der verrechnete Betrag wird im Feld fee gespeichert. Schliesslich besitzt jede Abrechnung auch einen Status. Challenge In der Challenge Tabelle werden alle durch TCs festgehaltenen Challenges abgelegt. Grundsätzlich besteht ein Challenge aus einem Zeitstempel (time) und der Positionsinformation (latitude, longitude). TA.PAWI.FS2012 | Aspects of Privacy-Preserving Toll Pricing | C. Moser / T. Galliker 39 / 62 Report | Softwarearchitektur 4.5.2 Hochschule Luzern Technik & Architektur Gemeinsame Datenstruktur Die Datenstruktur für Preis- und Karteninformationen ist auf TSP wie auf OBU dieselbe. Abbildung 16 zeigt die Datenstruktur, welche auf TSP und OBU identisch implementiert ist. Abbildung 16: Physisches Entity-Relationship-Modell, welches von TSP und OBU genutzt wird Pricingprofile Die Tabelle Pricingprofile wiederspiegelt das Preismodell, welches vom TSP vorgegeben wird. Jedes Profil hat eine datierte Gültigkeit (validFrom, validTo) und findet zu einer bestimmten Uhrzeit (timespanFrom, timespanTo) Anwendung. Die Preisfelder pricePerDistance und pricePerEntry enthalten Rappenpreise für eine gefahrene Abschnittslänge (z.B. 1km) respektive für das Eintreten in eine bestimmte Zone (z.B. Stadtzentrum). Map Die Map Tabelle speichert verschiedene Kartenausschnitte, Preisinformationen hinzugefügt werden können. Gpspoint Jede Map besteht aus mindestens drei Punkten. Die Gpspoint Tabelle speichert die Koordinaten, welche eine Map definieren. 4.5.3 zu welchen OBUDB In Abbildung 17 wird die Datenstruktur der OBUDB gezeigt. Abbildung 17: Physisches Entity-Relationship-Modell der OBU Datenbank Waypoint Die Tabelle Waypoint dient zur Aufzeichnung von Positionsinformationen, welche aus dem GPS Sensor des Mobile Devices ausgelesen werden. PaymentRecord In die Tabelle PaymentRecord wird ein Eintrag geschrieben, sobald die Summe der offenen GPS Wegpunkte (sog. „Open Waypoints“) grösser oder gleich der definierten Segmentlänge (z.B. 1km) ist. Sie enthält auch je ein Feld für den kryptographischen Proof, das Commitment auf den Preis sowie den Hash von Lokation+Zeit. TA.PAWI.FS2012 | Aspects of Privacy-Preserving Toll Pricing | C. Moser / T. Galliker 40 / 62 Report | Softwarearchitektur 4.6 Spezifikation der Schnittstellen 4.6.1 Interne Schnittstellen Hochschule Luzern Technik & Architektur Interface Methodensignatur & Beschreibung IOBU charge(Date latestDate) Mit dieser Methode kann der TSP einen Abrechnungsprozess auf der OBU anstossen. In der Abrechnung werden alle aufgezeichneten Strecken bis zum Enddatum berücksichtigt. challenge(ArrayList<ChallengeDTO> challenges) Mit dieser Methode kann der TSP mehrere Beweise (Challenges) an eine OBU senden. Die OBU wird anhand der aufgezeichneten Strecken versuchen, die Beweise zu beantworten. ITSP getMaps() Mit getMaps kann die OBU die aktuellen Maps (Kartenausschnitte) beim TSP anfordern. Eine Map ist eine fix abgesteckte Zone, welche zur Tarifbestimmung genutzt wird. getGPSPoints() Mit diesem Aufruf erhält man die Begrenzungspunkte der Maps. getPricingProfiles() Mit dieser Methode kann die OBU beim TSP die aktuellen Preispläne anfordern. getSystemParameters() Um die System Parameter, welche beispielsweise die Schlüssellängen enthalten, bei der TSP abzufragen getGroupParameters(ArrayList<VehicleDTO> vehicle) Hiermit können die Group Parameter (g0, g1) bei der TSP für ein spezifisches Fahrzeug abgefragt werden. getPublicKeyTSP() Damit kann die OBU den Public Key des TSP in Erfahrung bringen. setPublicKeyOBU(ArrayList<VehicleDTO> vehicle) Hiermit kann die OBU ihren Public Key dem TSP mitteilen. addChallenge(ArrayList<ChallengeDTO> dto) Dadurch wird ein Beweis (Challenge) in der Datenbank gespeichert. getVehicles() Mit diesem Aufruf können alle registrierten Fahrzeuge abgefragt werden. initPayment(Integer vehicleID, Date endDate) Mit diesem Aufruf kann der TSP Client ein Abrechnungsprozess für das angegeben Fahrzeug bei der TSP starten. In der Abrechnung werden alle aufgezeichneten Strecken bis zum Enddatum berücksichtigt. 4.6.2 Externe Schnittstellen Schnittstellen zu Umsystemen sind in diesem Projekt keine vorgesehen. Das System wurde aber so gestaltet, dass eine Anbindung an ein bestehendes Fahrzeugverwaltungssystem möglich wäre. TA.PAWI.FS2012 | Aspects of Privacy-Preserving Toll Pricing | C. Moser / T. Galliker 41 / 62 Hochschule Luzern Technik & Architektur Report | Design-Entscheide 5 Design-Entscheide In diesem Kapitel sind verschiedene Design-Entscheide dokumentiert. Das Ziel dieses Kapitel ist es, aufzuzeigen, aus welchen Gründen und mit welchen Überlegungen ein bestimmter Design-spezifischer Entscheid getroffen wurde. 5.1 GPS Lokalisierung Das Erfassen von Lokationsinformationen über GPS ist eine der Hauptaufgaben der OBU. Bei diesem Vorgang spielen Umwelteinflüsse eine entscheidende Rolle. Nicht überall ist eine genügende Signalstärke verfügbar, um einen brauchbaren GPS Fix4 zu erlangen. Tunnel, Verbauungen, Wetterbedingungen und Fahrgeschwindigkeit können die Präzision der Positionierung beeinflussen. Die OBU muss sich diesen Gegebenheiten bestmöglich anpassen. Die Android Location API bietet verschiedene Konfigurationsparameter, um das Ausleseverhalten des GPS Sensors zu steuern. Die beiden wichtigsten Parameter, minTime und minDistance, werden abhängig von der aktuellen Fahrgeschwindigkeit mit einer einfachen linearen Funktion ermittelt: Formel zur Berechnung von minTime: Formel zur Berechnung von minDistance: minTime=f(speed)=abs(speed*500)+5000 minDistance=f(speed)=abs(speed*5)+50 Abbildung 18: Funktionsgraph zur Berechnung des minTime Parameters. Abbildung 19: Funktionsgraph zur Berechnung des minDistance Parameters. Ein Zahlenbeispiel: Fährt ein Fahrzeug mit der Geschwindigkeit v=50km/h=13.8m/s, so wird der GPS Sensor mindestens alle 11.9s oder 119m neu ausgelesen. Massgebend ist ersteintreffendes Ereignis. Die Vorteile eines guten Algorithmus’ liegen nicht nur in Erhöhung der Messgenauigkeit und somit der Fairness gegenüber dem bezahlenden Anwender zu finden – es muss auch bedacht werden, dass das Anlegen von GPS Waypoints und den damit verbundenen Payment Records einen gewissen Overhead verursachen. Je feingranularer die GPS Aufzeichnungen, umso mehr Speicherplatz und CPU Ressourcen werden beansprucht. 4 Als GPS Fix bezeichnet man das Feststellen einer GPS Position mit Hilfe von mehreren GPS Satelliten. TA.PAWI.FS2012 | Aspects of Privacy-Preserving Toll Pricing | C. Moser / T. Galliker 42 / 62 Report | Design-Entscheide 5.2 Hochschule Luzern Technik & Architektur Preisberechnungsfunktion Eine zentrale Frage in diesem Projekt dreht sich um die Berechnung der Kilometerleistung. Jede aufgezeichnete Wegstrecke muss unter Berücksichtigung der aktuell geltenden Preismodelle verrechnet werden. Damit das vorliegende Projektsystem funktioniert, müssen die Strassenkarten in Zonen eingeteilt werden. (Der Begriff „Zone“ wird – je nach Kontext – in diesem Dokument abwechselnd mit Tarifzone, Karte oder Map genutzt). Dabei handelt es sich um fix abgesteckte, geographische Zonen, welche zur Tarifbestimmung genutzt werden. Abbildung 20: Kartenausschnitt von Horw (LU) mit vier Tarifzonen. Jede Zone ist einem Preismodell zugeordnet. Über dieses Preismodell kann beispielsweise festgelegt werden, welcher Tarif pro Distanz abhängig von der aktuellen Uhrzeit verrechnet werden muss. Die Gültigkeit von Preismodellen kann vom TSP definiert werden. Hinweis für Weiterentwicklung Als zusätzliche Attribute für die Verrechnung in Preismodellen könnten die Ein- und Ausfahrt in resp. aus Zonen dienen. Solche Modelle sind heute schon Praxis, wie das Beispiel der Stockholmer Innenstadt zeigt. (Siehe [10]). Des Weiteren könnten zur Preisbestimmung auch demographische oder fahrzeugspezifische Merkmale beigezogen werden. TA.PAWI.FS2012 | Aspects of Privacy-Preserving Toll Pricing | C. Moser / T. Galliker 43 / 62 Report | Design-Entscheide Hochschule Luzern Technik & Architektur Um von einem aufgezeichneten GPS Punkt zum berechneten Preis zu gelangen sind folgende Schritte notwendig: 1. Distanz zwischen zwei Punkten berechnen Die Berechnung der Distanz zweier Punkte auf einer Ebene ist mit einfachen mathematischen Methoden möglich. Die Distanz zwischen GPS Punkten auf der Erde ist jedoch eine diffizilere Angelegenheit. In der Fachsprache wird diese Distanz als Orthodrome bezeichnet [11]. Bei der Berechnung von GPS Distanzen auf der Erdoberfläche muss die ellipsoide Form der Erde mitberücksichtigt werden. Die Location Klasse von Android implementiert bereits hilfreiche Funktionen wie distanceBetween(Location a, Location b). So wird beim Feststellen eines neuen GPS Punkts jeweils eine Distanzberechnung zum letzten aufgezeichneten Punkt vorgenommen. Falls dieser nicht existiert (z.B. nach einem Neustart der OBU), wird der letzte GPS Punkt aus der Datenbank gelesen. Falls in der Datenbank ebenfalls kein GPS Punkt vorhanden ist (z.B. bei der ersten Inbetriebnahme oder nach dem Abrechnungsvorgang), so wird mit dem Berechnen der Distanz bis zum nächsten GPS Punkt abgewartet. 2. Kartenzugehörigkeit des gegebenen Punktes bestimmen Sobald ein neuer GPS Punkt bekannt ist, muss dessen Zugehörigkeit zur Preiszone bestimmt werden. Das Problem bei dieser Aufgabe ist wie folgt: Finde aus einer Menge GPS-abgegrenzter Polygonen, jenes Polygon, welches den gegebenen GPS Punkt einschliesst. Das mathematische Problem wird in der Fachsprache als Point-Location Problem bezeichnet. Hinweis für Weiterentwicklung Es gibt bereits verschiedene Suchalgorithmen, um Point-Location Probleme zu lösen. Eines der gängigsten und effizientesten Verfahren implementiert einen KD Search Tree. Algortihmen dieser Art sind in Software Libraries verfügbar (z.B. im Open Source Projekt „Computational Geometry Algorithms Library“ (CGAL; siehe[12]). Des Weiteren könnten solche Probleme direkt in der Datenbank gelöst werden. Gängige Datenbanksysteme stellen sog. spatiale Datentypen (z.B. POINT, LINE oder POLYGON) zur Verfügung. Auch für die auf Android eingesetzte SQLite Datenbank gibt es eine Erweiterung mit spaitalen Datentypen. Eine produktive Umsetzung dieses PrETP-Systems würde sicherlich auf eine Lösung in diesem Rahmen zurückgreifen. Aus zeitlichen Gründen wurde auf die Implementation eines aufwändigen Geometrie-Algorithmus‘ verzichtet. Stattdessen wurde ein eigener, sehr primitiver Suchalgorithmus entworfen, welcher mit geschickter Parametrisierung eine akzeptable Suchleistung bringt. Der vorgeschlagene Suchalgorithmus operiert in wenigen, nachvollziehbaren Schritten. Als Eingabewert wird ein beliebiger Punkt (roter Punkt) gewählt. • Zuerst wird ein quadratischer Suchraum konfiguriert, dessen halbe Länge genau dem Parameter „searchMargin“ entspricht. • Danach werden alle Maps gesucht, deren Abgrenzungspunkte innerhalb des spezifizierten Latitudeund Longitude-Intervalls liegen. (Im Beispiel von Abbildung 21 wird der Punkt {47.009904, 8.305149} als Abgrenzungspunkt zwischen der gelben und der roten Tarifzone gefunden). • Abschliessend kann geprüft werden, ob der gegebene Punkt in einem der gefunden Kartenausschnitte liegt. Für diese Aufgabe wird der Winding Number Algorithmus verwendet [13]. Ausgehend vom gegebenen Punkt wird eine Winkelsumme aller Vektoren, welche sich zwischen dem gegebenen Punkt und den abgrenzenden Punkten des Polygons befinden, berechnet. (Im vorliegenden Fall wäre das Resultat für die gelbe Fläche positiv). TA.PAWI.FS2012 | Aspects of Privacy-Preserving Toll Pricing | C. Moser / T. Galliker 44 / 62 Hochschule Luzern Technik & Architektur Report | Design-Entscheide Abbildung 21: Eingrenzung des Suchraums 3. Zonentarif für Map abfragen Als letztes muss nun für den gefundenen Kartenausschnitt das passende Preisprofil gesucht werden. Diese Aufgabe wird mit einer einfachen Datenbank Join-Query bewerkstelligt. 4. Zonentarif mit Distanz verrechnen Grundsätzlich gibt es verschiedene Möglichkeiten, die aufgezeichneten Wegstücke mit einem Tarif zu verrechnen. Nachfolgend werden zwei in Frage kommende Varianten gegeneinander abgeschätzt: Variante 1 Beschreibung Variante 2 Der Tarif wird beim Feststellen einer neu- Der Tarif wird nach einer fix definierten en GPS Koordinate (onLocationChanged) Distanz abgerechnet (z.B. nach 1km). mit dem entsprechenden Tarif verrechnet. GPS Wegpunkte werden aufgezeichnet Die Verrechnungsintervalle variieren, ab- bis die besagte Marke erreicht wird. Der hängig vom konfigurierten Aufzeich- letzte Punkt dieser Distanz wird zur Be- nungsintervall des GPS Sensors. Vorteile • Einfache Implementierung der Datenstruktur seitens OBU. stimmung der Tarifzone verwendet. • Einfaches Prinzip. • Erlaubt Proof-Challanges und PreisCommitments. TA.PAWI.FS2012 | Aspects of Privacy-Preserving Toll Pricing | C. Moser / T. Galliker 45 / 62 Hochschule Luzern Technik & Architektur Report | Design-Entscheide Nachteile • Neben Commitment auf Preis auch Commitment auf Distanz nötig. 5 • Kann zu unfairen Situationen führen. • Messfehler werden in Kauf genommen.6 Tabelle 8: Vergleich der Varianten zur Berechnung des Kilometertarifs Variante 1 wird in diesem Projekt nicht weiterverfolgt. Ein Toll Charger müsste in Variante 1 als Nachweis nicht nur Kennzeichennummer, Zeit und Ort erfassen; es müsste auch die aufgezeichnete Distanz zwischen zwei aufeinanderfolgenden Toll Charger mitberücksichtigt werden. Ansonsten Distanzinformationen manipuliert werden, während die Preisinformationen korrekt sind. 5.3 könnten die Updates von Karten- und Preisinformationen Karten- und Preismodelle werden vom TSP vorgegeben. (Siehe dazu auch das Kapitel Datenstrukturen, im Speziellen Kapitel 4.5.1, Seite 39). Es wird angenommen, dass die Modelle nicht täglich ändern, sondern Monate wenn nicht Jahre im Voraus definiert und für die OBUs zum Download bereitgestellt werden. Das Pull-Prinzip, nach welchem die OBU sich die aktuellen Daten beschafft, wird nach folgender Logik implementiert: • Eine unkonfigurierte OBU holt sich die aktuellen Karten- und Preisinformationen bei der ersten Inbetriebnahme. • Danach werden die Daten vor jeden Payment Request aktualisiert und es wird geprüft, ob die Payment Records (hk, cpk, π) mit korrekten Preisplänen berechnet wurden. Mit den korrekten Preisplänen ist gemeint, dass die Preispläne verwendet wurden, welche zu diesem Zeitpunkt gültig waren. Sind Payment Records enthalten die mit veralteten Preisplänen berechnet wurden, so müssen diese Payment Records erneut generiert werden. Diese Funktionalität ist vom vorliegenden Prototyp nicht implementiert. Mit diesem Algorithmus ist es möglich, dass eine OBU ggf. keine aktuellen Preis- und Karteninformationen mehr besitzt während die Aufzeichnung von Lokationsdaten fortgesetzt werden kann. Spätestens vor dem eigentlichen Abrechnungsvorgang muss die OBU das genaue Preismodell kennen. Hinweis für Weiterentwicklung Elegant wäre die Übermittlung von Karten-/Preisinformationen über einen Broadcast Mechanismus. Das eingesetzte Kommunikationsprotokoll XMPP würde sog. „Chat Rooms“ bereitstellen, an welchen sich die OBUs anmelden könnten. Alle „Room User“ würden dabei gleichzeitig mit neusten Informationen versorgt (Push-Prinzip). 5 Angenommen, ein Fahrzeug zeichnet in einer preisgünstigen Zone 9 Wegstücke à 100m auf, fährt dann in eine teurere Zone und komplettiert dort das 1km-Verrechnungswegstück. In diesem Fall wird im Prinzip zu viel verrechnet. Die umgekehrte Fahrweise (von teure in günstige Zone fahren) kompensiert diesen Nachteil jedoch. 6 Angenommen, ein Fahrzeug registriert alle 100m einen GPS Wegpunkt. Sobald das Fahrzeug die 1km Marke überschreitet, wird ein 1km-Tupel verrechnet. Die überschüssigen Meter werden zugunsten des Fahrzeugnutzers abgerundet. TA.PAWI.FS2012 | Aspects of Privacy-Preserving Toll Pricing | C. Moser / T. Galliker 46 / 62 Report | Design-Entscheide 5.4 Hochschule Luzern Technik & Architektur Umsetzung des Proof-Challenge Verfahrens Das vorgeschlagene PrETP-System versucht, Fälle von manipulierten Abrechnungsinformationen durch ein Verfahren ähnlich wie Challenge-Response aufzudecken. Die mathematischen Grundlagen zu diesem sogenannten „Proof-Challenge“ Verfahren werden bereits in Kapitel 4.4.3, Seite 36 eingehend erklärt. Über die praktische Umsetzung wird in diesem Kapitel diskutiert. Jeder Challenge Request beinhaltet ein oder mehrere „Proofs“, d.h. Nachweise, dass sich ein Fahrzeug zu einem bestimmten Zeitpunkt an einem bestimmten Ort aufgehalten haben muss. Die OBU hat die Aufgabe, für jeden Challenge eine zufriedenstellende Antwort (Response) zu liefern. Kann Sie dies nicht, so muss davon ausgegangen werden, dass die Daten der OBU nicht mit jenen des Proofs übereinstimmen. 1. GPS Wegpunkt für Challenge finden Bei Erhalt der Challenges sucht die OBU für jeden {location, time}-Tupel einen passenden Datensatz in der Waypoint Tabelle. Dabei geht sie wie folgt vor: • Suche einen Punkt in Tabelle Waypoint, welcher dem gegeben Zeitnachweis time am nächsten kommt7. Eine einfaches SQL Query kann diese Suchanfrage befriedigen: SELECT * FROM waypoint ORDER BY ABS(time – gmttimestamp) ASC LIMIT 1; • Vorsicht: Die Differenz des Zeitstempels kann auch negativ sein. Deshalb müssen hier zwingend absolute Werte verglichen werden. • Prüfe, ob der gefundene Wegpunkt innerhalb der vom TSP vorgegebenen maximalen Distanz- und Zeitmarge liegt. Falls dies nicht der Fall ist, kann die Challenge nicht beantwortet werden. • Ansonsten wird der gefundene GPS Wegpunkt 2. Signifikanter Abrechnungspunkt finden Nachdem ein Wegpunkt gefunden wurde, welcher in innerhalb der vorgegebenen Margen liegt, wird der signifikante Abrechnungspunkt gesucht. Dieser Punkt, der abschliessende eines Payment Records, wurde zur Berechnung des Preises verwendet. Um das Commitment zu bestätigten, muss dieser signifikante Punkt von der OBU als Antwort auf die Challenge zurückgegeben werden. 3. Antwort auf Challenge prüfen Der TSP wertet danach die erhaltenen Responses aus. Dazu geht er wie folgt vor: • Vorgängig werden die in der Challenge gegebenen Zeit- und Lokationsinformationen mit den empfangenen Zeit- und Lokationsinformationen verglichen. Liegen die erhaltenen Werte innerhalb der vorgegebenen Margen8, so kann die Challenge-Response weiterbearbeitet werden. Ansonsten wird die Antwort als ungültig markiert. • TSP sucht in der Datenbank nach einem Hash-Wert, welcher mit dem Hash der empfangenen Lokations- und Zeitinformationen übereinstimmt. • Preis-Commitment mit zurückgegebener Opening und Preis berechnen und mit existierendem Commitment vergleichen. • Anhand der Preisfunktion prüfen, ob TSP denselben Preis verrechnen würde, wie OBU verrechnet hat. 7 Hier wird sofort klar, warum das Thema Zeitsynchronisation (insbesondere zwischen TC und OBU) elementar wichtig ist. Siehe Kapitel 7.3.5, Seite 57. 8 Vorsicht: Die OBUs rechnen die aufgezeichneten GPS Wegpunkte erst nach Vervollständigung des Payment Records ab, beispielsweise nach 1km. Theoretisch wäre es also möglich, dass OBUs sogar erst nach 1.5km oder mehr (je nach Messintervall) einen Payment Record abschliessen können. Das muss bei der Bemessung der Marge berücksichtigt werden. TA.PAWI.FS2012 | Aspects of Privacy-Preserving Toll Pricing | C. Moser / T. Galliker 47 / 62 Report | Design-Entscheide 5.5 Hochschule Luzern Technik & Architektur Persistenz Die nachfolgenden Abschnitte beschreiben, wie die Datenbankzugriffe auf TSP Service und OBU Client realisiert werden. Plattformbedingt mussten zwei verschiedene Ansätze gewählt werden. 5.5.1 TSP Datenbank Für den Zugriff auf die Datenbank wird die Java Persistance API (kurz JPA) eingesetzt. JPA ist eine Schnittstelle welche definiert wie Java Laufzeit-Objekte Persistent in einer relationalen Datenbank gespeichert werden können und dies obwohl relationale Datenbanken nicht für objektorientierte Datenstrukturen gedacht sind. Es gibt verschieden Implementationen der JPA Schnittstelle. Für die Implementation des Prototyps wurde das Open-Source Framework EclipseLink eingesetzt. [38][39] Für jede Tabelle der TSP Datenbank gibt es eine Klasse Provider, welche den Zugriff auf die Datenbank Tabelle anbietet. Die Provider-Klassen erweitern die ProviderBase-Klasse, welche die grundlegenden JPA Funktionen persist, merge, remove enthält und die Steuerung der Transaktionen übernimmt. Dadurch ist es möglich, dass während einer Transaktion mehre Provider Klassen und somit Zugriffe auf verschiedene Tabellen möglich sind. (Siehe auch 4.3.1 Klassen der Komponente tspservice, Seite 25). 5.5.2 OBU Datenbank Die OBU bedient sich einer SQLite Datenbank. Dieses Datenbanksystem wurde explizit für den Einsatz auf Embedded Systemen entwickelt. Es ist ressourcensparend und kann über die Android Database API angesteuert werden. Eine passende ORM Implementation (analog zu JPA) würde es für SQLite ebenfalls geben; diese hat sich aber für den Einsatz in diesem Projekt nicht etabliert. (Die Gründe dafür sind der grosse Overhead bezüglich Speicherplatz, Latenzzeiten und Komplexität). Die SQLite Integration wurde dementsprechend mit Hilfe der Android Bordmittel umgesetzt. Eingesetzt wird eine zentrale Datenbank Helper Klasse sowie für jede Datenbanktabelle eine Providerklasse. Providerklassen implementieren – mit Unterstützung der DB Helper Klasse – die CRUD Operationen der jeweiligen Datenbanktabelle. (Siehe auch 4.3.3 Klassen der Komponente obuclient, Seite 27). Aus Sicherheitsgründen wird die OBUDB im privaten Speicherbereich der OBU Client Applikation abgelegt. Keine andere Anwendung kann auf diesen Bereich zugreifen. 5.6 Kommunikationsschicht Die Anforderungen an die Kommunikationsschichten zwischen den involvierten Komponenten, TSP Service, TSP Client(s) und OBU Client(s) sind vergleichbar mit jenen eines Instant Messaging Systems. Eine Vielzahl von Dienstleistungsnutzern (=OBU) möchte mit einem Dienstleister (=TSP) kommunizieren. Die permanente Verfügbarkeit einer Datenverbindung zwischen TSP und OBU ist nicht garantiert. Es bedarf folglich einer Kommunikationsschicht, welche die gegebene Situation bestmöglich unterstützen kann. Als Lösung wurden mehrere verschiedene Methoden zur Datenübertragung evaluiert: TCP Sockets, WebORB [21] und XMPP [22]. Letzteres Protokoll konnte nach Ansicht der Autoren die Bedürfnisse dieses Projekts am besten befriedigen. Die XMPP-RPC Bibliothek, ein Schulprojekt der Hochschule Rapperswil, schien die Bedürfnisse dieses Projekts geradezu ideal zu befriedigen [20]. TA.PAWI.FS2012 | Aspects of Privacy-Preserving Toll Pricing | C. Moser / T. Galliker 48 / 62 Hochschule Luzern Technik & Architektur Report | Design-Entscheide 5.6.1 Aufbau des Systems Abbildung 22 illustriert den Aufbau und die Kommunikationsflüsse zwischen TSP Service, TSP Client(s) und OBU Client(s). Es wird gezeigt, wie die Peers eigene Schnittstellen bereitstellen und entfernte Schnittstellen nutzen können. Grundsätzlich kann jeder Teilnehmer Schnittstellen über Direktverbindungen anderen Benutzern zugänglich machen. Es ist auch möglich, dass Teilnehmer ihre Schnittstellen in Chat Rooms einer Menge von Benutzern bereitstellen9. TSP Client(s) XMPP Client (3) Openfire XMPP Server Chat Room «entrance» OBU Client(s) (2) (3) XMPP Client (1) (4) TSP Service XMPP Client Abbildung 22: Physische Konstellation des Kommunikationssystems (1) TSP Service registriert die Schnittstelle ITSP mit Room User tsproom@enterpriselab in Raum „entrance“. (2) OBU Clients registrieren ihre Schnittstelle IOBU mit dem XMPP User [obu-name]@enterpriselab und verbinden direkt zum TSP User tsp@enterpriselab. (3) OBU Clients rufen entfernte Methoden von ITSP direkt über den TSP Room User tsproom@enterpriselab auf, nutzen dabei aber nicht die MultiUserChat Verbindung, sondern eine herkömliche End-zu-End UserChat Verbindung. (4) Die Rückmeldung erhalten OBU Client’s über eine Direktverbindung tsp@enterpriselab zum jeweiligen Anfragesteller (OBU Client resp. TSP Client). vom TSP User 9 Das wäre genau die Lösung, welche in diesem Projekt gefragt gewesen wäre. Leider läuft die für Room Chats zuständige MultiUserChat Klasse der Smack Library auf dem Android Betriebssystem nicht fehlerfrei. Der beschriebene Ablauf und die korrespondierenden Pfeile sollen helfen den Workaround zu verstehen. TA.PAWI.FS2012 | Aspects of Privacy-Preserving Toll Pricing | C. Moser / T. Galliker 49 / 62 Report | Design-Entscheide Hochschule Luzern Technik & Architektur Das XMPP Kommunikationskonzept verlangt also, dass jeder Teilnehmer über eine XMPP Adresse mit dem XMPP Server verbunden ist. Es resultiert eine lose Kopplung zwischen den Kommunikationspartnern, ähnlich wie dies bei E-Mail Systemen der Fall ist. Die TSP Datenbank muss infolgedessen lediglich die XMPP Adresse jeder OBU kennen. Diese wird einmalig beim Aufsetzen der OBU festgelegt und ändert danach nicht mehr. 5.6.2 Verbindungsverhalten Laut der Protokollspezifikation von XMPP und der Code-Dokumentation der Smack Library [17] versucht ein XMPP Client die Verbindung permanent aufrecht zu erhalten. Wird eine Verbindung abrupt getrennt, so versucht sich der Client automatisch wieder mit dem XMPP Server zu verbinden. Dieses Verhalten ist insbesondere für die Implementation der OBU Clients sehr interessant, da dort die Verfügbarkeit einer Netzwerkverbindung zu keinem Zeitpunkt garantiert ist. Hinweis für Weiterentwicklung Eine produktive Implementierung dieses Projektsystems würde bedingen, dass in Bezug auf das Verbindungsverhalten tiefgehende Tests durchgeführt würden. Was passiert beispielsweise, wenn ein Client ständig eine qualitativ schlechte GSM Datenverbindung erhält? Wie viel Overhead (und somit Kosten beim Netzwerkprovider) entsteht, wenn sich ein OBU Client ständig neu beim XMPP Server anmeldet? 5.6.3 Empfangsbestätigung Vorhergehend wurde erklärt, dass XMPP hilft, die Kommunikationspartner zu entkoppeln. Dabei handelt es sich nicht nur um eine softwaretechnische Entkopplung mit Interfaces, sondern auch um eine zeitliche Entkopplung. Ein Teilnehmer hat die Möglichkeit eine Nachricht an einen anderen Teilnehmer zu senden, auch wenn dieser zum Sendezeitpunkt offline ist. Der Empfänger wird die Nachricht erhalten, sobald er wieder online ist [23]. Hinweis für Weiterentwicklung Die diskutierten Features bezüglich Verbindungsverhalten und Empfangsbestätigung wurden in diesem Projekt nicht implementiert, haben aber bei der Entscheidung der Kommunikationstechnologie eine entscheidende Rolle gespielt. Eine Weiterentwicklung dieses Projekts sollte diesen beiden Punkten gerecht werden. 5.6.4 Übertragung von komplexen Datenstrukturen Die Übertragung von Objekten über XMPP-RPC (also letztlich über TCP Sockets) bedingt unweigerlich die Serialisierung von Objektinstanzen. Die XMPP-RPC Library [20] wurde für die Übertragung von Basisdatentypen wie String, Integer, Float und Double ausgelegt, lässt aber die Freiheit, den Funktionsumfang mit eigenen Type Factories zu ergänzen. Das vorliegende Projekt verlangt nicht selten, dass komplexe Datenstrukturen wie z.B. typisierte ArrayLists mit mehreren Verschachtelungsebenen zwischen den Kommunikationspartnern ausgetauscht werden müssen. Aus diesem Grund wurde die XMPP-RPC Library mit einer ArrayListFactory ergänzt. Diese Erweiterung machte zudem die Entwicklung eines De/Serializers notwendig. Die Anforderung an diesen De/Serializer war einfach: Eine komplexe, verschachtelte ArrayList soll in einen Byte Stream umgewandelt werden. TA.PAWI.FS2012 | Aspects of Privacy-Preserving Toll Pricing | C. Moser / T. Galliker 50 / 62 Hochschule Luzern Technik & Architektur Report | Environment-Anforderungen 6 Environment-Anforderungen Die Anforderungen an die Systemumgebung werden stark von der Anwendungsaktivität beeinflusst. Je mehr OBUs von einem TSP verwaltet werden, desto grösser sind die Anforderung an das TSP Server System und die darunterliegende Datenbank. Dasselbe gilt für die OBU Clients: Je grösser die Abrechnungsintervalle, umso mehr Speicherplatz muss lokal auf dem Mobilgerät verfügbar sein. Es gibt grundsätzlich mehrere Events, welche die CPU einer OBU überdurchschnittlich auslasten können. Die grössten CPU Auslastungen seitens OBU werden beim Schreiben von Payment Records erreicht, da während diesem Vorgang der kryptographische Proof sowie das Commitment berechnet wird. Dieser Vorgang wird im Abstand von 1km wiederholt10. Schnelles Fortbewegen beansprucht die CPU zwar öfter, ist aber im Hinblick auf das Speichern von GPS Wegpunkten effizienter. (Höhere Geschwindigkeit = weniger Wegpunkte und weniger Einträge in der Hilfstabelle zwischen PaymentRecord und Waypoint). OBU Client TSP Client Prozessorleistung 1GHz Arbeitsspeicher Flash Speicher 256MB RAM 12MB bei 3000km Fahrdistanz11 Betriebssysteme Bildschirmauflösung Android OS 4.0.3 WVGA800 Prozessorleistung 2GHz Arbeitsspeicher 2GB RAM Festplattenspeicher Betriebssysteme Vorausgesetzte Software 200MB Windows, Linux, Mac OS TSP Application Server Prozessorleistung Arbeitsspeicher TSP DB Server Java SE Runtime Environment, 1.6.0_21 2GHz 2GB RAM Festplattenspeicher Betriebssysteme 200MB Windows, Linux, Mac OS Netzwerk TCP Port 5222 (XMPP) Vorausgesetzte Software Java SE Runtime Environment, 1.6.0_21 XMPP Openfire Server Prozessorleistung Arbeitsspeicher Festplattenspeicher 2GHz 2GB RAM 200MB12 Betriebssysteme Windows, Linux, Mac OS Netzwerk TCP Port 3306 (MySQL default) Vorausgesetzte Software Java SE Runtime Environment, 1.6.0_21 MySQL Server 5.5.10 Tabelle 9: Anforderungen an die eingesetzte Systemumgebung 10 In eine produktiven PrETP System wäre die Segmentlänge selbstverständlich konfigurierbar. Das Speichern von 3‘000 Payment Records und 30‘000 GPS Waypoints kostet ca. 12MB Speicherplatz. 12 Der benötigte Festplattenspeicher ist abhängig von der Anzahl verwalteter OBU Clients, Karten- und Preisinformationen. 11 TA.PAWI.FS2012 | Aspects of Privacy-Preserving Toll Pricing | C. Moser / T. Galliker 51 / 62 Report | Diskussion 7 7.1 Hochschule Luzern Technik & Architektur Diskussion Praktische Umsetzung von PrETP Neben technischen Herausforderungen, welche für den Einsatz eines Road Pricing Systems bewältigt werden müssen, gibt es auch politische Arbeit zu erledigen. Gemäss Art. 82, Abs. 2 der Bundesverfassung ist die Benützung öffentlicher Strassen in der Schweiz gebührenfrei. Diese Bestimmung wurde 1848 eingeführt, da Weg- und Brückengelder als Verkehrsbehinderung angeschaut wurden. Das Parlament hat allerdings die Möglichkeit, Ausnahmen explizit zu bewilligen. So wird beispielsweise für die Benutzung des Strassentunnels am Grossen St. Bernhard eine Gebühr erhoben. Für grössere Abweichungen von dieser Bestimmung ist allerdings eine eigene Verfassungsgrundlage nötig. Deshalb sind die Abgaben für die Nationalstrassen (Autobahnvignette) im Artikel 86 geregelt. Ein neues Road Pricing System mit dynamischen Preisen würde natürlich auch eine neue Verfassungsgrundlage bedingen, um auf Haupt- und Nebenstrassen Gebühren verrechnen zu können. [6] 7.1.1 Vorgehensweise bei der Inbetriebnahme einer On-board Unit Für den Einsatz eines elektronischen Mautsystems muss jedes Fahrzeug mit einer OBU ausgestattet werden. Ein Fahrzeug wird vor der Zulassung meist durch einen Garagist fahrtauglich gemacht. Deshalb macht es auch Sinn, dass der Garagist die On-board Unit ins Fahrzeug einbaut. Nachdem die OBU im Fahrzeug angebracht ist, muss diese beim Strassenverkehrsamt registriert werden. Jede OBU besitzt eine eindeutige Identifikationsnummer. Bei der Registration wird diese zusammen mit dem FahrzeugKennzeichen und dem Fahrzeughalter registriert. Bei der ersten Inbetriebnahme erhält die OBU von der TSP die Systemparameter (Schlüssellängen), den Public Key der TSP, sowie die Group Parameters. Danach generiert sich die OBU ihr eigenes Schlüsselpaar und übermittelt ihren Public Key an die TSP. Nachdem das Gerät erfolgreich initialisiert wurde, wird ein Systemtest durchgeführt, um zu prüfen, ob Daten korrekt aufgezeichnet werden und eine Abrechnung gemacht werden kann. Es kann allerdings nicht immer davon ausgegangen werden, dass zwischen einer OBU und einem Fahrzeug-Kennzeichen eine 1-zu-1 Beziehung besteht. Eine mögliche Ausnahme sind Wechselnummern. Eine Wechselnummer kann für verschieden Fahrzeuge verwendet werden, wobei nur jenes Fahrzeug zugelassen ist, an welchem die Nummernschilder angebracht sind. Deshalb ist es möglich, dass einem Nummernschild mehrere OBU’s zugewiesen sind. In diesem Fall müsste eine Challenge an alle zugewiesen OBU’s gesendet werden. Eine der OBUs müssten in der Lage sein diese Challenge korrekt zu beantworten. TA.PAWI.FS2012 | Aspects of Privacy-Preserving Toll Pricing | C. Moser / T. Galliker 52 / 62 Hochschule Luzern Technik & Architektur Report | Diskussion 7.2 Vorteile Das primäre Ziel eines neuen Road Pricing Systems in der Schweiz ist es, das Verkehrsproblem in den Städten und Agglomerationen zu entschärfen. Das vorgestellte Konzept ermöglicht den Einsatz eines dynamischen Preismodells. Mit diesem kann für das Befahren einer bestimmten Zone, beispielsweise eines Stadtzentrums, ein höherer Preis verrechnet werden. Dies würde einen Anreiz schaffen, vermehrt die öffentlichen Verkehrsmittel zu verwenden, um in die Stadt zu gelangen. Dadurch würde das Verkehrsaufkommen in den Städten abnehmen, wie die Erfahrung aus dem Ausland zeigt. In Stockholm wurde der Stau um 30-50% reduziert, nachdem eine Gebühr für das Befahren des Stadtzentrums eingeführt wurde. Ein dynamisches Preismodell erlaubt auch zeitliche Abstufungen, sodass auf das stärkere Verkehrsaufkommen im Morgen- und Feierabendverkehr mit höheren Abgaben reagiert werden kann. Fahrzeuglenker würden vermutlich wirtschaftlichere Alternativrouten wählen oder – wenn möglich – die Stosszeiten komplett vermeiden. Das primäre Ziel eines neuen Road Pricing Systems könnte durch den Einsatz eines dynamischen Preismodells ideal erfüllt werden. Zusätzlich erlaubt das elektronische Road Pricing System die anfallenden Unterhaltskosten für die Strasseninfrastruktur nach dem Verbraucherprinzip auf die Benutzer um zu wälzen. Der zu bezahlende Betrag ist abhängig vom benutzten Strassentyp, Ort und der Befahrungszeit. Dadurch wäre auch das langfristige Ziel, die Finanzierung der Strasseninfrastruktur sicherzustellen, gewährleistet. Dies obwohl die Einnahmen durch die Mineralölsteuern in Zukunft stagnieren werden, weil vermehrt Fahrzeuge mit höherer Energieeffizienz auf den Markt kommen. Zusätzlich würde durch das Verrechnen nach Verbraucherprinzip auch der Transit-Verkehr fairer besteuert werden. Für den Endanwender des Systems, den Fahrzeuglenker, ist es wichtig, dass der Datenschutz gewährleistet ist. Durch das lokale Speichern der GPS Koordinaten auf der On-board Unit wird sichergestellt, dass die Lokationsdaten nicht in fremde Hände gelangen können. Denn es wäre beispielsweise fatal wenn Terroristen den Aufenthaltsort von Regierungsmitgliedern ausfindig machen könnten. Beim PrivacyPreserving Electronic Toll Pricing muss der Fahrzeuglenker nur jene Koordinaten preisgeben, für welche der Toll Charger bereits ein Beweis besitzt, beispielsweise durch eine Parkbusse. Zudem legt die OBU die Koordinaten für eine Challenge nur offen, sofern das Fahrzeug sich tatsächlich zu diesem Zeitpunkt am Ort wo der Beweis erstellt wurde aufgehalten hat. Dadurch ist gewährleistet, dass eine OBU ihre Daten nur preisgeben muss, wenn wirklich eine Challenge vorliegt. Die Autoren dieses Berichts sind der Meinung, dass das in diesem Dokument vorgeschlagene Projektsystem sowohl die Interessen des Strassenverwalters als auch jene des Endbenutzers schützt. TA.PAWI.FS2012 | Aspects of Privacy-Preserving Toll Pricing | C. Moser / T. Galliker 53 / 62 Report | Diskussion 7.3 Hochschule Luzern Technik & Architektur Schwierigkeiten einer praktischen Umsetzungen Einige Probleme einer praktischen Implementierung eines PrETP-Systems wurden in diesem Projekt einfachheitshalber ausgeblendet und sollten im Falle einer produktiven Umsetzung zwingend berücksichtigt werden. Nachfolgende Abschnitte beschreiben eine (nicht-abschliessende) Auswahl möglicher Probleme. 7.3.1 Nachweisbarkeit von Manipulationen Durch das Speichern der abgefahrenen Strecken auf der On-board Unit entgeht dem Staat die Möglichkeit Manipulationen aufzudecken oder Probleme zu erkennen. Der Staat erkennt lediglich am Ende einer Abrechnungsperiode, ob die Abrechnung für ein bestimmtes Fahrzeug erfolgreich war oder nicht. Für eine fehlerhafte Abrechnung gibt es zwei mögliche Ursachen: Es kann sein das der Fahrzeuglenker die OBU bewusst manipuliert hat, um eine günstigere Rechnung zu erhalten. Die zweite Ursache könnte eine defekte OBU sein, welche beispielsweise keine Daten aufzeichnet. Im Falle einer Manipulation müsste der Fahrzeuglenker eine Busse erhalten. Bei einer defekten OBU hingegen müsste die OBU ersetzt werden und dem Fahrzeughalter der Preis der befahrenen Strecke in Rechnung gestellt werden. Da es allerdings nicht möglich ist, zu erkennen, ob ein Defekt oder eine Manipulation vorliegt und keine Möglichkeit besteht den korrekten Preis im Nachhinein zu ermitteln, müssen Richtlinien ausgearbeitet werden, wie Fehler bei der Abrechnungsperiode behandelt werden. Der folgende Ansatz wäre für eine fehlerhafte Abrechnung denkbar: • Wenn es die erste fehlerhafte Abrechnung für einen Fahrzeuglenker ist, dann wird dem Fahrzeuglenker der durchschnittliche Preis der vorhergehenden Abrechnungsperiode in Rechnung gestellt. • Handelt es sich bereits um die zweite fehlerhafte Abrechnung, dann müsste der Fahrzeuglenker zusätzlich zum durchschnittlichen Abrechnungspreis eine Busse bezahlen. 7.3.2 Umgang mit GPS Funkschatten Eine technische Herausforderung, welche beim Einsatz eines elektronischen Mautsystems gelöst werden muss, ist das Aufzeichnen von Wegpunkten, wenn sich die OBU in einem Funkschatten befindet. Im vorliegenden Prototyp werden Wegpunkte (GPS Koordinaten) nach einem bestimmten Intervall, abhängig von der Fahrgeschwindigkeit, aufgezeichnet. Wenn die Gesamtdistanz der offenen Wegpunkte eine bestimmte Distanz (z.B. 1km) überschreitet, dann wird ein neuer Payment Record angelegt. Fährt ein Fahrzeug beispielsweise nach einer aufgezeichneten Distanz von 800 Meter in einen 1.2 Kilometer langen Tunnel hinein, dann wird der nächste Wegpunkt, wegen dem Funkschatten im Tunnel, erst bei der Ausfahrt erfasst. So beträgt die Gesamtdistanz der offenen Wegpunkte zwei Kilometer. Dadurch würde ein Payment Record für zwei Kilometer angelegt werden, anstelle der üblichen 1km-Abschnitte. Im vorliegend Prototyp gilt die Annahme, dass ein Payment Record einen Kilometer lang ist. Deshalb bezieht sich der Preis eines Payment Records auf einen Kilometer. Das heisst der Fahrzeuglenker müsste für die gefahrenen zwei Kilometer nur den Preis von einem Kilometer bezahlen. TA.PAWI.FS2012 | Aspects of Privacy-Preserving Toll Pricing | C. Moser / T. Galliker 54 / 62 Report | Diskussion Hochschule Luzern Technik & Architektur Die Unterteilung der aufgezeichneten Wegpunkte in fixe 1km-Abschnitte wäre ein möglicher Ansatz um dieses Problem zu lösen. Wenn die OBU bei der Ausfahrt aus dem Tunnel erkennen würde, dass die Gesamtdistanz der offenen Wegpunkte zwei Kilometer beträgt, dann würden dafür zwei Payment Records angelegt werden. Der Nachteil bei diesem Ansatz ist, dass für beide Payment Records der gleiche Preis verrechnet wird, auch wenn für die Payment Records unterschiedliche Tarife verrechnet werden müssten. Ein anderer Ansatz das Problem mit den falsch verrechneten Strecken zu umgehen, wäre der Einsatz von variablen Streckeneinträgen (Payment Records). Sodass sich Payment Records auf unterschiedliche Distanzen beziehen können, anstelle der fixen Distanz von einem Kilometer pro Payment Record. Damit variable Streckeneinträge möglich sind, muss die OBU neben dem verrechneten Preis auch ein Commitment für die aufgezeichnete Strecke erstellen. Um Missbrauch aufzudecken, muss der Toll Service Provider nicht nur das homomorphe Commitment des Preises prüfen, sondern auch jenes für die Strecke. Zudem müsste der TSP mit Hilfe von TC‘s Streckenabschnittskontrollen durchführen. Damit bei einer Challenge auch geprüft werden kann, ob die OBU die einzelnen Streckenabschnitte korrekt erfasst hat. 7.3.3 Tracking von OBUs über XMPP? Auf der Suche nach Möglichkeiten, die Spur eines OBU Clients zu tracken, wurde die Kommunikationsverbindung über XMPP/Openfire genauer analysiert. Da es sich bei der eingesetzten Technologie nicht um eine End-zu-End Verbindung zwischen TSP und OBU handelt, gibt es auch keinen Bedarf, IP Adressen zu speichern. Die IP Verbindung zweier kommunizierenden Chat Partner wird wohl jeweils beim Öffnen einer neuen Chat Session im Memory des Openfire Servers gehalten. Mindestens in der Datenbank sowie in den Log Dateien des Openfire Servers sind keine Hinweise auf ein IP-zu-XMPP AdressMapping zu finden. Da Openfire ein quelloffenes Produkt ist, kann ein TSP jederzeit den Code herunterladen und eine selbstgebraute Version von Openfire laufen lassen. So dürfte es keine grosse Hürde sein, die IP Adresse von kommunizierenden Peers auszulesen. Ist die IP Adresse ein Sicherheitsrisiko? – Eigentlich nicht. Mit Hilfe der IP Adresse eines GSM Modems kann höchstens festgestellt werden, aus welchem Providernetz die Adresse stammt. In der Regel kann mit Hilfe der IP Adresse gerademal auf ein Land oder eine bestimmte Region geschlossen werden – aber nicht mal diese Information muss zwingend korrekt sein. Das Risiko für ein erfolgreiches Tracking von OBUs über die XMPP/IP Adresse scheint ziemlich unrealistisch zu sein. Ein weiteres Mittel zum Schutz der OBU wäre ein VPN, welches jeweils nach dem Starten des Android Betriebssystems und vor dem Starten der OBU Client Applikation aufgebaut wird. Der Anbieter des VPN’s dürfte dann natürlich keine Beziehung zum TSP pflegen, da ansonsten wieder ein Mapping zwischen externer und interner IP Adresse ausgemacht werden könnte. TA.PAWI.FS2012 | Aspects of Privacy-Preserving Toll Pricing | C. Moser / T. Galliker 55 / 62 Report | Diskussion 7.3.4 Hochschule Luzern Technik & Architektur Positionierung der Toll Charger Analog zum Reglement für das Positionieren von Geschwindigkeitsmessanlagen, welches die Polizei anwendet, bestehen auch Regeln und Einschränkungen für das Positionieren von Toll Charger. Nicht jede Lokation ist geeignet, um Challenges von Fahrzeugen zu erfassen. Die Segmentlänge von Payment Records spielt eine wesentliche Rolle: Bei der Anwendung des vorgeschlagenen Preisberechnungsmodells13 kann es vorkommen, dass der Grossteil eines Abrechnungssegments in Zone A gefahren wird, das Segment jedoch erst in Zone B die 1km-Marke überschreitet und daher der ganze Kilometer erst in Zone B abgerechnet wird. Diese Abrechnungsstrategie verhindert das Positionieren von Toll Charger entlang von Kartengrenzen mit unterschiedlichen Zonentarifen – und zwar in einem Abstand von der Länge eines Abrechnungssegments (z.B. 1km). Ansonsten läuft der TSP in die Gefahr, dass die OBU auf Challenges falsche Responses zurücksendet, obwohl diese zum gegebenen Zeitpunkt den bestimmten Toll Charger korrekt passiert hat. Abbildung 23 illustriert das beschriebene Problem und gibt zwei geeignete Positionierungsmöglichkeiten für TCs (TC1 für die rote Tarifzone und TC3 für die blaue Tarifzone) sowie eine Positionierungsmöglichkeit, welche zu Problemen führen kann (TC2 im Graubereich). Abbildung 23: Das Positionieren von Toll Charger bedingt das Einhalten bestimmter Regeln Dieses Positionierungsproblem könnte entschärft werden, indem die Segmentlänge verkürzt würde (z.B. 100m Segmente). Dann müsste jedoch viel mehr Rechenleistung aufgewendet werden, um die höhere Anzahl Payment Records zu bewältigen. 13 Siehe Kapitel 5.2, Seite 45 TA.PAWI.FS2012 | Aspects of Privacy-Preserving Toll Pricing | C. Moser / T. Galliker 56 / 62 Hochschule Luzern Technik & Architektur Report | Diskussion 7.3.5 Zeitsynchronisation Die involvierten Komponenten, insbesondere die TCs und die OBU Clients, müssen sich an eine strikte Zeitsynchronisation halten. Sind die Abweichungen zwischen Zeitstempeln von TCs verglichen mit Zeitstempeln von OBUs zu gross, so könnte die betroffene OBU einen Proof nicht korrekt bestätigen. Es bestünde der Verdacht, dass die OBU ihre Weg-/Zeitinformationen manipuliert hat. Wichtig für eine erfolgreiche Zeitsynchronisation scheint zu sein, dass: • alle Komponenten denselben Zeitgeber zur Synchronisation nutzen • die Synchronisation mehrmals täglich durchgeführt wird, um die Abweichung gering zu halten Für Android-basierte Geräte scheint es bereits reife Produkte zu geben, die Zeitsynchronisation und Zeitzonenunterstützung bieten [43]. Systeme, die sich zu 100% auf eine synchrone Zeiteinstellung verlassen müssen, sind in der Praxis jedoch störungsanfällig. 7.3.6 Zeitzonen und Daylight Saving Time Es ist davon auszugehen, dass ein PrETP System über mehrere Zeitzonen operieren muss. Bei nicht korrekter Implementierung von Zeitstempeln kann ein System rasch viele Fehler verursachen. Es ist beispielsweise zu beachten, dass Zeitstempel immer als UTC Werte gespeichert werden. Die OBUs müssen laufend die aktuelle Zeitzone sowie den Daylight Saving Time Offset mitberücksichtigen [44]. In Europa sind dies hauptsächlich vier Zeitzonen mit je einer Stunde Offset relativ zur Greenwich Mean Time (GMT). Abbildung 24: Zeitzonen in Europa [45] TA.PAWI.FS2012 | Aspects of Privacy-Preserving Toll Pricing | C. Moser / T. Galliker 57 / 62 Hochschule Luzern Technik & Architektur Report | Diskussion 7.4 Mögliche Weiterentwicklungen Die nachfolgenden Abschnitte geben Impulse zur Weitergestaltung des vorliegenden PrETP Systems. 7.4.1 ORM für SQLite auf Android Die OBU Client Applikation ist so implementiert, dass CRUD Kommandos direkt auf die Datenbank angewendet werden. Dieses Vorgehen erhöht die Kopplung zwischen Logik und Daten massiv. Eine Weiterentwicklung sollte daher unbedingt ein Refactoring im Bereich des Datenbankzugriffs ins Auge fassen. Es gibt Objekt-relationales Mapper (ORM) für SQLite und Android, welcher die Bedürfnisse dieses Projekts decken könnten [41]. Vor dem Refactoring muss mit einem Prototyp geprüft werden, ob die vom OBU Client bereitgestellten Ressourcen ausreichen, um die Datenbankoperationen über einen OR-Mapper laufen zu lassen. 7.4.2 Generischer DTO-Assembler Das Umwandeln von Entity Objekten in Data Transfer Objekte wird auf TSP und OBU jeweils für jeden Datentyp manuell vorgenommen. Die Provider-Klassen stellen Methoden bereit, um zwischen Entity Objekt und DTO zu konvertieren. Diese Aufgabe könnte ein generischer DTO-Assembler übernehmen [42]. 7.4.3 Tarifzonen anhand des Strassentyps erkennen Im vorliegenden Prototyp, sowie im Konzept der KU Leuven, werden die Karten in Tarifzonen unterteilt. Jede Zone wird durch GPS Koordinaten abgesteckt und – abhängig von der Tageszeit – mit einem Kilometertarif belegt. Wenn man für verschiedene Strassentypen unterschiedliche Preise verrechnen will, so müssten die Zonen entlang der Strassengrenze geführt werden. Abbildung 25 zeigt ein Beispiel, in welchem zwischen Autobahn bzw. Kantonsstrasse unterschieden wird. Die Anzahl der zu erfassenden Kartenabgrenzungen wäre immens. Hingegen kann ein Stadtzentrum mit einer einzigen Abbildung 25: Abstecken der Zonen entlang der Strasse grossen Zone abgesteckt werden, wodurch weniger Datensätze in der Map resp. GPSPoint Tabelle anfallen. Damit für das Abstecken von Strassen nicht unzählige Zonen gespeichert werden müssen, wäre es sinnvoll eine API bzw. Service zu benutzen, welcher anhand von GPS Koordinaten zurück meldet, auf welcher Strasse man sich befindet. Dabei muss sichergestellt werden, dass der Service diese Bestimmung anhand der lokal verfügbaren Daten vornehmen kann. Ansonsten besteht die Gefahr, dass der Fahrzeuglenker seine Position preisgeben muss. TA.PAWI.FS2012 | Aspects of Privacy-Preserving Toll Pricing | C. Moser / T. Galliker 58 / 62 Report | Quellen 8 Hochschule Luzern Technik & Architektur Quellen Ref Quellenangabe / URL Letzter Zugriff [1] Bundesamt für Statistik (BFS) Schweiz, Fahrzeugstatistik, http://www.bfs.admin.ch/bfs/portal/de/index/themen/11/03/blank/key/fahrzeuge_stra sse/bestand.html 04.01.2012 [2] Bundesamt für Statistik (BFS) Schweiz, Verkehrsinfrastruktur, 04.01.2012 http://www.bfs.admin.ch/bfs/portal/de/index/themen/11/03/blank/key/infrastruktur.ht ml [3] Bundesamt für Statistik (BFS) Schweiz, Kosten und Finanzierung des Verkehrs, 04.01.2012 http://www.bfs.admin.ch/bfs/portal/de/index/themen/11/02/blank/key/strassenrechnu ng/globalrechnung.html [4] Bundesamt für Statistik (BFS), Mobilität und Verkehr 2010, Neuchâtel 2010 [5] Bundesamt für Strassen ASTRA, Verkehrsentwicklung auf Nationalstrassen: 08.01.2012 Fahrleistung hat sich seit 1990 verdoppelt, Bern 22.09.2011 [6] Eidgenössisches Departement für Umwelt, Verkehr, Energie und Kommunikation UVEK, Road Pricing und Mobility Pricing in der Schweiz – ein Überblick, Bern 2006 [7] J. Balasch; A. Rial; C. Troncoso; B. Preneel; I. Verbauwhede, PrETP: PrivacyPreserving Electronic Toll Pricing, Leuven-Heverlee [8] B. Knutsson, Public key cryptography, Stockholm 2011 [9] C. Kaufman; R.Perlman; M. Speciner, Network Security, PRIVATE Communication in a PUBLIC World, Massachusetts 2010 [10] Transport Styrelsen, Sweden, Congestion Tax http://www.transportstyrelsen.se/en/road/Congestion-tax 27.01.2012 [11] Wikipedia Artikel zu Orthodrome, 27.01.2012 http://de.wikipedia.org/wiki/Orthodrome [12] CGAL Library 27.01.2012 http://www.cgal.org/Manual/3.3/doc_html/cgal_manual/Arrangement_2/Chapter_mai n.html#Subsection_20.3.1 [13] Wikipedia Artikel, Winding Number Algorithmus, http://en.wikipedia.org/wiki/Point_in_polygon 27.01.2012 [14] SQLite Browser, 31.01.2012 http://sqlitebrowser.sourceforge.net/ [15] Android Market, Fake GPS Applikation https://market.android.com/details?id=com.lexa.fakegps 31.01.2012 [16] SQLite Webseite, Abweichungen vom SQL92 Standard, 31.01.2012 http://www.sqlite.org/omitted.html [17] http://www.igniterealtime.org/builds/smack/docs/3.1.0/javadoc/org/jivesoftware/smac k/XMPPConnection.html 01.02.2012 [18] RSA Laboratories, Empfehlungen zu Schlüssellängen von RSA, 02.02.2012 http://www.rsa.com/rsalabs/node.asp?id=2218 TA.PAWI.FS2012 | Aspects of Privacy-Preserving Toll Pricing | C. Moser / T. Galliker 59 / 62 Report | Quellen Hochschule Luzern Technik & Architektur [19] T. Galliker, C. Moser, Übersicht zu GnuPG, 2011 02.02.2012 http://www.thomasgalliker.ch/documents/IK2206_Chapter22_PGP.pdf [20] T. Scheuchzer, RPC über Instant Messaging-Protokolle (HSR Miniprojekt 2006/07) http://wiki.hsr.ch/Prog1Java/XmppRPC 03.02.2012 [21] WebORB Publish-Subscribe Kommunikationsprotokoll, 03.02.2012 http://www.themidnightcoders.com/fileadmin/docs/java/v4/index.html?java_client_pu bsub_overview.htm [22] Extensible Messaging and Presence Protocol (XMPP) Standards Foundation, http://xmpp.org 03.02.2012 [23] XMPP Spezifikation, XEP-0184: Message Delivery Receipts http://xmpp.org/extensions/xep-0184.html 03.02.2012 [24] C. Schausberger, Zero Knowledge Prinzipien und besondere Sicherheitsgarantien, Hagenberg 2004 [25] B. Kühnel, Elektronische Wahlen, Seminar: Codes und Kryptographie, Paderborn 2004 [26] Wikipedia Artikel, Zero Knowledge, 03.02.2012 http://de.wikipedia.org/wiki/Zero_Knowledge [27] Uni-Protokolle, Lexikon: Polynominalzeit http://www.uni-protokolle.de/Lexikon/Polynomialzeit.html 03.02.2012 [28] R. Jain, Hashes and Message Digest, http://www.cse.wustl.edu/~jain/cse571- 03.02.2012 09/ftp/l_07hsh2.pdf [29] Das Portal für europäische Nachrichten, Hintergründe und Kommunikation, 03.02.2012 Einheitlicher Mautdienst in der EU, http://www.euractiv.de/infrastruktur-undverkehr/artikel/einheitlicher-mautdienst-in-der-eu-002191, 2009 [30] Spiegel Online, Mautstation in Österreich, http://www.spiegel.de/auto/aktuell/0,1518,grossbild-313925-430494,00.html 03.02.2012 [31] IBM Research Zurich, Identity Mixer 04.02.2012 http://www.zurich.ibm.com/security/idemix [32] Identity Mixer Blog http://idemix.wordpress.com 04.02.2012 [33] J. Camenisch, Specification of the Identity Mixer Cryptographic Library, 2010 04.02.2012 http://www.zurich.ibm.com/~pbi/identityMixer_gettingStarted/ProtocolSpecification_2 -3-2.pdf [34] J. Camenisch, A. Lysyanskaya, A Signature Scheme with Efficient Protocols 04.02.2012 http://www.zurich.ibm.com/~jca/papers/camlys02b.pdf [35] Digitale Signatur, Universität Potsdam, 2010 http://ddi.cs.uni-potsdam.de/Lehre/e-commerce/elBez2-5/page08.html 04.02.2012 [36] C. Troncoso, G. Danezis, E. Kosta, B. Preneel, PriPAYD: Privacy Friendly Pay-AsYou-Drive Insurance, 05.02.2012 http://www.cosic.esat.kuleuven.be/publications/article-944.pdf TA.PAWI.FS2012 | Aspects of Privacy-Preserving Toll Pricing | C. Moser / T. Galliker 60 / 62 Report | Quellen Hochschule Luzern Technik & Architektur [37] Norwich Union, Media Centre, innovative "Pay As You Drive" insurance, 05.02.2012 http://www.aviva.co.uk/media-centre/story/2840/norwich-union-launches-innovativepay-as-you-drive [38] EclipseLink JPA, Object-Relational persistence solution, http://www.eclipse.org/eclipselink/jpa.php 06.02.2012 [39] L. Vogel, JPA 2.0 with EclipseLink - Tutorial http://www.vogella.de/articles/JavaPersistenceAPI/article.html 06.02.2012 [40] Smack API, Open Source XMPP (Jabber) client library for instant messaging and presence, 06.02.2012 http://www.igniterealtime.org/projects/smack [41] OrmLite, Lightweight Java ORM for Android and SQLite, http://ormlite.com/sqlite_java_android_orm.shtml 06.02.2012 [42] GeDA, Generic DTO Assembler for Java, 06.02.2012 http://www.inspire-software.com/en/index/view/open-source-GeDA-generic-DTOassembler.html [43] Android ClockSync App, 06.02.2012 http://amip.tools-for.net/wiki/android/clocksync [44] Stackoverflow Forum, Daylight saving time and Timezone best practices, http://stackoverflow.com/questions/2532729/daylight-saving-time-and-timezonebest-practices 06.02.2012 [45] Time Zones and Daylight Saving in Europe, http://www.diydoctorholidays.co.uk/projects/timezones_in_europe.htm 07.02.2012 TA.PAWI.FS2012 | Aspects of Privacy-Preserving Toll Pricing | C. Moser / T. Galliker 61 / 62 Report | APPENDIX 9 APPENDIX 9.1 Hinweise zu SQLite3 für Android Hochschule Luzern Technik & Architektur SQLite ist ein Datenbanksystem, welches standardmässig auf Android verfügbar ist. Die Syntax ist weitgehend identisch mit dem SQL92 Standard. Viele Features von modernen Datenbanksystemen wie Microsoft SQL oder MySQL werden jedoch nicht implementiert. Nachfolgende Sammlung von Hinweisen kann helfen, Probleme mit SQLite zu umgehen: • Die offizielle SQLite Webseite informiert über Abweichungen vom SQL92 Standard. Siehe [16]. • SQLite implementiert beispielsweise keine RIGHT JOINS. Das ist zwar gut zu wissen, aber nicht weiter tragisch: Jeder RIGHT JOIN kann in ein LEFT JOIN umgewandelt werden. (MySQL hilft dabei sogar). • Das Debuggen von SQLite Datenbanken auf Android ist eine äusserst mühsame Angelegenheit und kann viel Nerven kosten. Im Gegensatz zu herkömmlichen Datenbanksystemen fehlt die Einsicht in momentan gespeicherte Datenbestände. Auch hier gibt es einen kleinen Trick. Das Android SDK liefert eine Android Debugging Bridge (adb) mit welcher ein laufender Android Emulator mit Befehlen konfrontiert werden kann. Unter anderem können Dateien zwischen Computer und Emulator hinund hergeschoben werden. So auch die Datenbankdatei, welche standardmässig unter dem Pfad /data/data/<package-path>/databases/<database-name> zu finden ist. Mit folgendem Kommando holt man die Datenbank auf den Entwickler-PC: adb.exe pull /data/data/ch.hslu.pawi/databases/obudb • 9.2 Mit dem SQLite Browser [14] kann die Datenstruktur der Datei analysiert werden. GPS Lokationen simulieren Beim Testen von GPS-basierten Entwicklungen ist es unumgänglich, GPS Positionen zu simulieren. Es gibt mehrere Möglichkeiten, dem Android Emulator bzw. dem physischen Android Gerät eine Position vorzugeben. • Der Emulator reagiert auf geo fix Befehle, welche über die Telnet Verbindung abgesetzt werden können. Ein Beispiel: telnet localhost 5554 geo fix 8.304870 47.013883 • Im Android Market ist eine App namens „Fake GPS“ [15] verfügbar, welche sehr intuitiv eine GPS Position festlegen lässt. TA.PAWI.FS2012 | Aspects of Privacy-Preserving Toll Pricing | C. Moser / T. Galliker 62 / 62