TU BRAUNSCHWEIG
| Carl-Friedrich-Gauß-Fakultät | Informatik
Informatikzentrum

Softwareentwicklungspraktikum: SSH Agent on Android

IBR Gruppe(n)CM (Prof. Wolf)
ArtPraktikum
Dozent
PhotoProf. Dr.-Ing. Lars Wolf
Institutsleiter
wolf[[at]]ibr.cs.tu-bs.de
+49 531 3913288
Raum 138
Assistenten
PhotoDominik Schürmann
Wissenschaftlicher Mitarbeiter
schuermann[[at]]ibr.cs.tu-bs.de
+49 531 3913263
Raum 111
PhotoMartin Wegner
Wissenschaftlicher Mitarbeiter
wegner[[at]]ibr.cs.tu-bs.de
+49 531 3913246
Raum 131
HiwiLinda Fliss
Ort & Zeit

Übungstermine am IBR

Folgende betreute Übungstermine im IZ 146 werden angeboten:

  • Dienstag, 11:30 bis 13:00 Uhr
Beginn03.04.2017
Hörerkreis Studierende der Informatik, Wirtschaftsinformatik und Informations-Systemtechnik im vierten Semester
Inhalt

Einleitung

SSH bezeichnet ein Netzwerkprotokoll mit dem man auf eine sichere Art und Weise eine verschlüsselte Netzwerkverbindung mit einem entfernten Gerät herstellen kann. Häufig wird diese Methode verwendet, um lokal eine entfernte Kommandozeile verfügbar zu machen, das heißt, auf einer lokalen Konsole werden die Ausgaben der entfernten Konsole ausgegeben und die lokalen Tastatureingaben werden an den entfernten Rechner gesendet.

SSH auf Linux

Wie in Abbildung 1 zu sehen, gibt es unter Linux hierfür den "ssh"-Client und "sshd"-Server-Daemon. Neben einer Passwort-basierten Authentisierung, können auch sogenannte Public-Key-Verfahren genutzt werden. Die Verwaltung solcher Schlüssel findet traditionell im "ssh-agent" statt. Man kann aber auch einen anderen SSH Agent einstellen und die Schlüssel beispielsweise von GnuPG durch den "gpg-agent" verwalten lassen.


Abbildung 1: SSH Agent auf Linux


SSH auf Android

Unter Android existiert mit ConnectBot eine der wichtigsten quelloffenen SSH-Client-Implementierungen. Eine sehr gute proprietäre Alterantive ist JuiceSSH, von dem man sich weitere Features abgucken könnte. In ConnectBot findet die Verwaltung von Schlüsseln in ConnectBot selber statt. Im Moment gibt es keine Möglichkeit andere Apps als SSH Agent zu nutzen (siehe Abbildung 2).


Abbildung 2: Aktuelle Android-Implementierung


Ziel dieses SEP

In diesem SEP soll ConnectBot so erweitert werden, sodass andere Apps als SSH Agent genutzt werden können. Des Weiteren sollen zwei SSH Agents implementiert werden, wie in Abbildung 3:

  • Ein Agent soll auf der Android Keystore API basieren. Schlüssel die mit Hilfe dieser API abgelegt werden sind besonders durch das Betriebssystem geschützt, wenn es das Gerät unterstützt sogar durch Security Hardware.
  • OpenKeychain, eine App die z.B. Public-Key-Kryptographie für E-Mails unterstützt, soll erweitert werden sodass auch diese als SSH Agent von ConnectBot genutzt werden kann. Dies würde auch die Nutzung von NFC Security Tokens ermöglichen, wie beispielsweise dem YubiKey NEO (Ich werde innerhalb des SEPs solche Security Tokens ausgeben).


Abbildung 3: Ziel dieses SEP


Ablauf

Die Anzahl an Codezeilen in diesem SEP wird im Vergleich zu anderen Projekten eher gering ausfallen. Stattdessen muss man sich hier mehr Hintergrundwissen aneignen als in anderen Projekten. Außerdem soll der produzierte Code in die Originalprojekte zurückfließen und veröffentlicht werden. Ihr arbeitet also an "Real-World Source Code". Damit die Komplexität zu meistern ist, schlage ich folgendes Vorgehen vor:

  1. Einarbeitung in Android-APIs, Beispiele programmieren
  2. Einen Prototyp-SSH-Client unter Nutzung der sshlib entwickeln.
    1. Dieser soll so einfach wie möglich gehalten werden. Es geht nur darum zu verstehen wie man eine einfache Passwort-gesicherte Verbindung zu einem SSH-Server herstellen kann.
    2. Hilfreich dazu: ConnectBot Source Code lesen, im Speziellen die SSH-Klasse
    3. Also: Connection mit Password-Authentication herstellen und Response anzeigen
  3. Simples Key Management für Public Keys in den Prototypen einbauen
    1. Erst mit hardcoded Public Keys
    2. Dann mit User Interface und Key-Liste
    3. Abschließend unter Nutzung der Keystore API
  4. API für SSH Agent entwickeln
    1. ConnectBot anpassen damit der Prototyp als externer SSH Agent genutzt wird
    2. Pull Request erstellen an unseren ConnectBot fork
  5. OpenKeychain als SSH Agent
    1. OpenKeychain anpassen damit es als SSH Agent gentutzt werden kann
    2. Pull Request erstellen an OpenKeychain
  6. Test des Gesamtsystems
  7. Währenddessen: Pflege der SEP-Dokumente (Angebot, Pflichtenheft, Fachentwurf, ...)

Anmerkung zur Nutzung SVN/Git

Der von euch erstellte Code und die Dokumente müssen im SVN des ISF verwaltet werden. Nur für die Pull Requests an ConnectBot und OpenKeychain soll Git verwendet werden.

Termin(e)
[ Kalender abonnieren | Kalender herunterladen ]
DatumBeschreibung
09.02.2017, 13:15 UhrVorstellung der Projekte (PK 2.2)
03.04.2017, 13:00 UhrIBR: Kick-off (IZ 105)
19.04.2017, 23:59 UhrAbgabe Angebot
10.05.2017, 23:59 UhrAbgabe Pflichtenheft und Abnahmetestspezifikation
12.05.2017, 23:59 UhrIBR-CM: Abgabe Folien
24.05.2017, 15:00 UhrZwischenpräsentation Prototyp (IZ 160)
31.05.2017, 23:59 UhrAbgabe Fachentwurf
21.06.2017, 23:59 UhrAbgabe Technischer Entwurf
05.07.2017, 23:59 UhrAbgabe Testdokumentation
11.07.2017, 23:59 UhrIBR-CM: Abgabe Poster zum Druck
13.07.2017, 13:00 UhrTag der jungen Software Entwickler (TDSE)
Literatur/LinksDokumente
Diese Unterlagen sind nur für registrierte Teilnehmer zugänglich. Um sich zu registrieren, benötigen Sie einen Account: entweder einen IBR-Account, den Sie vielleicht im Rahmen einer Arbeit am Institut bereits erhalten haben, oder einen selbst aktivierten IBR-y-Account. Anschließend melden Sie sich über die Login-Funktion (oben auf dieser Seite) an.
[ Newsfeed aller Formate ]
KapitelFolienFilmeAudioÜbungen
Kick-Off
pdfpdfpdf
SVN-Einfuehrung
pdfpdfpdf
VorlagenOrganisatorischesSVN-HilfenWeitere Hilfen

aktualisiert am 04.04.2017, 21:28 von Dominik Schürmann
printemailtop