Das PDF-Format bietet die Möglichkeit, die Inhalte eines PDF-Dokuments zu verschlüsseln. Die jadice document platform bietet Unterstützung für die gängigen zu diesem Zweck verwendeten Verschlüsselungsverfahren. Per Definition sind verschlüsselte PDFs zusätzlich mit einem Berechtigungskonzept versehen, das dem Ersteller des Dokuments erlaubt zu definieren, welche Aktionen[39] damit möglich sein sollen. Auch dieses Berechtigungskonzept wird von der jadice document platform aufgenommen und umgesetzt.

Die PDF Referenz[40] legt bindend fest, wie mit verschlüsselten Dokumenten umgegangen werden muss. Insbesondere wird zwingend gefordert, dass Applikationen, die PDF-Dokumente anzeigen, die darin festgelegten Berechtigungen respektieren und durchsetzen müssen. Für Integrationen der jadice document platform bedeutet dies, dass diese Verantwortung zwischen jadice und der integrierenden Applikation geteilt wird. Die Berechtigungen werden durch jadice ausgelesen, in den mitgelieferten Komponenten beachtet und dem Integrator zur Verfügung gestellt. Es ist Aufgabe und Verantwortung des Integrators, für eine korrekte Beachtung der Berechtigungen in der resultierenden Gesamtanwendung zu sorgen.[41]

Zur Umsetzung der Verschlüsselungs-Funktionalitäten wird in PDF das Konzept eines Security Handlers definiert. Es handelt sich dabei um ein PDF-internes Verfahren, das den eigentlichen Ver-/Entschlüsselungsvorgang durchführt. Von jadice wird das üblicherweise verwendete Verfahren ›Standard Security Handler‹ unterstützt.[42] Dieser Handler fordert zum Ver- und Entschlüsseln die Angabe eines Passworts. Im Besonderen kann dieses Passwort auch ein leerer String sein, was dazu führt, dass das Dokument zwar verschlüsselt ist und über Berechtigungen verfügt, trotzdem aber ohne Angabe eines Passworts geöffnet werden kann.

Der Standard Security Handler arbeitet für jedes Dokument mit zwei unterschiedlichen Passwörtern:

User Password

Ein Passwort, das für jedes Öffnen des Dokuments eingegeben werden muss. Bei korrekter Eingabe des Passworts wird dem Nutzer ermöglicht, das Dokument zu betrachten und, falls die geltenden Berechtigungen dies erlauben, weitere Aktionen damit durchzuführen.

Owner Password

Ein Passwort, das unabhängig der gesetzten Berechtigungen vollen Zugriff auf das Dokument gewährt. Dies umfasst auch das Recht, die Berechtigungen selbst abzuändern.

Die jadice document platform erkennt nach Eingabe eines Passworts selbstständig, welches der beiden Passwörter verwendet wurde, und gewährt die entsprechenden Rechte.

Die Legitimationsdaten, die notwendig sind um das Dokument zu entschlüsseln, müssen durch den Integrator bereitgestellt werden. Zu diesem Zweck muss eine Instanz einer Implementierung von CryptoMaterialProvider erstellt und vor dem Lesevorgang bekannt gemacht werden. Im Fall des Standard Security Handlers muss ein Passwort mit Hilfe eines PasswordMaterial Objekts zur Verfügung gestellt werden.

Die Bekanntmachung des CryptoMaterialProviders erfolgt, indem vor dem Lesevorgang das PDFStandardSecurityHandlerSettings Objekt angefordert wird. Darauf muss die Provider-Instanz gesetzt werden.[43]

Der gesetzte Provider wird angefragt, falls für den Lesevorgang Legitimationsdaten benötigt werden. Um diese bereitzustellen, wird dem Provider eine Instanz von CryptoMaterialReceiver übergeben. Der Receiver nimmt die Daten entgegen und gibt als Antwort zurück, ob diese valide sind um die Entschlüsselung des Dokuments durchzuführen. Falls keine Möglichkeit besteht, für ein gegebenes Dokument valide Legitimationsdaten zur Verfügung zu stellen, kann die Methode CryptoMaterialReceiver.cancel() aufgerufen werden, was nach Rückkehr aus dem Provider zum Abbruch des Ladevorgangs führt.

