Um certificado SSL autoassinado é um falso senso de segurança?

30

Um certificado SSL autoassinado é uma falsa sensação de segurança?

Se você estiver sendo espionado, o usuário simplesmente aceitará o certificado como sempre.

Andre
fonte

Respostas:

25

Pergunta interessante, depende do uso na minha opinião. Você ainda está protegido em termos de criptografia da sessão, mas não tem como saber se o certificado SSL correto é apresentado a menos que você distribua seu certificado raiz da CA para usuários / clientes. Para testes internos / projetos de desenvolvimento, isso funcionaria muito bem, você gera um certificado de CA raiz que você distribui para seus usuários (pode ser feito via Diretiva de Grupo no Windows e via linha de comando openssl no Linux / BSD) e depois usa esse certificado raiz para assinando seus CSRs. Os usuários não verão um aviso nem nada e você sabe que o certificado é assinado por sua CA interna.

Para sites externos em que você não pode garantir isso, eu ainda diria que um certificado autoassinado é melhor que nenhum SSL, se você estiver enviando senhas ou outras informações confidenciais pela conexão.

No entanto, no lado positivo, existem muitos emissores de certificados "comerciais" muito baratos, sendo o GoDaddy um deles. Você pode obter um certificado por cerca de 40 euros por ano. A GoDaddy oferece até certificados gratuitos para sites de projetos OpenSource.

HampusLi
fonte
É exatamente isso que fazemos. Tenha cuidado, embora com os certificados baratos. Algumas das CAs raiz bastante estranhas e nem todas estão na coleção de certificados de CA raiz que são fornecidas com todos os navegadores.
wolfgangsz
4
+1, exceto que " o certificado autoassinado é melhor que nenhum SSL" - se você verificar que é o seu certificado e não o fornecido por um MITM. Honestamente, quando foi a última vez que um usuário normal fez isso? (Suspeito que a resposta envolva lua azul e porcos voadores). Em outras palavras, usando um certificado SSL autoassinado sem distribuir seus certificados de CA aos usuários, você está dessensibilizando os usuários para o alerta assustador que recebem - eles aprenderão para clicar sobre isso, como "bem, eles me disseram para ignorar o aviso em mysite.example.com, para que eu possa ignorá-lo em todos os lugares; veja, um ícone de cadeado!" Voila, falsa sensação de segurança!
Piskvor
7
@Piskvor, na verdade isso é culpa dos navegadores. Primeiro, os navegadores geralmente não fornecem uma maneira de "aceitar permanentemente" certificados autoassinados anteriormente desconhecidos, para que o usuário não se ponha em perigo a cada login. Segundo, os navegadores não desencorajam o uso do antigo HTTP simples, criando também uma falsa sensação de segurança. Portanto, o HTTP é sempre pior que o HTTPS, tanto na segurança quanto no reconhecimento do usuário (pelo menos eles recebem o aviso!).
Rotsor
11
@Rotsor: Primeiro, o Opera possui esse recurso que você descreve embutido, o FF possui o Certificate Patrol (que pelo menos alerta para a alteração do certificado). Observe também que nem tudo no SSL é um navegador (IMAPS etc.). Segundo, como a infinidade de sites HTTP existentes é apenas culpa dos navegadores? (e não, navegadores somente HTTPS nunca pegaram, precisamente porque havia uma rede drasticamente menor para navegar com eles). Terceiro, "eles recebem o aviso" seria útil, se apenas os usuários o lessem - e não clicassem cegamente em "aceitar" para fazer desaparecer. "Clicar em aceitar significa entender" é uma ilusão compartilhada pelos desenvolvedores.
Piskvor
11
@Piskvor, é bom saber que alguns navegadores fornecem esse recurso. Quanto ao HTTP, não sei dizer o que deve ser feito (não permitir o HTTP obviamente não é uma opção), mas ter mais avisos relacionados à segurança com SSL autoassinado do que sem SSL é definitivamente errado e é o navegador. culpa!
Rotsor 13/06
12

Vou discordar, uma vez por motivos técnicos estreitos, e uma vez por motivos gerais.

A base técnica restrita é que o OP perguntou sobre certificados autoassinados e várias outras respostas se referem a certificados assinados por CAs privadas, o que é um problema um pouco diferente. Mas não muito diferente, então isso é realmente apenas uma nota de passagem.

A principal objeção é que, desde que os certificados assinados comercialmente sejam mais do que uma despesa trivial - e US $ 40 por ano não é uma despesa trivial para muitas pessoas neste planeta - os certificados autoassinados têm um papel importante a desempenhar na segurança da Internet, desde que suas limitações sejam reconhecidas .

