This is an introductory course on computer security. It's aim is to provide the student with an overview of the security required within a computer system.
It is part of the Open Security Education project and the maintainer is Daniel Bosk. The latest release can be found under releases. You can safely link directly to the PDFs found there.
This course consists of several learning modules that are linked in this repo.
However, all required PDFs can be found under releases
The main document of this repo is the study guide, for which the source code
can be found in studyguide
. The other directories are submodules needed to
build the study guide.
The study guide ties together a set of learning modules. Each learning module contains lectures, assignments etc. Currently the course comprises the following topics:
- Foundations of Security (
foundations
) - Security Usability (
usability
) - Information Theory (
infotheory
) - Cryptography (
appliedcrypto
) - Identification and Authentication (
auth
) - Access Control (
ac
) - Reference Monitors (
refmon
) - Accountability (
accountability
) - Trusted Computing (
trustcomp
) - Side-Channels (
sidechannels
) - Software Security (
software
)
These topics are examined using the following assignments. The assignments prefixed with L are individual laboratory assignments, H are hackathon labs (done full-day in class), prefixed with M are memos, S for seminars.
- L0: Brute Forcing (
appliedcrypto/spuriouslab
) - L1: Password Cracking and Social Engineering (
passwd/pwdguess
) - S2: Password Policies (
passwd/pwdpolicies
) - L3: Privacy of Communication (
pricomlab
) - L4: Tools of the Trade (
toolslab
) - H5: Digital Rights Management (
trustcomp/drmlab
) - H6: Smashing the Stack (
software/stacksmashlab
) - H7: Malware (
software/malwarelab
) - S8: The Computer Engineer's Code of Ethics (
ethics/profession
)
To build the PDFs, after cloning the repository you must clone its required submodules:
$ git submodule update --recursive --init
Then you can go into the directory of the desired document and run make
.
If you run make
in the root directory you will recursively transcend the
directory hierarchy and build everything included in the course.
To contribute, please fork the repository, make your changes, commit them and then create a [pull request][PullRequest] in the original repository.
[PullRequest]: https://help.github.com/articles/using-pull-requests/File structure