PMG2022/Einführung/Marcus
Aus ProgrammingWiki
Wiki-Quelltext dieser Seite.
<language>Java</language> == '''HTTP''' (Hypertext Transfer Protocol) == Das '''H'''ypertext '''T'''ransfer '''P'''rotocol ist ein ''zustandsloses Protokoll'' zur Übertragung von Daten wie z.B. HTML auf der Anwendungsschicht über ein Rechnernetz. HTTP wird auch als "ein zustandsloses System" bezeichnet, was bedeutet, dass es eine Verbindung bei Bedarf aktiviert. Sie klicken auf einen Link, um eine Verbindung anzufordern und Ihr Webbrowser sendet diese Anforderung an den Server, der durch Öffnen der Seite antwortet. Je schneller die Verbindung ist, desto schneller werden Ihnen die Daten angezeigt. HTTP wird hauptsächlich eingesetzt, um Webseiten (Hypertext-Dokumente) aus dem World Wide Web (WWW) in einen Webbrowser zu laden. Es ist jedoch nicht prinzipiell darauf beschränkt und auch als allgemeines Dateiübertragungsprotokoll sehr verbreitet. HTTP folgt einem klassischen Client-Server-Modell, mit einem Client der die Verbindung eröffnet, indem er eine Anfrage macht und dann wartet, bis es eine Antwort erhält. Als "Application Layer Protocol (Protokoll der Anwenderschicht)" konzentriert sich HTTP auf die Anzeige der Informationen, kümmert sich aber weniger darum, wie diese Informationen von einem Ort zum anderen gelangen. Unglücklicherweise bedeutet dies, dass HTTP abgefangen und möglicherweise verändert werden kann, wodurch sowohl die Informationen als auch der Informationsempfänger (also Sie) angreifbar werden. == Funktionsweise von HTTP == Wie funktioniert HTTP? Die Funktionsweise von HTTP lässt sich am einfachsten anhand des Aufrufs einer Webseite erläutern: Der Nutzer tippt in die Adresszeile seines Internet-Browsers example.com ein. Der Browser sendet eine entsprechende Anfrage, den HTTP-Request, an den zuständigen Webserver, der die Domäne example.com verwaltet. Normalerweise lautet der Request: „Sende mir bitte die Datei zu“. Alternativ kann der Client auch bloß fragen: „Hast du diese Datei?“. Der Webserver empfängt den HTTP-Request, sucht die gewünschte Datei (im Beispiel: die Startseite von example.com, also die Datei index.html) und sendet als Erstes den Header, der dem anfragenden Client durch einen Status-Code das Resultat seiner Suche mitteilt. Wenn die Datei gefunden wurde und der Client sie tatsächlich zugesendet haben will (und nicht nur wissen wollte, ob sie existiert), sendet der Server nach dem Header den Message Body, also den eigentlichen Inhalt. In unserem Beispiel ist dies die Datei index.html. Der Browser empfängt die Datei und stellt sie als Webseite dar. =''' HTTPS und TLS'''= Hypertext Transfer Protocol Secure (HTTPS, englisch für „sicheres Hypertext-Übertragungsprotokoll“) ist ein Kommunikationsprotokoll im World Wide Web, mit dem Daten abhörsicher übertragen werden können. Es stellt eine Transportverschlüsselung dar und nutzt eine Ende-zu-Ende-Verschlüsselung und Authentifizierung. Entwickelt wurde HTTPS von Netscape und zusammen mit SSL wurde es im Jahre 1994 erstmals mit deren Browser veröffentlicht. HTTPS wird zur Herstellung von Vertraulichkeit und Integrität in der Kommunikation zwischen Webserver und Webbrowser (Client) im World Wide Web verwendet. Dies wird unter anderem durch Verschlüsselung und Authentifizierung erreicht. Mit diesem Netzwerkprotokollstandard können Webbrowser und Server durch den Austausch von Daten miteinander kommunizieren. Das Hypertext Transfer Protocol Secure, kurz HTTPS, hat die gleiche Aufgabe, tut dies jedoch verschlüsselt und kann somit eine abhörsichere Verbindung zwischen dem Betreiber der Website und Ihrem Browser herstellen. Ursprünglich wurde HTTPS von Netscape entwickelt und in deren Browser veröffentlicht. Heute unterstützen alle gängigen Browser HTTPS. Die Installation zusätzlicher Software ist nicht notwendig. == ''Nutzung von HTTPS'' == Die Hauptanwendung für das Hypertext Transfer Protocol Secure ist die sichere Übertragung von Webseiten im Internet. Die Nutzung von HTTPS wird durch Suchanbieter wie Google zusätzlich forciert, da verschlüsselte Seiten mit besseren Positionen in den Ergebnislisten belohnt werden. Auch die zunehmende Verbreitung von offenen, für die Allgemeinheit nutzbaren WLANs trägt zur Verbreitung von HTTPS bei, da sich WLAN-User mit den Ende-zu-Ende-verschlüsselten Verbindungen vor unbefugtem Abhören anderer WLAN-Nutzer schützen können. Die Inhalte sind dann unabhängig vom WLAN-Protokoll verschlüsselt. Da TLS eine eigene Zwischenschicht zwischen TCP und Protokollen höherer Schichten darstellt, lässt es sich für die Absicherung anderer Protokolle wie SMTPS, IMAPS und FTPS einsetzen. == Einsatz von HTTPS == HTTPS wird oft auf Internetseiten benutzt, wo mit sensiblen Daten wie zum Beispiel Bankverbindungen in Online Shops gearbeitet wird. Das grüne Vorhangschlosssymbol sowie das grüne HTTPS und die ausführlichen Informationen zeigen dem Benutzer schnell, ob die Seite sicher oder unsicher ist. Fazit Wenn eine Internetseite sensible Daten verlangt, zum Beispiel die Bankverbindung in Onlineshops, dann sollte man unbedingt in die Adresszeile schauen, ob die Internetseite mit HTTPS läuft und das grüne Vorhangschlosssymbol vorhanden ist. Das HTTPS-Verfahren wird von allen Browsern unterstützt und ist somit eine Sicherheits-Technologie die nicht extra installiert werden muss. Übliche Websites verwenden lediglich das HTTP-Verfahren. Wenn es jedoch um persönliche Daten geht, wie beim Online-Banking oder in Online-Shops, verfügen diese über eine HTTPS-Verschlüsselung. Fazit: Eine Website auf der Sie sensible Daten wie Ihre Kontoverbindung angeben müssen, sollten über HTTPS verschlüsselt sein. Ansonsten handelt es sich mit sehr hoher Wahrscheinlichkeit um einen unseriösen Anbieter. Sichere HTTPS-Verbindung Technik Syntaktisch ist HTTPS identisch mit dem Schema für HTTP, die zusätzliche Verschlüsselung der Daten geschieht mittels SSL/TLS: Unter Verwendung des SSL-Handshake-Protokolls findet zunächst eine geschützte Identifikation und Authentifizierung der Kommunikationspartner statt. Anschließend wird mit Hilfe asymmetrischer Verschlüsselung oder des Diffie-Hellman-Schlüsselaustauschs ein gemeinsamer symmetrischer Sitzungsschlüssel ausgetauscht. Dieser wird schließlich zur Verschlüsselung der Nutzdaten verwendet. == Sicherheitsprotokolle == '''SSL''' Für eine Verschlüsselung der Datenübertragung ist die SSL (Secure Sockets Layer) verantwortlich. Doch ist dieses von Netscape entwickelte Protokoll heute unsicher und weist große Sicherheitslücken auf. Von SSL Verschlüsslungen wird abgeraten. '''TLS''' Ein neues sicheres Verschlüsselungsprotokoll ist das TLS (Transport Layer Security). Dieses ist ein zuverlässiger und vertrauenswürdiger Nachfolger der SSL. TLS entstand aus der 3. Version von SSL. Oftmals hört man auch noch den Begriff SSL obwohl es sich eigentlich um die neuere Form TLS handelt. In der heutigen Zeit wird TLS vorallem in Verbindung mit HTTPS eingesetzt. [[Bild:Lea Sophie_SSLundTLS.PNG|200px]] '''Ziele von Sicherheitsprotokollen''' Die Nutzung von der SSL/TLS verfolgt ''3 Ziele'': In diesem Beispiel verdeutlicht an einem Nutzer, nennen wir sie Helen, welche 2 Informatikbücher auf einer Internetseite kauft. '''''1. Vertraulichkeit''''', Genutzt wird HTTPS zur Herstellung von Vertraulichkeit und Integrität in der Kommunikation zwischen Webbrowser (Client) und Webserver im World Wide Web. Erreicht wird dies durch Verschlüsselung und Authentifizierung. Wichtig bei der Nutzung von HTTPS ist, dass beide Seiten der Verbindung beim Aufbau der Kommunikation die Identität des Verbindungspartners überprüfen können. d.h. Helenes Daten, wie Anschrift an welche sie ihre Bücher geliefert bekommen möchte, Bankkonten zum bezahlen und sonstige, persönliche Angaben sind für Dritte nicht einsehbar, da diese durch die SSL/TLS verschlüsselt wurden. '''''2. Integrität der Daten''''', bedeutet dass Helenes Bestellung nicht durch Dritte manipuliert werden kann, also dass sie 2 Informatikbücher und nicht etwa ein anderes Produkt zugestellt bekommt, bzw. ihre Bestellung überhaupt an ihrer Adresse geliefert wird. Diese Vorgänge garantieren Sicherheitsprotokolle. '''''3.Authentizität''''', steht für die Wahrheit, also die Sicherheit für Helene, dass die Webseite über die sie ihre Bücher gekauft hat auch zu einem existenten Shop gehört und keine Verkaufs-Masche ist. Diese Aufgabe ist wichtig für die SSL/TLS, da sie dem Kunden Schutz gibt. == Internetprotokolle == '''HTTP'''[[Bild:Lea Sophie_HTTProt.PNG|40px]] Die bekannteste, mittlerweile veraltete Form lautet HTTP (Hyper Text Transfer Protocol). Dieses Protokoll regelt die Übermittlung von Daten im Internet nach dem Sender-Empfänger Modell. Doch ist dieses Verbindungprotokoll unverschlüsselt. Mit HTTP übertragene Daten sind also nicht von Angriffen durch Dritte geschützt. [[Bild:Lea Sophie_HTTP.PNG]] '''HTTPS'''[[Bild:Lea Sophie_HTTPSgrün.PNG|40px]] Um die Sicherheit von Webseiten in voller Umfänglichkeit zu gewährleisten, gibt es die HTTPS (Hypertext Transfer Protocol Secure). Technisch gesehen ist dieses gar kein eigenständiges Protokoll sondern ein Zusammenwirken aus HTTP und SSL bzw. TLS (Internetprotokoll + Sicherheitsprotokoll). Die HTTPS bietet also eine gesicherte und verschlüsselte Verbindung. [[Bild:Lea Sophie_Http_to_https-1.jpg|550px]] '''Unterschiede: HTTP vs. HTTPS''' Einfach gesagt, das HTTPS-Protokoll ist eine Erweiterung von HTTP. Das "S" in der Abkürzung stammt vom Wort „Secure (sicher)“ und es wird von Transport Layer Security (TLS) [der Nachfolger von Secure Sockets Layer (SSL)] unterstützt, der Standard-Sicherheitstechnologie, die eine verschlüsselte Verbindung zwischen einem Webserver und einem Browser herstellt. Ohne HTTPS werden alle Daten, die Sie auf der Website eingeben (wie Ihr Benutzername/Passwort, Kreditkarten- oder Bankdaten, sonstige Daten die über Formulare übermittelt werden usw.), unverschlüsselt gesendet und sind daher anfällig für Abfangen oder Belauschen. Aus diesem Grund sollten Sie immer überprüfen, ob eine Website HTTPS verwendet, bevor Sie irgendwelche Daten eingeben. Zusätzlich zur Verschlüsselung der Daten, die zwischen dem Server und Ihrem Browser übertragen werden, authentifiziert TLS auch den Server, mit dem Sie sich verbinden, und schützt die übertragenen Daten vor Manipulationen. Die Verschlüsslung mithilfe von Sicherheitsprotokollen liefert der HTTPS einen sehr entschiedenen Vorteil gegenüber der HTTP. So sind Passwörter vor äußeren Eingriffen geschützter (siehe Bsp. Bild unten links) und Daten für Unbefugte schwer zugreifbar und somit sicherer und zu empfehlen. Dadurch ist die Nutzung einer HTTPS aber teurer für den Anbieter der Webseite. Auch von Browsern und Unternehmen, beispielsweise Google wird ein Umschwung von HTTP zu HTTPS gefördert. Die Suchmaschine listet in ihrem Ranking, also der Reihenfolge der zum Suchbegriff gefundenen Webseiten, solche zuerst auf, welche mit HTTPS Verschlüsselung für sicher erklärt wurden. Das zwingt die Betreiber von Seiten zum Umdenken - aber wer auf HTTPS umsteigt muss vieles beachten. Wichtiger Knackpunkt ist, das HTTP und HTTPS unterschiedliche Webseiten sind! Es muss neu strukturiert werden. Auch das Schlüsselzertifikat einer HTTPS-Seite muss mindestens 2048-Bit lang sein. Auch Querverweise und Hyperlinks müssen überprüft werden, auf HTTPS „Ziel“-Seiten. Viele Browser warnen vor Benutzung von HTTP-Seiten und empfelen diese nicht, oder nur ohne Gebrauch von Persönlichen Daten zu nutzen (s. Bild unten rechts). [[Bild:Lea Sophie_Difference-Between-HTTP-and-HTTPS.png]] [[Bild:Lea Sophie_Klassifizierung.PNG|550px]] HTTP vs. HTTPS Informationen, die via HTTP übermittelt werden, sind unverschlüsselt und erscheinen im Klartext. Für mehr Anonymität und sicheren Datenaustausch im Internet gibt es die verschlüsselte Variante des Protokolls - HTTPS (Hypertext Transfer Protocol Secure). Ob Webseiten sicher übertragen werden, erkennen Sie an der URL. In diesem Fall sollte am Anfang der URL "https://" statt "http://" stehen. == ''Vor- und Nachteile von HTTPS'' == +Datenschutz im Internet +für Nutzung keine zusätzliche Softwareinstallation von Nöten--> HTTPS kann ohne Probleme von jedem verwendet werden +Authentifizierung durch das Zertifikat schafft Vertrauen füt potentielle Kunden von HTTPS. -Zusatzkosten bei steigendem Traffic (Nutzung) können entstehen -Wegfallen von Zwischenspeicherungen -schlechtere Performance, die bei der Verwendung von der SSL-Verschlüsselung entsteht --> Server muss deutlich mehr rechnen, wodurch sich die Antwortzeit erhöht. Außerdem funktionieren mit HTTPS keine virtuellen Hosts '''FAZIT''' Bei der Nutzung von Webseiten sollte man immer daurauf achten HTTPS geschützte und Verschlüsselte Seiten zu Nutzen, erst Recht wenn man persönliche Daten angibt. Quellen: == '''Informations-Quellen''' == [https://www.symantec.com/page.jsp?id=ssl-information-center] [http://www.eology.de/eology-blog/safety-first-wieso-es-zeit-wird-fuer-eine-umstellung-auf-https/] [https://www.marcobeierer.de/wissen/ssl-tls-und-https-erklaert] https://www.ionos.de/digitalguide/hosting/hosting-technik/was-ist-http/ https://de.wikipedia.org/wiki/Hypertext_Transfer_Protocol#:~:text=Das%20Hypertext%20Transfer%20Protocol%20(HTTP,in%20einen%20Webbrowser%20zu%20laden. https://praxistipps.chip.de/http-und-https-wo-ist-der-unterschied_11772 https://www.globalsign.com/de-de/blog/unterschied-zwischen-http-und-https https://www.ip-insider.de/was-ist-https-hypertext-transfer-protocol-secure-a-691192/ - Quellen prüfen v.a. Bilder Link - Text zu Stichpunkten - zwischendurch zusammenfassen