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