Políticas de criptografia

Aplicação de políticas de criptografia do sistema

No Fedora existem políticas para o uso de protocolos criptográficos como o TLS que são aplicadas em todo o sistema. Cada aplicativo adicionado ao Fedora deve ser verificado para estar em conformidade com as políticas. Atualmente as políticas estão restritas às principais bibliotecas como GnuTLS, OpenSSL, NSS, libkrb5, linguagens como Java e principais aplicações como OpenSSH e bind. A ferramenta rpmlint avisará quando detectar que alguma ação deve ser tomada; que a detecção é baseada em heurística e limitada a programas C, portanto a inspeção manual é recomendada. Observe, entretanto, que existem aplicativos que definem intencionalmente configurações mais fracas ou personalizadas para uma finalidade (por exemplo, postfix); aqueles não precisam aderir à política. Em caso de dúvida, discuta com equipe de segurança do Fedora.

Novas bibliotecas criptográficas

Novas bibliotecas criptográficas devem cumprir as políticas criptográficas para entrar no Fedora, a menos que uma exceção tenha sido concedida pelo comitê de empacotamento do Fedora, após consulta à equipe de segurança do Fedora.

Aplicativos C/C++

  • Aplicativos OpenSSL:

    • Se o aplicativo fornecer um arquivo de configuração que permita modificar a string da lista de cifras, certifique-se de que o arquivo enviado contenha \"PROFILE=SYSTEM\" como padrão. Nesse caso, nenhuma ação adicional será necessária.

    • Se o aplicativo não tiver um arquivo de configuração, certifique-se de que não haja nenhuma lista de cifras padrão especificada ou que a lista padrão esteja definida como \"PROFILE=SYSTEM\". Ou seja, verifique o código-fonte de SSL_CTX_set_cipher_list(). Se não estiver presente, nada precisa ser feito (o padrão é usado). Caso contrário, se essa chamada estiver presente e fornecer uma string fixa que não contém PSK ou SRP, substitua a string por \"PROFILE=SYSTEM\" ou remova a chamada.

  • Aplicativos GnuTLS:

    • Se o aplicativo fornecer um arquivo de configuração que permita modificar a sequência de prioridade da cifra, o arquivo enviado conterá \"@SYSTEM\" como padrão. Nesse caso, nenhuma ação adicional será necessária.

    • Se o aplicativo não tiver um arquivo de configuração, certifique-se de que ele use gnutls_set_default_priority() ou que a sequência de prioridade padrão seja \"@SYSTEM\". Ou seja, verifique o código-fonte para gnutls_priority_set_direct(), gnutls_priority_init(); se eles não estiverem presentes e gnutls_set_default_priority() for usado, nada precisa ser feito. Caso contrário, verifique as strings fornecidas pelo aplicativo. Se contiver PSK ou SRP, não faça nada (esses aplicativos não são atualmente cobertos pela política padrão). Caso contrário, substitua gnutls_priority_set_direct() por gnutls_set_default_priority(). Se gnutls_priority_init() for usado em vez de uma string fixa, substitua a string por \"@SYSTEM\".

Os aplicativos que utilizam outras bibliotecas criptográficas não aderem às políticas de criptografia de todo o sistema (observe que a adesão às políticas de todo o sistema é um trabalho em andamento para bibliotecas NSS). Recomenda-se que os aplicativos no Fedora usem uma dessas bibliotecas quando houver escolha, e de preferência a versão recomendada pelo upstream.

Aplicativos Perl

  • Aplicativos Perl IO::Socket::SSL:

    • Verifique o código-fonte para passar o argumento SSL_cipher_list para os métodos IO::Socket::SSL como new(), start_SSL(), new_from_fd(), set_defaults(), set_client_defaults () e set_server_defaults(). Se não estiver presente, nada precisa ser feito (o padrão é usado). Caso contrário, se esse argumento estiver presente, remova-o ou altere seu valor conforme descrito na seção OpenSSL.

  • Aplicativos Perl Net::SSLeay:

    • Verifique o código-fonte para chamadas de sub-rotina CTX_set_cipher_list(), set_cipher_list() e set_pref_cipher() do espaço de nomes Net::SSLeay. Se tal chamada ocorrer, siga as instruções descritas na seção OpenSSL.

  • Aplicativos Perl LWP::UserAgent:

    • Verifique o código-fonte para passar o argumento SSL_cipher_list para a chamada do método ssl_opts() em um objeto LWP::UserAgent. Se tal chamada ocorrer, siga as instruções descritas na seção OpenSSL.