Abstract
Trojan horses of Thompson-Goerigk-type are intended software errors very hidden in machine level compiler implementations although the latter have successfully passed Wirth’s strong compiler bootstrapping test and there have been done rigorous verification both of compiling specification and of high level compiler implementation. Thompson demonstrated these errors in 1984. This essay describes Goerigk’s contributions on how to generate, intrude, detect and prevent these most intricate errors which can even pass compiler certification test suites undetected. Target code inspection therefore is necessary. However, a full inspection usually is not feasible. Main research result described is how to slash down the amount of inspection necessary, while still getting a provably correct compiler. Project Verifix demonstrated this approach on a fully verified, realistic compiler for a realistic high level language.
Access this chapter
Tax calculation will be finalised at checkout
Purchases are for personal use only
Preview
Unable to display preview. Download preview PDF.
References
Bauer, F.L.: Einladung zur Mathematik. Deutsches Museum, München (1999)
BSI – Bundesamt für Sicherheit in der Informationstechnik. BSI-Zertifizierung. BSI 7119, Bonn (1994)
BSI – Bundesamt für Sicherheit in der Informationstechnik. OCOCAT-S Projektausschreibung (1996)
Chirica, L.M., Martin, D.F.: Toward Compiler Implementation Correctness Proofs. ACM Transactions on Programming Languages and Systems 8(2), 185–214 (1986)
Dold, A., von Henke, F., Goerigk, W.: A Completely Verified Realistic Bootstrap Compiler. Int. J. of Foundations of Computer Science 14(4), 659–680 (2003)
Dold, A., von Henke, F.W., Vialard, V., Goerigk, W.: A Mechanically Verified Compiler Specification for a Realistic Compiler. Ulmer Informatik-Berichte Nr. 2002-03, Univ. Ulm, 67 pgs. (2002)
Dijkstra, E.W.: A Discipline of Programming. Prentice-Hall, Englewood Cliffs (1976)
Dold, A.: Formal Software Development using Generic Development Steps. Logos-Verlag, Berlin, Dissertation, Univ. Ulm, 235 pgs. (2000)
Fagan, M.E.: Advances in software inspections. IEEE Transactions on Software Engineering, SE-12(7), 744–751 (1986)
Goerigk, W., Dold, A., Gaul, T., Goos, G., Heberle, A., von Henke, F., Hoffmann, U., Langmaack, H., Pfeiffer, H., Ruess, H., Zimmermann, W.: Compiler Correctness and Implementation Verification: The Verifix Approach. In: Proc. Poster Sess. CC 1996–Internat. Conf. on Compiler Construction, ida, TR-Nr. R-96-12 (1996)
Glesner, S., Goos, G., Zimmermann, W.: Verifix: Konstruktion und Architektur verifizierender Übersetzer. Informationstechnik 46(5) (2004)
Goerigk, W., Gaul, T., Zimmermann, W.: Correct Programs without Proof? On Checker-Based Program Verification. In: Proceedings ATOOLS 1998 Workshop on Tool Support for System Specification, Development and Verification, Malente. Advances in Computing Science. Springer, Heidelberg (1998)
Goerigk, W., Hoffmann, U.: The Compiler Implementation Language ComLisp, Technical Report Verifix/CAU/1.7, CAU Kiel (June 1996)
Goerigk, W., Hoffmann, U.: The Compiling Specification from ComLisp to Executable Machine Code. Technical Report Nr. 9713, Institut für Informatik, CAU Kiel, 106 pgs. (December 1998)
Goerigk, W., Hoffmann, U.: Rigorous Compiler Implementation Correctness: How to Prove the Real Thing Correct. In: Hutter, D., Traverso, P. (eds.) FM-Trends 1998. LNCS, vol. 1641, pp. 122–136. Springer, Heidelberg (1999)
Goerigk, W., Hoffmann, U.: Compiling ComLisp to Executable Machine Code: Compiler Construction. Technical Report Nr. 9812, Institut für Informatik, CAU Kiel, 170 pgs. (October 1998)
Goerigk, W., Hoffmann, U.: Proof Protocols for the Translation from ComLisp to Transputer-Code (1998), http://www.informatik.uni-kiel.de/~wg/-Verifix/proof-protocols/i.ps with i = l1, l2, l3, l4, s2, s3, s4, c3, c4, t4
Goerigk, W.: On Trojan Horses in Compiler Implementations. In: Saglietti, F., Goerigk, W. (eds.) Proc. des Workshops Sicherheit und Zuverlässigkeit softwarebasierter Systeme, IsTec Report ISTec-A.367, Garching (August 1999) ISBN 3-00-004872-3
Goerigk, W.: Compiler Verification Revisited. In: Kaufmann, M., Manolios, P., Moore, J.S. (eds.) Computer Aided Reasoning: ACL2 Case Studies. Kluwer Academic Publishers, Dordrecht (2000)
Goerigk, W.: Proving Preservation of Partial Correctness with ACL2: A Mechanical Compiler Source Level Correctness Proof. In: Kaufmann, M., Moore, J.S. (eds.) Proceeding of the ACL2’ 2000 Workshop, Univ. of Texas, Austin, Texas, U.S.A. (October 2000)
Goerigk, W.: Trusted Program Execution. Habilitation thesis. Techn. Faculty, CAU zu Kiel, 161 pgs. (May 2000)
Goodenough, J.B., Gerhart, S.L.: Toward a theory of test data selection. IEEE Transactions on Software Engineering 1(2), 156–173 (1975)
Goerigk, W., Langmaack, H.: Will Informatics be able to Justify the Construction of Large Computer Based Systems? Inst. f. Informatik u. Prakt. Math., Univ. Kiel, Ber. 2015, 64 pgs. (2001); Appeared as Part I: Realistic Correct Systems Implementation, 28 pgs., and Part II : Trusted Compiler Implementation, 24 pgs. International Journal on Problems in Programming, Kiev, Ukraine (2003), http://www.informatik.uni-kiel.de/~wg/Berichte/-Kiev-Instituts-bericht-2001.ps.gz
Goos, G., Zimmermann, W.: Verification of Compilers. In: Olderog, E.-R., Steffen, B. (eds.) Correct System Design. LNCS, vol. 1710, pp. 201–231. Springer, Heidelberg (1999)
Gaul, T., Zimmermann, W., Goerigk, G.: Construction of Verified Software Systems with Program-Checking: An Application to Compiler Back-ends. In: Pnueli, A., Traverso, P. (eds.) Proc. FloC 1999 International Workshop on Runtime Result Verification, Trento, Italy (1999)
Hoare, C.A.R.: The Verifying Compiler: A Grand Challenge for Computing Research. J. ACM 50(1), 63–69 (2003)
Hoffmann, U.: Compiler Implementation Verification through Rigorous Syntactical Code Inspection. PhD thesis, Technische Fakultät der CAU zu Kiel, Inst. f. Informatik u. Prakt. Math., Ber. 9814, Kiel, 127 pgs. (1998)
Langmaack, H.: Softwareengineering zur Zertifizierung von Systemen: Spezifikations-, Implementierungs-, Übersetzerkorrektheit. Informationstechnik und Technische Informatik it+ti 39(3), 41–47 (1997)
Langmaack, H.: Contribution to Goodenough’s and Gerhart’s Theory of Software Testing and Verification. Relation between Strong Compiler Test and Compiler Implementation Verification. In: Freksa, C., Jantzen, M., Valk, R. (eds.) Foundations of Computer Science. LNCS, vol. 1337, pp. 321–335. Springer, Heidelberg (1997)
Langmaack, H.: What Level of Mathematical Reasoning can Computer Science Demand of a Software Implementer? ENTCS 141(2), 5–32 (2005)
Langmaack, H., Wolf, A.: Reading and Printing in Constructing Fully Verified Compilers. Inst. Inf.Prakt. Math., Chr.-Albr.-Univ.Kiel, Ber. 0306, 113 pgs. (2003)
Moore, J.S.: Piton: A Mechanically Verified Assembly-Level Language. Kluwer Academic Press, Dordrecht (1996)
Pofahl, E.: Methods Used for Inspecting Safety Relevant Software. In: Cullyer, W.J., Halang, W.A., Krämer, B.J. (eds.) High Integrity Programmable Electronic Systems. Dagstuhl, Sem.-Rep. 107, p. 13 (1995)
Steele Jr., G.L.: Common LISP. The Language. Digital Press, Badford (1984)
Thompson, K.: Reflections on Trusting Trust. Communications of the ACM 27(8), 761–763 (1984); Also in ACM Turing Award Lectures: The First Twenty Years 1965-1985. ACM Press, New York (1987), and in Computers Under Attack: Intruders, Worms, and Viruses. ACM Press, New York (1990)
Wirth, N.: Compilerbau, eine Einführung. B.G.Teubner, Stuttgart (1977)
ZSI-Zentralstelle für Sicherheit in der Informationstechnik. IT-Evaluationshandbuch. Bundesanzeiger Verlagsgesellschaft, Köln (1989)
ZSI-Zentralstelle für Sicherheit in der Informationstechnik. IT-Evaluationshandbuch. Bundesanzeiger Verlagsgesellschaft, Köln (1990)
Author information
Authors and Affiliations
Editor information
Editors and Affiliations
Rights and permissions
Copyright information
© 2010 Springer-Verlag Berlin Heidelberg
About this chapter
Cite this chapter
Langmaack, H. (2010). On Trojan Horses of Thompson-Goerigk-Type, Their Generation, Intrusion, Detection and Prevention. In: Dams, D., Hannemann, U., Steffen, M. (eds) Concurrency, Compositionality, and Correctness. Lecture Notes in Computer Science, vol 5930. Springer, Berlin, Heidelberg. https://doi.org/10.1007/978-3-642-11512-7_6
Download citation
DOI: https://doi.org/10.1007/978-3-642-11512-7_6
Publisher Name: Springer, Berlin, Heidelberg
Print ISBN: 978-3-642-11511-0
Online ISBN: 978-3-642-11512-7
eBook Packages: Computer ScienceComputer Science (R0)