UbiComp Vision Treiber Information Appliance

Werbung
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
Herunterladen