El protocolo Skype es una red de telefonía por Internet patentada utilizada por Skype . Skype no ha puesto a disposición del público las especificaciones del protocolo y las aplicaciones oficiales que utilizan el protocolo son de código cerrado .
La red de Skype no es interoperable con la mayoría de las otras redes de Voz sobre IP (VoIP) sin la licencia adecuada de Skype. Se han realizado numerosos intentos de estudiar o aplicar ingeniería inversa al protocolo para revelarlo, investigar la seguridad o permitir clientes no oficiales.
El 20 de junio de 2014, Microsoft anunció la desactivación del antiguo protocolo de Skype. Varios meses después de esta fecha, para continuar usando los servicios de Skype, los usuarios de Skype tuvieron que actualizar a las aplicaciones de Skype lanzadas en 2014 y los usuarios no pudieron iniciar sesión en versiones anteriores de Skype (clientes). [1] [2] No se ha hecho ningún anuncio sobre si SmartTV y los teléfonos de hardware con funcionalidad Skype incorporada continuarán funcionando sin interrupciones. El nuevo protocolo de Skype, el Protocolo de notificación de Microsoft 24 , prometía mejores mensajes fuera de línea y una mejor sincronización de mensajes entre dispositivos Skype. La desaprobación entró en vigor en la segunda semana de agosto de 2014. [3]
Skype fue la primera red de telefonía IP peer-to-peer . [4] La red contiene tres tipos de entidades: supernodos , nodos ordinarios y el servidor de inicio de sesión. Cada cliente mantiene una caché de host con la dirección IP y los números de puerto de los supernodos accesibles. El directorio de usuarios de Skype está descentralizado y distribuido entre los supernodos de la red. Los supernodos se agrupan en ranuras (9 a 10 supernodos) y las ranuras se agrupan en bloques (8 ranuras). [ cita necesaria ]
Anteriormente, cualquier cliente con buen ancho de banda, sin restricciones debido al firewall o traducción de direcciones de red (NAT) y una potencia de procesamiento adecuada podía convertirse en un supernodo. Esto supuso una carga adicional para quienes se conectaban a Internet sin NAT, ya que Skype utilizaba sus computadoras y conexiones a Internet como terceros para perforar UDP (para conectar directamente dos clientes detrás de NAT) o para transmitir completamente las llamadas de otros usuarios. En 2012, Microsoft modificó el diseño de la red y puso todos los supernodos bajo su control como servidores alojados en centros de datos. [5] Microsoft en ese momento defendió la medida, diciendo que "creen que este enfoque tiene beneficios inmediatos de rendimiento, escalabilidad y disponibilidad para los cientos de millones de usuarios que conforman la comunidad de Skype". [6] En ese momento había cierta preocupación con respecto a las implicaciones de privacidad del cambio, [7] que parecen haber demostrado ser ciertas con la revelación del programa de vigilancia PRISM en junio de 2013. [8] [9]
Skype no soporta el uso del protocolo IPv6 , [10] lo que reduciría en gran medida la complejidad asociada con la estructura de comunicación IPv4 antes mencionada.
Los supernodos retransmiten comunicaciones en nombre de otros dos clientes, los cuales están detrás de cortafuegos o traducción de direcciones de red "uno a muchos". Sin la retransmisión por parte de los supernodos, dos clientes con dificultades de firewall o NAT no podrían realizar ni recibir llamadas entre sí. Skype intenta que los dos extremos negocien los detalles de la conexión directamente, pero en ocasiones la suma de problemas en ambos extremos puede impedir que se establezca una conversación directa.
Los problemas con los firewalls y NAT pueden ser:
La señalización se cifra mediante RC4 ; sin embargo, el método sólo ofusca el tráfico ya que la clave se puede recuperar del paquete. Los datos de voz están cifrados con AES . [11]
La interfaz de programación de aplicaciones (API) del cliente de Skype abre la red a los desarrolladores de software. La API de Skype permite que otros programas utilicen la red de Skype para obtener información de " páginas blancas " y administrar llamadas.
El código de Skype es de código cerrado y el protocolo no está estandarizado. [12] Partes del cliente utilizan Internet Direct (Indy) , una biblioteca de comunicación de socket de código abierto. [ cita necesaria ]
El 8 de julio de 2012, un investigador de Benin, Ouanilo Medegan, publicó artículos y un código de prueba de concepto, resultados de su ingeniería inversa en el cliente Skype. [13]
Muchas empresas de redes y seguridad afirman detectar y controlar el protocolo de Skype para aplicaciones empresariales y de operadores. Si bien los métodos de detección específicos utilizados por estas empresas suelen ser propietarios, la prueba chi-cuadrado de Pearson y la caracterización estocástica con clasificadores Naive Bayes son dos enfoques que se publicaron en 2007. [14]
El algoritmo de cifrado RC4 se utiliza para ofuscar la carga útil de los datagramas.
El XOR de estos dos valores de 32 bits se transforma en una clave RC4 de 80 bytes utilizando un motor de claves desconocido.
Se puede encontrar un uso indebido notable de RC4 en Skype en las transmisiones TCP (UDP no se ve afectado). Los primeros 14 bytes (10 de los cuales son conocidos por el usuario, ya que consisten en un hash del nombre de usuario y la contraseña) se realizan mediante XOR con la secuencia RC4. Luego, el cifrado se reinicia para cifrar el resto del flujo TCP. [15]
Paquetes TCP:
tcpPaquete TCP de inicio de Skype
El paquete TCP de inicio de Skype contiene
Casi todo el tráfico está cifrado. Cada comando tiene sus parámetros adjuntos en una lista de objetos. La lista de objetos se puede comprimir.
/ Lista de objetos... -| Enc -> Cmd -> Codificar ^ \ Lista comprimida... -| Fragmento | | |------------------<---------------| Ack
NAck
Reenviar -> Reenviado...Mensaje
Un objeto puede ser un número, una cadena, un puerto IP: o incluso otra lista de objetos. Cada objeto tiene una identificación. Este ID identifica qué parámetro de comando es el objeto.
Objeto: Número IP: Puerto Lista de números Cadena clave RSA
Lista de objetos Tamaño de lista (n) Objeto 1 . . objeto norte
Los paquetes se pueden comprimir. El algoritmo es una variación de la compresión aritmética que utiliza reales en lugar de bits.
Los términos y condiciones del acuerdo de licencia de Skype prohíben la ingeniería inversa del protocolo de Skype mediante la inspección/desmontaje de archivos binarios. Sin embargo, la ley de la Unión Europea permite realizar ingeniería inversa en un programa informático sin obtener el permiso del autor con fines de interoperabilidad. [16] En los Estados Unidos, la Ley de Derechos de Autor del Milenio Digital proporciona protección para el software de ingeniería inversa con fines de interoperabilidad con otro software. [17] [18] También existen precedentes legales en los Estados Unidos cuando la ingeniería inversa tiene como objetivo la interoperabilidad de formatos y protocolos de archivos. [19] [20] [21]
Además, algunos países permiten específicamente la copia de un programa con fines de ingeniería inversa. [22]
{{cite web}}
: Mantenimiento CS1: URL no apta ( enlace )