Allgemein, IT-Sicherheit

Anleitung: Passwörter und sensible Daten schnell und sicher teilen

9. März 2023

Junges Mädchen flüstert ein Geheimnis in das Ohr einer Freundin.

Inhaltsverzeichnis

Hier geht’s direkt zum kostenlosen Service: teile-dein-geheimnis.happyworx.de

Jeder von uns hatte schon einmal die Situation, ein Passwort oder andere vertrauliche Informationen teilen zu müssen. Sei es, dass man einem Freund Zugriff zu einem System, wie **hust** Netflix geben wollte, oder sein Passwort von einem Endgerät an ein anderes schicken wollte.

Ich erinnere mich, dass ich einmal ein Passwort mit einem Kollegen teilen musste. Wir haben es per E-Mail ausgetauscht, aber ich hatte das ungute Gefühl, dass es nicht sicher genug war. Was wäre passiert, wenn jemand Unbefugtes auf diese E-Mail zugreifen würde?

In diesem Moment wurde mir klar, dass es ein Tool geben muss, mit dem wir unsere vertraulichen Informationen auf eine sichere Art und Weise teilen können. Deshalb haben wir letztendlich ein sicheren Service entwickelt und um das ganze noch sicherer zu machen, auf eigenen Servern gehostet.

Mit diesem Tool können Sie Ihre Nachrichten verschlüsseln und Ihren Freunden oder Kollegen eine einmalige URL senden. Diese URL gibt dem Empfänger daraufin einmalig Zugang zu den Informationen. Sobald die Nachricht einmalig entschlüsselt wurde, vernichtet sie sich für immer.

Nach einiger Zeit in Benutzung und mehreren Penetrationtests, setzen wir das Tool nun auch bei uns ein. Wenn nun Kundinnen oder Kunden uns Zugriffe geben müssen, können Sie das nun ohne Bedenken sicher über unser Tool „Teile-Dein-Geheimnis“ tun.

Das eigentliche Problem: Informationen sicher und vor allem schnell über das Internet zu teilen

Das Teilen von Informationen über das Internet kann ein schwieriger Balanceakt zwischen Schnelligkeit und Sicherheit sein. Einerseits möchten wir schnell und effizient Informationen austauschen, andererseits ist es aber auch wichtig, dass wir unsere Daten schützen und uns vor Hackern und Betrug schützen. Und genau hier ist der Knackpunkt. Schnelligkeit / Einfachheit und Sicherheit sind eigentlich immer gegensätzliche Ziele. Am Beispiel E-Mail sieht man das sehr gut.

Als jemand, der täglich E-Mails schreibt und erhält, verstehe ich den Wunsch nach schnellem und einfachem Informationsaustausch nur zu gut. Doch gerade bei sensiblen Daten wie Passwörtern müssen wir besonders vorsichtig sein. Leider ist das Versenden von Passwörtern per E-Mail eine der unsichersten Methoden, die es gibt. Da E-Mails im Normalfall nicht mit PGP oder ähnlichen Verfahren verschlüsselt werden, sind die enthaltenen Information in der E-Mail ohne Probleme sichtbar. Und selbst wenn der Empfänger das Passwort ohne Probleme erhalten hat, bleibt die zugehörige E-Mail oft dauerhaft im Postfach gespeichert. Dies macht es für Hacker auch später noch möglich, die im Klartext gespeicherten Informationen zu beschaffen.

Auf der anderen Seite existieren die verschiedenen Messaging-Dienste. So bietet Slack einen Messenger im beruflichen Umfeld oder auch WhatsApp im privaten Umfeld. Und hier haben wir das andere Problem. Während E-Mails auf einem gemeinsamen Protokoll setzt um eine hohe Interoperabilität zu schaffen, sieht das bei WhatsApp, Signal oder Slack anders aus. So kann ich als Signal-Nutzer niemanden eine Nachricht schicken, der kein Signal hat. Besonders im beruflichen Umfeld, wird auf die unterschiedlichsten Messaging-Dienste gesetzt, sodass meist dann doch auf die Kommunikation über Telefon und E-Mail gesetzt wird.

