Skip to content

SS2019: Technologierecherche – Sicherheit

javadalamm edited this page May 6, 2019 · 8 revisions

Sicherheit

Haben Sie Zweifel, ob eine Website sicher ist? Sie befürchten, dass eine zwielichtige Video-Streaming-Website Ihren PC infizieren könnte? Sie suchen nach einem Online-Shop und wissen nicht, wem Sie Ihre Kreditkartendaten anvertrauen können?

Vorsicht ist immer angebracht und es ist von größter Wichtigkeit, zu überprüfen, ob eine Website sicher ist, bevor Sie persönliche Informationen (z. B. Kreditkartennummern, Passwörter, Adressen usw.) übermitteln. In dieser Anleitung gebe ich Ihnen einige schnelle und einfache Tipps, mit denen Sie riskante URLs meiden und die Vertrauenswürdigkeit einer Website überprüfen können.

JSON Web Token (JWT)

JWT ist die Abkürzung für “JSON Web Token”, das für den Einsatz im Web konzipiert wurde. Typisches Einsatzgebiet für JWT ist die fortlaufende Authentifizierung bei SSO (“single sign-on”), JWT ist aber flexibel einsetzbar für alle Bereiche, in denen kompakte, signierte und verschlüsselte Informationen übertragen werden müssen.

Wie wird das JWT genutzt

Da JWT erst sinnvoll ist, wenn eine Signatur verwendet wird, muss vor der eigentlichen Nutzung ein Schlüssel (der RFC 7519 spricht vom “secret”) festgelegt werden. Dieser kann – z.B. als Antwort auf ein Login – zwischen den Kommunikationspartnern ausgetauscht werden. Asymmetrische Verfahren werden auch unterstützt, es werden dann die öffentlichen Schlüssel ausgetauscht. Der Schlüssel sollte mindestens über eine gesicherte HTTP-Verbindung (HTTPS) übertragen werden, um ein einfaches Auslesen zu vermeiden. Noch besser ist natürlich der Gebrauch asymmetrischer Verfahren.

Mit dem Austausch des Schlüssels kann nun die Kommunikation zwischen den beiden Partnern durchgeführt werden. Dazu generiert die Applikation für ihren Request den vereinbarten JWT mit dem Schlüssel des Partners und liefert das JWT als Parameter (z.B. ‘jwt’ bei GET-Requests) oder als “Authorization”-Header (bei POST, PUT, OPTIONS, DELETE) an den Partner aus.

Aufbau eines JWT-Token

Das JWT ist ein einfacher String, der als Request-Parameter oder im Header übertragen wird.

Ein JWT hat den folgenden Aufbau:

HEADER.PAYLOAD.SIGNATURE

Ein JWT-Token besteht also aus drei Teilen

  • Header
  • Payload
  • Signatur

Header

Der Header beschreibt den Signatur- und/oder Verschlüsselungsalgorithmus und den Token-Typ. Die Daten werden im JSON-Format abgelegt und Base64-kodiert.

Das vorliegende Beispiel sieht im Klartext so aus:

{"alg":"HS256","typ":"JWT"}

Im Beispiel wurde die Payload des JWT mit HMAC SHA256 (abgekürzt “HS256”) signiert.

Payload

Als Payload wird das JSON-Objekt bezeichnet, das aus einer “beliebigen” Anzahl von Key/Value-Paaren besteht. Diese Key/Value-Paare werden ”Claims” genannt . Der Payload wird ebenfalls Base64-kodiert.

Im Beispiel hat der Payload folgenden Inhalt:

{ "id": "1234567890", "name": "Martha Tester" , "role" :"admin" }

Claims können in drei verschiedene Typen aufgeteilt werden: registrierte, öffentliche und private Claims.

Registrierte Claims

Es handelt sich hierbei um Keys, deren Zweck in einem Standard festgelegt ist. Die Spezifikation definiert, dass alle Claims optional sind! Applikationen können also frei wählen, ob sie diese Felder nutzen. Wenn sie genutzt werden, sind öffentliche Claims wie folgt zu nutzen

  • “iss” (Issuer): identifiziert die Einheit, die das JWT ausgegeben hat; Beispiel: die ID einer bestimmten JIRA-Applikation
  • “sub” (Subject): Dieses Feld wird dazu genutzt, den Nutzer, auf den sich eine Aktion bezieht, zu identifizieren; Beispiel: der Nutzer, der in JIRA eine Aktion ausgelöst hat
  • “aud” (Audience): identifiziert potenzielle Empfänger des JWT
  • “exp” (expiration time): der Zeitpunkt, zu dem das JWT-Token nicht mehr akzeptiert werden darf

Öffentliche (“Public”) Claims

Diese Claims bezeichnen Key/Values, die zusätzlich zum Standard genutzt werden können. Um Kollisionen in der Semantik der Keys ausschließen zu können, sind diese Claims öffentlich registriert.

Private Claims

Hierbei handelt es sich um Keys, die bei verschiedenen JWT-Nutzungen eine unterschiedliche Semantik aufweisen können. Die Keys sind für Parteien gedacht, die über JWT kommunizieren wollen und für ihren Anwendungsfall einen Key explizit vereinbaren wollen. Die Namen sind nicht öffentlich registriert

Signatur

Das letzte Element ist die Signatur, die aus dem Header und der Payload berechnet wird.

content = base64UrlEncode(header) + "." + base64UrlEncode(payload);

signature = HMACSHA256(content, secret);

