CryptoNN: Training Neural Networks over encrypted Data. Совмещаем data privacy и нейронные сети

Моя цель - предложение широкого ассортимента товаров и услуг на постоянно высоком качестве обслуживания по самым выгодным ценам.

Привет, Хабр!

Машинное обучение и нейронные сети получили огромное распространение во многих технических областях и повсеместно используются сейчас. Известно, что большинство алгоритмов машинного обучения, а в частности и нейронные сети для своего обучения требуют больших вычислительных ресурсов. В связи с этим возникает потребность в облачных решениях и удаленных серверах. И тут же встает вопрос: как сохранить приватность данных, чтобы использовать их для обучения нейронных сетей на удаленных машинах?

В своем небольшом посте я приведу обзор метода CryptoNN из статьи CryptoNN: Training Neural Networks over Encrypted Data, который позволяет использовать для обучения нейронных сетей зашифрованные данных. Мой рассказ будет состоять из трех частей - сначала я опишу все используемые в этом подходе схемы шифрования данных, затем я разберу сам метод и основные ньюансы связанные с ним. В заключение увидим то какие результаты показывает CryptoNN на MNIST датасете.

Схемы шифрования

Все схемы шифрования используемые в данном методе основаны на функциональном шифровании(FE). В свою очередь функциональное шифрование представляет из себя метод шифрования с открытым ключом в котором пользователь позволяет вычислять от зашифрованных данных только ограниченный класс функций, путем генерации секретных ключей для этих функций. Также в отличие от методов гомоморфного шифрования, в результате использования FE мы получим сразу расшифрованный результат.

Приводятся две схемы - для вычисления скалярного произведения(FEIP) и для вычисления основных арифметических операций(FIBO). Тут я кратко опишу их составляющие.

Cхема для скалярного произведения

Вспомним определение скалярного произведения двух векторов:

f(x,y)=\sum_{i=1}^{\eta}(x_iy_i)

Схема FE для скалярного произведения определяется как Схема FE для скалярного произведения определяется как FEIP = (Setup, KeyDerive, Encrypt, Decrypt):

  • Setup: генерируем число g и вектор s = (s_1 , ..., s_η) , далее используя эти величины получаем публичный и секретный ключи - mpk = (g, h_i=g^{s_i}), msk=s. После этого возвращаем эту пару ключей.

  • KeyDerive(msk, y): возвращаем секретный ключ функции, как sk_f = \langle y, s \rangle

  • Encrypt(mpk, x): выбираем случайное число r и вычисляем ct_0 = g^r, а также ct_i = h^r_i · g^{x_i}, возвращаем шифротекст ct.

  • Decrypt(mpk, ct,sk_f , y): возвращаем дискретный логарифм по основанию g:

    g^{\langle x,y \rangle} = \prod_{i \in [\eta]}]ct_i^{y_i}/ct_0^{sk_f}

Схема для основных арифметических операций

f_{∆∈[+,−,∗,/]}(x, y) = x∆y,
  • Setup: генерируем числа g, затем s. msk = s, mpk = (h, g),\ where\ h = g^s

  • KeyDerive(mpk, msk, cmt, ∆, y): возвращаем секретный ключ функции, как sk_{f_\Delta}:

  • Encrypt(mpk, x):возвращаем commitment, cmt=g^r. И шифротекст: ct=h^r*g^x

  • Decrypt(mpk, skf_∆ , ct, ∆, y ):возвращаем дискретный логарифм по основанию g:

CryptoNN

Теперь перейдем к описанию самого подхода CryptoNN. Обратим внимание на схему фреймворка на рис.1

Рис.1. Общая схема CryptoNN
Рис.1. Общая схема CryptoNN

Условно можно выделить 3 части authority, server, and client.

Authority - генерирует ключи mskи mpkТакже выполняет операцииKeyDeriveдля отправки ключей sk_fсерверу.

Клиент - отвечает за препроцессинг данных и используя mpkзашифровывает их. Также обрабатывает и зашифровывает таргет. После этого отправляет данные и таргет в виде зашифрованных векторов на сервер.

Сервер - собирает данные от различных пользователей. Важно лишь чтобы пользователи использовали один и тот же публичный ключ. На каждой итерации обучений получает ключи sk_fот authority для конкретной операции.

