AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • Início
  • system&network
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • Início
  • system&network
    • Recentes
    • Highest score
    • tags
  • Ubuntu
    • Recentes
    • Highest score
    • tags
  • Unix
    • Recentes
    • tags
  • DBA
    • Recentes
    • tags
  • Computer
    • Recentes
    • tags
  • Coding
    • Recentes
    • tags
Início / computer / Perguntas / 1719117
Accepted
Zaz
Zaz
Asked: 2022-05-03 15:11:14 +0800 CST2022-05-03 15:11:14 +0800 CST 2022-05-03 15:11:14 +0800 CST

Dada uma chave pública em hexadecimal, como posso obter um arquivo .asc?

  • 772

Dada uma chave pública em hexadecimal ou base 64, como posso gerar um arquivo .asc para uso com programas PGP?

Por exemplo, digamos que eu tenha a chave pública RSA de alguém, em hexadecimal:

04 40 ad 77 10 45 08 f2 3a ae 1d 1d 95 22 2f b3 f5 e5 2f da db 8c 39 3a 03 15 fb 4b 36 28 46 de 7b 00 f4 73 11 ae b9 ac 00 aa 19 34 6d fb 7c 56 b1 93 c0 1b 86 7c d0 a2 0b 4d 22 a9 d2 4d b0 f6 34 c4

Como posso transformar esse número em um arquivo de chave pública padrão (por exemplo .asc, )?

Pelo que entendi, o RSA recebe texto simples (qualquer dado) e a chave pública do receptor (um número longo) e gera texto cifrado. Portanto, não devo precisar de nada mais do que este número para enviar uma mensagem criptografada.


Estou tentando usar a chave X.509 em um VCard para enviar um email criptografado.

Ainda não consegui encontrar um programa que faça isso e gpg --importmostreno valid OpenPGP data found

gnupg encryption
  • 1 1 respostas
  • 991 Views

