Programming Problem: Secure Log File

Summary

The goal of this assignment is to implement a secure log to describe the state of a hospital in terms of the doctors and nurses who have entered the building and which rooms they are in. The log will be used by two programs. One program, logappend, will append new information to this file, and the other, logread, will read from the file and display the state of the hospital according to a given query over the log. Both programs will use an authentication token, supplied as a command-line argument, to authenticate each other; the security model is described in more detail below.

Programs

Students design the log format and implement both logappend and logread to use it. These programs must be written in C or C++ and must compile and run on compute.cse.tamu.edu. Each program's description is linked below.

Examples

Look at the page of examples for examples of using the logappend and logread tools together.

Security Model

The system as a whole must guarantee the privacy and integrity of the log in the presence of an adversary.

The adversary is able to:

The adversary is not able to:

The adversary does not know the authentication token. This token, specified on the command line, is used by both the logappend and logread tools. Without knowledge of the token an attacker should not be able to:

Oracle

An oracle reference implementation is provided to demonstrate the expected output of a series of commands run on logappend and logread. Students may run the reference implementation by going to ritchey.tk. Here is an example of the expected input for the oracle:

{
    "tests":[
        {
            "input":"logappend -T 1 -K secret -D ritchey -A -F log"
        },
        {
            "input":"logappend -T 2 -K secret -D ritchey -A -R 326 -F log"
        },
        {
            "input":"logappend -T 3 -K secret -N bregger -A -F log"
        },
        {
            "input":"logread -K secret -S -F log"
        }
    ]
}

Details

Submission