2.5: El intermediario
- Page ID
- 51872
\( \newcommand{\vecs}[1]{\overset { \scriptstyle \rightharpoonup} {\mathbf{#1}} } \)
\( \newcommand{\vecd}[1]{\overset{-\!-\!\rightharpoonup}{\vphantom{a}\smash {#1}}} \)
\( \newcommand{\id}{\mathrm{id}}\) \( \newcommand{\Span}{\mathrm{span}}\)
( \newcommand{\kernel}{\mathrm{null}\,}\) \( \newcommand{\range}{\mathrm{range}\,}\)
\( \newcommand{\RealPart}{\mathrm{Re}}\) \( \newcommand{\ImaginaryPart}{\mathrm{Im}}\)
\( \newcommand{\Argument}{\mathrm{Arg}}\) \( \newcommand{\norm}[1]{\| #1 \|}\)
\( \newcommand{\inner}[2]{\langle #1, #2 \rangle}\)
\( \newcommand{\Span}{\mathrm{span}}\)
\( \newcommand{\id}{\mathrm{id}}\)
\( \newcommand{\Span}{\mathrm{span}}\)
\( \newcommand{\kernel}{\mathrm{null}\,}\)
\( \newcommand{\range}{\mathrm{range}\,}\)
\( \newcommand{\RealPart}{\mathrm{Re}}\)
\( \newcommand{\ImaginaryPart}{\mathrm{Im}}\)
\( \newcommand{\Argument}{\mathrm{Arg}}\)
\( \newcommand{\norm}[1]{\| #1 \|}\)
\( \newcommand{\inner}[2]{\langle #1, #2 \rangle}\)
\( \newcommand{\Span}{\mathrm{span}}\) \( \newcommand{\AA}{\unicode[.8,0]{x212B}}\)
\( \newcommand{\vectorA}[1]{\vec{#1}} % arrow\)
\( \newcommand{\vectorAt}[1]{\vec{\text{#1}}} % arrow\)
\( \newcommand{\vectorB}[1]{\overset { \scriptstyle \rightharpoonup} {\mathbf{#1}} } \)
\( \newcommand{\vectorC}[1]{\textbf{#1}} \)
\( \newcommand{\vectorD}[1]{\overrightarrow{#1}} \)
\( \newcommand{\vectorDt}[1]{\overrightarrow{\text{#1}}} \)
\( \newcommand{\vectE}[1]{\overset{-\!-\!\rightharpoonup}{\vphantom{a}\smash{\mathbf {#1}}}} \)
\( \newcommand{\vecs}[1]{\overset { \scriptstyle \rightharpoonup} {\mathbf{#1}} } \)
\( \newcommand{\vecd}[1]{\overset{-\!-\!\rightharpoonup}{\vphantom{a}\smash {#1}}} \)
\(\newcommand{\avec}{\mathbf a}\) \(\newcommand{\bvec}{\mathbf b}\) \(\newcommand{\cvec}{\mathbf c}\) \(\newcommand{\dvec}{\mathbf d}\) \(\newcommand{\dtil}{\widetilde{\mathbf d}}\) \(\newcommand{\evec}{\mathbf e}\) \(\newcommand{\fvec}{\mathbf f}\) \(\newcommand{\nvec}{\mathbf n}\) \(\newcommand{\pvec}{\mathbf p}\) \(\newcommand{\qvec}{\mathbf q}\) \(\newcommand{\svec}{\mathbf s}\) \(\newcommand{\tvec}{\mathbf t}\) \(\newcommand{\uvec}{\mathbf u}\) \(\newcommand{\vvec}{\mathbf v}\) \(\newcommand{\wvec}{\mathbf w}\) \(\newcommand{\xvec}{\mathbf x}\) \(\newcommand{\yvec}{\mathbf y}\) \(\newcommand{\zvec}{\mathbf z}\) \(\newcommand{\rvec}{\mathbf r}\) \(\newcommand{\mvec}{\mathbf m}\) \(\newcommand{\zerovec}{\mathbf 0}\) \(\newcommand{\onevec}{\mathbf 1}\) \(\newcommand{\real}{\mathbb R}\) \(\newcommand{\twovec}[2]{\left[\begin{array}{r}#1 \\ #2 \end{array}\right]}\) \(\newcommand{\ctwovec}[2]{\left[\begin{array}{c}#1 \\ #2 \end{array}\right]}\) \(\newcommand{\threevec}[3]{\left[\begin{array}{r}#1 \\ #2 \\ #3 \end{array}\right]}\) \(\newcommand{\cthreevec}[3]{\left[\begin{array}{c}#1 \\ #2 \\ #3 \end{array}\right]}\) \(\newcommand{\fourvec}[4]{\left[\begin{array}{r}#1 \\ #2 \\ #3 \\ #4 \end{array}\right]}\) \(\newcommand{\cfourvec}[4]{\left[\begin{array}{c}#1 \\ #2 \\ #3 \\ #4 \end{array}\right]}\) \(\newcommand{\fivevec}[5]{\left[\begin{array}{r}#1 \\ #2 \\ #3 \\ #4 \\ #5 \\ \end{array}\right]}\) \(\newcommand{\cfivevec}[5]{\left[\begin{array}{c}#1 \\ #2 \\ #3 \\ #4 \\ #5 \\ \end{array}\right]}\) \(\newcommand{\mattwo}[4]{\left[\begin{array}{rr}#1 \amp #2 \\ #3 \amp #4 \\ \end{array}\right]}\) \(\newcommand{\laspan}[1]{\text{Span}\{#1\}}\) \(\newcommand{\bcal}{\cal B}\) \(\newcommand{\ccal}{\cal C}\) \(\newcommand{\scal}{\cal S}\) \(\newcommand{\wcal}{\cal W}\) \(\newcommand{\ecal}{\cal E}\) \(\newcommand{\coords}[2]{\left\{#1\right\}_{#2}}\) \(\newcommand{\gray}[1]{\color{gray}{#1}}\) \(\newcommand{\lgray}[1]{\color{lightgray}{#1}}\) \(\newcommand{\rank}{\operatorname{rank}}\) \(\newcommand{\row}{\text{Row}}\) \(\newcommand{\col}{\text{Col}}\) \(\renewcommand{\row}{\text{Row}}\) \(\newcommand{\nul}{\text{Nul}}\) \(\newcommand{\var}{\text{Var}}\) \(\newcommand{\corr}{\text{corr}}\) \(\newcommand{\len}[1]{\left|#1\right|}\) \(\newcommand{\bbar}{\overline{\bvec}}\) \(\newcommand{\bhat}{\widehat{\bvec}}\) \(\newcommand{\bperp}{\bvec^\perp}\) \(\newcommand{\xhat}{\widehat{\xvec}}\) \(\newcommand{\vhat}{\widehat{\vvec}}\) \(\newcommand{\uhat}{\widehat{\uvec}}\) \(\newcommand{\what}{\widehat{\wvec}}\) \(\newcommand{\Sighat}{\widehat{\Sigma}}\) \(\newcommand{\lt}{<}\) \(\newcommand{\gt}{>}\) \(\newcommand{\amp}{&}\) \(\definecolor{fillinmathshade}{gray}{0.9}\)Se recomienda leer los capítulos Intercambiar claves para cifrar y Hash criptográfico antes de seguir con este.
- Qué es un ataque de suplantación
- Qué es un ataque de intermediario
- La diferencia entre un ataque pasivo de intermediario y un ataque activo de intermediario
- Cómo descubrir los ataques de intermediario que ocurren durante el intercambio de claves, usando huellas digitales
En el capítulo Intercambiar claves para cifrar aprendiste cómo dos personas pueden acordar una clave criptográfica, incluso sin conocerse. Aunque este es un método robusto, tiene la limitación de que en internet es difícil estar seguro de que en verdad te estás comunicando con la persona o entidad con quien quieres comunicarte, ya sea un amigo a quien quieres enviarle mensajes instantáneos o correos electrónicos o el servidor desde el cual deseas cargar una página web. Primero mostraremos, usando el ejemplo de la caja fuerte del capítulo Intercambiar claves para cifrar, cómo un espía puede interceptar tu comunicación, y luego mostraremos cómo ocurre esto en un protocolo de intercambio Diffie-Hellman. Estas interceptaciones de comunicación se conocen como ataques.
Un ataque físico de intermediario
Recuerda que Assata pudo enviarle a Bobby un paquete seguro en una caja fuerte de ida y vuelta tres veces: una vez con su propio candado, otra vez con su candado y el candado de Bobby y, finalmente, solo con el candado de Bobby. Pero ¿cómo supo ella que en realidad fue Bobby quien recibió el paquete? Y ¿cómo supo que era el candado de Bobby cuando ella recibió la caja fuerte de vuelta?
A continuación se ilustra el supuesto de que Edgar intercepta la caja fuerte que Assata le envía a Bobby con su candado (1). Edgar podría reenviarle la caja a Assata con su propio candado (2). A menos de que Assata pudiera identificar la diferencia entre un candado de Edgar y uno de Bobby, ella supondría que el candado es de Bobby, quitaría su candado y le reenviaría el paquete a Bobby (3). Si Edgar intercepta el paquete de nuevo, ahora podrá abrir la caja y examinar el contenido del paquete, puesto que ahora solo tiene su propio candado (4).
Para hacer esto, Edgar debe interceptar todos los envíos de Assata a Bobby. Este ataque a las comunicaciones de Assata hacia Bobby es un ataque de suplantación: Edgar está suplantando a Bobby. (Este no suele considerarse un ataque de intermediario.)
![Ataque de suplantación](https://espanol.libretexts.org/@api/deki/files/21836/mitm-impersonation-a.gif?revision=1)
![Ataque de suplantación](https://espanol.libretexts.org/@api/deki/files/21837/mitm-impersonation.png?revision=1)
En la situación descrita, Bobby nunca recibe el paquete. Edgar podría ir incluso más allá (se ilustra a continuación). Edgar podría, después de abrir la caja fuerte de Assata (4), enviarle la caja a Bobby usando una imagen especular del mismo método de tres intercambios, de manera que Bobby piense que está recibiendo una caja con el candado de Assata (5-8).
![Ataque de intermediario](https://espanol.libretexts.org/@api/deki/files/21838/mitm-a.gif?revision=1)
![Ataque de intermediario](https://espanol.libretexts.org/@api/deki/files/21839/mitm.png?revision=1)
Edgar pasa el mensaje original de Assata (aunque lo revisa él mismo); llamamos a esto un ataque pasivo de intermediario. Si Edgar sustituyera el paquete con otro completamente diferente, lo llamaríamos ataque activo de intermediario. En cualquier caso, Edgar tendría que interceptar todos los paquetes entre Bobby y Assata, puesto que los paquetes estarían dirigidos a Bobby o Assata, no a él.
Este tipo de ataques se conocen como ataques de intermediario porque Edgar es el intermediario en la comunicación entre Assata y Bobby.
Un ataque de intermediario contra el protocolo Diffie-Hellman
Veamos cómo se desarrolla esto en el protocolo de intercambio Diffie-Hellman, usando la notación introducida en el capítulo Intercambiar claves para cifrar. Recuerda que, para generar una clave, Assata y Bobby deben acordar primero un número p. Assata elige el número a, calcula p ☆ a y le envía
el resultado a Bobby. Bobby elige el número b, calcula p ☆ b y le envía el resultado a Assata. Assata y Bobby (y nadie más) pueden ahora calcular p ☆ a ☆ b, el cual usan como clave criptográfica para su comunicación cifrada.
Sin embargo, supongamos que Edgar puede interceptar las comunicaciones de Assata y Bobby. Luego, Edgar puede hacer un protocolo de intercambio Diffie-Hellman con Assata y otro con Bobby (se ilustra a continuación). Assata pensará que está haciendo un protocolo de intercambio Diffie-Hellman con Bobby, aunque en realidad estará intercambiando claves con Edgar, lo que dará como resultado la clave beige p ☆ a ☆ e. Bobby pensará que está haciendo un protocolo de intercambio Diffie-Hellman con Assata, aunque en realidad estará intercambiando claves con Edgar, lo que dará como resultado la clave verde azulada p ☆ b ☆ e. Al final, Assata y Edgar habrán compartido una clave (izquierda), y Edgar y Bobby habrán compartido otra (derecha). Pero Assata y Bobby pensarán que han compartido claves solo entre ellos.
![Ataque de intermediario contra el protocolo Diffie-Hellman](https://espanol.libretexts.org/@api/deki/files/21840/dhe-mitm.png?revision=1)
Cuando Assata y Bobby comiencen a usar lo que piensan que es su clave compartida, Edgar tendrá que continuar con la trampa para no ser descubierto. Assata cifrará un mensaje con la clave que ella tiene. Si este mensaje llega a Bobby, él no podrá descifrar el mensaje ¡porque no tiene la misma clave! Lo que Edgar debe hacer es interceptar el mensaje cifrado y descifrarlo con la clave que compartió con Assata. Ahora, Edgar tiene dos opciones: simplemente, puede leer el mensaje, cifrarlo con la clave que comparte con Bobby y enviárselo. Este sería un ataque pasivo de intermediario; es decir, Edgar lee los mensajes entre Assata y Bobby, los cuales piensan que nadie más puede leerlos.
La otra opción de Edgar es cambiar el mensaje de Assata, cifrarlo con la clave que comparte con Bobby y enviárselo. Este sería un ataque activo de intermediario. En cualquier caso, Edgar debe interceptar continuamente las comunicaciones entre Assata y Bobby porque, de otra forma, uno de ellos recibiría un mensaje cifrado con una clave que no tiene, lo cual les alertaría sobre el intermediario.
Detectar un ataque de intermediario con hashes criptográficos: huellas digitales
Si Assata y Bobby, después de desarrollar un protocolo de intercambio Diffie-Hellman, pueden comparar sus claves y verificar que son iguales, entonces podrán estar seguros de que un espía no ha montado un ataque de intermediario y que solo podría ver sus comunicaciones cifradas. Como recordatorio, esto obedece a que las partes del protocolo Diffie-Hellman que un espía puede ver no le permiten crear las partes ocultas de las claves que Assata y Bobby eligieron (a y b en la ilustración anterior). De hecho, la forma más sencilla de identificar un ataque de intermediario es que Assata y Bobby comparen sus claves.
Aunque puede haber ciertos problemas con este plan:
Si Assata y Bobby intentan comparar sus claves, ¿no podría Edgar manipular la comunicación de manera que parezca que se trata de la misma clave?
¡Por supuesto! Entonces, Assata y Bobby deberían comparar sus claves a través de un canal de comunicación distinto. Por ejemplo, si originalmente se comunicaban por internet, deberían comparar sus claves por teléfono. La suposición es que sería mucho más difícil para Edgar interceptar las comunicaciones de Assata y Bobby a través de todos los diferentes canales de comunicación que podrían usarse para comparar claves. Idealmente, Assata y Bobby podrían reunirse para comparar claves. De cualquier forma, esto se conoce como comparación fuera de banda, donde “banda” es el canal de comunicación, y las claves deberían compararse fuera de la banda de comunicación a través de la cual se intercambiaron.
Pero si Assata y Bobby tienen otro medio de comunicación, ¿entonces por qué no intercambian claves en la forma tradicional, sin matemáticas complicadas de las cuales preocuparse?
Porque las claves criptográficas, en los métodos modernos de criptografía, son muy largas: de cientos de miles de caracteres. Podría ser engorroso hacer un intercambio manual de claves. Si el diseñador de un método de comunicaciones seguras quisiera automatizar el intercambio de claves a través de un canal de comunicación distinto, ese diseñador tendría que especificar ese canal secundario, lo cual haría engorroso al sistema seguro de comunicaciones: imagina tener que hacer una llamada telefónica para poder visitar un sitio web. Asimismo, Edgar también sabría por cuál canal se estarían intercambiando las claves y podría hacerla de intermediario en ese canal.
Entonces, ¿siendo tan largas, no es engorroso comparar claves?
¡Por supuesto! Así que, en lugar de comparar toda la clave, Assata y Bobby comparan los hashes criptográficos de sus claves, como se describió en el capítulo Hash criptográfico. Recuerda las siguientes propiedades del hash criptográfico: (1) Hace al mensaje de entrada (en este caso, la clave) mucho más corto. (2) Es prácticamente imposible encontrar dos mensajes de entrada (en este caso, dos claves) que tengan el mismo hash de salida, por lo cual Edgar no podrá hacer un protocolo Diffie-Hellman con Assata y Bobby para que los hashes sean iguales. (3) No puede revertirse, por lo cual, si alguien interceptara el hash, no podría recrear el mensaje de entrada (en este caso, la clave).
Como recordarás, la función hash también se conoce como huella digital (fingerprint en inglés), así que al proceso de comparar los hashes criptográficos de claves se le conoce como fingerprinting. Distintas aplicaciones de comunicación usan terminología distinta para esto, incluyendo: números de seguridad, verificación y autenticación.
Fingerprinting en la misma banda
Hay dos métodos para comparar claves en la misma banda que no se usan con frecuencia pero que son ingeniosos y son variaciones del fingerprinting fuera de banda descrito anteriormente.
El primero depende del uso de una contraseña débil. Si tanto Assata como Bobby saben algo que su supuesto adversario no sabe, como el nombre de la primera mascota de Assata o la calle en la que creció Bobby (por ejemplo, Goldman), entonces Assata y Bobby pueden usarlo como una contraseña débil. Assata combina su clave con la contraseña débil (Goldman) y calcula el hash criptográfico del resultado. Bobby hace lo mismo con su clave. Luego, Assata y Bobby comparan el resultado en la misma banda (por ejemplo, por el canal de comunicación a través del cual se están comunicando). Gracias a las propiedades del hash criptográfico, Assata y Bobby solo obtendrán el mismo resultado si tienen la misma clave y la misma contraseña:
Si Edgar está en el papel de intermediario, entonces comparte una clave con Assata y una clave diferente con Bobby. Edgar tendría que arriesgar pasar el hash de Assata a Bobby o tendría que adivinar la contraseña débil para poder calcular un resultado igual al que Assata calculó y al que Bobby calculó (como en la figura siguiente). La contraseña no necesita ser fuerte porque solo unos cuantos intentos incorrectos (por ejemplo, “pantera”) serían tolerados por Assata y por Bobby antes de sospechar que hay un intermediario; es decir, un ataque de fuerza bruta por parte de Edgar no es factible.
El segundo método se usa para comparar claves en llamadas de voz y video. Aquí, Assata hace de su clave un hash de dos palabras que solo un humano puede leer (en lugar de una cadena de números y caracteres, como hemos visto). Luego, Bobby hace lo mismo. Si Assata y Bobby tienen la misma clave, es decir, si no hay un intermediario, entonces tendrán el mismo par de palabras. Assata lee la primera palabra y Bobby lee la segunda palabra, de manera que comparan el resultado del hash. Si Edgar está en medio, Assata y Bobby tendrán un par de palabras diferente. Para sostener su engaño, Edgar tendría que sintetizar las voces de Assata y Bobby (y posiblemente videos también) para decir las palabras que Edgar comparte con Assata y con Bobby.
La posibilidad de hacer fingerprinting es una protección, aun si no lo haces
Si un método de comunicación segura no permite comparar claves (fingerprint), entonces usar un cifrado de extremo a extremo ofrece poco beneficio. Los ataques de intermediario pueden ser automatizados en nuestro sistema de vigilancia global, de manera que si no es posible detectar un ataque de intermediario (a través del fingerprinting) da igual si se hace por defecto. Sin embargo, si es posible hacer fingerprinting, entonces el intermediario se arriesga a ser descubierto, en especial si los ataques son automatizados y efectuados en forma amplia. Para evitar el despliegue generalizado de intermediarios no es necesario que todos hagan el proceso de fingerprinting mientras algunos usuarios lo hagan.
Por supuesto, el fingerprinting es esencial para la seguridad de las comunicaciones de aquellos usuarios que tienen riesgo de estar bajo vigilancia.
¿Qué hacer si no se puede hacer fingerprinting?
En muchas formas de comunicación no es posible hacer fingerprinting. Un ejemplo es cuando se accede a un sitio por medio de un https. Cuando se usa un https, el buscador y el servidor del sitio web generan una clave criptográfica por medio de un protocolo Diffie-Hellman. Sin embargo, no es práctico que los usuarios contacten a los servidores de los sitios web por medio de canales alternos de comunicación para hacer fingerprinting de claves antes de acceder al contenido de los sitios. Por supuesto, no conoces la voz del operador del servidor del sitio web ni comparten el conocimiento de datos que puedan usar en métodos de comparación en banda. En este caso se usan métodos alternos para validar claves, con criptografía asimétrica y autoridades certificadoras. En el capítulo Criptografía asimétrica se describe justamente eso.
En contexto: El Gran Firewall de China
Muchos saben que en China hay gran censura de internet gracias al Gran Firewall de China. A partir de mediados de enero de 2013, partes de GitHub, un sitio usado esencialmente para alojar código de programación pero que también puede usarse para compartir información más general, fueron bloqueadas en China. Para el 21 de enero de 2013, todo el dominio había sido bloqueado. Sin embargo, dado el papel central de GitHub en el desarrollo computacional y de negocios, y dada la importancia de este sector para la economía China, gracias a la respuesta pública se logró desbloquear GitHub para el 23 de enero de 2013. El 25 de enero, una petición publicada en WhiteHouse.gov había comenzado a solicitar que se negara la entrada a Estados Unidos a aquellos vinculados con la creación del Gran Firewall de China. La petición hacía referencia a una página de GitHub creada el mismo día en la que se nombraba a personas de origen chino acusadas de contribuir a la infraestructura de censura en China. El siguiente día aparecieron reportes en las redes sociales de un ataque de intermediario a los usuarios que accedían a GitHub, lo que mostró que el equivalente de la verificación con fingerprinting para acceder a un sitio vía https estaba fallando. El gobierno chino había entendido que no podía bloquear GitHub y, puesto que GitHub admite https, el Gran Firewall no podía bloquear el acceso a páginas específicas dentro de GitHub (por ejemplo, con base en coincidencias en palabras clave) porque https cifra esa información contra espías. La siguiente opción era un ataque de intermediario. Cualquier usuario que ignorara las advertencias de los ataques estaría en riesgo de que su gobierno supiera cuáles páginas visitaba o incluso editaba. El gobierno chino es el presunto implementador de ataques de intermediario generalizados entre usuarios en China y otros grandes prestadores de servicios de internet como Outlook, iCloud de Apple y Google.
China no está sola en el uso de ataques de intermediario. Ataques similares se han observado en Siria y también en Irán.
Qué aprender a continuación
Recursos externos
- GreatFire proporciona herramientas para acceder a un internet sin censura en China y reporta y verifica censura y vigilancia china en internet. En particular, GreatFire ha reportado y verificado ataques de intermediario, presuntamente por parte del gobierno chino, contra Outlook, iCloud de Apple, Google y GitHub.
- Eckersley, Peter. “A Syrian Man-in-the-Middle Attack against Facebook.” Electronic Frontier Foundation, 5 de mayo de 2011.
- Electronic Frontier Foundation. “Iranian Man-in-the-Middle Attack against Google Demonstrates Dangerous Weakness of Certificate Authorities.” 29 de agosto de 2011.
Créditos
- mitm-impersonation-a © OSU Ecampus is licensed under a CC BY-NC (Atribución NoComercial) license
- mitm-impersonation © OSU OERU is licensed under a CC BY-NC (Atribución NoComercial) license
- mitm-a © OSU Ecampus is licensed under a CC BY-NC (Atribución NoComercial) license
- mitm © OSU OERU is licensed under a CC BY-NC (Atribución NoComercial) license
- dhe-mitm © OSU OERU is licensed under a CC BY-NC (Atribución NoComercial) license
- fingerprinting © OSU OERU is licensed under a CC BY-NC (Atribución NoComercial) license
- fingerprinting-mitm © OSU OERU is licensed under a CC BY-NC (Atribución NoComercial) license