Come API Tasti e chiavi segrete di lavoro? Sarebbe sicuro se devo passare la mia API e chiavi segrete a un'altra applicazione?

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

Domanda

Sto solo cominciando a pensare a come chiavi API e chiavi segrete funzionano. A soli 2 giorni fa ho firmato per Amazon S3 e installato il S3Fox Plugin . Mi hanno chiesto sia per il mio chiave di accesso e chiave segreta di accesso, entrambi i quali mi richiede di login per l'accesso.

Quindi mi chiedo, se mi stai chiedendo per la mia chiave segreta, devono essere riporlo da qualche parte giusto? Non è che in fondo la stessa cosa di me per chiedere i miei numeri di carte di credito o la password e la conservazione che nella propria banca dati?

Come sono le chiavi segrete e chiavi API dovrebbe funzionare? Come segreto hanno bisogno di essere? Sono queste le applicazioni che utilizzano le chiavi segrete di stoccaggio in qualche modo?

È stato utile?

Soluzione

In sostanza elaborare su quello che sta delineato qui .

Ecco come funziona: diciamo che abbiamo una funzione che prende un numero da zero a nove, aggiunge tre e, se il risultato è superiore a dieci, sottrae dieci. Quindi f (2) = 5, F (8) = 1, ecc Ora, possiamo fare un'altra funzione, lo chiamano f', che va a ritroso, con l'aggiunta di sette invece di tre. f '(5) = 2, f' (1) = 8, ecc.

Questo è un esempio di una funzione a due vie e la sua inversa. In teoria, tutte le funzioni matematiche che Mappe una cosa all'altra può essere invertito. In pratica, però, si può fare una funzione che si arrampica suo ingresso così bene che è incredibilmente difficile da invertire.

L'assunzione di un ingresso e di applicare una funzione a senso unico si chiama "hashing" l'ingresso, e ciò che i negozi Amazon sul loro sistema è un "hash" della vostra chiave segreta. SHA1 è un esempio di questo tipo di funzione "one-way", è anche indurito contro gli attacchi.

La href="http://www.ietf.org/rfc/rfc2104.txt" rel="noreferrer"> funzione di si basa su funzioni hash stabiliti devono utilizzare una chiave nota per autenticare un stringa di testo. Funziona in questo modo:

  • Si prende il testo della vostra richiesta e la chiave segreta e applicare la funzione HMAC.
  • Si aggiunge che intestazione di autenticazione alla vostra richiesta ed inviarlo a Amazon.
  • Amazon guarda in alto la loro copia della chiave segreta, e il testo appena inviato e applica la funzione HMAC.
  • Se le partite di risultato, sanno di avere la stessa chiave segreta.

La differenza tra questo e PKI è che questo metodo è RESTful , consentendo un numero minimo di gli scambi tra il sistema e il server di Amazon.

  

Non è che in fondo la stessa cosa   mi chiede per i miei numeri di carta di credito   o la password e stoccaggio che nella loro   proprio database?

Sì, anche se il danno che qualcuno può fare con S3 sembra essere limitata a prosciugare il conto.

  

Come segreta hanno bisogno di essere? Siamo   queste applicazioni che utilizzano il segreto   Tasti di riporlo in qualche modo?

A un certo punto, si sta andando ad avere per caricare la chiave segreta, e con la maggior parte dei sistemi basati su Unix, se un utente malintenzionato può ottenere l'accesso root possono ottenere la chiave. Se si crittografa la chiave, bisogna avere il codice per decifrare, e ad un certo punto il codice di decrittazione deve essere solo testo in modo che possa essere eseguito. Questo è lo stesso problema ha DRM, tranne di essere il proprietario del computer.

In molti casi, ho appena messo le chiavi segrete in un file con autorizzazioni limitate, e prendere le normali precauzioni per evitare che il mio sistema di essere radicata. Ci sono alcuni trucchi per farlo funzionare correttamente con un sistema multiutente, come ad esempio evitare i file temporanei e così via.

Altri suggerimenti

crittografia a chiave pubblica viene utilizzato per difendersi dagli attacchi molto specifici, alcuni dei quali sono comuni. In breve questo è matematica complessa che permette di verificare che a livello individuale ha sia la coppia pubblica e chiave privata, mentre solo conoscendo la chiave pubblica. Questo è molto diverso da una carta di credito o password statiche. Per fare un esempio, se si effettua l'autenticazione con un server OpenSSH allora il server non ha bisogno della chiave privata.

L'ideale se il database API di Amazon dove essere compromesso l'attaccante avrebbe un elenco di chiavi pubbliche e sarebbe in grado di accedere all'API dell'utente di utilizzare queste informazioni. Tuttavia i sistemi ideali non sono sempre messi in pratica e non so con certezza se Amazon protegge contro questo vettore di attacco, ma dovrebbero essere.

In autenticazione a chiave pubblica è statisticamente immune a forza bruta. Le password sono parole spesso del dizionario, che può essere rotto relatività veloce. Tuttavia una chiave privata è un numero enorme che non è facile da indovinare. Se l'attaccante aveva la chiave pubblica allora potrebbero eseguire molte ipotesi "non in linea" su un computer super, ma anche allora ci vorrebbe un sacco di tempo e denaro per rompere la chiave.

AWS ha progettato il proprio algoritmo di autenticazione personalizzati. v4 è stato rilasciato nel 2014. I dettagli sono qui delineato: Richieste Autenticazione dei (AWS Signature Version 4) . Un punto importante è che la richiesta non è firmato con il segreto in sé, ma con una chiave di firma che viene generato utilizzando il segreto. Utilizza anche HMAC-SHA256 per la firma.

Firma Generation

Utilizzando chiavi asimmetriche sarebbe più sicuro in quanto AWS avrebbe memorizzare solo una chiave pubblica al posto del segreto, che è memorizzata sia l'utente e AWS.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top