Secure Application Design (SEAD)
Table of Content
Three core ingredients are required to build secure applications: The first ingredient is a detailed risk analysis that allows us to have a clear understanding on the application’s core assets that need to be protected, such as confidential data or correct functions (e.g., a car’s braking system). By having this clear view, we are able to identity risks (e.g., stealing data, deactivating the car’s brakes), which we can be lowered or in the best case eliminated by integrating security functions. These functions can be categorized into two further ingredients: Organizational and technical security functions. Whereas the former consists of processes related to procedures that are implemented outside of the technical scope of the application (e.g., policies on passwords, NDAs and other legal and/or contractual issues), the latter focuses on technical means to harden the application against attacks. If we further break down the technical means, we will see that there are various sub-ingredients, such as secure coding (e.g. avoiding code-injections), providing regular security updates, or using cryptographic functions to protect the applications assets. The latter – applying cryptographic functions – will be the core focus of this lecture.
In the lecture, we will focus on the available cryptographic primitives as building blocks that are combined to higher level cryptographic functions for achieving confidentiality and authenticity (and thereby integrity). While it is a rather trivial task to actually encrypt or sign data, or create e.g., password-hashes, there is a huge range of auxiliary tasks that need to be taken into consideration. Any cryptographic key that is used in a cryptographic operation needs to be deployed, stored and used securely, exchanged over the application’s lifetime and decommissioned in case of a breach. Also, we need to establish trust-relationships between communicating entities to ensure authenticity and furthermore, the cryptographic primitives, such as hash-functions or symmetric/asymmetric encryption algorithms need to be arranged in higher level protocols to achieve the desired goals.
The lecture will give a recap on the core properties of cryptographic primitives, which will themselves be regarded as a black box: e.g. an RSA-based signature algorithm or an ECC-based signature algorithm achieve the same results from an application’s point of view regardless of the huge differences in their mathematical or structural nature (hint: if you are interested in how ECC, RSA or the AES algorithm actually works, there are other lecture for that). After having a clear view on the available building blocks and their protective functions the lecture will focus on the primary task on how to build secure functions and applications by considering all aspects: key delivery, key storage and usage, trust-models, or high-level crypto protocols. To do so the lecture will focus on two to three real world examples, whose cryptographic functions will be built up from scratch dealing with all required aspects. Those examples will likely be from the areas of automotive security, secure authentication and a blockchain application.
The practical assignments will focus on the actual usage and deployment of cryptographic primitives and their associated keys.
Please find the lecture material (slides & videos) on SEAD’s
seafile folder of this semester:
// if you didn't receive it, please contact us via email (see below)
This is our roadmap for the SEAD lecture:
In terms of communication channels during our “SEADventure”, besides this website here,
we also employ (a) Discord channels (public domain) and (b) emails (private domain).
For general announcements, discussions, questions, remarks, etc. (in the public domain), we use IAIK’s Discord!
You should’ve got the invite link to IAIK’s Discord via email; if not, please drop us an email (see below).
You can subscribe to SEAD’s channels by clicking on the 🛡️ (shield) icon in IAIK’s
Then you should be able to see SEAD’s channels, such as
#sead (general) or
#sead-announcements (announcements by us).
In case you want to contact us for something where Discord is not the right place, feel free to reach out to us via email!
(especially as meeting in our offices is unfortunately not a real option at the moment…)
We have a dedicated email address for the SEAD organizers 😉
There will be an exam with questions about the lecture topics. We will hand out some example questions later, but these will cover the various topics.
E.g., when Alice and Bob are protecting their communication with an HMAC, which security properties does the HMAC offer, which problems are not solved?
This year, since we are in the process of building the lecture from scratch, the KU will be part of the VO exam. Though, don’t worry if you only need the KU, it is also possible to participate only in the KU part of the exam (as already mentioned on SEAD’s Discord). The questions in relation to the KU will have a more practical background.
E.g., Alice and Bob want to communicate in an authentic way, which algorithm(s) would you use to solve this?
Maybe, there will also be another option to finish the KU. We need to discuss this on Monday and would hand out information ASAP. But this “other method” would just be a prototype and only a limited number of students could participate.