So blieb mir die Frage, wie schaffe ich es, sensible Daten sicher zu versenden und dennoch frei zu sein, über welches Tool ich die Information versende.

Mit Teile-Dein-Geheimnis Passwörter und Co. sicher und einfach teilen

Nachdem wir irgendwann häufiger sensible Daten mit Kundinnen und Kunden teilen mussten, haben wir beschlossen, dass wir eine sichere und für den Kunden einfache Lösung benötigen. Aus diesem Grund, haben wir dann den kostenlosen Service https://teile-dein-geheimnis.happyworx.de/ entwickelt

Formular des Service Teile-Dein-Geheimnis
Innerhalb des Formulars tägst du die Informationen ein, die einfach und verschlüsselt an den Empfänger gesendet werden sollen. Kostenlos ohne Anmeldung nutzen.

Die Funktionsweise ist im Grunde relativ einfach. Zunächst, stellt der Service ein Formular bereit. In diesem werden dann die sensiblen Daten, wie Passwörter oder ähnliches eingegeben. Spannend wird es beim Absenden der Daten. Da die Seite nur verschlüsselt über https aufgerufen werden kann, sind alle Informationen zwischen dem Sender und unseren Servern stets verschüsselt.

Anzeige, des Links, welcher den Verschlüsselungskey enthält.
Mit Absenden des Formulars, wird ein einmaliger Link erzeugt, der zum Entschlüsseln verwendet wird.

Wenn der Versender der Nachricht nun das Formular mit den Informationen absendet, werden diese verschlüsselt an unseren Server weitergeleitet. Die eigentliche „Magie“ findet dann anschließend auf unserem Server statt. Sobald der Server die Nachricht erhalten hat, wird diese symmetrisch mit einem einmalig generierten Key verschlüsselt. Nun liegen die Informationen verschlüsselt in unserer Datenbank, ohne Schlüssel keine Möglichkeit die Informationen herauszulesen. Der Key wird schließlich nirgendwo gespeichert.

Dann bleibt aber die Frage, wie komme ich an den Key heran? Dieser erhält der Versender einmalig. Damit der Empfänger jedoch möglichst wenig Arbeit hat, die Information zu entschlüsseln, wird der Schlüssel mit einer einmaligen URL zusammengeführt. Diese URL kann dann an den Empfänger auch auf unsicheren Wegen versendet werden.

Sobald die URL einmalig geöffnet wird, wird die Nachricht entschlüsselt. Sobald der Empfänger die Nachricht gelesen hat, wird sie für immer von unseren Servern vernichtet. Andernfalls wird die Nachricht nach 30 Tagen automatisch, auch ohne Öffnen, von unseren Servern gelöscht.

Wie funkioniert die Verschlüsselung der Daten bei „Teile-Dein-Geheimnis“ genau?

Übertragen der Informationen zum Server

Die endgültige Verschlüsselung findet auf unseren Servern statt. Ein findiger Nutzer, sollte sich an dieser Stelle nun fragen, was ist mit endgültige Verschlüsselung gemeint. Sehr gute Frage. Die Informationen werden zwar beim Versenden des Formulars zunächst durch das TLS-Protokoll (https) verschlüsselt übertragen. Sobald der Server die Nachricht erhalten hat, wird diese nun endgültig verschlüsselt. Wie das genau funktioniert, erkläre ich weiter unten.

