Kann verschlüsselte S / MIME-Nachrichten nicht entschlüsseln

864
Rainer Rillke

Nachdem ich eine S / MIME-unterschriebene E-Mail an eine Versicherungsgesellschaft gesendet hatte, nahm der Exchange-Server mein S / MIME-Zertifikat auf und ihre Antwort war S / MIME-verschlüsselt. Zuvor verschlüsselten sie mit meinem öffentlichen PGP-Schlüssel an mich gesendete Nachrichten, die ich entschlüsseln konnte. Sie unterschrieben nie ihre eigenen Nachrichten.

Obwohl das Zertifikat und der private S / MIME-Schlüssel in Thunderbird und Apple Mail installiert sind, kann keiner die Nachricht entschlüsseln. ( Die Nachricht kann von Thunderbird nicht entschlüsselt werden. Der Absender hat diese Nachricht mit einem Ihrer Zertifikate verschlüsselt. Trotzdem konnte Thunderbird das Zertifikat und den dazugehörigen privaten Schlüssel nicht finden. )

Nachrichten, die ich von anderen Entitäten erhalte, die mein S / MIME-Zertifikat zur Verschlüsselung verwenden, können von Thunderbird und Apple Mail entschlüsselt werden, einschließlich selbstgesendeter Testnachrichten und Nachrichten von swiftmail / PHP.

Der private Schlüssel befindet sich nicht auf einer Chipkarte, sondern wird im Software-Sicherheitsmodul von Thunderbird und in Apples Schlüsselbund gespeichert.

Hier sind einige der Mail-Header der unverschlüsselbaren eMail, die ich von der Versicherungsgesellschaft erhalten habe:

Content-Transfer-Encoding: BASE64 Content-Disposition: attachment; filename=smime.p7m Content-Type: application/pkcs7-mime; name=smime.p7m;  smime-type="enveloped-data" ... X-MS-Has-Attach: X-MS-TNEF-Correlator: x-ms-exchange-transport-fromentityheader: Hosted ... MIME-Version: 1.0 

Entschlüsselung per Hand, wie unter Wie wird eine von Outlook gesendete defekte S / MIME-Nachricht entschlüsselt? scheitert auch:

$ openssl smime -decrypt -in msg.eml -inkey privatekey.pem -out decrypted.txt Error decrypting PKCS#7 structure 140735747326920:error:06065064:digital envelope routines:EVP_DecryptFinal_ex:bad decrypt:/BuildRoot/Library/Caches/com.apple.xbs/Sources/libressl/libressl-22.50.2/libressl/crypto/evp/evp_enc.c:529: 

Wie finde ich heraus, was an wem nicht stimmt?

Bearbeiten:

