Konzeption und Implementierung einer Schnittstelle zur ... ?· Bachelorarbeit Konzeption und Implementierung…

Download Konzeption und Implementierung einer Schnittstelle zur ... ?· Bachelorarbeit Konzeption und Implementierung…

Post on 04-Jun-2018

212 views

Category:

Documents

0 download

TRANSCRIPT

  • Bachelorarbeit

    Konzeption und Implementierungeiner Schnittstelle zur

    Sicherheitsanalyse mit CARiSMAim Kontext von

    Serviceorientierten Architekturen

    Andreas Beckmann16. Januar 2014

    Gutachter: Prof. Dr. Jan JurjensDipl.-Inform. Dipl.-Math. Sebastian Pape

    Prof. Dr. Jan Jurjens Lehrstuhl 14 Software EngineeringFakultat InformatikTechnische Universitat DortmundOtto-Hahn-Strae 1444227 Dortmundhttp://www-jj.cs.uni-dortmund.de/secse

  • Andreas Beckmannandreas.beckmann@udo.eduMatrikelnummer: 133677Studiengang: Bachelor Angewandte Informatik

    BachelorarbeitThema: Konzeption und Implementierung einer Schnittstelle zur Sicherheitsanalysemit CARiSMA im Kontext von Serviceorientierten Architekturen

    Eingereicht: 16. Januar 2014

    Betreuer: Christian Wessel, Sebastian Pape

    Prof. Dr. Jan Jurjens Lehrstuhl 14 Software EngineeringFakultat InformatikTechnische Universitat DortmundOtto-Hahn-Strae 1444227 Dortmund

  • i

  • ii

  • iii

    Ehrenwortliche Erklarung

    Ich erklare hiermit ehrenwortlich, dass ich die vorliegende Arbeit selbststandig ange-fertigt habe; die aus fremden Quellen direkt oder indirekt ubernommenen Gedankensind als solche kenntlich gemacht.

    Die Arbeit wurde bisher keiner anderen Prufungsbehorde vorgelegt und auch nochnicht veroffentlicht.

    Dortmund, den 16. Januar 2014

    Andreas Beckmann

  • iv

  • v

    Kurzfassung

    Im Rahmen guten Softwareengineerings stellen Modellierungssprachen wie UML ei-ne unverzichtbare Hilfe dar. Sie erlauben es, Informationen uber die verschiedens-ten Aspekte einer Software- oder Systemlosung schnell und verstandlich zwischenKommunikationspartnern auszutauschen. Durch die Entwicklung von UML-Erwei-terungen wie UMLsec ist es moglich, bereits bei der Modellierung von System-und Softwarelosungen Sicherheitsanforderungen festzulegen. Diese Sicherheitsanfor-derungen konnen im Folgenden durch Sicherheitsanalysewerkzeuge wie CARiSMAauf das Einhalten von gewunschten Sicherheitseigenschaften untersucht werden. Si-cherheitsanalysewerkzeuge wie CARiSMA weisen jedoch das Problem auf, dass sienicht in automatisierte Prozesse integriert werden konnen, da sie eine manuelle Ein-gabe des Nutzers benotigen. Im Rahmen dieser Arbeit wird dieser Mangel fur dasSicherheitsanalysewerkzeug CARiSMA behoben und somit eine Moglichkeit zur In-tegration in automatisierte Prozesse geschaffen. Genauer wird die Konzeption undImplementierung einer Schnittstelle zu CARiSMA im Kontext von serviceorientier-ten Architekturen durchgefuhrt und beschrieben. Hierzu wird CARiSMA aus derEntwicklungsumgebung Eclipse herausgelost und in Form eines OSGi-Bundles alseigenstandiger uber SOAP-Anfragen erreichbarer Webservice zur Verfugung gestellt.

  • vi

  • vii

    Abstract

    The Unified Modeling Language is an indispensable tool in the context of goodsoftware engineering. It provides a way to communicate various aspects of a soft-ware concept to other parties in an understandable and compact format. Due tothe development of UML extensions like UMLsec it is possible to define securityrequirements inside an UML model. Using a model checker like CARiSMA allows tocheck those requirements against a set of desired security properties. However, modelcheckers such as CARiSMA have the shortcoming that they cannot be integratedinto automated processes, since they require manual input by the user. This thesiswill address these shortcomings for the model checker CARiSMA, thus creating apossibility to integrate it into automated processes. More specifically, the thesis willcover the design and implementation of the integration of CARiSMA as a webserviceinto a service-oriented architecture.

  • viii

  • INHALTSVERZEICHNIS ix

    Inhaltsverzeichnis

    Abbildungsverzeichnis xiii

    Tabellenverzeichnis xv

    Quellcodeverzeichnis xvii

    1 Einleitung 11.1 Motivation und Hintergrund . . . . . . . . . . . . . . . . . . . . . . . 11.2 Vorarbeiten/Related Work . . . . . . . . . . . . . . . . . . . . . . . . 21.3 Aufbau der Arbeit . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3

    2 Aufgabenstellung 52.1 Konzeption . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52.2 Implementierung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62.3 Ziele . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6

    2.3.1 Muss-Ziele . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62.3.2 Soll-Ziele . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72.3.3 Kann-Ziele . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8

    3 Grundlagen 113.1 Unified Modeling Language . . . . . . . . . . . . . . . . . . . . . . . 113.2 UMLsec . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 113.3 CARiSMA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11

    3.3.1 Check . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 123.3.2 Check-Registry . . . . . . . . . . . . . . . . . . . . . . . . . . 123.3.3 Model-Type-Registry . . . . . . . . . . . . . . . . . . . . . . . 12

    3.4 Serviceorientierte Architekturen . . . . . . . . . . . . . . . . . . . . . 133.4.1 Webservices . . . . . . . . . . . . . . . . . . . . . . . . . . . . 133.4.2 SOAP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 133.4.3 WSDL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 143.4.4 REST . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 153.4.5 Vergleich von SOAP und REST . . . . . . . . . . . . . . . . . 16

    3.5 OSGi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 163.5.1 Eclipse Equinox . . . . . . . . . . . . . . . . . . . . . . . . . . 173.5.2 Distributed OSGi . . . . . . . . . . . . . . . . . . . . . . . . . 173.5.3 Declerative OSGi Services . . . . . . . . . . . . . . . . . . . . 18

    3.6 SQLite-Datenbank . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18

  • x INHALTSVERZEICHNIS

    3.7 Verwendete Werkzeuge . . . . . . . . . . . . . . . . . . . . . . . . . . 18

    3.7.1 SoapUI . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18

    3.7.2 RESTClient . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18

    4 Konzept 19

    4.1 Anwendungsfalldiagramm . . . . . . . . . . . . . . . . . . . . . . . . 19

    4.2 Aktivitatsdiagramme . . . . . . . . . . . . . . . . . . . . . . . . . . . 29

    4.2.1 Run Analysis . . . . . . . . . . . . . . . . . . . . . . . . . . . 29

    4.2.2 Get Available Checks . . . . . . . . . . . . . . . . . . . . . . . 29

    4.2.3 Authenticate User . . . . . . . . . . . . . . . . . . . . . . . . 29

    4.2.4 Create User . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30

    4.2.5 Read User . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32

    4.2.6 Update User . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32

    4.2.7 Delete User . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32

    4.2.8 Create File . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33

    4.2.9 Read File . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33

    4.2.10 Update File . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35

    4.2.11 Delete File . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36

    4.3 Kommunikation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37

    4.3.1 WSDL-Datei . . . . . . . . . . . . . . . . . . . . . . . . . . . 37

    4.3.2 REST-Anfragen . . . . . . . . . . . . . . . . . . . . . . . . . . 39

    4.4 Klassendiagramm . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40

    4.4.1 CarismaWS . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40

    4.4.2 Gateway . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42

    4.4.3 RestInterface . . . . . . . . . . . . . . . . . . . . . . . . . . . 42

    4.4.4 RestImpl . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42

    4.4.5 Controller . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42

    4.4.6 WSConnector . . . . . . . . . . . . . . . . . . . . . . . . . . . 42

    4.4.7 DatabaseInterface . . . . . . . . . . . . . . . . . . . . . . . . . 42

    4.4.8 DatabaseHelper . . . . . . . . . . . . . . . . . . . . . . . . . . 42

    4.5 Architektur . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42

    4.5.1 Komponente Kommunikationsschnittstelle . . . . . . . . . . . 43

    4.5.2 Komponente Controller . . . . . . . . . . . . . . . . . . . . . . 43

    4.5.3 Komponente Datenbank . . . . . . . . . . . . . . . . . . . . . 44

    4.5.4 Komponente CARiSMA . . . . . . . . . . . . . . . . . . . . . 44

    4.6 Sicherheit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44

    4.6.1 Abhoren . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44

    4.6.2 Integritat . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44

    4.6.3 Authentifizierung . . . . . . . . . . . . . . . . . . . . . . . . . 44

    4.6.4 Wiedereinspielattacke . . . . . . . . . . . . . . . . . . . . . . . 45

    4.6.5 Auslesen der Datenbank . . . . . . . . . . . . . . . . . . . . . 45

    4.6.6 Zugriff auf fremde Dateien . . . . . . . . . . . . . . . . . . . . 45

  • INHALTSVERZEICHNIS xi

    5 Implementierung 475.1 Terminal . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47

    5.1.1 Starten der Equinox-Instanz . . . . . . . . . . . . . . . . . . . 475.1.2 Kommandozeilenaufrufe . . . . . . . . . . . . . . . . . . . . . 475.1.3 Kommunikation mit CARiSMA . . . . . . . . . . . . . . . . . 485.1.4 Starten CARiSMAs . . . . . . . . . . . . . . . . . . . . . . . . 48

    5.2 Webservice . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 485.2.1 Kommunikationsschnittstellen . . . . . . . . . . . . . . . . . . 485.2.2 Controller . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 505.2.3 Datenbank . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 505.2.4 CARiSMA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50

    5.3 SVN-Hook . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 505.4 Nachinstallieren . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 515.5 Implementierung der Sicherheitsanforderungen . . . . . . . . . . . . . 51

    6 Validierung 536.1 Tests . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53

    6.1.1 Teststrategie . . . . . . . . . . . . . . . . . . . . . . . . . . . . 536.1.2 Komponenten-Tests . . . . . . . . . . . . . . . . . . . . . . . . 536.1.3 Systemtest . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54

    6.2 Qualitatssicherung . . . . . . . . . . . . . . . . . . . . . . . . . . . . 556.2.1 Uberprufung durch Checkstyle . . . . . . . . . . . . . . . . . . 556.2.2 Dokumentation . . . . . . . . . . . . . . . . . . . . . . . . . . 55

    7 Fazit & Ausblick 577.1 Fazit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57

    7.1.1 Evaluation der Ziele . . . . . . . . . . . . . . . . . . . . . . . 577.2 Ausblick . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60

    A Weitere Informationen 61

    Literaturverzeichnis 93

  • xii INHALTSVERZEICHNIS

  • ABBILDUNGSVERZEICHNIS xiii

    Abbildungsverzeichnis

    3.1 Elemente einer WSDL-Datei [FZ09, Abbildung 3.4] . . . . . . . . . . 153.2 Struktur der OSGi-Plattform [All13] . . . . . . . . . . . . . . . . . . 17

    4.1 Anwendungsfalldiagramm . . . . . . . . . . . . . . . . . . . . . . . . 204.2 Aktivitatsdiagramm des Anwendungsfalles

    Run Analysis . . . . . . 30

    4.3 Aktivitatsdiagramm des AnwendungsfallesGet Available Checks . . 31

    4.4 Aktivitatsdiagramm des AnwendungsfallesAuthenticate User . . . . 31

    4.5 Aktivitatsdiagramm des AnwendungsfallesCreate User . . . . . . . 32

    4.6 Aktivitatsdiagramm des AnwendungsfallesRead User . . . . . . . . 33

    4.7 Aktivitatsdiagramm des AnwendungsfallesUpdate User . . . . . . . 33

    4.8 Aktivitatsdiagramm des AnwendungsfallesDelete User . . . . . . . 34

    4.9 Aktivitatsdiagramm des AnwendungsfallesCreate File . . . . . . . . 34

    4.10 Aktivitatsdiagramm des AnwendungsfallesRead File . . . . . . . . 35

    4.11 Aktivitatsdiagramm des AnwendungsfallesUpdate File . . . . . . . 36

    4.12 Aktivitatsdiagramm des AnwendungsfallesDelete File . . . . . . . . 37

    4.13 Klassendiagramm . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 414.14 Architektur der Komponenten . . . . . . . . . . . . . . . . . . . . . . 43

  • xiv ABBILDUNGSVERZEICHNIS

  • TABELLENVERZEICHNIS xv

    Tabellenverzeichnis

    4.1 Beschreibung des AnwendungsfallesRun Analysis . . . . . . . . . . 21

    4.2 Beschreibung des AnwendungsfallesGet Available Checks . . . . . . 22

    4.3 Beschreibung des AnwendungsfallesAuthenticate User . . . . . . . 22

    4.4 Beschreibung des AnwendungsfallesCreate User . . . . . . . . . . . 23

    4.5 Beschreibung des AnwendungsfallesRead User . . . . . . . . . . . . 24

    4.6 Beschreibung des AnwendungsfallesUpdate User . . . . . . . . . . 24

    4.7 Beschreibung des AnwendungsfallesDelete User . . . . . . . . . . . 25

    4.8 Beschreibung des AnwendungsfallesCreate File . . . . . . . . . . . 26

    4.9 Beschreibung des AnwendungsfallesRead File . . . . . . . . . . . . 26

    4.10 Beschreibung des AnwendungsfallesUpdate File . . . . . . . . . . . 27

    4.11 Beschreibung des AnwendungsfallesDelete File . . . . . . . . . . . 28

    6.1 Testuberdeckungsgrade der Klassen . . . . . . . . . . . . . . . . . . . 546.2 Testuberdeckungsgrade der Bundles . . . . . . . . . . . . . . . . . . . 55

  • xvi TABELLENVERZEICHNIS

  • QUELLCODEVERZEICHNIS xvii

    Quellcodeverzeichnis

    A.1 Quellcode der Controller-Klasse . . . . . . . . . . . . . . . . . . . . . 61A.2 Quellcode der Gateway-Klasse . . . . . . . . . . . . . . . . . . . . . . 70A.3 Quellcode des RestInterface-Interfaces . . . . . . . . . . . . . . . . . . 86A.4 Quellcode des DatabaseInterface-Interfaces . . . . . . . . . . . . . . . 89

  • xviii QUELLCODEVERZEICHNIS

  • KAPITEL 1. EINLEITUNG 1

    1 Einleitung

    Im Folgenden wird die Arbeit motiviert und eine Reihe von wichtigen Hintergrund-informationen erlautert. Sie wird zu Vorarbeiten in Bezug gesetzt und verwandteArbeiten werden betrachtet. Im Anschluss wird der Aufbau der Arbeit dargestellt.

    1.1 Motivation und Hintergrund

    Viele moderne Softwareprojekte weisen eine deutlich gestiegene Komplexitat auf.Dies fuhrt dazu, dass ein unorganisierter und undokumentierter Versuch, ein sol-ches Softwareprojekt zu realisieren, einem deutlich hoheren Risiko ausgesetzt ist, zuscheitern, als ein wohlorganisiertes und dokumentiertes Projekt.Als ein unverzichtbares Werkzeug fur den gesamten Softwareentwicklungsprozess hatsich hier die Unified Modeling Language (UML) [BRJ06], eine abstrakte Modellie-rungssprache, welche beispielsweise bei einer modellbasierten Softwareentwicklunggenutzt wird, herausgestellt. Mit Hilfe der UML lassen sich Informationen schnellzwischen allen Projektbeteiligten austauschen, sowie wichtige architektonische Rah-menbedingungen festlegen. Auch erlaubt sie wichtige Ablaufe und Strukturen infruhen Entwicklungsphasen festzulegen und im Anschluss deren Einhaltung zu uber-prufen.So ist es durch die Entwicklung der UML-Erweiterung UMLsec [Jur05] moglich,Sicherheitseigenschaften in UML-Modelle zu integrieren und gegen bestehende Si-cherheitsanforderungen zu uberprufen. Dies ist besonders bei der Betrachtung vonstetig wachsenden Kosten, die Ausfalle oder die Kompromittierung eines Systemesnach...

Recommended

View more >