PMG2022/Einführung/Marcus

Aus ProgrammingWiki

Wiki-Quelltext dieser Seite.

<language>Java</language>
'''  HTTP und HTTPS
'''
='''HTTPS und TLS'''=

== 1. '''HTTPS''' (Hypertext Transfer Protocol Secure) ==
Das Hypertext Transfer Protocol (HTTP, englisch für Hypertext-Übertragungsprotokoll) ist ein zustandsloses Protokoll zur Übertragung von Daten auf der Anwendungsschicht über ein Rechnernetz. Es 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.

Das Hypertext Transfer Protocol (HTTP) ist ein Anwendungsschicht-Protokoll zum Transportieren von Hypermedia Dokumenten, wie zum Beispiel HTML. Hauptsächlich wird es zur Kommunikation zwischen Webservern und Webbrowsern verwendet, jedoch könnte es theoretisch auch für andere Zwecke benutzt werden. Es 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. Außerdem ist es ein zustandsloses Protokoll, was bedeutet, dass der Server keine Daten (Zustände) zwischen zwei Anfragen behält.



Hypertext Transfer Protocol Secure ist ein Kommunikationsprotokoll im World Wibe Web, um Daten sicher zu übertragen und um diese dann abhören zu können. Desweiteren stellt das HTTPS eine Transportverschlüsselung dar.
Entwickelt wurde HTTPS von Netscape und zusammen mit SSL wurde es im Jahre 1994 erstmals mit deren Browser veröffentlicht.

HTTP ist ein zustandsloses Protokoll. Informationen aus früheren Anforderungen gehen verloren. Ein zuverlässiges Mitführen von Sitzungsdaten kann erst auf der Anwendungsschicht durch eine Sitzung über einen Sitzungsbezeichner implementiert werden. Über Cookies in den Header-Informationen können aber Anwendungen realisiert werden, die Statusinformationen (Benutzereinträge, Warenkörbe) zuordnen können. Dadurch werden Anwendungen möglich, die Status- beziehungsweise Sitzungseigenschaften erfordern. Auch eine Benutzerauthentifizierung ist möglich. Normalerweise kann die Information, die über HTTP übertragen wird, auf allen Rechnern und Routern gelesen werden, die im Netzwerk durchlaufen werden. Über HTTPS jedoch kann die Übertragung verschlüsselt erfolgen.

Durch Erweiterung seiner Anfragemethoden, Header-Informationen und Statuscodes ist HTTP nicht auf Hypertext beschränkt, sondern wird zunehmend zum Austausch beliebiger Daten verwendet, außerdem ist es Grundlage des auf Dateiübertragung spezialisierten Protokolls WebDAV. Zur Kommunikation ist HTTP auf ein zuverlässiges Transportprotokoll angewiesen, wofür in nahezu allen Fällen TCP verwendet wird.




 
== 1.1 ''Nutzung von HTTPS'' ==

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. Durch die Verbreitung von offenen WLANs nimmt die Bedeutung von HTTPS deutlich zu, da Inhalte unabhängig vom Netz verschlüsselt werden können. 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.
Wo wird HTTP verwendet?
Ursprünglich diente HTTP lediglich dazu, von einem Webserver ein HTML-Dokument anzufordern. Heute wird das Protokoll sehr vielfältig eingesetzt:

Browser fordern über HTTP alle Arten von Medien an, die auf modernen Webseiten verwendet werden: Text, Bilder, Videos, Programmcode usw.
Anwendungsprogramme nutzen HTTP, um Dateien und Updates von entfernten Servern zu laden.
Die REST-API ist eine auf HTTP basierende Lösung zum Ansteuern von Webservices.
Ebenfalls eine HTTP-basierte Technologie ist WebDAV.
In der Machine-to-Machine-Kommunikation (z.B. via Webservices) wird HTTP als Protokoll für die Kommunikation zwischen Webservices verwendet.
Auch Medienplayer nutzen HTTP.
Zugriffe auf eine Datenbank im Web, d. h. die CRUD-Operationen, können ebenfalls über HTTP erfolgen.


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. Details zu den HTTP Status-Codes erfahren Sie in unserem weiterführenden Artikel. 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.



== 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.

[[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''''', 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'''

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.

'''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.



== '''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]




== 1.2 ''Vor- und Nachteile von HTTPS'' ==

Der größte Vorteil den HTTPS bietet ist natürlich der Datenschutz im Internet. Desweiteren ist für die Nutzung keine zusätzliche Softwareinstallation von Nöten, was ebenfalls einen großen Vorteil für einige bietet, denn somit kann HTTPS ohne Probleme von jedem verwendet werden. Die Authentifizierung durch das Zertifikat schafft zudem Vertrauen füt potentielle Kunden von HTTPS.

HTTPS weist allerdings auch einige Nachteile vor, welche aber eher von geringerer Bedeutung sind und somit auch in Kauf genommen werden können.
Es können Zusatzkosten bei steigendem Traffic (Nutzung) entstehen. Beim HTTPS fallen Zwischenspeicherungen weg, doch mit den tendenziell steigenden Bandbreiten wird diesem Nachteil entgegengewirkt. Eine weitere Schwäche ist auch die schlechtere Performance, die bei der Verwendung von der SSL-Verschlüsselung entsteht. Der Server muss deutlich mehr rechnen, wodurch sich die Antwortzeit erhöht. Außerdem funktionieren mit HTTPS keine virtuellen Hosts














== 2.2 ''Nutzung von TLS'' ==

In der heutigen Zeit wird TLS vorallem in Verbindung mit HTTPS eingesetzt. Am meisten von den Webservern eingesetzt wird die TLS-Version 1.0 in Verbindung mit dem RSA-, AES- und Camellia-Verschlüsselungsverfahren. Die TLS-Version 1.1 wird von Google Chrome unterstützt, die Weiterentwicklung TLS 1.2 wird in der Standardkonfiguration von Internet Explorer, Firefox, Opera, Apple iOS und ebenfalls von Google Chrome unterstützt. (Stand Februar 2014)


== 2.3 ''Vor- und Nachteile'' ==

TLS bietet jeweils nur einen schwerwiegenden Vor- aber auch Nachteil. Der Vorteil den das TLS-Protokoll darbietet ist die Möglichkeit, jedes höhere Protokoll auf Basis des TLS-Protokolls zu implementieren. Somit ist eine Unabhängigkeit von Anwendungen und Systemen gewährleistet.
Der Nachteil einer TLS-verschlüsselten Übertragung besteht darin, dass der Verbindungsaufbau auf der Serverseite rechenintensiv und somit auch langsamer ist. Die Verschlüsselung beansprucht je nach benutztem Algorithmus nur wenig Rechenzeit.

Es sind allerdings auch einige Angriffe auf TLS und SSL bekannt, die die Sicherheitsgarantien untergraben. Beispiele für Angriffe sind hierbei: Padding-Oracle-Angriffe, Kompressionsangriffe, Downgrades auf Exportverschlüsselung oder auch Implentierungsfehler. Allerdings gibt es genug Sicherheitseinrichtungen die gegen Angriffe wie diese vorgehen können.
Quellen:
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.