TU BRAUNSCHWEIG
| Carl-Friedrich-Gauß-Faculty | Computer Science
Informatikzentrum

Softwareentwicklungspraktikum: SSH Agent on Android

IBR Group(s)CM (Prof. Wolf)
TypePraktikum
Lecturer
PhotoProf. Dr.-Ing. Lars Wolf
Institutsleiter
wolf[[at]]ibr.cs.tu-bs.de
+49 531 3913288
Room 138
Assistants
PhotoDominik Schürmann
Wissenschaftlicher Mitarbeiter
schuermann[[at]]ibr.cs.tu-bs.de
+49 531 3913263
Room 111
PhotoMartin Wegner
Wissenschaftlicher Mitarbeiter
wegner[[at]]ibr.cs.tu-bs.de
+49 531 3913246
Room 131
HiwiLinda Fliss
Time & Place

Übungstermine am IBR

Folgende betreute Übungstermine im IZ 146 werden angeboten:

  • Dienstag, 11:30 bis 13:00 Uhr
Start03.04.2017
Attendees Studierende der Informatik, Wirtschaftsinformatik und Informations-Systemtechnik im vierten Semester
Content

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.

Schedule
[ Subscribe Calendar | Download Calendar ]
DateDescription
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)
ReferencesDokumente
The material is only available to registered attendees. In order to register, you need either an IBR account or a self-activated IBR-y-account. Afterwards you can login to this site (with the function at the top of this page).
[ Newsfeed aller Formate ]
ChapterSlidesMoviesAudioExercises
Kick-Off
pdfpdfpdf
SVN-Einfuehrung
pdfpdfpdf
VorlagenOrganisatorischesSVN-HilfenWeitere Hilfen

last changed 2017-04-04, 21:28 by Dominik Schürmann
printemailtop