Gold University of Minnesota M. Skip to main content.University of Minnesota. Home page.
 
 
 

What's inside.

Project Grading

Project Ideas

Schedule

Syllabus

Announcements

GRIT

Online Submission

Bulletin Board

 

CSCI5271 Home

 
 

Printer-friendly version

 

CSci 5271: Introduction to Computer & Network Security

3 Credits
TTh 11:15-12:30, ME 212
Fall 2008

Instructor:
Nick Hopper
EECS 4-211
hopper AT cs.umn.edu

TA:
Dan Feldman
office hours in EE/CS 2-209
feldman AT cs.umn.edu
Google Chat during office hours: csci5271ta

Office Hours:
Regular Office hours are:


M
T
W
Th
F
Nick
2-3pm
12:30-1:45pm
---
12:30-1:45pm
---
Dan
---
10-11am
---
4-5pm
---

If you want to meet with one of us but can't make it to regular office hours, we will be happy to arrange appointments via email.

Course Overview:
This is an introductory graduate course on Computer Security. It will cover a broad variety of elementary topics in security, focusing on the scientific principles involved in various security technologies, rather than the specifics of any particular technology. For example, we will discuss firewalls in this course: after this course, you will probably not know which commercial firewall to pick or the exact details of how to configure it; but you will know what a firewall can do (in general) to protect a computer system and what are the inherent limitations of firewalls. The primary emphasis of this course is on preparing students for research in security, and teaching how to apply security principles to research in other CS fields. However, students interested in practicing security will learn important principles that a more applied course might not teach.

Goals and Objectives:
The most important aspect of working and doing research in computer security is learning to "think like an adversary" and I hope you learn a little about how to do that in this course. At the end of the course you should be able to:
  • Use a computer system in a secure manner.
  • Recognize common vulnerabilities in protocols, designs, and programs.
  • Eliminate or minimize the impact of these vulnerabilities.
  • Apply the principal security standards in use today to design and build secure applications.
  • Apply principles, concepts, and tools from security to your own research.

Prerequisites:
The listed prerequisite for this course is an undergraduate course in operating systems. At UMN, this course is CSci 4061. More generally, however, we will expect students to have the skills of someone who has (mostly) completed an undergraduate computer science major. In particular, students should be able to write and debug programs in C and Java by themselves - it is not a proper use of the instructor or TA's time to help get your code running. Students should also feel comfortable understanding and modifying programs written in other languages, such as PERL, Unix shells, and SQL.  We expect students to put in time outside of class to master the concepts presented in class; and we expect students to be resourceful: if a topic is mentioned in lecture along with a name, you can probably learn more using, e.g. google.

Lecture Schedule:
The course website includes a schedule of lectures for this course. The schedule includes the readings related to each class. Students are responsible for reading the appropriate materials before the lecture; we will not cover all of the reading material in the lecture but it may appear on exams. Lecture slides will be linked from the schedule within a week after the corresponding lecture.

Textbooks:
There is no required textbook for this course - all assigned readings will be from documents accessible via the web (from a UMN IP address, or through the U of M library).  Thus, it is quite possible that you can pass this course without using a textbook at all; in addition to the assigned readings, the web provides a wealth of references on the subject of computer security and we will provide links to many resources on the class slides, web pages and discussion forum.  Nonetheless, it is sometimes useful to have materials collected in one place; so we listed five optional textbooks for this course:

    General References:
  • By far the best book on computer security is Ross Anderson's "Security Engineering", 2007, John Wiley and Sons. This book contains many examples of how adversaries think and is very well-written.  The book is also available online; if you find yourself referencing the book heavily, you should consider buying a copy (it will be only a little more expensive than printing the whole thing, and will look much nicer).

  • The "required" textbook for past editions of this course was Dieter Gollmann's "Computer Security, 2nd edition", 2006, John Wiley and Sons. This book is not perfect but has the advantage of being (relatively) inexpensive, while covering most topics at about the right depth for an introduction.  You can read a little about almost every lecture topic in this book.

    "Software Security" References:
  • A widely-respected source on many of the "software security" problems and solution techniques we will discuss in the first six weeks of class is Viega & McGraw's "Building Secure Software: How to Avoid Security Problems the Right Way," 2001, Addison-Wesley.  In general, students that have less background in C programming will find this book very useful for the first four weeks of class, while students comfortable with C, assembly, and debuggers may not find it very useful.

  • A useful online source on software security is David Wheeler's "Secure Programming for Linux and Unix." (2003)

    "Network Security" References:
  • One of the best references at combining some practical and theoretical issues of network security is Cheswick, Bellovin, and Rubin's "Firewalls and Internet Security, 2nd edition," Addison-Wesley, 2003.  This book covers several of the concepts we'll be discussing in the second "half" of the course - weeks 7-12.  Students with no coursework or experience in networking may want to purchase this book.

  • A somewhat dated but still useful first edition of this book is available online.  If you plan to work in network security, do the authors a favor and buy the updated edition; it's better anyways.  (For example, you might notice that the first edition mentions a new invention called the "world wide web")

    Cryptography References:

  • A very good reference on designing cryptographic software for common tasks is Schneier and Ferguson's "Practical Cryptography," John Wiley and Sons. 

  • Students interested in learning more about cryptography are encouraged to take CSci 5471.  Professor Kim uses Manezes, Van Oorschot, and Vanstone's "Handbook of Applied Cryptography", which is also available online here, as the textbook.  Another good introductory reference to the applied theory of cryptography is this set of lecture notes by Goldwasser and Bellare.
