Към блога
Блог22 април 2026 г.

EU Age Verification App - Какво е, как паботи и защо го хакнаха за 2 минути

EU Age Verification App - Какво е, как паботи и защо го хакнаха за 2 минути
Има теми, по които този блог се е наложил да пази мълчание - политически решения, регулаторни избори, дебати за ролята на институциите. Не защото нямаме мнение, а защото смятаме, че техническото пространство е по-полезно, когато е свободно от политическо оцветяване. Историята с EU Age Verification App обаче е по-трудна за пренебрегване. Не заради политиката около нея - а заради конкретна техническа уязвимост, която е публично документирана, технически измерима и директно свързана с киберсигурността на европейски граждани. Засяга разработчици, платформи и потребители на практическо ниво. Затова я покриваме - и ще се стараем да го правим така, както правим всичко останало тук: технически, фактически и без да сочим с пръст към никоя политическа посока. На 15 април 2026 г. Европейската комисия представи готово приложение за проверка на възрастта онлайн - open-source, безплатно, изградено на Zero-Knowledge Proof криптография. Часове по-късно британският изследовател Paul Moore го заобиколи напълно. Времето: под две минути.

Какво е EU Age Verification App?

EU Age Verification App е официалното приложение на Европейската комисия за анонимна проверка на възраст онлайн. То позволява на потребителите да докажат, че са навършили 18 години пред цифрови платформи, без да споделят лично идентифицираща информация като трите си имена, точна дата на раждане или адрес. Приложението е разработено в отговор на изискванията на Digital Services Act (DSA) - европейския регламент за дигиталните услуги - и по-конкретно на Член 28, задължаващ платформите да защитават непълнолетните от вредно онлайн съдържание. То е open-source, безплатно за използване от всички държави членки и частни платформи и е технически съвместимо с бъдещия EU Digital Identity Wallet (EUDI Wallet), чието пълно внедряване се очаква до края на 2026 г. Ключовата техническа основа е Zero-Knowledge Proof (ZKP) криптографията - метод, позволяващ да се докаже дадено твърдение (например "над 18 съм") без да се разкрива самата информация, стояща зад него.

Защо изобщо е необходимо такова приложение

Проверката на възраст онлайн е един от по-трудните проблеми на дигиталния свят - от техническа, правна и етична гледна точка едновременно. Класическите подходи имат сериозни слабости. Самодекларирането ("Потвърди, че си над 18 г.") е очевидно безполезно - всеки може да кликне "Да". Проверката с кредитна карта изключва огромна група потребители и е лесна за заобикаляне. AI-базираното оценяване на възраст по лице е инвазивно, неточно и поражда сериозни GDPR въпроси. Проверката с правителствена лична карта е точна, но изисква платформата да получи и съхрани чувствителни лични данни - директен вектор за мащабни течове. Именно тук влиза ZKP идеята. Потребителят сканира паспорт или лична карта локално на устройството. Приложението генерира криптографски proof, потвърждаващ само едно: притежателят е над 18 години. Нито едно лично данни не напуска устройството. Платформата получава само QR код или автоматична проверка - "Да, над 18 е." Без данни, без профилиране, без централен регистър. На хартия - елегантно решение на труден проблем. На практика - приложението не доставя обещаното.

Техническата уязвимост - какво точно се случи

Уязвимостта в EU Age Verification App се дължи на фундаментален архитектурен проблем: криптираният PIN не е криптографски обвързан с хранилището на верификационните данни. Те са две независими структури, което позволява изтриване и замяна на PIN без достъп до самите верификационни данни. Moore публикува в X подробна видео демонстрация. Механизмът е прост до болезненост. При настройката приложението иска от потребителя да създаде 6-цифрен PIN. Приложението криптира PIN-а и го записва локално в конфигурационен файл, наречен shared_prefs - конкретно в eudi-wallet.xml на Android устройството. Проблемът: криптираният PIN не е свързан с identity vault-а - хранилището с реалните верификационни данни. Ако изтриеш PinEnc и PinIV записите и рестартираш приложението, то приема, че няма настроен PIN, и позволява задаване на нов.
Xml
<!-- eudi-wallet.xml (опростено) -->
<map>
  <string name="PinEnc">криптиран_пин_тук</string>
  <string name="PinIV">initialization_vector_тук</string>
  <!-- Верификационните данни са в отделна структура -->
  <!-- и НЕ са криптографски обвързани с PIN-а -->
