Riduzione delle dimensioni del token di autorizzazione asimmetrica

2

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.

    
posta mseddon 13.05.2014 - 21:15
fonte

1 risposta

1

Se vuoi veloce e amp; crittografia sicura, utilizzare la libreria NaCl di Bernstein et al. Pertinente alla tua domanda è il suo sistema crittografico asimmetrico ED25519. La generazione di chiavi, le firme e le verifiche sono velocissime. Lontano come lo spazio, le chiavi sono 32 byte e le firme sono 64 byte. Le loro implementazioni sono resistenti ai canali di temporizzazione. Implementano anche algoritmi più comuni per la compatibilità. Offrono anche caratteristiche di alto livello come "firmare questo" piuttosto che forzare l'uso di primitivi di basso livello su persone che non sono crittografi.

NaCl
link

    
risposta data 19.05.2014 - 03:21
fonte

Leggi altre domande sui tag