Autenticação de dois fatores (2FA)

A autenticação de dois fatores (2FA) é um método de segurança amplamente utilizado para proteger contas online e sistemas de acesso.

Ele adiciona uma camada adicional de segurança além da tradicional autenticação por senha, exigindo que os usuários forneçam duas formas diferentes de verificação de identidade durante o processo de login.

O processo típico de autenticação de dois fatores envolve os seguintes processos:

  1. Primeiro Fator (1FA) - Algo que o usuário sabe: Este é o fator de autenticação primário, que geralmente consiste em uma senha ou código PIN. O usuário insere essa informação durante o processo de login, como faria normalmente.
  2. Segundo Fator Algo que o usuário possui ou é: Este é um fator adicional, que pode ser algo que o usuário possui, como um smartphone, token de hardware, ou algo que o usuário é, como suas características biométricas (impressão digital, reconhecimento facial). Este segundo fator adiciona uma camada extra de segurança, pois requer algo físico ou inerente ao usuário além da simples memorização de uma senha.

Ao ativar a autenticação de dois fatores, os usuários são obrigados a fornecer tanto a senha quanto o segundo fator durante o login. Isso significa que mesmo que um invasor consiga obter a senha do usuário, ele ainda precisará do segundo fator para acessar a conta com sucesso. Isso torna muito mais difícil para os hackers invadirem contas, pois é necessário comprometer duas formas independentes de autenticação.

A autenticação de dois fatores é uma prática recomendada para aumentar a segurança das contas online e proteger contra acesso não autorizado. Ao adicionar uma camada adicional de verificação de identidade, ela ajuda a mitigar os riscos de violação de dados e comprometimento de contas, proporcionando uma maior tranquilidade para os usuários e organizações.

One-Time-Password (OTP)

O One-Time-Password (OTP), ou senha única, é um mecanismo de autenticação que gera códigos de segurança de uso único para verificar a identidade de um usuário durante o processo de login ou transação. Esses códigos são válidos apenas por um curto período de tempo e são gerados com base em um algoritmo criptográfico ou por meio de um dispositivo físico ou aplicativo móvel.

Ao utilizar um OTP, o usuário recebe um código único, geralmente enviado por mensagem de texto, e-mail, ou gerado por um aplicativo de autenticação. Esse código é inserido no momento da autenticação e é verificado em tempo real pelo servidor de autenticação para confirmar a identidade do usuário.

A principal vantagem do OTP é a sua capacidade de fornecer um segundo fator de autenticação, aumentando significativamente a segurança em comparação com métodos de autenticação baseados apenas em senha.

Como os códigos são válidos por um curto período de tempo e não podem ser reutilizados, mesmo se forem interceptados, eles não serão úteis para um invasor. Essa camada adicional de segurança ajuda a proteger contra acesso não autorizado a contas e informações confidenciais.

O OTP é amplamente utilizado em sistemas de autenticação online, serviços bancários, redes sociais, e outros aplicativos que exigem um alto nível de segurança. Sua simplicidade de implementação e eficácia na proteção contra ataques cibernéticos o tornam uma escolha popular entre desenvolvedores e usuários preocupados com a segurança de suas informações pessoais, além do OTP, existem o TOTP e o HOTP, estes precisam do enrollment (cadastro) da seed (semente) no dispositivo.

  • No caso do TOTP, a semente é combinada com um contador de tempo (dividido em intervalos fixos, como 30 segundos), e o resultado é passado por uma função de hash criptográfica (geralmente o HMAC-SHA-1). Isso produz um código de autenticação que muda periodicamente ao longo do tempo, fornecendo uma senha de uso único que é válida apenas durante um curto período.

  • No HOTP, a semente é combinada com um contador que é incrementado a cada uso, gerando assim um novo código de autenticação. Neste caso, o contador atua como uma espécie de "tempo", pois cada incremento resulta em um novo código, embora o tempo real não seja um fator no processo de geração de códigos.

Em ambos os casos, a semente (seed) é um componente crítico para garantir que os códigos de autenticação sejam gerados de forma segura e única. Ela precisa ser mantida em segredo entre o servidor e o dispositivo do usuário para evitar que terceiros possam prever ou calcular os códigos de autenticação.

A segurança da semente é essencial para a eficácia do sistema de autenticação baseado em TOTP ou HOTP.

No ecossistema do Authcube é fundamental entender os componentes envolvidos no processo de OTP, as suas respectivas etapas e o uso ou não do Authcube SDK.

