26.02.2014 Aufrufe

Linux-Magazin Clean Linux (Vorschau)

Erfolgreiche ePaper selbst erstellen

Machen Sie aus Ihren PDF Publikationen ein blätterbares Flipbook mit unserer einzigartigen Google optimierten e-Paper Software.

Programmieren<br />

www.linux-magazin.de HTML-5-DRM 09/2013<br />

98<br />

HTML 5 zwischen Verschlüsselung und DRM<br />

Schlüssel fürs Web<br />

Im Rahmen von HTML 5 erhalten Webbrowser die Fähigkeit, Inhalte zu verschlüsseln. Das Sicherheitsfeature<br />

hat sich nun zum Politikum entwickelt, denn die Anbieter von digitalen Inhalten möchten es für Digital Rights<br />

Management (DRM) verwenden. Hier ein freier Blick auf die Technik. Andreas Möller, Mathias Huber<br />

© feverpitched, 123RF.com<br />

Die modernen Webtechnologien, die<br />

HTML 5 zusammenfasst, stehen eigentlich<br />

für Offenheit. Sie ermöglichen Webanwendungen<br />

in HTML, Javascript und<br />

CSS, die ohne proprietäre Fremdkörper<br />

wie Adobe Flash oder Microsoft Silverlight<br />

auskommen. Doch ausgerechnet<br />

aus der HTML-5-Ecke sehen die Verfechter<br />

des offenen Web nun eine neue Gefahr<br />

heraufziehen.<br />

Im Zuge der Verschlüsselungsfunktionen<br />

in HTML 5 möchten Anbieter, zum<br />

Beispiel der Online-Filmverleih Netflix<br />

oder die britische Rundfunkanstalt BBC,<br />

Digital Rights Management (DRM) für<br />

digitale Inhalte umsetzen. Netflix bezeichnet<br />

den Kopierschutz als „HTML 5<br />

Premium Video Extensions“ [1] und die<br />

BBC sieht es als gerechtfertigt an, ihre<br />

Sendungen nur den britischen Gebührenzahlern<br />

zugänglich zu machen [2].<br />

Der passende Vorschlag beim Standardisierungsgremium<br />

W3C heißt Encrypted<br />

Media Extensions (EME) und befindet<br />

sich im Entwurfsstadium [3].<br />

Technisch fußt das geplante DRM auf<br />

der künftigen Fähigkeit von Webbrowsern,<br />

Anwendungsdaten mit Hilfe von<br />

Javascript zu ver- und entschlüsseln. Die<br />

Programmierschnittstelle dafür ist im<br />

Web Cryptography API [4] spezifiziert,<br />

das ebenfalls als Entwurf beim W3C liegt.<br />

Ergänzend zur Transportsicherung per<br />

HTTPS lassen sich damit Anwendungsdaten<br />

verschlüsseln, etwa vor dem Speichern<br />

in der Cloud oder vor ihrer Übertragung<br />

mittels Websockets oder Web RTC.<br />

Polyfills<br />

Die Implementierung des Web Cryptography<br />

API im Chrome-Browser [5] sowie<br />

im Mozilla Firefox [6] hat bereits<br />

begonnen. Bis die Browser die volle<br />

Unterstützung mitbringen, dienen so genannte<br />

Polyfills dazu, einzelne Features<br />

nachzurüsten. Bei diesen – nach einer<br />

beliebten britischen Spachtelmasse benannten<br />

– Browser-Ausbesserungen handelt<br />

es sich um Javascript-Bibliotheken,<br />

die ein Webbrowser bei Bedarf aus dem<br />

WWW lädt.<br />

Dazu zählt auch Polycrypt [7], das zwar<br />

einen älteren Entwurf des Web Cryptography<br />

API implementiert, sich aber gut<br />

zu Demonstrationzwecken eignet. Seine<br />

Lizenz ist unklar, es steht aber im Web<br />

zur kostenlosen Verwendung bereit. Der<br />

Entwickler bindet Polycrypt wie jede andere<br />

Javascript-Datei in ein HTML-Dokument<br />

ein. Damit das Polyfill funktioniert,<br />

muss er das HTML-Dokument über einen<br />

Webserver laden. Abbildung 1 zeigt<br />

Polycrypt im Einsatz auf der Javascript-<br />

Konsole des Browsers.<br />

Eine weitere Implementierung ist Webcrypto<br />

von Netflix [8]. Im Unterschied<br />

zu Polycrypt ist es aber keine Javascript-<br />

Bibliothek, sondern ein nativ kompiliertes<br />

Browser-Plugin für Google Chrome.<br />

Symmetrische<br />

Verschlüsselung<br />

Zum Schutz von Anwendungsdaten in<br />

einer Cloud ist das symmetrische Verschlüsselungsverfahren<br />

AES [9] geeignet.<br />

Listing 1 zeigt seine Verwendung<br />

zusammen mit dem Web Cryptography<br />

API. Zeile 1 speichert einen (im Listing<br />

gekürzten) Schlüssel zum Ver- und Entschlüsseln<br />

von Anwendungsdaten in der<br />

Variablen »encRawKey« als hexadezimale<br />

Zahlenfolge ab. Die Variable »encAlg« in<br />

den Zeilen 2 bis 9 speichert ein Konfigurationsobjekt.<br />

Dieses wählt im Feld »name« den AES-<br />

Algorithmus im Betriebsmodus GCM mit<br />

dem Initialisierungsvektor aus »iv« und

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

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!