2012-08-07 38 views
5

iOS uygulamasında güvenli bir kanal üzerinden gönderilen verileri sıkıştırmam gerekiyor ve TLS compression'u aynı şekilde kullanıp kullanamayacağımı merak ediyorum. Apple'ın TLS uygulamasının Secure Transport tarafından desteklenip desteklenmediğini anlayamıyorum.iOS, TLS sıkıştırmasını destekliyor mu?

TLS sıkıştırmasının iOS'ta desteklenip desteklenmediğini başka bilen var mı?

cevap

2

SSL/TLS'nin Apple uygulamasının sıkıştırmayı destekleyip desteklemediğini belirlemeye çalışıyordum ama korkmam gerektiğini söylemem gerekiyor.

Başta, errSSLPeerDecompressFail hata kodu olması umulurunda, sıkıştırmayı etkinleştirmenin bir yolu olmalıydı. Ama ben bulamadım.

Apple'ın sıkıştırmayı desteklemediği ilk açık neden, aygıtımdan (6.1) farklı bağlantı noktalarında güvenli yuvalar açtığım birkaç kablo yakalamasıdır. Hepsinde, İstemci Hello paketi, sadece bir sıkıştırma yöntemi bildirdi: null.

Daha sonra Apple'ın kullanabileceği en son libsecurity_ssl koduna baktım. Bu Mac OS X 10.7.5 uygulamasının uygulanmasıdır, ancak bir şey bana iOS'un aynı olmasa da çok benzer olacağını, ancak kesinlikle Mac OS X'den daha güçlü olmayacağını söyler.

Dosyadaki sslHandshakeHello.c bulabileceğiniz, çizgiler 186-187 (SSLProcessServerHello): Bu hata kodu 'sunucu başka sıkıştırma gönderirse ancak null (0), biz mi”gibi bir çok geliyor

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

Bunu uygulamak, yani başarısız ”.

Yine aynı dosya, satır 325 (SSLEncodeClientHello):

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

ve başka hiçbir şey etrafında (DEFLATE RFC 3749 e göre, yöntem 1). Aşağıda

, çizgiler 469, 476 ve 482-483 ( SSLProcessClientHello): Bu Client gönderilen tek Merhaba: Ben uygulama sadece null sıkıştırma işleme oldukça açık olduğunu düşünüyorum

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

, Sunucu Merhaba'da anlaşılan tek kişi ve İstemci Merhaba (Compliance) alındığında sıkıştırma yöntemleri yok sayılır (her istemci tarafından null uygulanmalı ve sunulmalıdır).

Bu yüzden hem siz hem de ben bir uygulama düzeyinde sıkıştırma uygulamak zorundayız. İyi şanslar.

+0

Bunun için teşekkürler! –