A Full Protocol Example
The Needham-Schroeder shared-key distribution algorithm in its original form has security issues, but is quite simple and easy to understand. In the traditional Alice-n-Bob notation, it is described as:
Message 1 A -> S : A,B,NA
Message 2 S -> A :NA,B,KAB, {KAB,A}KBS KAS
Message 3 A -> B : {KAB,A}KBS
Message 4 B -> A : {NB}KAB
Message 5 A -> B : {NB-1}KAB
Implementing this is not as easy as it seems, and all kinds of considerations pop up: there are only five messages, but three participants; there are multiple naming schemesA, B, and S are both roles, identifiers, and key lookup indexes. Listings Five, Six, and Seven (available in the source code area) show Obol scripts for all three parties. The scripts for A and B show how to use default values for input requirements, and how the generate operand can be used to invoke an external Lisp interpreter for computing NB-1. To keep Obol domain-specific, there is no built-in support for general computation, so an external language is used. Currently, the Obol runtime supports the external interpreters ABCL (Armed Bear Common Lisp, armedbear.org/abcl.html) and Jython (Python in Java, jython.org). |