Per què una clau Blowfish més llarga no arregla un bloc de 64 bits
Les claus Blowfish poden arribar a 448 bits mentre el bloc es manté en 64 bits. Comproveu el xifratge negociat i planifiqueu una substitució compatible en lloc d'una clau més llarga.
Un perfil de VPN ofereix Blowfish amb una clau de 448 bits, i algú proposa fer servir la clau més llarga per conservar el xifratge. La longitud de la clau és real, però és el nombre equivocat que cal optimitzar. Blowfish transforma blocs de 64 bits independentment de la longitud de la clau, i és l'amplada del bloc la que limita quant de trànsit pot protegir una clau amb seguretat. Executeu les comprovacions següents en ordre i atureu-vos a la primera que descarti el servei, perquè un pas posterior no pot reparar un d'anterior.
Comproveu què negocien realment els parells
Llegiu el xifratge del canal de dades als dos extrems, no del perfil que pensàveu desplegar. Una configuració de client pot llistar diversos xifratges, i el triat és el resultat de la negociació entre dues implementacions i les seves versions. Augmenteu la verbositat del registre en una connexió de prova i llegiu la línia del canal de dades, que anomena el xifratge i la mida de clau que realment s'han inicialitzat.
Si el xifratge negociat és AES-GCM o ChaCha20-Poly1305, atureu-vos aquí. Aquestes construccions fan servir un bloc de 128 bits i autentiquen la càrrega útil, així que l'argument de col·lisió de 64 bits d'aquí baix no s'hi aplica.
Separeu la longitud de clau de l'amplada de bloc
Blowfish accepta claus de 32 a 448 bits, i la documentació de l'autor de l'algoritme recull els dos nombres per separat. La clau és el secret; el bloc és la unitat de transformació. Allargar el secret fa més difícil endevinar-lo i no canvia res a l'amplada del bloc que processa el xifratge.
En mode CBC, el xifratge s'aplica a blocs d'amplada fixa, encadenats amb el bloc de text xifrat anterior i omplerts al final. Per a Blowfish aquesta amplada és de 64 bits, o vuit bytes. La programació de claus pot ser tan gran com vulgueu; la cadena avança igualment vuit bytes alhora.
Per això allargar la clau no és una mitigació. Adreça la força bruta contra la clau, mentre que el risc de col·lisió d'aquí baix és una propietat de l'amplada de bloc i del mode.
Apliqueu l'aritmètica dels aniversaris a la mida del bloc
Un bloc de 64 bits té una escala d'aniversari d'uns 2^32 blocs xifrats sota una sola clau abans que les col·lisions siguin probables. Cada bloc porta vuit bytes, així que la mateixa escala és d'uns 2^35 bytes, o 32 GiB de dades sota una sola clau.
Tracteu-ho com una escala, no com una quota. Les col·lisions són probabilístiques, i si una filtra alguna cosa depèn del mode, del patró de trànsit i de si l'atacant pot reconèixer o influir en el text clar del voltant. El primer byte més enllà de 32 GiB no és un esdeveniment de desxifrat, i els primers 32 GiB no estan certificats com a segurs.
Els investigadors de Sweet32 van demostrar el 2016 atacs pràctics contra xifratges de bloc de 64 bits, inclòs un escenari d'OpenVPN, en condicions que requerien observació i generació de trànsit. Els seus valors per defecte i versions de programari publicats són context històric, no una descripció del vostre desplegament.
Decidiu si la reutilització de CBC hi té a veure
En CBC, un bloc de text xifrat repetit significa que els dos blocs de text clar difereixen en una relació coneguda, perquè el XOR d'encadenament es cancel·la. Un atacant que pot observar el text xifrat i coneix o pot influir en un dels textos clars pot recuperar informació sobre l'altre. La clau Blowfish no cal mai per a això.
Així, les preguntes rellevants són quant de temps roman una clau en servei, quant de trànsit hi passa i si algú pot observar i dirigir aquest trànsit. La renovació de claus redueix el nombre de blocs per clau, però un interval de temps no és un límit de bytes: un túnel ocupat pot moure moltes més dades que un d'inactiu en la mateixa hora. Si conserveu un xifratge heretat, deriveu el límit de la construcció i del volum real, no d'un nombre rodó.
Si el volum mesurat per clau es manté molt per sota de l'escala d'aniversari, l'exposició és menor. Encara no és zero i encara és un motiu per planificar una migració en lloc de deixar de preocupar-se.
Substituïu el xifratge, no la clau
Moveu el servei a un xifratge AEAD compatible i confirmeu que els dos parells, les seves versions i els seus backends criptogràfics poden negociar-lo. Allargar la clau Blowfish no canvia res que importi, i endevinar una nova directiva en un client és com un túnel que funciona es converteix en un de trencat. Proveu el canvi en un client i un servidor abans de tocar la resta del parc. Manteniu el perfil antic disponible per revertir fins que el nou xifratge hagi superat un cicle de connexió complet.
Manteniu la verificació de certificats i l'autenticació de comptes durant el canvi. Responen preguntes diferents: un inici de sessió correcte no pot eixamplar un bloc, i un xifratge de dades millor no excusa confiar en el servidor equivocat.
Tanqueu la comprovació rellegint el xifratge negociat en una connexió nova i confirmant després que el xifratge antic ja no s'accepta. Si un parell encara l'ofereix, la migració no ha acabat, digui el que digui el perfil de l'altra banda.