1 respostas

  • Voted
  1. Best Answer
    user1686
    2022-05-03T22:07:21+08:002022-05-03T22:07:21+08:00

    Pelo que entendi, o RSA recebe texto simples (qualquer dado) e a chave pública do receptor (um número longo) e gera texto cifrado. Portanto, não devo precisar de nada mais do que este número para enviar uma mensagem criptografada.

    Tecnicamente sim, se você fizer tudo "à mão" e se esperar que o destinatário desfaça tudo à mão. Mas mesmo assim, já existem vários problemas.

    Primeiro, o RSA aceita apenas textos simples muito curtos . Você não pode usá-lo para criptografar uma mensagem de e-mail inteira. (Depende do tamanho da chave e do preenchimento usado, que você deve usar para que a criptografia RSA seja segura, mas) o uso geral é que nunca se usaria RSA para criptografar diretamente os dados reais - sempre usaria no "modo híbrido", onde o AES (ou similar) criptografa o texto simples e o RSA criptografa apenas a chave AES.

    Portanto, na prática, você precisa concordar com o destinatário sobre qual preenchimento RSA usar, qual cifra simétrica usar, qual modo de cifra de bloco usar (se aplicável), qual esquema MAC usar, em que ordem aplicar as operações (por exemplo, criptografia então-MAC), etc.

    Uma das razões para usar "arquivos de chave pública padrão" como .asc(que contém certificados OpenPGP) ou .pem/ .crt(que contém certificados X.509) é que esses sistemas já têm essas coisas definidas. Quando você tem um arquivo .asc e o entrega a um software PGP como o GnuPG, ele não usará RSA bruto, ele já foi projetado para usar o modo híbrido.


    Estou tentando usar a chave X.509 em um VCard para enviar um email criptografado.

    A segunda coisa é que você já tinha um arquivo de chave pública padrão – você tinha um certificado X.509 perfeitamente bom no vCard (ou seja, um .crtarquivo), pronto para usar para criptografia usando o padrão S/MIME ou CMS. Não há necessidade de extrair sua chave pública e criar um arquivo totalmente novo – é provável que seu aplicativo de e-mail possa importar o certificado X.509 diretamente do vCard e até mesmo usá-lo automaticamente para criptografia.

    (A popular suíte GnuPG vem com uma gpgsmferramenta que recebe certificados X.509 e faz criptografia/descriptografia S/MIME assim como gpgo PGP.)

    E relacionado a isso: se você recebeu um certificado X.509, isso implica fortemente que o destinatário espera que você criptografe as mensagens no formato S/MIME. Suponha que você extraiu a chave pública RSA (módulo) de qualquer maneira e, em seguida, usou algumas ferramentas para colocá-la em um arquivo .asc – ou seja, um certificado OpenPGP – e procedeu ao envio de uma mensagem de e-mail criptografada no formato PGP. O destinatário não seria capaz de descriptografá-lo, seja porque seu software de e-mail não reconhece PGP/MIME em primeiro lugar (muitos aplicativos só fazem S/MIME), ou porque sabe que não pode corresponder uma mensagem PGP com um par de chaves privado X.509 de qualquer maneira (mesmo as pessoas que usam PGP e S/MIME quase universalmente terão pares de chaves diferentes para ambos).

    (Bem, tecnicamente eles poderiam descriptografá-lo seguindo o mesmo procedimento que você fez, convertendo o certificado X.509 e a chave privada nos equivalentes do OpenPGP – mas por que eles se incomodariam em fazer isso, eu realmente não sei. E novamente , isso é algo que eles precisam saber sobre como fazer - ou seja, assim como as cifras a serem usadas, é outro parâmetro que precisa ser acordado.)


    Como posso transformar esse número em um arquivo de chave pública padrão (por exemplo, .asc)?

    Para completar, é possível pegar uma chave pública RSA bruta existente e envolvê-la em um certificado PGP ou X.509? Sim, quase, mas não exatamente. Há ainda mais problemas aqui.

    Primeiro, para o PGP não há muitas ferramentas que possam ser usadas dessa maneira. (E surpreendentemente, o PGP é o formato mais complexo dos dois, então eu não tentaria fazê-lo manualmente.) Se eu precisasse, provavelmente começaria com a biblioteca Sequoia.

    Fazer o contrário e criar certificados X.509 é tecnicamente uma tarefa mais fácil, pois o formato é "apenas" ASN.1, então eu usaria o Net::OpenSSL do Ruby ou o python-certbuilder do Python ou algo semelhante. Na verdade, é uma tarefa comum porque é assim que as CAs emitem certificados em primeiro lugar – elas já precisam copiar o pubkey bruto de um .csr em um certificado novo antes de assiná-lo.

    Isso leva ao segundo problema. Se você estiver criando um certificado X.509, algo precisa assinar esse certificado para que seus programas S/MIME o aceitem. Ele não pode ser "autoassinado" porque você não tem a chave privada para isso, então você precisará fazer seu próprio certificado S/MIME CA interno para essa finalidade.

    E se você estiver criando um certificado PGP, é um pouco mais difícil porque seus subpacotes devem ser autoassinados pela mesma chave (também conhecido como "assinaturas de ligação de subchave"), precisamente para evitar que alguém anexe IDs de usuário falsos ao seu certificado, ou distribuindo um certificado real com subchaves falsas agrupadas. Sem a chave privada correspondente, você não conseguirá criar um .ascarquivo que as ferramentas modernas de PGP aceitem.

    (É muito mais fácil se você tiver a chave privada : você pode importar o par de chaves X.509 (arquivo .p12 ou .pfx) para gpgsm, que compartilha seu armazenamento de chave privada com gpg – então use gpg para "gerar" um nova chave PGP no modo especialista e selecione a opção de usar um par de chaves existente quando solicitado. O programa fará tudo por você.)

    Portanto, o único formato padrão relevante que você pode produzir é uma chave pública PKCS # 1 ou PKCS # 8 "semi-raw", do tipo com o qual as ferramentas openssl rsae openssl pkeylidam - não possui metadados, apenas o módulo RSA real e o expoente. Agora, esse formato ainda pode ser útil em algumas situações (e você nem precisa criar esse arquivo manualmente - o OpenSSL pode extraí-lo de um certificado X.509, se solicitado), por exemplo, talvez você possa usá-lo com manual openssl cmsinvocação para criar uma mensagem de e-mail S/MIME, mas... você pode usar todo o certificado X.509 para fazer a mesma coisa.

    • 2

