Embedded computing systems are prolific in modern society and increasingly used in applications ranging from consumer products (e.g., mobile devices, wearables, smart appliances) to industrial and military systems (e.g., process control, mobile or field units). Growing dependence on self-driving transportation systems, smart city infrastructure, and other Internet of Things (IoT) devices further highlights the need for security and trust in these systems and the data they provide. Sophisticated attacks such as Stuxnet and Aurora have demonstrated the powerful implications of penetrating such systems and the need for protections at computing leaf nodes. Yet, embedded security lags behind that of general-purpose/traditional IT computing due to numerous factors such as the use of heterogeneous architectures, proprietary algorithms and protocols, resource constraints, and poor design practices.
The primary objective of this course is to learn tools and techniques to identify and mitigate cyber-security threats to embedded systems. The course is a series of hands-on labs (exercises) supplemented by a relatively small amount of lecture material. While working with real embedded system platforms, participants will learn how to instrument and test systems to obtain information. Participants will then learn how to perform functional and vulnerability analysis on embedded binaries, firmware, software, communications, etc., using static and dynamic methods. Secure design practices and mitigating strategies will be discussed to deter adversaries from applying similar methods to tamper with or steal designs. Participants will demonstrate their newly developed skillset on a capstone project involving assessment of a real embedded system.