← Медиа

Механизм маскирования перс. данных можно протестировать на svaya.bm-it.ru. Зачем проверять то же самое у других поставщиков ИИ-платформ?

У нас есть продукт - ИИ-платформа Svaya, у неё есть витрина на svaya.bm-it.ru, там можно вживую прогнать 30 прикладных задач с LLM для разных отраслей, в том числе загрузить свой документ и посмотреть, что ИИ-платформа с ним сделает (про устройство самой платформы мы писали отдельно).

Одна из важных функций платформы - маскирование персональных данных, чтобы никакие чувствительные данные не покинули периметр организации. Платформа находит в загруженном документе персональные данные и закрывает их метками прежде, чем текст уйдёт в языковую модель.

В сентябре я сел и проверил его сам, по пунктам, как проверял бы чужое. Витрина наша, код наш, и я был уверен, что знаю про неё всё.

Документ сразу очерчивает свои границы. «Документ действует в отношении Сервиса по адресу svaya.bm-it.ru. Обработка на сайте bm-it.ru описана отдельной политикой оператора». Это бумага про конкретный сайт, про тот самый, куда посетитель тащит свой файл.

Дальше в нём есть пункт, ради которого всё и затевалось. Он описывает, что происходит с содержимым загруженных файлов, и заканчивается вот чем. «(фамилии и имена, телефоны, адреса, реквизиты). Сервис ищет их автоматически и найденное маскирует перед передачей внешнему провайдеру языковой модели».

Фамилии и имена, телефоны, адреса, реквизиты. Написано без «например», без «в том числе», без «и тому подобное». Четыре названные вещи.

Я собрал короткую справку о контрагенте. Обычный документ строк на десять, какой лежит в любой папке. Организация, ИНН, КПП, расчётный счёт, банк, БИК, корреспондентский счёт. Адрес регистрации и фактический адрес. Руководитель с паспортом и СНИЛС, контактное лицо с телефоном. Кадастровый номер участка, номер судебного дела. Все значения выдуманные, и это отдельный сюжет, к которому я вернусь ближе к концу.

Механизм нашёл почту, телефон, паспорт, ИНН и два имени.

Открытыми остались десять записей. Расчётный счёт, корреспондентский счёт, БИК, КПП. Оба адреса. СНИЛС. Кадастровый номер. Номер судебного дела. И один телефон, записанный подряд, без плюса и скобок.

Картинка, которая получилась, стоит того, чтобы её описать. В тексте, который уходит в языковую модель, имя руководителя закрыто служебной меткой, а через строку от него полностью открытым текстом стоит адрес регистрации с индексом, улицей, домом, литерой и номером помещения. Рядом, тоже открытый, двадцатизначный расчётный счёт.

Я подумал, что дело в документе. Может, справка вышла слишком плотной, и механизм захлебнулся. Собрал второй файл, в котором нет вообще ничего, кроме адресов. Восемь штук, в разных стилях. С индексом и без индекса. С корпусом, с литерой, с квартирой, с офисом, с владением. Столица, областной город, посёлок. Чтобы понимать, что механизм вообще запустился, дописал туда один телефон и одно имя.

Телефон и имя нашлись. Адресов нашлось ноль из восьми.

Тут нужно остановиться, потому что у этого наблюдения есть готовый ответ, и я сам бы его дал на месте поставщика. В той же политике, следующим же предложением после обещания, стоит оговорка. «Поиск может пропустить непривычную запись, полноту оператор не гарантирует». В другом пункте она усилена. «Оператор уменьшает вероятность пропуска правилом „сомневаешься, маскируй“, но не сводит ее к нулю».

Оговорка правильная, и такая должна быть у всех. Проблема в том, что она закрывает другое.

Восемь обыкновенных адресов подряд непривычной записью не назовёшь. Один пропуск можно объяснить редким написанием. Восемь из восьми объясняются иначе, и объяснение лежит внутри.

Внутри у витрины шесть правил. Почта, телефон, паспорт, ИНН, номер карты и ФИО. Правила адреса среди них нет. Дело тут не в том, что оно работает плохо или ошибается на сложных случаях. Его нет как строки в механизме. Расчётный счёт из двадцати цифр и девятизначный БИК не берёт ни одно из шести. Ни СНИЛС, ни кадастрового номера механизм тоже не ищет, хотя эти две вещи политика и не обещала, и упрёка по ним я не делаю.

И сразу скажу, чего в этой картине нет: номер банковской карты механизм ловит, правило под него есть. ИНН ловит, это тоже реквизит. Речь про три названные записи. Расчётный счёт, корреспондентский счёт и БИК.

С именами история тоньше и интереснее. Правило ФИО существует и работает, но узнаёт человека по форме записи. Внутри у него список окончаний отчества, и все они именительного падежа. Поэтому преамбула договора, в которой стоит «Кузнецовой Марины Петровны, действующей на основании устава», механизму не видна, потому что фамилия тут в родительном. Та же самая преамбула, переписанная в именительном, находится мгновенно.

Именительный падеж тоже не спасает. «главный инженер Селиверстов» без имени и отчества проходит мимо. «Кузнецова Марина» без отчества проходит мимо. «Марина Кузнецова» в обратном порядке проходит мимо. Запись заглавными буквами проходит мимо. «Алиев Рустам Мамед оглы» проходит мимо. Двойная фамилия маскируется наполовину, и наружу уходит первая её часть открытым текстом, а вторая под меткой.

