1 Praktikum Eingebettete Systeme Wintersemester 08/09 Lehrstuhl für Technische Informatik Aufgabe B2: Anleitung und Fragen Einführung in das Mobiltelefon Die Grundlage für die mobile Telefonie ist auf der einen Seite das "zellulare Kommunikationsnetz", auf der anderen Seite sind es die mobilen Telefone. Das zellulare Kommunikationsnetz bzw. Mobilfunknetz besteht aus einzelnen Zellen, wobei in etwa deren geographische Mitte eine "Basisstation", d.h. ein Sende/Empfangsmast (Transceiver) steht. In Deutschland werden Mobilfunknetze der zweiten und dritten Generation betrieben. Dabei sind die Netze der zweiten Generation (2G) zwar prinzipiell datenfähig, aber noch sehr auf Sprachübertragung optimiert. Der wichtigste 2G-Standard ist GSM, technisch auch CSD (Circuit Switch Data) genannt. Die Einführung der dritten Generation (3G) erfolgt schrittweise, indem zunächst mit dem Standard GPRS eine Zwischengeneration ("2.5GNetze") geschaffen wird. Dabei wird das Mobilvermittlungsnetz um die Fähigkeit zur paketorientierten Datenübertragung erweitert, das Funknetz jedoch nicht verändert. Die Einführung datenoptimierter 3G-Netze schließlich zielt auf Erhöhung der Datenübertragungsraten und beseitigt außerdem Kapazitätsprobleme bei der Sprachübertragung. Erweiterte Funktionalitäten, etwa im Bereich Multimedia, folgen mit dem Ausbau der 3G-Netze. Der wichtigste 3G-Standard ist UMTS. Immer mehr von den mobilen Endgeräten in zellularen Funktnetzen sind sog. Smartphones. Ein Smartphone vereint den Leistungsumfang eines Mobiltelefons mit dem eines PDAs. Das heißt, Smartphones haben einerseits die Fähigkeit, sich in ein Mobilfunknetz einzuloggen und darüber telefonieren zu können (wie ein Mobiltelefon), andererseits haben sie auch die Fähigkeit, als kleiner Rechner Anwendungen auszuführen, wie dies auch ein PDA kann. Der Vorreiter der Smartphone Systeme war PEN/GEOS 3.0 des Herstellers GeoWorks im weltweit ersten Smartphone, der Nokia Communicator 91xx Serie. Der Übergang zwischen einem Smartphone und einem PDA ist fließend. Im Grunde genommen sind Smartphones voice-centric Geräte (Stimme ist die primäre, Daten die sekundäre Funktion), die PDA-ähnliche Funktionalität bieten. PDAs oder Personal Communicators wie z.B. BlackBerrie, können Telefonie-Funktionalität bieten, sind aber datacentric, also für die Datenverarbeitung ausgelegte Geräte. Ausserdem können Smartphones in der Regel mit einer Hand bedient werden, wogegen PDAs beidhändige Bedienung erfordern. 2 Bei einem Smartphone wird das Betriebssystem des PDAs um typische Telefonfunktionen erweitert: • • • Personal Information Manager (PIM) wie Terminkalender, Adressbuch, Aufgabenliste, Notizblock Anwendungen aus dem Telefonbereich wie Telefon, Kurzwahllisten, Telefonregister Online-Anwendungen wie Webbrowser oder ein E-Mail-Programm Die meistbenutzten Betriebssysteme in Smartphones sind Symbian, Palm OS (entwickelt von PalmSource), Windows Mobile (Erweiterung von Windows CE, das für PocketPC entworfen wurde) und Linux. Aufbau des Mobiltelefons Das Mobiltelefon besteht aus einem Lautsprecher, einem Mikrofon, einem Bedienteil (Tastatur und Anzeige) und einer Steuerung (enthält meist einen Mikrokontroller), siehe Abbildung 1. Die Displays sind heutzutage bereits kleine Computerbildschirme. Zusätzlich hat es einen Funkteil (Sendeempfänger und Antenne) und eine eigene Stromversorgung (meist einen Akkumulator). Die meistverwendeten Betriebssysteme in Mobiltelefonen sind Symbian, Palm OS, Windows Mobile und Linux. Das im Praktikum verwendeten Mobiltelefon Nokia 6680 verwendet ein Symbian-Betriebssystem. Generell ist zum Betrieb eine SIM-Karte notwendig, die zur Identifizierung gegenüber dem Mobilfunknetz dient. Wie alle Geräte mit integriertem Prozessor ist auch ein Mobilfunktelefon nicht frei von Softwarefehlern. Bislang sind einige wenige Handyviren für Symbian-basierte Geräte bekannt, die Anzahl wird aber steigen. Im Rahmen zunehmender Integration mobiler Geräte (Mobiltelefone, PDAs, Smartphones, Notebooks) stellt Bluetooth eine bequeme und flexible Möglichkeit, Geräte untereinander zu vernetzen, dar. Speziell im Mobiltelefonsektor konnte sich Bluetooth bei der Verwendung von drahtlosen Headsets etablieren. Darüber hinaus ermöglicht Bluetooth einfachen und schnellen Datenaustausch zwischen zwei Mobiltelefonen. Im Gegensatz zu IRDA (Infrared Data Association) ist auch kein Sichtkontakt der beiden Geräte notwendig. Die Anwendung von Bluetooth zielt darauf ab, mobile Endgeräte dynamisch und jederzeit miteinander und mit Aktorknoten zu vernetzen, um Informationen auszutauschen (pervasive computing). Die Nutzung von Bluetooth ist allerdings nicht gefahrlos, da Authentifizierungs- und Datenübertragungs-Mechanismen des aktuellen Protokolls Sicherheitslücken aufweisen. Es besteht die Möglichkeit, sich anonym und ohne Wissen des Besitzers mit einem Bluetooth Gerät zu verbinden und vertrauliche Daten auszulesen. Diese Daten beinhalten das Telefonbuch, die Kalendereinträge und die IMEI (International Mobile Equipment Identity). Dieser Angriff ist unter dem Namen SNARF attack bekannt, der genaue Vorgang wird aus Sicherheitsgründen von den Herstellern jedoch nicht erläutert. Desweiteren besteht die Möglichkeit, mit einem ehemals als vertrauenswürdig eingestuften Gerät auf sämtliche Daten zuzugreifen, auch wenn dieses Gerät aus der Liste der "paired Geräte" entfernt wurde. Dieser als "Backdoor attack" bekannter Angriff erlaubt nicht nur das Auslesen von Daten, sondern auch die Nutzung von bereitgestellten Diensten. Außerdem kann der vollständige ATBefehlssatz (Befehle für Modems) genutzt werden, indem eine Verbindung mit seriellem Profil aufgebaut wird. 3 Abbildung 1: Aufbau eines Mobiltelefons Aus den oben genannten Gründen empfiehlt es sich, Bluetooth nur bei Bedarf einzuschalten oder sich zumindest für andere unsichtbar zu machen. Unerwartete Bluetooth-Nachrichten sollten einfach abgewiesen werden. Werden einige wenige mobile Endgeräte miteinander vernetzt, so spricht man von einem Personal Area Network (PAN). Das Ethernet Protokoll wurde allerdings für Local Area Networks (LAN) mit vielen stationären Geräten entworfen. Die Infrastruktur des Netzwerks ist für eine breite Funktionalität und eine vielseitige Kommunikation zwischen komplexen Geräten ausgerichtet. In einem PAN wird diese Komplexität nicht benötigt, daher eignet sich hier Bluetooth mit dem einfacheren Protokoll besser. Des Weiteren weist Bluetooth einen geringeren Energieverbrauch auf und ist deshalb eine bessere Alternative für den Aufbau von PAN ad-hoc Netzwerken. Fast alle neueren Mobiltelefone enthalten einen Interpreter für die Programmiersprache Java in einer Minimalausgabe (Mobile Information Device Profile, MIDP), die aber die wesentlichen Funktionen von Java enthält. Eine wachsende Szene von Programmierern versorgt die Benutzer mit Freeware, Shareware und kostenpflichtigen Spielen. Mobiltelefone in Europa funktionieren heutzutage nach dem GSM-Standard. Sie benutzen Frequenzen um 900 MHz (D-Netz) beziehungsweise 1800 MHz (E-Netz). Neuere Triband-Handys können zusätzlich noch auf 1900 MHz operieren, diese Frequenzen werden jedoch nahezu ausschließlich in den USA genutzt. Während die Basisstationen für Mobiltelefone Sendeleistungen um 50 Watt haben, kommen Mobiltelefone mit Sendeleistungen von max. 2 W (D-Netz) beziehungsweise 1 W (E-Netz) aus. Für die Übertragung wird als Modulationsart 4 GMSK (Gaussian Minimum Shift Keying, eine weiterentwickelte, optimierte Version der Frequency Shift Keying (FSK)) verwendet. Die nächste Generation der Mobilfunkgeräte ist in Europa hauptsächlich das Universal Mobile Telecommunications System UMTS als eine Weiterentwicklung des GSM-Standards. CDMA2000 ist eine Weiterentwicklung des besonders in den USA weit verbreiteten CDMAStandards und wird auch dort vielfach verwendet. UMTS arbeitet bei Frequenzen um 1800 bis 1900 MHz, benutzt viele kleine Funkzellen und ist für höhere Datenübertragungsgeschwindigkeit und höhere Nutzerzahl optimiert. Wegen der kleineren Funkzellen und bedingt durch weiterentwickelte Modulationsverfahren konnte die Sendeleistung der Mobiltelefone gegenüber GSM auf 0,125 - 0,25 W reduziert werden. Der Suchassistent oder "Research Agent" in einem drahtlosen Bluetooth-Netzwerk Netzwerk In drahtlosen Sensor/Aktor-Netzwerken muss ein mobiler Knoten, der in ein bestehendes Netz eindringt, zunächst nach BT-Geräten in der Umgebung, d.h. im erreichbaren Sende/Empfangsbereich suchen, um sich in das Netz zu integrieren (Inquiry). Nach der Integration kann der mobile Knoten auf den gefundenen BT-Geräten nach gewünschten Dienstleistungen(Services) suchen und diese anfordern. In Abbildung 2 ist die "Inquiry Prozedur" dargestellt. Bevor ein Bluetooth-Gerät eine Verbindung zu einem anderen Gerät aufbauen kann, muss es zunächst feststellen, ob sich ein BT-Gerät in seiner Kommunikationsreichweite befindet. Sobald also ein Bluetooth-fähiges Gerät aktiviert wird, sendet dieses Suchsignale aus, um weitere Netzknoten zu finden. Dieses Gerät übernimmt hier die Rolle eines Suchassistenten (Research Agent). Dies geschieht mittels der Inquiry Prozedur (dt. Erkundigung, Anfrage). Der Inquiry-Befehl ist die einzige broadcast-ähnliche Funktion im Bluetooth-Standard, die die Suche nach Bluetooth-Geräten in der Umgebung ermöglicht. Hierbei sendet das Gerät periodisch ID-Pakete aus, die einen so genannten Inquiry Access Code (IAC) enthalten und signalisiert den anderen Stationen damit, dass nach ihnen gesucht wird. Das ID-Paket enthält keine Informationen über die sendende Quelle, wodurch die Anonymität gewahrt wird. Die ID-Pakete werden nacheinander auf verschiedenen Frequenzen gesendet. Dabei werden die Frequenzen 3200-mal in der Sekunde gewechselt, um in kürzester Zeit so viel Frequenzen wie möglich abzudecken und damit schnell Bluetooth-fähige Geräte zu entdecken. Als Initiator dieser Verbindung übernimmt dieses Gerät die Rolle des Masters. Die Gegenseite (inquiry scanning device), also der Slave, wechselt die Frequenzen im Vergleich zum Master nur alle 1,28 Sekunden und somit langsamer. Diese unterschiedlichen Geschwindigkeiten im Frequenzwechsel führen dazu, dass sich früher oder später beide Geräte auf derselben Frequenz befinden. Das Inquiry scannende Gerät kann sich nicht nur auf einer festen Frequenz befinden, da durch Interferenzen der Umgebung diese Frequenz gestört werden kann. 5 Abbildung 2: Inquiry Prozedur Auf die Inquiry-Nachricht antwortet der Slave mit einem "Frequency Hopping Synchronisation" Paket. Das Antwortpaket enthält die Informationen wie die Bluetooth MAC-Adresse, sowie Informationen über den aktuellen Wert der Systemuhr und die Stärke des empfangenen Inquiry-Signals. Die MAC-Adresse ist die eindeutige Kennung des Gerätes und wird für die Identifizierung der Kommunikationspartner benötigt. Zusätzlich kann man einem Gerät auch einen Klartextnamen zuweisen. Nach dem Inquiry erfolgt eine PageProzedur, die eine Verbindung zwischen dem Master und dem Slave aufbaut. Befinden sich zwei Geräte bereits in einem Piconetz, so entfällt die Inquiry-Prozedur. Einführung in die Entwicklungsumgebungen Allgemeines In dieser Aufgabe lernen wir die Entwicklungsumgebungen Netbeans und Eclipse, sowie Java Wireless Toolkit (JWT) kennen. Zudem gibt es eine Einführung in die MIDlet/BluetoothProgrammierung. Sie können zwischen Netbeans und Eclipse wählen. Eclipse ist weit verbreitet und besonders an den Universitäten sehr beliebt. Netbeans unterstützt und erleichtert die MIDlet-Programmierung, daher empfehlen wir speziell für dieses Projekt eher Netbeans. NetBeans NetBeans ist eine Entwicklungsumgebung, die komplett in der Programmiersprache Java geschrieben ist. NetBeans wurde für Java entwickelt, es werden aber auch Sprachen wie C, C++, Ruby und Fortran unterstützt. Die Architektur der Software ist vollständig modular aufgebaut und durch so genannte Module bzw. Plugins erweiterbar. Zusätzlich gibt es so 6 genannte Packs, welche die IDE (Integrated Design Environment) um größere Funktionspakete erweitern. Des Weiteren kann NetBeans als Plattform für eigene Anwendungen verwendet werden. Schwerpunkte bei der Entwicklung von NetBeans bildeten Funktionen, dze den Entwickler produktiver machen. [5] Sun Microsystems gründete das NetBeans-Open-Source-Projekt im Juni 2000 und ist dessen Hauptsponsor. NetBeans enthält u.a. einen Editor, Debugger, GUI-Builder, kann für alle Java Editionen und fast allen Betriebssystem-Plattformen verwendet werden. [6] Zu Empfehlen ist das Durcharbeiten eines passenden Tutorials (www.netbeans.org > Tutorials > Mobile Applications > Developing Java ME/CDC Applications). Sie können auch nach „MIDlet“ im Netbeans-Tutorial suchen. Folgendes Bild ist dem Link [7] entnommen. Netbeans ist an einem der PCs im Übungsraum C220 installiert. 7 Java Wireless Toolkit (JWT) Bei der Programmierung von Anwendungsprogrammen für mobile Endgeräte eignet sich die Verwendung des Java Wireless Toolkit. Abbildung 1: Hauptmenü des Java Wireless Toolkit Erstellen Sie mit „New Project“ ein neues Projekt, geben Sie dazu den Namen ihres Programs und die MIDlet-Klasse an. Es wird daraufhin ein neues Verzeichnis unter C:\WTK25\apps\ erstellt. Darin finden Sie die Verzeichnisse src\ und bin\, in welchen Sie die Quelldateien ablegen (src\), bzw. die erstellten .jar Files finden (bin\). Starten Sie nun Eclipse und geben Sie als Workspace-Verzeichnis C:\WTK25\apps\ an. Dann können Sie bei der Erstellung eines neuen Projekts den Namen ihres WTK-Projekts angeben und Eclipse übernimmt die dort vorhandene Verzeichnisstruktur. Erstellen Sie im Unterordner src\ ihre Quelldateien und speichern Sie ihre Arbeit. Kompilieren Sie ihr Projekt mittels Build im Wireless Toolkit. Das Java Wireless Toolkit enthält einen Emulator zum Testen Ihrer Programme ohne ein Mobiltelefon. Klicken Sie dazu nach dem Kompilieren auf Run. Es öffnet sich ein neues Fenster mit einem Handy, welches Sie per Maus bedienen können. 8 Abbildung 2: Der Emulator des Java Wireless Toolkit Um Ihr Programm auf das Handy zu laden, gehen Sie auf Project -> Package -> Create Package Sie finden dann im Unterverzeichnis \bin ein .jar File, welches Sie z.B. per Bluetooth auf das Handy laden können. Für eine erste Einführung in die MIDlet-Programmierung sollten Sie sich Kapitel 2 der "Java Wireless Toolkit Dokumentation" ansehen. Gehen Sie dazu auf START -> All Programs -> Sun Java Wireless Toolkit 2.5 Beta -> Documentation. Anhand des dort beschriebenen Beispiels werden wir hier die Grundlagen der MIDlet Programmierung erarbeiten, welche Sie zur Lösung dieser Aufgabe benötigen. Anschließend sollen Sie sich mit der Bluetooth-Funktionalität und den zugehörigen Bibliotheken vertraut machen und diese mittels eines MIDlets auf dem Mobiltelefon realisieren. Ihre Applikation soll in der Lage sein per Bluetooth mit der Host und den BTNodes zu kommunizieren und die dort angebotenen Dienste abzufragen und zu nutzen. MIDlet Programmierung NetBeans nimmt Ihnen einiges an Arbeit ab, was die MIDlet-Programmierung betrifft. Trotzdem ist es wichtig, dass Sie wenigstens ein paar Grundlagen über MIDlets wissen. Anwendungen für das Mobile Information Device Profile (MIDP) heißen MIDlets. Ein oder mehrere MIDlets bilden eine MIDlet-Suite. Eine MIDlet-Suite ist die kleinste installierbare Einheit. Wir gehen hier davon aus, dass Sie das MIDlet "TinyMIDlet" aus der Documentation implementiert und im Emulator getestet haben. Wie Sie im Source-Code von Tiny-MIDlet sehen, erweitert die Klasse TinyMIDlet die Klasse "MIDlet". Jedes entwickelte MIDlet muss die Basisklasse "MIDlet" erweitern. Wird das MIDlet gestartet, so wird die von Ihnen zu 9 implementierende Funktion startApp() aufgerufen. In dieser Funktion legen Sie fest, was angezeigt werden soll, wenn das MIDlet gestartet wird. Der Befehl display.setCurrent(mainForm); bringt dabei die vorher definierte Form "mainForm" zur Anzeige. Der Inahlt dieser Startseite kann alternativ auch bereits im Konstruktor Ihrer Klasse festgelegt werden. Den Befehl zur Anzeige müssen Sie jedoch in der Funktion startApp() absetzen. Der Befehl Command exitCommand = new Command("Exit", Command.EXIT, 0); fügt der Startseite den Befehl "Exit" hinzu. Als Argumente besitzt der Konstruktor Command 1. den Namen des Befehls, 2. den Commando-Typ und 3. die Priorität. Hierbei gilt, je kleiner die Zahl im Feld Priorität, desto höher die Priorität. Des Weiteren, bedeutet eine höhere Priorität (kleinere Zahl), dass dieser Befehl für den Nutzer schneller zugänglich ist, in einem Menü also mit weniger "Klicks" zu erreichen ist. Es empfiehlt sich bei sehr wichtigen oder vorrangigen Befehlen, wie "EXIT" oder "Cancel" eine höhere Priorität zu wählen, um deren Ausführung zu garantieren. Wählt der Benutzer einen Befehl aus, so wird im MIDlet die Funktion public void commandAction(Command c, Displayable s) aufgerufen. Diese Funktion stammt aus dem Interface CommandListener welches von unserer Klasse implementiert wird. Um ein Interface zu implementieren, muss jede im Interface enthaltene Funktion in der implementierenden Klasse definiert werden. Oben genannte Funktion bekommt als Parameter c den abgesetzen "Command" mit dessen Hilfe das Verhalten des MIDlets auf Benutzerinteraktionen gesteuert wird. Der Parameter Displayable s beinhaltet die aktuell angezeigte Seite. Aus ihr lässt sich unter anderem herauslesen, welcher Menü-Eintrag bei Absetzen des Commands c markiert war. Da das MIDlet das Interface implementiert, muss hier festgelegt werden, wie sich die Applikation bei verschiedenen Benutzerangaben verhalten soll. Einige Funktionen, die Sie im Laufe der nächsten Aufgaben benutzen werden, erfordern, dass sie in einem neuen Thread ausgeführt werden. Es empfielt sich, die Verwendung einer weiteren Klasse die für die Ausführung der Bluetooth-Funktionaltät zuständig ist und problemlos in mehreren Instanzen (Threads) gestartet werden kann. Sehen Sie sich hierzu das Beispiel BluetoothDemo aus dem Wireless Toolkit an. Bluetooth Programmierung Anhand des Beispiels BluetoothDemo werden Sie nun die Grundlagen der BluetoothVerwendung in Java kennenlernen. Im Source-Folder der BluetoothDemo finden Sie fünf Dateien. • • • DemoMIDlet GUIImageClient GUIImageServer 10 • BTImageClient Die Klasse DemoMIDlet ist das MIDlet der Anwendung, GUIImageCient und GUIImageServer sind client- und serverseitig jeweils zur Verarbeitung und Anzeige der in BTImageClient bzw. BTImageServer per Bluetooth empfangen Daten zuständig. BTImageClient wird von GUIImageClient aufgerufen und dient der Suche nach BluetoothGeräten in der Umgebung (Inquiry), der Suche nach Bildern, welche ein gefundenes Gerät bereitstellt und den Bilder-Download. BTImageServer stellt nicht sichtbar für den Nutzer die Bluetooth-Funktionaltät bereit, antwortet auf Anfragen eines Clients und sendet das ausgewählte Bild per Bluetooth an einen Client. Die Klasse BTImageClient implementiert Runnable und DiscoveryListener. Durch die Implentierung von Runnable wird bei Starten eines Threads die Funktion run() ausgeführt. Durch den DiscoveryListener können Bluetooth-Anfragen wie searchDevices oder searchServices gestartet und die dadurch entstehenden Daten verarbeitet werden. Auf der Seite Java Reference/API finden Sie die API zur Bluetooth-Programmierung in Java. Zur Suche nach Bluetooth-Geräten in der Umgebung wird ein DiscoveryAgent benutzt. Dieser erlaubt das Suchen nach Geräten und nach Services. Zum Suchen nach Geräten wird die Methode startInquiry benutzt. Sie erwartet folgende Argumente: 1. int accessCode bestimmt den Typ der Inquiry. Wir verwenden : DiscoveryAgent.GIAC. 2. DiscoveryListener: Listener bestimmt den Listener Thread welcher die gefundenen Geräte empfängt und verarbeitet Das Interface DiscoveryListener bietet eine Möglichkeit, die durch eine Inquiry empfangenen Daten zu verarbeiten. Dazu müssen Sie die Funktion deviceDiscoverd implementieren und die übergebenen Argumente RemoteDevice btDevice und DeviceClass cod (letztere werden Sie nicht zwingend benötigen) in Klassenvariablen speichern und weiterverarbeiten. Eine Einführung in Java2ME und weitere Literatur zum Thema Bluetooth-Programmierung finden Sie in der Anleitung B4. Anhang Literatur und Quellen [1] http://www.bluetooth.com [2] www.thebunker.net/security/bluetooth.htm [3] www.wikipedia.org [4] http://java.sun.com/javame/reference/apis/jsr082/ [5] http://www.mobileinfo.com/ [6] Sauter, Martin; Grundkurs Mobile Kommunikationssysteme, Vieweg, 2004 11 [7] Special Interest Group: Specification of the bluetooth system - wireless connections made easy, 2004 [8] http://java.sun.com/products/sjwtoolkit/download-2_5.html [9] http://java.sun.com/javame/reference/apis.jsp [10] http://wireless.klings.org/klings_jabwt_master_thesis.pdf [11] http://www.eclipse.org [12] www.wikipedia.de > netbeans [13] www.netbeans.org [14] http://www.netbeans.org/kb/55/quickstart-mobility.html Fragen: 1. Was ist ein Smartphone? 2. Welche Betriebssysteme werden in Smartphones verwendet? Geben Sie einen kurzen Überblick über die Funktionalität der jeweiligen Betriebssysteme und bewerten Sie diese! 3. Informieren Sie sich über Symbian-OS! Welches ist die neueste Version? Beschreiben Sie die Haupt-Eigenschaften dieses Betriebssystems! 4. Welche Compiler gibt es für Symbian-OS? 5. Warum wird Bluetooth in Mobiltelefonen eingesetzt? 6. Welche Gefahren sehen Sie in der Nutzung von Bluetooth und wie kann man sie vermeiden? 7. Was versteht man unter Bluebug- und Backdoor-Attack ? 8. Gibt es Alternativen zu Bluetooth? Welche Vor- und Nachteile haben sie? 9. Was sind die Unterschiede und ggf. Gemeinsamkeiten zwischen PAN und LAN?