حتی اگر نمایه مرورگر خود را کاملاً پاکسازی کنید، مودم را برای دریافت نشانی IP عمومی جدید مجدداً راه بیندازید و یک سیستم‌عامل موقت اجرا نمایید، از نگاه اسکریپت‌های تحلیلی وب یک کاربر جدید به نظر خواهید رسید. با این وجود، در یک سرور نظارتی از راه دور، برنامه‌ای برای شنود بسته‌ها تنها یک فیلد عددی درون سربرگ لایه انتقال را زیر نظر می‌گیرد. تنها پس از مبادله بیست بسته در جریان دست‌دهی اولیه پروتکل TCP، سرور قادر است مادربرد فیزیکی دستگاه شما را با پرونده‌های ذخیره‌شده پیشین با دقت میکروثانیه تطبیق دهد.

این شیوه ردگیری در سطحی بسیار عمیق‌تر از سربرگ‌های HTTP، محیط‌های ایزوله مرورگر و پیشکارهای لایه کاربرد عمل می‌کند. با تحلیل نواقص میکروسکوپی در ساخت نوسان‌سازهای بلور کوارتز، سامانه‌های نظارتی از قابلیت برچسب زمانی TCP (استاندارد RFC 7323) برای سنجش انحراف ساعت فیزیکی (clock skew) بهره می‌برند. این اثرانگشت فیزیکی در میان رابط‌های شبکه گوناگون، نشانی‌های IP متفاوت و تنظیمات حریم خصوصی مرورگر همچنان پایدار می‌ماند.

[مادربرد و سخت‌افزار فیزیکی دستگاه]
  │
  ├─ نوسان‌ساز بلور کوارتز (انحراف فیزیکی اختصاصی: ~۱۵.۴ ppm)
  │
  ▼
[پشته شبکه هسته سیستم‌عامل]
  │
  ├─ گزینه برچسب زمانی TCP (RFC 7323)
  │     ├── TSval: شمارنده زمان سخت‌افزاری هسته
  │     └── TSecr: پاسخ بازتابی از سرور مقابل
  │
  ▼
[سرور نظارتی راه دور]
  │
  └─ الگوریتم رگرسیون خطی ──> محاسبه شیب انحراف ساعت سخت‌افزار
                              ایجاد شناسه ثابت برای تجهیزات فیزیکی

فیزیک انحراف ساعت در تراشه‌های سیلیکونی

تمام سامانه‌های محاسباتی به منظور ایجاد پالس‌های زمان‌بندی داخلی به نوسان‌سازهای بلور کوارتز متکی هستند. این دیاپازون‌های کوارتزی میکروسکوپی در بسامدهای ثابتی (نظیر ۱۴.۳۱۸ مگاهرتز، ۲۵ مگاهرتز یا ۳۲.۷۶۸ کیلوهرتز) نوسان می‌کنند تا پردازنده مرکزی، گذرگاه‌های سیستم و تایمرهای وقفه هسته را هدایت نمایند. با توجه به محدودیت‌های فیزیکی در فرآیند تولید نیمه‌رساناها، هیچ دو بلور کوارتزی بسامد رزونانس کاملاً یکسانی ندارند.

هر نوسان‌ساز دارای انحرافی دائمی نسبت به بسامد نامی خود است که به آن انحراف ساعت (Clock Skew) گفته می‌شود. این مقدار بر حسب بخش در میلیون (PPM) یا میکروثانیه در ثانیه ($\mu\text{s/s}$) سنجیده می‌شود:

$$\text{Skew} = \frac{f_{\text{واقعی}} - f_{\text{نامی}}}{f_{\text{نامی}}}$$

انحراف ۲۰ PPM به این معناست که ساعت سخت‌افزاری در هر ثانیه ۲۰ میکروثانیه تندتر یا کندتر کار می‌کند (حدود ۱.۷ ثانیه در هر شبانه‌روز). با اینکه پروتکل‌های شبکه مانند NTP ساعت سیستم کاربر را تنظیم می‌نمایند، شمارنده سخت‌افزاری هسته با آهنگ فیزیکی خود به تیک زدن ادامه می‌دهد. دو رایانه یکسان که در یک روز از یک خط تولید خارج شده‌اند، دارای انحراف ساعت کاملاً متمایزی هستند.

افشای زمان‌بندی سخت‌افزار در استاندارد RFC 7323

پروتکل کنترل انتقال (TCP) گزینه برچسب زمانی را در سند RFC 1323 معرفی کرد و در RFC 7323 جهت بهبود بهره‌وری شبکه ارتقا داد. این گزینه ۱۰ بایت از سربرگ TCP را به خود اختصاص می‌دهد:

