Utilizza il parametro D della chiave privata come segreto HMAC per JWT in un ambiente con bilanciamento del carico

1

Devo utilizzare una firma per un JWT che deve essere creato o verificato su 12 server diversi in esecuzione in un ambiente con bilanciamento del carico. Hanno già la stessa coppia di chiavi RSA memorizzata nell'archivio certificati di Windows utilizzato per servire l'applicazione su HTTPS.

Questa domanda è già stata posta essenzialmente qui: Il parametro D della RSA è abbastanza strong da essere usato come segreto per il calcolo dell'HMAC? ma l'attenzione è concentrata sulla forza e / o sullo scopo della crittografia.

Inizialmente intendevo firmare il JWT usando RS256, e ho scritto il codice e tutto andava bene .... fino a quando ho controllato l'output. Ovviamente (dopo il fatto) la firma è piuttosto lunga ... 2048 bit anziché 256. La dimensione totale del JWT senza la firma è probabilmente solo di 2000 bit da dare o da prendere, quindi è sostanzialmente il raddoppio la dimensione del token finale. Il token verrà utilizzato su più richieste per i servizi downstream, alcuni dei quali con corpi di messaggi molto piccoli, quindi sono poco riluttante a farlo.

Ho esaminato varie soluzioni DPAPI, .Net Protection e manualmente mantenendo un segreto crittografato con la chiave pubblica. Ho bisogno che la soluzione funzioni in .Net e in. Net Core. Tutti loro presentano problemi relativi alla creazione e alla gestione delle chiavi in più ambienti che sono totalmente presi in considerazione dalla configurazione esistente se io uso solo il valore D come segreto. Quindi ...

Perché NON dovrei usare il valore D come mio segreto HMAC?

    
posta ste-fu 02.05.2018 - 16:56
fonte

1 risposta

1

Questo è uno di quei casi in cui non credo ci sia alcun modo conosciuto per sfruttarlo. Quindi potresti obiettare che questo è sicuro. Ma il problema è che questo non è qualcosa che è dimostrato sicuro e non è ciò per cui sono state progettate queste funzioni. Quindi è probabile che ci possa essere un modo per sfruttarlo. E se uno viene mai trovato, potrebbe rivelare la tua chiave RSA , che è la chiave più importante che hai come server web. Questo è il motivo per cui NON CONSIDERATO SICURO , anche se potrebbe non esserci un modo per sfruttarlo. Non farlo, ci sono modi migliori.

Inoltre, apre un nuovo modo per la forzatura bruta della chiave RSA, che può essere o non essere più veloce, quindi calcolarla dalla chiave pubblica.

    
risposta data 02.05.2018 - 17:13
fonte

Leggi altre domande sui tag