2012-08-07 3 views
5

내 iOS 앱에서 보안 채널을 통해 전송 된 데이터를 압축해야하며 동일하게 TLS compression을 사용할 수 있는지 궁금합니다. Apple의 TLS 구현 인 Secure Transport가 동일한 기능을 지원하는지 파악할 수 없습니다.iOS가 TLS 압축을 지원합니까?

iOS에서 TLS 압축이 지원되는지 여부를 아는 사람이 있습니까?

답변

2

애플이 SSL/TLS 구현에서 압축을 지원하는지 확인하려고했으나 그렇지 않다고 말할 필요가있다.

처음에는 errSSLPeerDecompressFail 오류 코드가 있다는 것을 알고 있었지만 압축을 가능하게하는 방법이 있어야했습니다. 그러나 나는 그것을 발견 할 수 없었다.

애플이 압축을 지원하지 않는다는 첫 번째 명백한 이유는 내 장치 (6.1)에서 여러 개의 다른 포트에 보안 소켓을 여는 것으로 수행 한 여러 번의 무선 캡처 때문입니다. 이들 모두에서 Client Hello 패킷은 하나의 압축 방법 만보고했습니다 : null.

그런 다음 Apple에서 제공하는 libsecurity_ssl의 마지막 사용 가능한 코드를 살펴 보았습니다. 이것은 Mac OS X 10.7.5에서 구현되었지만, iOS는 매우 유사 할 것입니다. 동일하지는 않지만 반드시 Mac OS X보다 강력하지는 않습니다.

당신은 파일 sslHandshakeHello.c에서 찾을 수, 라인 186-187 (SSLProcessServerHello) : 그 오류 코드는 '서버가 다른 압축을 보내는 경우 만 null (0), 우리는 돈'처럼 많은 소리

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

그것을 구현하지 마십시오. "

다시 동일한 파일 라인 (325) (SSLEncodeClientHello)

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

그 밖의 주변 아무것도 (DEFLATE는 RFC 3749에 따르면, 상기 방법 1). 다음은

, 선 469, 476 및 482-483 ( SSLProcessClientHello)는 클라이언트로 전송 유일 안녕하세요 : 나는이 구현 만 null 압축을 처리하는 꽤 분명하다 생각

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

, 서버 Hello에서 이해할 수있는 유일한 클라이언트 및 압축 메소드는 클라이언트 Hello를 수신 할 때 무시됩니다 (모든 클라이언트가 null를 구현하고 제공해야 함).

그래서 저는 여러분과 저 모두 응용 프로그램 수준 압축을 구현해야한다고 생각합니다. 행운을 빕니다.

+0

이 문제에 관심을 가져 주셔서 감사합니다. –

관련 문제