Il problema qui non è tanto con CBC, ma con alternative che sono più facili da implementare in modo sicuro, senza perdere la sicurezza matematica. Infatti, AES-CBC si è rivelato essere notoriamente difficile da implementare correttamente. Ricordo che le vecchie implementazioni della sicurezza del livello di trasporto non hanno vettori di inizializzazione crittograficamente sicuri, che sono un must per la modalità CBC
Molti attacchi recenti stanno colmando attacchi oracle, come l'attacco Bleichenbacher . Questi dipendono soprattutto dalle vecchie modalità mantenute per il supporto. POODLE è una vulnerabilità di downgrade. LOGJAM sta eseguendo il downgrade di TLS a vecchie suite crittografiche di tipo export (leggere NSA-sabotate).
Per la modalità CBC, c'è l'attacco Vaudenay.
Questi attacchi dipendono dal server che dice esplicitamente "padding non valido", con conseguente perdita di 1 bit di informazioni su ciascuna transazione. I messaggi di errore sono stati rimossi, ma il problema del tempo è rimasto. Il server ha utilizzato ancora più tempo prima di rispondere se il padding era valido.
In risposta sono stati costretti a escogitare la soluzione peculiare di generare una chiave fittizia e utilizzarla per la decrittografia, in modo da non riuscire in un'altra parte dell'implementazione. In ogni implementazione. Così hanno deciso di non forzare più questo sugli sviluppatori supportandolo nelle specifiche.
La crittografia è un campo molto vasto e una specialità a parte. La storia ha imparato attraverso l'esperienza scomoda, che farlo correttamente è impossibile da fare perfettamente, anche per i migliori sul campo. Ad esempio MD5, creato da Ron Rivest, co-inventore (e parte-omonimo) di RSA è stato ampiamente utilizzato, quindi interrotto nel 2013. La sua resistenza alla collisione è stata aggirata in 2 ^ 18 volte, meno di un secondo su un computer desktop per gli hash a 128 bit.