[2] | 1 | %
|
---|
| 2 | % $Id: report.tex 747 2009-09-20 17:01:15Z rick $
|
---|
| 3 | %
|
---|
| 4 |
|
---|
| 5 | \documentclass[12pt,a4paper]{article}
|
---|
| 6 |
|
---|
| 7 | \frenchspacing
|
---|
| 8 | \usepackage[english,dutch]{babel}
|
---|
| 9 | \selectlanguage{dutch}
|
---|
| 10 | \usepackage{graphicx}
|
---|
| 11 | \usepackage{url}
|
---|
| 12 | \usepackage{multicol}
|
---|
| 13 | \usepackage{fancybox}
|
---|
| 14 | \usepackage{amssymb,amsmath}
|
---|
| 15 |
|
---|
| 16 | \author{Johan IJsveld \& Rick van der Zwet, Universiteit Leiden}
|
---|
| 17 | \title{Networking - Assignment 3\\
|
---|
| 18 | \large{Packet Filtering and Encryption}}
|
---|
| 19 | \author{Johan IJsveld \& Rick van der Zwet\\
|
---|
| 20 | \texttt{<jijsveld@xs4all.nl> \& <hvdzwet@liacs.nl>}\\
|
---|
| 21 | \\
|
---|
| 22 | LIACS\\
|
---|
| 23 | Leiden University\\
|
---|
| 24 | Niels Bohrweg 1\\
|
---|
| 25 | 2333 CA Leiden\\
|
---|
| 26 | The Netherlands}
|
---|
| 27 | \date{\today}
|
---|
| 28 |
|
---|
| 29 | \begin{document}
|
---|
| 30 |
|
---|
| 31 | \maketitle
|
---|
| 32 |
|
---|
| 33 | \section{Implementation}
|
---|
| 34 | We have chosen for a single emph{C} program without any arguments to keep it
|
---|
| 35 | simple, meaning for the encryption key \emph{0x12345678} will be hard-coded into
|
---|
| 36 | the program and queue number are hard-coded \emph{0} for input and \emph{1} for output.
|
---|
| 37 |
|
---|
| 38 | \section{Global working}
|
---|
| 39 | At first a package arrives at \emph{netfilter} which is a Linux packet filter
|
---|
| 40 | implementation. This will push the packet using callback function implemented
|
---|
| 41 | at in\emph{libnetfilter\_queue} to our implementation. let's call our application
|
---|
| 42 | \emph{xorfilter} for a moment. The xorfilter preforms it's 'magic' which will
|
---|
| 43 | be in this case a mangle of the data payload using a XOR computation with the
|
---|
| 44 | key above. Next it recalculates the TCP checksum to ensure the checksum matches
|
---|
| 45 | the altered payload, leading to proper validation of the packet on the other end.
|
---|
| 46 |
|
---|
| 47 | \section{Usage xorfilter}
|
---|
| 48 | At first make sure to enable the \emph{xorfilter}, this needed to be running
|
---|
| 49 | under the root user, due to the enhanced privileges it needs at start by
|
---|
| 50 | 'hooking' into \emph{iptables}. Next alter \emph{iptables} using the CLI
|
---|
| 51 | script, for a reference sample, check \emph{setqueue.sh}.
|
---|
| 52 |
|
---|
| 53 | \section{Usage echod}
|
---|
| 54 | Ones started the program \emph{echod} will listen at port \emph{12345}. It's
|
---|
| 55 | only purpose it serves (hences the 'd' of daemon in echod) is to reply the data
|
---|
| 56 | it receives. One could connect using the program telnet to the program using
|
---|
| 57 | \emph{telnet localhost 12345} and everything you type will be returned as well.
|
---|
| 58 |
|
---|
| 59 | \section{xorfilter encryption}
|
---|
| 60 | The key consist of 4 bytes, so for every 4 bytes, the data is XORed with the
|
---|
| 61 | key, which is first translated using \emph{htonl} to make sure we are using
|
---|
| 62 | big endian instead of small endian as all network traffic is big endian by
|
---|
| 63 | definition. Next in case of a remainder -when the length of the data is not a
|
---|
| 64 | power of 4 bytes- the remainder is XORed with the relevant byte of the key. Example:
|
---|
| 65 |
|
---|
| 66 | \begin{verbatim}
|
---|
| 67 | DATA: AB CD EF 34 23 21 34 (7 bytes)
|
---|
| 68 | Step 1 (key repeated each 4 bytes, done using for loop on words):
|
---|
| 69 | KEY : 12 34 56 78
|
---|
| 70 | IMM : B9 F9 B9 4C 23 21 34
|
---|
| 71 | Step 2 (remainder key, done using for loop on bytes):
|
---|
| 72 | KEY : 12 34 56
|
---|
| 73 | IMM : B9 F9 B9 4C 31 15 62
|
---|
| 74 | \end{verbatim}
|
---|
| 75 |
|
---|
| 76 |
|
---|
| 77 | % \begin{thebibliography}{10}
|
---|
| 78 | % \end{thebibliography}
|
---|
| 79 | \newpage
|
---|
| 80 | \advance\textwidth by 8cm
|
---|
| 81 | \advance\oddsidemargin by -3cm
|
---|
| 82 | \advance\evensidemargin by -3cm
|
---|
| 83 | \advance\topmargin by -2cm
|
---|
| 84 | \advance\textheight by 4cm
|
---|
| 85 | \advance\footskip by -4cm
|
---|
| 86 | \marginparwidth 0cm
|
---|
| 87 | \twocolumn
|
---|
| 88 | \section*{Appendix}
|
---|
| 89 | echod (1 file), xorfilter (9 files), netfilter CLI example (2 files)
|
---|
| 90 | \newline
|
---|
| 91 | \tiny
|
---|
| 92 | %preformatted with `source-highlight -n -f latex bridge.cc`
|
---|
| 93 | \input{../src/echod/echod.c}
|
---|
| 94 | \input{../src/xorfilter/checksum.c}
|
---|
| 95 | \input{../src/xorfilter/checksum.h}
|
---|
| 96 | \input{../src/xorfilter/filter.c}
|
---|
| 97 | \input{../src/xorfilter/filter.h}
|
---|
| 98 | \input{../src/xorfilter/queue.c}
|
---|
| 99 | \input{../src/xorfilter/queue.h}
|
---|
| 100 | \input{../src/xorfilter/xorencrypt.c}
|
---|
| 101 | \input{../src/xorfilter/xorencrypt.h}
|
---|
| 102 | \input{../src/xorfilter/xorfilter.c}
|
---|
| 103 | \input{../tools/setqueue.sh}
|
---|
| 104 | \input{../tools/rmqueue.sh}
|
---|
| 105 |
|
---|
| 106 | \onecolumn
|
---|
| 107 |
|
---|
| 108 | \end{document}
|
---|