relate perguntas

  • Suporte OpenSSL para ed25519, criptografando conteúdo?

  • Qual é o tamanho da chave de criptografia padrão para dm-crypt / cryptsetup no modo LUKS?

  • A maneira mais segura de fazer backup de arquivos confidenciais, possivelmente sem armazenamento em nuvem?

  • não é possível ver os arquivos depois de montar o diretório encfs

  • Por que o Keybase não inclui minha impressão digital de chave PGP pública em minha prova do GitHub?

Sidebar

Stats

  • Perguntas 205573
  • respostas 270741
  • best respostas 135370
  • utilizador 68524
  • Highest score
  • respostas
  • Marko Smith

    Como posso reduzir o consumo do processo `vmmem`?

    • 11 respostas
  • Marko Smith

    Baixar vídeo do Microsoft Stream

    • 4 respostas
  • Marko Smith

    O Google Chrome DevTools falhou ao analisar o SourceMap: chrome-extension

    • 6 respostas
  • Marko Smith

    O visualizador de fotos do Windows não pode ser executado porque não há memória suficiente?

    • 5 respostas
  • Marko Smith

    Como faço para ativar o WindowsXP agora que o suporte acabou?

    • 6 respostas
  • Marko Smith

    Área de trabalho remota congelando intermitentemente

    • 7 respostas
  • Marko Smith

    O que significa ter uma máscara de sub-rede /32?

    • 6 respostas
  • Marko Smith

    Ponteiro do mouse movendo-se nas teclas de seta pressionadas no Windows?

    • 1 respostas
  • Marko Smith

    O VirtualBox falha ao iniciar com VERR_NEM_VM_CREATE_FAILED

    • 8 respostas
  • Marko Smith

    Os aplicativos não aparecem nas configurações de privacidade da câmera e do microfone no MacBook

    • 5 respostas
  • Martin Hope
    Saaru Lindestøkke Por que os arquivos tar.xz são 15x menores ao usar a biblioteca tar do Python em comparação com o tar do macOS? 2021-03-14 09:37:48 +0800 CST
  • Martin Hope
    CiaranWelsh Como posso reduzir o consumo do processo `vmmem`? 2020-06-10 02:06:58 +0800 CST
  • Martin Hope
    Jim Pesquisa do Windows 10 não está carregando, mostrando janela em branco 2020-02-06 03:28:26 +0800 CST
  • Martin Hope
    v15 Por que uma conexão de Internet gigabit/s via cabo (coaxial) não oferece velocidades simétricas como fibra? 2020-01-25 08:53:31 +0800 CST
  • Martin Hope
    andre_ss6 Área de trabalho remota congelando intermitentemente 2019-09-11 12:56:40 +0800 CST
  • Martin Hope
    Riley Carney Por que colocar um ponto após o URL remove as informações de login? 2019-08-06 10:59:24 +0800 CST
  • Martin Hope
    zdimension Ponteiro do mouse movendo-se nas teclas de seta pressionadas no Windows? 2019-08-04 06:39:57 +0800 CST
  • Martin Hope
    jonsca Todos os meus complementos do Firefox foram desativados repentinamente, como posso reativá-los? 2019-05-04 17:58:52 +0800 CST
  • Martin Hope
    MCK É possível criar um código QR usando texto? 2019-04-02 06:32:14 +0800 CST
  • Martin Hope
    SoniEx2 Altere o nome da ramificação padrão do git init 2019-04-01 06:16:56 +0800 CST

Hot tag

windows-10 linux windows microsoft-excel networking ubuntu worksheet-function bash command-line hard-drive

Explore

  • Início
  • Perguntas
    • Recentes
    • Highest score
  • tag
  • help

Footer

AskOverflow.Dev

About Us

  • About Us
  • Contact Us

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve