a.sign MultiSign

Allgemeines

MultiSign ist die einfachste Möglichkeit viele Dokumente im PDF Format gleichzeitig zu signieren. Informationen zu den unterschiedlichen Formen der PDF Signatur sind unter PDF Signatur zu finden.

Funktionalität

Die PDF-Dokumente die signiert werden sollen, werden in Form einer Liste angezeigt und können stichprobenartig geprüft werden. Beim signieren wird sichergestellt, dass sich keine für die Signatur ungeeigneten Elemente in der PDF Datei befinden.

Voraussetzungen

  • Windows Betriebssystem Windows 2000, XP, Vista
  • PDF-Viewer (zB.: Adobe Acrobat Reader)
  • a.sign Client
  • Von A-Trust empfohlener Kartenleser
  • A-Trust Signaturkarte

MultiSign Architektur

MultiSign ist in C++ entwickelt worden, um die Abhängigkeit von Laufzeitumgebungen und damit die Größe der Applikation so gering wie möglich zu halten. Dabei wurde bei der Wahl der Bibliotheken gröten Wert auf die Portierbarkeit gelegt, um einem baldigen Einsatz der Software neben Windows auch unter Linux und Apple Betriebssystemen zu gewährleisten.

MultiSign nutzt folgende Komponenten

OpenSSL

Die OpenSSL Bibliothek wird für plattformunabhängiges Zertifkatsmanagement verwendet. Einerseits wird sie zum Parsen der Zertifikate eingesetzt, da in der PDF Signatur der commonname eingetragen wird, andererseits müssen die Stammzertifikate des Signators in die Signatur aufgenommen werden. Im Verzeichnis %APPDATA%\A-Trust GmbH\a.sign MultiSign wird eine Datei namens CAs.pem hinterlegt, welche alle vertauenswürdigen Stammzertifikate des Benutzers enthält. Diese Datei wird herangezogen, um die nötigen Stammzertifikate zum Signatorzertifikat zu suchen, um damit die für die PDF-Signatur nötige Zertifikatskette aufzubauen.

a.sign Client

Alle Operationen, die mit der Karte durchgeführt werden, sind über die PKCS #11 Bibliothek des a.sign Client abgewickelt. Sowohl die Berechnung des Hash-Wertes als auch die Erstellung der Signatur läuft über den a.sign Client. Folgende PKCS#11 Funktionen des a.sign Client werden genutzt
  • C_GetSlotList
  • C_GetTokenInfo
  • C_OpenSession
  • C_CloseSession
  • C_DigestInit
  • C_DigestUpdate
  • C_DigestFinal
  • C_FindObjectsInit
  • C_FindObjects
  • C_FindObjectsFinal
  • C_SignInit
  • C_Sign
  • C_GetAttributeValue
  • C_Finalize

Format

