Grundlagen der Computersicherheit und Softwaretests: Kryptographie und Qualitätssicherung
Eingeordnet in Informatik
Geschrieben am in
Deutsch mit einer Größe von 7,19 KB
Computersicherheit: Grundlagen und Schutz
Computersicherheit ist der Bereich der Informatik, der sich auf den Schutz der Computer-Infrastruktur und aller damit verbundenen Komponenten (einschließlich Informationen) konzentriert. Hierfür existiert eine Reihe von Standards, Protokollen, Methoden, Regeln, Tools und Gesetzen, um Gefahren für die Infrastruktur oder Informationen zu minimieren.
Was ist Kryptographie?
Kryptographie wird als eine Reihe von Techniken verstanden, die Probleme der Informationssicherheit lösen, nämlich:
- Authentizität
- Integrität
- Vertraulichkeit
- Nachweisbarkeit
Unterschied zwischen symmetrischer und asymmetrischer Kryptographie
Der wesentliche Unterschied liegt in den Schlüsseln:
- Bei der symmetrischen Kryptographie wird derselbe Schlüssel zum Verschlüsseln und Entschlüsseln verwendet. Hierzu gehören Blockchiffren, Stromchiffren und Hash-Funktionen.
- Bei der asymmetrischen Kryptographie wird ein Schlüssel zum Verschlüsseln und ein anderer zum Entschlüsseln verwendet.
Sicherheitsaspekte und Benutzerakzeptanz
Endanwender nehmen Sicherheit oft nicht wahr, wenn sie ein System nutzen, und ignorieren daher manchmal Sicherheitsaspekte. Diese können als lästig empfunden werden, da Sicherheit oft im Gegensatz zu Komfort und Benutzerfreundlichkeit beim Systemdesign steht. Deshalb haben Nutzer manchmal ein negatives Bild von Sicherheit, da sie diese als störend empfinden und ihre Fähigkeit zur Erfüllung einer bestimmten Aufgabe einschränkt. In einer sicheren Umgebung können Benutzer mit Aufgaben konfrontiert werden, die unangenehm sind (z. B. regelmäßiges Ändern von Passwörtern), was die durchführbaren Operationen und die erlaubten Ressourcen einschränken kann.
Warum Softwaretests in der Entwicklung wichtig sind
Da ernsthafte Softwareentwicklungsprozesse in den meisten Fällen zu Chaos neigen, ist es notwendig, Qualitätssicherungsprozesse einzubeziehen, damit die Anforderungen des Kunden ordnungsgemäß erfüllt werden.
Andererseits sind die Kosten für die Behebung eines Fehlers, der in fortgeschrittenen Phasen der Softwareentwicklung (wie der Implementierung) entdeckt wird, sehr hoch, sowohl in Bezug auf das Projektbudget als auch auf den Zeitplan. Aus diesem Grund setzen wir Softwaretests seit Beginn der Entwicklung ein.
Definition und Durchführung von Tests
Der Test beinhaltet die Durchführung von Software-Systemoperationen unter kontrollierten Bedingungen und die Bewertung der Ergebnisse. Kontrollierte Bedingungen können normal oder abnormal sein. Der Test kann absichtlich die Programmausführung erzwingen, um festzustellen, ob Fehler auftreten, wenn sie nicht auftreten sollten, oder ob bestimmte Ereignisse eintreten, wenn sie sollten.
Vorteile der Integration von Tests in die Softwareentwicklung
Die Hauptvorteile, die Tests in die Softwareentwicklung bringen, sind:
- Reduzierung der Fehlerwahrscheinlichkeit: Wenn eine Kundenanforderung eine Funktionserweiterung erfordert und bestehende Funktionen dadurch beeinträchtigt werden, kann man folgern, dass die neue Funktionalität fehlerhaft ist, ohne Komponenten ändern zu müssen, die zuvor funktionierten.
- Reduzierung von Mängeln in bereits implementierter Funktionalität.
- Bessere Dokumentation: Es ist besser, einige prägnante und leicht verständliche Zeilen „Testcode“ zu haben, als Zeile für Zeile den Code durchgehen zu müssen, um zu verstehen, warum eine bestimmte Softwarekomponente so funktioniert.
- Reduzierung der Änderungskosten: Mängel werden vermieden, bevor sie bis zum Ende der Softwareentwicklung entdeckt werden.
- Ermöglichung der Umverteilung: Wenn Funktionen aufgrund von Mängeln in Sicherheit, Leistung oder weil sie die Kundenerwartungen nicht erfüllen, neu implementiert werden müssen, liefern die Testergebnisse Nachweise für die Funktionalität. Dies ermöglicht die Entwicklung einer Lösung, die den Spezifikationen entspricht, da der Test Akzeptanzkriterien enthält.
- Begrenzung der implementierten Funktionen: Programmierer verlieren oft Zeit mit Details, die nicht in der Spezifikation stehen. Durch den Test weiß der Programmierer, welche Funktionalität er programmieren und testen muss, wodurch er auf die vom Testdesigner festgelegten Grenzen beschränkt wird.
- Beschleunigung der Entwicklung: Wenn Funktionen hinzugefügt werden und die Funktionalität fehlschlägt, kann man durch vorhandene Nachweise für frühere Funktionalität sofort ausschließen, dass diese fehlerhaft ist, und sich auf die neue Funktionalität konzentrieren.
Wer sollte testen?
Tests sollten von anderem Personal entworfen und durchgeführt werden als das Personal, das die Analyse der Geschäftsprozesse leitete. Auch die Personen, die das Design erstellten, müssen sich von denen unterscheiden, die die Programmierung durchführten. In der Softwareentwicklung gibt es mehrere Rollen im Projektteam:
- Analysten, Designer und Entwickler: Diese Gruppe hat einen kreativen Standpunkt, da sie die Softwarelösung für den Kunden entwerfen, analysieren und codieren. Aufgrund dieser Situation übersehen sie möglicherweise Mängel in der von ihnen erstellten Software.
- Tester: Sie konzentrieren sich auf das Verständnis der Geschäftsregeln, Anforderungen, Use Cases und aller Dinge, die das Geschäft betreffen. Diese Gruppe hat die am wenigsten destruktive Sichtweise, da sie wissen, dass ein bestimmter Programmteil bestimmte Funktionen erfüllen soll, und versuchen, Fehler in der Arbeit anderer zu finden.
Was ist Software-Testing?
Die Prozesse, die darauf abzielen, die Qualität eines Softwareprodukts zu überprüfen und offenzulegen. Sie werden verwendet, um mögliche Mängel in der Implementierung, Qualität oder Nutzbarkeit eines Programms zu identifizieren.
Ziele des Testens
- Der Beweis ist der Prozess der Ausführung eines Programms mit der Absicht, einen Fehler zu entdecken.
- Ein guter Testfall ist einer, der eine hohe Wahrscheinlichkeit hat, einen bisher nicht gefundenen Fehler zu entdecken.
- Ein Test ist erfolgreich, wenn er einen bisher unentdeckten Fehler aufdeckt. Man testet nicht nur den Code, sondern auch die Dokumentation und den Support.
Werkzeuge für Softwaretests
Softwaretest-Tools helfen Entwicklungsteams dabei, Fehler in der Software zu untersuchen, die Funktionalität der Systeme zu überprüfen und sicherzustellen, dass die entwickelte Software sicher und zuverlässig ist. Es gibt spezielle Werkzeuge für jede Phase eines Softwareentwicklungsprojekts. Einige Anbieter solcher Werkzeuge bieten eine integrierte Suite, die sowohl das Testen als auch die Entwicklung der Software für ein gesamtes Projekt unterstützt, beginnend bei der Beteiligung bis zur Live-Performance des Systems. Andere Hersteller konzentrieren sich jedoch nur auf einen Teil der Anwendungsentwicklung.