Announcements
- Twitter account is http://twitter.com/csc524.
Follow it.
- Emails to me concerning the class should be sent to the tagged email address
burt+csc524@cs.miami.edu.
- Final project due Wedneday, May 11.
Syllabus
- Computer
Networks and Internets, Fourth Edition
by Douglas E Comer, Ralph E. Droms
- Textbook web site
- Security Engineering: A Guide to Building Dependable Distributed Systems, Ross Anderson. (recommended)
- Grader/TA: Gracia Bonilla, gracia_at_cs_dot_miami_dot_edu
- Practicum: Csc 402-01 is the practicum for this course. Usually the
practicum is an optional "practice" extension of a course. Since this is
a practice course, the Practicum will be an optional "theory" extension of
the course. Topics assigned for the student to study and report on might
include queueing theory, information theory, telecommunications regulations.
- Writing credit: optionally the student may elect for wiring credit.
The requirement for W is three essays each of at least 1500 words, on topics
related to, however tangentially, computer communications, or cyberspace,
at least one non-fiction.
- Work submission, will be by subversion repositories.
- Office Hours: TBA
- Final date: There is a final project. There are no in-class tests.
- See all courses index, previous 524
offerings, for an idea about this course.
- Thanks to Amazon for a grant under their AWS
for Education program, to explore cloud computing, and integrate cloud computing
concepts into the course.
Class notes
- Introduction
- OSI Model
- Use of the layered model; Internetworks, LAN, WAN
- Peer to peer communications; up and down the stack
- Survival kit for TCP/IP, TCP/IP in a nutshell. (packet dissection)
- Socket programing
- Beej's Guide to Network Programming (PDF)
- The IP protocol, Part I
- Datagram service, UDP
- UDP:
User Datagram Protocol, packet communications.
(RFC 768)
- Port numbers
- Examples of UDP
- The IP Protocol, Part II
- Local delivery: RFC 826 - ARP
- RFC 2453: RIP2
- Distance Vector
- Counting to infinity
- Split horizon, poison reverse, triggered updates
- Default routers, subnets, authentication, and RIP2
- routing notes
- OSPF: Link state protocols
- Autonomous systems and BGP
- IP fragmentation
- ICMP, ping, traceroute, and host routing tables.
- Connection service, TCP protocol
- TCP: Transmission Control Protocol.
(RFC 793)
- Class notes
- Segment management and acknowledgements (example)
- Connection establishment
- Resend timers, Karn's algorithm
- Congestion control: Slow start and Multiplicative decrease.
(Also, Fast retransmit, and other just-so stories)
See RFC 2001
- Silly window syndrome, Nagel's algorithm
- Network and port address translation
- Example session:
- email: SMTP, 822 headers, and MIME
; POP and IMAP
- HTTP, HTML, CSS, CGI, SHTML, DHTML, and so on.
- CGI test
- Web technologies
- FTP, passive, interaction of protocols
- Network security, protocols, and cryptography
(new organization for 2011)
- Cryptography: Godzilla crypto tutorial by Peter Gutmann.
- SSL and the PKI
- Authentication
- Attacks and countermeasures:
- Email issues (mostly Spam, but also Phishing)
- Link level communications
- Crash course in communication theory.
- Bit rate, bandwidth and Noise:
Shannon-Hartley
Theorem
- RC circuits,
Nyquist rate
- Modulation,
line codes,
symbol rate,
error correction and detection
- R. V. L. Hartley
Transmission of information (PDF),
Bell System Technical Journal, July 1928.
- C. E. Shannon A mathematical theory of communication (PDF),
The Bell System Technical Journal, Vol 27, pp 379-423, 623-656 July, October 1948.
- C. E. Shannon Communication in the presence of noise
(PDF)
Proc. Institute of Radio Engineers vol. 37 (1):
10-21. January 1949.
http://www.stanford.edu/class/ee104/shannonpaper.pdf
- Example of local communication: DTE/DCE,
RS-232
- Ethernet, 802.3 and DIX
- 10-Base-T, or 2 or 5
- 100-Base-TX (faster ether)
- Gig-E
- Wi-Fi
- Bridges, Switches, Hubs and Repeaters
Assignments
- First Assignment:
- Read chapters 1-3 in Comer.
- Read all articles in the Internetworking Basics section of the
Cisco
Internetworking Technology Handbook.
- Get tcpdump and wireshark running on your computer. Capture and
discuss a network trace to this webpage.
Submit as the plain-text neworktrace.txt file, inside of the project0
folder of your subversion folder.
- We will be using subversion to share and submit project code.
Please send me an email at the address burt+csc524@cs.miami.edu. In the return email
I will give you instructions to connect to the subversion server.
- Read the possibly incorrect subversion tutorial.
- Look in the class
folder, in the quiz folder, and find quiz0.txt. Create a project0 folder in your subversion
folder and move of copy of quiz0.txt there. Answer the questions found in quiz0.txt.
- Please have these tasks done by Monday, January 31.
- Second Assignment:
- Read sections 4.17 through 4.25 in Comer (about DNS).
- Optionally, read the
RFC 1034
on DNS (see below).
- Read chapters 20, 21, 22, 25 and 26 in Comer.
- Beej's Guide to Network Programming (PDF)
- Implement mynetcat in C.
Submit by subversion in folder project1, file name mynetcat.c.
- Implement talker and
listener in C. Submit by
subversion in floder project1, file names talker.c and listener.c
- Note: there should be a Makefile. make in the directory should
compile the programs.
- Look in the class folder for quiz1.txt. Copy it to your project1
folder and add to the file the answers to the the questions posed in
the file.
- Please have these tasks done by Monday, February 14.
- Third assignment:
- Read chapters 4, 23, 24 and 27 in Comer.
- Code review your code from the second assignment.
- You have been put into groups of two (or three)
- Look in your group partners code for areas that you found
difficult to solve. Did the partner solve the difficulty in
another way?
- Look at the overall approach and structure of the code.
Did you and your partner break the problem down along the same
structure? What advantages and disadvantages were there two
the two approaches?
- Look at the lexicon used: for versus while, defaults version
have and else for evey if, the use of subroutines, the use of
records. Is there something in your partners lexicon that you think
will improve your coding?
- Look at your partner's documentation. Was it sufficient? What
points seemed to be overlooked by the documentation, but important
for understanding of the code? What points seemed belabored by
documentation even though the detail was obvious? Does this change
your approach to your own documentation?
- Write a tftp client and server.
- tftp listens on well-known port 69. For people working in the
lab, port 69 is unavailable to a program not running as root. Therefore
either the client needs to support an alternative port option or
you will need to co-develop the client and server.
- Save timeout retransmissions for last. Get it working in the
optimistic case of no lost packets. How are you going to simulate
lost packets so that you can test your retransmission code?
- Implement only octet. Forget netascii and email modes. If
requestesd return an error packet with message "mode not supported".
- Support the -p flag for server listening port number.
- To avoid any misuse, obey the usual safety restrictions: only
read or write to a single directory. Only read or write existing
files with everyone privileges.
- Find quiz2.txt in the class folder. Copy to your project2 folder
and complete the quiz.
- Place all results in a project2 folder in your svn repository.
Makefiles for all code, including targets for clean, build and test.
- Please have these tasks done by Monday, February 28.
- Place codereview.txt in your project2 folder, with some words about
the result of the code review (this was posted late, although mentioned
in class.)
- Fourth assignment:
- Find quiz3.txt in the class folder. Copy to your project3 folder
and complete the quiz.
- Write a simple web server.
- The web server can serve pages.
- The web server can handle GET or POST queries by passing the query
string in stdin.
- The web server identifies if the request is a GET or a POST. If a GET, the form
data is urlencoded and placed as the query in the URL. If a POST, it is placed
after the headers, in the message body. The data is encoded using
Percent Encoding. The
content type is application/x-www-form-urlencoded.
- See piping stdin/stdout
for further assistance.
- If an external application is lauched to handle the query, the
application can use stderr and stdout the return results: stdout goes to
the client (with appropriate headers added by the server but overlayed
by the external application) and stderr goes to a logging file.
- Web servers use several techniques to determine of the pathname of the URL is a file,
to be served, or a script to be executed. The x-bit hack says that if the file is
executable, it is a script. Other mechanisms is the reserving of a specially named
directory, cgi-bin, for all scripts, using the ScriptAlias directive to point out
scripts explicitly, and looking at the extension of the file and attaching a handler
according to this extension. If you want, you can use the x-bit hack.
- Watchdog and sandbox the external application.
- You might or might not wish to handle virtual serving of either
of the forms: IP address or Host: parameter.
- As always, makefile, and some automated test targets are highly
encouraged. Very highly encouraged.
- Complete these tasks and submit in your project3 folder within your
subversion repository by Monday, March 21.
- Fifth assignment:
Find quiz4.txt in the class folder. Copy to your project3 folder
and complete the quiz.
- Read about SSL:
- Implement SSL for the web server your wrote for the fourth assignment.
- For the certificate, create a signing cert, sign your server cert with
the signing cert, and include your signing cert in the certificate database
of your browser.
- Complete these tasks by Monday, April 11.
- P.S., this SSL tutorial by
Eric Rescorla in Linux Journal has proved helpful to several people.
This is continued in his part two.
- Sixth assignment:
- Improve your work in the 5-th assignment to include client credentials,
a PKI, the webDAV protocol verbs, and a authentical/authorization capability
based on signed certificates.
- webDAV is too crazy, and it uses XML. Here's another approach:
- Define the url syntax http://www.anywhere.us/path/file:access,
where :access is litteral. This is the access control list
for the named resource.
- A GET to the resource will return the access control list, that is,
the list of authorized users and their authorized uses.
- When a resource is created by a PUT or POST, the client authenticated
through SSL is the owner, using the Common Name from the client certificate.
- The owner can POST to the resource
http://www.anywhere.us/path/file:access strings e.g. of the form
"pikachu:+r", meaning add read permissions on the resource for user pikachu.
- We can go with unix file permission semantics. The letters a, r, w, x
are all, read, write and execute permissions. A plus (+) means to add the
permissions, and minus (-) to remove.
- You can use pseudo-permission "o" (owner) to set the owner. The
owner owns the right to set permissions.
- Run your resulting project on AWS. Use either your own account (free for
one year if you are a new user), or use the class account, for which Amazon
as provided a grant of $1,500 in services.
- For the class signing cert, csc524_ca.cert, sync to the
class subversion repo.
- Have a bunch done by Monday, April 25.
- Final project due Wedneday, May 11.
References
- Additional textbooks:
- Radia Perlman, Interconnects: Bridges, Routers, Switches and Internetworking Protocols.
- Douglas Comer, Internetworking with TCP/IP, Vol I: Principles, Protocols, and Architecture.
- William R. Cheswick and Steven M. Bellovin, Firewalls and Internet Security: Repelling the Wily Hacker.
-
General Networking
- Software engineering for security
- WEP
- My RC4 example.
- CRC-32 failure of WEP.
- SecurityFocus review
- Attacks
on RC4 and WEP, Fluhrer, Mantin, Shamir, Cryptobytes Vol 5., No. 2, 2002,
pp 26-34.
-
KoreK attacks in chopper.
Korek
explains some of them.
-
Weakness in the Key Scheduling
Algorithm of RC4 Scott Fluhrer, Itsik Mantin, Adi Shamir.
-
Using the Fluhrer, Mantin, and
Shamir Attack to Break WEP Adam Stubblefield, John
Ioannidis, Aviel Rubin.
-
AirSnort source code.
- Exploits
- Virus
-
Open Source Security Response Philosophy
-
Secure Operating Systems
- RFC's
- IPv6
- Port Knocking
- Cookies
- Topics for next term