Como descriptografar uma mensagem S / MIME enviada pelo Outlook?

7

Recentemente, recebi uma mensagem criptografada enviada pelo Outlook que não consigo descriptografar. O Thunderbird está imprimindo a seguinte mensagem de erro:

Thunderbird cannot decrypt this message

The sender encrypted this message to you using one of your digital certificates, however Thunderbird was not able to find this certificate and corresponding private key. Possible solutions:

  • If you have a smartcard, please insert it now.
  • If you are using a new machine, or if you are using a new Thunderbird profile, you will need to restore your certificate and private key from a backup. Certificate backups usually end in ".p12".

Também outros clientes de email (incluindo uma versão recente do Outlook!) falharam ao descriptografar a mensagem. Como o e-mail é muito importante e eu realmente não quero pedir ao remetente para reenviar o e-mail, o que posso fazer?

    
por Jens Erat 15.10.2016 / 12:04

1 resposta

15

O problema

Este é um problema conhecido com o Microsoft Outlook 2010 , mas é fornecida uma correção - você pode deseja notificar o remetente que ele deve aplicá-lo.

Os certificados X.509 têm vários atributos anexados, alguns deles podem ser usados para identificar certificados. Uma dessas maneiras é usar o número de série junto com o emissor do certificado (juntos, eles têm que formar um identificador único). Para mensagens criptografadas por S / MIME, isso é chamado de issuerAndSerialNumber . Uma alternativa é o também padronizado subjectKeyIdentifier , que "deve ser" derivado do público chave de alguma forma, mas não é especificamente definido.

O Outlook 2010 (pré-SP1) usa o subjectKeyIdentifier e cria um, se esse identificador não for fornecido (a partir do artigo da base de conhecimento vinculado acima, realce adicionado por mim):

The Cryptographic Message Syntax (CMS) is documented in RFC 5652. That specification allows using either the subjectKeyIdentifier or issuerAndSerialNumber as the SignerIdentifier. The release (RTM) version of Outlook 2010 uses subjectKeyIdentifier as the SignerIdentifier, whereas earlier versions use issuerAndSerialNumber. If the subjectKeyIdentifier extension is not defined in the certificate, Outlook 2010 RTM generates one. Some email clients or third-party operating systems are unable to use the Outlook-generated subjectKeyIdentifier. This results in the recipient being unable to decrypt and read the message.

Em outras palavras, o Microsoft Outlook 2010 pré-SP1 usa um identificador de certificado muito provável não compreendido por nenhum outro aplicativo de email. Na verdade, falhei em usar uma versão recente do Outlook para descriptografar essa mensagem!

Como descriptografar a mensagem mesmo assim

Isso não será fácil e envolve a queda para a linha de comando. Isso deve funcionar em praticamente todos os sistemas operacionais (Linux, Windows, macOS, qualquer BSD), certifique-se de ter o OpenSSL instalado. Usando o OpenSSL, podemos impor a descriptografia usando uma chave específica, ignorando o subjectKeyIdentifier quebrado.

  1. Salve a mensagem em alguma pasta (o Thunderbird a salvará como um arquivo .eml ). Eu nomeei-o mail.eml em todos os passos adicionais.
  2. Exporte a chave privada (abra as Preferências , Avançadas , Certificados , Ver Certificados , selecione o certificado apropriado certificado, Backup , selecione a mesma pasta usada para a mensagem). O Thunderbird irá consultar uma frase secreta. Você deve ter outro arquivo agora com a extensão .p12 . Eu chamei de certificate.p12 .
  3. Abra um terminal. Todas as etapas adicionais serão concluídas na linha de comando.
  4. Navegue até a pasta usando o comando cd .
  5. Para descriptografar a mensagem, precisamos da chave privada no formato PEM. Para converter a chave, execute openssl pkcs12 -in certificate.p12 -out privatekey.pem -nodes '. Você será perguntado pela senha que você digitou no Thunderbird.
  6. Agora, use a chave exportada para descriptografar a mensagem:

    openssl cms -decrypt -in mail.eml -inkey privatekey.pem -out decrypted.txt
    

    A mensagem descriptografada será armazenada no arquivo decrypted.txt .

É provável que a mensagem seja codificada como quoted-printable . Se você encontrar sequências de caracteres estranhas como Gr=FC=DFe e houver um cabeçalho Content-Transfer-Encoding: quoted-printable incluído, converta a mensagem em texto simples (você precisa Perl, provavelmente restrito à versão 5 e o módulo MIME::QuotedPrint ):

perl -MMIME::QuotedPrint -pe '$_=MIME::QuotedPrint::decode($_);' <decrypted.txt >decoded.txt

O arquivo decoded.txt finalmente incluirá a mensagem descriptografada. Se a codificação de caracteres especiais ainda parecer errada, use as ferramentas de conversão de sua escolha ou simplesmente tente abrir o arquivo no Firefox ou em outros navegadores - normalmente, eles fazem um ótimo trabalho ao corrigir a codificação confusa.

A criação de uma nova mensagem .eml não criptografada exige a remoção de todos os Content-* cabeçalhos e a movimentação de Content-* cabeçalhos da mensagem descriptografada neste local. Mais detalhes estão fora do escopo deste tutorial, existem muitas codificações diferentes para fornecer assistência razoável.

    
por 15.10.2016 / 12:04