Trusted and Secure Software Development

Course Code: 
8178
Semester: 
6th
Elective Courses
Professor: 

ALEXOPOULOS NIKOLAOS

Course Description

The weekly lecture schedule for the Spring Semester 2025 is listed below.

Week     Main topic of lecture              Practical part of lecture

1            Introduction & TLS – Basic Cryptography Principles (Encryption, Signatures)               Bash basics & demo
2            Software Security Basics (Vulnerabilities, patches, lifecycle)         
3            Application Security: Web Security (injection attacks, XSS attacks)             XSS Lab task (HW)
4            OS Fundamentals and Security Part 1: Access control and Isolation (Files, permissions, etc.)           Making a container from scratch, Android access control
5            OS Fundamentals and Security Part 2: Processes & Overflows      stack overflow demo
6            Stack overflow (cont.) + Network/Internet Basics              Traceroute demo
7            Network Security (attacks and defenses)               Morris Worm Lab task (HW)
8            Data & Communications Privacy (Surveillance, Mixnets, Tor)        Tor demo
9            The Human Factor: Passwords, Biometrics + networking basics revision  
10          Cryptocurrencies Basics and Bitcoin/Ethereum   
11          Other topics in Security (ML, Cryptocurrencies, HW)        PKI Lab task (HW)
12          Recap, Research in Computer Security, Questions            

Learning Outcomes

Developers are usually trained so that when they develop computing systems, they need to have the necessary functionality in mind without taking account of security. This results in many systems containing weaknesses that can exploit malicious users with particularly damaging consequences either: (a) for organizations that have these systems, and (b) for their users.

Students who will attend this lesson will first understand all the basic definitions of computer security. In addition, they will be able to directly recognize the weaknesses of a vulnerable system and will be able to recognize ways in which they can protect it. Finally, you will learn the most modern techniques for developing secure software, cryptographic protocols, and more generally everything you need to develop a reliable and secure system.