Como funcionam as chaves da API e as teclas secretas? Seria seguro se eu tivesse que passar minha API e chaves secretas para outro aplicativo?

StackOverflow https://stackoverflow.com/questions/2674445

Pergunta

Estou apenas começando a pensar em como as chaves da API e as chaves secretas funcionam. Apenas 2 dias atrás, eu me inscrevi na Amazon S3 e instalei o Plugin S3fox. Eles me pediram a chave de acesso e a chave de acesso secreto, os quais exigem que eu faça login para acessar.

Então, estou me perguntando, se eles estão me pedindo minha chave secreta, eles devem estar armazenando em algum lugar certo? Não é basicamente a mesma coisa que me pedir números de cartão de crédito ou senha e armazenar isso em seu próprio banco de dados?

Como as chaves secretas e as chaves da API devem funcionar? Quão secreto eles precisam ser? Essas aplicações que usam as teclas secretas que o armazenam de alguma forma?

Foi útil?

Solução

Basicamente elaborando o que está descrito aqui.

Veja como funciona: digamos que temos uma função que leva um número de zero a nove, adiciona três e, se o resultado for maior que dez, subtrair dez. Então f (2) = 5, f (8) = 1, etc. Agora, podemos fazer outra função, chamá -la de f ', que vai para trás, adicionando sete em vez de três. f '(5) = 2, f' (1) = 8, etc.

Esse é um exemplo de uma função bidirecional e é inversa. Teoricamente, quaisquer funções matemáticas que mapassem uma coisa para outra podem ser revertidas. Na prática, porém, você pode fazer uma função que obtém sua entrada tão bem que é incrivelmente difícil de reverter.

Tomar uma entrada e aplicar uma função unidirecional é chamada de "hash" da entrada, e o que as lojas da Amazon em seu sistema é um "hash" da sua chave secreta. O SHA1 é um exemplo desse tipo de função "unidirecional", também é endurecido contra ataques.

o Função HMAC Construa as funções de hash estabelecidas para usar uma chave conhecida para autenticar uma sequência de texto. Funciona assim:

  • Você pega o texto da sua solicitação e sua chave secreta e aplica a função HMAC.
  • Você adiciona esse cabeçalho de autenticação à sua solicitação e o envia para a Amazon.
  • A Amazon procura a cópia da chave secreta e o texto que você acabou de enviar e aplica a função HMAC.
  • Se o resultado corresponder, eles sabem que você tem a mesma chave secreta.

A diferença entre isso e PKI é que esse método é Repousante, permitindo um número mínimo de trocas entre o seu sistema e os servidores da Amazon.

Não é basicamente a mesma coisa que me pedir números de cartão de crédito ou senha e armazenar isso em seu próprio banco de dados?

Sim, embora o dano que alguém possa causar com o S3 parece estar limitado a drenar sua conta.

Quão secreto eles precisam ser? Essas aplicações que usam as teclas secretas que o armazenam de alguma forma?

Em algum momento, você terá que carregar a chave secreta e, com a maioria dos sistemas baseados em UNIX, se um invasor puder obter acesso root, poderá obter a chave. Se você criptografar a chave, precisará descriptografá -la e, em algum momento, o código de descriptografia deve ser um texto simples para que possa ser executado. Este é o mesmo problema que o DRM tem, exceto que você possui o computador.

Em muitos casos, apenas coloco chaves secretas em um arquivo com permissões limitadas e tomo as precauções usuais para impedir que meu sistema esteja enraizado. Existem alguns truques para fazê -lo funcionar corretamente com um sistema multiusuário, como evitar arquivos temporários e tal.

Outras dicas

Criptografia de chave pública é usado para se defender contra ataques muito específicos, alguns dos quais são comuns. Em suma, isso é uma matemática complexa que permite verificar se o indivíduo possui o par público e privado, apenas conhecendo a chave pública. Isso é muito diferente de um cartão de crédito ou senha estática. Como exemplo, se você estiver autenticando com um servidor OpenSSH, o servidor não precisa da chave privada.

Idealmente, se o banco de dados da API da Amazon onde se comprometer, o invasor teria uma lista de chaves públicas e não conseguiria acessar a API do usuário usando essas informações. No entanto, os sistemas ideais nem sempre são colocados em prática e não sei com certeza se a Amazon está protegendo contra esse vetor de ataque, mas deve ser.

Em autenticação pública -chave, é estatisticamente imune à força bruta. As senhas costumam ser palavras de dicionário que podem ser quebradas a relatividade rapidamente. No entanto, uma chave privada é um número massivo que não é fácil de adivinhar. Se o atacante tivesse a chave pública, eles poderiam realizar muitas suposições "offline" em um super computador, mas mesmo assim levaria muito tempo e dinheiro para quebrar a chave.

A AWS projetou seu próprio algoritmo de autenticação personalizada. V4 foi lançado em 2014. Os detalhes estão descritos aqui: Solicitações de autenticação (AWS Signature Versão 4) . Um ponto importante é que a solicitação não é assinada com o próprio segredo, mas com uma chave de assinatura gerada usando o segredo. Ele também usa o HMAC-SHA256 para assinar.

Signature Generation

O uso de teclas assimétricas seria mais seguro, pois a AWS armazenaria apenas uma chave pública em vez do segredo, que é armazenado pelo usuário e pela AWS.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top