2012-08-07 17 views
5

Necesito comprimir los datos enviados a través de un canal seguro en mi aplicación iOS y me preguntaba si podría usar TLS compression para el mismo. No puedo determinar si la implementación de TLS de Apple, Secure Transport, admite lo mismo.¿Admite iOS la compresión TLS?

¿Alguien más sabe si la compresión TLS es compatible con iOS o no?

Respuesta

2

Estaba tratando de determinar si la implementación de SSL/TLS de Apple admite la compresión, pero debo decir que me temo que no.

Al principio tenía la esperanza de tener un código de error errSSLPeerDecompressFail, tiene que haber una forma de habilitar la compresión. Pero no pude encontrarlo

La primera razón obvia de que Apple no es compatible con la compresión es varias capturas de cables que hice desde mi dispositivo (6.1) abriendo enchufes seguros en diferentes puertos. En todos ellos, el paquete Client Hello informó solo un método de compresión: null.

Luego miré el último código disponible para libsecurity_ssl disponible en Apple. Esta es la implementación de Mac OS X 10.7.5, pero algo me dice que el iOS será muy similar, si no el mismo, pero seguramente no será más poderoso que el Mac OS X uno.

puede encontrar en el archivo sslHandshakeHello.c, líneas 186-187 (SSLProcessServerHello):

if (*p++ != 0)  /* Compression */ 
    return unimpErr; 

Ese código de error se parece mucho a “si el servidor envía otro compresión, pero null (0), que don' t implementar eso, así que falla ".

Una vez más, el mismo archivo, la línea 325 (SSLEncodeClientHello):

*p++ = 0; /* null compression */ 

Y nada más alrededor (DEFLATE es el método 1, de acuerdo con RFC 3749).

A continuación, las líneas 469, 476 y 482-483 (SSLProcessClientHello):

compressionCount = *(charPtr++); 
... 
/* Ignore list; we're doing null */ 
... 
/* skip compression list */ 
charPtr += compressionCount; 

Creo que es bastante claro que esta aplicación sólo se ocupa de la compresión null: es el único enviado en el cliente de Hola , el único entendido en el Servidor Hola, y los métodos de compresión se ignoran cuando se recibe el Cliente Hola (null debe ser implementado y ofrecido por cada cliente).

Creo que tanto usted como yo tenemos que implementar una compresión de nivel de aplicación. Buena suerte.

+0

¡Gracias por investigar esto! –