From 501d802b8ded081f5710083e82888eadd7fd3203 Mon Sep 17 00:00:00 2001 From: Alexey <247128645+axkurcom@users.noreply.github.com> Date: Sun, 1 Mar 2026 23:39:42 +0300 Subject: [PATCH 1/2] Create MIDDLE-END-KDF.de.md --- docs/MIDDLE-END-KDF.de.md | 40 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 40 insertions(+) create mode 100644 docs/MIDDLE-END-KDF.de.md diff --git a/docs/MIDDLE-END-KDF.de.md b/docs/MIDDLE-END-KDF.de.md new file mode 100644 index 0000000..6483f7f --- /dev/null +++ b/docs/MIDDLE-END-KDF.de.md @@ -0,0 +1,40 @@ +# Middle-End Proxy + +## KDF-Adressierung — Implementierungs-FAQ + +### Benötigt die C-Referenzimplementierung sowohl externe IP-Adresse als auch Port für die KDF? + +Ja. + +In der C-Referenzimplementierung werden **sowohl IP-Adresse als auch Port in die KDF einbezogen** — auf beiden Seiten der Verbindung. + +In `aes_create_keys()` enthält der KDF-Input: + +- `server_ip + client_port` +- `client_ip + server_port` +- sowie Secret / Nonces + +Für IPv6: + +- IPv4-Felder werden auf 0 gesetzt +- IPv6-Adressen werden ergänzt + +Die **Ports bleiben weiterhin Bestandteil der KDF**. + +> Wenn sich externe IP oder Port (z. B. durch NAT, SOCKS oder Proxy) von den erwarteten Werten unterscheiden, entstehen unterschiedliche Schlüssel — der Handshake schlägt fehl. + +--- + +### Kann der Port aus der KDF ausgeschlossen werden (z. B. durch Port = 0)? + +**Nein!** + +Die C-Referenzimplementierung enthält **keine Möglichkeit, den Port zu ignorieren**: +- `client_port` und `server_port` sind fester Bestandteil der KDF +- Es werden immer reale Socket-Ports übergeben: + - `c->our_port` + - `c->remote_port` + +Falls ein Port den Wert `0` hat, wird er dennoch als `0` in die KDF übernommen. + +Eine „Port-Ignore“-Logik existiert nicht. From 08609f4b6d3ccbef043cb7212c9fd54282d820d8 Mon Sep 17 00:00:00 2001 From: Alexey <247128645+axkurcom@users.noreply.github.com> Date: Sun, 1 Mar 2026 23:40:46 +0300 Subject: [PATCH 2/2] Create MIDDLE-END-KDF.ru.md --- docs/MIDDLE-END-KDF.ru.md | 41 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 41 insertions(+) create mode 100644 docs/MIDDLE-END-KDF.ru.md diff --git a/docs/MIDDLE-END-KDF.ru.md b/docs/MIDDLE-END-KDF.ru.md new file mode 100644 index 0000000..7a71b93 --- /dev/null +++ b/docs/MIDDLE-END-KDF.ru.md @@ -0,0 +1,41 @@ +# 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`. + +Отдельной логики «игнорировать порт» не предусмотрено.