Abstract
We describe the Spi2Java code generation tool, which we have developed in an attempt to bridge the gap between formal security protocol specification and executable implementation. Implemented in Prolog, Spi2Java can input a formal security protocol specification in a variation of the Spi Calculus, and generate a Java code implementation of that protocol. We give a brief overview of the role of code generation in the wider context of security protocol development. We cover the design and implementation of Spi2Java which we relate to the high integrity code generation requirements identified by Whalen and Heimdahl. By defining a Security Protocol Implementation API that abstracts cryptographic and network communication functionality we show that protocol logic code can be separated from underlying cryptographic algorithm and network stack implementation concerns. The design of this API is discussed, particularly its support for pluggable implementation providers. Spi2Java's functionality is demonstrated by way of example: we specify the Needham-Schroeder Public Key Authentication Protocol, and Lowe's attack on it, in the Spi Calculus and examine a successful attack run using Spi2Java generated implementation of the protocol roles.
Chapter PDF
Similar content being viewed by others
Author information
Authors and Affiliations
Corresponding author
Editor information
Rights and permissions
Copyright information
© 2005 International Federation for Information Processing
About this paper
Cite this paper
Tobler, B., Hutchison, A.C.M. (2005). GENERATING NETWORK SECURITY PROTOCOL IMPLEMENTATIONS FROM FORMAL SPECIFICATIONS. In: Nardelli, E., Talamo, M. (eds) Certification and Security in Inter-Organizational E-Service. IFIP WCC TC11 2004. IFIP On-Line Library in Computer Science, vol 177. Springer, Boston, MA. https://doi.org/10.1007/11397427_3
Download citation
DOI: https://doi.org/10.1007/11397427_3
Publisher Name: Springer, Boston, MA
Print ISBN: 978-0-387-25087-8
Online ISBN: 978-0-387-25088-5
eBook Packages: Computer ScienceComputer Science (R0)