Grup DH compartit, secrets nous: per què l’atac surt més barat
Els secrets de sessió nous no arreglen un grup de camp finit feble. Reutilitzar un grup reparteix la fase més cara de l’atac entre cada intercanvi que el negocia.
Els paràmetres del grup són públics per disseny, i aquesta publicitat és justament el que els fa fàcils d’ignorar. En Diffie-Hellman de camp finit el mòdul i el generador són compartits, mentre que els exponents privats i les claus de sessió resultants no ho són. La fase cara d’un atac de garbell de camp de nombres depèn del grup i no d’un sol intercanvi, així que un únic grup feble usat pertot es converteix en una responsabilitat compartida. Dir que els paràmetres són públics és exacte i no ve al cas, perquè el cost que es reutilitza és el cost d’atacar aquell grup.
La meitat pública no és la meitat vulnerable, i aquí hi ha el parany
L’habitual mig argument diu que els paràmetres es publiquen en una norma, així que un atacant ja els coneix i amagar-los no canviaria res. Les dues afirmacions són certes i cap no se segueix de l’altra. Un grup predeterminat enviat és públic, i un grup privat que vau generar la setmana passada també és visible per a qualsevol que completi l’intercanvi de claus. El secret mai va ser el control; ho són la força i la validació.
El que sí que canvia és quants llocs comparteixen la mateixa feblesa. Una organització que genera el seu propi grup de 2048 bits paga el seu propi cost d’atac, mentre que un valor predeterminat de protocol triat per milions amortitza un sol cost entre tots ells. És en aquest sentit que un grup poc comú no és automàticament millor. Un grup poc habitual que és massa petit no és més que un secret compartit més petit amb menys ulls a sobre.
La validació importa tant com la mida. Un company que envia un mòdul amb factors petits, o un que no té la forma que el protocol espera, pot filtrar informació sobre l’exponent privat encara que la longitud en bits sembli respectable. Les biblioteques que rebutgen paràmetres mal formats a l’entrada fan feina real, i per això l’anàlisi de paràmetres feta a mà és un mal lloc on estalviar esforç.
Què compra realment el precàlcul a un atacant
El garbell de camp de nombres té una fase que depèn només del nombre primer, i la seva sortida és reutilitzable contra cada intercanvi que faci servir aquell primer. Aquest és tot el mecanisme darrere la preocupació històrica: la part cara es paga una vegada i el cost marginal de cada sessió posterior baixa. Els exponents nous encara protegeixen cada intercanvi individual d’un observador passiu, sempre que el grup sigui prou gran per fer el garbell inviable. Les dues afirmacions són compatibles, i la majoria de discussions sobre aquest tema vénen d’escollir una i descartar l’altra.
L’article Logjam del 2015 va demostrar una degradació a Diffie-Hellman de 512 bits de grau exportació i va estimar què costaria atacar grups més grans i molt reutilitzats amb recursos significatius. La demostració era concreta, les estimacions eren estimacions, i cap de les dues era prova que una sessió VPN concreta s’hagués desxifrat.
Citeu l’article pel mecanisme i per la degradació demostrada, no com a mesura del vostre desplegament. Les estadístiques antigues sobre quants servidors compartien un grup predeterminat descriuen la internet d’aquell any, no una xarxa que pugueu inspeccionar avui. El que val la pena endur-se és la pregunta: si els vostres dispositius encara negocien un grup petit o feblement validat.
Normalitzat no és el mateix que feble
RFC 7919 defineix grups de camp finit amb nom perquè els dos extrems acordin un grup per identificador i apliquin una política coherent. Estar normalitzat és un avantatge, perquè elimina l’ambigüitat de negociació i permet a una implementació rebutjar mides no suportades. Un grup amb nom és feble només quan la seva mida queda per sota de la política que dieu seguir, no perquè aparegui en un document. La mateixa lògica s’aplica als grups de corbes el·líptiques, que tenen una estructura diferent i modes de fallada diferents.
Manteniu les construccions separades quan hi raoneu. Una conclusió sobre Diffie-Hellman de camp finit no diu res sobre X25519, i una conclusió sobre un grup MODP de 1024 bits no diu res sobre un de 3072 bits. La política de força és per mecanisme, per mida i per versió de protocol, i per això la frase criptografia forta no és una afirmació revisable.
L’autenticació és l’altra meitat, i no substitueix. Un grup fort sense verificació del company deixa un atacant al mig, i un certificat vàlid no pot rescatar un intercanvi de 768 bits. Reviseu-los com a dues línies independents i després confirmeu que tots dos es negocien de veritat.
Llegiu el grup negociat en una connexió real
Llegiu el grup negociat des del dispositiu i no des de la plantilla de configuració. Les plantilles descriuen la intenció, i el valor interessant és el que els dos extrems van acordar durant l’últim intercanvi de claus. En un extrem IPsec la sortida d’estat normalment imprimeix la proposta seleccionada, inclòs el grup MODP.
Captureu aquella línia abans i després d’un canvi de política, i guardeu les dues al registre del canvi. La comparació és la prova.
ipsec statusall | grep -Ei "proposal|ESP|IKE"
openssl dhparam -in /etc/vpn/dh3072.pem -check -nooutSi després del canvi l’estat encara mostra el grup antic, la connexió no ha renegociat i l’edició de configuració no ha demostrat res. Reinicieu el company o esborreu l’associació de seguretat, i torneu a llegir l’estat. Una política aplicada només a connexions noves deixarà els túnels de llarga durada amb els paràmetres antics mentre estiguin aixecats.
Comproveu el grup i la identitat del company per separat
Separeu què protegeix el grup de qui és a l’altre extrem. Enregistreu el mètode d’intercanvi de claus, la mida del grup i el mètode d’autenticació com a tres camps, perquè fallen de manera independent. Un túnel que ha negociat un grup de 3072 bits però accepta qualsevol certificat no és el mateix risc que un que fixa un company i fa servir un grup de 2048 bits.
Escriviu els criteris d’acceptació abans que comenci la revisió, perquè el resultat sigui una comparació i no una opinió. Una mida mínima de grup per versió de protocol, una llista blanca de grups amb nom i la verificació obligatòria del company són prou per fer la decisió mecànica. L’ambigüitat en aquesta llista és el que converteix una revisió en una discussió, i les discussions no es remedien. Llavors la sortida és una llista d’extrems que incompleixen una regla declarada.
ipsec statusall | grep -Ei "peer|auth|cert"
openssl s_client -connect vpn.acme.example:443 -brief -cipher 'DHE-RSA-AES256-GCM-SHA384'Tanqueu el cicle rellegint els valors negociats després de la remediació. Un fitxer de configuració conforme no és prova que un túnel l’hagi recollit. La sortida d’estat i un intercanvi de claus nou són la prova, i recollir-los costa menys temps que la reunió sobre si calen.