26.02.2014 Aufrufe

Linux-Magazin Clean Linux (Vorschau)

Sie wollen auch ein ePaper? Erhöhen Sie die Reichweite Ihrer Titel.

YUMPU macht aus Druck-PDFs automatisch weboptimierte ePaper, die Google liebt.

der Benutzerkennung aus » additional-<br />

Data« für die Verschlüsselung per »encrypt()«<br />

(Zeile 13) und die Entschlüsselung<br />

mit »decrypt()« (Zeile 15).<br />

Die Werte für den Initialisierungsvektor<br />

und die Benutzerkennung muss der Programmierer<br />

als Bytefolge angeben. Die<br />

Konvertierung übernimmt die Funktion<br />

»hex2bin()«. Innerhalb der Encrypt-Funktion<br />

importiert Zeile 11 mit »polycrypt.<br />

importKey()« den Schlüssel aus Zeile 1.<br />

Die Formatangabe »raw« im Aufruf erfordert<br />

es, den Schlüssel in eine Bytefolge<br />

umzuwandeln.<br />

Die Funktion »importKey()« führt der<br />

Browser genauso wie die API-Methoden<br />

Encrypt, Decrypt, Generatekey, Sign oder<br />

Verify asynchron aus. Im Erfolgsfall ruft<br />

er für alle Methoden die angegebene<br />

Rückruffunktion zum Ereignis »oncomplete«<br />

auf. Die Zeilen 11 bis 20 zeigen<br />

diese Rückruffunktion. Sie verwendet<br />

den importierten Schlüssel in der Variablen<br />

»key« im Encrypt-Aufruf (Zeile 13)<br />

zum Verschlüsseln.<br />

Im Aufruf von Decrypt (Zeile 15) dient er<br />

zum Entschlüsseln der Nachricht aus der<br />

Variablen »text« (Zeile 10). Die ver- und<br />

die entschlüsselte Nachricht konvertiert<br />

»bin2str()« vor der Ausgabe auf die Konsole<br />

in eine lesbare Zeichenkette (Zeilen<br />

16, 17). Abbildung 1 zeigt das symmetrische<br />

Verschlüsseln im Einsatz.<br />

Zum Schutz von Anwendungsdaten beim<br />

Übertragen mittels Websockets oder Web<br />

Abbildung 1: Die Konsole im Browser Chrome wertet mit Polycrypt den Aufruf »encrypt("abc")« aus.<br />

RTC eignet sich das asymmetrische Verschlüsselungsverfahren<br />

RSA [10]. Im<br />

Gegensatz zu einem symmetrischen Verfahren<br />

verwendet RSA ein Schlüsselpaar.<br />

Die beiden Kommunikationspartner verwenden<br />

den jeweils fremden öffentlichen<br />

Schlüssel zum Verschlüsseln und ihren<br />

eigenen privaten Schlüssel zum Entschlüsseln<br />

einer Nachricht.<br />

Unterschreiben<br />

Daneben eignet sich RSA dazu, Nachrichten<br />

mit einer Signatur zu unterschreiben,<br />

mit der sich die Echtheit überprüfen<br />

lässt. Listing 2 zeigt die Kombination<br />

von RSA und Web Cryptography API zum<br />

Signieren einer Nachricht. Das Konfigurationsobjekt<br />

in den Zeilen 1 bis 7 macht<br />

Angaben für das Erzeugen eines Schlüsselpaars<br />

im Aufruf von »generateKey()«<br />

(Zeile 14): Das Feld »name« wählt eine<br />

Variante des RSA-Algorithmus, »modulusLength«<br />

das zu verwendende Modul<br />

und »publicExponent« den öffentlichen<br />

Exponenten. Die Zeilen 8 bis 11 speichern<br />

ein Konfigurationsobjekt zur Parametrisierung<br />

der Aufrufe der Methoden<br />

»sign()« (Zeile 16) und »verify()« (Zeile<br />

18). Der Parameter »hash« bestimmt den<br />

Algorithmus SHA-1, der die Prüfsumme<br />

über die Nachricht »text« bildet.<br />

Die Rückruffunktion zum Aufruf von<br />

»generateKey()« und zum Ereignis »oncomplete«<br />

(Zeilen 14 bis 22), verwendet<br />

in Zeile 16 den privaten Schlüssel aus der<br />

HTML-5-DRM 09/2013<br />

Programmieren<br />

www.linux-magazin.de<br />

99

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!