UbiComp Vision “Computer in the World” anstelle von “World in the Computer” UbiComp ist “erweiterte Realität” (augmented reality) und nicht “virtuelle Realität” (virtual reality) Binde und integriere Computer perfekt in alltägliche Objekte ein, so dass sie allgegenwärtig werden und man sie aber trotzdem kaum bemerkt (“invisible computing”). Computer erweiteren die Objekte zu “smart Objects”. Treiber 1. Moore’s Law: Die Anzahl Transistoren verdoppelt sich ungefähr alle zwei Jahre (Populärer: Verdoppelung der Anzahl Transistoren in Integrierten Schaltkreisen alle 18 Monate). Man sagte auch, dass die Speicherdichte im selben Mass ansteigt wie die Prozessorpower, die Geschwindigkeit der Speicher verbesserte sich aber nur wenig und es kommt zu einem immer grösseren “Gap” zwischen Prozessor- und Speichergeschwindigkeit. Der Trend der Leistungsteigerung und Dichte der Transistoren von Prozesooren stimmt bis heute. 2. Neue Materialien: Organische Halbleiter, Flexible Substrate und Lichtemittierende Polymere erlauben dünne flexible Displays, “Smart Paper” (Electronic Ink). 3. Fortschritte in der Kommunikationstechnologie: Drahtloser (und sehr billiger) Zugang zum Internet wird immer mehr an jedem Ort ohne manuelle Konfiguratione (“instant on”) möglich. Objekte der realen Welt können auf Service im Internet zugreifen. Neue Technologien, z.B. Intrabody Kommunikation. 4. Neue Konzepte: Neue Kommunikationsparadigmen, z.B. “Spontaneous Networking” 5. Bessere Sensoren: Sensoren werden immer kleiner und benötigen weniger Energie oder sogar keine eigene Energie (piezoelektrische und pyroelektrische Materialien transformieren Druck oder Temperatur Änderungen in Energie um, z.B. Piezoelektrische Transponder). Sensoren kommunizieren selbständig miteinander und bilden daraus kontextbezogene Relationen. Information Appliance Appliance: Ein Gerät oder Instrument geschaffen um eine spezifische Funktion auszuführen, im speziellen ein elektrisches Gerät wie z.B. ein Toaster. Information Appliance: Ein für den Zugriff auf Informationen und den Austausch dieser Informationen spezialisiertes Appliance. Motivation: Einfachheit - das Gerät sollte ein Teil der Aufgabe werden (wir wollen keine Bohrmaschine, wir wollen ein Loch in der Wand), sollte sich wie ein natürliche Erweiterung der Arbeit anfühlen. Sind durch ihre Funktion gekennzeichnet und verstecken ihre Komplexität (im Gegensatz z.B. zu einem PC), konsistent und vorhersehbar. Dadurch das Computer immer billiger sind, kann man sie überall für spezielle Zwecke einbauen und braucht nicht einzelne teurere Mehrzweckgeräte (PC) (Vergleich Motor: früher ein grosser Motor in einer Fabrik für verschiedene zuschaltbare Geräte, heute sind kleinste Elektromotoren überall und wir müssen uns nicht darum kümmern, d.h. wir wissen nichtmal wo überall Motoren eingebaut sind.) Auf dem Weg zu vernetzten Information Appliances entstehen zum einen innovative persönliche Technologien und zum anderen informationstechnisch erschlossene Umgebungen. Neue persönliche Technologien sehen vor allem vor, über eine neue Qualität der Portabilität von Informationstechnologien ubiquitären Zugriff auf Informationsdienstleistungen zu erreichen; ubiquitär steht hier für IT überall mitnnehmen können. In Informationsumgebungen ist der Ansatz hingegen, Informationstechnologien in die räumliche Umgebung einzubetten; hier steht ubiquitär für IT überall vorhanden. persönliche Informationstechnologien Für persönliche Informationstechnologien sind zwei Entwicklungen entscheidend: Miniaturisierung (Mobilisierung) und Spezialisierung (vom portablen Standardrechner zum persönlichen Information Appliances). Beispiele: EBooks, Tragbare GPS Geräte mit Karten und Wegbeschreibung, Internetfähige Handys, Wireless verbundene PDAs, “Smart Rooms”, “Wearable Computers” 1 Linking Atoms to Bits Smart Proxies Die Objekte der Realen Welt (“atoms”) haben eine Gegenstück in der virtuellen Welt (“bits”). Verbindung der realen Welt mit der digitalen Welt z.B. durch Barcode oder RFID Leser und die Verknüpfung der ID mit einer entsprechenden URL und Webpage im Internet, d.h. man identifiziert eine Objekt Instanz und nicht einen Objekt Typen. Mögliche Anwendungen: kriege Informatione über ein reales Objekt, z.B. der Inhalt eines Medikamentes, intelligenter Assistent, z.B. welche Teile gewartet werden müssen. Der Graben zwischen der realen (wo Objekte identifiziert werden) und der virtuellen Welt (wo alle die intelligenten Eigenschaften implementiert werden) muss dabei überwunden werden. Der Graben wurde bis heute immer kleiner: Am Anfang wurden Daten über Objekte manuelle eingegeben und abgefragt, dann erleichterten Schrichcodes die Identifizierung und automatische Datanbankabfrage, heute und in Zukunft können RFID Tags die für eine Objekt das virtuelle Gegenstück identifizieren. Verkleinern der Grabens durch automatische Verknüpfung von smarten Dingen mit Informationssystemen, Vermeidung von Medienbrüchen und Eingabefehlern und durch Ermöglichung zeitgemässer Informationen. Probleme: Wer kontrolliert die Informationen die zu einem Objekt angegeben werden ? Wem gehört die Zuordnung ? Privacy ? Interaktive Physikalische Objekte Virtuelle Gegenstücke representieren die reale-welt Artefakten in der virtuellen Welt, passiv (mit “Homepage”), aktiv (mit “Proxy”) oder durch ein Service Interface. Physikalische Objekte speichern Informationen über ihren Zustand oder ihre Umwelt, z.B. Wann sie sich wo befanden, Informationen über den Inhalt (z.b. von Koffern) usw. (Artefakt Memories) Technologien zur Identifikation • Near Field Communication (NFC): intuitive short-range Interaktion (0∼20 cm) durch Berühren oder Aneinanderhalten von Geräten. Arbeitet im unregulierten Hochfrequenzbereich von 13.56 MHz. Die übertragungsrate kann auf 106, 212 oder 424 kbits/s gesetzt werden. Es gibt einen Passiven und einen Aktiven Modus. Im Passiven Modus generiert nur ein Gerät (der Initiator) das RF Feld, während das andere Gerät (Target) load Modulation zum Transfer der Daten benutzt. Im aktiven Modus generieren beide Geräte ihr eigenes RF Feld für die Kommunikation. Anwendungen – Transfer von Inhalt: Man kann auf Inhalt und Service zugreifen, indem man einfach andere smarte Gegenstände berührt, z.B. macht man mit einem Handy (oder PDA) Fotos und zeigt sie anschliessend am Fernseher, indem man den “Hot Spot” des Fernsehers mit dem Handy berührt, oder man berührt im Museum einen Gegenstand mit dem PDA und es erscheinen Informationen über den Gegenstand. – Electronic Ticketing und Payment: Durch das Berühren eines Gegenstandes (z.B. Filmposter) mit seinem Handy kann man Tickets bestellen oder für einen Service (oder Gegenstand) bezahlen. – Konfigurieren und Initialisieren von Wireless Verbindungen: Durch einfaches zusammenführen der Geräte können z.B. Bluetooth Verbindungen einfach, sicher und automatisch konfiguriert werden, das ermöglichte eine spätere Datenübetragung über grössere Distanzen und mit höheren Datenraten ohne die manuelle Konfiguration dieser Verbindung. • Visuelle Tags für die Objekt-Interaktion mit Kameraausgerüsteten Handys: Viele Handys haben heute integrierte Digitale Kameras und sie werden damit zu idealen “bridging” Geräten zwischen der realen und virtuellen Welt, da sie immer in der Nähe ihres Benutzers sind und konstant kabellose verbunden sind, die Kamera agiert dabei als mobiler Sensor um Objekte in der Umgenung des Benutzers zu detektieren. Es gibt verschiedene Arten von Visuellen Codes, je nach Anwendung, Anzahl codierter bits und Auflösung der anvisierten Kameras. Die visuellen Codes können ein eingebautes Koordinatensystem haben und Rotation, Neigung und Distanz des Codes im Bild detektieren. • RFID: siehe weiter unten • Barcodes: eindeutige Identifikation durch eine Barcode ID mit der z.B. ein URL in Verbindung gebracht werden kann. 2 Um also Atome mit Bits zu verlinken brachen wir ein adequates Model der realen Welt und seine Realisation, zudem Techniken um den Graben zwischen diesen beiden Welten zu überbrücken, d.h. Identifikationstechnologien, Netzwerke und Infrastrukturen. Konsequenzen Ubiquitous Computing Technologien werden eine grossen und bedeutenden Einfluss auf unsere Gesellschaft und die Welt in der wir leben haben und sie wird ökonomischen, sozialen und kulturellen Konsequenzen haben, die man Erkennen und überdenken muss und die neue Herausforderungen bringen werden (z.B. Privacy). Smart Cards Geschichte 1968 1970 1974 1977 1980 1982 1984 1992 Jürgen Dethloff und Helmut Grötrupp aus Deutschland patentieren die Idee von Plastikkarten mit Mikrochips Arimura patentiert eine andere Version in Japan Der französische Journalist Roland Moreno erfindet und patentiert eine IC Karte die man man später “Smart Card” nennt in Frankreich Motorola produziert gemeinsam mit der Französischen Computer Firma Bull den erste Smart Card Mikrochip Frankreich lanciert die ersten erfolglosen Smart Card Tests in drei Städten Der erste US Versuch in North Dakota und New Jersey Die ersten “Smart card” Telefonkarten Französische Finanzunternehmen ersetzen die Magnetstreifenkarte mit Smart Cards Smart Card Typen Memory Card Einfachste (und günstige, < 1 Euro) Form einer Smart Card. Diese Karte besitzt einen nichtflüchtigen EEPROM Speicher mit einer Kapazität von typischerweise 256 bit- 8 kB. Eine Memory Card bietet eine Transport Medium für Daten und mit einer Zugriffskontrolle auf gewisse Bereiche des Speichers (z.B. mit PIN) eine limitierte Möglichkeit sicher persönliche Daten zu speichern (Sicherheit ist vergleichsweise niedrig). Die Karte besteht aus dem EEPROM für die Applikationsdaten und evtl. aus einem ROM für die Identifikationsdaten und einer Logik für die Access Controll. Man nennt diese Karten oft auch “asynchrone Karten”, da diese Offline benutzt werden und der assozierte Datenfluss grundsätzlich uni-direktional, von der Karte zum Leser, ist. Anwendungen sind z.B. Prepaid Cards (z.B. Telefon), Loyalty Cards (z.B. Airlines, Retail), Parkkarten, Lottokarten usw. Processor Card Technisch ausgefeiltere Karten sind die Prozessor Karten, oft auch die “wahren” Smart Cards genannt, welche einen internen Mikroprozessor besitzen (typischerweise 8 bit mittlerweile aber bis zu 32 bit, 1 bis 10 MHz (bis zu 66 MHz intern), 0.18-0.35µm für billige 8 bit Prozessoren auch 0.5µm Technologie, MMU für Multiapplikations Smart Cards). Diese Smart Chip Karten besitzen eine RAM mit wenigen hundert Bytes (man testet aber bereits Karten mit 1 MB Flash Memory). Durch den Mikroprozessor können diese Karten intern Berechnungen vornehmen und geheime Daten müssen die Karte nicht verlassen, was sie für sicherheitsrelevante Anwendungen wie Authentifikation sehr geeignet macht. Solche Karten können auch spezielle Schaltungen um kryptographische Operation wie RSA Public Key Verschlüsselung, Signaturen und Verifikation auszuführen, DES Implementationen oder Pseudozufallsgeneratoren (“Noise” Generatoren) besitzen. Die Daten auf dem Chip können durch aktive Datenverschlüsselungs Schemas und z.B. biometrische Identifikation, welche den authorisierten Besitzer eindeutig identifizieren geschützt werde. Diese Karten nennt man manchmal auch “synchrone Karten”, da der Datenfluss bi-direktional ist: Daten werden von der Karte gelesen, als auch auf die Karte geschrieben. Um on-board Datenverarbeitung zu unterstützen haben Prozessor Karten beachtlich mehr Speicher, typisch sind 24 bis 256 kB ROM, 2 bis 72 kB EEPROM und 0.25 bis 8 kB RAM. 3 ISO Standard Der ISO Standard 7816 definiert Standards fü Smart Cards: • ISO 7816.1 definiert die Physikalische Charakteristik: Smart Cards sind ID-1 type Karten (ISO 7810) mit den Abmessungen 85.6 mm× 53.98 mm×0.76 mm (B×H×D). Es gibt aber auch andere Ausführungen für Smart Card z.B. in einem Schlüssel oder die GSM-SIM (GSM Subscriber Identity Module) für in die Handys. • ISO 7816-2 definiert Ort und Dimensionen der Kontakte: siehe Abbildung 1 • ISO 7816-3 definiert die elektronischen Signale und übetragungsprotokolle: Die Kommunikation wird immer vom Terminal initiert (Card = Server, Terminal = Client), indem es sich mit den Kontakten der Smart Card verbindet und die nötige Spannung (Vcc ) und Signale (CLK, I/O oder RST ) an den entsprechenden Kontakten anlegt und einen Request an die Karte schickt (siehe weiter unten). Es gibt heute auch kontaktlose Karten bei denen ohne physischen Kontakt mit der Karte kommuniziert werden kann, was schneller geht. Die Daten (Kommando) übertragung funktioniert asynchron (oder synchron) bitweise seriell, typisch mit 9600 bit/s (in neuen Karten bis zu 115 kbit/s), Halbduplex. Die Kommunikation ist Byteorientiert mit Startbit, Paritybit und 2 Bit “guard time” zwischen Bytes und Byte Wiederholung, wenn das NAK mit der I/O Line vom Empfänger auf low gesetzt wird oder Blockorientiert mit maximal 254 Bytes pro Block und LRC oder CRC Error Code. Neue Generationen von Smart Cards können via USB kommunizieren, indem dafür die zwei reservierten Kontakte (RF U ) benutzt werden. Man kann damit eine Halb-/Vollduplex Kommunikation mit 1.5 Mbit/s erreichen. Ein Dialog zwischen einem Terminal und der Smart Card wird durch die folgenden Operationen geführt: – Verbinden und Aktivieren der Kontakte durch das Terminal: Der elektrische Schaltkreis der Karte soll nicht aktiviert werden bis alle Kontake mit dem Terminal verbinden sind. Dann setzte die Signale: RST ist Low, am Vcc liegt die nötige Spannung, I/O im Terminal wird auf Empfangsmodus gesetzt, Vpp auf Idle und am CLK liegt das entprechende Taktsignal – Karte führt ein “power-on-reset” durch: Die I/O line sollte innerhalb 200 Taktzyklen auf Z (hohe Impedanz; undefiniert) gesetzt werden. Eine “internally reset” Karte, resets nach ein paar wenigen Zyklen des Taktsignales und die Antwort sollte zwischen 400 und 40’000 Taktzyklen nach dem ersten Taktsignal erfolgen. Eine Karte mit einem “active low reset” wird zurückgesetzt, indem RST für mindesten 40’000 Taktzyklen Low gehalten wird. Wenn keine Antwort innerhalb 40’000 Zyklen mit RST auf Low beginnt, wird RST auf High gesetzt. Die Anwort (ATR) auf dem I/O sollte zwischen 400 und 40’000 Taktzyklen nach der steigenden Flanke des RST Signales erfolgen. Erfolgt die Antwort in nicht in dieser Zeit, wird RST auf Low zurückgesetzt und die Kontakte vom Terminal deaktiviert – Karte sendet ein “answer to reset” (ATR) zum Terminal: Der ATR String bietet Informationen über die Karte (Interface Characters: physikalische Parameter der Intergrierten Schaltung und logische Eigenschaften der folgenden Datenaustausch Protokolle; Historical Characters: generelle Informationen wie z.b. Kartenhersteller, Chip und ROM in der Karte). – Daten und Kommando Austausch zwischen der Karte und dem Terminal: Terminal sendet eine command APDU (Application Protocol Data Unit) an die Karte und die Karte antwortet mit einer response APDU (siehe Abbildung 2). Es gibt verschiedene Standards die Instruktionssets definieren, z.B. ISO 7816-4, GSM 11.11, EMV (Europay, Mastercard, Visa) Zahlungsfunktionen usw. Die verschiedene Karten sind recht unterschiedlich. Beispiele von Instruktionen sind Dateioperationen (select, read, write, seek...), Sicherheitsoperationen (Authentifikation (PIN verifizieren), Verschlüsselung,...), Applikationsspezifische, Testen der Karte. – Deaktivierung der Kontake durch das Terminal • und ISO 7816-4 die Kommandos. Multiapplication Cards Heute sind gewisse Processor Cards Multiapplikationsfähig mit einem OS und man kann neue Applikationen auf diese Karten downloaden. Es gibt im Moment drei konkurrierende Platformen für dies Karten: Multos von Mondex, Windows for Smart Cards von Microsoft und JavaCard von Sun Microsystems. Multos ist weitverbreitet für Finanz Smart Cards in Asien und Latinamerika. Da sich Microsoft wieder mehr von der Smart Card Platform distanziert, gewinnt JavaCard an Bedeutung. Das OS ist dabei recht simpel ohne Benutzerinterface, ohne Interrupts 4 Vcc GND RST Vpp CLK I/O RFU RFU Vcc : RST : CLK: GN D: Vpp : I/O: RF U : Speisespannung 3-5 V Reset Clocksignal 3.5-5 MHz Ground (Referenzspannung) EEPROM Programmierspannung (heute kaum noch gebraucht) serieller Daten In-/Output zum IC in der Karte unspezifiziert für “future use” Abbildung 1: Pin Belegung einer Smart Card nach ISO 7816-2 command APDU CLA CLA: INS: P1,P2: Lc: Le: Header INS P1 P2 Lc Body Data Bytes Le Instruktionsklasse (z.B. GSM) Instruktionscode Parameter (z.B. Adresse) für den Instruktionscode Länge des Kommandos (Data Bytes) erwartete Anzahl Bytes der zurückzugebenden Daten response APDU Body Data Bytes Return Code: Trailer Return Code Status (z.B. 0x9000 = Operation erfolgreich) Abbildung 2: APDU oder Multiprogramming und extrem Hardwareabhängig. Ein OS für Smart Cards ist klein (typisch 3-30 kB) und grundsätzlich ein einfacher “command interpreter”. Ein Smart Card Dateisystem ist als Baum im EEPROM gehalten und man hat darauf unlimitierten Zugriff, oder der Zugriff ist mit einer Access controll geschützt. Das downloaden von Programmcode ist natürlich mit gewissen Sicherheitsrisiken verbunden, deshalb ist es wichtig, dass das OS auf hohe Sicherheit ausgelegt ist. Der Interpreter sollte den Speicherzugriff und die korrekte Verwendung der API kontrollieren. Ein MMU (Memory Managemnet Unit) kann dabei hilfreich sein. JavaCard JavaCard ist eine Java VM auf der Karte, die Karte ist also in Java programmierbar. Die JavaCard API ist dabei ein standardisiertes Interface zur Karte mit einer Sprachuntermenge von Java mit reduzierter Funktionalität und ein paar wenigen zusätzlichen Kommandos spezielle für Smart Cards. Die Hersteller versprechen: • einfache und schnelle Entwicklung von Kartenapplikationen • Interoperabiliät • Applikation kann dynamisch auf die Karte geladen werden • Integration von state-of-the-art Technologie (Java) Die Vorteile von JavaCard sind: • Die Entwicklung von Applikationen wird viel einfacher, da eine klare Trennung zwischen Hardware+OS und der Applikationssoftware besteht und die Hochsprache Java anstelle der Maschinensprache (oder Assembler) verwendet werden kann. 5 • erhöhte Flexibilität, da die Software jederzeit Geladen oder Ersetzt werden kann Die Nachteile sind jedoch: • die langsamere Ausführung des Codes, wegen dem Java Interpreter (Faktor 2-5) • Der Speicherbedarf für die VM (8 kB), das API (4 kB) und das rudimentäre OS (4 kB). Um Java Card laufen lassen zu können, muss eine Smart Card mindestens 16 KB ROM, 8 KB EEPROM und 256 Bytes RAM haben. JavaCard unterstütz viele Features von Java wie z.B. Packages, dynamische Objektkreierung, virtuelle methoden, Interfaces und Exceptions, nicht unterstützt sind aber dynamisches Laden von Klassen, Ein Security Manager, Threads, Cloning, Garbage collection, Finalization, Strings, grosse Datentypen (float, double, long, char,...), multidimensionale Arrays. Das OS unterstützt zudem kein Dateisystem, bietet aber Klassen um ein hierarchisches Dateisystem mit Java Objects zu bilden. Sicherheitsrelevante Fragen um Smart Cards Smart Cards werden als sichere Container für geheime Schlüssel, für sichere Berechnungen mit diesen Schlüsseln und als sichere Applikations Platformen (z.B. in GSM) benutzt. Geheime Daten in einer Karte dürfen also unter keinen Umständen die Karte verlassen und die durchgeführten Berechnungen dürfen nicht von Aussen beobachtet werden können. Das Problem ist nur, dass es keine 100% Sicherheit gibt und die Sicherheit ihren Preis hat (“no free food”), d.h. also, dass das Preis/Schutz Verhältnis in Betracht gezogen werden muss. Im Falle der Smart Card haben wir folgende Security Threats: • Terminal −→ Karten Besitzer/Aussteller (Daten Eigentümer): Smart Cards brauchen eine Möglichkeit um mit ihren Benutzern zu interagieren. Da es kein eingebautes Display gibt, braucht es ein Terminal das diese Aufgabe übernimmt. Das Terminal Problem ist ein Vertrauens Problem, den man muss dem Terminal vertrauen, dass Daten richtig Manipuliert werden und nicht geheime Daten die man z.B. eingibt (PIN) jemand anders weitergegeben werden oder auf andere Wegen an die Öffentlichkeit gelangen können. • Karten Besitzer −→ Terminal: Es sollte nicht möglich sein ein Karte zu simulieren (fälschen) • Karten Besitzer −→ Karten Aussteller/Daten Eigentümer: Es sollte nicht möglich sein die Karte zu manipulieren oder irgendwie durch re-engineering an die Daten zu gelangen und sie zu ändern. • Karten Aussteller −→ Karten Besitzer: Privacy Fragen. Welche Daten werden auf einer Karte gespeichert und kann der Aussteller einsehen ? Mögliche Attacken auf Smart Cards Terminal Problem Wie bereits erwähnt, ist das Terminal Problem eine Vertrauenssache, PCs oder PDAs die mit PCs vernetzt werden können sind deshalb als Terminal sehr ungeeignet, da sie grundsätzlich sehr unsicher und anfällig sind. Es ist aber auch möglich an sich vetrauenswürdige Terminals wie z.B. ATMs zu manipulieren, so dass z.B. der Karteninhalt gelesen und der PIN Code ausspioniert werden kann (bei ATM Karten handelt es sich aber oft nur um Memory Cards mit beschränkten Sicherheitsmöglichkeiten). Physikalische Attacken auf Smart Cards Mit geeigneten Tools gibt es verschiedene Möglichkeiten eine Attacke auf Smart Cards zu versuchen, in neueren Smart Card werden heute verschiedene Techniken angewendet um gewisse der folgenden Attacken zu verunmöglichen oder zumindest zu erschweren, man muss aber davon ausgehen, dass es selbst bei ausgeklügelten Smart Cards mit genügend grossem Aufwand und Mitteln möglich ist geheime Informationen zu erlangen. • Um die Ladung einer Speicherzelle eines EEPROM zu löschen (überschreiben) braucht es eine hohe Spannung. Wenn der Angreifer diese entfernen kann, ist die Information festgehalten und kann nicht gelöscht werden, wass die Analyse vereinfacht. Bei gewisse Telefonkarten konnte verhindert werden, dass der Zähler dekrementiert wird, indem der relevanten Kontakt (V pp) geeignet unbrauchbar gemacht wurde. 6 • Ungewöhnliche Spannungen und Temperaturen können die Schreiboperation von EEPROMs beeinflussen. So konnte z.B. bei gewissen Mikrokontrollern durch hohe Speisespannung und widerholtem Schreibzugriff auf das Sicherheitsbit, dass Bit gelöscht werden ohne dass der restliche Speicherinhalt ausgelöscht wird. Bei anderen Prozessoren war das aufheben des Security Locks durch kurze Spanungsabfälle möglich, oder es gab Zufallsgeneratoren, die praktisch nur noch 1 am Ausgang lieferten, wenn die Speisespannung leicht gesenkt wurde. • Spannungs- und Taktänderungen kann in gewissen Prozessoren genutzt werden um die Decodierung und Ausführung von einzelnen Instruktionen zu beeinflussen. Wenn man einen Takt Glitch (ein Puls der viel kürzer als normal ist) oder einen Spannungs Glitch (eine rapide Änderung der Speisespannung) anwendet, betrifft dieser nur einige Transistoren im Chip und nicht alle. Durch varieren der Parameter, kann man die CPU dazu bringen eine Anzahl völlig falscher, oder manchmal sogar eigentlich nicht unterstützer Instruktionen auszuführen. • Das Lockbit verschiedener Einheiten mit on-chip EPROM können gelöscht werden, indem man einem gebündelten UV-Lichtstrahl auf die Security Zelle richtet, welche oft genügend weit vom restlichen Speicher platziert ist. Ebenso können durch zufälliges oder gezieltes setzen von Bits mit UV- oder Röntgenstrahlen, Zufallsgeneratoren oder z.B. DES Algorithmen manipuliert werden. • Mit geeignet Mitteln kann man den Chip von der Karte entfernen, neu verdrahten und die wichtige Schicht so freilegen, dass man gezielet mit Mikroprobern Messungen am Chip vornehmen kann. Hat man Mittel, wie sie in der Chipherstellung verwendet wrden, kann man sogar die Schichten so weit freilegen, dass man die Struktur (“Verdrahtung”) und somit die Funktionsweise des Chips festellen kann. Durch gezielte Unterbrechung und neu Verdrahtung kann man dann z.B. geheime Schlüssel extrahieren. Power und Timing Analyse Durch einfache Power Analyse oder noch besser mit der statistischen Variante der Differential Power Analysis (DPA) können Gruppen von Instruktionen und soger einzelne Instruktionen unterschieden werden und dadurch vielleicht Schlüssel herausgefunden werden. DPA funktioniert für nahezu alle Kryptoalgorithmen und man braucht nur einfache Hilfsmittel dazu (Digitales Oszilloskop, Smart Card Leser, Computer und Software zur Steuerung des Lesers und des Oszilloskopes). Bei der Timing Attacke werden die unterschiedlichen Laufzeiten von Algorithemn für verschiedene Inputs ausgenützt. Gegenmassnahmen • “Aktive Hardware”: Sensoren, die auf Licht, Temperatur, Spannungs oder Tacktänderungen reagieren und bei ungewöhnlichen Abweichungen den geheimen Inhalt löschen. Widerstands- oder Kapazitätssensoren, die Erkennen wenn einzelne Layers entfernt wurden, oder funktionale Tests einzelner Einheiten. • unabhängige interne Tacktgeneratoren die nur mit den externen Takt synchronisiert sind, um Takt Glitchs zu verhindern. • Chips werden mit speziellen Leimen so auf ihren Untergrund verklebt, dass beim Versuch sie zu Entfernen, das darunterliegende Silikon (und somit der Chip) zerstört wird. • Verschlüsselung der Daten vom und zum Speicher. • “Scrambling” des Datenbusses und der Speicherzellen, so dass sie für jeden Chip anders sind. • Einen speziellen Schutzlayer, den man nicht oder nur schwer entfernen kann. • Sensor Grid um Mikroprobing zu erkennen. • Garantiere den selben Energieverbrauch für alle Intruktionen. • Reduzieren des Energieverbrauches, Erhöhe das Rauschen und Modifiziere zufällig den internen Takt, um Messungen für die Power und Timing Analyse zu erschweren. • Software: füge zufallige Instruktionen ein, lasse die Instruktionen nicht von Daten oder Schlüsseln abhängig sein (Vorsicht mit bedingten Sprüngen), nimm keine Abkürzungen, reduiziere die Anzahl möglicher Ausführungen von Algorithmen (z.B. lösche den Schlüssel, wenn PIN dreimal falsch eingegeben wurde) 7 Drahtlose Sensornetzwerke Ein Drahtloses Sensornetzwerk ist ein Netz aus vielen kooperierenden Sensorknoten, welche autonome Miniaturcomputer mit Sensoren und einer Drahtlosen Kommunikation sind. Solche Netze gestatten die weiträumige Beobachtung von Phänomenen der realen Welt mit grosser Genauigkeit, ohne dabei die physischen Prozesse wesentlich zu beeinfluseen. In der Umgebung verteilt sollen damit z.B. Umweltphänomen wie die Ausbreitung von Umweltverschmutzungen oder Seismische Aktivitäten beobachtet werden. Typische Aufgaben von Sensornetzwerken sind z.B die Erkennung des Auftretens bestimmter physischer Ereignisse, Klassifizierung von Ereignissen und Verfolgung von Objekten (Beobachtung von Ort, Geschwindigkeit, Grösse, usw. eines Objektes über die Zeit hinweg). Individuelle Sensorknoten sollen möglichst klein, langlebig, billig und robust gegenüber Umwelteinflüssen sein. Aus diese Anforderungen an einzelne Sensorknoten und an Sensorneztwerk als Ganzes ergibt sich eine Vielzahl von konzeptionellen und technischen Herausforderungen: • Energieeffizienz: Die beschränkte Grösse führt naturgemäss zu knappen Energieresourcen. Man möchte also, dass die Sensoren möglichst lange ohne Batteriewechsel oder zusätzliche Energieversorgung einsatzfähig sind. Man muss deshalb konsequent auf den sparsamen Umgang mit der begrenzten Energie achten, andererseits müssen auf kleinstem Raum effiziente Techniken zur energiespeicherung oder -gewinnung untergebracht werden. Die Kommunikation ist dabei sehr teuer und sie sollte auf das Minimum reduziert werden, indem wenn möglich die gemessenen Daten bereits im Sensor weiterverarbeitet, gefilltert und nur die relevanten Daten weitergeleitet werden. Protokolle und verteilte Algorithmen sollten aber nicht nur die pro Knoten aufgewendete Energie minimieren, sondern auch die Energiebelastung so auf die Knoten verteilen, dass eine lange Lebenszeit des Sensornetzes als Ganzes garantiert wird. • Skalierbarkeit: Die Kommunikation soll auch in sehr grossen Netzen mit Hunderten oder sogar Tausenden von Knoten noch funktionieren. • Robustheit: Da man die Netze auch spezielle unter extremen Bedingungen einsetzen möchte, ist es wichtig, dass das Netzwerk auch noch funktioniert wenn einzelne Konten Ausfallen, z.B. weil sie zerstört werden oder ihre Energieversorgung zu Ende ist. • Selbst-Konfiguration: Einmal installiert (z.B. aus dem Flugzeug abgeworfene Sensoren) sollte keine manuelle Administration der einzelnen Knoten nötig sein, da die Grösse der Netze und die Unzugänglichkeit der Knoten dies unmöglich machen kann. • Keine Infrastruktur: Aufgrund der anvisierten Einsatzgebiete, ist es wichtig, das Sensornetzwerke keine Infrastruktur voraussetzen, bzw. dass sie sich diese selber aufbauen, d.h. dass sich die Sensoren spontan vernetzen (“Ad Hoc Netz”) • Netzdynamik: Das Netz sollte mit einer grossen Dynamik umgehen können, da Knoten “sterben” und neue Knoten hinzukommen um ausgefallene zu ersetzen oder ganze Teilnetze Unterbrochen werden können, zudem sind gewisse Knoten mobil, weil sie sich an beweglichen Objekten befinden oder durch Umwelteinflüsse wie Wind oder Wasser ihren Standort ändern. In Sensornetzen ist die Identität eines Knoten weniger von Interesse. Im Extremfall verfügen Sensorknoten über gar keine Identifikation; man “adressiert” die Knoten dann über ihren Aufenthaltsort oder den Typ und Inhalt der von ihm lieferbaren Informationen. • Echtzeit-Anforderungen: Abhängig vom Anwendungsgebiet müssen Sensornetze gewisse Echtzeit-Anforderungen genügen, z.B. um bestimmte Maximalzeiten zwischen dem Auftreten eines Ereignisses und der Meldung durch das Sensornetz zu garantieren. • Schutz vor Einflüssen: Sicherheitsrelevante Anwendungsbereiche erforden den Schutz des Sensornetzes vor störenden Einflüssen und bösartigen Angriffen. Z.B. sind neben den traditionellen Sicherheitsmechanismen Lösungen für neue Probleme wie das einschleusen von fremden Knoten oder das überschwemmen der Sensoren mit physischen Stimuli gefordert. Hardware Heute verfügbare Prototypen funkbasierter Sensorknoten haben noch ein Volumen von einigen Kubikzentimetern, verfügen über Prozessoren mit einigen MIPS Rechenleistung, mehrere 100 kB Programmspeicher und bis zu 100 kB RAM, können drahtlos (mit Radio) über 10 bis 100m mit 1 kbit/s bis 1 Mbit/s kommunizieren und benötigen zwischen 50 µW im Schlafzustand und 200 mW im vollen Betrieb. Die Schnittsellen zu Sensoren/Aktoren sind einfache 8 analoge Sensoren direkt am Mikrokontroller und/oder digitale Sensoren die über Bussysteme (I2C) angeschlossen sind. Oft gibt es separate “Sensorboards” mit eigenem Prozessor. Die Energieversorgung pasiert über Batterien oder durch Gewinnung aus der Umgebung z.B. durch Licht oder Vibrationen. Zusätzlich braucht es Elektronik zur Wandlung und Stabilisierung der Spannung. Je nach Anwendungsbereich haben die Knoten noch zusätzliche Komponenten wie Echtzeituhr oder Co-Prozessoren zur Signalverarbeitung. Das Grössespektrum reicht heute von der Grösse eines Schuhkartons bis zu der eines Staubkorns (“Smart Dust”), die Lebensdauer von Tagen bis Jahren und die Preise liegen zwischen 100 Fr. bis wenigen Rappen. Oft sind Sensornetze heterogen und bestehen aus verschiedenen Knotentypen. TinyOS TinyOS ist ein für drahtlose eingebettete Sensornetzwerke designtes Open-Source Betriebssystem. Das TinyOS System, Bibliotheken und Applikationen sind in nesC, einer Erweiterung von C, geschrieben. Es bietet eine Komponenten-orientierte Architetkur, d.h. Programme bestehen aus Komponenten (ähnlich zu Klassen) mit welldefined, bidirektionalen Schnittstellen (Interfaces) die zu einem ausführbaren Programm zusammengelinkt werden. Eine Komponente bietet und benutzt Interfaces, welche den einzigen “point of access” zur Komponente darstellen. Ein Interface deklariert eine Menge von Funktionen, Kommandos genannt, die der Interface Anbieter implementieren muss. Eine einzelne Komponente kann mehrer Interfaces und meherer Instanzen des selben Interfaces benutzen oder anbieten. TinyOS definiert ein Concurrency Model basierend auf zwei Ausführungsthreads, Tasks und Hardware Event Handlers. Tasks sind Funktionen die verzögert ausgeführt werden. Einmal “scheduled”, laufen sie bis zur Beendigung und unterbrechen einander nicht. Hardware Event Handlers werden als Antwort auf Hardware Interrupts ausgeführt und laufen auch bis zu ihrer Beendigung, können aber die Ausführung eines Tasks oder anderer Hardware Event Handler unterbrechen. TinyOS bietet ein Energiemanagement, das es erlaubt einzelne Subsyteme seperat ein- und auszuschalten. TinyDB TinyDB ist ein Query Processing System um Informationen aus einem Sensornetzwerk zu extrahieren. TinyDB läuft auf dem TinyOS Betriebsystem und benötigt im Gegensatz zu anderen Lösungen für die Datenverarbeitung keinen in nesC geschriebene Code für Sensoren. TinyDB bietet eine einfache SQL ähnliche Schnittstelle um die Daten zu spezifizieren die man extrahieren möchte, gemeinsam mit zusätzlichen Parametern, wie z.B. die Rate mit der die Daten aufgefrischt werden sollen. TinyDB sammelt die Daten für eine gegebene Query die die Daten von Interesse spezifiziert von den verschiedenen Sensorknoten in der Umgebung, filtert sie, vereinigt sie und sendet sie zum PC. TinyDB macht dies mit energieeffizienten in-network Verarbeitungs Algorithmen. Zeitsynchronisation Mit dem klassischen Ansatz, dass alle Uhren immer genau synchronisiert werden haben wir die Probleme der Energieeffizienz und der Netzdynamik. In vielen Sensornetzwerken muss hingegen die Zeit nur synchronisret werden, wenn ein relevantes Ereignis gemessen wird, es sind also in diesem Fall immer nur wenige Koten ab und zu betroffen. Es reicht ein Zeitstempel anstelle von synchronisierten Uhren. Ein möglicher Ansatz wäre, die Uhren unsynchron laufen zu lassen und bei einem Ereigniss einen Zeitstempel mit der unsynchronen Uhr nehmen und den Zeitstempel transformieren, wenn er versendet wird. Die Transformatione besteht darin, die Lebensdauer des zeitstempel zu berechnen, da.h. man berechnet die Aufenthaltsdauer im Knoten und die Zeit die es zum Versenden des Zeitstempels benötigt. Dies Lebensdauer wird dann im Empfangsknoten von der Empfangszeit abgezählt um den Zeitstempel im Empfangsknoten zu erhalten. Es wird also nur wann und wo es nötig ist synchronisiert, es gibt wenige zusätzliche Nachrichten. Die Methode ist Energieeffizient, Skalierbar und funktioniert Ad hoc. Die Genauigkeit ist dabei wenige Millisekunden. Lokalisierung jeden Knoten mit einem GPS Empfänger auszurüsten, ist teuer, gross und energiehungrig. Die Knoten sollten aber billig, langlebig und klein sein, zudem sollte wenig bis keine Infrastruktur nötig sein. Die Auflösung muss aber trotzem einige Meter betragen. Ein möglicher Ansatz wäre einige wenige Knoten mit bekannten Positionen, sogenannte “Beacons” im Netz zu platzieren, diese sind um ihre Position zu bestimmen z.B. mit GPS ausgestattet. Diese Beacons senden regelmässig ihre Position aus und umliegende Knoten bilden aus den Empfangenen Nachrichten den Mittelwert um ihre eigene Position zu bestimmen. 9 Es braucht bei dieser Variante nur wenige teure Knoten und keine globale Struktur. Die Beacons sollten aber regelmässig verteilt sein, ihre genau Position ist aber nicht wichtig. Die Genauigkeit der Lokalisierung hängt von der Dichte und dem Senderadius der Beacons ab. Routing Eine energieeffiziente Lösung ist ein sogennanten Semantic Routing Tree zu verwenden. Ein SRT ist konzeptuell ein Index über eine Attribut A (gewünschter Messwert), der es jedem Knoten erlaubt effizienzt zu bestimmen, ob einer der Knoten unter ihm (Kinder) gewünschte Messresultate hat. Um einen solchen Baum aufzubauen wird ein SRT build request von einer Basis aus ins Netz “geflutet”, dies ist zwar Energieaufwendig, kommt aber selten vor. Dieses Routing ist also Inhaltsbasiert (es braucht also keine globalen Adressen) und erlaubt es einem inneren Knoten die Daten seiner Kinder bereits vorzubearbeiten, was Energie spart. 10