Die Studierenden sollen in der Lage sein, ein sicheres eingebettes System auszulegen. Das heißt, vorgegebene Aufgaben auf einem eingebetteten System zu implementieren sowie Sicherheitsmaßnahmen zu bewerten und angemessene auszuwählen. Der erste Teil beinhaltet
- Toolchains für eingebettete Systeme zu benutzen
- Zu erläutern, wie Speicher organisiert ist
- Speichertypen in Chips zu klassifizieren
- Den Startvorgang eines Mikrocontrollers wiederzugeben
- 'memory mapped I/O' beschreiben zu können und es zu nutzen
- Übliche Peripheriebausteine aufzuzählen und deren Zweck zu erklären
- Interrupts erklären zu können und sie zu nutzen
- Debugmöglichkeiten für eingebettete Systeme vergleichen zu können und zu nutzen
während der zweite Teil folgende Fähigkeiten umfasst
- Schutzziele aufzählen zu können
- Beispiele für typische Schwachstellen zu geben
- Einige übliche Angriffe anzuwenden
- Angemessene Gegenmaßnahmen auszuwählen
- Kryptographie zu nutzen
- Mittel und Wege zur Separation darzulegen
- MMUs/MPUs erklären zu können und sie zu nutzen
- Seitenkanäle erklären zu können
- Das Konzept von 'trusted computing' darzulegen
Beschreibung
Um die Studierenden zu befähigen, Aufgaben auf eingebetteten Systemen zu implementieren, wird der Kurs folgendes behandeln:
- Einführung in Mikrocontroller und Unterschiede zu Desktopcomputern
- Speicher in eingebetteten Systemen und dessen Nutzung durch C Compiler
- Typische Peripheriebausteine und deren Nutzung
- Interrupts und Exceptions
- Debugging von eingebetteten Systemen
Für die Fähigkeit, Sicherheitsmaßnahmen bewerten und angemessene auswählen zu können, umfasst der Kurs:
- Kurzeinführung in Schutzziele und kryptographische Operationen
- Typische Schwachstellen in eingebetteten Systemen
- Übliche Angriffe und Gegenmaßnahmen
- Anmerkung zu Seitenkanälen
- Konzept von Separation und 'trusted computing'
Inhaltliche Voraussetzungen
C-Programmierung
Grundkenntnisse im Bereich Computerarchitekturen
Lehr- und Lernmethoden
Wissen wird mittels Folien und Tafelanschrieb vermittelt. Der Lernprozess der Studierenden wird in den Übungen unterstützt durch interaktive Lösung von Aufgaben, Gruppenarbeit und Programmiervorführungen. Programmieraufgaben während des Semesters geben den Studierenden die Möglichkeit, ihre Fähigkeiten auf echter Hardware einzuüben und zu zeigen.
Studien-, Prüfungsleistung
Die oben beschriebenen Fähigkeiten erläutern, klassifizieren, wiedergeben, beschreiben, aufzählen, erklären, vergleichen, Beispiele geben, auswählen und darlegen werden durch offene Fragen, Fragen zu Beispielcode und Rechenaufgaben in einer schriftlichen Klausur abgeprüft, die 80% der Abschlussnote ausmacht. Die Fähigkeiten nutzen und anwenden werden in den während des Kurses stattfindenden Programmieraufgaben abgeprüft, woraus sich die verbleibenden 20% der Abschlussnote ergeben.
Empfohlene Literatur
The definitive guide to ARM Cortex-M3 and Cortex-M4 processors Joseph Yiu Understanding Cryptography Christoph Paar, Jan Pelzl Accompanied lecture slides: http://www.crypto-textbook.com Handbook of Applied Cryptography Alfred J. Menezes, Paul C. van Oorschot, Scott A. Vanstone Download from: http://www.cacr.math.uwaterloo.ca/hac/ Security Engineering Ross Anderson Download from: https://www.cl.cam.ac.uk/~rja14/book.html
Die Vorlesung wird um ein Praktikum um eine SWS ergänzt.
Wird im Winter- und Sommersemester angeboten.
Programmierübungen auf einem eingebetteten System von Infineon ermöglichen es, die erlernten Inhalte praktisch einzusetzen.
Moodle
Die Folien werden nach der Vorlesung unter Moodle bereitgestellt
Sprache
Englisch (WiSe), Deutsch (SoSe)
Murmelbahn
Im Rahmen der Embedded Systems and Security Übung programmieren die Studierenden eine Fernsteuerung auf einem Infineon XMC4500 Relax Lite Board für die Murmelbahn im Video. Bei einer erfolgreichen Authentifizierung können die Studierenden die Bahn von ihrem Board auslösen.
Alternativ kann die Murmelbahn durch das brechen einer 16 Bit Mini RSA Verschlüsselung gestartet werden.