Essentiellement é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, en ajoute trois et, si le résultat est supérieur à dix, en soustrait dix. Donc f (2) = 5, f (8) = 1, etc. Maintenant, on peut faire une autre fonction, l'appeler f ', qui va en arrière, en ajoutant sept au lieu de trois. f '(5) = 2, f' (1) = 8, etc.
C'est un exemple de fonction bidirectionnelle et de son inverse. Théoriquement, toutes les fonctions mathématiques qui mappent une chose à une autre peuvent être inversées. En pratique, cependant, vous pouvez créer une fonction qui brouille si bien son entrée qu'elle est incroyablement difficile à inverser.
Prendre une entrée et appliquer une fonction unidirectionnelle s'appelle «hacher» l'entrée, et ce qu'Amazon stocke sur son système est un «hachage» de votre clé secrète. SHA1 est un exemple de ce genre de fonction "unidirectionnelle", elle est également renforcée 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 cela 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 fondamentalement 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 base de données?
Oui, bien que les dégâts que quelqu'un puisse faire avec S3 semblent se limiter à vider votre compte.
À quel point ont-ils besoin d'être secrets? Ces applications qui utilisent les clés secrètes les stockent-elles d'une manière ou d'une autre?
À 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, il peut obtenir la clé. Si vous cryptez la clé, vous devez avoir du code pour la 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 autorisations limitées et je 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, il s'agit de mathématiques complexes qui permettent de vérifier que l'individu possède à la fois la paire de clés publique et privée 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 base de données d'API d'Amazon où être compromise, l'attaquant aurait une liste de clés publiques et ne serait pas en mesure 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 l'authentification par clé publique, il est statistiquement immunisé contre la force brute. Les mots de passe sont souvent des mots du dictionnaire qui peuvent être rapidement rompus avec la relativité. Cependant, une clé privée est un nombre massif qui n'est pas facile à deviner. Si l'attaquant avait la clé publique, il pourrait alors 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é.
la source
AWS a conçu son propre algorithme d'authentification personnalisé. La version v4 a été publiée en 2014. Les détails sont décrits ici: Requêtes d'authentification (AWS Signature Version 4) . Un point majeur est que la demande n'est pas signée 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 de clés asymétriques serait plus sûre car AWS ne stockerait qu'une clé publique au lieu du secret, qui est stocké à la fois par l'utilisateur et AWS.
la source