Vorrei usare una firma asimmetrica piuttosto che simmetrica per l'autorizzazione, dal momento che non voglio che un servizio compromesso sia in grado di falsificare i token di autorizzazione (ovviamente). Un token di autorizzazione viene generato da un server di autenticazione per un set specifico di servizi e restituito al client, sempre trasportato come una stringa codificata in base 64. Dopo la scadenza, l'entità deve eseguire nuovamente l'autenticazione per recuperare un nuovo token.
Ho bisogno di gestire un volume elevato di richieste HTTP-REST stateless molto piccole (potenzialmente diverse un secondo per client) e sono consapevole della dimensione complessiva del token che saturerà la rete. Attualmente sono (a caso) considerando l'utilizzo di RSA a 2048 bit con SHA-256, ma ridurre ulteriormente l'overhead sarebbe ottimo.
Dato che un certo token ha sempre scade entro al massimo 15 minuti, mi sono reso conto che dovrebbe essere possibile usare una chiave / hash ancora più piccola generando regolarmente nuove coppie di chiavi.
I servizi eseguivano periodicamente il polling di un servizio del provider di chiavi per recuperare la chiave pubblica corrente e successiva, e un byte circa del token identificava la chiave utilizzata per firmarlo.
La mia ipotesi è corretta? Posso abbassarmi fino a un minimo di 1024 bit? Ricordo vagamente che c'è un'interruzione per RSA < = 512 bit, quanto è grave e si potrebbe compensare ruotando i keypairs più velocemente?
Non sono sposato con RSA o SHA256, ma sono dipendente da OpenSSL.
Vorrei innanzitutto assicurarmi che il mio ragionamento sia valido, e in secondo luogo, sollecitare qualsiasi algoritmo / dimensioni-chiave / tecniche alternative che sarebbero considerate buone pratiche in questa situazione.