Aufgabe 7 ( Ver- und Ent-Schlüsseln ) Geschützte Web-Ressourcen

Hermann Hesse: Unsere Bestimmung ist, die Gegensätze richtig zu erkennen, erstens
nämlich als Gegensätze, dann aber als Pole einer Einheit.

Joachim Ringelnatz: Sicher ist, dass nichts sicher ist. Selbst das nicht.
Volksmund: Eine Kette ist so stark wie das schwächste Glied.

Browser werden zu Allzweckwerkzeugen und für Internet-Apps verwendet. Dies ist der gedankliche Hintergrund dieser Lehraufgabe. Gedanken-Beispiel: Wie können als Ergebnis dieser Übung E-Mail Verschlüsselungen ( Client zu Client ) mit Self-Made-Algorithmen gemacht werden? Hier die Kurzfassung der Aufgabenstellung:

Es ist ein Kryptologie - Toolchen zu entwickeln und zu testen, das aus XML-Quelltext ( incl. Hyperlinks und aktiven inneren ECMAScript-Code ) geschützte Web-Ressourcen erstellt.

Es sollen mehrere kleine, robuste ( auch historische ) Algorithmen zum Ver- und Entschlüsseln von UTF-8 Texten entworfen, in ECMAScript codiert und in einem Toolchen getestet werden. Die Algorithmen zum Ver- und Ent-Schlüsseln sind "self-made". Plagiate sind "out". Zu jedem Algorithmus wird angegeben, welche Angriffe erwartet werden, wie z.B. Ciphertext-only-Angriffen und ggf. Known-Plaintext-Angriffe. Das Toolchen erhält den Namen "Ver- und Entschlüsselungen". Das zu entwickelnde Toolchen soll aus XML-Quelltext ( incl. Hyperlinks und aktiven inneren ECMAScript-Code ) geschützte Web-Ressourcen erstellen.


Vorbetrachtungen Tummelplatz Internet

In der CHARTA DER GRUNDRECHTE DER EUROPÄISCHEN UNION (2000/C 364/01), dort im Artikel 8 steht:

Bei weltweiten Datenströmen und verteilten Datenspeicherungen gibt es undurchaubare, nationale Zuständigkeiten und fehlende Rechtsicherheiten. Multinationale Cloud-Security scheinen unlokalisierbar und zeigen irgendwie in ein weltweites, unduchschaubar-pfadiges Internet.

Schutz personenbezogener Daten
(1) Jede Person hat das Recht auf Schutz 
    der sie betreffenden personenbezogenen Daten.
(2) Diese Daten dürfen nur nach Treu und Glauben 
    für festgelegte Zwecke und mit Einwilligung 
    der betroffenen Person oder auf einer sonstigen 
    gesetzlich geregelten legitimen Grundlage 
    verarbeitet werden. Jede Person hat das Recht, 
    Auskunft über die sie betreffenden erhobenen 
    Daten zu erhalten und die Berichtigung der 
    Daten zu erwirken.

Das weltweite Internet ist ein unübersichtlicher Tummelplatz für Nutzware und Schadware (siehe z.B. Informationssicherheit ). Die Sicherheit in internationalen Netzen fordern eine hohe Sicherheit bei Browsern.
Informationssicherheit möchte ...

math. Risikofaktor = Eintrittswahrscheinlichkeit x Schadensausmaß

Hier einige Hinweise zur Informationssicherheit (Gremien, Organisationen, ECMAScript, JONSP): Geheim-Vertraulich-Intern-Öffentlich , Informationssicherheit (toter-Weblink) , Informationssicherheit (Organisationen) , Sicherheit (Gremien-und-Organisationen) , Online-Tracker , Laden-von-ECMAScript-Code , Was-meint-JSONP

Ggf. können auch die folgenden Weblinks Ideen zum Ver- und Entschlüsseln liefern: Kryptologie ( Einführung ) , clientseitige Experimente mit Zeichen , Crypt-Seite-erstellen . Zur Wiederholung können die folgenden Hinweise nützlich sein: Internet ( Gefährdungen ) , Kryptologie ( Einführung ) , Internet-FAQ's , Informatonssicherheit ( Self-Assessments ).