Nome da Etapa Descrição Tipo de OTP Authcube SDK Authcube Server
Tem Semente? (hasSeed) Processo para verificar se já existe uma semente salva no dispositivo. hotp e totp X
Enrollment (setSeed) O processo de enrollment (cadastro) da semente no dispositivo, envolve receber a semente através do Authcube Server (Rest API) e o processo de salvar no dispositivo usando o Authcube SDK, a função setSeed(). hotp e totp X X
Gerar OTP Para gerar um código OTP, basta efetuar a requisição para o Authcube Server (Rest API). otp X
Validar OTP (verify) Para validar um código OTP, basta efetuar a requisição para o Authcube Server (Rest API). otp X
Gerar TOTP Para gerar um código TOTP, é necessário ter uma semente (seed) válida e através do Authcube SDK utilizar a função generateTOTP(). totp X
Validar TOTP (verify) O processo de validação do TOTP é efetuado no Authcube Server através de API Rest. totp X
Gerar HOTP Para gerar um código HOTP, é necessário ter uma semente (seed) válida e através do Authcube SDK utilizar a função generateHOTP(). hotp X
Validar HOTP (verify) O processo de validação do HOTP é efetuado no Authcube Server através de API Rest. hotp X
Excluir Semente O processo de eliminação da semente (seed) pode ser efetuada no dispositivo através deleteSeed() utilizando o Authcube SDK, para ser excluído na identidade, ou seja, do lado servidor, tem que ser através da respectiva API no Authcube Server. hotp e totp X X

hasSeed()

A função hasSeed() desempenha um papel crucial no processo de autenticação de dois fatores. Sua responsabilidade é verificar se uma semente (seed) foi previamente gerada e está disponível para uso pelas funções generateTOTP() ou generateHOTP().

A semente é um elemento essencial nesses algoritmos de geração de senhas de uso único (OTP), pois serve como um ponto de partida para a criação dos códigos de autenticação. Ao determinar se uma semente está presente, esta função possibilita que os métodos de geração de OTP sejam executados com sucesso, garantindo assim a integridade e a segurança do processo de autenticação.

hasSeedForIdentifier()

A função hasSeedForIdentifier() tem como objetivo verificar se já existe uma semente (seed) associada a um identificador específico. Essa verificação é fundamental para confirmar se os dados necessários para a geração de OTP já foram cadastrados no dispositivo, garantindo que as funções de geração de TOTP ou HOTP possam operar corretamente.

setSeed()

A função setSeed() desempenha um papel crítico ao receber e armazenar uma semente (seed) fornecida como parâmetro. Esta semente é fundamental para a geração de códigos de autenticação únicos e seguros por meio das funções generateTOTP() ou generateHOTP(). Ao receber a semente, a função setSeed() a salva em uma área segura do dispositivo, garantindo sua proteção contra acesso não autorizado.

deleteSeed()

A função deleteSeed() desempenha um papel importante na gestão de segurança ao remover a semente (seed) previamente armazenada no dispositivo. Ao ser invocada, esta função executa a exclusão da semente da área de armazenamento seguro do dispositivo, garantindo assim que não haja mais acesso à semente para fins de geração de códigos de autenticação.

Nota: É importante ressaltar que a exclusão da semente é realizada apenas no dispositivo local, ela não remove a semente da identidade/usuário no servidor.

generateTOTP()

O TOTP (Time-based One-Time Password) é um método de autenticação de dois fatores que fornece uma camada adicional de segurança para o processo de transações online, baseado na RFC-6238, ele funciona gerando senhas únicas que só podem ser usadas uma vez e que expiram após um curto período de tempo, geralmente 30 segundos.

O TOTP é amplamente utilizado por serviços online que exigem um alto nível de segurança, como serviços bancários online, serviços de e-mail, plataformas de criptomoedas e outros serviços que lidam com informações confidenciais do usuário. Ele é uma alternativa mais segura às senhas estáticas tradicionais, pois as senhas geradas pelo TOTP são exclusivas e não podem ser reutilizadas por um invasor.

generateHOTP()

O HOTP (HMAC-based One-Time Password), baseado na RFC-4226 é um algoritmo de geração de senhas de uso único baseado em HMAC (Hash-based Message Authentication Code). Fornece uma forma de autenticação robusta e segura, geralmente utilizada em sistemas que requerem um alto nível de segurança, como serviços bancários online e autenticação de acesso remoto.

A ideia fundamental por trás do HOTP é que tanto o servidor de autenticação, quanto o dispositivo do usuário, compartilhem uma chave secreta (semente) inicial. Esta semente é usada para calcular uma série de códigos de autenticação únicos, cada um associado a um contador incremental.

generateOCRA()

O OCRA (OATH Challenge-Response Algorithm) é um método de autenticação de dois fatores e assinatura de transação (TDS - Transaction Data Sign), que envolve um desafio e uma resposta. Baseado na RFC-6287, ele foi desenvolvido pela OATH (Initiative for Open Authentication) para ser usado em sistemas que exigem autenticação segura, como bancos e serviços governamentais.

O OCRA usa um algoritmo de criptografia de chave simétrica para gerar uma resposta única para um desafio específico. O dispositivo de autenticação do usuário e o servidor compartilham uma chave secreta e usam um algoritmo de hash para gerar a resposta de autenticação.

results matching ""

    No results matching ""