NTCP 난독화

Proposal 106
Rejected
Author zzz
Created 2010-11-23
Last Updated 2014-01-03
Superceded by: 111

개요

이 제안은 NTCP 전송을 개편하여 자동화된 식별에 대한 저항성을 향상시키는 것입니다.

동기

NTCP 데이터는 첫 번째 메시지 이후로 암호화되며 (첫 번째 메시지는 무작위 데이터로 나타남), “페이로드 분석"을 통한 프로토콜 식별을 방지합니다. 그러나 “흐름 분석"을 통한 프로토콜 식별에 여전히 취약합니다. 이는 첫 4개의 메시지(즉, 핸드셰이크)가 고정된 길이(288, 304, 448 및 48 바이트)이기 때문입니다.

각 메시지에 무작위 데이터를 무작위로 추가하면 식별이 훨씬 어려워집니다.

NTCP의 수정사항

이 수정은 꽤 무겁지만 DPI 장비에 의해 감지되는 것을 방지합니다.

288바이트 메시지 1의 끝에 다음 데이터가 추가됩니다:

  • 514바이트 엘가말 암호화 블록
  • 무작위 패딩

엘가말 블록은 Bob의 공개키로 암호화됩니다. 222바이트로 해독되었을 때, 다음을 포함합니다:

  • 214바이트 임의의 패딩
  • 4바이트 0 예약
  • 2바이트 패딩 길이
  • 2바이트 프로토콜 버전 및 플래그

메시지 2-4에서는, 패딩의 마지막 두 바이트가 이제 뒤따르는 패딩의 길이를 나타냅니다.

엘가말 블록에는 완벽한 순방향 보안이 없지만, 그 안에 흥미로운 것은 없습니다.

514바이트가 너무 많다고 생각하면 엘가말 라이브러리를 수정하여 더 작은 데이터 크기를 암호화할 수 있을까요? 각 NTCP 설정에 엘가말 암호화가 너무 많은가요?

이 지원은 “version=2” 옵션으로 netdb RouterAddress에 광고됩니다. 메시지 1에서 288바이트만 수신되면 Alice는 버전 1인 것으로 간주되어 이후 메시지에 패딩이 전송되지 않습니다. MITM이 IP를 288바이트로 분할하면 통신이 차단될 수 있습니다(Brandon에 따르면 매우 희박한 احتمال).