"Geheim, Vertraulich, Intern, Öffentlich" Was ist sicher/unsicher?

Was meint der Begriff Identität? Was ist ein Identitätsdiebstahl? In der Logik bezeichnet Identität das Prinzip der Ununterscheidbarkeit. In der Mathematik gibt die "Identische Abbildung" genau die Argumente zurück. Im Alltag bezeichnet Identität ausgewählte Eigenschaften und Eigentümlichkeiten, die die Identität mit Hilfe von Attributen festlegen sollen. Zu jedem Menschen gehört eine biologische Identität (de.wikipedia Genom ) und der Genetischer Code .

Was ist "Sicherheit"? Sicherheit ist ein fasettenreicher Begriff. Sicherheit umfaßt z.B. Technische Aspekte, Sicherheitstechniken, Angriffssicherheit, Betriebssicherheit, Systemsicherheit, und auch individuelle/zwischenmenschliche/kollektive/wirtschaftliche Sicherheiten.

Siehe auch Geheim-Vertraulich-Intern-Öffentlich .

Authentifizierung    möchte das "von wem" zusichern.
 Integrität              möchte die "Unveränderbarkeit" zusichern.
 Verbindlichkeit       möchte die "Unabstreitbarkeit" zusichern.
 Vertraulichkeit      möchte das "unbefugte Verbreiten von Geheimen" verhindern.
Siehe z.B. Seminararbeit Risiken durch Schadsoftware aus dem Internet.

Wer ist die "verbürgende Vertrauensautorität" ( propritär?, staatlich?, ... ) ? Zertifizierungsstellen und Zertifikate ( engl. CA = Certification Authority ). Zertifizierung und Stichworte, wie Gütesiegel‚ Gütezeichen oder Qualitätssiegel, Prüfzeichen oder Prüfsiegel. Siehe z.B. Prüfsiegel Zur Verbesserung der Informationssicherheit kann eine internationale Zertifizierung von Informationssystemen beitragen. Ein "sichers System" möchte die interne/externe Integrität und Konsistenz bewahren und unzulässige System-Modifikationen durch autorisierte/unautorisierte Anwender verhindern. Oft werden die folgenden Zustände unterschieden:

   Geheim
   Vertraulich
   ↑ nicht von oben lesen
   ↓ nicht nach unten schreiben

   Intern
   Öffentlich
Sichere Informationen? Ist RIA, ARIA, JSONP, XSS sicher?

Einführend wird eine ungewünschte Attacke gezeigt. Diese einfache Attacke kann in den Sicherheitsgrenzen des Browsers z.B. seitenübergreifende Cookies, tracking Cookies, localStore, Rückmeldungen per AJAX usw. benutzen.

Ein Link auf eine Seite, wie etwa die folgende Seite, würde dem Betrachter eine nicht vorhanden Seite ("hängenden Link") zeigen, was tatsächlich passiert, bleibt dem Betrachter verborgen. Siehe auch Laden-von-ECMAScript-Code .

<html><body>

<p> 404 File not found 
    <script>...</script>
</p> 

</body></html>
Malware-Klassifizierung Gefährdungsstufen

⇓ Von oben unten bedeutet von großen nach kleinen Threats. Siehe wikipedia Kategorie: Sicherheitslücken .

Net-Worm
E-Mail-Worm
IM-Worm, P2P-
Worm, IRC-Worm
siehe Computerwurm Verbreitungsarten
Backdoor,
Virus, Trojaner,
Rootkits ( Dropper, Hooks), Trojan-Downloader, -Droper, -PSW, -Spy, -DDoS,-Ramson,
Exploit, Seiten-
Hijacking
Lokale/Remote-Exploits,DoS-,Command-Execution-,SQL-Injection-,Zero-Day-Exploits
Kryptologie ( Repetition ) Public-Web-Sicherheit?

