Theory KeyserverEx
section‹A Brief Overview of Isabelle/PSPSP\label{sec:overview}›
text‹
In this section, we briefly explain how to use Isabelle/PSPSP for proving the security of
protocols. As Isabelle/PSPSP is build on top of Isabelle/HOL, the overall user interface
and the high-level language (called Isar) are inherited from Isabelle. We refer the reader
to \<^cite>‹"nipkow2002isabelle"› and the system manuals that are part of the Isabelle
distribution. The latter are accessible within Isabelle/jEdit in the documentation pane
on the left-hand side of the main window .
›
text‹
In the following, we will illustrate the use of our system by analyzing a simple keyserver
protocol (this theory is stored in the file \inlinebash|PSPSP-Manual/KeyserverEx.thy|. When
loading this theory in Isabelle/jEdit, please ensure that the
session @{session "Automated_Stateful_Protocol_Verification"} is active (this session provides
Isabelle/PSPSP).
When done, please move the text cursor to the section ``Proof of Security''. There are some
orange question marks at the side of some lines. These are the comments from Isabelle that
indicate the timing results we ask for: when moving the cursor to the corresponding line,
and selecting the \verb|Output|-Tab on the bottom of the Isabelle window (ensure that there is
a tick-mark on ``Auto update''), you see the timing information provided by Isabelle for each step.
Your Isabelle should look similar to \autoref{fig:Keyserver}.
\begin{figure}
\centering
\includegraphics[width=\textwidth]{jedit-keyserver.png}
\caption{Opening \inlinebash|KeyserverEx.thy| in Isabelle/jEdit.}\label{fig:Keyserver}
\end{figure}
The Isabelle IDE (called Isabelle/jEdit) is a front-end for Isabelle that supports most features
known from IDEs for programming languages. The input area (in the middle of the upper part of
the window) supports, e.g., auto completion, syntax highlighting, and automated proof generation
as well as interactive proof development. The lower part shows the current output (response)
with respect to the cursor position.
›
text‹
We will now briefly explain this example in more detail. First, we start with the theory header:
As in Isabelle/HOL, formalization happens within theories. A theory is a unit with a name that
can import other theories. Consider the following theory header: ›
theory
KeyserverEx
imports
Automated_Stateful_Protocol_Verification.PSPSP
"introduction"
begin
text‹which opens a new theory \texttt{KeyserverEx} that is based on the top-level theory of
Isabelle/PSPSP, called @{theory "Automated_Stateful_Protocol_Verification.PSPSP"}. Within this
theory, we can use all definitions and tools provided by Isabelle/PSPSP. For example,
Isabelle/PSPSP provides a mechanism for measuring the run-time of certain commands. This
mechanism can be turned on as follows:›
declare [[pspsp_timing]]
subsection‹Protocol Specification›
text‹
The protocol is specified using a domain-specific language that, e.g., could also be used by a
security protocol model checker. We call this language ``trac'' and provide a dedicated environment
(command) @{command "trac"} for it: ›