VPN اندروید در برابر مجوزهای برنامه: هشدار به چه معناست
پنجرهٔ رضایت VPN در اندروید یک جایگاه در سطح بسته میدهد، نه دسترسی به ایمیل، عکسها یا مخاطبان شما. مرز واقعی دقیقاً همینجاست.
دو پنجره در اندروید همیشه با هم اشتباه گرفته میشوند: اعلان رضایت VPN و درخواستهای مجوزی که یک برنامه برای دادههای شما مطرح میکند. اولی یک جایگاه شبکهای تحویل میدهد، همان نقطهای که بستهها را میتوان خواند و بازنویسی کرد. دومی محتوای ذخیرهشدهای را تحویل میدهد که اندروید برنامهبهبرنامه از آن محافظت میکند. اگر این دو را یکی بگیرید، یا آنچه یک تونل میتواند ببیند را بزرگ میکنید، یا بهشدت آنچه را یک برنامهٔ مصمم در گام بعد میخواهد را دستکم میگیرید.
پنجرهٔ رضایت در واقع چه چیزی تحویل میدهد
برنامهای که VpnService را پیاده میکند و BIND_VPN_SERVICE را اعلام میکند، از سیستم میخواهد که VPN دستگاه شود. پس از تأیید، چارچوب یک رابط tun میسازد و توصیفگر فایل آن را در اختیار برنامه میگذارد. هر کاری که برنامه پس از آن انجام میدهد از همان توصیفگر میگذرد: بستههای IP را از آن بیرون میخواند، تصمیم میگیرد با آنها چه کند و بستهها را دوباره به درون مینویسد.
دامنهٔ آن رابط صریح است. مسیرها تعیین میکنند کدام مقصدها گرفته شوند، و addAllowedApplication یا addDisallowedApplication تعیین میکند کدام برنامهها به آن داده بدهند. یک VPN برای هر برنامه که دو برنامه را فهرست میکند، بقیهٔ دستگاه را نمیبیند.
این یک اجازه در سطح بسته است، نه در سطح داده. سرویس بایتهایی را میبیند که برنامه به پشتهٔ شبکه تحویل میدهد، با نشانی یک مقصد. به حافظهٔ خصوصی برنامهٔ فرستنده، به فایلهای پایگاه دادهاش یا به حافظهٔ رمزگشاییشدهاش دسترسی پیدا نمیکند. فایلهایی که برنامه در سندباکس خودش ذخیره کرده، دقیقاً به همان سختی پیشین قابل خواندن میمانند.
کجا نمای بستهها متوقف میشود
TLS همچنان کار خود را درون تونل انجام میدهد، چون دستدهی میان برنامه و سرور رخ میدهد، نه میان برنامه و VPN. VPN متن رمزشدهای را هدایت میکند که بدون کلیدهای نشست نمیتواند آن را رمزگشایی کند. به همین دلیل یک تونل بهتنهایی محتوای یک صفحهٔ HTTPS یا یک نشست ایمیل محافظتشده را آشکار نمیکند.
فرادادههای پیرامون متن رمزشده داستان دیگریاند و اینجا است که بیشتر ادعاهای مطمئن فرو میریزند. IP مقصد، درگاه، اندازهٔ بستهها و زمانبندی همه دیده میشوند، بهعلاوهٔ نام سرور در TLS ClientHello که معمولاً حتی زیر TLS 1.3 بهصورت آشکار فرستاده میشود. Encrypted Client Hello این را تغییر میدهد، اما فراگیر نیست. DNS ساده نیز وقتی پرسوجوها رمزگذارینشده بیرون میروند، نامها را به همان آسانی لو میدهد.
پروتکلهای قدیمیتر یا بدتنظیم بیشتر تحویل میدهند. HTTP ساده، IMAP بدون TLS و شماری از پروتکلهای بازی و اینترنت اشیا بار مفید خود را برای هر چیزی که توصیفگر tun را دارد آشکار میکنند.
مجوزهایی که هرگز با آن نمیآیند
تأیید یک VPN، مخاطبان، پیامکها، عکسها یا کتابخانهٔ رسانه را تأیید نمیکند. اینها مجوزهای جداگانهٔ زمان اجرا هستند، هر کدام با پنجرهٔ خودش و مسیر لغو خودش در صفحهٔ تنظیمات برنامه. مشتری VPN که سابقهٔ تماس شما را میخواهد باید مانند هر برنامهٔ دیگری آن را بخواهد، و شما میتوانید رد کنید و تونل را نگه دارید.
نصب گواهی همان چیزی است که باید مراقبش بود، چون بخشی از راهاندازی VPN به نظر میرسد و نیست. نصب یک CA کاربر در مخزن اعتبارنامه تغییر میدهد که اندروید کدام گواهیها را بپذیرد، و از اندروید 7.0 به بعد برنامهای که API 24 یا بالاتر را هدف میگیرد، CAهای افزودهشده توسط کاربر را نادیده میگیرد مگر اینکه پیکربندی امنیت شبکهاش با یک لنگر اعتماد کاربر آن را بپذیرد. مشتریای که بر CA اصرار دارد شاید رهگیری سازمانی مشروع انجام میدهد، یا شاید چیزی میخواهد که پنجرهٔ VPN هرگز به آن اشاره نکرد.
دسترسی قابلیتهای ویژه حتی دورتر است. سرویسی که قابلیتهای ویژه در آن فعال است میتواند محتوای صفحهٔ برنامههای دیگر را بخواند، چیزی که هیچ جایگاه در سطح بسته آن را فراهم نمیکند.
فیلتر محلی یا دروازهٔ راه دور
همان API دو محصول را پوشش میدهد که سطوح اعتماد متفاوتی سزاوارند. دیوار آتش یا مسدودکنندهٔ تبلیغات روی دستگاه، توصیفگر tun را میگیرد و به ترافیک بهصورت محلی پاسخ میدهد و هرگز آن را به سروری که خودش اداره میکند نمیفرستد. یک تونل واقعی همان بستهها را به دروازهای جای دیگر هدایت میکند، و آن بهرهبردار همان فرادادهها را از سر دیگر میبیند و همزمان تعیین میکند چه چیزی بازگردد.
راهی عملی برای تفکیک آن دو این است که نشانی عمومی خود را با VPN روشن و خاموش بررسی کنید و ببینید آیا اعلان یک نقطهٔ پایانی راه دور را نام میبرد. اگر نشانی هرگز تغییر نکند، ترافیک احتمالاً روی خود دستگاه میچرخد.
هر دو حالت همچنان یک جایگاه بسته است. تفاوت در این است که چه کس دیگری بر خروجی ایستاده است.
آنچه تأیید کردهاید را بازرسی کنید
تنظیمات را باز کنید، سپس شبکه و اینترنت، سپس VPN، و خود مدخل را بخوانید نه نماد نوار وضعیت را. VPN همیشهفعال و مسدودکردن اتصالها بدون VPN تنظیماتی در سطح دستگاهاند که رابط را زنده نگه میدارند و نشتیها را قطع میکنند؛ چیزی را گسترده نمیکنند. از همان صفحه میتوانید پروفایل را فراموش کنید و اجازه را لغو کنید.
سپس دیگر مجوزها را مرور کنید. اطلاعات برنامه نشان میدهد مشتری کدام مجوزهای زمان اجرا را دارد، و تنظیمات امنیت نشان میدهد آیا همزمان گواهی کاربری نصب شده است. هر یک از این دو را میتوان مستقلاً حذف کرد.
پرسشی که ارزش پاسخ دادن دارد باریک است: کدام بستهها به این سرویس وارد میشوند، کجا میروند و پیادهسازی چه چیزی نگه میدارد. بقیهٔ چیزها در این پنجره نویز است. مرجع VpnService فهرست معتبری از آن چیزی است که این رابط آشکار میکند.