Cómo funciona la navegación segura basada en hash en Google Chrome


Por Rohit Bhatia, Mollie Bates, Seguridad de Google Chrome

Hay varias amenazas a las que se enfrenta un usuario cuando navega por la net. Los usuarios pueden ser engañados para que compartan información confidencial, como sus contraseñas, con un sitio web engañoso o falso, también llamado phishing. También pueden verse obligados a instalar application malicioso en sus máquinas, llamado malware, que puede recopilar datos personales y también retenerlos para pedir rescate. Google Chrome, en adelante llamado Chrome, permite a sus usuarios protegerse de tales amenazas en Net. Cuando los usuarios de Chrome navegan por la world-wide-web con las protecciones de Navegación segura, Chrome united states of america el servicio de Navegación segura de Google para identificar y protegerse de varias amenazas.

La Navegación segura funciona de diferentes maneras según las preferencias del usuario. En el caso más común, Chrome utiliza la protección de la privacidad Actualizar API (Interfaz de programación de aplicaciones) del servicio de Navegación segura. Esta API se desarrolló teniendo en cuenta la privacidad del usuario y garantiza que Google obtenga la menor información posible sobre el historial de navegación del usuario. Si el usuario ha optado por «Protección mejorada» (cubierto en una publicación anterior) o «Mejore las búsquedas y la navegación«, Chrome comparte datos adicionales limitados con Navegación segura solo para mejorar aún más la protección del usuario.

Esta publicación describe cómo Chrome implementa la API de actualización, con indicadores apropiados para la implementación técnica y detalles sobre los aspectos de privacidad de la API de actualización. Esto debería ser útil para que los usuarios comprendan cómo los protege la Navegación segura y para que los desarrolladores interesados ​​exploren y comprendan la implementación. Cubriremos las API utilizadas para los usuarios de Protección mejorada en una publicación futura.

Amenazas en World wide web

Cuando un usuario navega a una página web en World wide web, su navegador obtiene objetos alojados en Online. Estos objetos incluyen la estructura de la página internet (HTML), el estilo (CSS), el comportamiento dinámico en el navegador (Javascript), imágenes, descargas iniciadas por la navegación y otras páginas world wide web incrustadas en la página world-wide-web principal. Estos objetos, también llamados recursos, tienen una dirección world wide web que se denomina URL (Uniform Useful resource Locator). Además, las URL pueden redirigir a otras URL cuando se cargan. Cada una de estas URL puede albergar amenazas como sitios website de phishing, malware, descargas no deseadas, software package malicioso, prácticas de facturación desleales y más. Chrome con Navegación segura verifica todas las URL, redirecciones o recursos incluidos, para identificar dichas amenazas y proteger a los usuarios.

Listas de navegación segura

Navegación segura proporciona una lista de cada amenaza contra la que protege a los usuarios en Internet. Puede encontrar un catálogo completo de listas que se utilizan en Chrome visitando chrome://safe and sound-browsing/#tab-db-manager en plataformas de escritorio.

Una lista no contiene direcciones world wide web no seguras, también denominadas URL, en su totalidad sería prohibitivamente costoso mantenerlos todos en la memoria limitada de un dispositivo. En su lugar, asigna una URL, que puede ser muy larga, a través de una función hash criptográfica (SHA-256), a una cadena única de tamaño fijo. Esta cadena distinta de tamaño fijo, llamada hash, permite que una lista se almacene de manera eficiente en una memoria limitada. La API de actualización maneja las URL solo en forma de hash y también se denomina API basada en hash en esta publicación.

Además, una lista tampoco almacena hashes en su totalidad, ya que incluso eso requeriría demasiada memoria. En cambio, salvo en el caso de que los datos no se compartan con Google y la lista sea pequeña, contiene prefijos de hashes. Nos referimos al hash initial como hash completo y al prefijo hash como hash parcial.

Una lista se actualiza siguiendo las API de actualización frecuencia de solicitud sección. Chrome también sigue un modo de retroceso en caso de una respuesta fallida. Estas actualizaciones ocurren aproximadamente cada 30 minutos, siguiendo la duración mínima de espera establecida por el servidor en la respuesta de actualización de la lista.

Para aquellos interesados ​​en buscar código fuente relevante, aquí es donde buscar:

Código fuente

  1. ObtenerInfosLista() contiene todas las listas, junto con sus tipos de amenazas asociadas, las plataformas en las que se utilizan y sus nombres de archivo en el disco.
  2. HashPrefijoMapa muestra cómo se almacenan y mantienen las listas. Se agrupan por el tamaño de los prefijos y se agregan para permitir búsquedas rápidas basadas en búsquedas binarias.

¿Cómo se realiza la búsqueda de URL basada en hash?

Como ejemplo de una lista de Navegación segura, supongamos que tenemos una para malware, que contiene hashes parciales de URL que se sabe que albergan malware. Estos hash parciales generalmente tienen una longitud de 4 bytes, pero con fines ilustrativos, mostramos solo 2 bytes.

['036b', '1a02', 'bac8', 'bb90']

Cada vez que Chrome necesita comprobar la reputación de un recurso con la API de actualización, por ejemplo, al navegar a una URL, no comparte la URL sin procesar (o cualquier parte de ella) con Navegación segura para realizar la búsqueda. En su lugar, Chrome united states hashes completos de la URL (y algunas combinaciones) para buscar los hashes parciales en la lista de Navegación segura mantenida localmente. Chrome envía solo estos hash parciales coincidentes al servicio de navegación segura. Esto garantiza que Chrome proporcione estas protecciones respetando la privacidad del usuario. Esta búsqueda basada en hash se realiza en tres pasos en Chrome:

