Блог

Чому вхід — це номер, а не електронна пошта

Обліковий запис, який вам не потрібен, — це 128-бітне число, видане системою, яка структурно не може відкрити ваш тунель. Ось чому обидва ці факти мають бути правдою одночасно.

Опубліковано 5 вересня 2026 р. · Оновлено 16 жовтня 2026 р.

Більшість застосунків спершу просять електронну адресу, а вже потім — те, за чим ви прийшли. ForestVPN не просить ні електронної пошти, ні пароля — відкрийте застосунок і натисніть «Підключитися». Якщо ви хочете використовувати одну підписку на кількох пристроях, натомість ви отримуєте 32-символьний номер, показаний один раз, — і це вся система входу.

Це не стилістичний вибір. Це те, що залишається після зіткнення двох вимог, і цікаво саме те, яка з них перемагає.

Де зазвичай живе вхід

Кнопка «Увійти через Apple» або «Увійти через Google» — це переадресація на чужий домен: appleid.apple.com, accounts.google.com, орендар *.auth0.com. На телефоні з відкритим шляхом до цих хостів ця переадресація — непомітна внутрішня механіка.

Ми не можемо вважати, що цей шлях відкритий, адже частина завдання цього продукту — продовжувати працювати в мережах, які дозволяють пристрою звертатися лише до короткого фіксованого списку хостів. Уся модель безпеки нашого власного релейного проксі — це саме цей список: три імені, api., sess. та catalog.fvpn.net, що звіряються точно. Розширити його, додавши постачальника ідентичності за CDN, означає впустити постачальника, чий той самий CDN обслуговує величезну частину інтернету, — а це перетворює вузький релей на універсальний. А на iOS вебпредставлення для входу стороннього постачальника ідентичності працює в окремому процесі — налаштування проксі на рівні застосунку не має способу дістатися туди й спрямувати трафік через щось із того, чим керуємо ми. Переадресація ламається саме там, де вона найпотрібніша.

Тож номер — це не приязний варіант, який ми обрали замість звичного. Це варіант, який усе ще працює за обмеження, що виявилося важливішим.

Друга половина: ніхто, у кого є номер, не бачить вашого трафіку

Скажімо про номер акаунта інакше: це облікові дані, видані службою, яка працює на Cloudflare Workers, — виконання в межах запиту, без довготривалого процесу, без «сирого» сокета, зі стелею пам'яті на ізолят у межах кількох десятків мегабайт. Це не обмеження, яке ми обходимо. Саме завдяки цьому цій службі взагалі можна довірити зберігання вашого права на сервіс:

no raw UDP or TCP sockets
no long-lived process — execution is request-scoped
128 MB per isolate
a few MB, compressed, is the entire deployable

Машина, побудована так, не може завершувати стан повного UDP-тунелю — і це не «поки що», а структурно. Тому сервери, які справді переносять ваш трафік, — це окремий парк серверів на окремій інфраструктурі, і обидві сторони зустрічаються рівно в одному місці: у квитку. Ваш пристрій запитує його у Workers і отримує значення, яке підписане, але непрочитане, — підпис створюється над числом, якого сам підписувач ніколи не бачить, тож квиток, який ви пред'явите пізніше, неможливо простежити до запиту, що його породив. Він доводить, який план за нього заплатив. Він не каже, який це пристрій, і не каже, хто ви.

Саме це робить номер акаунта нудним настільки, наскільки потрібно. У цій системі немає стовпця, який би зберігав номер акаунта поруч із вихідним сервером або адресою, з якої ви підключалися, — і це не «ми вирішили не дивитися»: такого стовпця просто не існує, а перевірка збірки провалюється, якщо його додати. Є один вужчий, свідомий виняток, і стосується він пристрою, а не номера: поки квиток активний, один рядок зіставляє хеш ключа вашого пристрою з хешем сеансу, до якого він належить, — саме це дозволяє списувати використаний квиток з вашого обсягу даних і відключати відкликаний пристрій просто посеред сеансу. Цей рядок видаляється приблизно за добу після завершення сеансу, а якщо сеанс завершується швидко — то й раніше, і в ньому немає поля для вихідного сервера чи адреси: лише пристрій і сеанс, більше нічого. Якщо ви прив'язали пристрій до акаунта, саме на цьому досяжність і закінчується; сам номер акаунта ніколи не потрапляє в рядок сеансу. Служба, яка справді бачить ваш трафік, від самого початку не дізнається номера.

У що це обходиться — сказано прямо, а не приховано

Усе це має свою ціну. Номер показується один раз і ніде не зберігається на нашому боці; якщо його втратити, а жоден пристрій його вже не має, — відновити нічим, бо немає нічого іншого, що ідентифікує саме вас, аби за цим відновлювати. Прив'язку можна скасувати: пристрій може вийти з акаунта сам, а будь-який інший пристрій на акаунті може його видалити (на акаунті до десяти пристроїв; пристрій, що приєднався за останні 7 днів, не може видаляти старіші, а роутер не може видаляти інші пристрої). Скасувати не можна втрату номера: скидання пароля не існує, бо для нього потрібен спосіб довести, що запит надійшов від справжнього власника акаунта, а весь задум полягав саме в тому, щоб ніколи не збирати нічого, що могло б це довести.

Це реальний компроміс, а не примітка дрібним шрифтом, і ми воліємо, щоб ви знали про це заздалегідь, а не дізналися в момент, коли це матиме значення.

Усі дописи

Українська
Запитайте нас про будь-що