javascript

Как я изобрел новый способ аутентификации и связь через свет: Ligthprint

  • суббота, 1 ноября 2025 г. в 00:00:06
https://habr.com/ru/articles/961802/

...или как я сделал протокол связи через свет с точностью 99.2 %

Когда мы говорим “оплата телефоном”, в голове сразу всплывает NFC или QR.

А что, если экран и фонарик сами могут обмениваться данными?

Без радиоволн, без Wi-Fi, без сети вообще.

Так появился Lightprint — протокол, который передаёт данные светом, а камера принимает их и распознаёт как уникальный “отпечаток”.

И всё это работает прямо в браузере, на чистом JavaScript.

⚙️ Как это работает

Lightprint — это Visible Data Communication (VDC):

  • экран или фонарик излучает модулированный свет,

  • камера его ловит и анализирует временной профиль яркости.

🔹 1. Режим Flicker (экран) — передача данных

Экран мигает цветами по схеме CS4 (Color Sequence 4).

Каждый кадр кодирует 2 бита информации — в виде цвета:

🔴 Красный 01

🟢 Зелёный 10

🔵 Синий 11

⚫ Чёрный 00

Передаётся пакет формата:

HEADER + LENGTH + DATA + CRC8

🔹 2. Режим Stable (фонарик) — аутентификация по свету

Здесь ничего не мигает.

Фонарик светит стабильным белым светом, а LightprintEngine анализирует микропульсации (PWM) — невидимые глазу колебания, которые уникальны для каждого устройства.

Камера фиксирует эти микровибрации яркости и строит временной профиль.

Если профиль совпадает с эталонным шаблоном (через корреляцию Пирсона и DTW) —система считает, что источник света подлинный.

Так телефон можно аутентифицировать по фонарику — это как “световой отпечаток пальца”.


⚙️ Внутренности движка

LightprintEngine делает всё это на лету:

извлекает яркость (ROI);

фильтрует шум (EMA, high/low-pass);

считает стандартное отклонение, корреляцию;

вычисляет DTW для устойчивости к растяжению сигнала;

проверяет стабильность (SATURATION_THRESHOLD, UNDERSATURATION_THRESHOLD);

автоматически определяет режим Flicker или Stable.

🔬 Почему это работает

Каждый источник света (экран, фонарик, лампа)

имеет свой цифровой почерк — из-за особенностей PWM-драйвера, частоты и шума.

Камера улавливает этот “почерк” — временную сигнатуру света.

Алгоритм сравнивает сигнал с базой и определяет:

“Это тот же источник или подделка"

📊 Результаты тестов

Точность распознавания 99.2 %

Время отклика ~50 мс

FPS приёма 30 fps

Скорость передачи (экран) ~30 бит/с

Скорость аутентификации (фонарик) < 0.5 с

Интернет: ❌ Не требуется

Bluetooth / NFC: ❌ Не используется

За развитием протокола можно следить в telegram канале