개요
이 제안은 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에 따르면 매우 희박한 احتمال).