DVeProto

DVeProto

Server.System company

Протокол шифрования полезной нагрузки поверх WebSocket на базе X25519, HKDF-SHA256 и AES-256-GCM. Общее рукопожатие, компактный бинарный обмен и эталонные реализации для Python и браузера.

Протокол шифрования полезной нагрузки

X25519 · HKDF-SHA256 · AES-256-GCM. 1.5 LTS — финал 1.x (wire 1.4 / ver=0x14). DVeNet/DVeVPN — в 2.0.

spec.json reference.py reference-client.js

Криптография (общая)

Одинакова для wire 1.0–1.4 (на 1.3+ AEAD использует AAD). Меняется формат кадра после рукопожатия. Кадр транспортно-агностичен: сегодня WebSocket, в 2.0 — также UDP/TCP.

Рукопожатие

Всегда UTF-8 JSON, одинаково для обеих версий. Поле v рукопожатия = 1.

  1. Сервер: dve_hello с server_pk, опционально offer: ["1.0"…"1.5"] и caps.
  2. Клиент считает shared secret X25519 и ключи HKDF (или resume из ticket).
  3. Клиент: dve_client_ack с client_pk и select до "1.5", либо resume. Без select → 1.0. select "1.5" ≡ wire 1.4.
  4. Дальше только выбранный wire-формат.
{
  "type": "dve_hello",
  "proto": "DVeProto",
  "v": 1,
  "server_pk": "<base64 32 bytes>",
  "offer": ["1.0", "1.1", "1.2", "1.3", "1.4", "1.5"],
  "caps": 2111
}

{
  "type": "dve_client_ack",
  "proto": "DVeProto",
  "v": 1,
  "client_pk": "<base64 32 bytes>",
  "select": "1.5",
  "caps": 2111
}

Версии wire

Выберите версию, чтобы посмотреть формат данных после рукопожатия.

Package 1.5 LTS — Wire Freeze

reference-1.5.py · reference-1.5.js · reference.py

Финальный релиз поколения 1.x. Binary wire = 1.4 (ver=0x14). select "1.5" — LTS-метка того же кадра.

  • Wire Format Freeze: макет кадра и карта ptype заморожены; изменения — только в 2.x
  • Session Ticket Store + auto Resume; Production API: send / receive / stats / close / rekey
  • Security limits: max frame/lifetime, soft idle, replay window, ticket TTL clamp
  • Векторы: test_vectors.json · smoke: interop_smoke.py
select "1.5"  ≡  wire 1.4 / ver=0x14
package       =  1.5 LTS
next major    =  2.0 (DVeNet / DVeVPN / UDP+TCP)

DVeProto 1.5 LTS is the final release of the first-generation
transport protocol. Future network-layer features are developed
in DVeProto 2.x.

Эталонный код

Референс-реализации в этой же папке — без привязки к конкретному продукту.

Python

session, ack = DVeClientSession.from_server_hello_text(hello_text, prefer="1.5")
frame = session.pack_outgoing({"dve_op": "ping"})
print(session.stats())

Браузер (ESM)

import { dveDeveloperHandshake } from './reference-client.js';
const { session, clientAckJson, wire } = await dveDeveloperHandshake(hello);
const out = await session.encryptOutgoing({ dve_op: 'ping' });

Конвенция APP_JSON

DVeProto 1.5 LTS is the final release of the first-generation transport protocol. Future network-layer features are developed in DVeProto 2.x.

DVeProto 2.0 Roadmap

roadmap-2.0.md · Release Gate · Exit Criteria · COMPATIBILITY · CHANGELOG

Статус: Beta Development — Phase 6 Discovery+Peers. Alpha 2.0 frozen. Next: Routing → Multipath → DVeVPN.

  1. Alpha Released
  2. Beta Phase 6 Discovery + Peers
  3. Phase 7–9 Routing · Multipath · VPN
  4. Not now
  5. test_discovery_channel.py
  6. v2/dvenet.py
  7. NodeIDConnectionID
  8. 1.5 LTS + Alpha freeze

Smart Transport: события Carrier; полноценно с DVeNet (Beta+).

Applications
    ↓
FlowChat / DVeRPC / File Transfer
    ↓
DVeNet (+ Smart Transport)     ← Beta (after Alpha Released)
    ↓
DVeVPN                         ← RC
    ↓
Handshake 2.0 + Wire 2.0       ← AC1 / Alpha
    ↓
Carrier: UDP | TCP
    ↓
Internet

Совместимость

Клиенты без select работают на 1.0. Выбирается высший общий wire (до 1.4). 1.5 LTS — тот же binary, что 1.4; после LTS wire 1.x замораживается.

Security Considerations

Тестовые векторы: test_vectors.json · gen_test_vectors.py.