Académique Documents
Professionnel Documents
Culture Documents
FASE 2
PRESENTADO POR:
CODIGO 27143741
GRUPO: 233008-4
PRESENTADO A:
TUTOR
Al cliente que efectúa la petición (un navegador web o un spider) se lo conoce como
"user agent" (agente del usuario). A la información transmitida se la llama recurso y se
la identifica mediante un localizador uniforme de recursos (URL). Los recursos pueden
ser archivos, el resultado de la ejecución de un programa, una consulta a una base de
datos, la traducción automática de un documento y se lo se utiliza para transmitir todo
tipo de documentos (imágenes, audio, video, PDF, etc.) y para crear aplicaciones Web.
HTTP es un protocolo sin estado, es decir, que no guarda ninguna información sobre
conexiones anteriores. El desarrollo de aplicaciones web necesita frecuentemente
mantener estado. Para esto se usan las cookies, que es información que un servidor
puede almacenar en el sistema cliente. Esto les permite a las aplicaciones web instituir
la noción de "sesión", y también permite rastrear usuarios ya que las cookies pueden
guardarse en el cliente por tiempo indeterminado.
Para realizar solicitudes a un servidor por medio del protocolo HTTP, es obligatorio el
uso de unos métodos que vienen pre-definidos en este protocolo los cuales le indican
al servidor cual es la acción que se desea realizar sobre uno o varios recursos en
concreto, a estos métodos también se les conoce por el nombre de “verbos”.
GET: Obtiene información del servidor. Obtenemos tanto la cabecera de la página como
el cuerpo del mensaje o el contenido de la página web.
HEAD: Obtiene la cabecera de la pagina. Es lo mismo que el método GET, pero en este
caso sólo nos devuelve la cabecera.
POST: Empleado para enviar información al servidor. Se suele utilizar para enviar
información desde formularios como usuario y password que no queremos que sea
visible.
PUT: Envía un objeto al servidor. Sirve para crear o registrar información en el servidor.
TRACE: Nos permite ver los mensajes que se envían entre el cliente y servidor. Por
ejemplo se utiliza para ver la petición que ha llegado al servidor para comprobar si un
elemento intermedio (proxy, gateway, tunel, etc.) la ha modificado.
CONNECT: Para ver si se tiene acceso a un servidor. Este método se reserva para uso
con proxys. Permitirá que un proxy pueda dinámicamente convertirse en un túnel. Por
ejemplo para comunicaciones con SSL.
RIESGOS
Este tipo de ataque permite al atacante enviar peticiones HTTP a voluntad desde la
máquina de la víctima. Es difícil determinar cuándo una petición HTML se ha originado
por un ataque de este tipo.
Cuando un atacante conoce el formato que debe tener una URL para lograr la ejecución
de una acción en el sistema, ha logrado encontrar la posibilidad de explotar este tipo de
ataques. Ahora lo que necesita el atacante es simplemente hacer que una víctima visite
la URL.
Un recurso que se utiliza comúnmente para realizar este tipo de ataques suele tener
embebida la petición en una imagen. En este caso el atacante sólo necesita crear alguna
etiqueta HTML del siguiente tipo:
Existen acciones que podemos tomar para contrarrestar este tipo de ataques, una de
estas es preferir el método POST para el procesamiento de formas en lugar del GET,
otra posibilidad es solicitar confirmación por parte del solicitante antes de realizar los
procesos (a costa de reducir la usabilidad en la aplicación).
Características de SSL v3
Características SSL
Separación de responsabilidades:
Eficiencia:
Independiente de protocolos:
Aunque SSL se diseñó para funcionar sobre TCP/IP, puede hacerlo sobre cualquier
protocolo confiable orientado a conexiones
Protección contra ataques:
Aunque depende de las implementaciones, SSL suele dar soporte a diversos algoritmos:
Intercambio de claves (RSA y Diffie – Hellman).
Soporte de compresión:
SSL permite comprimir los datos del usuario antes de ser cifrados mediante múltiples
algoritmos de compresión.
SSL Record Protocol. Está ubicada sobre algún protocolo de transporte confiable
(como por ejemplo TCP) y es usado para encapsular varios tipos de protocolos de mayor
nivel.
SSL Handshake Protocol. Es uno de los posibles protocolos que pueden encapsularse
sobre la capa anterior y permite al cliente y al servidor autenticarse mutuamente,
negociar un algoritmo de cifrado e intercambiar llaves de acceso.
Una de las ventajas del SSL es que es independiente del protocolo de aplicación, ya
que es posible ubicarlo por encima del mismo en forma transparente.
Las conexiones realizadas por medio de este protocolo tienen las siguientes
propiedades básicas:
Privada. Después de un proceso inicial de "handshake" en el cual se define una clave
secreta, se envía la información encriptada por medio de algún método simétrico (DES,
RC4).
Una sesión SSL posee diferentes estados y es responsabilidad del SSL Hanshake
Protocol la coordinación de los mismos entre el cliente y el servidor para que ambos
funcionen en forma consistente, a pesar del hecho que no estén exactamente en
paralelo. Además, cada sesión SSL puede tener múltiples conexiones seguras y cada
parte puede tener múltiples sesiones seguras.
Session Identifier: Es una secuencia arbitraria de bytes elegida por el servidor para
identificar una sesión en estado activo o retomable.Peer Certificate: Certificado X509
de la parte. Puede ser nulo.
Cipher Spec: Especifica el algoritmo de compresión de los datos (puede ser ninguno,
DES, etc.) y el algoritmo para la MAC, tal como MD5 o SHA.
Las Resumable: Es un flag que indica si la sesión puede ser utilizada para iniciar
nuevas conexiones.
Server Write Key: Es la clave de cifrado para los datos que van del servidor al cliente.
Client Write Key: Es la clave de cifrado para los datos van del cliente al servidor.
Sequence Numbers: Cada parte mantiene una secuencia separada de números para
los mensajes transmitidos y recibidos para cada conexión. Cuando una de las partes
envía o recibe un mensaje de cambio Cipher Spec, la secuencia correspondiente es
puesta a cero.
Contramedidas
También y debido a que el ataque se centra en descifrar las credenciales de sesión, las
mejores prácticas estándar para la protección de estas tokens también podrían limitar el
impacto:
La conexión es privada. Para encriptar los datos se usan algoritmos de cifrado simétrico.
Las claves se generan para cada conexión y se basan en un secreto negociado por otro
protocolo (como el de mutuo acuerdo). El protocolo también se puede usar sin
encriptación.
La negociación es fiable, nadie puede modificar la negociación sin ser detectado por los
interlocutores.
El protocolo TLS está diseñado para autenticar la identidad del emisor y del receptor,
así como la confidencialidad e integridad de la información intercambiada:
• Confidencialidad: los datos enviados se encriptan de manera que una tercera persona
pueda entender el mensaje.
La llave privada se utiliza para encriptar los datos, es conservada por el emisor (el sitio
web). La llave pública se utiliza para desencriptar la información y se envía a los
receptores (navegadores web) por medio de un certificado. Cuando utiliza TLS en
Internet, el certificado se entrega por medio de una autoridad de certificación, como
Verisign®. El sitio web paga a la autoridad certificadores por entregar un certificado que
garantice la autenticación del servidor y que contenga la llave pública que permita el
intercambio de datos en modo seguro.
OBJETIVOS TLS
Numera todos los registros y usa el número de secuencia en MAC. Usa un resumen de
mensaje mejorado con una clave (de forma que solo con dicha clave se pueda
comprobar el MAC).
El mensaje que finaliza el protocolo handshake (Finished) envía un hash de todos los
datos intercambiados y vistos por ambas partes. La función pseudo aleatoria divide los
datos de entrada en 2 mitades y las procesa con algoritmos hash diferentes (MD5 y
SHA), después realiza sobre ellos una operación XOR. De esta forma se protege a sí
mismo de la eventualidad de que algunos de estos algoritmos se tornen vulnerables en
el futuro.
REFERENCIAS BIBLIOGRAFICAS