Kryptologie ("Lehre vom Verborgenen") besteht aus Kryptographie und Kryptoanalyse. Kryptographie beschäftigt sich mit der Konstruktion von Chiffren ("Verbergendes Schreiben"), Kryptoanalyse mit dem Brechen von Chiffren ("Untersuchung des Verborgenen"). Der Sprachgebrauch ist uneinheitlich. Die Begriffe "Code" und "Chiffre", und ebenso "Codierung/Verschlüsselung" und "Chiffrierung", sowie "Rückumwandlung" und "Dechiffrierung" werden oft nebeneinander (überdeckend) verwendet.

Das Web entwickelt sich von rein statischen Seiten hin zu Web-Applikationen. Das Acronym RIA ( Begriff Rich Internet Application, deutsch: reichhaltige Internet-Anwendung) beschreibt eine Anwendung, die Internet-Techniken benutzt und eine intuitive Benutzeroberfläche hat. RIA braucht Programmlogik auf dem Client. Im Web dienen Formulare der Dateneingabe. Formulareingaben können geprüft, übertragene Daten verschlüsselt werden. Webanwendungen können JavaScript, AJAX, JOSONP, Java Applets, Flash-Animationen, ActiveX-Plugins und mehr enthalten.

Beispiel: Kryptologie und Zufallszahlen

Siehe Zufallszahlen

Beispiel: ECMAScript und Bitwise Operatoren a & b, a | b, a ^ b, ~ a, a << b, a >> b, a >>> b

Siehe mozilla.org Bitwise Operatoren .

Beispiel: UTF-8-Zeichen als Byte-Folge verschlüsseln Crypt-Seite-erstellen

Um eine UTF-8 Zeichenfolge in eine Bytefolge (und umgekehrt) zu wandeln, können die eingebauten Funktionen escape(), unescape(), encodeURIComponent(), decodeURIComponent() verwendet werden, etwa

function byte_chrs_from_utf8_str(utf8) { var byte_chrs = '';
 try { byte_chrs = window.unescape(window.encodeURIComponent(utf8));
 } catch (e) { window.alert('ERR: byte_chrs_from_utf8_str utf8'); }
 return byte_chrs;
}
function utf8_str_from_byte_chrs(byte_chrs) { var utf8 = ''; 
 try { utf8 = window.decodeURIComponent(window.escape(byte_chrs));
 } catch (e) { window.alert('ERR: utf8_str_from_byte_chrs bytes'); }
 return utf8;
}
function hex_chars_from_utf8_str(utf8) {
 var i, c, byte_chrs = byte_chrs_from_utf8_str(utf8), hex_chars = "";
 for (i = 0; i < byte_chrs.length; i += 1) { c = byte_chrs.charCodeAt(i).toString(16);
  if (c.length == 2) { hex_chars += c; } else if (c.length == 1) { hex_chars += "0" + c; } 
 } return hex_chars;
}
function utf8_str_from_hex_chrs(hex_chrs) {
 var byte_chrs = hex_chrs.replace(/([0-9a-f]{2})/g,
  function (a,c) { return String.fromCharCode(parseInt(c,16));});
 return utf8_str_from_byte_chrs(byte_chrs);
}

Als Ausgangspunkt für Ver- und Entschlüsselungen von UTF-8-Klartexten kann die nachfolgende Funktion my_crypt(mod, str, key_utf8) verwendet werden:

