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