Ein noch findigerer Nutzer würde sich nun fragen: „Wieso werden die Informationen jedoch nicht auf Client-Seite endgültig verschlüsselt“. Dies hat drei Gründe:

  1. Zum einen haben wir im späteren Verlauf die Idee nicht nur Texte zu verschlüsseln, sondern auch andere Dateien. Verschlüsselung kostet jedoch Rechenkapazität, sodass eine Verschlüsselung je nach Hardware des Users sehr lange dauern kann. Auf Serverseite, haben wir entsprechende Hardware zur Verfügung.
  2. Weiterhin soll jeder Nutzer unseren Service nutzen können. Eine clientseitige Verschlüsselung erfordert jedoch Javascript-Bibliotheken. Diese müssen zum einen durch uns bereitgestellt werden und zum anderen, muss der Browser Javascript ausführen „wollen“. Uns war es wichtig, dass der Service auf alle Fälle funktioniert.
  3. Der wichtigste Grund ist aber, dass wir nur so feststellen können, ob das Geheimnis nur einmal geöffnet wurde. Bei clientseitiger Ver- und Entschlüsselung, lässt sich der Dienst sehr leicht manipulieren. Sollte ein Angreifer nun den verschlüsselten Text und den Schlüssel haben, kann dieser unbermerkt den Text entschlüsseln. Bei unserer Variante, würde dies jedoch sofort auffallen, da sich die Nachricht nur ein einziges Mal entschlüsseln lässt.

Verschlüsseln der Informationen auf dem Server

Sobald die Informationen beim Server angekommen sind, werden drei zufällige Zeichenketten erzeugt. Ein 256-Bit AES-Schlüssel, 128-Bit Initialisierungsvektor (IV) und eine 64-Bit-ID.

Der AES-Schlüssel und die ID werden noch gehasht. Zur Information: Hashing ist ein Prozess, bei dem eine Eingabe von Daten in einen eindeutigen und nicht umkehrbaren Hash-Wert umgewandelt wird. Dieser Hash-Wert dient zur Identifizierung der Daten und wird häufig zur Speicherung von Passwörtern und zum Schutz von Datenintegrität verwendet.

Nun geht es an die Verschlüsselung des eigentlichen Geheimnisses. Hierzu verwendet unser Service den Verschlüsselungsalgorithmus AES-256-CBC.

AES steht für „Advanced Encryption Standard“ und ist ein Standardverschlüsselungsalgorithmus, der von der US-amerikanischen National Security Agency (NSA) entwickelt wurde. Die Zahl „256“ in AES-256-CBC bezieht sich auf die Länge des Schlüssels in Bits. Ein 256-Bit-Schlüssel ist sehr sicher und bietet einen hohen Schutz vor Brute-Force-Attacken, bei denen ein Angreifer systematisch alle möglichen Kombinationen von Schlüsseln durchprobiert. Abschließend steht CBC für Cipher Block Chaining und ist ein Betriebsmodus für Blockverschlüsselungsalgorithmen wie AES. Bei CBC wird jeder Block der zu verschlüsselnden Nachricht vor der Verschlüsselung mit dem vorherigen verschlüsselten Block verknüpft. Dadurch wird ein sogenannter Chaining-Effekt erzeugt, der die Sicherheit der Verschlüsselung erhöht.

Insgesamt bietet AES-256-CBC eine sehr hohe Sicherheit und wird oft in der IT-Sicherheit eingesetzt, um vertrauliche Informationen zu schützen. Sobald die Verschlüsselung fertig ist, wird der verschlüsselte Text (Cipher) nochmals mit einem statischen AES-Schlüssel und dem zufällig generierten IV verschlüsselt. Dieser statische Schlüssel liegt nur bei uns, sodass eine Entschlüsselung nur über unseren Server möglich ist. Dies hat den Vorteil, dass ein Hacker selbst mit der Datenbank in der Hand und dem zufälligen Schlüssel die Daten nicht entschlüsseln kann. Also der verschlüsselte Text und der Schlüssel alleine können ohne unseren Service nicht entschlüsselt werden, wodurch wir die Sicherheit noch etwas erhöhen.

