Estou usando criptografia PGP para meus e-mails, meu amigo usa S/MIME. Nós dois usamos o Thunderbird para escrever e-mails. Quando ele me escreve um e-mail assinado, posso verificar a assinatura e, da mesma forma, ele pode verificar a minha. No entanto, não podemos enviar e-mails criptografados uns aos outros. A página de ajuda do Thuderbird diz
Você deve ter chaves ou certificados da mesma tecnologia para todos os destinatários, inclusive você, porque OpenPGP e S/MIME são tecnologias de criptografia separadas e não podem ser misturadas em um único e-mail. Certifique-se de ter selecionado a tecnologia correta ao redigir um e-mail criptografado.
Mas por que isso é necessário? Se o Thunderbird do meu amigo puder verificar minhas assinaturas PGP, ele deverá ser capaz de criptografar uma mensagem para mim com minha chave pública PGP, não importando se a chave dele é S/MIME, ou se ele mesmo possui ou não algum tipo de chave. Da mesma forma, devo ser capaz de criptografar mensagens para ele, visto que posso verificar sua assinatura. Estou negligenciando alguma coisa? Talvez eu não tenha entendido 100% como exatamente o S/MIME difere da abordagem de chave pública/privada do PGP...
Ao enviar um e-mail criptografado, o Thunderbird deseja armazenar uma cópia criptografada da mensagem para você, salvando-a na pasta Enviados. Como apenas uma mensagem combinada é criada para todos os participantes da conversa por email (remetente e todos os destinatários), o Thunderbird deve ter chaves de criptografia da mesma tecnologia para todos. Exigir que todos estejam prontos para usar a mesma tecnologia de criptografia evita a necessidade de explicar limitações e evita consequências inesperadas (como falta de e-mails na pasta Enviados).
Isso é verdade – desde que a chave dele não esteja envolvida, isso deveria ser completamente possível. Mas se ele também quiser usar sua chave para assinar a mensagem criptografada, isso entrará em conflito – os dois sistemas têm seus próprios formatos de dados para empacotar a mensagem assinada/criptografada, e você terá que escolher um formato ou outro, geralmente .
(Bem, em teoria, o Thunderbird poderia colocar uma mensagem PGP dentro de uma mensagem S/MIME, mas o software não suporta isso no momento.)
Em geral, embora os dois sistemas compartilhem os mesmos algoritmos básicos de chaves privadas/públicas, isso é uma parte relativamente pequena do que os compõe; é como dizer "trens e aviões têm motores".
Por exemplo, é tecnicamente verdade que ambos os sistemas usam RSA e EC, mas na realidade você nunca lida diretamente com chaves públicas RSA ou EC simples – você sempre lida com certificados, que são um monte de metadados enrolados em torno da chave, e o foco é principalmente no certificado, e não na chave real abaixo. (Só para começar, seu certificado PGP sempre tem dois pares de chaves dentro – possivelmente mais – enquanto um certificado S/MIME tem exatamente um. Os formatos de metadados também diferem; a semântica anexada aos campos de metadados não é a mesma; os formatos de arquivo usados para armazenar o certificado são diferentes.) Portanto, embora seja tecnicamente simples portar uma chave RSA real de um sistema para outro, geralmente há pouco ou nenhum significadoao fazer isso, já que os metadados não serão transferidos e essa é a parte importante.
Outra diferença são os formatos de dados. Tanto o S/MIME quanto o PGP têm suas próprias maneiras de empacotar as mensagens assinadas/criptografadas (ou as próprias chaves/certificados) em uma série de bytes, que são completamente incompatíveis. Se você tiver uma mensagem assinada por S/MIME, o software PGP não consegue nem começar a processá-la – as chaves nem entram na pergunta, ele nem reconhece quais campos vão para onde. (Da mesma forma que você pode armazenar os mesmos dados como XML ou JSON, mas o software que espera XML não será capaz de ler JSON, mesmo que sejam "os mesmos dados".)
Agora, seria tecnicamente possível, por exemplo, criptografar uma mensagem usando PGP, armazená-la no formato PGP e depois assiná-la usando S/MIME, para que você tenha PGP dentro do CMS; ambos os formatos têm a capacidade de fazer isso. (Ou o contrário, se você preferir.) Mas isso leva ao último problema: eles são tratados por trechos de código totalmente diferentes dentro do Thunderbird que não interagem, portanto, mesmo que a mensagem do CMS indique "Eu tenho um PGP mensagem dentro", o código S/MIME do Thunderbird não saberá o que fazer com isso. Poderia funcionar , mas no momento acredito que não funciona.
(Tenha em mente que o Thunderbird tinha recursos S/MIME literalmente por várias décadas antes de ganhar suporte PGP - mesmo antes de ser chamado de "Thunderbird" ou mesmo "Mozilla"; na verdade, ele remonta ao Netscape Communicator. Em contraste, os recursos PGP eram adicionados praticamente no ano passado ou por aí, antes disso eles só vinham como uma extensão JS/XUL chamada Enigmail.)