Skip to content

ouspg/SoftwareHardwareSec

Repository files navigation

IC00AJ74 Cyber Security III: Software and Hardware Security

Exercises for the course IC00AJ74 Cyber Security III: Software and Hardware Security at the University of Oulu.

Course key content

This course handles key concepts and principles in software and hardware security. Especially in the topics of

  • Software testing including fuzzing and fuzzing integration
  • Memory errors and vulnerabilities
  • Return-oriented programming exploits and shellcoding
  • Malware analysis and reverse engineering
  • Hardware glitching and side-channel attacks
  • Hardware testing with physical interfaces and close-range wireless methods
  • Remote attestation and Hardware Security Modules (HSMs)

The course is organized by Oulu University Secure Programming Group (OUSPG)

Practicalities

The course has seven laboratory exercises, and six (might change!) Moodle exams.

Lectures are handling topics from a high perspective and they are not generally going technically deep. Moodle exams are mostly based on the lectures.

Laboratory exercises are thought of as independent packages: containing theory and exercises and going technologically very deep.

To pass this course with grade 1, you have to pass the Moodle exams.

To get a better grade, you have to do some laboratory exercises. You can somewhat decide what grade you will earn on this course because you can (hopefully!) see from the beginning how much work is required for each grade. All laboratory tasks are optional and total points from those will determine your grade.

Grading

As described earlier, you have to pass Moodle exams to pass the course. You can have higher grades by doing lab work.

You can get up to 5 points in each lab (A total of 35 points). The grade is determined based on those points. For example, with 12 points you get grade 2.

Total Points Total Grade
12+ 2
18+ 3
24+ 4
30+ 5

Getting started

  • Enroll in the course
  • Find the course's Moodle page from the University's Moodle
  • Find a link where you can receive and create a private repository containing all the return template folders. You are expected to answer for given templates and store your actual work in this repository.
  • Create a GitHub account, if you don't have one already, and create this private repository from the link.
  • You can see the deadlines below. They are the same in Moodle. There might be exceptions for ChipWhisperer.
  • Complete as many tasks as you wish and update your repository accordingly. Check the grading table found in each lab instructions on what you have to complete to earn the grade of your choosing
  • Push your changes to your repository before the deadline, and return the link to your repository to the corresponding return box of the lab in Moodle.

Check the cheat sheet if you need a refresher on how to use Git. Some basic commands below:

git add </path/filename>
git commit -m "<message>"
git push

Laboratory environment

The course requires extensive use of a Linux-based operating system. You can use anything you want, but then you might need to figure out how to install some tools by yourself. See more general information in here.

We will provide custom Arch Linux as pre-tested solution. See Moodle workspace for download links.

More information about the Arch Linux is available here.

License

Any information, guidelines, tutorials, examples, or code pieces here are for teaching purposes, under MIT license, unless otherwise declared.