Der Nachmittag, der für eine Zwischenablage draufging
Vor ein paar Tagen habe ich Golem auf dem Rechner eines Kunden installiert, um ihm bei seiner Anwendung zu helfen. Golem ist mein Agent für die Arbeit auf einem entfernten Windows-Rechner: Man kopiert eine ausführbare Datei, startet sie, und wer Hilfe bekommt, erhält eine Verbindungszeile mit Adresse und Token.
Auf dem Papier sind das zwei Minuten. An jenem Nachmittag waren es das nicht.
Zuerst musste er ein Zip herunterladen und entpacken. Das fand er darin vor:

Sechs .bat-Dateien mit ähnlichen Namen, in zwei Sprachen, und keine hieß so, dass er erkennen konnte, welche seine war. Wir haben sie am Telefon ausgewählt. Dann stellte sich heraus, dass genau diese als Administrator gestartet werden musste, und ihm am Telefon die rechte Maustaste und «Als Administrator ausführen» zu erklären, dauerte seine Zeit. Als es endlich lief, tat das Programm, was es sollte: Es gab die Verbindungszeile aus und legte sie in die Zwischenablage, was der Teil war, um den ich mich gekümmert hatte, damit er nichts abtippen muss.
Und da blieben wir stecken. Er hatte die Zeile kopiert und bekam sie nicht zu mir. Das Konsolenfenster stand vor ihm, WhatsApp lag auf dem Handy, und etwas vom Rechner auf das Telefon zu bringen ist kein selbstverständlicher Vorgang für jemanden, der den Computer für seine Buchhaltung benutzt und sonst kaum. Wir haben es per E-Mail versucht. Was ankam, war abgeschnitten.
Wessen Problem das war
Man kann das leicht als Anekdote über einen ungeschickten Kunden erzählen, und das wäre unfair. Ich hatte ihm einen Weg mit sechs Stellen zum Scheitern vorgelegt: den Ordner finden, die Datei auswählen, die Sache mit dem Administrator verstehen, warten ohne zu wissen worauf, den Text finden und ihn zu mir bringen. Jede dieser Stellen scheitert für sich genommen selten, zusammen scheitern sie fast immer.
Am anderen Ende der Leitung saß auch kein Programmierer. Es war ein Angestellter einer Firma, der diese Anwendung täglich benutzt, sie besser kennt als ich und keinen Grund hat, etwas über Zip-Ordner, Administratorrechte oder das Übertragen von Text vom Rechner aufs Handy zu wissen. Wenn der Weg, den ich ihm gebe, das voraussetzt, ist der Weg schlecht gebaut.
Also habe ich den Weg geändert.
Eine Datei, eine Schaltfläche, zwölf Ziffern
Golem 1.3, das ich heute veröffentlicht habe, bringt ein Fenster namens Fernwartung mit. Der Kunde lädt eine einzige Datei herunter, macht einen Doppelklick und sieht das hier:

Eine Frage, zwei Schaltflächen und sonst nichts. Kein Ordner zum Entpacken, keine .bat zum Auswählen, keine Konsole.
In dieser Datei stecken der Agent und das Tunnelprogramm, komprimiert. Das Fenster legt sie beim ersten Start an ihren Platz, in weniger als zwei Sekunden, und bei jedem weiteren Start prüft es, ob es noch dieselben Dateien sind, die es mitgebracht hat.
Diese Prüfung ist ein SHA-256, eine lange Zahl, die den Inhalt einer Datei zusammenfasst: Ändert sich ein einziges Byte, kommt eine andere Zahl heraus. Das Fenster trägt die passende Zahl für jedes Programm in sich, berechnet sie über das, was auf der Platte liegt, und vergleicht. Stimmt sie nicht, legt es seine eigene Fassung wieder hin. Was dort ausgepackt wird, ist ein Programm, das diesen Rechner für eine andere Person öffnet, also ist es gut zu wissen, dass es aus meinem Build stammt und nicht von jemandem, der etwas darübergelegt hat.
Wenn die Verbindung steht, zeigt das Fenster zwölf Ziffern in drei Gruppen:

