------------------------------------------------------------------------------ Russell Bradford rjb@cs.bath.ac.uk Visualisation of IPCHAINS Description: IPCHAINS is a technique used in Linux to control a network firewall. However, it is quite tricky to program effectively as it is a collection of low level rules concerning IP addresses, port numbers, and so on. This project is to develop a front end to IPCHAINS that allows visualisation of the rules. This will include developing a graphical layout of how the rules are related to each other and presenting them in a comprehensible manner. The system will support testing by tracking probe packets though the rules, perhaps by highlighting which rules are activated. Pre-requisite knowledge: Programming skills, familiarity with IP networks and some appreciation of Linux would help. Indicative reading: http://www.netfilter.org/ ------------------------------------------------------------------------------ Russell Bradford rjb@cs.bath.ac.uk Rijndael Encryption Description: Rijndael is a new standard encryption algorithm (the Advanced Encryption Standard, AES). It is a straightforward (but not simple) algorithm that takes a block of data, performs various manipulations on it, and outputs the encrypted version. This project is to develop several versions of Rijndael for use in different circumstances. This would at least include: a fast C version for general use; a Java version for use in applets; a JavaScript version for use with web pages; a Perl version for scripting use. Each version would be proved by a simple application that uses the code, e.g., a file encryption program using the C code. Pre-requisite knowledge: Programming skills, a little mathematics to understand Rijndael. Indicative reading: http://csrc.nist.gov/encryption/aes/ Java books, JavaScript books, etc. ------------------------------------------------------------------------------ Russell Bradford rjb@cs.bath.ac.uk Digital Watermarking (sound or picture) Description: With the advent of Internet publishing it is difficult to retain control over data like images or sound. Some people have developed watermarking techniques (hiding data in the image) to promote this control. A watermark is some data hidden in the medium in such a way that a) the watermark is not visible/audible; b) the watermark is robust is the sense that it is not easily removable by, say, changing a few pixels in the image; c) the watermark is easily readable by the copyright owner. The aim of this project is to implement a few watermarking techniques, and determine their effectiveness against a few simple attacks. Pre-requisite knowledge: Programming skills, some mathematics will help. Indicative reading: http://citeseer.nj.nec.com/petitcolas98attacks.html ------------------------------------------------------------------------------ Russell Bradford rjb@cs.bath.ac.uk A Simulation Kernel Description: Discrete event simulation is useful in many areas. For example, simulation of aircraft moving in a flightspace, molecules in a chemical reaction, packets in a network. All are characterised by being modelled by objects that react to events, e.g., a plane moving to avoid another, a packet being dropped due to congestion. A relatively new way of implementing such simulations is to use Critical Channel Traversal (CCT). This project is to read, understand and implement "Scheduling Critical Channels in Conservative Parallel Discrete Event Simulation" by Xiao et al. This describes a simulation kernel, i.e., a program that performs the object and event management that can then be used in a variety of simulation programs. This will be backed up by a simple simulation that demonstrates the correctness of the implementation of CCT. Pre-requisite knowledge: Programming skills. Indicative reading: http://citeseer.nj.nec.com/xiao99scheduling.html ------------------------------------------------------------------------------ Russell Bradford rjb@cs.bath.ac.uk A comparison of traditional, Karatsuba and Fourier big integer multiply Description: There are several radically different algorithms to multiply together large integers. The traditional method is the one everybody learns at school: cross-multiplying all the digits and then adding the rows together. This is easy to perform, but get slow very quickly as the numbers get larger. When we have perhaps ten or hundreds of digits in our integers another method is better: Karatsuba. This is a kind of "divide and conquer" algorithm that is slower than Trad for small numbers but faster for large numbers. Additionally, there is another algorithm based on Fourier transforms that is faster still, but only for really large numbers. For medium sized of small numbers it is relatively slow compared to Trad and Karatsuba. This project will implement and compare these three algorithms, and determine the ranges of numbers for which each is the best. Pre-requisite knowledge: Programming skills. Some familiarity with maths and Fourier tranforms would be good. Indicative reading: Knuth, "The Art of Computer Programming", volume 2. ------------------------------------------------------------------------------