![](https://habrastorage.org/webt/sl/ia/en/sliaen2kcqon9j3i5stvyb-v4tk.jpeg)
Привет, Хабр! Это моя первая статья здесь, и для начала я хотел бы познакомиться.
Я возглавляю Data Science подразделение компании Platforma. Моя команда занимается разработкой моделей машинного обучения и глубокой аналитикой. Мы создаем продукты на основе продвинутых методов машинного обучения и искусственного интеллекта, являющиеся внутренним «движком» цифровых сервисов. На выходе в Platforma мы создаем инструменты для бизнеса на основе больших данных: от сервисов персонализации и геопространственного анализа до дистанционной оценки имущества. Но сегодня поговорим о задаче, которую бизнесу еще только предстоит решить.
В цифровом мире не получится конкурировать с крупными компаниями, опираясь только на собственные данные. Даже если вы Сбер или Яндекс. Это приведет и потере доли рынка. Чтобы видеть максимально полную картину, нужно комбинировать разные источники, в том числе и базы данных партнеров. Но прямо обменяться данными не получится — российские и международные законы жестко регулируют этот процесс. Раскрытие данных пользователей, все дела. Именно здесь на сцену выходят алгоритмы конфиденциальных вычислений и MPC — технология, которая позволяет делать сводную аналитику легально, без риска раскрытия и «слива» данных.
Проблема миллионеров: обмен данными, не раскрывая их
Возьмем сразу живой пример. Познакомьтесь с только что придуманными мной Компанией А, продающей футбольные мячи, и Компанией Б, которая производит бутсы. Они вроде как партнеры, хотят свести базы данных и вместе провести глубокую маркетинговую аналитику целевой аудитории.
Но сделать это прямо они не могут. Как минимум из-за миллионных штрафов за раскрытие персональных данных клиентов. А передача их третьему лицу — это именно оно. Еще компании банально не хотят раскрывать все свои цифры — всегда есть риск, что нечестный партнер решит слить их конкурентам.
![](https://habrastorage.org/webt/zy/as/cy/zyascyy0uhxnk1wg4vzcok6mtf8.jpeg)
Тут и хочется, и колется. Риски есть, но при этом профит хороший — анализ данных двух компаний даст намного больше, чем каждая получит инсайтов по отдельности.
Что эти две компании хотят от системы вычислений:
- Получить истинные данные для аналитики.
- Не раскрыть больше собственной информации, чем нужно.
- Быть уверенным в том, что контрагент не помешает анализу, даже если захочет.
В криптографии эта задача получила название «проблема миллионеров». Американский исследователь теории информатики Эндрю Яо еще в 1982 году пытался определить, как нескольким миллионерам сравнить свои состояния, не раскрывая реальные цифры. В математику вдаваться не будем, но если интересно, вот оригинал статьи.
Я же постараюсь простыми словами объяснить, как работает протокол конфиденциального вычисления или MPC (multi-party computation). Вместо обмена реальной информацией между серверами ведется обмен «секретами» — исходные данные в них обработаны математическими функциями.
На основе «секретов» на каждом сервере строится две аналитических модели. А в процессе обучения моделей их веса корректируются, при этом градиенты передаются между серверами.
![](https://habrastorage.org/webt/uy/st/og/uystogeivskuqd8lnrmsxhjiiom.jpeg)
Самый простой вариант: представить число как разность двух целых чисел. На нем и построим пример.
Продолжим с нашими знакомыми компаниями А и Б. Допустим, они хотят построить модель аналитики, основанную на возрасте клиентов. Есть пользователь, ему 20 лет. Это можно представить как разность двух «секретов» 42-22. Число 42 отправляют на сервер компании Б, а на сервере А остается число 22. Зная оба секрета, можно без проблем восстановить исходные данные. Если известен один — то никак не получится.
На сервере Б, допустим, хранится ответ, который также делится на два «секрета». Один присылается на сервер А, второй остается на машине Б. Затем на каждом сервере проводится обучение модели.
Сами по себе модели бесполезны, потому что они обучались на «секретах». Но если взять две модели и просуммировать их веса, то в результате получается рабочая модель, которая учитывает данные обоих серверов. При этом информация осталась конфиденциальной. Профит!
Даже если данные перехватят «атакой посредника», то злоумышленник получит только бессмысленную мешанину, из которой реальные данные восстановить не получится — вторая часть секрета ведь никуда не отправлялась.
При желании можно дополнительно хешировать данные для передачи или разбивать секреты между тремя или четырьмя машинами. Но зачем? Уже базовая механика MPC гарантирует абсолютную защиту данных при передаче и работе с ними.
Зачем секреты: плюсы и минусы подхода
Главный плюс — пользы от совместной работы двух команд гораздо больше, чем при работе отдельно. Синергия, все дела. Это классическая схема win-win, где все участники получают только плюшки:
- Во-первых, никакого риска утечки данных. Ведь передаются они уже в обработанном и измененном виде. Даже если вдруг уйдут на сторону, с ними ничего не смогут сделать, без второй части секрета это бесполезный набор чисел и знаков.
- Во-вторых, можно заранее договориться, какой инфой обмениваться и что анализировать. Никаких доступов к базам данных чужим людям открывать не нужно.
- В-третьих, гарантия, что готовая модель будет истинной. Ведь если коллега по ту сторону решит схитрить и предоставить некорректные данные, то он сам получит неработающую готовую модель. А это бессмысленно.
В результате обе компании получат аналогичные готовые модели. А раз обучение обеих частей модели велось на секретах, то и данные при этом не пострадают.
Минусы тоже есть. Сейчас у MPC ограниченный стек технологий, которые можно использовать для построения моделей на «секретах». Чтобы обеспечить нормальную скорость построения модели, нужно использовать полносвязные или сверточные нейронные сети. Сами понимаете, насколько они требовательны к мощности «железа». Можно использовать логистическую регрессию, но для обработки big data также нужны очень мощные серверы и много времени.
![](https://habrastorage.org/webt/7b/7o/pn/7b7opngwwrqivyx2b5kwzj9oalk.jpeg)
Также с MPC пока нельзя использовать один из самых популярных алгоритмов анализа данных — градиентный бустинг. Ведь в MPC самая долгая операция — это сравнение двух чисел, из-за чего бустинг не дает практически никакого прироста в скорости, а даже наоборот.
Самая большая проблема — именно скорость. Даже однослойные-двухслойные нейронные сети обучаются в 100-1000 раз медленнее, чем их аналоги на CPU. Это уже критично. Сложность в том, что построение моделей — интерактивный процесс. Часто приходится менять данные или исходные параметры анализа. А если модель обучается неделю, то даже простейший анализ может растянуться на месяцы.
Есть варианты снизить степень защиты данных ради скорости. К примеру, при максимальной степени защиты секреты формируются числами 2^64. Если уменьшить до 2^32, то процесс обучения ускорится, но защищенность будет чуть ниже. В некоторых случаях есть возможность варьировать количество знаков в цифрах, влияя на скорость.
Технология еще молодая, ее только начинают тестировать на практике. Я лично вижу ее очень перспективной, но при этом над ней нужно еще долго работать, чтобы она нашла применение в масштабах рынка.
Развитие и перспективы технологии конфиденциальных вычислений
Больше всего над технологией MPC работает Facebook. Спецы соцсети создали платформу с открытым кодом CrypTen, которая сильно облегчает разработку и совершенствование ML-моделей. На GitHub решения от Facebook находятся в свободном доступе. А здесь они рассказывают, как работает технология, и как они используют ее в своей соцсети. Спойлер: чтобы лучше продавать товары и запускать точную рекламу для целевой аудитории.
Но если по-честному, то MPC сегодня — это дело стартапов. Узкие решения для eCommerce и IT разрабатывают небольшие команды. И один такой стартап — наш, российский. Компания UBIC уже больше трех лет развивает технологию конфиденциальных вычислений и добилась в этом серьезных успехов. UBIC уже смогли оптимизировать технологию до уровня, на котором сложные математические модели с большими БД обучаются теперь всего лишь один день. Это ж вообще другой разговор. (На этом месте должны быть аплодисменты).
Если раньше нужно было тратить неделю или полторы на запуск модели, то сейчас — один день. В принципе, это уже позволяет использовать ее в реальных динамичных проектах, где исходные данные меняются или дополняются каждый день.
Если суммировать, то MPC — это доступное и относительно простое решение для бизнеса. И как только адепты MPC ускорят построение модели хотя бы до нескольких часов, она станет просто «must have» для любой компании, которая работает с данными.
Скажите, а вам или вашей компании будет полезна технология MPC? Или вы хотите узнать о ней больше? У нас еще много полезной инфы и кейсов, которые мы хотим рассказать.