$ openssl smime -pk7out -in msg.eml | openssl asn1parse 0:d=0 hl=4 l=27205 cons: SEQUENCE  4:d=1 hl=2 l= 9 prim: OBJECT :pkcs7-envelopedData 15:d=1 hl=4 l=27190 cons: cont [ 0 ]  19:d=2 hl=4 l=27186 cons: SEQUENCE  23:d=3 hl=2 l= 1 prim: INTEGER :00 26:d=3 hl=4 l= 457 cons: SET  30:d=4 hl=4 l= 453 cons: SEQUENCE  34:d=5 hl=2 l= 1 prim: INTEGER :00 37:d=5 hl=3 l= 172 cons: SEQUENCE  40:d=6 hl=3 l= 151 cons: SEQUENCE  43:d=7 hl=2 l= 11 cons: SET  45:d=8 hl=2 l= 9 cons: SEQUENCE  47:d=9 hl=2 l= 3 prim: OBJECT :countryName 52:d=9 hl=2 l= 2 prim: PRINTABLESTRING :GB 56:d=7 hl=2 l= 27 cons: SET  58:d=8 hl=2 l= 25 cons: SEQUENCE  60:d=9 hl=2 l= 3 prim: OBJECT :stateOrProvinceName 65:d=9 hl=2 l= 18 prim: PRINTABLESTRING :Greater Manchester 85:d=7 hl=2 l= 16 cons: SET  87:d=8 hl=2 l= 14 cons: SEQUENCE  89:d=9 hl=2 l= 3 prim: OBJECT :localityName 94:d=9 hl=2 l= 7 prim: PRINTABLESTRING :Salford 103:d=7 hl=2 l= 26 cons: SET  105:d=8 hl=2 l= 24 cons: SEQUENCE  107:d=9 hl=2 l= 3 prim: OBJECT :organizationName 112:d=9 hl=2 l= 17 prim: PRINTABLESTRING :COMODO CA Limited 131:d=7 hl=2 l= 61 cons: SET  133:d=8 hl=2 l= 59 cons: SEQUENCE  135:d=9 hl=2 l= 3 prim: OBJECT :commonName 140:d=9 hl=2 l= 52 prim: PRINTABLESTRING :COMODO RSA Client Authentication and Secure Email CA 194:d=6 hl=2 l= 16 prim: INTEGER :7F9285XXXX... 212:d=5 hl=2 l= 13 cons: SEQUENCE  214:d=6 hl=2 l= 9 prim: OBJECT :rsaesOaep 225:d=6 hl=2 l= 0 cons: SEQUENCE  227:d=5 hl=4 l= 256 prim: OCTET STRING [HEX DUMP]:0068E5XXXX... 487:d=3 hl=4 l=26718 cons: SEQUENCE  491:d=4 hl=2 l= 9 prim: OBJECT :pkcs7-data 502:d=4 hl=2 l= 29 cons: SEQUENCE  504:d=5 hl=2 l= 9 prim: OBJECT :aes-256-cbc 515:d=5 hl=2 l= 16 prim: OCTET STRING [HEX DUMP]:CF1A61XXXX... 533:d=4 hl=4 l=26672 prim: cont [ 0 ]  
1
Vielleicht [diese Frage und ihre Antworten] (https://stackoverflow.com/questions/34304570/how-to-resolve-the-evp-decryptfinal-ex-bad-decrypt-during-file-decryption) könnte hilfreich sein. [Ein Kommentar schlägt vor] (https://stackoverflow.com/a/39641378/284111), um den Algorithmus anzugeben. Der Absender verwendet möglicherweise einen veralteten Algorithmus. Versuchen Sie `openssl smime -pk7out -in msg.eml | openssl asn1parse` in der E-Mail, um sie zu analysieren und den verwendeten Algorithmus anzuzeigen, ohne zu versuchen, ihn zu entschlüsseln. not2savvy vor 5 Jahren 1
Übrigens, ich verwende einen etwas anderen Befehl, um E-Mails zu entschlüsseln: `openssl smime -decrypt -in msg.eml -recip receiver.pem`, aber ich habe keine Ahnung, ob dies einen Unterschied in Ihrem Fall ausmachen könnte. not2savvy vor 5 Jahren 0
Mein openssl (`LibreSSL 2.2.7`) teilt mir die` -recip-Datei mit der Empfänger-Zertifikatsdatei zur Entschlüsselung` mit. Soweit ich weiß, brauchen Sie immer einen privaten Schlüssel zum Entschlüsseln, der nicht Teil des Zertifikats ist (da das Zertifikat öffentlich geteilt werden kann). Was genau ist in Ihrem `receiver.pem`? Rainer Rillke vor 5 Jahren 0
@ not2savvy danke für die asn parse befehle. Wenn ich eine Nachricht analysiere, die von meinen Kunden an mich gesendet wurde, sehe ich, dass 'des-EDE3-CBC' verwendet wird und dass zwei Einträge im SET ab Offset 26 verwendet werden, die beide denselben 'commonName' verwenden. Nicht sicher, noch nicht, wie `openssl aes-128-cbc` / verwendet wird, um den Message-Digest-Algo anzugeben. Die Verwendung von "-md" mit "openssl smime" änderte nichts. Rainer Rillke vor 5 Jahren 0
Das `receiver.pem` muss natürlich den privaten Schlüssel enthalten, um die E-Mail zu entschlüsseln. not2savvy vor 5 Jahren 1
Der Begriff Zertifikat darf nicht nur für öffentliche Zertifikate verwendet werden. Lassen Sie sich daher nicht irritieren. Eine Pem-Datei kann sowohl private als auch öffentliche Schlüssel enthalten. not2savvy vor 5 Jahren 0

0 Antworten auf die Frage