Linux C / C ++ - alguma maneira de criar um soquete SSL / TLS “transparente”?

1

Normalmente, em C ou C ++, para se comunicar por meio de um soquete TCP criptografado SSL / TLS, é necessário usar as funções fornecidas pelo provedor SSL / TLS (OpenSSL, GnuTLS, etc) para executar as leituras & escreve, por exemplo: BIO_write, BIO_read, etc.

Eu tenho uma rotina em C que lê e grava de um soquete, e gostaria de ter a capacidade de passar um soquete TLS para que ele possa executar a comunicação criptografada através dessa conexão. No entanto, isso exigiria que eu reescrevesse a função para que ela usasse as rotinas BIO_read, BIO_write etc, quando eu gostaria de mantê-la como está.

Existe alguma maneira de criar um soquete (ou converter um existente), que terá todos os dados gravados e lidos automaticamente criptografados / descriptografados (isto é: "transparentemente"), idealmente completamente no userspace, para que rotinas usando esse soquete não precisa se preocupar sobre como transmitir dados embora? Ou seria melhor fazer rotinas de wrapper para essas leituras / gravações que escolhem qual rotina de leitura / gravação usar?

    
por Joe 10.08.2016 / 12:24

1 resposta

2

Uma família de conjuntos de ferramentas para isso é a família UCSPI-SSL. O pacote ucspi-ssl de William Baxter gerou o pacote ucspi-ssl de Scott Gifford que gerou o pacote ucspi-ssl de Erwin Hoffman. Em cada um, você executa seu programa a partir de sslserver , que lida com a aceitação de conexões recebidas, o handshaking SSL e a criptografia / descriptografia de dados, e seu programa apenas fala em texto simples através de sua entrada e saída padrão como uma ferramenta comum.

O sslsvd de Gerrit Pape, uma das ferramentas do conjunto de ferramentas ipsvd, faz um trabalho semelhante.

Leitura adicional

  • Jonathan de Boyne Pollard (2015). " Softwares ". A geração na Interface do Programa Cliente-Servidor UNIX . Respostas frequentemente dadas.
  • sslserver . UCSPI-SSL. 2015. SuperScript.
  • sslsvd . ipsvd. Gerrit Pape.
  • sslio . ipsvd. Gerrit Pape.
por 10.08.2016 / 16:03