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 / 1477472
Accepted
jww
jww
Asked: 2019-09-01 02:48:46 +0800 CST2019-09-01 02:48:46 +0800 CST 2019-09-01 02:48:46 +0800 CST

Formato de arquivo de chave pública OpenSSH?

  • 772

Estou tendo problemas para analisar um arquivo de chave pública OpenSSH. Acredito (mas não tenho certeza) que o formato está detalhado no RFC 4253, Seção 6.6 do protocolo da camada de transporte Secure Shell (SSH) , Algoritmos de chave pública.

No caso de uma chave RSA, o RFC diz:

O formato de chave "ssh-rsa" tem a seguinte codificação específica:

string    "ssh-rsa"
mpint     e
mpint     n

Aqui, os parâmetros 'e' e 'n' formam o blob de chave de assinatura.

Aqui é onde os problemas começam. O documento não fornece uma gramática e não define o que stringe mpintsão. O que leva a:

$ cat rsa.ssh.pub
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAAAgQDSNM6RVVmwN3y0NurIQnmZgjcx5K5zzZu9nDqopW4J
In/mr8OYZI3heSJShnIM8EThvwVGXXXyyJVRQAvRHYFO4DxS6bufSNWr3BxBGaGYlYxI9mgvQnT6+MzE
3oZyEMdQNPlV5VfbileXlrPoAk1TkGdVdhwdLJMI2B4KUyMf+Q== jwalton@test

E depois:

$ echo 'AAAAB3NzaC1yc2EAAAADAQABAAAAgQDSNM6RVVmwN3y0NurIQnmZgjcx5K5zzZu9nDqopW4
JIn/mr8OYZI3heSJShnIM8EThvwVGXXXyyJVRQAvRHYFO4DxS6bufSNWr3BxBGaGYlYxI9mgvQnT6+M
zE3oZyEMdQNPlV5VfbileXlrPoAk1TkGdVdhwdLJMI2B4KUyMf+Q==' | base64 -d > rsa.bin

E finalmente:

$ hexdump -C rsa.bin
00000000  00 00 00 07 73 73 68 2d  72 73 61 00 00 00 03 01  |....ssh-rsa.....|
00000010  00 01 00 00 00 81 00 d2  34 ce 91 55 59 b0 37 7c  |........4..UY.7||
00000020  b4 36 ea c8 42 79 99 82  37 31 e4 ae 73 cd 9b bd  |.6..By..71..s...|
00000030  9c 3a a8 a5 6e 09 22 7f  e6 af c3 98 64 8d e1 79  |.:..n.".....d..y|
00000040  22 52 86 72 0c f0 44 e1  bf 05 46 5d 75 f2 c8 95  |"R.r..D...F]u...|
00000050  51 40 0b d1 1d 81 4e e0  3c 52 e9 bb 9f 48 d5 ab  |[email protected].<R...H..|
00000060  dc 1c 41 19 a1 98 95 8c  48 f6 68 2f 42 74 fa f8  |..A.....H.h/Bt..|
00000070  cc c4 de 86 72 10 c7 50  34 f9 55 e5 57 db 8a 57  |....r..P4.U.W..W|
00000080  97 96 b3 e8 02 4d 53 90  67 55 76 1c 1d 2c 93 08  |.....MS.gUv..,..|
00000090  d8 1e 0a 53 23 1f f9                              |...S#..|
00000097

Portanto, parece haver campos não documentados no arquivo de chave pública. A RFC não parece se referir a outros documentos para as definições dos campos. O RFC também não documenta o arquivo de chave privada. Estou parado no momento.

Onde o OpenSSH define os campos usados ​​em seus arquivos de chave?

public-key openssh
  • 1 1 respostas
  • 16448 Views

