шифрование ссылок

Deep-link’и, которые
не палят домен подписки.

Небольшая npm-библиотека для провайдеров. Превращает URL подписки в incy://crypt1/<payload> — INCY открывается у пользователя и добавляет подписку без копи-пасты. Ничего не уходит на сервер: AES-256-GCM прямо в браузере или в node-процессе.

Живой энкодер— попробуйте без npm install
encoder.js · AES-256-GCM · in-browser

npm-пакет для провайдеров

Встройте шифрование в telegram-бот, сайт или CLI. Без зависимостей помимо node.js stdlib — один импорт, один вызов.

install.sh
# Install
$ npm install @incy/link-encoder

import { encryptLink } from '@incy/link-encoder'

const link = encryptLink(
  'https://incsub.example.org/vTyt0xVE-aAjHv8T',
  { name: 'MyProvider VPN' }
)
// → incy://crypt1/AAECAwQFBgcICQoL…
console.log(link)

Threat model

Что защищает — а что нет. Честно.

Закрывает
  • модерацию telegram-каналов и автоматические сканеры РКН
  • паттерн-матч регулярками по дампам чатов
  • скриншоты с case-sensitive URL подписок
  • supply-chain сканеры, выискивающие VPN-паттерны
Не закрывает
  • целеустремлённого reverse engineer’а с Frida
  • ключ AES материализуется в памяти в момент encrypt/decrypt
  • это обфускация для UX, не криптография для секретности
  • тот же ключ уже лежит внутри каждого установленного клиента INCY

Если ключ когда-нибудь публично сольют — выйдет релиз с crypt2/. Существующие crypt1/-ссылки в чатах продолжат работать вечно: клиенты никогда не удаляют старые схемы из decode-таблицы.