Proof Carrying Code (PCC) ist eine Technik zum Ausschluss von Sicherheitsfehlern in Maschinencode. Statt Laufzeittests durchzuführen, wird statisch ein Beweis (Zertifikat) geprüft. Um zu garantieren, dass ein solches System nur sicheren Code akzeptiert, formalisieren und verifizieren wir PCC in Isabelle/HOL, einem Beweissystem für höherstufige Logik. Wir beweisen, dass zertifizierter Code sicher ist, und unter welchen Voraussetzungen sich sicherer Code zertifizieren lässt. Der Hauptbeitrag ist ein generischer Verifikationsbedingungsgenerator (VCG), den wir für eine Teilsprache von Java-Bytecode instanziieren. Dieser VCG inspiziert Bytecode, der mit Formeln einer eigens geschaffenen Zusicherungssprache annotiert ist, und liefert Beweisverpflichtungen, die arithmetischen Überlauf und falsche Annotationen ausschließen. Annotationen können wir manuell oder mittels angebundener Analysatoren für Typen und Intervalle einfügen. Zur Gewinnung und Überprüfung der Zertifikate setzen wir wiederum Isabelle/HOL ein.
«
Proof Carrying Code (PCC) ist eine Technik zum Ausschluss von Sicherheitsfehlern in Maschinencode. Statt Laufzeittests durchzuführen, wird statisch ein Beweis (Zertifikat) geprüft. Um zu garantieren, dass ein solches System nur sicheren Code akzeptiert, formalisieren und verifizieren wir PCC in Isabelle/HOL, einem Beweissystem für höherstufige Logik. Wir beweisen, dass zertifizierter Code sicher ist, und unter welchen Voraussetzungen sich sicherer Code zertifizieren lässt. Der Hauptbeitrag ist e...
»