Um certificado autoassinado é como uma chave ssh do meu known_hostsarquivo. Sem verificação independente, não posso garantir que estou falando com o sistema que acredito que sou; mas pode me garantir que o sistema com o qual estou falando agora é o mesmo com o qual falei da última vez que pensei que estava tendo uma conversa com ele. Armazenamos em cache chaves ssh o tempo todo e nunca conheci um administrador de sistema que verificasse independentemente mais de uma fração das chaves públicas em seu known_hostsarquivo.

Certificados autoassinados (e, nesse caso, certificados assinados por CAs geralmente não válidas) são muito melhores do que nenhum SSL, desde que as pessoas percebam que, a menos que os verifiquem, apenas protegem a comunicação, o servidor na outra extremidade do registro DNS, e qualquer homem do meio atualmente na linha. Se eles verificarem independentemente o certificado, a autenticação e a criptografia serão pelo menos tão fortes quanto as fornecidas por um certificado assinado por uma CA reconhecida.

Além disso, aqueles que desejam apresentar o uso de certificados assinados por uma CA reconhecida como a única panacéia de segurança na Internet podem precisar refletir bastante sobre questões como a inclusão da CA de assinatura do governo chinês no pacote padrão Mozilla e o certificados SSL fraudulentos assinados pela Comodo .

MadHatter apoia Monica
fonte
Infelizmente, o modelo de "CA confiável" está realmente quebrado (e existe há anos); infelizmente, não vai desaparecer (e não há nada realmente melhor para substituí-lo). Como sempre, SSL e CAs confiáveis ​​não são pó mágico de duende de segurança; o usuário precisa manter ativamente a segurança - o que é, na maior parte, uma suposição bastante louca.
Piskvor
2
Seus usuários são capazes de fazer uma avaliação educada de seu nível de confiança na integridade do caminho para o servidor DNS atual (incluindo a possibilidade de envenenamento de cache) e o dispositivo que estão atingindo? Os meus não sabem o que é o DNS, muito menos poder tomar decisões de segurança educadas sobre sua conexão com um servidor em outro estado, conectado a outro site via MPLS, que é conectado ao usuário por uma VPN cliente, da qual eles são via via wifi café não criptografado. Evite dar a eles essa responsabilidade.
Shane Madden
2
@ Shane Madden: Uma área em que isso é possível é o front-end da web de administração - por exemplo, phpMyAdmin (ou, em menor grau, SVN sobre HTTPS). Geralmente, há um número limitado de usuários e eles contêm uma fração significativa de uma pista . Eu não esperaria que meu bisavô criasse um aviso de certificado SSL, mas definitivamente espero que isso seja de um administrador de sistemas, especialmente se for um servidor sob controle. Um usuário de variedades de jardins também não tem idéia sobre a known_hostsreferência a @MadHatter.
Piskvor
8

Para sites externos, nos quais os usuários não têm seu certificado de CA instalado (que é o caso mais comum), sim, um certificado autoassinado fornece uma falsa sensação de segurança e, portanto, é pior que inútil:

  • Primeiro, sem um certificado CA pré-instalado, como o usuário verifica se o certificado realmente vem de você e não de um invasor? Combinando os campos do certificado (CN, impressões digitais, etc.), é claro - mas contra o quê? Portanto, agora você precisa de um canal lateral para verificar o certificado - e nos poucos casos em que vi isso, os operadores da linha de suporte (que deveriam ter servido como canal lateral para verificação) não têm idéia do que isso significa; Além disso, a operação desse canal lateral é muito mais cara do que a obtenção de um certificado assinado pela CA confiável; portanto, o usuário deve confiar cegamente em você.

  • Segundo, o alerta assustador que o usuário recebe é assustador por um bom motivo: como o usuário não pode / não verifica o certificado apresentado, ele pode estar transmitindo dados com segurança ao Elbonian Haxx0r D00dz.

  • Terceiro, e o pior de tudo, você está dessensibilizando os usuários : "bem, eles me disseram que eu deveria ignorar esse aviso em https://mysite.example.com/ , e uma bigorna não caiu na minha cabeça, e minha o goldfish também não morreu; muuuuito, isso significa que é apenas mais uma caixa de alerta sem nenhum significado real, para que eu possa ignorá-la sempre que a encontrar - recebo aquele belo ícone de cadeado de qualquer maneira, e isso é importante ".

Em outras palavras, o nível de proteção é comparável ao HTTP simples (exceto pelo sniffing on-the-wire: embora os dados sejam criptografados em trânsito, esse é um recurso bastante anêmico sem verificação de terminal), mas a sensação de proteção é irracionalmente alta . Analogia do carro ruim: "Eu tenho ABS, então agora posso dirigir com mais segurança em más condições" - exceto que o ABS existe apenas na brochura de vendas do carro, sem estar presente no carro.

Leitura sugerida: práticas recomendadas do OWASP SSL

TL; DR: Ao usar certificados autoassinados em sites públicos, você está tornando a Internet um lugar pior, um usuário sem noção de cada vez.

