Come verrebbe verificata la convalida della firma sul lato server?

3

Mi dispiace, è possibile che poche cose si ripetano nella mia domanda.

Ho esaminato alcuni documenti / discussioni firmando una richiesta API e documentazione della firma di Twitter

Come da discussione qui firmando una richiesta API Con una richiesta firmata la password viene mantenuta sicura e un utente malintenzionato non può utilizzare le informazioni nella query per firmare un'altra richiesta.

Ma per la generazione della firma utilizza la funzione hash non reversibile SHA-1.

La mia domanda è: - Se la firma utilizzata per autorizzare / autenticare la richiesta del cliente, come tale firma utilizzata sul lato server per controllare e convalidare la richiesta dell'utente?

    
posta Swapnil Kotwal 26.08.2013 - 11:39
fonte

1 risposta

4

Prima di tutto, l'uso del termine firma qui è improprio. So che lo stanno utilizzando nella documentazione di Twitter , ma non è il nome corretto. "Firma" si riferisce normalmente alle firme digitali che fanno parte della crittografia asimmetrica; cioè RSA, DSA ... Qui abbiamo un MAC .

Non è "SHA-1" che viene usato, ma "HMAC / SHA-1". HMAC è un algoritmo MAC che si basa su un sottostante funzione di hash (qui SHA-1) come elemento di base, ma HMAC offre di più della semplice funzione di hash. HMAC è un MAC, il che significa che utilizza una chiave segreta che documentazione di Twitter chiama il "segreto del consumatore" (ancora una volta, quella documentazione usa il termine "chiave" per designare qualcosa di diverso, che è una grande fonte di confusione). Questa chiave segreta è coinvolta nel calcolo; è necessario per produrre l'output HMAC ma anche per verificarlo. Questa chiave segreta è nota sia al client che al server, ma a nessun altro (è "segreto"). HMAC è tale che ogni uscita HMAC è specifica per un dato messaggio di input, e non è fattibile forgiare un'uscita HMAC valida per un nuovo messaggio senza conoscere la chiave segreta, anche se vengono osservate molte altre coppie messaggio + uscita HMAC.

Per riassumere, il server può verificare la "firma" dal client utilizzando il "consumer secret" che è noto sia al client che al server. Quando il server vede un output HMAC valido, sa che il messaggio proviene da qualcuno che conosce il "segreto del consumatore", che può essere solo il client o il server stesso. Il server sa che non produce mai messaggi con quel formato esatto, quindi deve provenire dal client - il cliente specifico che conosce quel particolare "segreto del consumatore". Il client è quindi autenticato .

    
risposta data 26.08.2013 - 14:56
fonte

Leggi altre domande sui tag