스카이프 프로토콜

Skype protocol

Skype 프로토콜은 Skype에서 사용되는 독점적인 인터넷 전화 네트워크입니다.이 프로토콜의 사양은 Skype에 의해 공개되지 않았으며 이 프로토콜을 사용하는 공식 애플리케이션은 비공개 소스입니다.

Skype 네트워크는 Skype에서 적절한 라이선스가 없으면 대부분의 다른 Voice over IP(VoIP) 네트워크와 상호 운용할 수 없습니다.프로토콜을 공개하거나 보안을 조사하거나 비공식 고객을 허용하기 위해 프로토콜을 연구하거나 리버스 엔지니어링하려는 수많은 시도가 수행되었습니다.

2014년 6월 20일, Microsoft는 구 Skype 프로토콜의 폐지를 발표했습니다.Skype 서비스를 계속 이용하기 위해 Skype 사용자는 2014년에 출시된 Skype 어플리케이션으로 업데이트해야 하며 이전 Skype 버전(클라이언트)[1][2]로그인할 수 없었습니다.스마트 여부에 대해서는 발표되지 않았습니다.Skype 기능이 내장된 TV 및 하드웨어 전화는 중단 없이 계속 작동합니다.새로운 Skype 프로토콜인 Microsoft Notification Protocol 24는 Skype 장치 간에 더 나은 오프라인 메시징과 더 나은 메시지 동기화를 보장했습니다.[3]폐지 조치는 2014년 8월 둘째 주부터 시행되었다.

피어 투 피어 아키텍처

Skype는 최초의 피어 투 피어 IP 텔레포니 [4]네트워크였습니다.네트워크에는 슈퍼노드, 일반 노드 및 로그인 서버의 3가지 유형의 엔티티가 있습니다.각 클라이언트는 도달 가능한 슈퍼노드의 IP 주소와 포트 번호를 사용하여 호스트 캐시를 유지합니다.Skype 사용자 디렉토리는 분산되어 네트워크 내의 슈퍼노드에 배포됩니다.슈퍼노드는 슬롯(9~10개의 슈퍼노드), 슬롯은 블록(8개의 슬롯)[5]으로 그룹화 됩니다.

이전에는 대역폭이 양호하고 방화벽 또는 Network Address Translation(NAT; 네트워크주소 변환)에 의한 제약이 없으며 처리 능력이 충분한 클라이언트가 슈퍼노드가 될 수 있었습니다.Skype는 UDP 홀 펀칭(NAT을 통해 두 클라이언트를 직접 연결)하거나 다른 사용자의 통화를 완전히 릴레이하는 제3자로 컴퓨터와 인터넷 연결을 사용했기 때문에 NAT 없이 인터넷에 연결하는 사용자에게 추가적인 부담이 되었습니다.2012년에 Microsoft는 네트워크 설계를 변경하고 모든 슈퍼노드를 데이터 [6]센터의 호스트 서버로 관리했습니다.당시 마이크로소프트는 "이 접근방식이 Skype [7]커뮤니티를 구성하는 수억 명의 사용자에게 즉각적인 성능, 확장성 및 가용성 이점을 가져다 줄 것으로 믿는다"며 이러한 움직임을 옹호했습니다.그 당시에는 [8]변경의 프라이버시 영향에 대한 우려가 있었는데,[9][10] 이는 2013년 6월 PRISM 보안 감시 프로그램의 공개로 입증된 것으로 보인다.

Skype는 IPv6 [11]프로토콜 사용을 지원하지 않으므로 앞서 언급한 IPv4 통신 구조와 관련된 복잡성을 크게 줄일 수 있습니다.

슈퍼노드는 2개의 다른 클라이언트를 대신해 릴레이 통신을 실시합니다.이들 클라이언트는 모두 방화벽 또는 "1 대 다" 네트워크주소 변환의 배후에 있습니다.슈퍼노드에 의한 릴레이가 없으면 방화벽 또는 NAT에 문제가 있는2대의 클라이언트는 서로 콜을 송수신 할 수 없게 됩니다.Skype는 양끝이 직접 접속 세부사항을 협상하도록 시도하지만, 때로는 양끝의 문제의 합계가 직접 대화가 확립되지 않을 수 있습니다.

