web-dev-qa-db-pt.com

Qual é a diferença entre Digest e Basic Authentication?

Qual é a diferença entre Digest e Basic Authentication?

164
Dot Freelancer

A Autenticação Digest comunica as credenciais de forma criptografada, aplicando uma função hash ao nome de usuário, à senha, a um valor nonce fornecido pelo servidor, ao método HTTP e ao URI solicitado.

Considerando que a autenticação básica usa codificação base64 não criptografada.

Portanto, a autenticação básica geralmente deve ser usada somente quando a segurança da camada de transporte é fornecida, como https.

Veja RFC-2617 para todos os detalhes.

165
Andy

Autenticação Básica de Acesso HTTP

  • STEP 1: o cliente faz um pedido de informação, enviando um nome de usuário e senha para o servidor em texto simples
  • STEP 2: o servidor responde com a informação desejada ou um erro

Autenticação básica usa codificação base64 (não criptografia) para gerar nossa seqüência criptográfica que contém as informações de nome de usuário e senha. O HTTP Basic não precisa ser implementado por SSL, mas, se você não o fizer, não é seguro. Então, eu não vou nem pensar em usá-lo sem.

Prós:

  • É simples de implementar, portanto, os desenvolvedores de seus clientes terão menos trabalho a fazer e levarão menos tempo para entregar, portanto, os desenvolvedores poderão ter mais chances de usar sua API
  • Ao contrário do Digest, você pode armazenar as senhas no servidor em qualquer método de criptografia desejado, como o bcrypt, tornando as senhas mais seguras.
  • Apenas uma chamada para o servidor é necessária para obter as informações, tornando o cliente um pouco mais rápido do que os métodos de autenticação mais complexos.

Contras:

  • O SSL é mais lento para executar do que o HTTP básico, portanto, isso faz com que os clientes fiquem um pouco mais lentos
  • Se você não tem controle sobre os clientes e não pode forçar o servidor a usar SSL, um desenvolvedor pode não usar SSL, causando um risco de segurança

Em Resumo - se você tem controle dos clientes, ou pode garantir que eles usem SSL, o HTTP Basic é uma boa escolha. A lentidão do SSL pode ser cancelada pela velocidade de apenas fazer um pedido

Sintaxe da Autenticação Básica

Value = username:password
Encoded Value =  base64(Value)
Authorization Value = Basic <Encoded Value> 
//at last Authorization key/value map added to http header as follows
Authorization: <Authorization Value>

Autenticação de Acesso Digest HTTP
A Digest Access Authentication usa as metodologias hash (isto é, digerir médias cortadas em pedaços pequenos) para gerar o resultado criptográfico. A autenticação de acesso HTTP Digest é uma forma mais complexa de autenticação que funciona da seguinte maneira:

  • STEP 1: um cliente envia uma solicitação para um servidor
  • STEP 2: o servidor responde com um código especial (chamado a nonce ie n umber usado somente uma vez ), outra string representando o reino (um hash) e pede ao cliente para autenticar
  • STEP 3: o cliente responde com este nonce e uma versão criptografada do nome de usuário, senha e domínio (um hash)
  • STEP 4: o servidor responde com as informações solicitadas se o hash do cliente corresponder ao seu próprio hash do nome de usuário, senha e domínio ou um erro, se não

Prós:

  • Nenhum nome de usuário ou senha é enviado ao servidor em texto não criptografado, tornando uma conexão não SSL mais segura do que uma solicitação HTTP básica que não é enviada por SSL. Isso significa que o SSL não é necessário, o que torna cada chamada um pouco mais rápida

Contras:

  • Para cada chamada necessária, o cliente deve fazer 2, tornando o processo um pouco mais lento que o HTTP Basic
  • O HTTP Digest é vulnerável a um ataque de segurança man-in-the-middle que basicamente significa que pode ser hackeado
  • O HTTP Digest impede o uso da criptografia de senha forte, o que significa que as senhas armazenadas no servidor podem ser invadidas

Em Resumo , o HTTP Digest é inerentemente vulnerável a pelo menos dois ataques, enquanto um servidor que usa criptografia forte para senhas com HTTP Básico sobre SSL tem menor probabilidade de compartilhar essas vulnerabilidades.

Se você não tiver controle sobre seus clientes, eles poderão tentar executar a autenticação básica sem SSL, o que é muito menos seguro do que o Digest.

Sintaxe de Autenticação de Acesso Digest RFC 2069

Hash1=MD5(username:realm:password)
Hash2=MD5(method:digestURI)
response=MD5(Hash1:nonce:Hash2)

Sintaxe de Autenticação de Acesso Digest RFC 2617

Hash1=MD5(username:realm:password)
Hash2=MD5(method:digestURI)
response=MD5(Hash1:nonce:nonceCount:cnonce:qop:Hash2)
//some additional parameters added 

fonte e exemplo

Em Postman parece o seguinte:

enter image description here

Nota:

  • Os esquemas Básico e Digest são dedicados à autenticação usando um nome de usuário e um segredo.
  • O esquema de portador é dedicado à autenticação usando um token.
87
Premraj

Vamos ver a diferença entre as duas HTTP autenticação usando Wireshark (Ferramenta para analisar os pacotes enviados ou recebidos).

1. Autenticação Básica do HTTP

Basic

Assim que o cliente digitar o nome de usuário correto , conforme solicitado pelo servidor da Web, o servidor da Web verifica no banco de dados se as credenciais estão corretos e fornecem o acesso ao recurso.

Aqui está como os pacotes são enviados e recebidos:

enter image description here No primeiro pacote, o Cliente preenche as credenciais usando o método POST no recurso - lab/webapp/basicauth. Em retorno, o servidor responde com http código de resposta 200 ok , ou seja, o nome de usuário: senha estava correto.

Detail of HTTP packet

Agora, no cabeçalho Authorization mostra que é Basic Autorização seguida por alguma string aleatória .Esta String é a codificado (Base64) versão das credenciais admin:aadd (incluindo dois pontos).

2. Autenticação Digest Http (rfc 2069)

Até agora vimos que a Autenticação Básica envia nome de usuário: senha em texto simples pela rede. Mas o Digest Auth envia um HASH da senha usando o algoritmo Hash.

Aqui estão os pacotes mostrando as solicitações feitas pelo cliente e a resposta do servidor.

Digest

Assim que o cliente digita as credenciais solicitadas pelo servidor, a Senha é convertida para um response usando um algoritmo e, em seguida, é enviada para o servidor. Se o servidor Database tiver a mesma resposta fornecida pelo cliente, o servidor dará acesso ao resource, caso contrário, um erro 401 .

Detailed digest auth packet No acima Authorization, a string response é calculada usando os valores Username, Realm, Password, http-method, URI e Nonce como mostrado na imagem:

Response algorithm (dois pontos são incluídos)

Portanto, podemos ver que a Autenticação Digest é mais segura, pois envolve Hashing (criptografia MD5). Portanto, as ferramentas sniffer de pacote não podem farejar a senha, embora na Basic Auth a senha exata tenha sido mostrada no Wireshark.

32
BoRRis