Als Eingangsformat wird jedes beliebige PDF Format akzeptiert, welches von xpdf geöffnet werden kann. Um sicherzustellen, dass das zu signierende Dokument keine dynamischen Elemente enthält, wird von jeder Seite des Orginaldokumentes ein Abbild erstellt (vergleichbar mit einem Screenshot) und ein neues PDF-Dokument generiert, welches dann zum signieren herangezogen wird. Vor der Stapelsignatur ist der Signator angehalten stichprobenartig einzelne Dokumente zu öffnen und deren Inhalt zu verifizieren. In dieser Vorschau wird dem User bereits das zu signierende Dokument angezeigt, welches diese Schritte durchlaufen hat.
xpdf
Mit Hilfe der xpdf Bibliothek wird aus dem Eingangs-PDF eine ppm Datei erzeugt. Die Konversion erfolgt mit einer vom Benutzer einstellbaren Auflösung. Standardmäßig ist hier 180 DPI voreingestellt. Als Kompression kommt die DEFLATE Methode aus der offenen zlib Bibliothek zum Einsatz.
ppm2tif
Durch das ppm2tif Paket aus der offenen libtiff Bibliothek wird aus den einzelnen ppm Bildern ein einzelnes multipage tif gleicher Auflösung und Kompression erzeugt.
tif2pdf
Ebenfalls in der libtiff Bibliothek enthalten ist das Modul tif2pdf, mit dem das multipage tif Dokument wieder in ein PDF Dokument umgewandelt wird.
pdfTools
Die pdftools-Bibliothek dient dazu, eine digitale Signatur PDF-konform in ein PDF-Dokument einzufügen. Dies geschieht durch Anhängen eines inkrementellen PDF-Updates an das original PDF. Dies geschieht ohne dabei den originalen Inhalt zu verändern. Neue bzw. veränderte Objekte werden zusammen mit einer eigenen xref -Tabelle und einem neuen Trailer an das original Dokument angehängt. Damit eine digitale Signatur PDF-konform ist, müssen verschiede Objekte in das PDF eingefügt werden. Zusätzlich müssen die Objekte in die Struktur des Dokuments eingebunden werden. Im sogenannten signature dictionary beendet sich die eingentliche digitale Signatur. Diese wird im PKCS7-Format an einer bestimmten Stelle in dieses Objekt geschrieben. Da dieser Bereich für die hash-Berechnung ausgeklammert werden muss, wird mittels der byte-range festgelegt welche Bereiche des PDF-Dokuments zur Berechnung des hash-Werts herangezogen werden. Da die sichere Signatur, eine ECDSA-Signatur, nicht mit den Standardhandlern von Adobe verifiziert werden kann, wird von der Firma A-Trust ein plug-in für diese Aufgabe zur Verfügung gestellt. Damit dieses plug-in automatisch von Adobe bzw. Adobe Reader geladen wird, muss im signature dictionary asign.ECDSA als handler angegeben werden.
Signaturerstellung
Wie bei der RSA-Signatur von Adobe wird auch bei der sicheren Signatur der doppelte hash-Wert des Dokuments berechnet. Der hash-Wert wird über das gesammte PDF-Dokument, einschließlich des inkrementellen Updates, aber exklusive des PKCS7 und der umgebenden Spitzklammern gebildet. Dieser Bereich wird mit der byte-range festgelegt. Die byte-range selbst steht im Bereich Über den der hash-Wert berechnet wird und kann somit nach dem Signaturvorgang nicht mehr verändert werden ohne damit die Signatur ungültig zu machen. Über den hash-Wert des Dokuments wird vor dem Signieren zusätzlich der hash-Wert gebildet, dieser wird dann mit dem privaten Schlüssel des Signators verschlüsselt. Als hash-Algorithmus wird der SHA1-Algorithmus verwendet. Der verschlüsselte (doppelte) hash-Wert, die Signatur, wird in eine PKCS7-Struktur eingebettet und an die dafÄur vorgesehen Stelle im PDF-Dokument geschrieben.

FAQ

Warum ist das signierte pdf größer als das Original ?

Um sicherzustellen, dass nur unveränderliche Inhalte signiert werden (pdf unterstützt ja auch aktive Inhalte wie scripting, Multimedia, etc), bietet MultiSign die Option jede Seite in ein Bild umgewandelt, dies kann zu einer Vergrößerung des Bildes führen.

Warum kann ich den Text im signierten pdf nicht selektieren ?

Wie unter Format beschrieben kann das PDF vom Signator in ein sicheres Format umgewandelt werden, welches ein Abbild jeder Seite enthält

Was ist ein sicheres Format ?

Es muss sichergtestellt werden, dass im PDF keine Veränderlichen Inhalte existieren (zb.: ein script das den Betrag einer Rechnung verändert). Eine Möglichkeit ist vorauszusetzen, dass der Signator beim Erstellen des PDF darauf geachtet hat, hier verweigern andere Signaturerstellungs-Programme solange die Signatur, bis das zu signierende PDF einer bestimmten PDF Spezifikation entspricht zb.: PDF/A. Wie unter Format beschrieben, bietet MultiSign die Möglichkeit jedes PDF zu signieren, auch wenn man bei der Erstellung keine Möglichkeit hat auf das Format Einfluss zu nehmen, indem von jeder Seite ein Bild erstellt wird.

Muss das PDF in ein sicheres Format umgewandelt werden ?

Wenn man sich sicher ist, dass das erzeugte PDF keine aktiven Inhalte enthält, kann man auch diesen Prozess deaktivieren, es befindet sich auf der rechten Seite eine checkbox 'pdf in sicheres Format umwandeln', dann bleiben die PDF- Größe nahezu gleich (es wird nur die Signatur hinzugefügt), der zeitaufwendige Umwandlungsprozess entfällt, und im erzeugten PDF kann Text selektiert werden.

Wie viele Signaturen können maximal mit Multisign ausgelöst werden ?

65 000