Das liest mir der Kunde am Telefon vor. Zwölf Zahlen, laut vorgelesen, wie ein Code von der Bank. Sie werden ihm auch kopiert, falls er sie einfügen kann, aber nichts hängt mehr davon ab.
Ich tippe diese zwölf Ziffern dort ein, wo ich früher die lange Zeile eingefügt habe, und bin drin. Im Hintergrund tauscht mein Golem-Client sie gegen die echte Verbindungszeile und macht weiter wie immer.
Was die Nummer leistet, damit das trägt
Die zwölf Ziffern teilen sich in zwei Hälften mit verschiedenen Aufgaben. Die ersten vier sagen, wo der Termin in meinem Portal liegt. Die nächsten acht sind der Schlüssel, der ihn entschlüsselt, und diese acht gehen nie durch das Portal.
Mein Portal speichert die Verbindungszeile verschlüsselt und kann sie nicht lesen. Es speichert außerdem eine aus dem Schlüssel abgeleitete Prüfung, mit der es erkennt, ob derjenige, der den Termin abholen will, den Schlüssel kennt, ohne ihn selbst zu kennen.
Darauf liegen drei Grenzen, und alle drei lassen sich von außen prüfen:
- Der Termin gilt zehn Minuten.
- Er funktioniert einmal. Sobald ich ihn abhole, existiert er nicht mehr.
- Nach fünf Fehlversuchen ist der Platz verbrannt, und auch die richtige Nummer kommt nicht mehr hinein.
Wer zufällige Zahlen eintippt, füllt höchstens zehn Minuten lang Plätze mit Unsinn.
Was ich nicht geändert habe
Die gewohnte lange Zeile steht weiterhin da, unter der Nummer, im selben Fenster. Antwortet mein Portal nicht, sagt das Programm es deutlich und zeigt die Zeile, und ich benutze sie so, wie ich sie von Anfang an benutzt habe. Die Nummer ist eine Bequemlichkeit über dem, was ohnehin funktioniert.
Das Konsolen-Kit ist ebenfalls unangetastet. Für einen VPS oder einen Server, den ich selbst verwalte, kopiere ich weiterhin die ausführbare Datei und starte sie über ihre .bat, wofür sie gedacht ist. Das Fenster ist für die andere Lage: jemand am Telefon, der jetzt Hilfe braucht und von all dem nichts wissen muss.
Der Hinweis, der über der Schaltfläche steht
Eine Sache an dieser Vereinfachung gefällt mir nicht, und ich sage sie lieber. Ein Programm mit einem Klick, das Ihren Rechner für eine andere Person öffnet, ist Schritt für Schritt das Drehbuch des falschen Supportanrufs. Je leichter ich es meinem Kunden mache, desto leichter mache ich es dem, der ihn morgen anruft und behauptet, er sei von seiner Bank.
Deshalb steht der Hinweis auf der Downloadseite über der Schaltfläche und nicht klein gedruckt am Ende: Das macht man nur, wenn man selbst angerufen hat oder weiß, wer am anderen Ende ist. Und solange die Verbindung läuft, hält das Fenster immer eine rote Schaltfläche sichtbar, die sofort trennt, ohne «Sind Sie sicher?». Eine Absicherung, die nachfragt, nützt nichts, wenn die Person erschrocken ist.
Wo es liegt
Die Seite ist irwinrodriguez.dev/asistencia, auf Spanisch, Englisch und Deutsch. Der Download braucht weder Konto noch Lizenz: Wer um Hilfe bittet, muss kein Kunde von mir sein.
Es gibt zwei Fassungen. Die lose, für jemanden, der sie einmal benutzt und nichts installieren möchte, und eine, die sich installiert und eine Verknüpfung auf dem Desktop hinterlässt, für jemanden, der mich öfter anruft. Die zweite stellt eine einzige Frage danach, was für ein Rechner das ist, am Tag der Installation und mit mir am Telefon, und fragt danach nie wieder.
Beide sind mit meinem Zertifikat signiert, sodass Windows nicht den blauen Bildschirm für unbekannte Anwendungen zeigt. Dieser Hinweis war eine weitere Hürde, und eine von der Sorte, bei der Leute auflegen.