Comment fonctionnent clés API et clés secrètes? Serait-il sûr si je dois passer mon API et les clés secrètes à une autre application?

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

Question

Je commence à penser à la façon dont fonctionnent les touches api et les clés secrètes. Il y a seulement 2 jours j'ai signé pour Amazon S3 et installé le S3Fox Plugin . On m'a demandé pour mon clé d'accès et accès secrète, moi qui exigent tous deux de connexion d'accès.

Je me demande, s'ils me demandent ma clé secrète, ils doivent être stocker quelque part non? Est-ce pas fondamentalement la même chose que me demander mes numéros de carte de crédit ou un mot de passe et de stockage que dans leur propre base de données?

Comment les clés secrètes et les clés de api censé fonctionner? Comment secrets doivent-ils être? Sont ces applications qui utilisent les clés secrètes stocker en quelque sorte?

Était-ce utile?

La solution

En fait élaborer sur ce qui est décrit .

Voici comment cela fonctionne: disons que nous avons une fonction qui prend un nombre de zéro à neuf, ajoute trois et, si le résultat est supérieur à dix, dix soustraient. Donc f (2) = 5, f (8) = 1, etc. Maintenant, nous pouvons faire une autre fonction, appeler f », qui va vers l'arrière, en ajoutant sept au lieu de trois. f '(5) = 2, f' (1) = 8, etc.

C'est un exemple d'une fonction à deux voies et son inverse. En théorie, toutes les fonctions mathématiques qui associe une chose à l'autre peuvent être inversées. Dans la pratique, cependant, vous pouvez faire une fonction qui brouille son entrée si bien qu'il est incroyablement difficile à inverser.

Prendre une entrée et l'application d'une fonction à sens unique est appelée « hashing » l'entrée, et ce que les magasins Amazon sur leur système est un « hachage » de votre clé secrète. SHA1 est un exemple de ce genre de fonction « à sens unique », il est également durci contre les attaques.

Le fonction HMAC se base sur des fonctions de hachage mis en place pour utiliser une clé connue pour authentifier un chaîne de texte. Il fonctionne comme ceci:

  • Vous prenez le texte de votre demande et votre clé secrète et d'appliquer la fonction HMAC.
  • Vous ajoutez cet en-tête d'authentification à votre demande et l'envoyer à Amazon.
  • Amazon semble leur copie de la clé secrète, et le texte que vous venez envoyé et applique la fonction HMAC.
  • Si les matchs de résultats, ils savent que vous avez la même clé secrète.

La différence entre ce dernier et l'ICP est que cette méthode est RESTful , ce qui permet un nombre minimum de les échanges entre votre système et les serveurs d'Amazon.

  

est-ce pas fondamentalement la même chose que   me demander mes numéros de carte de crédit   ou mot de passe et de stockage que dans leur   propre base de données?

Oui, si quelqu'un de dégâts peut faire avec S3 semble se limiter à vider votre compte.

  

Comment secrets doivent-ils être? Sont   ces applications qui utilisent le secret   clés stocker en quelque sorte?

À un moment donné, vous allez devoir charger la clé secrète, et avec la plupart des systèmes basés sur Unix, si un attaquant peut obtenir un accès root, ils peuvent obtenir la clé. Si vous cryptez la clé, vous devez avoir un code pour le déchiffrer, et à un moment donné le code de décryptage doit être le texte brut afin qu'il puisse être exécuté. Ce problème est le même DRM a, à l'exception que vous possédez l'ordinateur.

Dans de nombreux cas, je viens de mettre les clés secrètes dans un fichier avec des autorisations limitées, et de prendre les précautions habituelles pour empêcher mon système d'enracinement. Il y a quelques trucs pour le faire fonctionner correctement avec un système multi-utilisateur, par exemple en évitant les fichiers temporaires et autres.

Autres conseils

Public Key Cryptography est utilisé pour se défendre contre des attaques spécifiques, dont certaines sont communs. En bref, ce complexe est mathématique qui permet à un de vérifier que à personne possède à la fois la paire publique et clé privée tout en ne connaissant que la clé publique. Ceci est très différent d'une carte de crédit ou un mot de passe statique. À titre d'exemple, si vous authentifiez avec un serveur OpenSSH alors le serveur n'a pas besoin clé privée.

Idéalement, si la base de données de l'API d'Amazon où être compromis l'attaquant aurait une liste de clés publiques et serait dans l'impossibilité d'accéder à l'API de l'utilisateur en utilisant ces informations. Cependant des systèmes idéaux ne sont pas toujours mis en pratique et je ne sais pas avec certitude si Amazon protège contre ce vecteur d'attaque, mais ils devraient être.

Dans l'authentification à clé publique est statistiquement immunitaire à la force brute. Les mots de passe sont des mots souvent dictionnaire qui peut être rompu rapidement la relativité. Cependant, une clé privée est un nombre massif qui est pas facile à deviner. Si l'attaquant avait la clé publique alors ils pourraient réaliser de nombreuses suppositions « hors ligne » sur un super ordinateur, mais même alors, il faudrait beaucoup de temps et d'argent pour casser la clé.

AWS a conçu leur propre algorithme d'authentification personnalisé. v4 a été libéré en 2014. Les détails sont décrits ici: demandes Authentification des (AWS Signature version 4) . Un point important est que la demande ne soit pas signé avec le secret lui-même, mais avec une clé de signature qui est générée à l'aide du secret. Il utilise également HMAC-SHA256 pour la signature.

L'utilisation des clés asymétriques serait plus sûr puisque AWS ne ferait que stocker une clé publique au lieu du secret, qui est stocké à la fois par l'utilisateur et AWS.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top