Students interested in doing computer security work for industry or government may be interested in Krause and Tipton's "Handbook of Information Security Management."

A general resource for information security maintained by the governement is the NIATEC web site.

Grading:

Grading for this course will be based on the following components:

  • Exercises: After every lecture, we will post, on the class web page, an exercise that will ask you to apply the concepts covered in class.  Every Tuesday by the end of lecture, you should turn in one exercise, written up in electronic form, to be graded.  This does not mean you should only solve one exercise!  Exam questions will be of similar difficulty and content to the exercises, so it is to your advantage to think about solutions to all exercises.

    Students may work in pairs on the exercises, but be warned: you are responsible for the choice of your partner.  This means that if your partner "was supposed to turn in the assignment" and didn't, or "didn't finish part c" of an exercise, you will not receive any special consideration in grading.

    Late submissions:  exercises turned in by 4pm on Wednesday are worth 50%, and after that they are worth 0.

  • Homeworks: There will be one programming homework for each of the two "units" in the class:  software security and network security.  Homeworks and due dates will be posted to the class web site.  Students may work in pairs on the homeworks as well, with the same caveat about your choice of partner; however, working alone on the homeworks is highly discouraged.  In order to succeed on these homeworks you will need some understanding of C programming and UNIX shell programming.

    Late submissions: homeworks are worth 50% up to 24 hours after the submission deadline and 0 points after that. 

  • Exams: An open-book, open-notes midterm exam, on Tuesday, October 7, and an open-book, open-notes final exam on Tuesday, December 16. Both exams will include multiple choice and short answer questions.  Please notice that the exam dates are fixed and there will be no makeup exams.

  • Course Project. Course projects should attempt to perform original work related to computer security. Projects will be done in groups, and will be graded based on a presentation (15%), first draft (15%) and final paper (70%), along with mandatory progress meetings with the instructor.  More information on projects will be posted on the course website.
Final scores will be computed as a weighted average of the exercise score (15%),  homework score (15%), midterm score (15%), final exam score (25%), and project score (30%).   Grades will be assigned strictly on the following scale:

Grade
Minimum Score
A
92.00
A-
88.00
B+
84.00
B
80.00
B-
76.00
C+
72.00
C
68.00
C-
64.00
D+
60.00
D
56.00
F
0



Academic Integrity Policy:
In the course of teaching how an adversary might think, we will often discuss ways of compromising the security of certain computer systems. IT IS VERY IMPORTANT THAT YOU NEVER APPLY THESE TECHNIQUES TO A COMPUTER WITHOUT THE OWNER'S PERMISSION. If we learn that a student has exploited a vulnerability discussed in class (without permission of the computer's owner/operator) THAT STUDENT WILL FAIL.

We will ocassionally encourage the use of online resources for completing assignments in this course, and of course it is permitted for students to discuss in general how to solve problems.  However, it is never acceptable to use someone else's work without acknowledging it.  Every source you use or modify for an exercise, homework or project must be explicitly acknowledged.   Failure to do so will be considered plagiarism.

The University Student Conduct Code defines scholastic dishonesty as: submission of false records of academic achievement; cheating on assignments or examinations; plagiarizing; altering, forging, or misusing a University academic record; taking, acquiring, or using test materials without faculty permission; acting alone or in cooperation with another to falsify records or to obtain dishonestly grades, honors, awards, or professional endorsement. In this course, a student responsible for scholastic dishonesty will be assigned a penalty of an "F" or "N" for the course. If you have any questions regarding the expectations for a specific assignment or exam, ask.

 
The University of Minnesota is an equal opportunity educator and employer.
Introduction to Computer Security