1 respostas

  • Voted
  1. Best Answer
    user1686
    2019-09-01T03:36:22+08:002019-09-01T03:36:22+08:00

    Portanto, parece haver campos não documentados no arquivo de chave pública. A RFC não parece se referir a outros documentos para as definições dos campos.

    Eles são definidos no RFC 4251 "The Secure Shell (SSH) Protocol Architecture", seção 5 .

    O RFC também não documenta o arquivo de chave privada.

    O protocolo SSH não documenta nenhum formato de arquivo . Ele apenas define a serialização de chaves públicas quando elas são enviadas como parte do protocolo SSH (por exemplo, quando um cliente envia SSH_MSG_USERAUTH para oferecer sua chave pública).

    Portanto, como a chave privada nunca é enviada pela rede como parte do protocolo SSH, sua serialização também não precisa fazer parte da especificação – apenas as assinaturas feitas por essa chave precisam ter um formato definido.

    Onde o OpenSSH define os campos usados ​​em seus arquivos de chave?

    Para chaves públicas, o OpenSSH provavelmente optou por reutilizar o mesmo formato RFC 4253 para armazená-las em arquivos porque é a opção mais conveniente (ou seja, já possui o código de serialização de qualquer maneira). Não é necessário fazer isso por especificação e, de fato, a maioria dos outros clientes tem seus próprios formatos.

    Como o OpenSSH usa o OpenSSL para o código criptográfico (algoritmos, geração de chaves), as versões anteriores do OpenSSH simplesmente armazenavam chaves privadas usando qualquer formato que as funções do OpenSSL ofereciam - que era o formato PKCS#1 'RSAPrivateKey' serializado por DER (também conhecido como formato PEM ) a maior parte do tempo. Veja RFC 3447 para a definição ASN.1 do formato.

    (O próprio OpenSSL agora prefere armazenar chaves privadas no formato PKCS#8, o que significa que o OpenSSH também pode carregar essas chaves, embora não as grave. Consulte RFC 5208 para a definição ASN.1 do formato do contêiner.)

    Você pode reconhecer o formato PKCS#1 pelo cabeçalho "BEGIN RSA PRIVATE KEY" e PKCS#8 pelo cabeçalho "BEGIN PRIVATE KEY". Você pode usar dumpasn1ou openssl asn1parsepara investigar seu conteúdo, bem como openssl rsae openssl pkey.

    Versões recentes do OpenSSH inventaram um novo formato personalizado para arquivos de chave privada. O formato do contêiner está documentado em PROTOCOL.key , e os formatos de chave individuais são [provavelmente?] os mesmos usados ​​por ssh-agent , que está documentado em draft-miller-ssh-agent . Este formato usa os tipos de dados RFC 4251.


    Outros softwares SSH geralmente têm formatos diferentes. Por exemplo, o PuTTY usa o formato "PPK" (que está documentado em algum lugar, eu me lembro, mas estranhamente não consigo encontrar onde) para armazenar chaves públicas e privadas. Seu Public-Linescampo armazena a mesma chave pública RFC 4253, enquanto os campos privados são personalizados.

    Há também o RFC 4716 , que afirma ser " O formato de chave pública SSH", mas geralmente não é considerado parte integrante do SSH. (SSH.COM, SecureCRT e provavelmente MultiNet SSH usam esse formato.)

    • 13

relate perguntas

  • No encaminhamento SSH, o agente ssh remoto armazena as credenciais?

  • Usando sftp como scp

  • Instalando o OpenSSH Beta (falha)

  • Como usar ssh_config com correspondências para usuários

  • Carregar chave “ec256.pem”: formato inválido é lançado ao tentar gerar chave pública a partir de chave privada

Sidebar

Stats

  • Perguntas 205573
  • respostas 270741
  • best respostas 135370
  • utilizador 68524
  • Highest score
  • 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

    Serviço do Windows 10 chamado AarSvc_70f961. O que é e como posso desativá-lo?

    • 2 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
  • Marko Smith

    ssl.SSLCertVerificationError: falha na verificação do certificado [SSL: CERTIFICATE_VERIFY_FAILED]: não foi possível obter o certificado do emissor local (_ssl.c:1056)

    • 4 respostas
  • Marko Smith

    Como posso saber em qual unidade o Windows está instalado?

    • 6 respostas
  • Martin Hope
    Albin Como faço para ativar o WindowsXP agora que o suporte acabou? 2019-11-18 03:50:17 +0800 CST
  • Martin Hope
    fixer1234 O "HTTPS Everywhere" ainda é relevante? 2019-10-27 18:06:25 +0800 CST
  • Martin Hope
    Kagaratsch O Windows 10 exclui muitos arquivos minúsculos muito lentamente. Algo pode ser feito para agilizar? 2019-09-23 06:05:43 +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
    Inter Sys Como Ctrl+C e Ctrl+V funcionam? 2019-05-15 02:51:21 +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