Verfahren zum Bereitstellen einer sicherheitskritischen
Softwareapplikation auf einer Computereinheit
Gebiet der Erfindung
Die Erfindung betrifft ein Verfahren zum Bereitstellen einer sicherheitskritischen Softwareapplikation auf einer Computereinheit. Insbesondere betrifft die Erfindung ein Verfahren zum Bereitstellen einer sicherheitskritischen Java- Applikation auf einem mobilen Endgerät. Hintergrund der Erfindung
Mehr und mehr werden mobile Endgeräte, beispielsweise in Form von Smartphones oder Tablet-Computern, dazu verwendet, digitale Transaktionen durchzuführen, beispielsweise das bargeldlose Bezahlen an einem NFC- Terminal oder der Kauf einer Ware oder einer Dienstleistung bei einem On- line- Versandhändler. Bei der Durchführung einer solchen digitalen Transaktion interagiert in der Regel eine auf dem mobilen Endgerät implementierte Softwareapplikation (kurz " App" genannt) mit einem Terminal bzw. Server. Dabei ist häufig ein kryptographischer Algorithmus, z.B. ein Verschlüsselungsalgorithmus, Teil der auf dem mobilen Endgerät implementierten Softwareapplikation, die auf sicherheitskritische Daten, z.B. PINs, Passwörter, Schlüssel etc., zugreift. In der Vergangenheit sind sicherheitskritische Daten in der Regel auf einem eigenständigen Sicherheitselement des mobilen Endgeräts häufig in Form einer aus dem mobilen Endgerät herausnehmbaren SIM-Karte hinterlegt worden, um diese vor einem Angriff durch unbe- fugte Person zu schützen.
Ein Ansatz, der insbesondere bei der Durchführung von digitalen Transaktionen mit einem mobilen Endgerät vorteilhaft eingesetzt werden kann, das kein eigenständiges Sicherheitselement zum sicheren Speichern von sicher- heitskritischen Daten aufweist, basiert auf der Idee sicherheitskritische Softwareapplikationen und darin enthaltene Daten mittels Softwaremaßnahmen
vor einem Angreifer zu schützen. Eine dieser Softwaremaßnahmen besteht darin, eine Softwareapplikation dadurch resistenter gegen Angriffe zu machen, dass der Programmcode der Softwareapplikation obfuskiert bzw. verschleiert wird, so dass ein Angreifer, der Zugriff auf diesen Programmcode hat, mit diesem praktisch nichts anfangen kann. Beispielhaft sei hier der Ja- va-Code-Obfuskator "ProGuard" genannt, der unter der Adresse
http:/ / developer.android.com/tools/help/ proguard.html im WWW erhältlich ist. Es ist Aufgabe der vorliegenden Erfindung, ein Verfahren zum Bereitstellen einer sicherheitskritischen Softwareapplikation für eine Computereinheit, vorzugsweise ein mobiles Endgerät, bereitzustellen.
Zusammenfassung der Erfindung
Die vorstehende Aufgabe wird gemäß der vorliegenden Erfindung durch den jeweiligen Gegenstand der unabhängigen Ansprüche gelöst. Bevorzugte Ausgestaltungen der Erfindung werden in den abhängigen Ansprüchen definiert. Gemäß einem ersten Aspekt der Erfindung wird ein Verfahren zum Bereitstellen einer Softwareapplikation auf einer Computereinheit zur Verfügung gestellt. Dabei umfasst das Verfahren die folgenden Schritte: das Durchführen einer AOT-Kompilierung der in Form von Bytecode vorliegenden Softwareapplikation, um aus dem Bytecode der Softwareapplikation Assembler- code zu erzeugen; das Obfuskieren des Assemblercodes der Softwareapplikation; das Einstellen des obfuskierten Assemblercodes der Softwareapplikation in einer Softwareverteilerplattform; und das Herunterladen des obfuskierten Assemblercodes auf die Computereinheit.
Vorzugsweise handelt es sich bei der Softwareapplikation um eine Java- Applikation oder eine in Form einer interpretierten Sprache die in einer Virtuellen Machine ausgeführt bzw. interpretiert wird. Gemäß bevorzugter Ausführungsformen der Erfindung handelt es sich bei der Softwareverteilerplattform um den Google Play Store.
Vorzugsweise wird die Computereinheit mit dem Betriebssystem Android (Version 4.4 oder höher) betrieben.
Gemäß bevorzugter Ausführungsformen der Erfindung werden unterschiedliche Assemblercodes für unterschiedliche Prozessorarchitekturen in die Softwareverteilerplattform eingestellt. Gemäß einem zweiten Aspekt der Erfindung wird eine Computereinheit bereitgestellt, auf der einen Softwareapplikation nach einem Verfahren gemäß dem ersten Aspekt der Erfindung bereitgestellt worden ist.
Gemäß bevorzugter Ausführungsformen der Erfindung handelt es sich bei der Computereinheit um ein mobiles Endgerät handelt.
Wie der Fachmann erkennt, lassen sich die vorstehend beschriebenen bevorzugten Ausgestaltungen sowohl im Rahmen des ersten Aspekts der Erfindung, d.h. im Rahmen des Verfahrens zum Bereitstellen einer Software- applikation auf einer Computereinheit, als auch im Rahmen des zweiten Aspekts der Erfindung, d.h. im Rahmen einer solchen Computereinheit, vorteilhaft implementieren.
Weitere Merkmale, Vorteile und Aufgaben der Erfindung gehen aus der folgenden detaillierten Beschreibung mehrerer Ausführungsbeispiele und Ausführungsalternativen hervor. Es wird auf die Zeichnung verwiesen, in denen zeigen:
Fig. 1 eine schematische Darstellung eines Kommunikationssystems mit einer Computereinheit in Form eines mobilen Endgeräts, bei dem die vorliegende Erfindung vorteilhaft eingesetzt werden, Fig. 2 ein herkömmliches Verfahren zum Bereitstellen einer sicherheitskritischen Softwareapplikation auf dem mobilen Endgerät von Figur 1, und eine bevorzugte Ausführungsform eines Verfahrens zum Bereitstellen einer sicherheitskritischen Softwareapplikation auf dem mobilen Endgerät von Figur 1.
Figur 1 zeigt eine schematische Darstellung eines beispielhaften Kommunikationssystems 10, bei dem die Erfindung vorteilhaft zum Einsatz kommen kann. Das Kommunikationssystem 10 umfasst eine Computereinheit 20 in Form eines mobilen Endgeräts, vorzugsweise in Form eines Smartphones oder eines Tablet-Computers. Das mobile Endgerät 20 ist dazu ausgestaltet, über einen Kommunikationskanal 50 mit einem Server bzw. einem Terminal 60 zu kommunizieren. Bei dem Kommunikationskanal 50 kann es sich bei- spielsweise um das Internet, ein Mobilfunknetzwerk, einen NFC-Kanal oder dergleichen handeln. Der Server 60 könnte ein NFC-Terminal eines Service- Anbieters sein, mit dem eine Softwareapplikation, beispielsweise die Softwareapplikation 34, auf dem mobilen Endgerät 20 Transaktionen durchfüh-
ren kann, z.B. eine Payment-Transaktion, bei dem die Softwareapplikation auf dem mobilen End gerät 20 einen Bezahlvorgang abwickelt.
Das mobile Endgerät 20 verfügt über einen Chip 22 mit einer zentralen Ver- arbeitungseinheit ("central processing unit"; CPU) beispielsweise in Form eines Mikroprozessors 24. Bekanntermaßen gehören zu den primären Aufgaben des Prozessors 24 das Ausführen von arithmetischen und logischen Funktionen und das Lesen und Schreibe von Datenelementen, wie dies durch eine auf dem Prozessor 24 ablaufende Softwareapplikation definiert wird. Der Übersichtlichkeit halber ist eine bevorzugte Hardware- und Software-Architektur des Prozessors 24 in Figur 1 außerhalb des mobilen Endgeräts 20 noch einmal schema tisch im Detail dargestellt.
Der Prozessor 24 steht in Kommunikationsverbindung mit einer Speicher- einheit 26, die vorzugsweise einen flüchtigen Arbeitsspeicher (RAM) beispielsweise zur Aufnahme des Programmcodes einer von dem Prozessor 24 auszuführenden Softwareapplikation umfasst. Vorzugsweise umfasst die Speichereinheit 26 ferner einen nichtflüchtigen, vorzugsweise wieder beschreibbaren Speicher, um beispielsweise im unbestromten Zustand des mo- bilen Endgeräts den Programmcode einer von dem Prozessor 24 auszuführenden Softwareapplikation aufzunehmen. Vorzugsweise handelt es sich bei dem nichtflüchtigen, wieder beschreibbaren Speicher um einen Flash- Speicher (Flash-EEPROM). Dabei kann es sich beispielsweise um einen Flash-Speicher mit einer NAND- oder einer NOR- Architektur handeln.
Selbstverständlich kann die Speichereinheit 26 auch einen Festwertspeicher ("read only memory"; ROM) umfassen.
Wie in Figur 1 schematisch dargestellt ist, ist in dem Prozessor 24 zur Laufzeit eine Laufzeitumgebung 32 implementiert, die auf hardwarenahe Funkti-
onen zugreifen kann, die von einem Betriebssystem 30 bereitgestellt werden. Gemäß bevorzugter Ausführungsformen der Erfindung handelt es sich bei dem Betriebssystem 30 um das Android-Betriebssystem und bei der Laufzeitumgebung 32 um die Laufzeitumgebung "Android Runtime (ART)". Die Laufzeitumgebung 32 ist derart implementiert, dass in dieser wenigstens eine Softwareapplikation 34 ausgeführt werden kann. Vorzugsweise handelt es sich bei der Softwareapplikation 34 um eine Java- Applikation. Wie dies der Fachmann erkennt, kann der Programmcode des Betriebssystems 30, der Lauf zeitumgebung 32 und/ oder der Softwareapplikation 34 in einem nicht- flüchtigen Bereich der Speichereinheit 26 hinterlegt sein.
Figur 2 zeigt den Ablauf eines herkömmlichen Verfahrens zum Bereitstellen der Softwareapplikation 34 auf dem mobilen Endgerät 20, wobei es sich bei der Softwareapplikation 34 um eine Java- Applikation handelt. Zunächst wird in einem ersten Schritt SDT1 von Figur 2 die Java- Applikation 34 erstellt, d.h. der Programm- bzw. Quellcode der Java- Applikation 34 geschrieben. Im Schritt SDT2 von Figur 2 können nun Obfuskierungsmaßnahmen des programm- bzw. Quellcodes der Java- Applikation 34 vorgenommen werden. Aufgrund der Form, in der der Programmcode der Java- Applikation 34 zu diesem Zeitpunkt vorliegt, können im Schritt SDT2 von Figur 2 keine starken Obfuskierungsmaßnahmen vorgenommen werden.
Nachdem der Programmcode der Java- Applikation 34 in Schritt SDT2 so gut wie möglich obfuskiert worden ist, wird der obfuskierte Programmcode der Java- Applikation 34 in Schritt SDT3 von Figur 2 in eine über das Internet zugängliche Softwareapplikationsverteilerplattform eingestellt. Die Soft- wareapplikationsverteilerplattform kann beispielsweise auf einem Internet- Server, wie dem Server 60 von Figur 1, bereitgestellt werden. Vorzugsweise
handelt es sich bei der Softwareapplikationsverteilerplattform um den Google Play Store.
Von der Softwareapplikationsverteilerplattform kann der Programmcode der Java- Applikation 34 in Schritt SDT4 von Figur 2 auf ein mobiles Endgerät, wie beispielsweise das mobile Endgerät 20 von Figur 1, herunter geladen werden. Sobald der Programmcode der Java- Applikation 34 auf das mobile Endgerät 20 herunter geladen worden ist, kann die Java- Applikation 34 ausgeführt werden, indem bei der Ausführung auf dem mobilen Endgerät 20 bekanntermaßen eine JIT-Kompilierung ("Just in time"-Kompilierung) des Programmcodes der Java- Applikation 34 erfolgt (siehe Schritt SDT5 von Figur 2).
Figur 3 zeigt den Ablauf einer bevorzugten Ausführungsform eines erfin- dungsgemäßen Verfahrens zum Bereitstellen der Softwareapplikation 34 auf dem mobilen Endgerät 20, wobei es sich bei der Softwareapplikation 34 vorzugsweise um eine Java-Applikation handelt. Zunächst wird im Schritt Sl von Figur 3 die Java- Applikation 34 erstellt, d.h. der Programm- bzw. Quellcode der Java- Applikation 34 geschrieben. Im Gegensatz zum herkömmli- chen Verfahren von Figur 2 erfolgt nun bereits in Schritt S2 von Figur 3 eine AOT-Kompilierung (""Ahead of time"-Kompilierung") des Programmcodes der Java- Applikation 34. Durch den Schritt der AOT-Kompilierung in Schritt S2 von Figur 3 liegt der Programmcode der Java- Applikation 34 nunmehr in Assembler, d.h. als Assemblercode (auch "native Code" genannt) vor.
Erfindungsgemäß wird in Schritt S3 von Figur 3 die nunmehr in Assemblercode vorliegende Java- Applikation 34 obfuksiert. Der Fachmann wird erkennen, dass, da die Java- Applikation 34 nunmehr in Assemblercode vorliegt, in Schritt S3 von Figur 3 aufgrund der Unterschiede zwischen Java-
Bytecode und Assemblercode bedeutend wirksamerer Obfuskierungsmaß- nahmen ergriffen werden können, als dies in Schritt SDT2 des Verfahrens von Figur 2 möglich ist. Wie dies in Figur 3 angedeutet ist, können die Schritte Sl bis S3 von Figur 3 in einer Entwicklungsumgebung, beispielswei- se beim Entwickler der Java- Applikation 34, durchgeführt werden.
Nachdem der Assemblercode der Java- Applikation 34 in Schritt S3 von Figur 3 obfuskiert worden ist, kann dieser in Schritt S4 von Figur 3 in eine über das Internet zugängliche Softwareapplikationsverteilerplattform eingestellt wer- den. Die Softwareapplikationsverteilerplattform kann beispielsweise auf einem Internet-Server, wie dem Server 60 von Figur 1, bereitgestellt werden. Vorzugsweise handelt es sich bei der Softwareapplikationsverteilerplattform um den Google Play Store. Von der Sof twareapplikationsverteilerplattf orm kann der Assemblercode der Java- Applikation 34 in Schritt S5 von Figur 3 auf ein mobiles Endgerät, wie beispielsweise das mobile Endgerät 20 von Figur 1, herunter geladen werden. Sobald der Assemblercode der Java- Applikation 34 auf das mobile End gerät 20 herunter geladen worden ist, kann die Java- Applikation 34 aus- geführt werden, indem der Assemblercode der Java- Applikation 34 abgearbeitet wird (siehe Schritt S6 von Figur 3). Dabei wird der Fachmann erkennen, dass das Vorhalten der Java- Applikation 34 auf der Softwareapplikati- onsverteilerplättf orm in Form von Assemblercode es erförderlich machen kann, dass für mobile Endgeräte mit unterschiedlichen Prozessorarchitektu- ren und Prozessorversionen entsprechend unterschiedliche Versionen der Java- Applikation 34 in Form von Assemblercode vorgehalten werden müssen.
Wie vorstehend bereits beschrieben, wird der Fachmann erkennen, dass sich aufgrund der Unterschiede zwischen Java Byte Code und Assemblercode beim erfindungsgemäßen Verfahren gemäß Figur 3 vorteilhafterweise bedeutend wirksamere Obfuskierungsmaßnahmen als beim herkömmlichen Verfahren nach Figur 2 einsetzen lassen.