Всё это я снял с кода, и у читателя законно возникает вопрос, не расходится ли код с тем, что стоит на живом сайте. Отвечаю. Не расходится, и проверено это не рассуждением. В середине сентября мы грузили на витрину настоящие рабочие файлы, и прогоны шли живые, на самом сайте. Служебная записка отдела кадров содержала восемнадцать различных написаний персональных данных, среди них три адреса, каждый с номером квартиры, СНИЛС и банковский счёт. Живой прогон закрыл десять. Разница восемь. Категории «адрес» не было ни в одном прогоне, ни в одном файле, ни разу.

Теперь главное, ради чего я это пишу.

Между оговоркой «Поиск может пропустить непривычную запись» и положением дел, в котором правила под категорию нет вовсе, лежит пропасть, и первое второго не закрывает. Эти две вещи разные по природе. Первое говорит о качестве работы механизма и признаёт, что качество не стопроцентное. Второе говорит, что механизм эту работу не выполняет совсем, и никакое качество тут ни при чём. Документ, который отвечает за площадку, обещает искать то, чего механизм площадки искать не умеет.

Я нашёл это у себя. Но метод, которым я это нашёл, работает у кого угодно, и стоит он пятнадцать минут.

Вот он целиком.

Вы приходите на демонстрацию ИИ-платформы. Вам показывают красивый ответ на красивом документе, который подобрал поставщик. Вы достаёте свой файл.

Файл должен быть коротким. Не потому, что так вежливее, а по вполне механической причине. На экране разбора почти у всех показывается только начало обработанного текста. У нас это первые девятьсот знаков, и обрезка происходит молча, без многоточия и без подписи, текст просто обрывается посреди слова. Положите интересное на второй странице, и вы его не увидите. У другого поставщика число будет другое, а устройство то же.

Файл должен быть выдуманным, сочинённым от начала до конца. Обезличенного рабочего документа для этого мало. Чужие персональные данные нельзя нести на чужую площадку без правового основания, и лежит эта обязанность на том, кто грузит. У нас это написано прямым текстом в разделе запретов. «Технически Сервис от нарушения этих запретов не защищает и не обещает защищать». У любого нормального поставщика написано то же самое. Выдуманная справка снимает вопрос целиком.

Что в него положить. Три или четыре обыкновенных адреса разного вида, именно несколько. Одного мало, потому что на единственный пропуск поставщику есть чем ответить, а на четыре обыкновенных подряд ответить нечем. Расчётный счёт, подписанный словами «расчётный счёт», чтобы его не приняли за номер документа. И одно заведомо находимое значение, почту или телефон в привычной записи. Последнее нужно затем, чтобы отличить «механизм ничего не нашёл» от «механизм не запустился».

О чём просить. Сначала попросите показать сам маскированный текст, тот, который уходит в языковую модель. Это лучшая из возможных проверок, потому что тут смотрят глазами. Ваши адреса либо закрыты метками, либо стоят в нём открытыми.

Если маскированного текста не показывают, просите перечень найденных категорий с числом замен. И вот здесь есть тонкость, на которой легко обмануться. Не читайте названия категорий. Считайте числа и сверяйте с тем, что вы положили сами. Названия категорий обманывают. У нас в одном прогоне номер водительского удостоверения оказался закрыт меткой паспорта. Формально значение замаскировано, а категория названа не тем словом. Поэтому вопрос звучит так. Я положил четыре адреса, сколько замен вы насчитали.

Списка самих найденных значений просить не нужно. Его не отдают намеренно, и это правильное поведение, и уклонением тут не пахнет.

А если не показывают ни того, ни другого, то опыт всё равно состоялся, и вы получили ответ. Невозможность увидеть, что именно механизм нашёл в вашем файле, и есть ответ на вопрос, можно ли проверить обещание. Проверять на слово нечего.

Три вещи, о которых стоит спросить там же, пока вы уже сидите на демонстрации. Куда уходит текст и в какой стране стоит языковая модель. Сколько хранится загруженный файл и то, что из него получилось, и можно ли удалить раньше срока. Кто из сотрудников поставщика видит загруженное. У нас ответы опубликованы. Провайдеры размещены в России, хранение тридцать суток с кнопкой немедленного удаления, доступ у минимального круга эксплуатации с записью в журнал. Я привожу их как образец того, что ответы на такие вопросы вообще должны существовать в письменном виде, и рекламы тут нет.

И последнее, про границы самой этой проверки. Она отвечает на вопрос «умеет ли», и не отвечает на вопрос «насколько хорошо умеет». Результат любого такого пятнадцатиминутного опыта оценочный, у нас это прямо написано на сайте, и принимать по нему что-либо с правовыми или денежными последствиями нельзя. Но «умеет ли» это ровно тот вопрос, на который вам на демонстрации не ответят по своей воле.

Остается объяснить, зачем я рассказываю про дыру в нашем продукте, которую обнаружили и сейчас закрываем? Потому что покупатель ИИ-платформы сегодня оценивает подрядчика по ответу языковой модели. Ответ красивый, ответ произвел впечатление, ответ можно показать начальству. А служебный слой, тот, где ваши данные превращаются во что-то, что уходит наружу, никто не смотрит. Его не показывают, и спросить про него в голову не приходит.

Я рекомендую просить показать - можно принести короткую выдуманную справку с четырьмя адресами и посмотреть, что из нее уйдет наружу незамаскированным.