</map>
Стъпките на атаката: изтриваш двата реда, рестартираш приложението, задаваш нов PIN по твой избор. Имаш пълен достъп до верификационните данни - включително чужди, ако имаш физически достъп до устройството. Moore коментира директно: "Сериозно, фон дер Лайен - този продукт ще бъде катализатор за огромен пробив в някакъв момент. Въпрос е само на време."

Втората уязвимост - по-дълбоката архитектурна

Втората и по-фундаментална уязвимост в EU Age Verification App е, че issuer компонентът на системата няма механизъм да потвърди, че паспортната верификация действително е извършена на устройството на потребителя. Системата приема на доверие, че устройството е направило необходимата проверка на документа - без криптографски proof за това. Тази уязвимост е открита в отделен анализ от март 2026 г. и е значително по-трудна за коригиране с patch, отколкото PIN bypass-ът. Поправянето й би изисквало изпращане на пълните криптографски данни от паспорта към сървър - което директно подкопава основната privacy гаранция на приложението. Намираш се в класическата privacy-security дилема: за да провериш автентичността на верификацията, трябва да централизираш данни. За да запазиш поверителността, трябва да се довериш на клиента. И двете позиции имат сериозни слабости.

Пачът - напредък или security theater?

Комисията реагира бързо. Актуализиран код беше пуснат скоро след публикацията на Moore. Той провери пача и публикува нов детайлен анализ - с по-нюансирана, но все така критична оценка. Напредъкът е реален. Паспортните снимки вече се изтриват правилно след верификацията. PIN имплементацията е подобрена: новата версия използва PBKDF2-SHA256 с 210 000 итерации и криптографски защитен псевдослучаен генератор за salt. Проблемът: PBKDF2-SHA256 с 210 000 итерации е алгоритъм, описван от Moore като "остарял" - препоръчван само там, където се изисква FIPS съответствие, което тук не е приложимо. Броят итерации е OWASP минимумът за PBKDF2-SHA512, не SHA256. За паролите базовият минимум е 600 000 итерации - а PIN кодовете имат само 1 милион пермутации, което ги прави значително по-уязвими на brute force при слаба хеш функция. Присъдата на Moore: "Пълен security theater. Нищо от това не отменя фундаменталния ми аргумент. Това не е поправимо с код - то е фундаментално лошо замислено." Miłosz Gaczkowski, специалист по мобилна сигурност, публикува балансиран контра-анализ в LinkedIn. Уязвимостите са реални, пише той, но паниката е непропорционална на реалния риск. Началният bypass изисква физически достъп до устройството - не е дистанционна атака. В реалните сценарии на употреба рискът е по-ограничен от публичния наратив. Двата прочита не се изключват взаимно. Уязвимостта е реална. Рискът зависи от конкретния use case. Проблемът е, че за приложение, представено като готово за внедряване в целия ЕС, дори ограниченият риск е твърде висок - особено когато Secure Enclave е наличен на всеки съвременен смартфон.

По-широките критики - преди и след хакването

Хакването беше водещата новина, но критиките са по-широки и датират отпреди пускането на приложението. 371 изследователи по сигурност и поверителност от 29 страни подписаха открито писмо до Европейската комисия в март 2026 г., предупреждавайки, че законите за проверка на възраст намаляват поверителността и увеличават рисковете от масово наблюдение. Отделно, разследвания на Cybernews разкриха, че подобно законодателство в различни държави вече тласка милиони потребители към несигурни безплатни VPN услуги - нов вектор на заплаха, по-голям от оригиналния проблем. Electronic Frontier Foundation (EFF) предупреждава, че системи от този тип ерозират анонимността онлайн. European Digital Rights (EDRi) описва проверката на възраст като "подход с кувалда" - дори инструментите, претендиращи за анонимност, могат да се провалят чрез metadata течове или грешки в имплементацията. Разработчици в X поставиха и по-прозаични въпроси: защо потребителите имат ограничен брой верификации? Защо proof of age има срок на годност? Веднъж над 18 - винаги над 18. Никой не подмладява.

Официалният отговор на Европейската комисия

