Das LCP DRM für ebooks in der Onleihe

Die deutschen Bibliotheken nutzen eine gemeinsame Plattform "Onleihe", auf der man digitale Bücher, Musik und Filme ausleihen kann. Technisch wird seit 2018 "LCP" als DRM-Technologie eingesetzt. Damit wird verhindert, daß ausgeliehene Bücher länger als erlaubt gelesen werden.

LCP steht für "Licensed Content Protection" und wurde von der Readium Foundation entwickelt, hauptsächlich von der französischen Firma European Digital Reading Lab. Im Gegensatz zum vorher verwendeten Adobe Digital Editions muss man sich dafür nicht registrieren und braucht auch keinen PC, um die Bücher auf den e-Reader zu bringen: Tolino-Geräte und andere haben LCP integriert.

Manchmal wird dieser Kopierschutz als "CARE" bezeichnet. CARE ist aber eine Software der Firma vivlio, mit der man Bücher mit LCP verschlüsseln und verteilen kann. Diese Server-Software wird vermutlich von der Onleihe verwendet.

Man öffnet im Browser die Website der Onleihe, meldet sich mit den Kundendaten seiner Bibliothek an und kann Bücher direkt ausleihen. Dazu wählt man die Ausleihdauer (2, 4, 7, 14 oder 21 Tage) und bekommt eine .lcpl-Datei zum Download. Der ebook-Reader liest die Lizenzdatei ein, lädt die dazugehörige .epub-Datei runter und packt sie in die Bücherliste.

Man wird dabei nach dem Onleihe-Code gefragt. Er ist 4-stellig, besteht aus kleinen Buchstaben und Zahlen, und ist für jeden Benutzer fest - also für alle Bücher gleich. Der Reader merkt sich den Code und wenn man ein Buch öffnet, wird das aktuelle Kapitel mit diesem Code entschlüsselt und angezeigt.

Ein Buch wurde ausgeliehen Liste der ausgeliehenen Bücher

Wenn man den User-Agent ändert, kann man den eReader-Modus der Onleihe auch in einem normalen Browser aktivieren:

Mozilla/5.0 (Linux; Android 4.4.2; en-; tolino vision 3 HD/14.1.0) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/30.0.0.0 Mobile Mobile Safari/537.36 READER OS_BUILD/KOT49H.41429.1044823

Siehe auch: Readium LCP: Principles.

Technischer Aufbau von LCP

Die Spezifikation von LCP ist frei verfügbar. Die Readium Licensed Content Protection 1.0 ist die, in der es um die Verschlüsselung geht.

LCPL

Die von der Onleihe runtergeladene .lcpl-Lizenzdatei beschreibt die Restriktionen: Von wann bis wann der Inhalt entschlüsselt werden darf (Ausleihzeitraum), wie viele Seiten gedruckt werden und wie viele Zeichen in die Zwischenablage kopiert werden dürfen. (Lustigerweise ist nicht wirklich definiert, was eine Seite ist.)

Weiterhin enthält sie einen Link zum Runterladen der verschlüsselten .epub-Datei und den Schlüssel, mit dem deren Inhalt entschlüsselt werden kann - dieser ist aber selbst noch mit dem Benutzerschlüssel verschlüsselt.

Der Benutzerschlüssel ist ein SHA-256-Hash des vierstelligen Codes, der in der Onleihe unter dem "Download"-Knopf angezeigt wird.

Sobald man die Lizenzdatei und die ebook-Datei heruntergeladen hat, kann man komplett Offline entschlüsseln und lesen.

Weiterhin enthält die Lizenzdatei auch noch eine ID in normaler und verschlüsselter Form. Damit kann man schnell prüfen, ob der vom Benutzer eingegebene Code korrekt ist. Auf der anderen Seite erlaubt es das Angreifern auch, Codes ohne großen Aufwand durchzuprobieren.

epub

Eine .epub-Datei ist eine .zip-Datei, und eine mit LCP verschlüsselte epub sind immer noch eine .zip-Datei. Darin gibt es die Datei META-INF/encryption.xml, die eine Liste der verschlüsselten Dateien enthält.

Einige Dateien wie der Index sind nicht verschlüsselt, aber die Textkapitel und (Cover)bilder sind meist alle verschlüsselt.

Da der Inhalt von epub-Dateien meist auf mehrere HTML-Dateien aufgeteilt ist, muss der eReader auch nicht gleich das ganze Buch entschlüsseln - sondern nur das Kapitel, das gerade gelesen wird.

Sicherheit

Da die Onleihe-Codes auf kleine Buchstaben und Ziffern beschränkt sind, gibt es nur 36^4 = 1.679.616 mögliche Schlüssel - etwas weniger als 21 Bit. Das ist für ein Verschlüsselungssystem ziemlich wenig; SSH- und SSL-Schlüssel haben seit zehn Jahren mindestens 2048 Bit. Sicherheitstechnisch kann man das nicht ernst nehmen.

Die Anforderungen an LCP sagen uns, warum das so ist:

A key objective in providing “some level of protection” is to take advantage of anticircumvention law, [...]

Anticircumvention law makes it a criminal offense to circumvent an “effective technical protection measure.”[5] The law does a poor job of defining this term. While courts have refused to set a bar for “effectiveness” such that any technology below the bar is not entitled to protection under the law,[6] there is some evidence to suggest that a technology that is particularly ineffective could face such a challenge.[7]

[...]

To be very clear on this point: we expect that a lightweight DRM (in reality, any DRM) will be cracked, and we are relying on anticircumvention law for some level of crack protection.

LCP ist also der Versuch mit minimalem Aufwand einen Kopierschutz zu bauen, der von Gerichten als "wirksame technische Maßnahme" anerkannt wird. Damit sollen Umgehungsversuche und -software gesetzlich strafbar sein.

Ich denke aber nicht, daß nur 1,6 Millionen Möglichkeiten ein wirksamer Kopierschutz sind.

Update 2023-08: Encryption profiles

Readium führt eine Liste mit "Verschlüsselungsprofilen" - dort werden alle erlaubten Verschlüsselungsalgorithmen aufgeführt. 2023-08 sind das folgende:

http://readium.org/lcp/basic-profile
Basic Encryption Profile 1.0, used for testing purpose only
http://readium.org/lcp/profile-1.0
Production Encryption Profile 1.0, defined by EDRLab

Das "Basic Encyption Profile" ist in der öffentlich verfügbaren Spezifikation bescrieben, aber das "Production Encryption Profile" ist nicht öffentlich.

Das EDRLab verfolgt alle, die Informationen dazu öffentlich verfügbar machen oder freie Software anbieten, die das Profil implementiert:

Written by Christian Weiske.

Comments? Please send an e-mail.