Was ist AChord

AChord ist ein seit mehreren Jahren bestehendes Projekt am Fachbereich Informatik der Hochschule Darmstadt. AChord ist eine offene, plattformunabhängige und dezentrale Kommunikationstechnologie, die Nachrichten und Dateien ’Ende-zu-Ende’ verschlüsselt, abhörsicher überträgt und sicher speichert, um zum Schutz der Privatsphäre der Nutzer bestmöglich beizutragen.

Auf Basis der AChord-Technologie wurde acloud, ein Dateisystem für die Cloud implementiert. Damit können Firmen nun einen sicheren Cloud-Speicher realisieren, der

Somit hat kein Administrator Zugriff auf alle Dateiteile und selbst wenn ein Verschlüsselungsalgorithmus kompromittiert werden würde, keine Möglichkeit die Daten zu lesen.

Was ist das Besondere an acloud

Der Fokus der Entwicklung war und ist Sicherheit und Privatheit. Jede Komponente wird unter dem Motto Security by Design entwickelt, es werden also keine bestehenden Lösungen um Sicherheit erweitert, sondern diese Aspekte standen vom Beginn der Entwicklung im Vordergrund.

Die Architektur

Die Geräte die an AChord beteiligt sind können in zwei Kategorien aufgeteilt werden, so wie nachfolgend dargestellt.
Architektur
Das Grundgerüst bilden Server, die AChord-Knoten, auf denen Datenblöcke in Form von Key-Value-Paaren abgelegt werden können. Sie sind in einem Ring angeordnet. Mithilfe des am Massachusetts Institute of Technology (MIT) entwickelten Chord-Algorithmus, erweitert um spezielle Sicherheitsaspekte aus der Arbeitsgruppe um Prof. Schütte können Inhalte effizient (in O(log(N)) gefunden werden. Damit ist ein Dateisystem realisiert, dass die Dateiblöcke verschlüsselt auf den Knoten ablegt. Dies ist für den Nutzer transparent, er arbeitet nur in gewohnter Form mit den Client-Programmen.

Anwendungsszenario

Mittels acloud ist etwa folgendes Anwendungsszenario umsetzbar: Ein Konzern hat mehrere eigenständige Auslandseinheiten mit jeweils eigenen Rechenzentren. Jede Einheit betreibt einen AChord-Knoten, der verschlüsselte Dateifragmente anderer Einheiten speichert. Täglich können die unternehmenskritischen Daten jeder Einheit sicher in Form verschlüsselter Dateifragmente über die Auslandseinheiten als Backup verteilt werden, ohne dass ein Administrator einer Einheit Zugriff auf die Fragmente einer anderen Auslandseinheit hat. Jede Auslandseinheit stellt somit den anderen Einheiten Plattenplatz zur Verfügung und profitiert dabei von der gemeinsam etablierten AChord-Cloud zur sicheren externen Speicherung der Backups. AChord's Erasure-Kodierung der Dateifragmente gewährleistet dass beim Ausfall einer Auslandseinheit, trotzdem alle Daten wiederherstellbar sind.

acloud Kommandozeilen Clients

acloud ist eine Sammlung von Kommandos zum Zugriff auf eine AChord-Cloud. Die Programme orientieren sich bzgl. ihres Aufrufs an den für normale Unix Dateisystem verfügbaren Kommando. Es existieren unterschiedlich optimierte Clients:

Komandos:

acloud WebApps

Neben den o.a. Kommandos, die üblicherweise von einem Systemadministrator verwendet werden, existieren WebApps. Sie werden zusammen mit einem Browser ausgeliefert und sind so auf allen Plattformen (Windos, Mac, Linux) als Anwendungen aufrufbar.

Beispiele:

AChord SDK

Zur Integration von acloud in eine eigene Entwicklungsumgebung existiert ein SDK (als go Package). Es stellt einem Programmierer eine Sicht auf die AChord-Cloud als Dateisystem im Sinne von Unix Systemaufrufen (open, close, read, write, ...) zu Verfügung. Jeder der schon mal im Unix-Umfeld programmiert hat, kann somit das AChord Eco-System einfach für eigene Anwendungen verwenden.

Ein Beispiel der Verwendung des SDK ist die Realisierung eines einfachen Client-Programms zum Download einer acloud-Datei und Anzeige des Inhaltes auf dem Bildschirm.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
package main

import ...

var bootstrap = flag.String("c", "141.100.71.66:8001", "nchord connection")

func main() {
  util.CheckUsage("[options] <remote file>", 1)

  remote := flag.Args()[0] // remote file

  // connection to nchord
  c, err := util.Dial()
  if err != nil {
    fmt.Fprintf(os.Stderr, "%s\n", err)
    os.Exit(2)
  }
  defer c.Close()

  // initiate blockwise reading of remote file, 
  // decrypting and returning fd to decrypted file
  rfd, err := c.Open(rootedPath(remote))
  if err != nil {
    fmt.Fprintf(os.Stderr, "%s\n", err)
    os.Exit(3)
  }

  // copy file file to sdtout
  _, err = io.Copy(os.Stdout, rfd)

  // close rfd
  _ = rfd.Close()
}
Zunächst wird mittels einer Hilfsfunktion 'dial' die Verbindung zur AChord-Cloud hergestellt (Zeile 13). Die Variable 'c' referenziert nun die Clientverbindung zur Cloud. Die API-Funktion ’Open’(Zeile 22) initiiert einen Download aller Blöcke der Datei, entschlüsselt sie und liefert den Filedeskriptor 'rfd' auf die entschlüsselte Datei zurück. Damit kann nun der Dateiinhalt einfach mittels 'io.Copy' auf die Standard-Ausgabe kopiert werden (Zeile 29).

AChord Monitor

Damit Systemadministratoren einen Überblick über die Knoten eines AChord-System haben, existiert eine Admin-Tool, das den Zustand der Knoten zeigt. Der AChord-Monitor des Test-System kann hier angezeigt werden.

Wer sind wir

Das Projekt AChord ist initiiert am Fachbereich Informatik an der Hochschule Darmstadt. Initiator ist Prof. Dr. Alois Schütte. Entwicklungen im AChord-Umfeld werden unterstützt durch das Steinbeistransferzentrum Sichere Cloud.

Status

Beta, Software für P2P Knoten und Monitor, Kommandozeilen Clients, IOS, Android Clients und WebApps sind verfügbar.

Interesse an einer Mitarbeit ?

Links