Paso 1: Genere combinaciones de URL y hashes completos

Cuando Google bloquea las URL que albergan recursos potencialmente no seguros colocándolos en una lista de Navegación segura, el actor malintencionado puede alojar el recurso en una URL diferente. Un actor malicioso puede recorrer varios subdominios para generar nuevas URL. Navegación segura utiliza sufijos de host para identificar dominios maliciosos que alojan malware en sus subdominios. Del mismo modo, los actores maliciosos también pueden recorrer varias rutas secundarias para generar nuevas URL. Por lo tanto, Navegación segura también united states of america prefijos de ruta para identificar sitios net que alojan malware en varias rutas secundarias. Esto evita que los actores maliciosos pasen por subdominios o rutas en busca de nuevas URL maliciosas, lo que permite una identificación sólida y eficiente de las amenazas.

Para incorporar estos sufijos de host y prefijos de ruta, Chrome primero calcula los valores hash completos de la URL y algunos patrones derivados de la URL. Siguiendo las API de navegación segura URL y hashing especificación, Chrome calcula los valores hash completos de las combinaciones de URL siguiendo estos pasos:

  1. Primero, Chrome convierte la URL a un formato canónico, como se define en la especificación.
  2. Luego, Chrome genera hasta 5 sufijos/variantes de host para la URL.
  3. Luego, Chrome genera hasta 6 prefijos/variantes de ruta para la URL.
  4. Luego, para las 30 combinaciones combinadas de sufijos de host y prefijos de ruta, Chrome genera el hash completo para cada combinación.

Código fuente

  1. V4LocalDatabaseManager::CheckBrowseURL es un ejemplo que realiza una búsqueda basada en hash.
  2. V4ProtocolManagerUtil::UrlToFullHashes crea las diversas combinaciones de URL para una URL y calcula sus valores hash completos.

Ejemplo

Por ejemplo, supongamos que un usuario intenta visitar https://evil.example.com/blah#frag. La URL canónica es https://evil.illustration.com/blah. Los sufijos de host que se probarán son evil.instance.comy illustration.com. Los prefijos de ruta son / y /blah. Las cuatro combinaciones de URL combinadas son evil.example.com/, evil.case in point.com/blah, example.com/y instance.com/blah.

url_combinations = ["evil.example.com/", "evil.example.com/blah","example.com/", "example.com/blah"]
whole_hashes = ['1a02…28', 'bb90…9f', '7a9e…67', 'bac8…fa']

Paso 2: busque hashes parciales en listas locales

Luego, Chrome verifica los valores hash completos de las combinaciones de URL con las listas de Navegación segura mantenidas localmente. Estas listas, que contienen hashes parciales, no proporcionan un veredicto malicioso decisivo, pero pueden identificar rápidamente si la URL se considera no maliciosa. Si el hash completo de la URL no coincide con ninguno de los hash parciales de las listas locales, la URL se considera segura y Chrome procede a cargarla. Esto sucede en más del 99% de las URL verificadas.

Código fuente

  1. V4LocalDatabaseManager::GetPrefixMatches obtiene los hashes parciales coincidentes para los hashes completos de la URL y sus combinaciones.

Ejemplo

Chrome encuentra que tres hashes completos 1a02…28, bb90…9fy bac8…fa hacer coincidir hashes parciales locales. Notamos que esto es para fines de demostración, y una coincidencia aquí es rara.

Paso 3: Obtener hashes completos coincidentes

A continuación, Chrome envía solamente el hash parcial coincidente (no la URL completa o cualquier parte distinct de la URL, o incluso sus hash completos), al servicio de Navegación Segura fullHashes.uncover método. En respuesta, recibe los hash completos de todas las URL maliciosas para las que el hash completo comienza con uno de los hash parciales enviados por Chrome. Chrome comprueba los hashes completos obtenidos con los hashes completos generados de las combinaciones de URL. Si se encuentra alguna coincidencia, identifica la URL con varias amenazas y sus gravedades se deducen de los hashes completos coincidentes.

Código fuente

  1. V4GetHashProtocolManager::GetFullHashes realiza la búsqueda de los hashes completos para los hashes parciales coincidentes.

Ejemplo

Chrome envía los hashes parciales coincidentes 1a02, bb90 y bac8 para obtener los hashes completos. El servidor devuelve hashes completos que coinciden con estos hashes parciales, 1a02…28, bb90…ce, y bac8…01. Chrome encuentra que uno de los hash completos coincide con el hash completo de la combinación de URL que se está comprobando e identifica la URL maliciosa como malware de alojamiento.

Conclusión

Navegación segura protege a los usuarios de Chrome de varias amenazas maliciosas en World wide web. Mientras brinda estas protecciones, Chrome enfrenta desafíos tales como limitaciones en la capacidad de la memoria, el uso del ancho de banda de la crimson y un panorama dinámico de amenazas. Chrome también tiene en cuenta las opciones de privacidad de los usuarios y comparte pocos datos con Google.

En una publicación de seguimiento, cubriremos las protecciones más avanzadas que Chrome brinda a sus usuarios que han optado por la «Protección mejorada».



Enlace a la noticia unique