Nella mia attuale configurazione, i client sono in bundle con la chiave pubblica del server. Il client crittografa un nonce e lo invia al server che utilizza il proprio nonce e il nonce ricevuti dal client per impostare una chiave di crittografia simmetrica e restituisce il nonce non crittografato + una risposta crittografata.
Sfortunatamente, questo rende il server completamente aperto agli attacchi DOS intenzionali e accidentali.
Come esempio di quest'ultimo, diciamo che un server è disattivato e tutti i client cercano di riconnettersi. Ciò significa che 100-1000 (non dannoso) connette / s da diversi IP.
Quali sono le mie opzioni oltre a ridurre le dimensioni della chiave RSA?
Modifica
Che ne è di una di queste strategie:
-
Spostare l'autenticazione su un server separato, che distribuisce in modo sicuro le chiavi di crittografia con una data di scadenza. Quando si accede a un server, il client presenta un identificatore che il server può utilizzare per recuperare la chiave di crittografia da utilizzare.
-
Inserisci la decodifica RSA in una coda illimitata con priorità thread bassa. Quando un client esegue l'accesso, verrà automaticamente eseguito l'accesso (se ci sono risorse sufficienti) o inserito una coda di accesso. Fino a quando la decrittografia non è pianificata, il cliente riceverà informazioni aggiornate su quanto sono vicini per completare il login.
-
Metti la decifrazione RSA in una coda in coda limitata con priorità thread bassa. Se la coda è piena, la connessione viene rifiutata con un messaggio che viene raggiunto il limite della coda di accesso e il client può riprovare più tardi.