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 / coding / Perguntas / 77219279
Accepted
Victor Lucas Mazzotti
Victor Lucas Mazzotti
Asked: 2023-10-03 09:59:37 +0800 CST2023-10-03 09:59:37 +0800 CST 2023-10-03 09:59:37 +0800 CST

É o mesmo que usar SSL se eu implementar uma lógica de segurança semelhante ao SSL na minha página da web?

  • 772

Supondo que minha página não tenha SSL. Suponhamos os seguintes passos:

  1. O usuário faz uma solicitação para minha página (vamos chamá-la de www.mypage.com ).

  2. JS do lado do cliente cria um SYMMETRIC KEY .

  3. JS do lado do cliente faz uma solicitação para minha página de back-end, solicitando a CHAVE PÚBLICA do meu servidor.

  4. JS do lado do cliente criptografa a SYMMETRIC KEY que foi gerada anteriormente dentro da PUBLIC KEY obtida .

  5. JS do lado do cliente envia os dados ENCRYPTED para o SERVIDOR.

  6. O servidor descriptografa os dados recebidos.

  7. O servidor começa a enviar/ler todas as seguintes informações criptografadas na CHAVE SIMÉTRICA gerada no PASSO 2.

  8. JS do lado do cliente também começa a enviar/ler todas as informações criptografadas a seguir na CHAVE SIMÉTRICA gerada na ETAPA 2.

Pelo que sei, mesmo que o invasor esteja ouvindo todas as informações das etapas 1 a 8, ele não consegue descriptografar nada e o usuário está seguro.

Vocês concordam comigo? Estou correcto? Se sim, podemos assumir que o SSL nativo nos navegadores existe devido a páginas "mal escritas"?

security
  • 1 1 respostas
  • 36 Views

1 respostas

  • Voted
  1. Best Answer
    Steffen Ullrich
    2023-10-03T10:16:28+08:002023-10-03T10:16:28+08:00

    O TLS protege a comunicação entre um cliente e um servidor contra um invasor intermediário capaz de interceptar e modificar a comunicação . Este pode ser o ISP, pode ser o proprietário de um ponto de acesso WiFi público ou pode ser um invasor em sua LAN ou ponto de acesso WiFi que redireciona seu tráfego usando ARP ou falsificação de DNS. Vamos ver como essa abordagem proposta funciona neste caso.

    JS do lado do cliente cria uma CHAVE SIMÉTRICA.

    De onde vem esse JS do lado do cliente? Esperamos que não seja do servidor, porque não há garantia de que um invasor não o tenha modificado. Mas supondo que isso foi transferido para o cliente com algum tipo de conexão segura...

    JS do lado do cliente faz uma solicitação à minha página de back-end, solicitando a CHAVE PÚBLICA do meu servidor.

    Como essa solicitação ao servidor não está protegida contra interceptação e modificação, um invasor intermediário pode simplesmente substituir a chave pública pela sua própria e enviá-la ao cliente. Como o cliente não possui nenhum tipo de validação da chave pública (ou seja, nenhuma autenticação do servidor), ele a aceitará.

    A partir daí o cliente acreditará trocar a chave simétrica e o tráfego criptografado com o servidor, enquanto na verdade os troca com o invasor. O invasor pode descriptografar a chave simétrica e o tráfego e construir a partir disso sua própria conexão com o servidor, desta vez com a chave original do servidor.

    Em resumo: está faltando um ponto crítico do TLS - a autenticação do servidor. Isso permite que um homem ativo no meio quebre facilmente a proteção.

    Observe que há mais falhas em sua abordagem, como nenhuma transparência de encaminhamento, nenhuma integridade de mensagem, nenhuma proteção de reprodução. Mas a falta de autenticação do servidor é o problema mais óbvio e crítico.

    Se sim, podemos assumir que o SSL nativo nos navegadores existe devido a páginas "mal escritas"?

    Ele está integrado aos navegadores, pois é fácil errar na criptografia, portanto, não confie que os usuários façam a sua própria criptografia. E é enviado com CA raiz como âncoras de confiança, já que a criptografia com uma parte remota anteriormente desconhecida precisa de alguma forma para validar se a parte é realmente a pretendida (a autenticação do servidor que está faltando), o que é feito verificando o certificado do servidor em TLS contra a CA raiz confiável integrada.

    Veja também Por que não deveríamos lançar o nosso próprio? sobre por que você não deveria tentar inventar seu próprio protocolo criptográfico, mas sim confiar em padrões estabelecidos.

    • 3

relate perguntas

Sidebar

Stats

  • Perguntas 205573
  • respostas 270741
  • best respostas 135370
  • utilizador 68524
  • Highest score
  • respostas
  • Marko Smith

    destaque o código em HTML usando <font color="#xxx">

    • 2 respostas
  • Marko Smith

    Por que a resolução de sobrecarga prefere std::nullptr_t a uma classe ao passar {}?

    • 1 respostas
  • Marko Smith

    Você pode usar uma lista de inicialização com chaves como argumento de modelo (padrão)?

    • 2 respostas
  • Marko Smith

    Por que as compreensões de lista criam uma função internamente?

    • 1 respostas
  • Marko Smith

    Estou tentando fazer o jogo pacman usando apenas o módulo Turtle Random e Math

    • 1 respostas
  • Marko Smith

    java.lang.NoSuchMethodError: 'void org.openqa.selenium.remote.http.ClientConfig.<init>(java.net.URI, java.time.Duration, java.time.Duratio

    • 3 respostas
  • Marko Smith

    Por que 'char -> int' é promoção, mas 'char -> short' é conversão (mas não promoção)?

    • 4 respostas
  • Marko Smith

    Por que o construtor de uma variável global não é chamado em uma biblioteca?

    • 1 respostas
  • Marko Smith

    Comportamento inconsistente de std::common_reference_with em tuplas. Qual é correto?

    • 1 respostas
  • Marko Smith

    Somente operações bit a bit para std::byte em C++ 17?

    • 1 respostas
  • Martin Hope
    fbrereto Por que a resolução de sobrecarga prefere std::nullptr_t a uma classe ao passar {}? 2023-12-21 00:31:04 +0800 CST
  • Martin Hope
    比尔盖子 Você pode usar uma lista de inicialização com chaves como argumento de modelo (padrão)? 2023-12-17 10:02:06 +0800 CST
  • Martin Hope
    Amir reza Riahi Por que as compreensões de lista criam uma função internamente? 2023-11-16 20:53:19 +0800 CST
  • Martin Hope
    Michael A formato fmt %H:%M:%S sem decimais 2023-11-11 01:13:05 +0800 CST
  • Martin Hope
    God I Hate Python std::views::filter do C++20 não filtrando a visualização corretamente 2023-08-27 18:40:35 +0800 CST
  • Martin Hope
    LiDa Cute Por que 'char -> int' é promoção, mas 'char -> short' é conversão (mas não promoção)? 2023-08-24 20:46:59 +0800 CST
  • Martin Hope
    jabaa Por que o construtor de uma variável global não é chamado em uma biblioteca? 2023-08-18 07:15:20 +0800 CST
  • Martin Hope
    Panagiotis Syskakis Comportamento inconsistente de std::common_reference_with em tuplas. Qual é correto? 2023-08-17 21:24:06 +0800 CST
  • Martin Hope
    Alex Guteniev Por que os compiladores perdem a vetorização aqui? 2023-08-17 18:58:07 +0800 CST
  • Martin Hope
    wimalopaan Somente operações bit a bit para std::byte em C++ 17? 2023-08-17 17:13:58 +0800 CST

Hot tag

python javascript c++ c# java typescript sql reactjs html

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