È questo il suono idea TOTP (tempo basato su una sola volta) di PHP?

2

Dichiarazione di non responsabilità: non ho molta familiarità con le tecniche di sicurezza in generale.

Il problema: crea rapidamente molti piccoli file nel server da uno script bash.

Ho usato scp (copia protetta) per creare quei file ma l'ho trovato estremamente lento con l'operazione di accesso necessaria, anche quando si utilizza una chiave condivisa tramite SSH.

Quindi ho pensato di creare uno script bash e uno script php che condividono una chiave per accelerare l'operazione facendo solo l'essenziale.

Bash del client invia una password finale, il nome file del file da creare, il contenuto di quel file e il secondo UTC corrente.

Nel client, la password finale viene calcolata come:

#pseudocode
final password = sha256( ${currentDateTime}${sharedKey}${remoteFilename}${content} )

La richiesta viene pubblicata sul server usando il comando CURL.

Il PHP del server ora ha la password del client, il nome del file da creare, il contenuto e l'ora UTC in base alla quale è iniziata la richiesta. Il server calcola l'ora UTC completa andando al secondo più vicino al passato che corrisponde al secondo UTC inviato dal client. Ad esempio, se il secondo invio da parte del client = 12 e l'ora UTC del server è 13:42:25, allora il server utilizza 13:42:12.

Server php genera la propria password "reale" (ovvero la password che il client DEVE usare per quella volta UTC (13:42:12 in questo esempio), quel nome file e il contenuto, in base a quella chiave condivisa:

$realPasswd = hash('sha256', $timeString.$sharedKey.$filename.$content);

Quindi il server controlla $realPasswd rispetto alla password inviata dal client (la cosiddetta password finale a cui ho fatto riferimento in precedenza)

Per quanto riguarda la noobish, questa tecnica dovrebbe essere abbastanza sicura, perché, anche se l'intera richiesta viene annusata da un utente malintenzionato, sarà in grado di inviare esattamente la stessa richiesta e solo per 1 minuto (perché la password finale cambierà per il prossimo minuto UTC).

Non sarà in grado di modificare il nomeFile remoto o il contenuto e sarà in grado di crearlo accettando le richieste del server solo per 1 minuto.

Qual è la tua opinione su questo?

    
posta hytromo 06.12.2014 - 11:31
fonte

1 risposta

2

Non è chiaro se il server conosca già sia il nome file che il contenuto del file che viene creato ad una determinata ora UTC.

  1. Se questi dati sono già noti, un utente malintenzionato potrebbe in qualche modo indovinarli o recuperarli e quindi creare un attacco provando tutte le 60 possibili "password finali".
  2. Se questi dati non sono già noti e vengono inviati all'interno della stessa richiesta, un utente malintenzionato potrebbe creare un file arbitrario sul server creando una nuova richiesta, contenente nomefile, contenuto, secondo UTC (che può essere forzato in meno di 60 tentativi) e la password corrispondente.
risposta data 22.02.2016 - 20:29
fonte

Leggi altre domande sui tag