Auch die daraus entstehende Signatur wird ebenfalls Base64-kodiert und bildet den dritten Abschnitt des JWT.

Vorteile

Im Vergleich zu anderen Optionen überwiegen bei JWT die Vorteile:

  • die einfache Integrierbarkeit in viele Programmiersprachen
  • die zuverlässige Authentifizierung bei gleichzeitigem Reduzieren des Netzwerk-Overheads
  • die Nutzbarkeit im SSO-Fall sowie bei Login-Autorisierungen.
  • Zusätzlich haben die JWTs verglichen mit SAML-Anwendungen den deutlich kleineren Footprint. JSON Web Tokens scheinen demnach für die Nutzer-Authentifizierung in einer Microservice-Umgebung die geeignetste Variante zu sein.

Benutzerauthentifizierung in Microservice-Umgebungen

HTTPS

HTTP (Hypertext Transfer Protocol) ist das grundlegende Protokoll zum Senden von Daten zwischen Ihrem Webbrowser und den von Ihnen besuchten Websites. Und HTTPS ist die sichere Version davon. (Das „S“ steht einfach für „secure“ (sicher).

HTTPS wird häufig für Online-Banking und -Shopping verwendet, da es Ihre Kommunikation verschlüsselt, um Kriminelle daran zu hindern, vertrauliche Informationen wie Kreditkartennummern und Passwörter zu stehlen.

Woher weiß man aber, ob eine Website HTTPS verwendet? Schauen Sie nach, ob ein Vorhängeschloss in der Navigationsleiste Ihres Browsers angezeigt wird. Wenn ja, wissen Sie, dass die Website, auf der Sie sich befinden, ein vertrauenswürdiges digitales SSL-Zertifikat verwendet – mit anderen Worten, die Verbindung ist geschützt.

Falls Sie das Vorhängeschloss nicht sehen, kaufen Sie besser anderswo ein.

SSO

Single Sign-on (kurz SSO), das bedeutet, man muss sich nur einmal einloggen und schon ist man überall drin. Das ist praktisch. Aber auch gefährlich. Denn das SSO erspart Ihnen das Merken von Zugangsdaten für etliche Dienste – und einem Angreifer das Knacken dieser vielen Zugangsdaten. Der muss auch nur den SSO-Zugang knacken und kommt in Ihrem Namen überall rein

Die Mehrzahl der Asset Manager nutzt im Alltag verschiedenste Programme und Anwendungen. Mit jeder App, jedem Netzwerk und jeder Cloud steigt dabei die Anzahl der Identitäten und Passwörter. Mit der Integration von Single Sign-on, auch „Einmalanmeldung“ genannt, reagiert Architrave auf den Wunsch seiner großen Kunden mit zahlreichen Nutzern. Das Enterprise-Feature sorgt durch den zentralisierten Authentifizierungsprozess für mehr Sicherheit und Komfort – bei Anwendern und Administratoren.

Single Sign-on wird als zentraler Authentifizierungsprozess verstanden. Mit SSO muss sich der Nutzer lediglich einmal bei einem SSO-Provider (auch: Identity Provider) authentifizieren und erhält so Zugriff auf sämtliche benötigten bzw. freigegebenen Anwendungen und Ressourcen – ohne sich dort erneut identifizieren zu müssen. SSO-Anbieter gibt es zahlreiche. Die gängigsten Identity Provider sind Microsoft und Google.

Seitenbetreiber schützen eigene Website oft schlecht

Website-Betreiber sind sich der Risiken eines Hacking-Angriffs auf ihre Webpräsenz zwar bewusst, handeln aber oft nicht danach. 53 Prozent der Betreiber ergreifen keine Maßnahmen zur Website-Sicherheit, obwohl die Angst vor dem Ausfall der Website und der damit einhergehende Reputationsverlust ihnen große Sorgen bereitet. Mit den Ergebnissen der Umfrage unter 6.000 deutschen Website-Betreibern möchte Host Europe dafür sensibilisieren, Online-Auftritte besser zu schützen.

Wussten Sie zum Beispiel, dass sich die Wahrscheinlichkeit eines Cyber-Angriffs allein durch die Anzahl der eingesetzten Plug-Ins deutlich erhöhen kann. Eine WordPress-Seite mit 20 oder mehr Plug-Ins ist durchschnittlich bis zu 3 x anfälliger, als eine normale WordPress-Seite. Ebenso können Links zu Social-Media-Kanälen wie Facebook oder Twitter Ihre Website-Sicherheit gefährden: Je mehr Follower Sie haben, desto größer das Risiko.

Was können Sie gegen angreifen tun?

Tipp 1- Verwenden Sie sichere Passwörter

Tipp 2- Installieren Sie Antivirus-Software auf Ihrem Computer

Tipp 3- Verwenden Sie Ihre Browser-Sicherheits Tools

Tipp 4- Prüfen Sie jede URLS zweimal

Tipp 5- Führen Sie eine Online-Sicherheitsüberprüfung für Websites durch

Tipp 6- Aktualisieren Sie regelmäßig WordPress und WordPress-Plugins

Tipp 7- Installieren Sie nur vertrauenswürdige Software auf Ihrem Server

Fragen

  • Welche Maßnahmen sollten Programmierer Webseiten für mehr Sicherheit berücksichtigen?
  • Es ist nicht besser , dass wir nur One Time Password nutzen ?
  • Wie lässt sich Sicherheit gegen Angrifen wirken?
  • Können Cookies Schaden anrichten?