Zur Seitenansicht

Titelaufnahme

Links
Zusammenfassung

Frühere Studien haben empirisch offenbart, dass Fehlbenutzungen von kryptographischen APIs in Softwareanwendungen weitverbreitet sind. Dies geschieht vor allem, weil Software-Entwickler_innen aufgrund schlechten API-Designs und fehlenden Kryptographiewissens Probleme bekommen, wenn sie versuchen kryptographische Features zu implementieren. Die Literatur liefert mehrere Ansätze und Vorschläge diese Probleme zu lösen, aber alle scheitern schlussendlich auf die eine oder andere Weise daran die Anforderungen der Entwickler_innenzu erfüllen. Das Resultat ist eine insgesamt lückenhafte Landschaft verschiedener nur wenigkomplementärer Ansätze.In dieser Arbeit adressieren wir das Problem kryptographischer Fehlbenutzungen systematischer durch CogniCrypt. CogniCrypt integriert verschiedene Arten von Tool Supportin einen gemeinsamen Ansatz, der Entwickler_innen davon befreit wissen zu müssen, wie diese APIs benutzt werden müssen. Zentral für unseren Ansatz ist CrySL, eine Beschreibungssprache,die die kognitive Lücke zwischen Kryptographie-Expert_innen und Software-Entwickler_innenüberbrückt. CrySL ermöglicht es Kryptographie-Expert_innen zu spezifizeren, wie die APIs,die sie bereitstellen, richtig benutzt werden. Wir haben einen Compiler für CrySL implementiert, der es erlaubt auf CrySL-Spezifikationen aufbauenden Tool Support zu entwickeln. Wir haben weiterhin die statische Analyse CogniCrypt_SAST und den Code-Generator CogniCrypt_GEN entwickelt. Schlussendlich haben wir CogniCrypt prototypisch implementiert und diesen Prototyp in einem kontrollierten Experiment evaluiert.

Abstract

Prior research has empirically laid bare the widespread misuse of cryptographic APIs in software applications. Developers struggle with bad API design and lack of cryptographic knowledge when they attempt to implement cryptographic features into their applications. Several approaches and tools have been proposed to solve this issue, but all fall short in addressing developers needs in one way or another. This results in a landscape of patchy solutions. In this thesis, we address the issue of cryptographic misuse more systematically through CogniCrypt. CogniCrypt integrates different kinds of tool support into a unified approach in order to lift the burden of needing to know how to use cryptographic APIs from the developer. Front and center in our approach is CrySL, a specification language for bridging the cognitive gap between cryptography experts and developers. CrySL enables cryptography experts to specify the secure usage of the cryptographic APIs they develop. We have implemented a compiler for CrySL that facilitates building API tool support on top of CrySL specifications. We have further devised the context-sensitive and flow-sensitive demand-driven static analysis CogniCrypt_SAST and the code generator CogniCrypt_GEN that proactively assists developers in using Java cryptographic APIs correctly. We have implemented CogniCrypt as an Eclipse plugin that combines CogniCryptsastand CogniCryptgen and conducted a controlled experiment to evaluate the tools effectiveness.

Statistik