Abstract
What happens if a Mars lander takes a cosmic ray through the processor and thereafter \(1\,\mathtt{+ }\,1=3\)? Coping with the fault is feasible but requires the numbers 2 and 3 to be treated as indistinguishable for the purposes of arithmetic, while as memory addresses they continue to access different memory cells. If a program is to run correctly in this altered environment it must be prepared to see address 2 sporadically access data in memory cell 3, which is known as ‘hardware aliasing’. This paper describes a programming discipline that allows software to run correctly in a hardware aliasing context, provided the aliasing is underpinned by hidden determinism.
Access this chapter
Tax calculation will be finalised at checkout
Purchases are for personal use only
Notes
- 1.
The Curiosity rover now on Mars has a second processor that was signalled to take over on February 28, 2013, due to an issue with the active processor’s flash memory that resulted in it continuously rebooting, draining power. The rover was not heard from again until March 4, the spacecraft nearly having been lost. The issue reoccurred late in March, 2013, and full normal operation was only finally resumed on March 25, 2013, after reloading programs to a different portion of flash memory.
- 2.
Barr in [2] describes it thus: “Hardware Aliasing: ...[is] used to describe the situation where, due to either a hardware design choice or a hardware failure, one or more of the available address bits is not used in the memory selection process.” That is, the available memory address bits do not serve to distinguish two different locations.
- 3.
A more sophisticated version of this recipe relaxes the rule to allow different aliases than 0xabcd to be used provided that the same alias is always used for one write and the succeeding reads; the next write may use a different alias again.
References
Allen, R., Kennedy, K.: Optimizing Compilers for Modern Architectures: A Dependence-Based Approach, vol. 289. Morgan Kaufmann, San Francisco (2002)
Barr, M.: Programming Embedded Systems in C and C++, 1st edn. O’Reilly & Associates Inc., Sebastopol (1998)
Bowen, J.P., Breuer, P.T.: Decompilation. In: van Zuylen, H. (ed.) The REDO Compendium: Reverse Engineering for Software Maintenance, chap. 10, pp. 131–138. John Wiley & Sons, Hoboken (1993)
Breuer, P.T., Bowen, J.P.: Decompilation: the enumeration of types and grammars. ACM Trans. Program. Lang. Syst. (TOPLAS) 16(5), 1613–1647 (1994)
Breuer, P.T., Bowen, J.P.: Typed assembler for a RISC crypto-processor. In: Barthe, G., Livshits, B., Scandariato, R. (eds.) ESSoS 2012. LNCS, vol. 7159, pp. 22–29. Springer, Heidelberg (2012)
Breuer, P.T., Bowen, J.P.: Certifying machine code safe from hardware aliasing: RISC is not necessarily risky. In: Counsell, S., Núñez, M. (eds.) SEFM 2013. LNCS, vol. 8368, pp. 371–388. Springer, Heidelberg (2014)
Breuer, P.T., Bowen, J.P.: A fully homomorphic crypto-processor design. In: Jürjens, J., Livshits, B., Scandariato, R. (eds.) ESSoS 2013. LNCS, vol. 7781, pp. 123–138. Springer, Heidelberg (2013)
Breuer, P.T., Bowen, J.P.: Avoiding hardware aliasing: verifying RISC machine and assembly code for encrypted computing. In: Proceedings of the 25th IEEE Intlernational Symposium on Software Reliability Engineering Workshops (ISSRE 2014), 2nd IEEE International Workshop on Reliability and Security Data Analysis (RSDA 2014), pp. 365–370. IEEE, November 2014
Breuer, P.T., Bowen, J.P.: Towards a working fully homomorphic crypto-processor. In: Jürjens, J., Piessens, F., Bielova, N. (eds.) ESSoS. LNCS, vol. 8364, pp. 131–140. Springer, Heidelberg (2014)
Cohen, E., Dahlweid, M., Hillebrand, M., Leinenbach, D., Moskal, M., Santen, T., Schulte, W., Tobies, S.: VCC: a practical system for verifying concurrent C. In: Berghofer, S., Nipkow, T., Urban, C., Wenzel, M. (eds.) TPHOLs 2009. LNCS, vol. 5674, pp. 23–42. Springer, Heidelberg (2009)
Glosserman, P.: Quarterdeck Expanded Memory Manager: QEMM, Instant Power for 386, 486 or Pentium PCs. Quarterdeck Office Systems, Santa Monica (1985)
Gruhn, M., Müller, T.: On the practicability of cold boot attacks. In: 8th International Conference on Availability, Reliability and Security (ARES 2013), pp. 390–397, September 2013
Halderman, J.A., Schoen, S.D., Heninger, N., Clarkson, W., Paul, W., Calandrino, J.A., Feldman, A.J., Appelbaum, J., Felten, E.W.: Lest we remember: cold-boot attacks on encryption keys. Commun. ACM 52(5), 91–98 (2009)
He, J., Bowen, J.P.: Specification, verification and prototyping of an optimized compiler. Formal Aspects Comput. 6(6), 643–658 (1994)
Hoare, C.A.R.: An axiomatic basis for computer programming. Commun. ACM 12(10), 576–580 (1969)
Patterson, D.A.: Reduced instruction set computers. Commun. ACM 28(1), 8–21 (1985)
Simmons, P.: Security through amnesia: a software-based solution to the cold boot attack on disk encryption. In: Proceedings of the 27th Annual Computer Security Applications Conference (ACSAC 2011), pp. 73–82. ACM, New York (2011)
Tsoutsos, N.G., Maniatakos, M.: The HEROIC framework: encrypted computation without shared keys. IEEE Trans. Comput. Aided Des. Integr. Circuits Syst. 34(6), 875–888 (2015)
Wang, S., Hu, J., Ziavras, S.G.: On the characterization of data cache vulnerability in high-performance embedded microprocessors. In: Proceedings of the IC-SAMOS 2006: International Conference on Embedded Computer Systems: Architectures, Modeling and Simulation, pp. 14–20, July 2006
Acknowledgements
Simon Pickin’s contribution to the research described in this paper has been partially supported by the Spanish MEC project ESTuDIo (TIN2012-36812-C02-01). Peter T. Breuer wishes to acknowledge the support of HecuSys Inc. (http://www.hecusys.com) in connection with KPU technology, described herein.
Author information
Authors and Affiliations
Corresponding author
Editor information
Editors and Affiliations
Rights and permissions
Copyright information
© 2015 Springer International Publishing Switzerland
About this paper
Cite this paper
Breuer, P.T., Bowen, J.P., Pickin, S. (2015). Processor Rescue. In: Fujita, H., Guizzi, G. (eds) Intelligent Software Methodologies, Tools and Techniques. SoMeT 2015. Communications in Computer and Information Science, vol 532. Springer, Cham. https://doi.org/10.1007/978-3-319-22689-7_10
Download citation
DOI: https://doi.org/10.1007/978-3-319-22689-7_10
Published:
Publisher Name: Springer, Cham
Print ISBN: 978-3-319-22688-0
Online ISBN: 978-3-319-22689-7
eBook Packages: Computer ScienceComputer Science (R0)