Позицията на Европейската комисия е, че хакнатата версия е демо, не финален продукт, и че кодът ще продължи да се обновява преди официалното пускане. Говорителят Thomas Regnier обясни пред Politico: "Когато казваме, че е финална версия, това все още е демо версия... кодът постоянно ще се обновява и подобрява." Главният говорител Paula Pinho добави: "Да, то е готово. Може да добавим: и винаги може да се подобрява." Официалната позиция е разбираема от комуникационна гледна точка. Технически обаче създава напрежение: приложението е достъпно в GitHub, изтегляно и тествано от реални потребители в пилотни държави, докато се описва като "демо". Разграничението между "демо за разработчици" и "демо за крайни потребители" очевидно не е комуникирано достатъчно ясно при пускането.

Как работи EUDI Wallet и защо е различен

EU Digital Identity Wallet (EUDI Wallet) е планираната дългосрочна инфраструктура за дигитална идентичност в ЕС, значително по-зряла от текущото age verification app. Всяка държава членка е задължена да предостави поне един EUDI Wallet на гражданите си до края на 2026 г. Разликата спрямо текущото приложение е архитектурна: EUDI Wallet поддържа selective disclosure - потребителят може да сподели само конкретен атрибут ("над 18 съм") без да разкрива документа, датата на раждане или каквото и да е друго. Верификацията се осъществява чрез verifiable credentials - стандартизиран формат за цифрови удостоверения, несвързан с конкретна платформа. Текущото age verification app е изрично описано от Комисията като "временен мост" до EUDI Wallet - решение за периода, в който Wallet-ите все още се изграждат в отделните държави членки. Седем страни са в пилотна фаза: Франция, Дания, Гърция, Италия, Испания, Кипър и Ирландия.

Какво означава това за платформи и разработчици

Ако управляваш платформа, изискваща DSA compliance, или разработваш системи за verifiable credentials, ключовото разграничение е следното: DSA не те задължава да използваш точно EU Age Verification App. То е описано като "compliance example" - референтно решение, не единствено задължително. Задължен си да отговаряш на стандарта, който то представлява, но не задължително чрез него.
Подход
Статус
Плюсове
Минуси
EU Age Verification AppДемо / пилотБезплатно, open-source, официален стандартИзвестни уязвимости, не за production
Сертифициран трети страни доставчикProduction-readyЗрял, тестван, поддържанЦена, vendor зависимост
EUDI Wallet интеграцияДо края на 2026 г.Архитектурно зряло, selective disclosureВсе още в разработка
Собствена ZKP имплементацияСамо при специфични нуждиПълен контролСкъпо, сложно, рисково

Регулаторна амбиция срещу техническа зрялост

Историята с EU Age Verification App е симптом на по-широко противоречие - такова, което ще виждаме все по-често в следващите години. Регулаторните срокове се движат в различно времево измерение от техническата зрялост. DSA изисква robust age verification - сега. Архитектурно зрялото решение (EUDI Wallet с ZKP и Secure Enclave) не е готово в достатъчен мащаб. Пространството между "регулаторното трябва" и "техническото може" се запълва с временни решения, обявявани за финални. Именно това напрежение обяснява и реакцията на 371 изследователи. Те не са подписали открито писмо защото са против защитата на децата онлайн. Подписали са го, защото знаят, че лошо имплементираната защита може да бъде по-опасна от никаква - чрез фалшиво чувство за сигурност, нови surveillance вектори и инфраструктура, чийто потенциал за злоупотреба надвишава декларираните цели. Технически коректното решение - децентрализирана верификация с ZKP, Secure Enclave и verifiable credentials - съществува. EUDI Wallet се движи в тази посока. Проблемът е единствено в синхронизацията между регулаторния часовник и реалната инженерна готовност.
Лично мнение на автора“Сигурността не е това, което обявяваш, а това, което остава, когато някой се опита да я разбие.”Като човек, който следи киберсигурността отблизо, смятам, че проблемът не е в намеренията за защита на децата онлайн, а в прекалената увереност, с която приложението беше обявено за напълно сигурно, въпреки че реално може да бъде заобиколено.
Станчев

Често задавани въпроси


EU Age Verification App е технически интересен проект с правилна цел и проблемна имплементация. ZKP криптографията като основа е правилният архитектурен избор. Локалното съхранение на PIN без Secure Enclave е фундаментална грешка, която не трябва да е достигала до публично пускане. EUDI Wallet се движи в правилната посока и ще предложи значително по-зряло решение. Дотогава, за разработчици и платформи с DSA задължения, по-надеждният път е сертифициран трети страни доставчик, не EU app в текущата му форма.

За автора
Сподели статията:
В тази статия