Pergunta

Eu sei que não há nenhuma resposta dura e rápida único, mas há uma estimativa genérica ordem de grandeza aproximação para a sobrecarga de criptografia SSL contra a comunicação de soquete sem criptografia? Eu estou falando apenas sobre o tempo de processamento comm e arame, sem contar o processamento em nível de aplicativo.

Atualizar

uma pergunta sobre HTTPS contra HTTP , mas estou interessado em olhar menor na pilha.

(I substituiu a "ordem de grandeza" frase para confusão evitar, eu estava usando-o como jargão informal em vez de no sentido CompSci formais Claro que se eu estiveste significava que formalmente, como um. geek verdadeiro eu teria binário pensamento sido em vez de decimal; -)

Atualizar

Por solicitação na comentário, suponha que estamos falando de bom tamanho mensagens (variação de 1k-10k) através de conexões persistentes. Então set-up conexão e pacote sobrecarga não são questões importantes.

Foi útil?

Solução

Ordem de magnitude:. De zero

Em outras palavras, você não verá o seu corte de taxa de transferência ao meio, ou algo parecido, quando você adicionar TLS. Respostas para a "duplicado" questão concentram-se fortemente no desempenho do aplicativo, e como isso se compara a sobrecarga de SSL . Este processamento Pergunta de aplicação exclui especificamente, e busca comparar não-SSL somente SSL. Enquanto isso faz sentido ter uma visão global do desempenho ao otimizar, não é isso que esta questão está pedindo.

A principal sobrecarga de SSL é o aperto de mão. É aí que a criptografia assimétrica caro acontece. Após a negociação, relativamente eficientes cifras simétricas são utilizados. É por isso que pode ser muito útil para ativar sessões SSL para o seu HTTPS serviço, onde muitas conexões são feitas. Para uma conexão de vida longa, este "efeito final" não é tão significativo, e as sessões não são tão úteis.


Aqui está uma anedota interessante. Quando o Google trocou Gmail para use HTTPS, foram necessários recursos adicionais; nenhum hardware de rede, há novos hospedeiros. Isso só aumentou a carga da CPU em cerca de 1%.

Outras dicas

Eu segunda @erickson: A pena de velocidade de transferência de dados pura é insignificante. As CPUs modernas chegar a um cripto / AES rendimento de várias centenas de Mbits / s. Assim a menos que você está no sistema restrito de recursos (telemóvel) TLS / SSL é rápido o suficiente para atirando dados ao redor.

Mas tenha em mente que a criptografia faz cache e balanceamento de carga muito mais difícil. Isso pode resultar em uma penalidade de desempenho enorme.

Mas a configuração da conexão é realmente um show rolha para muitos aplicação. Em baixa largura de banda, perda de pacotes elevada, conexões de alta latência (dispositivo móvel no campo) os roundtrips adicionais exigidos pela TLS pode tornar algo lento em algo inutilizável.

Por exemplo, tivemos que abandonar o requisito de criptografia para acesso a algumas das nossas aplicações web internas -. Eles, onde ao lado inutilizável se utilizado a partir de china

Assumindo que você não contam conexão set-up (como indicou na sua actualização), que depende fortemente da cifra escolhida. sobrecarga da rede (em termos de largura de banda) será insignificante. sobrecarga da CPU será dominado por criptografia. No meu Core i5 móvel, posso criptografar cerca de 250 MB por segundo com RC4 em um único núcleo. (RC4 é o que você deve escolher para o máximo desempenho.) AES é mais lento, oferecendo "apenas" cerca de 50 MB / s. Então, se você escolher cifras corretas, você não vai conseguir manter um único núcleo atual ocupado com o cripto sobrecarga, mesmo se você tem um totalmente utilizada uma linha Gbit. [ Editar : RC4 não deve ser usado porque ele não é mais seguro. No entanto, suporte de hardware AES está agora presente em muitas CPUs, o que torna a criptografia AES muito rápido nessas plataformas.]

estabelecimento

Connection, no entanto, é diferente. Dependendo da implementação (por exemplo, suporte para TLS falsa partida), ele irá adicionar round-trips, que podem causar atrasos perceptíveis. Além disso, caro criptografia ocorre no primeiro estabelecimento de conexão (CPU acima mencionada só poderia aceitar 14 conexões por núcleo por segundo se tolamente usados ??4096 bits chaves e 100 se você usar chaves de 2048 bits). Em conexões seguintes, sessões anteriores são muitas vezes reutilizados, evitando o cripto caro.

Assim, para resumir:

Transferência de conexão estabelecida:

  • Atraso: nenhum quase
  • CPU: insignificante
  • Largura de banda: insignificante

Primeiro estabelecimento de conexão:

  • Atraso: round-trips adicionais
  • Largura de banda: vários kilobytes (certificados)
  • CPU no cliente: medium
  • CPU no servidor: alta

estabelecimentos de conexão subseqüentes:

  • Atraso: round-trip adicional (não tenho certeza se um ou múltiplos, pode ser dependente da implementação)
  • Largura de banda: insignificante
  • CPU: nenhum quase
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top