Рассмотрим значение на выходе из первой функции активации a =g(WX+b)- так было бы, если бы шифрование входных данных отсутствовало.

В схеме CryptoNN на вход сети данные подаются в зашифрованном виде, поэтому необходимо вычислять это значение следующим образом:a = g(sk_f (W) · enc(X) + b) = g(f(WX) + b)

Несмотря на то, что сервер не знает значения X благодаря функциональному шифрованию он способен вычислить результат матричного произведения WX!

Рис.2. Псевдокод для алгоритмов работы с зашифрованными матрицами.
Рис.2. Псевдокод для алгоритмов работы с зашифрованными матрицами.

Выше были описаны схемы FEIP и FEBO, используя их теперь мы можем запросто реализовать все операции над матрицами(матричное умножение, поэлементное сложение и т.п.). За детальным описанием этого алгоритма рекомендую обратиться к статье(см. рис.2. - Algorithm 1: secure matrix computation scheme).

Основными отличиями такой "безопасной" нейронной сети служат шаги - secure feed-forward и secure back-propagation / evaluation. В остальном пайплайн такой же как и в обычных non-secure нейронных сетях.

Рис. 3. Алгоритм обучения нейронной сети CryptoNN.
Рис. 3. Алгоритм обучения нейронной сети CryptoNN.

Secure feed-forward - был описан выше, он представляет из себя вычисление результата первой функции активации, используя алгоритм Secure matrix computation scheme

Secure back-propagation / evaluation - это первый шаг backward pass'а, тут все те же правила, что и в обычном backward pass'е - используем правила взятия производной сложной функции, также помним о том, что все операции над зашифрованным таргетом Y необходимо производить с использованием алгоритма Secure matrix computation scheme.

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

Всё вышесказанное справедливо для полносвязных нейронных сетей. Но стоит отметить, что метод CryptoNN может быть применен, также и для сверточных нейронных сетей(CryptoCNN). Это и показывают авторы, приводя алгоритм secure convolution scheme, который использует схему шифрования FEIP.

Результаты обучения

Для экспериментов авторами был выбран популярный MNIST датасет, состоящий из grayscale изображений рукописных цифр низкого разрешения. Сама нейронная сеть CryptoCNN была построена на базе нейронной сети LeNet-5 и сравнивалась с non-crypto версией. Графики обучени, метрики качества и время обучения см ниже. По точности результаты на test сете оказались идентичными. Но видно, насколько дольше обучалась CryptoCNN сеть. Все временные издержки вызваны довольно вычислительнозатратными криптографическими операциями.

Рис.4. Графики обучения
Рис.4. Графики обучения
Рис. 5. Сравнительная таблица
Рис. 5. Сравнительная таблица

Заключение

В данной статье я привел разбор метода CryptoNN, который позволяет обучать нейронные сети на зашифрованных данных, используя схему функционального шифрования.

Данный метод может быть использован для различных вариантов нейронных сетей(в т.ч. CNN) при надлежащей реализации схем функционального шифрования. При реализации CryptoNN базе non-crypto нейронных сетей - точность модели не изменяется, при этом соблюдаются концепции data privacy и пользователи могут быть защищены от злоумышленников.

Ссылки

CryptoNN: Training Neural Networks over Encrypted Data -https://arxiv.org/pdf/1904.07303.pdf

Источник: https://habr.com/ru/post/595709/


Интересные статьи

Интересные статьи

Наш мир устроен так, что ничто не вечно под Луной. Другими словами, абсолютно все может прийти в негодность. Ну или, применительно к IT отрасли, может дать сбой. IT индустрия буквально пропитана идеей...
Бюро статистики труда США прогнозирует, что в следующие 10 лет спрос на специалистов Data Science и Machine Learning значительно вырастет. Условия вакансий становятся лучше, а потребность в Data Scien...
Только что мы представили новую версию поиска Y1. Она включает в себя комплекс технологических изменений. В том числе улучшения в ранжировании за счёт более глубокого применения трансформ...
Многие компании в определенный момент приходят к тому, что ряд процессов в бизнесе нужно автоматизировать, чтобы не потерять свое место под солнцем и своих заказчиков. Поэтому все...
При создании любого бизнеса каждое из его подразделений автоматизирует само себя. Как правило сквозные потоки данных между ними единичны. Это приводит к тому, что данные нельзя сопоставить друг с...