За 30 секунд сканування Orb виконує чотири складні операції: знімає райдужку в інфрачервоному діапазоні, перетворює її на числовий код, перевіряє унікальність серед мільйонів записів — і робить все це так, щоб ніхто, включно з самою компанією, не міг встановити вашу особу.
Коротко: ця стаття — інженерний розбір того, що відбувається всередині Orb і за його межами.
⚡ Коротко
- ✅ Orb використовує інфрачервоні та мультиспектральні камери — колір очей і освітлення не впливають на якість сканування
- ✅ IrisCode генерується локально на чіпі пристрою — зображення не передається в мережу
- ✅ Zero-knowledge proof дозволяє підтвердити унікальність без розкриття даних
- ✅ З травня 2024 року IrisCode зберігається у форматі SMPC — розподілено між кількома незалежними сторонами
- ⚠️ Алгоритм генерації IrisCode частково пропрієтарний — що це означає на практиці
📚 Зміст статті
🎯 Як камера Orb знімає райдужку: мультиспектр і інфрачервоний захват
Orb використовує інфрачервоні камери разом із видимим світлом і мультиспектральними сенсорами. Це дозволяє отримувати чіткі знімки незалежно від кольору очей і зовнішнього освітлення, а також виявляти спроби підробки на рівні фізики матеріалів.
Людське oko у видимому діапазоні виглядає по-різному залежно від кольору райдужки, освітлення і навіть стану зіниці. Для стабільного розпізнавання це проблема: алгоритм повинен щоразу отримувати порівнянні дані.
Orb вирішує це через ближній інфрачервоний діапазон (NIR — near-infrared, 700–900 нм). У цьому спектрі меланін — пігмент, що визначає колір очей — майже не поглинає світло. Тому темно-карі і блакитні очі в NIR-діапазоні виглядають однаково: видно саму текстуру — структуру крипт, борозенок і волокон райдужки. Макіяж, кольорові лінзи і умови зовнішнього освітлення на результат не впливають.
Технічний стек камерної системи Orb Gen2 (жовтень 2024):
| Компонент | Функція |
|---|
| Інфрачервоні камери (NIR, 700–900 нм) | Основне сканування текстури райдужки незалежно від пігментації |
| Камери видимого світла | Верифікація живості, захист від 2D-спуфінгу |
| Мультиспектральні сенсори | Виявлення підробок: роздруківки, екрани, силіконові лінзи, штучні очі |
| NVIDIA Jetson (5x AI-продуктивність vs Gen1) | Локальна обробка зображень і генерація IrisCode на пристрої |
| Знімна SD-карта | Публічний аудит програмного коду |
Як саме NIR виявляє підробки
Живе oko і підробка по-різному відображають і поглинають інфрачервоне світло. Orb аналізує кілька фізичних сигнатур одночасно:
- Рефлекс рогівки — жива рогівка дає специфічний відблиск у NIR. Роздруківка або екран дають плоский або інший характер відблиску.
- Глибина поля — стереокамери або структуроване світло визначають тривимірність об'єкта. Плоска поверхня (фото, екран) відхиляється.
- Судинний патерн — у NIR-діапазоні видно судини навколо ока. Силіконова лінза або штучне oko не мають кровотоку.
- Мікрорухи — живе oko постійно здійснює мікросакади. Статичне зображення їх не має.
Жодна з цих перевірок не є публічно задокументованою у повному обсязі — це свідоме інженерне рішення: чим менше атакуючий знає про конкретні методи виявлення, тим складніше їх обійти.
Порівняння з іншими системами
| Система | Метод захвату | Liveness detection | Де обробляється |
|---|
| World Orb Gen2 | NIR + мультиспектр | Апаратний (фізика матеріалів) | Локально (NVIDIA Jetson) |
| Face ID (Apple) | Структуроване світло (30 000 точок) | 3D-карта обличчя + інфрачервоне фото | Локально (Secure Enclave) |
| Touch ID (Apple) | Ємнісний сканер (радіочастоти) | Провідність шкіри | Локально (Secure Enclave) |
| Класичні IRIS-сканери (аеропорти) | NIR (фіксована установка) | Мінімальний або відсутній | Централізовано (хмара або сервер) |
Ключова відмінність Orb від класичних IRIS-сканерів — апаратний liveness detection і повністю локальна обробка. Аеропортні системи, як правило, надсилають зображення на центральний сервер, де відбувається порівняння.
Джерела: World Blog: New Orb announcement · World Engineering: Iris Recognition
🎯 Як із зображення генерується IrisCode
IrisCode — це числове представлення текстури райдужки. Процес складається з чотирьох кроків: сегментація, нормалізація, витягання ознак і перетворення на двійковий вектор. Відновити зображення з коду неможливо — це математично доведений факт.
World відкрила вихідний код своєї системи розпізнавання райдужки — IRIS (Iris Recognition Inference System). Це дозволяє незалежно верифікувати логіку конвеєра. Ось як він працює:
Сегментація — нейронна мережа класифікує кожен піксель зображення: райдужка, зіниця, склера, вія, відблиск. Визначається геометрія ока і дилатація зіниці. Якщо видимої текстури недостатньо (заплющені повіки, рух), кадр відхиляється і робиться новий знімок.
Нормалізація (перетворення Дофмана) — зображення райдужки перетворюється з декартових координат у полярні. Це «розгортає» кільцеподібну форму райдужки у прямокутний патч стандартного розміру (наприклад, 64×512 пікселів). Завдяки цьому код залишається стабільним при різному розмірі зіниці — якщо зіниця розширилась або звузилась, текстура залишається на тому ж місці у нормалізованому просторі.
Витягання ознак — фільтри Ґабора — до нормалізованого патча застосовуються фільтри Ґабора: математичні функції, що виявляють локальні текстурні патерни на різних частотах і орієнтаціях. Аналогія: якщо дивитись на тканину через різні лупи під різними кутами — кожна дає свій «підпис» структури. Результат — набір числових значень, що описують унікальну структуру райдужки в кількох масштабах одночасно.
Бінаризація — числові значення порогуються: якщо значення вище порогу — 1, нижче — 0. Результат — двійковий вектор фіксованої довжини. Це і є IrisCode. Класичний розмір за алгоритмом Дофмана — 2048 біт (256 байт). Конкретний розмір у системі World не розкривається.
Що таке фільтри Ґабора — простіше
Уявіть, що ви аналізуєте узор на тканині. Ви дивитесь на нього крізь серію лінз: одна виявляє горизонтальні лінії, інша — вертикальні, третя — діагональні, і так далі на різних масштабах. Кожна лінза дає відповідь: «тут є такий патерн» або «тут немає». Зібравши відповіді від усіх лінз у всіх позиціях, ви отримуєте унікальний «відбиток» тканини. Саме це роблять фільтри Ґабора з текстурою райдужки.
Порівняння з класичним IrisScan (алгоритм Дофмана)
| Параметр | Класичний IrisScan (Daugman, 1993) | IRIS (World, 2023) |
|---|
| Метод витягання ознак | Фільтри Ґабора (класичні) | Нейронна мережа (деталі пропрієтарні) |
| Розмір IrisCode | 2048 біт | Не розкривається |
| Відкритість алгоритму | Академічно опублікований | Конвеєр відкритий, модель — ні |
| Метрика порівняння | Відстань Гемінга | Відстань Гемінга |
| Точність (FAR) | ~1 на 10⁶ | Не опублікована |
⚠️ Важливо про прозорість: конвеєр IRIS відкритий і доступний на GitHub — сегментація, нормалізація і порівняння верифікуються незалежно. Однак модель витягання ознак (крок 3) залишається пропрієтарною: сторонні дослідники бачать архітектуру, але не точні ваги нейронної мережі. Це означає, що незалежно підтвердити — чи не витягує модель приховану інформацію про особу (вік, стать, стан здоров'я) — наразі неможливо. Це не доведений ризик, але відкрите питання до прозорості системи.
Порівняння двох IrisCode відбувається через відстань Гемінга. Два скани одного ока дають відстань ~0.1 (10% бітів відрізняється). Два коди різних людей — ~0.45 (45%). Широкий проміжок між цими значеннями забезпечує надійну класифікацію навіть при варіаціях якості знімка.
Джерела: World Engineering: Open Sourcing IRIS · World Engineering: Iris Recognition Inference System
🎯 Чому обробка відбувається локально на пристрої
Весь конвеєр — від захоплення зображення до генерації IrisCode — виконується на чіпі Orb без з'єднання з хмарою. Зображення ніколи не передається зовні. На телефон користувача надходить лише підписаний результат верифікації.
Локальна обробка — це не маркетингова фраза, а архітектурне рішення з конкретними наслідками для моделі загроз:
| Якщо б обробка була в хмарі | Локальна обробка на Orb |
|---|
| Зображення передається по мережі — ризик перехоплення | Зображення не покидає пристрій |
| Компанія бачить вихідні знімки | Компанія отримує лише IrisCode |
| Потрібне постійне з'єднання з інтернетом | Верифікація можлива офлайн |
| Один сервер = одна точка відмови і атаки | Компрометація мережі не дає доступу до зображень |
Як саме Jetson обробляє дані
NVIDIA Jetson — це система на кристалі (SoC), оптимізована для запуску нейронних мереж на периферійних пристроях (edge AI). У Orb Gen2 він виконує весь конвеєр IRIS: сегментацію, нормалізацію і витягання ознак — без передачі даних назовні.
Пам'ять пристрою використовується за сесійною моделлю: дані існують лише під час активної верифікації. Після завершення сесії — незалежно від результату — всі зображення і проміжні дані перезаписуються і видаляються. Зберігається лише підписаний криптографічний результат для передачі у World App.
Що саме видаляється і коли
| Тип даних | Коли видаляється | Виняток |
|---|
| NIR-зображення райдужки | Одразу після генерації IrisCode | Якщо користувач явно дозволив зберігання для покращення моделі |
| Проміжні дані сегментації | Одразу після нормалізації | Немає |
| Нормалізований патч | Одразу після генерації IrisCode | Немає |
| IrisCode | Передається зашифровано у World App, потім видаляється з Orb | Немає |
Аудит SD-карти — як це працює на практиці
Orb Gen2 має знімну SD-карту з програмним кодом пристрою. Будь-який технічний аудитор може:
- Вийняти SD-карту з Orb.
- Обчислити хеш (SHA-256) вмісту карти.
- Порівняти з хешем опублікованого коду на GitHub.
- Якщо хеші збігаються — код на пристрої ідентичний опублікованому.
Це так звана верифікація відтворюваної збірки (reproducible build). Вона не гарантує, що код бездоганний — але гарантує, що компанія не встановила на пристрій щось інше, ніж показує публічно.
Порівняння з хмарними системами конкурентів
| Система | Де обробляється біометрія | Чи бачить компанія зображення |
|---|
| World Orb | Локально на пристрої | Ні (за замовчуванням) |
| Clearview AI | Хмара | Так |
| Aadhaar (Індія) | Централізовані сервери UIDAI | Так |
| Face ID (Apple) | Локально (Secure Enclave) | Ні |
| Більшість airport e-gates | Хмара або локальний сервер | Залежить від оператора |
Джерело: World Blog: New Orb announcement · World: Privacy & Transparency Update
🎯 Що таке zero-knowledge proof і як він застосовується тут
Zero-knowledge proof (ZKP) — це криптографічний метод, що дозволяє довести факт, не розкриваючи даних. У World ID він дає змогу підтвердити «цей IrisCode є у списку верифікованих» — не повідомляючи, чий саме це код і хто стоїть за акаунтом.
Щоб зрозуміти ZKP, не потрібна математика. Достатньо аналогії:
Ви хочете довести касиру, що вам є 18 років. Звичайний спосіб — показати паспорт із датою народження, адресою і фото. ZKP-спосіб — показати лише математичний доказ того факту, що «дата народження раніше за 18 років до сьогодні», без розкриття самої дати і будь-яких інших даних. Касир отримує відповідь «так/ні» — і нічого більше.
У World ID ZKP працює так:
- Платформа надсилає запит на верифікацію з контекстом: ID застосунку і параметри сесії.
- World App генерує ZK-доказ: математично доводить, що IrisCode користувача входить до глобального набору верифікованих кодів — не розкриваючи, який саме це код.
- Платформа перевіряє доказ. Перевірка займає мілісекунди і не потребує доступу до бази IrisCode.
- Результат: платформа знає лише «це реальна унікальна людина». Більше нічого.
Що саме приховує ZKP — і від кого
| Хто запитує верифікацію | Що отримує | Що НЕ отримує |
|---|
| Платформа (Reddit, Discord тощо) | «Це унікальна верифікована людина» | IrisCode, ім'я, email, акаунти на інших платформах |
| Tools for Humanity | Факт верифікації (публічний ключ у блокчейні) | На якій платформі і коли використовувався World ID |
| Інші користувачі | Нічого | Будь-які дані |
Захист від кореляції між платформами
Класична проблема цифрової ідентичності: якщо два сервіси використовують один і той самий ідентифікатор користувача, вони можуть об'єднати свої дані і побудувати профіль. Саме так працює, наприклад, Google-логін — обидва сайти знають, що за ними стоїть один акаунт.
World ID вирішує це через nullifier — унікальний одноразовий ідентифікатор, що генерується окремо для кожної платформи. Nullifier для Reddit і nullifier для Discord математично не пов'язані між собою. Навіть якщо обидві платформи об'єднають свої логи — вони не зможуть встановити, що за двома різними nullifier стоїть одна людина.
Що таке протокол Semaphore
World використовує відкритий ZKP-протокол Semaphore, розроблений спільнотою Ethereum. Він реалізує анонімне сигналювання: учасник групи може довести своє членство у групі і підписати повідомлення — без розкриття того, хто саме є цим учасником.
У контексті World ID «група» — це множина всіх верифікованих IrisCode. «Сигнал» — це підтвердження унікальності для конкретної платформи. Semaphore пройшов кілька незалежних криптографічних аудитів; його код повністю відкритий.
⚠️ Важливе обмеження: ZKP захищає передачу даних між користувачем і платформою. Але він не захищає від сценарію, коли сама платформа зберігає поведінкові дані користувача після верифікації. World ID підтверджує «хто ти є» — але не контролює, що платформа робить з тим, «що ти робиш» після входу.
Джерела: World Whitepaper · World: Privacy Update 2024 · Semaphore Protocol
🎯 Як працює глобальна дедуплікація без зберігання біометрії
Дедуплікація — це перевірка того, що новий IrisCode не збігається з жодним із вже зареєстрованих. Вона відбувається через SMPC: кожна сторона обчислює свій фрагмент порівняння, не бачачи повного коду. Результат — «збіг є» або «збігу немає» — без доступу до самих даних.
Це найскладніша інженерна задача у всій системі. Сформулюємо її точно: потрібно перевірити, чи відстань Гемінга між новим IrisCode і кожним із 26+ мільйонів зареєстрованих кодів перевищує порогове значення — і зробити це так, щоб жодна сторона не мала доступу до повних кодів у відкритому вигляді.
Чому не можна просто порівняти хеші
Типовий підхід до захисту паролів — хешування: зберігати не сам пароль, а його хеш. При вході — хешувати введений пароль і порівнювати хеші. Для IrisCode це не працює: два скани одного ока дають різні IrisCode через варіації освітлення, положення, дилатацію зіниці. Хеші будуть різними — навіть якщо за ними стоїть одна людина.
Тому система порівнює не точні збіги, а відстань Гемінга — частку бітів, що відрізняються. Це вимагає доступу до вмісту кодів, а не лише до їхніх хешів. Звідси і виникає задача: як обчислити відстань Гемінга між зашифрованими даними, не розшифровуючи їх?
Схема дедуплікації через SMPC
- Новий IrisCode надходить із Orb після локальної генерації.
- Розбиття на фрагменти — код розбивається на математичні частини (shares) і розподіляється між незалежними SMPC-вузлами.
- Паралельне обчислення — кожен вузол обчислює свою частину відстані Гемінга між новим кодом і фрагментами зареєстрованих кодів на своєму вузлі.
- Агрегація результатів — вузли обмінюються проміжними результатами (не даними) і разом отримують фінальну відстань.
- Рішення — якщо відстань нижча за поріг (~0.38) — збіг, реєстрація відхиляється. Якщо вища — World ID активується.
⚠️ Масштаб задачі: порівняння одного коду з 26 мільйонами записів у зашифрованому вигляді — обчислювально дуже дорога операція. Архітектура SMPC World вимагає 1152 ядер, 3.6 ТБ оперативної пам'яті і 5 Гбіт/с пропускної здатності. Це не хмарний мікросервіс — це спеціалізована обчислювальна інфраструктура.
Що відбувається при помилковому збігу (false positive)
Теоретично можлива ситуація, коли два різних ока дають IrisCode з відстанню Гемінга нижче порогу — хибне спрацювання. World не публікує показник FAR (False Accept Rate) своєї системи. Для класичного алгоритму Дофмана FAR становить ~1 на 10⁶. Якщо припустити схожий показник для World при 26 млн користувачів — статистично можливо кілька десятків хибних відмов. Компанія не коментувала цей сценарій публічно.
Джерела: World: SMPC announcement · World Engineering: Iris Recognition
🎯 Що таке SMPC і нова архітектура зберігання (2024)
SMPC (Secure Multi-Party Computation) — криптографічний метод, за якого секрет розбивається на фрагменти між незалежними сторонами. Жодна з них не має повного коду. Обчислення відбуваються на фрагментах — результат отримується без відновлення оригінального секрету.
До травня 2024 року IrisCode зберігалися на серверах AWS у зашифрованому вигляді — централізовано. Це створювало класичний ризик єдиної точки відмови: злом одного сховища або компрометація ключів шифрування = доступ до всіх кодів.
Як працює SMPC — від принципу до практики
Аналогія для розуміння:
Уявіть, що таємне число 42 потрібно зберегти так, щоб ніхто один не знав його. Ви розбиваєте його на три фрагменти: Аліса отримує +17, Боб — +38, Кароль — −13. Кожен фрагмент сам по собі — випадкове число без сенсу. Але якщо скласти всі три: 17 + 38 + (−13) = 42. Щоб виконати обчислення над числом 42 (наприклад, перевірити, чи воно менше 50), Аліса, Боб і Кароль обмінюються проміжними результатами своїх обчислень — і разом отримують відповідь, не розкриваючи своїх фрагментів.
Саме так World зберігає IrisCode у SMPC:
- Розподіл секрету (Secret Sharing) — IrisCode математично розбивається на n фрагментів за схемою Шаміра або XOR-розподілом. Будь-який окремий фрагмент є криптографічно випадковим числом без зв'язку з оригіналом.
- Розподіл між незалежними вузлами — кожен фрагмент зберігається на окремому SMPC-вузлі під управлінням різних організацій. World не розкриває, скільки вузлів і хто ними керує.
- Порогова схема — для відновлення секрету потрібна мінімальна кількість вузлів (наприклад, 3 з 5). Якщо зламано менше порогу — секрет не відновлюється математично.
- Обчислення без розкриття — дедуплікація відбувається через протокол MPC: вузли обмінюються зашифрованими проміжними результатами і разом обчислюють відстань Гемінга без відновлення повних кодів.
| Параметр | До травня 2024 (AWS) | Після травня 2024 (SMPC) | Після січня 2025 |
|---|
| Де зберігається IrisCode | Централізовані сервери (зашифровано) | Фрагменти на незалежних вузлах | Повний код — лише на пристрої користувача |
| Ризик злому одного вузла | Компрометація всіх даних | Фрагмент без цінності | Фрагмент без цінності |
| Чи може компанія відновити код | Так (має ключі) | Лише при змові всіх вузлів | Ні |
| Стійкість до квантових атак | Залежить від алгоритму шифрування | Теоретично абсолютна (information-theoretic security) | Теоретично абсолютна |
| Відкритий код і аудит | ❌ | ✅ GitHub + аудит Least Authority | ✅ |
Що означає «information-theoretic security»
Звичайне шифрування (AES, RSA) є обчислювально стійким: зламати його можна теоретично, але це займе мільярди років навіть на найпотужнішому комп'ютері. Квантові комп'ютери загрожують саме цьому класу захисту.
SMPC із правильним secret sharing забезпечує інформаційно-теоретичну безпеку: окремий фрагмент математично не містить жодної інформації про секрет — незалежно від обчислювальної потужності атакуючого. Навіть нескінченно потужний комп'ютер не може відновити секрет з одного фрагмента. Це якісно інший рівень гарантій.
⚠️ Відкрите питання: World не розкриває, які саме організації керують SMPC-вузлами, скільки їх і яка мінімальна кількість для відновлення секрету. Це означає, що незалежно оцінити реальний рівень децентралізації неможливо. Архітектура правильна — але рівень довіри до неї частково залежить від того, наскільки насправді незалежні вузли між собою.
Джерела: World: SMPC announcement, травень 2024 · Biometric Update: SMPC open source
❓ Часті питання (FAQ)
Чи відкритий код системи розпізнавання райдужки?
Частково. Конвеєр IRIS (сегментація, нормалізація, порівняння) опублікований на GitHub. Модель витягання ознак — пропрієтарна. Це означає, що загальна логіка верифікується незалежно, але точна математика перетворення зображення на код залишається закритою.
Що змінилося після переходу на SMPC у травні 2024?
Всі IrisCode, зібрані до цього, були видалені. Нові коди більше не зберігаються централізовано — вони розбиваються на фрагменти між незалежними сторонами. У січні 2025 навіть ці фрагменти були видалені з централізованих систем: повні коди тепер є лише на пристроях користувачів.
Чи можна відновити зображення ока з IrisCode?
Ні. IrisCode — це результат односторонньої математичної трансформації. Навіть маючи повний код, відтворити вихідне зображення неможливо — це криптографічно доведений факт.
Що таке відстань Гемінга і навіщо вона тут?
Відстань Гемінга — частка бітів, що відрізняються між двома двійковими векторами. Два скани одного ока дають відстань ~0.1 (схожі коди). Коди різних людей — ~0.45 (суттєво різні). Цей проміжок дозволяє надійно відрізнити «той самий IrisCode» від «схожого, але чужого».
Що таке протокол Semaphore?
Semaphore — це відкритий ZKP-протокол, розроблений спільнотою Ethereum. Він дозволяє доводити членство у групі (наприклад, «мій IrisCode є у списку верифікованих») без розкриття ідентифікатора. World використовує Semaphore як основу для анонімної верифікації World ID.
✅ Висновки
Технічна архітектура World Orb вирішує нетривіальну задачу: довести унікальність людини серед десятків мільйонів записів — не зберігаючи біометрію у читабельному вигляді і не розкриваючи особу.
Ключові інженерні рішення, які це забезпечують:
- Локальна обробка — зображення не покидає Orb
- IrisCode — незворотне числове представлення текстури, без якого відновити зображення неможливо
- ZKP (Semaphore) — верифікація унікальності без передачі IrisCode платформам
- SMPC — дедуплікація на зашифрованих фрагментах без центральної точки зберігання
Відкрите питання, яке залишається: модель витягання ознак є пропрієтарною. Поки вона закрита, повна незалежна верифікація системи неможлива. Це не означає, що система ненадійна — але означає, що довіра до неї частково ґрунтується на репутації компанії, а не лише на математиці.