function my_crypt(mod, str, key_utf8) {
var i, ii, j, jj, nn, cc, zz, k8, r, k, kl, s = [];
key_utf8 = key_utf8 || 'äöü+';
k8 = window.unescape(encodeURIComponent(key_utf8)); kl = k8.length;
switch (mod) {
case "encode": // wandelt utf-8 nach str aus 8-Bit-char xx
  str = window.unescape(encodeURIComponent(str)); break;
case "decode": // wandle xx in str aus 8-Bit-char
  cc = str; str = '';
  for (i = 0; i < cc.length - 1; i += 2) {
    str += String.fromCharCode(parseInt(cc.slice(i, i + 2), 16));
  } break;
default: return '';
}
for (i = 0; i < 256; i += 1) { s[i] = i; }
j = 0; 
for (i = 0; i < 256; i += 1) { ii = i % kl;
  j = (j + s[i] + k8.charCodeAt(ii)) % 256;
  zz = s[i]; s[i] = s[j]; s[j] = zz;
} ii = jj = nn = 0; r = '';
for (i = 0; i < str.length; i += 1) {
  ii = (ii + 1) % 256;
  jj = (jj + s[ii]) % 256;
  zz = s[ii]; s[ii] = s[jj]; s[jj] = zz;
  zz = s[(s[ii] + s[jj]) % 256];
  cc = str.charCodeAt(i) % 256;
  nn = (cc ^ zz) % 256;
  switch (mod) {
    case "encode": r += ('00' + nn.toString(16)).slice(-2); break;
    case "decode": r += String.fromCharCode(nn); break;
    default: return '';
  }
}
if (mod === "decode") {
  try { r = decodeURIComponent(window.escape(r)); } catch (e3) { return ''; }
} return r;
}


Teste my_crypt(mod, str, key_utf8)

1. UTF-8-Klartext eingeben


2. UTF-8-Passwort eingeben: 

3.  (Verschlüsselten Text als xx-Hex-Folge anzeigen ↓)


4.  (Entschlüsselten UTF-8-Text anzeigen ↓)


Wie kann eine Paßwort-Erweiterung mit Hash-Code gemacht werden?

Ein Passwort (und Teile davon) können zahlreiche Hash-Werte liefern, die das ursprüngliche Passwort "verkomplizierend erweitern" können. Ist das ursprüngliche Passwort unbekannt, so ist es auch das "verkomplizierte".

Nachfolgend eine einfache kryptografische Hash-Funktion, die zu einem String s einen Hash-Wert liefert. base kann 2,3,4,...,32 sein. Die Funktion kann für die einfache "Verhashung" von Text-Content, Datumsstempel, Metatdaten, Formularen oder anderer Formelement-Werte verwendet werden.

function myhash(s, base) {
  var i, h, g, c; base = base || 10;
  s = s.replace(/\r/g, '');
  if (!s || s === "") {return 0;} else { 
    h = 0; g = 0;
    for (i = s.length - 1; i >= 0; i -= 1) {
      c = parseInt(s.charCodeAt(i), 10);
      h = ((h << 6) & 0xfffffff) + c + (c << 14);
      if ((g = h & 0xfe00000) !== 0) { h = (h ^ (g >> 21)); }
    } return h.toString(base);
  }
}
Beispiel: Crypt-Seite-erstellen Wie

Es geht um den Schutz von sensiblen Informationen. Beispiel: Es gebe 5 Aktionen mit Text-Daten. Die Aktionen werden nacheinander ausgeführt. Zur den Aktionen A[i] gehören die Sicherheitsgrade S[i]. Die Gesamtsicherheit hängt stark von der ungünstigsten Einzelaktion ab. Beispiel:

  ———————|—————|—————|—————|—————|—————|
    i  = |  1  |  2  |  3  |  4  |  5  |
  ———————|—————|—————|—————|—————|—————|
  S[i] = | 99% | 99% | 73% | 99% | 99% |
  ———————|—————|—————|—————|—————|—————|

  Gesamtsicherheit = 0.99·0.99·0.73·0.99·0.99 = 0.70 = 70 %

Volksmund: Eine Kette ist so stark wie das schwächste Glied.

Sei 0 <= W1 < 1 die Wahrscheinlichkeit der Entschlüsselbarkeit der Transformationsverfahren V1 und 0 <= W2 < 1 die Wahrscheinlichkeit der Entschlüsselbarkeit der Transformationsverfahren V2, dann ist bei einer Hintereinanderschaltung der Transformationsmethoden V1 und V2 die Gesamtsahrscheinlichkeit der Entschlüsselbarkeit bei 2 Transformationsverfahren ist W = W1 * W2, wenn die Transformationsverfahren unabhängig voneinander sind. Zahlenbeisp. W = = W1 * W2 = 0.6 * 0.1 = 0.06 Beispiel: Aus dem Klartext KT ( Bytestrom ) werde mit dem Verfahren V1 und dem Schlüssel KS1 der Geheimtext GT1. Aus dem Geheimtext GT1 ( Bytestrom ) werde mit dem Verfahren V2 und dem Schlüssel KS2 der Geheimtext GT2. Dann sind 2 Schlüssel KS1 und KS2 erforderlich. Liefert z.B. der Quell-Bytestrom mit PW1 und V1 den Bytestrom BS1 von s Verfahren

