Abstract
Encryption is a special case of conditional loss-less transformation and is, thus, interesting to study from the perspective of reversible computations. In this paper we investigate some of the advantages of implementing encryption algorithms in a reversible language; here exemplified by implementing several symmetric lightweight encryption algorithms in Janus.
We not only get both encryption and decryption programs with the same implementation, but also demonstrate how to translate the Janus program to a Vale program, which is then intended to be used to formally show the absence of state information leakage. This shows a way to use reversible programming to increase resilience to some side-channel attacks and give prospects for writing more secure algorithms in the future. Our experience shows that the implementation time is not significantly increased when implementing the algorithms in Janus.
This is a preview of subscription content, log in via an institution.
Buying options
Tax calculation will be finalised at checkout
Purchases are for personal use only
Learn about institutional subscriptionsNotes
- 1.
Here we are using the notation, where \([\![p]\!](x) = (y)\) represents the execution on an machine of program p with x as a given parameter and y being the result.
- 2.
Some encryptions algorithms require fixed-sized plaintexts/ciphertexts.
References
Beaulieu, R., Shors, D., Smith, J., Treatman-Clark, S., Weeks, B., Wingers, L.: The SIMON and SPECK families of lightweight block ciphers. Cryptology ePrint Archive, Report 2013/404 (2013). https://eprint.iacr.org/2013/404
Bond, B., et al.: Vale: verifying high-performance cryptographic assembly code. In: Proceedings of the 26th USENIX Security Symposium, pp. 917–934 (2017)
Burignat, S., Vermeirsch, K., De Vos, A., Thomsen, M.K.: Garbageless reversible implementation of integer linear transformations. In: Glück, R., Yokoyama, T. (eds.) RC 2012. LNCS, vol. 7581, pp. 160–170. Springer, Heidelberg (2013). https://doi.org/10.1007/978-3-642-36315-3_13
Huffman, D.A.: Canonical forms for information-lossless finite-state logical machines. IRE Trans. Inf. Theor. 5(5), 41–59 (1959)
Protzenko, J.: Verified low-level programming embedded in F*. Proc. ACM Program. Lang. 1(ICFP), 17:1–17:29 (2017)
Rivest, R.L.: The RC5 Encryption Algorithm. http://people.csail.mit.edu/rivest/Rivest-rc5rev.pdf
Simon, L., Chisnall, D., Anderson, R.: What You Get is What You C: Controlling Side Effects in Mainstream C Compilers (2014)
Wheeler, D.J., Needham, R.M.: TEA, a tiny encryption algorithm. In: Preneel, B. (ed.) FSE 1994. LNCS, vol. 1008, pp. 363–366. Springer, Heidelberg (1995). https://doi.org/10.1007/3-540-60590-8_29
Yokoyama, T., Glück, R.: A reversible programming language and its invertible self-interpreter. In: Partial Evaluation and Program Manipulation, PEPM 2007, pp. 144–153. ACM (2007)
Acknowledgements
This work was partly supported by the European COST Action IC 1405: Reversible Computation - Extending Horizons of Computing.
Author information
Authors and Affiliations
Corresponding author
Editor information
Editors and Affiliations
Rights and permissions
Copyright information
© 2018 Springer Nature Switzerland AG
About this paper
Cite this paper
Táborský, D., Larsen, K.F., Thomsen, M.K. (2018). Encryption and Reversible Computations. In: Kari, J., Ulidowski, I. (eds) Reversible Computation. RC 2018. Lecture Notes in Computer Science(), vol 11106. Springer, Cham. https://doi.org/10.1007/978-3-319-99498-7_23
Download citation
DOI: https://doi.org/10.1007/978-3-319-99498-7_23
Published:
Publisher Name: Springer, Cham
Print ISBN: 978-3-319-99497-0
Online ISBN: 978-3-319-99498-7
eBook Packages: Computer ScienceComputer Science (R0)