Fehler die während des Entschlüsselungsvorgangs eines Dokuments auftreten, werden durch Werfen einer PDFSecurityException dem Aufrufer mitgeteilt. Es handelt sich bei dieser Ausnahme um eine Variante der JadiceException, die generell während eines Lesevorgangs auftreten kann. Details zum aufgetretenen Fehler werden über die qualifizierte ID der Exception mitgeteilt.

Im Besonderen können PDFSecurityExceptions dann entstehen, wenn die zur Entschlüsselung eines Dokuments notwendigen Legitimationsdaten nicht zur Verfügung gestellt werden. Eine Entschlüsselung ist dann nicht möglich und der Ladevorgang kann daher nicht fortgeführt werden.

Das PDF-Format definiert verschiedene Berechtigungen, die Nutzern von Dokumenten eingeräumt oder verweigert werden können. Jede einzelne Berechtigung wird dadurch festgelegt, ob ein zugehöriges Bit gesetzt ist oder nicht.[44]

Ein separates Konzept zur Steuerung von Berechtigungen existiert in der jadice document platform.[45] Die durch ein PDF-Dokument definierten Berechtigungen werden während des Lesevorgangs auf entsprechende Instanzen von PageSegmentPermission abgebildet. Diese jadice-Berechtigungen werden wiederum auf jedem PageSegment gesetzt, das durch den Lesevorgang erzeugt wird. Die Steuerung von Rechten innerhalb der jadice document platform erfolgt ausschließlich auf Basis dieser Permissions.

Die aus PDF stammenden Berechtigungen werden zusätzlich (ohne Abbildung auf jadice-Berechtigungen) in die Metadaten[46] jedes aus dem Lesevorgang resultierenden PageSegments übernommen. Für jede Berechtigung werden die Bit-Position, ein zugehöriger Identifikations-Key, sowie der gesetzte Status (erlaubt/verboten) angegeben.

Der in PDF definierte und von jadice unterstützte Standard Security Handler existiert in unterschiedlichen Revisionen, die auch unterschiedliche – wenngleich ähnliche – Berechtigungen anbieten. Revision zwei bietet vier unterschiedliche Berechtigungen an. Für Version drei und höher kommen vier weitere hinzu. Die folgenden beiden Tabellen geben einen Überblick über die einzelnen Berechtigungen mit ihrer Bit-Position, Bedeutung und dem zugehörigen Metadaten Identifikations-Key. Zusätzlich wird die Abbildung auf jadice Permissions angegeben und es wird skizziert, wie das Fehlen einer Berechtigung die Arbeit mit der Applikation beeinflusst. Es ist Aufgabe des Integrators, die gesetzten jadice-Berechtigungen auch in eigenem Code zu beachten, sowie ein konsistentes, mit der PDF Spezifikation konformes Verhalten der Gesamtapplikation umzusetzen.

Tabelle 6.1. Mapping von PDF Standard Security Handler Permissions (Revision 2) auf jadice Permissions
Bit Position Bedeutung Metadata Key jadice Permission Auswirkung bei fehlender Berechtigung
3 Druck permission.print.general PageSegmentPermission.ALLOW.output Exception bei Export-Versuch (zum Beispiel Druck, TIFF-Converter).
4 Inhalts-Modifikation (Operationen, die nicht durch Bit 6 gesteuert werden) permission.modify.general PageSegmentPermission.ALLOW.modification Exception bei Export-Versuch. Es ist Aufgabe des Integrators, sicherzustellen dass keine unerlaubten Modifikationen vorgenommen werden.
5 Inhalts-Extraktion permission.extract.general PageSegmentPermission.ALLOW.export Kopieren/Extrahieren von Inhalten (zum Beispiel über die Zwischenablage) wird verhindert. Mitgelieferte Commands beachten diese Berechtigung. Es ist Aufgabe des Integrators, die Berechtigung in eigenen Commands zu beachten.
6 Modifikation von Annotationen und Interactive Form Fields permission.modify.annos-and-fields PageSegmentPermission.ALLOW.modification Modifikation von Annotationen und Interactive Form Fields ist aktuell keine von jadice unterstützte Funktion.

