Sì, un DoS basato su CPU su server SSL è facile. Considera i due tipi principali di suite di crittografia, come comunemente usato in SSL:
-
Scambio chiave RSA : il server invia il certificato con una chiave pubblica RSA; il client genera un blob casuale (la chiave segreta pre-master) crittografato con la chiave pubblica del server; il server la decrittografa.
-
Scambio chiave DHE : il server invia la metà dello scambio di chiavi Diffie-Hellman, firmato con la chiave privata del server. Il cliente invia la propria metà del DH. Il server completa lo scambio di chiavi DH applicando la sua chiave privata DH (un esponenziamento modulare).
In entrambi i casi, il server deve eseguire un'operazione di crittografia relativamente pesante: una decodifica RSA o un esponenziazione modulare DH (per DHE, il server può riutilizzare i suoi parametri DH temporanei, a condizione che non si riavvii, ma non possa eludere l'esponenziazione modulare finale calcolata su ciò che il cliente invia). D'altra parte, un client che tenta di eseguire il server non ha bisogno di fare alcun lavoro: ha solo bisogno di inviare un blob di circa la giusta dimensione. La decifrazione sul server fallirà, ma la spesa della CPU sarà comunque persa.
(Già con i client honest e lo scambio di chiavi RSA, il costo della CPU è più alto nel server, perché la crittografia RSA è molto più veloce della decodifica RS . Ma un malvagio cliente, intento a DoSing, può totalmente evitare di lavorare.)
Tali attacchi sono stati osservati in modo selvaggio e non occorrono un documento accademico per spiegare come funzionano.