Proteção de Segurança da API
Em serviços de API, X-Timestamp, X-Nonce, X-AccessKey e X-Signature são componentes principais comuns de mecanismos de assinatura de solicitação de API, principalmente usados para autenticação, verificação de integridade de dados e prevenção de ataques de repetição.
Análise de Componentes Principais
1. X-Timestamp (Carimbo de Tempo)
Funções
- Registra o tempo de início da solicitação (normalmente carimbo de tempo Unix) para validação do tempo de resposta do lado do servidor.
Problemas Resolvidos
- Prevenir Ataques de Repetição: O servidor define um período de validade do carimbo de tempo (por exemplo, 5 minutos), rejeitando diretamente solicitações expiradas. Atacantes não podem repetir solicitações legítimas interceptadas após expirarem.
- Verificação de Sincronização: Garante que a desvio de tempo entre cliente e servidor esteja dentro de uma faixa razoável, evitando que a manipulação do tempo afete a validade da solicitação.
2. X-Nonce (Número Aleatório Único)
Funções
- Gera uma string aleatória única (por exemplo, UUID) para garantir a singularidade de cada solicitação.
Problemas Resolvidos
- Prevenir Solicitações Duplicadas: O servidor armazena em cache valores Nonce (ou combina com carimbos de tempo) para rejeitar solicitações duplicadas que já foram processadas.
- Aumentar Dinamicidade da Assinatura: Mesmo para solicitações com os mesmos parâmetros, o resultado da assinatura difere devido a Nonces diferentes, evitando reutilização de assinatura.
3. X-AccessKey (Chave de Acesso)
Funções
- Identifica a identidade do cliente (por exemplo, usuário, aplicação ou serviço), normalmente emparelhado com uma
SecretKeypré-atribuída pelo servidor.
Problemas Resolvidos
- Autenticação: Verifica se o solicitante é um cliente legalmente registrado.
4. X-Signature (Assinatura da Solicitação)
Funções
- O cliente usa
SecretKeypara gerar uma assinatura para o conteúdo da solicitação (parâmetros, caminho, carimbo de tempo, Nonce, etc.), e o servidor verifica a assinatura usando o mesmo algoritmo.
Problemas Resolvidos
- Integridade de Dados: Garante que a solicitação não seja adulterada durante a transmissão (modificações de parâmetros farão com que a verificação da assinatura falhe).
- Prevenir Falsificação de Identidade: Atacantes sem a
SecretKeynão podem gerar assinaturas corretas e não podem falsificar solicitações legítimas. - Vincular Parâmetros Críticos: Algoritmos de assinatura normalmente incluem métodos de solicitação, caminhos, parâmetros, etc., garantindo consistência entre o conteúdo da solicitação e a assinatura.
Exemplo de Processo Geral
Etapas de Geração de Assinatura do Cliente
- Concatenar dados da solicitação
- Usar
SecretKeypara gerar uma assinatura via algoritmo de criptografia e armazená-la no cabeçalhoX-Signature. - Adicionar
X-Timestamp,X-Nonce,X-AccessKeyeX-Signatureaos cabeçalhos da solicitação e enviar.
Processo de Verificação do Lado do Servidor
- Verificar Carimbo de Tempo: Verificar se está dentro do período de validade (por exemplo, ±5 minutos).
- Verificar Nonce: Verificar se já existe (para prevenir solicitações duplicadas, pode ser armazenado em cache com carimbos de tempo).
- Verificar Assinatura: Encontrar a
SecretKeycorrespondente viaAccessKey, regenerar a assinatura usando o mesmo algoritmo e compará-la comX-Signature. - Tratamento do Resultado: Se todas as verificações passarem, executar a lógica da solicitação; caso contrário, retornar erros 401 Unauthorized ou 403 Forbidden.
Resumo das Vantagens do Mecanismo
| Função | Método de Implementação |
|---|---|
| Autenticação | AccessKey identifica a identidade do cliente, Signature verifica se o cliente possui uma SecretKey válida. |
| Proteção contra Adulteração de Dados | Assinatura vincula-se ao conteúdo da solicitação (método, caminho, parâmetros, etc.), qualquer modificação fará com que a verificação da assinatura falhe. |
| Contra Ataques de Repetição | Timestamp garante atualidade, Nonce garante singularidade da solicitação, mecanismos duplos rejeitam solicitações duplicadas/expiradas. |
| Não Repúdio | Assinatura pode rastrear a origem da solicitação, clientes não podem negar ter iniciado solicitações legítimas. |