Informationssicherheit ist mehr als nur SSL, HTTPS, Übertragungsverschlüsselung. Gefühlte Verläßlichkeit ist etwas "Ganzes und Gesamtes" und bezieht sich auf administrative, physische, technische Sicherheiten, auf das Personal, auf Sicherheiten bei Serverzugängen, auf gesetzte Datei-Rechte und Verzeichnisschutz, auf Client-/Server-seitige System- und Software-Schwachstellen und mehr ... Bei sensiblen Daten sind Datenschutz und Informationssicherheit wesentlich: z.B Vermeidung von wirtschaftlichen Schäden; Datensicherheit bei Gefahren und Bedrohungen; Recht auf informationelle Selbstbestimmung und Privatspäre, "gläserne Menschen", "Überwachungsstaaten", zusichern von Vertraulichkeit, Verfügbarkeit, Integrität, usw.

Aufgabe: Wie kann mit technisch-einfachen Möglichkeiten ein hinreichender Zugriffsschutz auf Web-Ressourcen erreicht werden? Wie kann im öffentlichen http-Web ein vollständiger Zugriffsschutz über alle Glieder gewährleistet werden? Wie können Formulardaten und Formular-Kontext-Daten, deren Übertragung und weltweite Speicherungen vor "unbefugten Einsichten in das Verborgene" technisch gewährleistet werden? Wie kann dies integrativ gehen

Bei weltweiten Datenströmen und verteilten Datenspeicherungen gibt es propritäre-nationale Zuständigkeiten und Abhängigkeiten und undurchaubare/unklare/unwirksame/fehlende Rechtsicherheiten. Im Zeitalter geostationärer Sateliten scheinen "Multinationale Cloud-Securities" ungreifbar, unlokalisierbar und verweisen irgendwie in ein weltweites, undurchschaubar-pfadiges Internet, mit "fleißigen Informationssammlern, unerkannten Wegelageren und selbstlosen W3C-Evangelisten".

H. Stanley Judd: The ultimate security is your understanding of reality.

Diese Aufgabe besteht darin, ein Tool mit dem Namen Kryptografisch geschützte Seite zu entwickeln. Ist der body-Quelltext einer HTML-Seite gegeben, so soll das Tool den gesamten Quelltext einer geschützten Seite erstellen, in der der body-Quelltext verschlüsselt ist. Die so verschlüsselt Seite kann wie eine normale HTML-Seite auf dem Server gespeichert und im Netz übertragen werden. Die Seite enthält kein Passwaort. Ein Nutzer braucht ein gültiges Passwort, damit er die Seite brauwserintern entschlüsseln kann, indem der cerschlüsselte-body-Text brauwserintern im Arbeitsspeicher entschlüsselt wird und der entschlüsselte brauwserinterne DOM-Baum die lesbare Seite rendert. Hierbei bleibt der Seitenquelltext der kryptografisch geschützte HTML-Seite ungeändert.

Wird als Ausgangsstring z.B. der HTML-body-Quelltext (ohne das body-Tag, aber z.B. mit a-Tags ) verwendet, so kann ein Toolchen die Verschlüsselung mit einem Erstellungspasswort durchführen und die HTML-Seite mit dem Header (einschließlich der Funktionen zum entschlüsseln) erzeugen (siehe z.B. erstelle eine kryptografisch geschützte HTML-Seite ). Plagiate sind "out". Auf Cookies wird verzichtet.

Plagiate sind out!
Viel Freude bei der Ausarbeitung!
Letzter Abgabetermine So 12.00 Uhr