2016-06-10 6 views
-1

Wir wurden nach etwas gefragt, das meiner Meinung nach nicht möglich ist.PDF-Zeichen ohne privaten Schlüssel

Ein Webservice gibt eine Base64-Zeichensignatur zurück (kein Zertifikat oder privater Schlüssel).

Wir wurden gebeten, ein PDF mit dieser Unterschrift zu unterschreiben.

Ist es möglich, ein PDF damit zu unterzeichnen? Wir wissen nicht sehr viel über die Theorie der digitalen Signatur, jedes Mal, wenn wir so etwas tun müssen, haben wir einen privaten Schlüssel und ein gültiges Zertifikat, so dass wir nicht wissen, ob dies möglich ist (und auch nicht wissen, ob Sinn ergeben).

Dies ist der Code, den wir haben, wir wissen nicht, wie eine String-Signatur hier passen kann.

public void sign(ByteArrayInputStream document, OutputStream os, String digestAlgorithm, String provider, CryptoStandard subfilter, String reason, String location) throws GeneralSecurityException, IOException, DocumentException { 

     PdfReader reader = new PdfReader(document); 
     PdfStamper stamper = PdfStamper.createSignature(reader, os, '\0'); 
     PdfSignatureAppearance appearance = stamper.getSignatureAppearance(); 
     appearance.setReason(reason); 
     appearance.setLocation(location); 
     appearance.setSignatureCreator(provider); 
     appearance.setVisibleSignature(new Rectangle(0, 0, 100, 780), 1, "sig"); 
     ExternalDigest digest = new BouncyCastleDigest(); 
     List<Certificate> listCert = new ArrayList<Certificate>(); 
     listCert.add(this.getCertificate()); 
     Certificate[] chain = new Certificate[listCert.size()]; 
     chain = listCert.toArray(chain); 
     ExternalSignatureContainer cont = new ExternalBlankSignatureContainer(PdfName.ADOBE_PPKLITE, PdfName.ADBE_PKCS7_DETACHED); 
     cont.sign(document); 
     MakeSignature.signExternalContainer(appearance, cont, 50); 
    } 

ich die Antwort um eine Antwort Xavier aktualisieren.

Wir wurden nicht gebeten, irgendeine Bestätigung zu tun, ich verstehe, dass es das Beste und die Hauptidee der digitalen Unterschrift ist, wir haben bereits gültiges Zertifikat gefragt, aber haben keine Antwort.

also, darüber hinaus, ob es Sinn macht oder nicht, ist es möglich?

+0

Sie schreiben * "Ein Webservice gibt eine Base64-Zeichensignatur zurück" * Was wurde an diese Webdienste gesendet? Ich nehme an, dass Sie ein 'byte []' an den Webservice gesendet haben: Können Sie diese Bytes beschreiben? Wie wurden diese Bytes signiert? Ist dem Webdienst bekannt, dass er die Bytes signieren muss, damit die signierten Bytes in eine PDF eingefügt werden können? Ihre Frage ist nicht zu beantworten, solange Sie diese Gegenfragen nicht beantworten. –

+0

Die Signatur in einer PDF kann nur durch Zertifikate validiert werden. Die Frage ist also mehr "Wie validiert man die Signatur? Wie kann man Nichtabstreitbarkeit haben (was der Hauptzweck einer digitalen Signatur ist)" –

+1

@BrunoLowagie Lowagie Danke für die schnelle Antwort. Wir senden kein Byte []. Der Zweck des webService ist das Erstellen einer digitalen Rechnung, also senden wir ein riesiges XML (deshalb habe ich diese Anfrage nicht kopiert, aber wenn es hilfreich ist, werde ich die Frage aktualisieren) und die Webservice-Antwort mit derselben XML, die den Signaturwert hinzufügt . Ja, die webServices wissen, dass die Signatur in eine PDF-Datei eingefügt werden muss –

Antwort

1

Nein, das ist generell nicht möglich.

Signaturen über den Inhalt sollten einen bestimmten Unterzeichner anzeigen und sollten über spezifischen Inhalt sein. Wenn Sie eine Signatur erneut zuweisen könnten, könnte ein Angreifer dasselbe tun und behaupten, dass ein anderes Dokument signiert wurde.

So gibt es zwei Möglichkeiten:

  1. die XML enthält genau der Inhalt im PDF-Dokument unterzeichnet und platziert werden (scheint unwahrscheinlich);
  2. Die Signatur dient nur zum Schutz der XML-Informationen bei der Übertragung.

Letzteres scheint am wahrscheinlichsten. Zum Beispiel kann die Web-Services-Sicherheit (WS-Security) XML-basierte Signaturen verwenden.

+0

danke für die Antwort, tatsächlich haben wir uns Informationen gesendet und eine Antwort mit einer Unterschrift bereits generiert, wir hatten uns gebeten, die gleiche Unterschrift auf einem PDF von der Anwendung generiert, warum die Firma aufhörte, Sinn zu ergeben. –