پرش به محتویات

رمزگذاری VLESS

همهٔ قابلیت‌های هیدیفای

رمزگذاری VLESS لایهٔ رمزگذاری Xray برای VLESS است، mlkem768x25519plus. جریان VLESS را با کلیدهایی رمز می‌کند که در یک دست‌دهی ترکیبی پساکوانتومی (ML-KEM-768 و X25519) توافق می‌شوند؛ پس VLESS بدون TLS، یا درون هر ترنسپورتی، امن اجرا می‌شود. این فیلد encryption در خروجی VLESS و فیلد decryption در ورودی VLESS است. رشته‌ها همان رشته‌های Xray هستند.

چرا از آن استفاده کنیم

  • برای اتصال به سرورهای Xray که رمزگذاری VLESS را لازم دارند.
  • برای اجرای VLESS بدون TLS، یا پشت CDN یا پراکسی‌ای که TLS را باز می‌کند، در حالی که محتوا میان کلاینت و سرور همچنان سربه‌سر رمز شده است.
  • برای افزودن Vision (xtls-rprx-vision) روی رمزگذاری، وقتی TLS در کار نیست.

چطور از فیلترینگ عبور می‌کند

در حالت random همه چیز روی سیم، حتی دست‌دهی، شبیه بایت‌های تصادفی است و هیچ هدر پروتکلی برای تطبیق فیلتر وجود ندارد. xorpub فقط کلیدهای عمومی دست‌دهی را پنهان می‌کند؛ native دست‌دهی را همان‌طور که هست می‌فرستد. تنظیمات padding در رشته اندازهٔ اولین بسته‌ها را تغییر می‌دهد.

ترافیکی که تصادفی به نظر می‌رسد، خودش در برخی شبکه‌ها مسدود می‌شود. در چنین جاهایی رمزگذاری را درون ترنسپورتی که شبیه ترافیک عادی وب است (مثل XHTTP یا WebSocket با TLS) به کار ببرید، نه به‌تنهایی.

چطور کار می‌کند

  • رشتهٔ کلاینت کلیدهای عمومی سرور را دارد و رشتهٔ سرور کلیدهای خصوصی متناظر را. چند کلید پشت سر هم یک زنجیره می‌سازند و دو طرف باید همان تعداد را به همان ترتیب داشته باشند.
  • 1rtt در هر اتصال دست‌دهی کامل انجام می‌دهد. 0rtt از تیکت سرور دوباره استفاده می‌کند تا اتصال‌های بعدی بی‌درنگ داده بفرستند. مدت اعتبار تیکت را سرور تعیین می‌کند.
  • رمزگذاری درون TLS و ترنسپورت، درست زیر VLESS، اجرا می‌شود؛ پس با همهٔ ترنسپورت‌ها کار می‌کند. در سرور، وقتی decryption تنظیم شده باشد kTLS خاموش می‌شود.
  • اگر دست‌دهی شکست بخورد یا context اتصال زودتر تمام شود، اتصال بسته می‌شود.

پیکربندی

کلاینت:

{
  "outbounds": [
    {
      "type": "vless",
      "server": "203.0.113.1",
      "server_port": 8443,
      "uuid": "bf000d23-0752-40b4-affe-68f7707a9661",
      "encryption": "mlkem768x25519plus.random.0rtt.<server public key>"
    }
  ]
}

سرور:

{
  "inbounds": [
    {
      "type": "vless",
      "listen": "::",
      "listen_port": 8443,
      "users": [{ "uuid": "bf000d23-0752-40b4-affe-68f7707a9661" }],
      "decryption": "mlkem768x25519plus.random.600s.<server private key>"
    }
  ]
}
فیلد نوع پیش‌فرض معنا
encryption (خروجی) string "" none یا خالی: بدون رمزگذاری. در غیر این صورت mlkem768x25519plus.<mode>.<rtt>[.<padding>…].<key>[.<key>…].
decryption (ورودی) string "" none یا خالی: بدون رمزگذاری. در غیر این صورت mlkem768x25519plus.<mode>.<seconds>[.<padding>…].<key>[.<key>…].

بخش‌های رشته، جداشده با نقطه:

بخش مقدارها معنا
<mode> native، xorpub، random native: دست‌دهی ساده. xorpub: کلیدهای عمومی دست‌دهی پنهان می‌شوند. random: همهٔ بایت‌ها تصادفی به نظر می‌رسند. دو طرف باید حالت یکسان داشته باشند.
<rtt> (کلاینت) 0rtt، 1rtt استفادهٔ دوباره از تیکت‌های سرور، یا دست‌دهی کامل در هر بار.
<seconds> (سرور) مثل 600s یا 300-600s مدت اعتبار تیکت.
<padding> بخش‌های padding در Xray اختیاری؛ اندازه و تأخیر padding روی اولین بسته‌ها، مثل Xray.
<key> (کلاینت) base64url کلید عمومی X25519 (۳۲ بایت) یا کلید encapsulation در ML-KEM-768 (۱۱۸۴ بایت).
<key> (سرور) base64url کلید خصوصی X25519 (۳۲ بایت) یا seed در ML-KEM-768 (۶۴ بایت).

کلیدها و رشته‌های کامل را می‌توان با فرمان xray vlessenc در Xray ساخت. رشته‌ای با پیشوند، حالت، مقدار RTT یا طول کلید نادرست خطای پیکربندی است.

Vision: در هیدیفای، flow: "xtls-rprx-vision" روی خروجی بدون TLS یا REALITY و روی رمزگذاری VLESS هم کار می‌کند؛ یکی از این دو را لازم دارد. در حالت random، Vision عمل splice (کپی مستقیم میان سوکت‌ها) را انجام نمی‌دهد. وقتی multiplex روشن باشد flow خاموش می‌شود، چون Vision روی اتصال مالتی‌پلکس‌شده اجرا نمی‌شود.

همچنین ببینید


اخرین بروزرسانی: 26 فوریهٔ 2026

نظرات