Anschließend werden der Initialisierungsvektor, der doppelt verschlüsselte Text, der gehashte Wert (ID + AES) unter der ID in der Datenbank abgespeichert.

Damit das Geheimnis nun jedoch entschlüsselt werden kann, muss der zufällig generierte Schlüssel und die ID, welche auf den Eintrag in der Datenbank verweist, an den Nutzer zurück geschickt werden. Dies geschieht, indem der Nutzer einen Link erhält. Die ID und der AES-Schlüssel werden dann kombiniert und als k-Wert dem Link angehängt. Mit diesem Link kann er oder der Empfänger nun einmalig das Geheimnis durch uns entschlüsseln lassen.

Entschlüsseln der Informationen – Wie kommt der Empfänger an die verschlüsselte Nachricht?

Sobald der Empfänger auf den Link klickt, den er vom Versender erhalten hat, wird dieser gefragt, ob er das Geheimnis einmalig entschlüsseln will. Fährt der Empfänger fort, sendet er eine Anfrage mit dem k-Wert an unseren Server.

Unser Server entpackt den k-Wert in die ID und den AES-256-BIT-Schlüssel. Anhand der ID können dann der Hash-Wert, der IV, und der Ciphertext aus der Datenbank ausgelesen werden. Der zuvor erstellte Hashwert wird nun genutzt, um eine Manipulation der URL auszuschließen. Dazu wird der Schlüssel und die ID aus der URL gehasht und mit dem Hash-Eintrag aus der Datenbank verglichen. Nur wenn beide Hashwerte übereinstimmen, wird mit der Entschlüsselung fortgefahren.

Da unser Geheimnis zweimal verschlüsselt ist, muss dieser logischerweise auch wieder zweimal entschlüsselt werden. Zunächst mit dem statischen AES-Key und IV und anschließend mit dem AES-Key aus der URL und dem IV aus der Datenbank.

Jetzt haben wir die eigentliche Nachricht und können Sie dem Empfänger zurücksenden. Zeitgleich wird der komplette Eintrag (IV, Hash, Cipher) für immer aus der Datenbank gelöscht. Ein erneuter Zugriff auf diese Informationen ist somit nicht mehr möglich.

Letztendlich haben wir den Dienst entwickelt, um sensible Informationen sicher über das Internet übertragen zu können. Da der Dienst sogut bei unseren Kundinnen und Kunden ankommt, haben wir uns entschieden, den Service für jeden zugänglich zu machen. Wir denken, dass Sicherheit stets frei für jeden zugänglich sein sollte. Jeder der solche Tools nutzt, unterstützt nicht nur die eigene Sicherheit, sondern unterstützt damit auch z. B. das IT-Sicherheitskonzept des eigenen Betriebs.

Suche
Weitere Artikel
GPT_auf_der_eigenen_Website
Wie Sie Ihr OpenAI GPT auf Ihrer Website hosten

Du möchtest dein eigenes OpenAI GPT auf deiner Website hosten, um kreative und intelligente Inhalte zu generieren? In diesem Blogbeitrag erfährst du, wie du das mit wenigen Schritten schaffst. Lerne, wie du das GPT-Modell installierst, konfigurierst und anpasst, um deine Website zu einem echten Hingucker zu machen. Ob du Texte, Bilder, Musik oder Code erzeugen willst, mit OpenAI GPT ist fast alles möglich.

Evolution der künstlichen Intelligenz
Evolution der KI (engl. AI)

Die KI ist eine spannende und wichtige Domäne, die unsere Vergangenheit, Gegenwart und Zukunft prägt. In diesem Beitrag erfährst du, wie die KI von den antiken Philosophen bis zu den modernen Wissenschaftlern und Ingenieuren entstanden ist, wie sie sich von den symbolischen bis zu den sub-symbolischen Methoden entwickelt hat, wie sie sich von der AGI bis zur ASI weiterentwickeln könnte und wie sie sich von den Suchmaschinen bis zur Ethik auswirkt.