Abstract
This paper describes SPARKSkein - a new reference implementation of the Skein cryptographic hash algorithm, written and verified using the SPARK language and toolset. The new implementation is readable, completely portable to a wide-variety of machines of differing word-sizes and endian-ness, and “formal” in that it is subject to a proof of type safety. This proof also identified a subtle bug in the original reference implementation which persists in the C version of the code. Performance testing has been carried out using three generations of the GCC compiler. With the latest compiler, the SPARK code offers identical performance to the existing C reference implementation. As a further result of this work, we have identified several opportunities to improve both the SPARK tools and GCC.
Access this chapter
Tax calculation will be finalised at checkout
Purchases are for personal use only
Preview
Unable to display preview. Download preview PDF.
Similar content being viewed by others
References
Skein project homepage, http://www.skein-hash.info/
Carré, B., Bergeretti, F.: Data- and Information-Flow Analysis of While Programs. ACM Transactions on Programming Languages and Systems 7(1), 36–61 (1985)
Barnes, J.: High Integrity Software: The SPARK Approach to Safety and Security. Addison-Wesley (2003) (reprinted in 2007) ISBN 978-0-321-13616-0
Tokeneer Discovery: A SPARK Tutorial, http://www.adacore.com/home/products/sparkpro/tokeneer/discovery/
SPARK GPL Edition site, http://libre.adacore.com/
Jackson, P.B., Ellis, B.J., Sharp, K.: Using SMT Solvers to Verify High-Integrity Programs. In: 2nd International Workshop on Automated Formal Methods, AFM 2007, Atlanta, Georgia, USA (2007), http://homepages.inf.ed.ac.uk/pbj/
Z3: An efficient theorem prover. Microsoft Research, http://research.microsoft.com/enus/um/redmond/projects/z3/
Alt-Ergo website, http://alt-ergo.lri.fr/
Baral, C.: Knowledge Representation, Reasoning and Declarative Problem Solving. Cambridge University Press, Cambridge (2003)
Jacobs, B., Piessens, F.: The VeriFast program verifier. Technical Report CW-520, Department of Computer Science, Katholieke Universiteit Leuven, Belgium (August 2008)
VCC: A Verifier for Concurrent C, http://research.microsoft.com/en-us/projects/vcc/
National Institute of Standards and Technology, Computer Security and Resource Center, Cryptographic Hash Algorithm Competition, http://csrc.nist.gov/groups/ST/hash/sha-3/index.html
The Skein Hash Function Family, Ferguson, N., et al., http://www.skein-hash.info/sites/default/files/skein1.1.pdf
Author information
Authors and Affiliations
Editor information
Editors and Affiliations
Rights and permissions
Copyright information
© 2011 Springer-Verlag Berlin Heidelberg
About this paper
Cite this paper
Chapman, R., Botcazou, E., Wallenburg, A. (2011). SPARKSkein: A Formal and Fast Reference Implementation of Skein. In: Simao, A., Morgan, C. (eds) Formal Methods, Foundations and Applications. SBMF 2011. Lecture Notes in Computer Science, vol 7021. Springer, Berlin, Heidelberg. https://doi.org/10.1007/978-3-642-25032-3_2
Download citation
DOI: https://doi.org/10.1007/978-3-642-25032-3_2
Publisher Name: Springer, Berlin, Heidelberg
Print ISBN: 978-3-642-25031-6
Online ISBN: 978-3-642-25032-3
eBook Packages: Computer ScienceComputer Science (R0)