Abstract
We describe the programming language Hermes, which is designed for writing private-key encryption algorithms. Specifically, every program written in Hermes is reversible: It can run equally well forwards and backwards. This means that you only write the encryption algorithm and get the decryption algorithm for free. Hermes also ensures that all variables are cleared after use, so the memory will not contain data that can be used for side-channel attacks. Additionally, to prevent side-channel attacks that extract information from running times, control structures that may give data-dependent execution times are avoided.
Access this chapter
Tax calculation will be finalised at checkout
Purchases are for personal use only
Similar content being viewed by others
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
Haas, A., et al.: Bringing the web up to speed with webAssembly. SIGPLAN Not. 52(6), 185–200 (2017)
Lutz, C.: Janus: a time-reversible language. A letter to Landauer. http://www.tetsuo.jp/ref/janus.pdf (1986)
Rivest, R.L.: The RC5 encryption algorithm. Dr. Dobb’s J. 20(1), 146–148 (1995)
Schneier, B.: Description of a new variable-length key, 64-bit block cipher (Blowfish). In: Anderson, R. (ed.) FSE 1993. LNCS, vol. 809, pp. 191–204. Springer, Heidelberg (1994). https://doi.org/10.1007/3-540-58108-1_24
Simon, L., Chisnall, D., Anderson, R.: What you get is what you C: controlling side effects in mainstream C compilers. In: 2018 IEEE European Symposium on Security and Privacy (EuroS&P), pp. 1–15, April 2018
Táborský, D., Larsen, K.F., Thomsen, M.K.: Encryption and reversible computations - work-in-progress paper. In: Kari, J., Ulidowski, I. (eds.) RC 2018. LNCS, vol. 11106, pp. 331–338. Springer, Cham (2018). https://doi.org/10.1007/978-3-319-99498-7_23
Watt, C., Renner, J., Popescu, N., Cauligi, S., Stefan, D.: CT-Wasm: type-driven secure cryptography for the web ecosystem. CoRR, abs/1808.01348 (2018)
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
Wikipedia. Rc5. https://en.wikipedia.org/wiki/RC5. Accessed Feb 2019
Wikipedia. Red pike (cipher). https://en.wikipedia.org/wiki/Red_Pike_(cipher). Accessed Feb 2019
Wikipedia. Speck (cipher). https://en.wikipedia.org/wiki/Speck_(cipher). Accessed Feb 2019
Wikipedia. Tiny encryption algorithm. https://en.wikipedia.org/wiki/Tiny_Encryption_Algorithm. Accessed Jan 2019
Yokoyama, T., Axelsen, H.B., Glück, R.: Principles of a reversible programming language. In: Proceedings of the 5th Conference on Computing Frontiers, CF 2008, pp. 43–54. ACM, New York (2008)
Author information
Authors and Affiliations
Corresponding author
Editor information
Editors and Affiliations
Rights and permissions
Copyright information
© 2019 Springer Nature Switzerland AG
About this paper
Cite this paper
Mogensen, T.Æ. (2019). Hermes: A Reversible Language for Writing Encryption Algorithms (Work in Progress). In: Bjørner, N., Virbitskaite, I., Voronkov, A. (eds) Perspectives of System Informatics. PSI 2019. Lecture Notes in Computer Science(), vol 11964. Springer, Cham. https://doi.org/10.1007/978-3-030-37487-7_21
Download citation
DOI: https://doi.org/10.1007/978-3-030-37487-7_21
Published:
Publisher Name: Springer, Cham
Print ISBN: 978-3-030-37486-0
Online ISBN: 978-3-030-37487-7
eBook Packages: Computer ScienceComputer Science (R0)