Autenticazione basata su hash API

0

Sto rivedendo la documentazione API da un potenziale fornitore.

Per poter accedere alle parti utili dell'API, dobbiamo inviare una richiesta GET o POST a un particolare endpoint che passa due parametri: il nome della nostra organizzazione e l'hash della chiave pubblica. Questo endpoint restituirà quindi un token che usiamo per il resto della nostra sessione.

La descrizione dell '"hash della chiave pubblica" è che prendiamo una chiave pubblica (fornita in anticipo dal fornitore), aggiungiamo la data UTC corrente e quindi eseguiamo un hash MD5 del risultato. Il loro esempio è:

Public Key: a8db14aef3810a92e7c9af9f8782e1f0
Current UTC Date: 2013-02-28
Result string: a8db14aef3810a92e7c9af9f8782e1f02013-02-28
MD5 hash: efdb500ca0a4e107aea100554456ea85

Non ho riscontrato un meccanismo di autenticazione come questo prima. Mi sembra "fatto a mano" per me, e l'uso di MD5 mi sta anche facendo contrarre i peli del naso - voglio veramente scrivere un nuovo codice nel 2017 che usi MD5?

Ma prima ancora di approfondire le cose - questo è in realtà un meccanismo di autenticazione ben noto e utilizzato per il quale non sono riuscito a trovare alcuna documentazione? Se è così, è ancora considerato sicuro?

(La ricerca sul valore chiave dell'API nell'esempio non produce risultati, quindi almeno per un motivo è stato eseguito il rollover di un esempio. La ricerca su API authentication md5 non ha trovato risultati promettenti)

    
posta Damien_The_Unbeliever 07.03.2017 - 15:18
fonte

1 risposta

2

EDIT - Probabilmente è basato su DIGEST-MD5 o simile - Wikipedia attualmente afferma che è ancora sicuro, ma c'è una "citazione necessaria" in un posto cruciale. L'utilizzo di MD5 è generalmente una cattiva idea .

L'intenzione del passo hash è di proteggere da perdite accidentali del token / password. Con l'hashing con il tempo, stai fondamentalmente derivando un token più breve e inviando quello invece di quello originale, quindi se il token derivato fosse trapelato, quello originale sarebbe comunque al sicuro (assumendo la sicurezza di MD5, quindi .. .).

Oltre HTTPS, questo schema non offre davvero molta più protezione di un token Bearer OAuth. Non è alcun peggiore di un token OAuth Bearer di lunghezza equivalente, ma il fatto che abbiano usato questo schema (e anche chiamare il loro token segreto una "chiave pubblica") rende ragionevole supporre che non sono così entusiasmanti per quanto riguarda la sicurezza, e questo probabilmente si rifletterà in altri punti della loro attività (ad esempio, memorizzando in modo sicuro i dati che li invii).

Se stai inviando questo su un semplice HTTP, allora è meglio che usare il token vero e proprio, ma hai altri problemi, perché hai bisogno di HTTPS per prevenire MITM (perché un token al portatore non aiuta).

    
risposta data 07.03.2017 - 17:50
fonte

Leggi altre domande sui tag