+-------+-------+---------------------+---------------------+
|Kind=8 | طول   |   مقدار زمان (TSval)|  پاسخ بازتاب (TSecr)|
|(۱ بایت|(۱ بایت|      (۴ بایت)       |      (۴ بایت)       |
+-------+-------+---------------------+---------------------+

این قابلیت دو نیاز اساسی را تامین می‌سازد:

  1. محاسبه زمان رفت‌وبرگشت (RTTM): امکان برآورد دقیق تاخیر شبکه برای هر قطعه داده بدون ابهام ناشی از ارسال مجدد بسته‌ها.
  2. محافظت در برابر شماره‌های دنباله تکراری (PAWS): ممانعت از اختلال بسته‌های قدیمی سرگردان در جریان تبادل داده‌های پرسرعت از طریق بررسی صعودی بودن برچسب‌های زمانی.

آسیب‌پذیری از آنجا ناشی می‌شود که هسته سیستم‌عامل مقدار TSval را با بسامدی یکنواخت و متصل به زمان‌سنج سخت‌افزاری افزایش می‌دهد. در لینوکس و سیستم‌های BSD، مقدار TSval غالباً با آهنگ ۱۰۰، ۲۵۰ یا ۱۰۰۰ هرتز و بر اساس شمارنده jiffies هسته بالا می‌رود.

استخراج شناسه از طریق رگرسیون خطی

پژوهشگران در همایش امنیتی IEEE S&P نشان دادند که یک سرور راه دور قادر است به صورت کاملاً غیرفعال انحراف فیزیکی دستگاه را از بسته‌های معمولی TCP استخراج نماید:

  1. نمونه‌برداری از بسته‌ها: سرور دو پارامتر را برای هر بسته دریافتی $i$ ثبت می‌کند:
    • $t_i$: زمان دقیق ورود بسته بر مبنای ساعت استاندارد NTP سرور.
    • $T_i$: عدد صحیح TSval استخراج‌شده از سربرگ TCP ارسالی کاربر.
  2. محاسبه اختلاف زمانی: سرور تفاوت بین زمان رسیدن و برچسب زمانی مقیاس‌شده را به دست می‌آورد: $$x_i = t_i - \frac{T_i}{R}$$ که در آن $R$ نرخ اسمی زمان‌سنج هسته فرستنده است (مثلاً ۱۰۰۰ هرتز).
  3. محاسبه شیب خط: با استفاده از رگرسیون خطی بر روی مجموعه‌ای از ۲۰ تا ۱۰۰ بسته، شیب تغییرات به دست می‌آید: $$\text{شیب} = \frac{\Delta x}{\Delta t}$$

این شیب انحراف ساعت فیزیکی بلور دستگاه را از نوسانات لحظه‌ای شبکه جدا می‌سازد. از آنجا که این ویژگی از مشخصات فیزیکی کوارتز مادربرد نشأت می‌گیرد، برای ماه‌ها پایدار می‌ماند و تنها تغییرات ناچیزی بر اثر دمای محیط نشان می‌دهد.

اختلاف زمانی (میلی‌ثانیه)
  ^
  |                                   *   *  <- نقاط اندازه‌گیری واقعی
  |                           *   *
  |                   *   *
  |           *   *
  |   *   *
  +---------------------------------------------> زمان رسیدن بسته (ثانیه)
      شیب رگرسیون خطی = انحراف دقیق ساعت سخت‌افزاری (~۱۲.۸ ppm)

حتی با جابجایی میان اینترنت ثابت و شبکه همراه 5G، تغییر آدرس فیزیکی کارت شبکه یا اجرای مرورگر در حالت ناشناس، بسته‌های خروجی همان شیب انحراف ساعت را به سرورهای مقصد گزارش می‌دهند.

ناتوانی پیشکارها و افزونه‌های مرورگر در مهار تهدید

بسیاری از کاربران برای محافظت از داده‌های خود به افزونه‌ها یا پیشکارهای SOCKS5 تکیه می‌کنند. اما این ابزارها تنها در لایه ۷ (لایه کاربرد) فعال هستند:

  • پیشکارهای لایه کاربرد: افزونه صرفاً جریان درخواست‌های وب را به سوکت دیگری منتقل می‌نماید؛ در حالی که ارتباط نخستین میان سیستم‌عامل و درگاه شبکه محلی همچنان توسط پشته TCP هسته رایانه شما شکل می‌گیرد.
  • نشت بسته‌های پس‌زمینه: سرویس‌های پس‌زمینه سیستم‌عامل (بررسی بروزرسانی‌ها، پیام‌رسان‌ها، تبادل داده‌های تشخیصی، هماهنگ‌سازی زمان) خارج از مرورگر عمل می‌کنند. یک سامانه نظارتی در مسیر ارتباطی، شیب انحراف ساعت بسته‌های پس‌زمینه را با داده‌های مرورگر مقایسه کرده و هر دو را به یک دستگاه منتسب می‌سازد.
  • انتقال شفاف سربرگ‌ها: بسیاری از نقاط ترانزیت، گزینه‌های TCP را بدون دگرگونی منتقل می‌کنند و سرور مقصد می‌تواند مقدار اولیه TSval را بازخوانی نماید.

بی‌اثر کردن ردگیری با RiceGuard در لایه ۳

مهار ردگیری از طریق انحراف ساعت مستلزم تفکیک حوزه زمانی فیزیکی دستگاه از اتصالات شبکه‌ای است که در بستر اینترنت عمومی مبادله می‌شوند.

سامانه VPNRice با تکیه بر معماری لایه ۳ در بستر RiceGuard این تفکیک را محقق می‌سازد:

[تجهیزات سخت‌افزاری کاربر / مادربرد]
  │
  ├─ نوسان‌ساز فیزیکی (انحراف مختص دستگاه: ۱۸.۲ ppm)
  │
  ▼
[کارت شبکه مجازی RiceGuard (TUN)]
  │
  ├─ کپسوله‌سازی کامل بسته‌های IP لایه ۳
  ├─ تونل رمزنگاری‌شده ChaCha20-Poly1305 (RFC 8439)
  │
  ▼
[جریان رمزنگاری‌شده WireGuard UDP در اینترنت]
  │ (سربرگ‌های TCP دستگاه کاربر هرگز در شبکه عمومی ارسال نمی‌شوند)
  │
  ▼
[سرورهای خروجی در مراکز داده VPNRice]
  │
  ├─ پایان دادن به تونل کاربر
  ├─ برقراری اتصال TCP تازه از هسته سرور مرکز داده
  │     └── سرور مقصد تنها زمان‌بندی سرورهای مرکز داده را مشاهده می‌کند
  │
  ▼
[سرورهای وب مقصد و سامانه‌های تحلیل داده]
  1. جداسازی لایه انتقال: معماری RiceGuard ترافیک را در سطح بسته‌های IP رهگیری کرده و آن را در قالب بسته‌های UDP پروتکل WireGuard بسته‌بندی می‌کند. در صورت فعال بودن VPN، سیستم‌عامل شما هرگز اتصال TCP مستقیمی با سرور مقصد برقرار نمی‌سازد. مقصد نهایی دست‌دهی TCP را صرفاً با سرور خروجی VPNRice تکمیل می‌نماید.
  2. جایگزینی داده‌های فیزیکی: مقادیر TSval ثبت‌شده توسط ردیاب‌ها ناشی از نوسان‌سازهای سازمانی سرورهای VPNRice است و پیوند فیزیکی با مادربرد شما به طور کامل قطع می‌گردد.
  3. توزیع پویای ترافیک: با توزیع بسته‌ها میان مراکز داده پراکنده، شیب‌های رگرسیون دریافتی پیوستگی خود را از دست داده و امکان ردیابی مداوم دستگاه سلب می‌شود.

تنظیمات کاربردی برای ارتقای امنیت سیستم‌عامل

علاوه بر تونل‌سازی در لایه ۳، مدیران سیستم می‌توانند گزینه‌های لایه انتقال را تنظیم کنند:

  • بررسی برچسب زمانی TCP در لینوکس: با دستور زیر وضعیت را مشاهده نمایید:
    sysctl net.ipv4.tcp_timestamps
    
    جهت غیرفعال‌سازی ارسال این مقادیر در شبکه‌های محلی:
    sudo sysctl -w net.ipv4.tcp_timestamps=0
    
    برای پایدار ماندن این تغییر پس از راه‌اندازی مجدد، عبارت net.ipv4.tcp_timestamps = 0 را در فایل /etc/sysctl.d/99-network-privacy.conf وارد کنید.
  • تصادفی‌سازی برچسب‌ها در هسته‌های نوین: در نسخه‌های لینوکس ۴.۱۰ به بعد، جابجایی تصادفی مقدار اولیه فعال است. با این حال در اتصال‌های طولانی‌مدت، همچنان امکان محاسبه شیب وجود دارد. بهره‌گیری از VPN لایه ۳ مطمئن‌ترین راهکار است.
  • فعال نگه داشتن دائمی VPN در لایه ۳: کلید قطع اضطراری (Kill Switch) را در برنامه VPNRice فعال نگه دارید تا هیچ بسته محافظت‌نشده‌ای در زمان تغییر اتصال به شبکه فرستاده نشود.