Piskvor
fonte
2
@ downvoter: Eu apreciaria se você apontasse onde minha resposta é factualmente incorreta ("incorreta" em vez de "desconfortável, inconveniente e um incômodo de implementar"). A segurança é difícil, e dizer "não posso ouvi-lo" não faz nada para consertá-lo.
Piskvor
2
Embora eu não tenha votado negativamente na sua resposta, o texto da dica de ferramenta na seta para baixo indica voto negativo por nenhuma outra razão além de uma resposta não ser útil. Penso que a falsa sensação de pêndulo de segurança também pode balançar na outra direção. As recentes violações de RA do comodo provam que também não é tão difícil para um "vilão" obter um certificado perfeitamente legítimo.
mahnsc
@mahnsc: Obrigado pelo lembrete; Estou ciente disso :-) "Um certificado SSL autoassinado é uma falsa sensação de segurança?" "Sim, pelos seguintes motivos ..." parece útil, não? Então, fiquei curioso por que isso não seria o caso: eu poderia aprender algo de uma visão oposta; de um voto negativo, nem tanto.
Piskvor
11
@mahnsc: Bom argumento sobre CAs comprometidas. Não estou dizendo que a lista de autoridades de certificação raiz esteja definida e seja inatacável - a segurança perfeita não existe; mas é necessário um esforço consideravelmente maior para quebrar isso do que configurar um proxy SSL de captura em um gateway de rede.
Piskvor
11
@mahnsc: eu quis dizer que é mais fácil configurar um proxy SSL e espero que o usuário clique nos avisos do que configurar um proxy SSL e espero que uma solicitação de certificado falsa passe pelo processo de verificação da CA. Qualquer um é possível, como vimos, mas o primeiro é muito mais fácil de fazer (e mais difícil de detectar posteriormente, pois os usuários do navegador geralmente não mantêm trilhas de auditoria).
Piskvor
8

Depende. Se você acha que isso o torna mais seguro, aumenta o risco à medida que você escolhe fazer coisas mais arriscadas com seu falso senso de segurança. Se você o tratar funcionalmente equivalente ao HTTP, diria que você é um pouco mais seguro.

Sem SSL / HTTPS, qualquer pessoa com o wireshark na sua rede (ou a rede local de quem estiver logando) pode ouvir e capturar trivialmente e capturar nomes de usuário / senhas enviados como texto sem formatação.

Com o SSL autoassinado, eles não podem simplesmente ouvir, mas agora precisam falsificar seu site, alterar potencialmente o DNS para fazer um ataque MITM. Isso ainda é uma ameaça, mas significativamente mais difícil para eles realizarem.

O outro problema com o uso de SSL autoassinado é que muitos navegadores tratam os certificados autoassinados como uma grande ameaça à segurança e avisam você antes de entrar (por exemplo, chrome) com uma página vermelha gigante. http://www.sslshopper.com/article-ssl-certificates-in-google-chrome.html Isso pode ser um grande inconveniente.

Portanto, a questão é: se você executa algo que não precisa ser particularmente seguro (por exemplo, sem dados de cartão de crédito, sem #s de seguridade social) e não pode pagar um certificado adequado, um certificado autoassinado pode fazer algum sentido (para impedir que outros usuários da rede detectem facilmente suas informações de login).

dr jimbob
fonte
0

Depende do que você quer dizer com "segurança" e qual é a extensão.

Por exemplo, seu navegador vem com um conjunto de CA aceito por padrão. Isso significa que qualquer certificado emitido por esta CA é aceito pelo seu navegador (até corresponder ao nome do DNS). Agora, imagine que algum governo maligno possua uma CA ou possa forçá-la a emitir um certificado para o site que você está visitando. Então, fazer um MITM é muito fácil: eles podem fazer proxy da sua conexão, enviando para o navegador o certificado que possuem e o navegador o aceitará, pois vem de uma CA "confiável". Até que eles sejam transparentes ao DNS (que é a base do MITM), isso está ok.

Portanto, a "lista de ACs aceitas" é basicamente uma grande falha de segurança, até que uma delas ajude com algum governo maligno. Ter sua própria CA é muito melhor.

Obviamente, você pode fazê-lo em sua empresa ou em seu servidor doméstico, porque você pode instalar seu próprio certificado CA no cliente, que você também controla. Em um servidor público, você não pode lidar com nenhum usuário, solicitando que ele adicione uma exceção ou adicione seu certificado.

Portanto, depende do que você quer dizer com "segurança" e do escopo. Se você possui os clientes, COM CERTEZA, o autoassinado é mais seguro, até você instalar no próprio cliente o certificado de sua própria CA.

Obviamente, você não pode fazer isso em um site público, pois não possui todos os clientes. Portanto, você terá o risco de comportamentos diferentes, o que não é seguro.

user2402192
fonte