Förderjahr 2019 / Project Call #14 / ProjektID: 4533 / Projekt: SIKOSI
Das Konzept steht und die Entwicklung der Prototypen, dem Hauptteil der Entwicklung, schreitet voran.
Aktuelles und Ziele
In dieser Phase beschäftigen wir uns mit der prototypischen Implementierung der Client- und Server-Software.
Wir schaffen somit ein Werkzeug für Software EntwicklerInnen
- in Form von Software Bibliotheken
- mit Anleitungen und Dokumentationen
- mit einer Vielzahl an Demo-Projekten, die für das Verständnis helfen
- um nach dem Ansatz von „Security First“ sichere Systeme zu entwickeln
- um Sicherheit auch in bestehenden Projekten/Programmen zu integrieren
- mit dokumentieren Quellcode, damit die Lösungswege nachvollzogen werden können
Projektumgebung
Damit sich Software EntwicklerInnen auf Anhieb zurecht findet haben wir uns für das Projekt folgende Ordner-Struktur überlegt
- Demo Projekte Client
- Demo Projekte Server
- SDKs Client
- SDKs Server
- Exchange
SDKs Client
Hier sind Software Bibliotheken zu finden, um Daten an sich zu Ver- und Entschlüsseln. Des Weiteren stehen SW-Bibliotheken zur Verfügung um sich gegen einen Server zu authentifizieren um anschließend Schnittstellen (Funktionen) vom Server aufrufen zu können, die eine Autorisierung verlangen.
Authentifizierung bedeutet, der gegenüberliegenden Stelle (Server) mitzuteilen wer der Benutzer der Software ist und dies auch zu beweisen. Dies kann im einfachsten Fall die Übermittlung eines Benutzernamens und eines Passwortes sein, dass im Vorfeld bereits durch eine Registrierung bekannt gegeben wurde. So weiß der Server Bescheid, welcher Benutzer auf das System über die Schnittstellen zugreifen möchte. Damit der Server bei jedem Aufruf einer Schnittstellen Bescheid weiß, welcher Benutzer diesen Aufruf durchführt, stellt dieser bei der Authentifizierung einen Token zu Verfügung über diesen der Client eindeutig identifizierbar ist. Dieser Token hat eine begrenzte Lebensdauer und muss vom Client sicher gespeichert werden. Bei jedem Schnittstellen-Aufruf die der Client durchführt, muss dieser Token mit angegeben werden.
Autorisierung bedeutet, dass Schnittstellen am Server geschützt sind und nur von berechtigten Benutzern aufgerufen werden können. Durch die Angabe des Tokens kann der Server bestimmen welcher User den Aufruf getätigt hat, ob dieser berechtigt ist und somit entscheiden welche Daten für den Client bestimmt sind und welche nicht.
Eine sichere Variante ohne das klassische Benutzer-Passwort-Verfahren bietet das Zero-Knowledge Prinzip. Konkret bedeutet dies, dass sich ein Client gegenüber einem Server oder einem anderen Client authentifizieren kann, ohne dass tatsächlich ein Passwort übermittelt wird. Der Vorteil an einer solchen Methode ist, dass ein möglicher Angriffsvektor entfällt.
SDKs Server
Hier sind Software Bibliotheken zu finden, um Daten an sich zu Ver- und Entschlüsseln. Des Weiteren befinden sich in den Bibliotheken Funktionen um Daten verschlüsselt in einem Speicher (wie z.B. eine Datenbank) abzuspeichern und diese nur für Personen zugänglich und lesbar zu machen, die dazu autorisiert sind. Auch stehen in den Bibliotheken Verfahren zur Verfügung um Benutzer zu registrieren, zu authentifizieren und Schnittstellen zu schützen.
Demo Projekte Client & Demo Projekte Server
Hier befinden sich eine Vielzahl an Demoprojekten, die eine sinnvolle Verwendung der Bibliotheken zeigt und nachvollziehbar macht. Diese dienen entweder als Ausgangsbasis für neue Entwicklungen oder dienen als Nachschlagewerk um die Bibliotheken in eigenen Projekten einbinden zu können.
Exchange
Hier befinden sich Bibliotheken, die gemeinsam von Server und Client verwendet werden. Überwiegend sind dies Datenaustausch-Klassen, in denen Strukturen definiert sind die für den Datenaustausch zwischen Client und Server benötigt werden.
Code-Dokumentation und Code-Qualität
Ein wichtiger Punkt ist es, dass der entwickelte Code eine sehr gute Qualität aufweißt. Wir achten hier darauf, dass jede Klasse, jede Methode und komplexe Codestellen bereits im Quellcode dokumentiert und kommentiert sind. Sämtliche Lösungsansätze können somit einfach nachvollzogen werden. Wir verwenden hier zusätzliche externe Tools, um den Code auf Qualität zu überprüfen.
Next Steps
Die geplanten nächsten Schritte sind wie folgt
- Abschluss und Finalisierung der Prototypen
- Evaluierung der Prototypen
- Überprüfung auf Schwachstellen