Verschlüsselte PDFs

Überblick über die Verschlüsselung in PDF

Das Konzept der Verschlüsselung von PDF-Dokumenten wurde in verschiedenen Varianten definiert. Die üblichste Methode ist das Verschlüsseln des Dokument mittels des "Standard Security Handler", welcher eine Verschlüsselung mit zwei unterschiedlichen Passwörtern erlaubt:

  • Verschlüsselung mit Master-Passwort: Es ist möglich Dokumente zu verschlüsseln, jedoch bei der Anzeige des Dokuments kein Passwort zu verlangen. In diesem Fall wurde das Dokument mittels eines so genannten Master-Passworts verschlüsselt, welches verhindern soll, dass Unberechtigte die Verschlüsselung des Dokuments entfernen.
  • Verschlüsselung mit zusätzlichem Viewer-Passwort: Bei dieser Variante ist es möglich zusätzlich zum Master-Passwort auch ein Viewer-Passwort zu setzen. Um das Dokument öffnen zu können, ist das Eingeben eines Viewer-Passworts erforderlich.

Mit der Verschlüsselung der Dokumente müssen auch Berechtigungen für das Dokument vergeben werden. Im besten Fall ist es hierbei so, dass das Dokument relativ "normal" verwendet werden kann. Zusätzlich ist es jedoch möglich die Verwendung des Dokuments einzuschränken. Beispiele für derartige Einschränkungen sind:

  • Dokument darf nicht gedruckt werden
  • Texte dürfen nicht extrahiert werden
  • Hinzufügen oder ändern von Annotationen verbieten

jadice unterstützt hauptsächlich PDF/A. PDF/A ist als Standardformat für die Langzeitarchivierung ausgelegt mit dem Ziel eine langfristige, uneingeschränkte Nutzbarkeit von PDF-Dokumenten zu gewährleisten. Eine Verschlüsselung spricht gegen diesen Grundsatz und ist daher in PDF/A nicht zulässig. Ungeachtet dessen besteht seit jadice document platform 5.3.0.0 die Möglichkeit, verschlüsselte PDF-Dokumente anzuzeigen. In vorhergehenden Versionen besteht die Möglichkeit, solche Dokumente zu erkennen und sie einem alternativen Workflow zu übergeben.

Verschlüsselte Dokumente ab jadice document platform 5.3.0.0

Die Anzeige von Dokumenten, die den "Standard Security Handler" nutzen, wird unterstützt. Details finden sich in der Dokumentation unter PDF Verschlüsselung.

Sollte in seltenen Fällen ein Dokument einen alternativen Security Handler verwenden, ist die Anzeige nicht möglich. In diesen Fällen wird ein QualifiedLogEvent erzeugt, auf das mittels ReaderListenerAdapter reagiert werden kann wie es im folgenden Abschnitt beschrieben wird.

Verschlüsselte Dokumente in der jadice document platform bis 5.2.x

jadice bietet die Möglichkeit, verschlüsselte PDF-Dokumente zu erkennen. Auf diesem Weg kann ein Integrator das geschützte Dokument an einem speziellen Arbeitsplatz beziehungsweise mit qualifizierter Anwendung zur Anzeige öffnen oder einer alternativen Verwendung zuführen.

Die Erkenung verschlüsselter PDF-Dokumente kann in jadice durch eine Überwachung des Ladevorgangs erreicht werden. Die Erkennung basiert auf der Überprüfung von eindeutigen Ereignis-IDs, die durch den Ladevorgang geliefert werden. Die ID DOCP.FORMAT.PDF-ENCRYPTED_DOCUMENTS_NOT_SUPPORTED tritt auf, wenn jadice ein verschlüsseltes PDF-Dokument lädt. Wird diese ID erkannt, kann an dieser Stelle adäquat reagiert werden. Beispielsweise kann ein Dialog geöffnet werden, der den Benutzer informiert und Alternativen anbietet.

Mit der Version 4.3 geschieht dies durch eine LoadListener-Implementation. Eine Realisierung für die Erkennung von verschlüsselten Dokumenten könnte beispielsweise so aussehen:

Implementierung eines LoadListeners in jadice 4.3
loader.addLoadListener(new LoadListener() {
  public void loadStateChanged(LoadEvent e) {
    if (e.getType() == LoadEvent.LOAD_ERROR 
        && e.getThrowable() instanceof JadiceException) {
      if (((JadiceException)e.getThrowable()).getId().equals(
          "DOCP.FORMAT.PDF-ENCRYPTED_DOCUMENTS_NOT_SUPPORTED")) {
        System.err.println("Process encrypted documents here...");
      }
    }
  }
});
loader.loadDocument(seekInputStream, 0);

In jadice 5 wird der Ladevorgang mittels einer ReaderListener-Implementation überwacht. Eine Realisierung für die Erkennung von verschlüsselten Dokumenten könnte hier beispielsweise so aussehen:

Implementierung eines ReaderListeners in jadice 5
private static final class MyReaderListener extends ReaderListenerAdapter {
  @Override
  public void fatal(QualifiedLogEvent event) {
    if (event.getId().equals("DOCP.FORMAT.PDF-ENCRYPTED_DOCUMENTS_NOT_SUPPORTED")) {
      // in diesem Fall wurde versucht ein verschluesseltes PDF-Dokument zu laden. Dies ist
      // fehlgeschlagen und eine entsprechende Behandlung sollte erfolgen.
      System.err.println("Process encrypted documents here...");
    }
  }
}