Tabelle 6.2. Mapping von PDF Standard Security Handler Permissions (Revision 3 und größer) auf jadice Permissions
Bit Position Bedeutung Metadata Key jadice Permission Auswirkung bei fehlender Berechtigung
3 Druck (Qualität abhängig von Bit 12) permission.print.general PageSegmentPermission.ALLOW.output Exception bei Export-Versuch (zum Beispiel Druck, TIFF-Converter).
4 Inhalts-Modifikation (Operationen, die nicht durch Bits 6, 9 und 11 gesteuert werden) permission.modify.general PageSegmentPermission.ALLOW.modification Exception bei Export-Versuch. Es ist Aufgabe des Integrators, sicherzustellen dass keine unerlaubten Modifikationen vorgenommen werden.
5 Inhalts-Extraktion (Operationen, die nicht von Bit 10 gesteuert werden) permission.extract.general PageSegmentPermission.ALLOW.export Kopieren/Extrahieren von Inhalten (zum Beispiel über die Zwischenablage) wird verhindert. Mitgelieferte Commands beachten diese Berechtigung. Es ist Aufgabe des Integrators, die Berechtigung in eigenen Commands zu beachten.
6 Modifikation von Annotationen und Interactive Form Fields permission.modify.annos-and-fields PageSegmentPermission.ALLOW.modification Modifikation von Annotationen und Interactive Form Fields ist aktuell keine von jadice unterstützte Funktion.
9 Ausfüllen von Interactive Form Fields (auch wenn Bit 6 nicht gesetzt ist) permission.modify.fields-and-sig PageSegmentPermission.ALLOW.modification Modifikation von Interactive Form Fields ist aktuell keine von jadice unterstützte Funktion. Hinzufügen von Signatur-Feldern ist nicht im Standard-Lieferumfang der jadice document platform enthalten.
10 Inhalts-Extraktion für Accessibility permission.extract.accessibility Analog zu aktuellen Entwicklungen im Bereich PDF-Verarbeitung und PDF-Standard lässt jadice die Extraktion zum Zweck der Accessibility generell zu.
11 Inhalts-Zusammenstellung permission.modify.assemble PageSegmentPermission.ALLOW.modification Exception bei Druck-Versuch. Es ist Aufgabe des Integrators, sicherzustellen dass keine unerlaubten Modifikationen vorgenommen werden.
12 Druck in voller Qualität permission.print.high PageSegmentPermission.ALLOW.output Exception bei Export-Versuch (zum Beispiel Druck, TIFF-Converter).

Unter „Beispiel zur Verwendung der PDF Security API finden sich Anwendungsbeispiele, die die Benutzung der PDF Verschlüsselungs-API veranschaulichen. Eine vollständige Integration der zur Verfügung stehenden Möglichkeiten findet sich in der Demo-Anwendung. Passwortabfragen werden darin mit Hilfe des PDFPasswordProviderTools an den Nutzer weitergegeben.[47]



[39] Solche Aktionen können beispielsweise Verändern, Zusammenstellen oder Ausdrucken von Dokumenten sein.

[40] PDF wird in seiner aktuellsten Version 1.7 durch den ISO-Standard ISO 32000-1:2008 definiert [ISO 32000-1:2008]. Eine laut Adobe inhaltsgleiche Version steht zudem unter [PDF 32000-1:2008] kostenfrei zur Verfügung. Für das Thema ›Verschlüsselung‹ ist hauptsächlich Abschnitt 7.6, ›Encryption‹, relevant.

[41] Diese Anforderung geht beispielsweise aus folgender Festlegung des PDF-Standards hervor:

 

Conforming readers shall respect the intent of the document creator by restricting user access to an encrypted PDF file according to the permissions contained in the file.

 
 [PDF 32000-1:2008], 7.6.3.1 ›General

[42] Details zum Standard Security Handler finden sich in [PDF 32000-1:2008], 7.6.3 ›Standard Security Handler‹.

[43] Es wird an dieser Stelle das Konzept der Reader Controls verwendet. Allgemeine Informationen dazu finden sich unter ReaderControls und ReaderSettings.

[44] Die Definition und Bedeutung der einzelnen Berechtigungen wird Erläutert in [PDF 32000-1:2008], 7.6.3.2 ›Standard Encryption Dictionary‹.

[45] Details zur Struktur des Berechtigungskonzepts in jadice finden sich unter „Berechtigungskonzept“.

[46] Allgemeine Informationen zum Thema ›Metadaten‹ finden sich unter „Metadaten im jadice Dokumentenmodell“.

[47] Der Quellcode der Demo-Anwendung steht im Sinne der unter „Demo-Integrationen“ gegebenen allgemeinen Informationen zur Verfügung.

[jadice document platform Version 5.3.3.12: Dokumentation für Entwickler. Veröffentlicht: 2017-03-24]
loading table of contents...