Ver-/Entschlüsselungen ( self-made ) Erstelle ein Tool

Pearl S. Buck: "Die wahre Lebenskunst besteht darin, im Alltäglichen das Wunderbare zu sehen."

Browser werden vermehrt zu Allzweckwerkzeugen mit verbesserten Methoden und "zusichernden" Einstellungen. Browser werden vermehrt für Internet-Apps verwendet. Eine "unlokalisierbare, fraktale" Cloud-Security verweist auf ein "weites, unübersichtliches, pfadloses Internet".

Konrad Zuse ( 22.06.1910 Berlin - 18.12.1995 in Fulda ):
"Die Gefahr, dass der Computer so wird wie der Mensch, ist nicht so groß wie die Gefahr, dass der Mensch so wird wie der Computer."

Dies ist der gedankliche Hintergrund dieser Lehraufgabe. Hier die Kurzfassung der Aufgabenstellung:

Einige Vorbetrachtungen ... Was ist im Internet sicher?

Das Web entwicklt sich von einem rein statischen Seitenlieferanten hin zu einem Ausliefern von Clienseitigen 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.

Webanwendungen können JavaScript, AJAX, JOSONP, Java Applets, Flash-Animationen, ActiveX-Plugins und mehr enthalten.

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.

Zur Vorbereitung des gesamten Kryptographie-Projektes können die folgenden Hinweise nützlich sein: Internet ( Gefährdungen ) , Internet-FAQ's , Kryptologie ( Einführung ) , de.wikipedia: Kryptologisches_Verfahren (Kategorien), Klassische Kryptologie (Kategorien), kryptologische Verfahren und Protokolle (Kategorien), Verschlüsselungsverfahren , Blockverschlüsselung (wie DES, Camellia, RC2, 3DES, FEAL, RC6, AES, Blowfish, Serpent, IDEA, Twofish, Skipjack, CAST, MARS, TEA, XTEA), Homophone Verschlüsselung , Hypertext Transfer Protocol Secure , WPA2 , Stromverschlüsselung wie z.B. RC4 ( HTTPS, SSH 1, WEP, WPA, ... ), Linear rückgekkoppeltes Schieberegister en.wikipedia: Comparison Of Stream Ciphers , One-Time-Pad

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

Textuelle Informationen sind in Strings unterschiedlicher Art codiert. Die Kenntnis von Strings, deren Aufbau, deren Funktionen ist mehr oder minder spezifisch. Deshalb kann ein Toolchen sinnvoll sein, das sowohl ECMAString- als auch PHP-Funktionen ausführen und untersuchen kann.

"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 Genom - Identität. Siehe aus de.wikipedia: Genom und 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.

 
 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.

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 nach oben schreiben ↓ nicht nach unten lesen   
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.

<html><body>

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

</body></html>
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 encode_utf8(str) {
  try { str = unescape(encodeURIComponent(str)); 
  } catch (e1) { /*win.alert('ERR: encode_utf8()');*/ }
  return str;
}
function decode_utf8(str) {
  try { str = decodeURIComponent(escape(str)); 
      } catch (e2) { /*win.alert('ERR: decode_utf8()');*/ }
  return str;
}

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 Hash-Funktion, die zu einem String s einen Hash-Wert liefert. base kann 2,3,4,...,32 sein.

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);
  }
}
Einige Weblinks externe und interne

Einige ( externe/interne ) Weblinks: Internet ( Gefährdungen ) , Internet-FAQ's , Kryptologie ( Einführung ) , Kryptologisches_Verfahren , Klassische Kryptologie , kryptologische Verfahren und Protokolle , Verschlüsselungsverfahren , Blockverschlüsselung , Homophone Verschlüsselung , Hypertext Transfer Protocol Secure , WPA2 , Stromverschlüsselung , RC4 , Linear rückgekkoppeltes Schieberegister , Comparison Of Stream Ciphers , One-Time-Pad , Informationssicherheit , Authentifizierung , Integrität , Verbindlichkeit , Vertraulichkeit , Zertifizierung , Prüfsiegel , Sicherheit , Zertifizierung von Informationssystemen

Viel Freude bei der Ausarbeitung!
Letzter Abgabetermine So 12.00 Uhr