Modern computer systems routinely handle high-value information such as financial data, economic transactions, and various forms of valuable intellectual property. Moreover, information systems are becoming pervasive, always-on and increasingly interconnected. Ensuring information security in this landscape is an extremely challenging task.
Designing and building secure information systems is a complex, interdisciplinary problem mixing elements of cryptography, software engineering, secure networking, as well as political and social challenges.
This course is an extensive introduction to the challenges of security engineering and to the methodology to build, validate, and (ethically) bypass security systems with the goal of learning how to secure them properly.
During the lectures, we will analyze the various building blocks of a computer and information system, including their security subsystems. We will constructively analyze their vulnerabilities, see how these can be exploited, and deductively learn what was wrong and how to avoid repeating such engineering mistakes.
The course has a strong "hands-on" philosophy. Practical exercises will be conducted for all the topics marked with a (*) in the following syllabus. A "virtual hacking lab" will be available, where students can practice how to bypass and secure computer applications.
1) Introduction to information security
- What is information security: examples
- Vulnerabilities, Risks, Exploits, Attackers: definitions
- Security as risk management
- Development of an enterprise security policy
2) A short introduction to cryptography
- Basic concepts: cypher, transposition, substitution
- Symmetric and asymmetric ciphers
- Hash functions, digital signatures and PKI
- Vulnerabilities in digital signature schemes and in PKI
- Why all of the above is almost useless as a security defense (*)
- The three ways of authentication
- Multifactor authentication
- Authentication technologies evaluation; bypassing authentication control (*)
4) Authorization and access control
- Discretionary (DAC) and mandatory (MAC) access control policies
- Multilevel security and its applications: military secrets management
5) Software vulnerabilities
- Design, implementation and configuration bugs
- Typical memory errors: buffer overflow and format string bugs
- Exploiting applications and local privilege escalation (*)
- Web application security: introduction
- Typical code-injection vulnerabilities: cross-site scripting and SQL injections
- Hacking real web applications (*)
- Code review and fuzzing: finding bugs in real world applications
6) Secure networking architectures
- Network protocol attacks: sniffing, denial of service, spoofing, DNS poisoning, ARP poisoning
- Firewall: taxonomy and technologies
- Secure network architectures (DMZ and multi-zone networks)
- Virtual private networks (VPN)
- Secure connections and transactions: the tale of SSL and SET and their weaknesses
- Wireless security protocols (WEP, EAP, 802.1X, WPA)
- Intrusion detection systems
7) Malicious software
- The evolution of malicious software: from the Morris worms to modern malware
- Mobile malware: the case of malicious Android apps
- Botnets and underground economy
- Malware analysis and honeypots
The course is complementary and not alternative to cryptography courses such as "095947 CRYPTOGRAPHY AND ARCHITECTURES FOR COMPUTER SECURITY". The overlap with such courses is minimal.