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.