Ich möchte an dieser Stelle kurz die Theorie hinter dem geplanten Anmeldeprozess für die Steem Android App erläutern. Am Ende sollen zwei Möglichkeiten existieren, sich in der App anzumelden: SteemConnect und direct Login. Im folgenden möchte ich beide Verfahren erläutern.
SteemConnect
SteemConnect ist ein Dienst, der von den Steemit und den Busy Entwicklern entwickelt wurde. Das Hauptziel von SteemConnect ist die Sicherheit der Nutzeraccounts. Dies wird dadurch erreicht, dass die Applikation niemals einen deiner Keys bekommen kann. Wenn du dich zum Beispiel bei busy.org anmelden möchtest, wirst du Weitergeleitet auf steemconnect.com. Hier siehst du, falls du dich bereits Angemeldet hast, welche Aktion durchgeführt werden soll, in diesem Fall die Authentifikation von Busy. Solltest du SteemConnect noch nie benutzt haben, musst du zunächst einen der möglichen Keys eingeben. SteemConnect ist eine vertrauenswürdige Seite, da dahinter die gleichen Leute wie hinter Steemit stecken. Die Authentifilation erfolgt nun wiefolgt: Für eine Gebühr von aktuell 3 Steem kann man sich einen App Account registrieren.
Dieser Account wird von SteemConnect verwaltet, man erhält keinen Zugriff auf die Keys, aber letztenendes handelt es sich um einen ganz normalen Steemit Account. Was du aber bekommst ist die Möglichkeit, aus deiner Software heraus über diesen Account im Namen anderer zu Posten, zu Upvoten, etc., solange dieser Benutzer deinen AppAccount Authentifiziert hat. Der AppAccount wird deinem SteemAccount als neuer "Posting Key" hinzugefügt und kann fortan in deinem Namen solche Aktionen ausführen. Diese Berechtigung kann jederzeit auch wieder entzogen werden.
Vorteile von SteemConnect:
- Hohe Sicherheit (Die App kennt deinen Key nicht)
- Einfache Authentifizierung
- Leichte Rücknahme der Authentifizierung
Nachteile von SteemConnect:
- Für Aktionen, die nicht mit dem Posting Key durchgeführt werden können, ist eine separate Bestätigung mit dem Owner/Active Key über die SteemConnect Website notwendig
Direct Login
Mit "Direct Login" meine ich, dass der Nutzer seinen Benutzernamen und einen seiner Keys (Posting/Active/Owner Key) direkt in der App speichert. Der erste Nachteil ist hier offensichtlich: Die App kennt deinen Key. Daraus resultiert aber dann auch wieder ein Vorteil: Ist der Active Key angegeben, müssen zum Beispiel für Trades, PowerUps, etc. keine extra Genehmigungen erfragt werden. Ein wichtiger Aspekt ist bei dieser Methode das Vertrauen. Vertraust du dem Entwickler einer Seite/einer App nicht, solltest du deinen Key NIEMALS eingeben. Meiner Meinung nach sollte bei direkter Keyeingabe ersichtlich sein, was die App/die Software für die Sicherheit des Keys vor Dritten zu schützen. Für meine App habe ich mir folgendes Sicherheitskonzept überlegt: Nach der Eingabe durch den Nutzer wird der Key mit einem einmalig für die vom Nutzer verwendete App Instanz zufällig generierten Schlüssel verschlüsselt und in dieser verschlüsselten Form gespeichert. Dadurch können Dritt Apps den Key nicht verarbeiten/lesen. Um aber den Zugriff auf den Key durch Nutzer zu blockieren, möchte ich ein Authentifizierungssystem einbauen, bei dem der App Nutzer die Verwendung des Keys bei bestimmten Aktionen beschränkt. Eine Methode für diese Authentifizierung wäre zum Beispiel eine PIN, ein Passwort, ein Muster oder der Fingerabdruck mit dem Fingerabdrucksensor. Allgemein gesagt: Alle Methoden mit denen sich auch der Gerätezugriff sperren lässt. Möchte der Nutzer zum Beispiel einen Trade durchführen, so muss er seine Identität erst bestätigen. Für Posts wäre eine Identifikation nicht zwangsweise Notwendig, da diese auch über SteemConnect ohne Authentifikation erstellt werden können, möglich machen möchte ich das aber für beide Methoden (auf Wunsch des Nutzers).
Vorteile von Direct Login:
- Keine Authentifizierung über eine andere Plattform für Trades, etc, nötig
- Einmalige Keyeingabe, bei SteemConnect ist häufiger eine solche erforderlich
Nachteile von Direct Login:
- Bei schlechtem Schutz ist ein Auslesen durch Drittapps möglich
- Ohne Vertrauen in den Entwickler ist das Verfahren mit einem Risiko behaftet (-> Key Diebstahl)
Welche Methode ein Nutzer am Ende wählt, ist jedem selbst überlassen. Jeder muss abwägen, welches Verfahren für ihn besser ist. Wichtig ist aber, dass die Sicherheit des Keys gewahrt bleiben muss und dass der Key in keine falschen Hände gerät.