방화벽 및 NAT의 문제는 다음과 같습니다.

  • 외부 포토 번호 또는 IP 주소는, NAT 에 의해서 고쳐지기 때문에, 파생할 수 없습니다.
  • 사용 중인 방화벽 및 NAT에 의해 세션 수신이 차단됩니다.
  • 타임아웃과 같은 NAT 문제로 인해 UDP를 사용할 수 없습니다.
  • 방화벽으로 인해 많은 포트가 차단됨
  • 다대일 NAT 경유 TCP는 기본적으로 항상 "아웃워드 전용"입니다.NAT 라우터에 포트 포워딩 설정을 추가하면 TCP 세션을 수신할 수 있습니다.

프로토콜

시그널링은 RC4를 사용하여 암호화되지만 패킷에서 키를 회복할 수 있기 때문에 이 방식에서는 트래픽만 난독화됩니다.음성 데이터는 [12]AES로 암호화됩니다.

Skype 클라이언트의 Application Programming Interface(API; 응용 프로그램프로그래밍 인터페이스)는 소프트웨어 개발자에게 네트워크를 개방합니다.Skype API를 사용하면 다른 프로그램이 Skype 네트워크를 사용하여 "화이트 페이지" 정보를 가져오고 통화를 관리할 수 있습니다.

Skype 코드는 비공개 소스이며 프로토콜은 [13]표준화되지 않았습니다.클라이언트의 일부는 오픈소스 소켓 통신 [citation needed]라이브러리인 Internet Direct(Indy)사용합니다.

2012년 7월 8일, Benin의 연구원 Ouanilo Medegan은 Skype 클라이언트를 [14]리버스 엔지니어링한 결과물인 기사와 개념 증명 코드를 발표했습니다.

프로토콜 검출

많은 네트워킹 및 보안 회사들은 엔터프라이즈 및 통신사 애플리케이션을 위한 Skype 프로토콜을 감지하고 제어한다고 주장합니다.이러한 회사에서 사용하는 특정 탐지 방법은 종종 독점적이지만, Pearson의 카이 제곱 테스트와 Naigive Bayes 분류기를 사용한 확률적 특성화[15]2007년에 발표된 두 가지 방법입니다.

난독화층

RC4 암호화 알고리즘은 데이터그램의 payload를 난독화하기 위해 사용됩니다.

  1. 공개 소스 및 수신처 IP의 CRC32, Skype의 패킷 ID가 취득됩니다.
  2. Skype 난독화층의 초기화 벡터(IV).

이들 2개의 32비트 값의 XOR은 미지의 키엔진을 사용하여 80바이트 RC4 키로 변환됩니다.

Skype 에서의 RC4 의 현저한 오용은, TCP 스트림에서 확인할 수 있습니다(UDP 는 영향을 받지 않습니다).첫 번째 14바이트(이 중 10바이트는 사용자 이름과 비밀번호의 해시로 구성되므로 사용자에게 알려져 있음)는 RC4 스트림에서 XOR로 편집됩니다.다음으로 암호는 재초기화되어 나머지 TCP [16]스트림을 암호화합니다.

TCP

TCP 패킷:

TCP Skype Init TCP 패킷

Skype Init TCP 패킷에는 다음이 포함됩니다.

  • 시드(4바이트)
  • init_str string 00 01 00 00 01 00 00 01/03

저수준 데이터그램

거의 모든 트래픽이 암호화되어 있습니다.각 명령어에는 파라미터가 오브젝트목록에 추가됩니다.오브젝트 리스트를 압축할 수 있습니다.

/ 오브젝트 리스트... - Enc -> Cmd -> Encod ^ \ Compressed List ... - Frag ----------------------------------------------------------------------------------------------------------------------
동작하지 않다
전송 -> 전송..메세지

오브젝트 리스트

개체는 숫자, 문자열, IP:포트 또는 다른 개체 목록일 수 있습니다.각 개체에는 ID가 있습니다.이 ID는 객체가 어떤 명령어파라미터인지 나타냅니다.

오브젝트:번호 IP:번호의 포트 리스트 문자열 RSA 키
오브젝트 리스트사이즈(n) 오브젝트1 . . 오브젝트n

패킷 압축

패킷은 압축할 수 있습니다.알고리즘은 비트 대신 실수를 사용하는 산술 압축의 변형입니다.

법적 문제

바이너리 검사/해체를 통한 Skype 프로토콜의 리버스 엔지니어링은 Skype 라이센스 계약 조건에 의해 금지되어 있습니다.그러나 유럽연합 법은 상호 운용을 목적으로 [17]한 저자의 허가 없이 컴퓨터 프로그램을 역설계하는 것을 허용하고 있다.미국에서는 Digital Millennium [18][19]Copyright Act가 다른 소프트웨어와의 상호 운용을 목적으로 리버스 엔지니어링 소프트웨어를 보호합니다.미국에도 리버스 엔지니어링이 파일 형식과 프로토콜의 [20][21][22]상호 운용성을 목표로 하는 경우 법적 판례가 있습니다.

