Fondamentalmente elaborando ciò che è delineato qui .
Ecco come funziona: diciamo che abbiamo una funzione che prende un numero da zero a nove, ne aggiunge tre e, se il risultato è maggiore di dieci, sottrae dieci. Quindi f (2) = 5, f (8) = 1, ecc. Ora, possiamo fare un'altra funzione, chiamarla f ', che va indietro, aggiungendo sette anziché tre. f '(5) = 2, f' (1) = 8, ecc.
Questo è un esempio di una funzione a due vie e il suo inverso. Teoricamente, tutte le funzioni matematiche che mappano una cosa all'altra possono essere invertite. In pratica, tuttavia, puoi creare una funzione che mescola i suoi input così bene che è incredibilmente difficile invertire.
Prendere un input e applicare una funzione a senso unico è chiamato "hashing" dell'input e ciò che Amazon memorizza sul loro sistema è un "hash" della tua chiave segreta. SHA1 è un esempio di questo tipo di funzione "unidirezionale", inoltre è rinforzato dagli attacchi.
La funzione HMAC si basa su funzioni hash consolidate per utilizzare una chiave nota per autenticare una stringa di testo. Funziona così:
- Prendi il testo della tua richiesta e la tua chiave segreta e applichi la funzione HMAC.
- Aggiungi quell'intestazione di autenticazione alla tua richiesta e la invii ad Amazon.
- Amazon cerca la loro copia della chiave segreta, il testo che hai appena inviato e applica la funzione HMAC.
- Se il risultato corrisponde, sanno che hai la stessa chiave segreta.
La differenza tra questo e PKI è che questo metodo è RESTful , consentendo un numero minimo di scambi tra il tuo sistema e i server di Amazon.
Fondamentalmente non è la stessa cosa che chiedermi i numeri della mia carta di credito o la mia password e memorizzarli nel loro database?
Sì, anche se il danno che qualcuno può fare con S3 sembra essere limitato a svuotare il tuo account.
Quanto devono essere segreti? Queste applicazioni che usano le chiavi segrete lo memorizzano in qualche modo?
Ad un certo punto, dovrai caricare la chiave segreta e, con la maggior parte dei sistemi basati su Unix, se un utente malintenzionato può ottenere l'accesso come root può ottenere la chiave. Se si crittografa la chiave, è necessario disporre di codice per decrittografarla e, a un certo punto, il codice di decrittografia deve essere un testo semplice in modo che possa essere eseguito. Questo è lo stesso problema che ha DRM, tranne per il fatto che sei il proprietario del computer.
In molti casi, ho appena inserito le chiavi segrete in un file con autorizzazioni limitate e ho preso le consuete precauzioni per impedire il root del mio sistema. Ci sono alcuni trucchi per farlo funzionare correttamente con un sistema multiutente, come evitare file temporanei e simili.