Obol is a software project focused on analyzing security protocols and their properties.
The main idea behind Obol is to allow programmers to focus solely on the security aspects of the protocol being implemented without getting entangled in low-level encryption details and application logic. By separating the three aspects of security protocol code, low-level cryptographic functions, and application logic, Obol can provide a clean, modular, and flexible security protocol framework.
The runtime version of Obol is currently implemented in Java using ANTLR for parsing, with earlier prototypes developed using Common Lisp and Python. Obol can be used for any protocol structure that requires composition and transformation, not just security protocols.
The language itself is interpreted, and protocols can be upgraded with ease. The modular structure of the runtime allows for new message representation formats, cryptographic primitives, and communication technology to be added dynamically.
Obol's syntax takes into consideration the abstractions used to describe and analyze security protocols, making it easier to program at a high level without worrying about the details. For example, the code snippet:
A → B: A, B, {A, B, Na}Kab
Describes a message in a security protocol where A sends B a message consisting of sender and recipient names and an encrypted repetition of these names plus a nonce value using the shared key Kab.
To implement both sides (A and B) of this example, Obol provides simple code snippets:
A side: (send B A B (encrypt Kab A B Na))
B side: (receive A A B (decrypt Kab A B *Na))
To use Obol, an application simply needs to connect to the runtime and request the start of a protocol or script. The application then receives a handle to interact with the script instance, controlling protocol execution, setting and retrieving values required and provided by the script.
The latest release of Obol brings a number of fixes, including resolving jar file issues, improving robustness, and fixing symbol property dereferencing.
Version 0.2007.01.19: N/A