Comment fonctionnent les clés API et les clés secrètes?

Je commence tout juste à réfléchir à la façon dont fonctionnent les clés api et les clés secrètes. Il y a juste 2 jours, je me suis inscrit à Amazon S3 et j’ai installé le plug-in S3Fox . Ils m’ont demandé à la fois ma clé d’access et ma clé d’access secrète, ce qui nécessite que je me connecte pour y accéder.

Donc, je me demande si ils me demandent ma clé secrète, ils doivent la ranger quelque part correctement? N’est-ce pas la même chose que de me demander mes numéros de carte de crédit ou mon mot de passe et de les stocker dans leur propre firebase database?

Comment les clés secrètes et les clés d’API sont-elles censées fonctionner? À quel point doivent-ils être secrets? Est-ce que ces applications utilisent les clés secrètes pour les stocker?

Merci pour la perspicacité.

En gros, élaborer sur ce qui est décrit ici .

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, soustrait dix. Donc f (2) = 5, f (8) = 1, etc. Maintenant, nous pouvons faire une autre fonction, appelons-la f, qui recule, en ajoutant sept au lieu de trois. f ‘(5) = 2, f’ (1) = 8, etc.

C’est un exemple de fonction bidirectionnelle et son inverse. Théoriquement, toute fonction mathématique qui associe une chose à une autre peut être inversée. En pratique, cependant, vous pouvez créer une fonction qui brouille si bien ses entrées qu’il est incroyablement difficile de les inverser.

Prendre une entrée et appliquer une fonction unidirectionnelle est appelée “hachage” de l’entrée, et ce que Amazon stocke sur son système est un “hachage” de votre clé secrète. SHA1 est un exemple de ce type de fonction “à sens unique”, il est également renforcé contre les attaques.

La fonction HMAC s’appuie sur des fonctions de hachage établies pour utiliser une clé connue pour authentifier une chaîne de texte. Cela fonctionne comme ceci:

  • Vous prenez le texte de votre demande et votre clé secrète et appliquez la fonction HMAC.
  • Vous ajoutez cet en-tête d’authentification à votre demande et l’envoyez à Amazon.
  • Amazon recherche leur copie de la clé secrète et le texte que vous venez d’envoyer et applique la fonction HMAC.
  • Si le résultat correspond, ils savent que vous avez la même clé secrète.

La différence entre ceci et PKI est que cette méthode est RESTful , permettant un nombre minimum d’échanges entre votre système et les serveurs d’Amazon.

N’est-ce pas la même chose que de me demander mes numéros de carte de crédit ou mon mot de passe et de les stocker dans leur propre firebase database?

Oui, bien que les dégâts que quelqu’un puisse faire avec S3 semblent se limiter à vider votre compte.

À quel point doivent-ils être secrets? Est-ce que ces applications utilisent les clés secrètes pour les stocker?

À un moment donné, vous devrez charger la clé secrète, et avec la plupart des systèmes Unix, si un attaquant peut obtenir un access root, il peut obtenir la clé. Si vous cryptez la clé, vous devez avoir un code pour le décrypter et, à un moment donné, le code de décryptage doit être en texte brut pour pouvoir être exécuté. C’est le même problème que DRM, sauf que vous possédez l’ordinateur.

Dans de nombreux cas, je mets simplement des clés secrètes dans un fichier avec des permissions limitées, et prends les précautions habituelles pour éviter que mon système ne soit rooté. Il existe quelques astuces pour le faire fonctionner correctement avec un système multi-utilisateur, comme éviter les fichiers temporaires et autres.

La cryptographie à clé publique est utilisée pour se défendre contre des attaques très spécifiques, dont certaines sont courantes. En bref, ce sont des calculs complexes qui permettent de vérifier qu’il existe à la fois une paire de clé publique et une clé privée chez un individu, tout en ne connaissant que la clé publique. Ceci est très différent d’une carte de crédit ou d’un mot de passe statique. Par exemple, si vous vous authentifiez avec un serveur OpenSSH, le serveur n’a pas besoin de la clé privée .

Idéalement, si la firebase database API d’Amazon devait être compromise, l’attaquant aurait une liste de clés publiques et serait incapable d’accéder à l’API de l’utilisateur en utilisant ces informations. Cependant, les systèmes idéaux ne sont pas toujours mis en pratique et je ne sais pas avec certitude si Amazon se protège contre ce vecteur d’attaque, mais ils devraient l’être.

Dans la clé publique, l’authentification est statistiquement insensible à la force brute. Les mots de passe sont souvent des mots du dictionnaire qui peuvent être rompus rapidement. Cependant, une clé privée est un nombre important qui n’est pas facile à deviner. Si l’attaquant avait la clé publique, alors il pourrait effectuer de nombreuses suppositions “hors ligne” sur un super ordinateur, mais même dans ce cas, il faudrait beaucoup de temps et d’argent pour casser la clé.