# Middle-End Proxy

## KDF Addressing — FAQ по реализации

### Требует ли C-референсная реализация KDF внешний IP и порт?

**Да**

В C-референсе **в KDF участвуют и IP-адрес, и порт** — с обеих сторон соединения.

В `aes_create_keys()` в строку KDF входят:

- `server_ip + client_port`
- `client_ip + server_port`
- далее secret / nonces

Для IPv6:

- IPv4-поля заполняются нулями
- добавляются IPv6-адреса

Однако **порты client_port и server_port всё равно участвуют в KDF**.

> Если внешний IP или порт (например, из-за NAT, SOCKS или прокси) не совпадает с ожидаемым другой стороной — ключи расходятся и handshake ломается.

---

### Можно ли исключить порт из KDF (например, установив порт = 0)?

**Нет.**

В C-референсе **нет механики отключения порта**.

- `client_port` и `server_port` явно включены в KDF
- Передаются реальные порты сокета:
  - `c->our_port`
  - `c->remote_port`

Если порт равен `0`, он всё равно попадёт в KDF как `0`.

Отдельной логики «игнорировать порт» не предусмотрено.
