Verschlüsselte Übermittlung

Übersicht
Test
Anwendungen
Eine Seite verschlüsseln

Tunneln oder tunneling bezeichnet man das Verfahren: Daten über das Internet zu versenden, die beim Absender ver- und beim Empfänger entschlüsselt werden.

Die Bearbeitungsroutine auf dem Webserver erhält einen PHP-Programmzusatz, der das Ent- und Verschlüsseln übernimmt.

Die HTML-Seite, die zum Nutzer gesendet wird, wird mit einem Javascriptmodul mit den gleichen Funktionen ergänzt.

Da der Verschlüsselungsalgorithmus Informationen zur Manipulation des Verfahrens nutzt, ist ein entsprechendes Passwort zu generieren. Zum Einen ist es möglich dieses Passwort in der HTML-Seite zu verstecken, zum Anderen aber auch sinnvoll es durch den Nutzer eingeben zu lassen.

Der Algorithmus verwendet zwei Vektoren und sechs Funktionen, die dem Webdesigner zur Verfügung stehen.

Vektor 1: die erlaubten Zeichen
(83 Erlaubte Zeichen: 0-9 a-z A-Z ä ö ü Ä Ö Ü - + . @ / * ß ( ) ? & ; : # und Leerzeichen (Space))

Vektor 2: die Zahlen 0 bis 82 in ungeordneter Folge.

Funktion 1: NutzePasswort("paul@freenet.de"); Ändert die Folge der Zahlen in Vektor 2, auf Grund des übergebenen Passwortes, hier = "paul@freenet.de".

Funktion 2: Erg = Verschluesseln(Xwort); Diese Funktion verschlüsselt Xwort und gibt das Ergebnis in Erg zurück.

Funktion 3: Erg2= Entschluesseln(Erg); Hier wird Erg entschlüsselt und in Erg2 gespeichert.

Funktion 4: x =  zeichenkontrolle(wort,text);  wort ist der zu testende Text; text ist die Bezeichnung des Wortes. Diese Funktion existiert nur im Javascript. Im Fehlerfall gibt sie x = 0 oder = false aus und teilt dem Nutzer den Fehler mit; andernfalls 1 = true.

Funktion 5: x = zeichentest(wort); testet den Inhalt von wort. Im Javascript gibt sie 0 = false oder 1 = true, im PHPscript 0 = false oder das falsche Zeichen zurück.

Funktion 6: $test = zeichensuch($wort);  Die PHP-Subroutine gibt das falschen Zeichen zurück und dessen Position oder 0. Untersucht wird $wort. $test ist ein String: beginnend mit dem Zeichen, welches nicht zum erlaubten Zeichensatz gehöhrt, gefolgt von einem Leerzeichen (Space) und der Zahl (=Position).

Test

Hier ist ein Testprogramm. Aus dem erlaubten Zeichensatz werden Zweierkombinationen an einander gereiht. Es entsteht eine Zeichefolge von 1760 Zeichen. Diese Zeichenfolge, das Verschlüsselungsergebnis, ein paar unterschiedliche Arten der Verschlüsselung und ein kleiner Test (ausschließlich für das Javascriptmodul) werden gezeigt.

Anwendungen

Die Vektoren beider Routinen, PHP und Javascript, müssen identisch sein! Von beiden wird jeweils ein Dublikat des Zahlenvektors bereitgestellt, weil dieser während der Bearbeitung verändert wird. Wie Sie es im Weiteren sehen, müssen Sie den Inhalt des Originals wiederherstellen (oder auch nicht.).

Der Zahlen- und Zeichenvektor
Der Zahlen- und der Zeichenvektor

 Sie sollten hier keine Manipuationen durchführen! (Obwohl ? - Wenn Sie den Zahlenvektor sowieso wiederherstellen könnten Sie ihn auch ersetzen.)

Der Auszug aus dem Testprogramm zeigt die PHP-Befehle zum Ver- und Entschlüsseln einer in Xwort enthaltenen Zeichenfolge.

Aus dem Testprogramm Version 1 in PHP
Aus dem Testprogramm Version 1 in PHP

Dies ist der passende Javascript aus dem selben Programm

Aus Testprogramm Variante 1 in Javascript
Aus Testprogramm Variante 1 in Javascript

Ein weiteres Beispiel zur differenzierten Anwendung. Zwei verschiedene Passworte und doppelte Verschlüsselung erhöhen die Sicherheit.

Aus dem Testprogramm Variante 2 in PHP
Aus dem Testprogramm Variante 2 in PHP

Diese zweifache Verschlüsselung bei Benutzung zweier Passworte liefert in Variante 3 ein anderes Ergebnis.
In Variante 4 wurde das  Passwort aus Variant 1 zweimal benutzt, die Verschlüsselung erfolgt wie in Variante 1.

aus dem Testprogramm Version 3 und 4 in PHP
aus dem Testprogramm Version 3 und 4 in PHP

Hier sehen Sie den Javascript-Code, wie er im Testprogramm zum Probieren des Verschlüsselungsalgorithmus angewendet wird.

Der abschließende Test aus dem Testprogramm in Javascript
Der abschließende Test aus dem Testprogramm in Javascript

 

 Diese Subroutine geschrieben in Javascript, erlaubt das Verschlüsseln des Formularinhaltes vor dem Absenden zum Server. Bitte beachten Sie, dass das Formuar keinen "SUBMIT"-Button enthalten darf! Schreiben Sie dafür einen Button mit:" onclick='sender();' ". Ändern Sie auch den Formularnamen! Hier wurde "mark"  ( form ... name="mark" method="POST" ... )verwendet.

 Den Inhalt eines Formulars vor dem Senden verschlüsseln
Den Inhalt eines Formulars vor dem Senden verschlüssel

Sie können das Formular auch als Parameter übergeben. Dann hieße es:
funktion sender ( DasForm)
innerhalb müssten Sie alle: document.mark durch : DasForm ersetzen.
Der Aufruf selbst müsste lauten: onclick='sender(document.mark);' Damit ist die Funktion für unterschiedliche Formulare einer Seite anwendbar.

Die Empfängerseite sollte dann diesen PHP-Code enthalten. Mit der Javascript-Anweisung in der ersten Zeile wurde hier das Passwort übermittelt. Dann folgt die Schleife über alle POST-Elemente zur Entschlüsselung.

mit PHP die Post entschlüsseln
mit PHP die Post entschlüsseln

Sie sehen eine fest progammierte Seite, verschlüsselt. Verwendet wurden die beschriebenen Routinen. Auf dem Web-Server wurden einige Texte und Formularinhalte zusätzlich mit dem alten Passwort des Benutzers verschlüsselt und gemeinsam mit der Java-Script-Entschlüsselungsroutine an den Nutzer gesendet. Nur sein altes Passwort lässt die Seite lesbar werden.

Teile der Anzeige sind Verschlüsselt
Teile der Anzeige sind verschlüsselt

 Zum Verschlüsseln vollständiger Seiten ist es notwendig vorher die nicht erlaubten Zeichen zu ersetzen. Die Funktion 6 könnten Sie so einsetzen:

$Zeich1 = array();
$Zeich2 = array();
do {$erg=zeichensuch($seite);
  if($erg !="0")
    {$e=explode(" ",$erg);
    $ex=ord($e[0]);
    $Zeich1[]=$e[0];
    $Zeich2[]="&#".$ex.";";
    $seite=str_replace  ( $e[0],"&#".$ex.";",$seite); //ersetzt durch den Dezimalcode
    }
} while ($erg !="0");

An anderer Stelle lassen Sie die Rücksetzbefehle ins JavaScript schreiben
  for($i=1;$i< count($Zeich1);$i++)
      if($Zeich2[$i]=='"')echo"var seite = seite.replace(/".$Zeich2[$i]."/g, '".$Zeich1[$i]."');";
    else echo"var seite = seite.replace(/".$Zeich2[$i]."/g, \"".$Zeich1[$i]."\");";

Sollte es Fragen geben, stellen Sie diese in der öffentlichen Post oder senden mir eine E-Mail.

Eine Seite verschlüsseln

Bitte treffen Sie eine intelligente Auswahl. Das Verschlüsseln vor dem Absenden einer Seite an den Nutzer erhöht die Serverbelastung.

Die Seitenverschlüsselung erfolgt beim Aufruf der Seite. Direkte Links müssen Sie ändern! Probieren Sie: ../../rambo.php?name=Adresse  Wobei Adresse Ihr alter Link ist. Die Adresse muß hier immer mit Seiten/ beginnen. Beispiel

Wird eine Seite zur verschlüsselten Übertragung gerufen, muß, wie unten beschrieben, der entsprechende Schutz eingetragen sein. Ansonsten erhalten Sie einen Lesefehler, anststelle der Seite angezeigt.

Warnung! Alle Hilfsmittel zur Entschlüsselung sind in den Quelltexten bzw. in meinem Testprogramm enthalten. Sicherung sind nur nicht übertragene Passworte oder Passwortteile. Der Terminus des Tunnelns wird jedoch erfüllt.

Eine HTML-Seite komplett zu verschlüsseln ist ein schwieriges Unterfangen. Einige Zeichen entsprechen nicht dem erlaubten Zeichensatz. Das muss so sein, weil die Webbrowser zu Fehlinterpretationen kommen würden, sie würden HTML-Tags mit eingebetteten Daten verwechseln.

Also, werden diese Zeichen vor dem Verschlüsseln ersetzt. Die Ersetzungen werden in vorgefertigte JavaScriptBefehle eingebettet gemeinsam mit dem verschlüsselten Seiteninhalt und der Entschlüsselungsroutine abgesendet. Natürlich gehöhrt die Passwortfindung auch dazu.

Ob eine Seite künftig verschlüsselt gesendet wird entscheiden Sie bei der Bearbeitung in der Aufgabe [Seiten bearbeiten], wenn Sie den Button [Schutz] drücken.

das Bild zeigt das Menue. Hier tragen Sie entweder eine Schutzgruppe oder das Kombinationspasswort ein: Eine Zahl und zwei Worte.
Es ist erlaubt, beide Massnahmen zu aktivieren.
Rückgängigmachen = ein Leerzeichen einsetzen!

Beispiel Codeeingabe: 

der ursprüngliche Verschlüsslungs-Code  die Vorgabe  die richtige Antwort 
22 Kisten Eier 15 E "7 Kisten"
22 Kisten Eier 22 K " Eier"
22 Kisten Eier 0 E "22 Kisten"
auto (keine) (keine)

Bitte kontollieren Sie die Entschlüsselung und anschließend alle Seitenfunktionen.

Damit die Seite weiterhin bearbeitet werden kann, bleibt sie auf dem Webserver für den Bearbeiter unverschlüsselt.

Google Crom, SRWare Iron, Safari, Mozilla Firefox und IE 8 können's! Opera dagegen nicht. - Die entschlüsselte Seite anzeigen. Opera hat wohl Probleme mit dem erlaubten Zeichensatz und damit mit dem Ver- und Entschlüsseln!