Over the years I've been fortunate to supervise many undergraduate students working on their final year BSc Computer Science projects. These students have developed a wide range of useful studies, software tools and prototypes that are too numerous to list here. Below is a small selection of these. We make them freely available under a FreeBSD style license on the understanding that we do not provide any support.
Analyzing Authentication Protocols
For his final year BSc project Daithi O Crualaoich implemented a tool for reasoning about authentication protocols within the BSW Logic (also known as the Simple Logic). Theory Generation was used to provide the basic reasoning engine for the logic. Its a nice worked example of using TG in general (although our provided metric is incomplete; but we've found it to be quite workable in practice). There are two tools. The Verify tool takes a protocol specification, along with associated assumptions and goals, and attempts to verify the goals. The synthesis tool allows you to synthesise (viz, calculate) a protocol specification from a goal; the user manually interacts with the tool to direct it towards the designed protocol.
- Synthesis Tool synth.jar. Execute as java -jar synth.jar. The synthesis script for a (corrected version) of WooLam demonstrates its use.
- Verification Tool ver.jar. Execute as
java -jar ver.jar
. - Some examples of protocol specifications in the logic: WooLam Protocol; Wide Mouth Frog.