또한 일부 국가에서는 리버스 [23]엔지니어링을 목적으로 프로그램 복사를 특별히 허용하고 있습니다.

메모들

  1. ^ "Making Way for the Next Generation of Skype on Desktop". 20 June 2014.
  2. ^ Keizer, Gregg. "Update: Skype to retire recent editions for Windows, Mac; upgrades mandatory".
  3. ^ Chris Merrimen (15 August 2014). "Skype stops working on older Android phones leaving Linux users in the dark". CNET. Archived from the original on August 16, 2014. Retrieved 2 October 2014.{{cite web}}: CS1 유지보수: 부적합한 URL(링크)
  4. ^ Salman A. Baset; Henning Schulzrinne (2004). "An analysis of the Skype peer-to-peer Internet telephony protocol". p. 11. arXiv:cs/0412017v1.
  5. ^ "Download Limit Exceeded". citeseerx.ist.psu.edu. Retrieved 2021-02-26.
  6. ^ Branscombe, Mary (27 July 2012). "Forget the conspiracy theories: Skype's supernodes belong in the cloud". 500 words into the future (ZDNet). Retrieved 17 June 2013.
  7. ^ "Skype replaces P2P supernodes with Linux boxes hosted by Microsoft (updated)". Ars Technica. 2 May 2012. Retrieved 17 June 2013.
  8. ^ Kosner, Anthony (18 July 2012). "Will Microsoft's Changes To The Architecture Of Skype Make It Easier To Snoop?". Forbes blog. Retrieved 17 June 2013.
  9. ^ Gallagher, Ryan (6 June 2013). "Newly Revealed PRISM Snooping Makes Verizon Surveillance Look Like Kids' Stuff". Slate blog. Retrieved 17 June 2013.
  10. ^ Greenwald, Glenn (7 June 2013). "NSA Prism program taps in to user data of Apple, Google and others". The Guardian. Retrieved 17 June 2013.
  11. ^ "Skype does not support IPv6". Skype official Twitter account. 1 Nov 2012. Retrieved 4 Nov 2012.
  12. ^ 개요 Skype 분석 안티 Skype 정책 적용, Skype unovered Security study of Skype, Desclaux Fabrice, 2005년 7월 11일, EADS CCR/STI/C
  13. ^ "Which protocols does Skype use?". Help. Skype. Archived from the original on March 3, 2009.
  14. ^ "Posts under Skype Reverse Category". oKLabs.
    "Skype Reverse Engineering: The (long) journey ;)." oKLabs.
  15. ^ Dario Bonfiglio; et al. "Revealing Skype Traffic: When Randomness Plays with You". ACM SIGCOMM Computer Communication Review. 37 (SIGCOMM 2007): 37–48. Archived from the original on 2011-04-30.
  16. ^ Fabrice Desclaux; Kostya Kortchinsky (2006-06-17). "Vanilla Skype part 2" (PDF). RECON2006.
  17. ^ 2009년 4월 23일 유럽의회 및 이사회에서 컴퓨터 프로그램의 법적 보호에 관한 지침 2009/24/EC
  18. ^ 17 U.S.C. 제1201조(f)
  19. ^ WIPO 저작권 및 퍼포먼스 및 레코드 조약 이행법
  20. ^ 세가 vs 콜레라드, 1992년
  21. ^ Sony vs Connectix, 2000년
  22. ^ Pamela Samuelson & Suzanne Scotchmer (May 2002). "The Law and Economics of Reverse Engineering" (PDF). Yale Law Journal. 111: 1575–1663. doi:10.2307/797533. JSTOR 797533. Archived from the original (PDF) on 2011-07-16. Retrieved 2015-03-17.
  23. ^ 프랑스의 「지적 재산」법에는, 소프트웨어 유저가 그것을 리버스 엔지니어링 할 수 있는 예외가 있습니다.code de la proprieté intellle (프랑스어) 참조.이 법은 EU 법안의 일부를 국가적으로 시행하는 것입니다.이사회 지령 91/250/EEC, 이후 2009년 4월 23일 유럽의회이사회 지령 2009/24/EC에 의해 폐지된 컴퓨터 프로그램의 법적 보호는 독립적이지만 상호 운용 프로그램의 개발 및 테스트를 위해 역엔지니어링/해체를 허용하는 매우 유사한 규정을 가지고 있다.ams)

레퍼런스

외부 링크